WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Merge xen-api.hg changeset 142:d75413e65b

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Merge xen-api.hg changeset 142:d75413e65ba319d577c764be6c13efa5eae6da1c.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 02 Nov 2006 22:10:04 +0000
Delivery-date: Thu, 02 Nov 2006 21:44:39 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Ewan Mellor <ewan@xxxxxxxxxxxxx>
# Node ID 33e9c88aab025174ead519bede48c3147cbbbd84
# Parent  874cc0ff214daac1fec3890e083a6ca36b79dbfa
# Parent  7aa8f5bb3e2829f97e9aa853aae02d127a9848e3
Merge xen-api.hg changeset 142:d75413e65ba319d577c764be6c13efa5eae6da1c.

Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx>
---
 docs/xen-api/Makefile                                  |   23 
 docs/xen-api/coversheet.tex                            |   50 
 docs/xen-api/fdl.tex                                   |  488 
 docs/xen-api/presentation.tex                          |  149 
 docs/xen-api/todo.tex                                  |  140 
 docs/xen-api/vm-lifecycle.tex                          |   24 
 docs/xen-api/vm_lifecycle.dot                          |   15 
 docs/xen-api/wire-protocol.tex                         |  287 
 docs/xen-api/xen.eps                                   |   49 
 docs/xen-api/xenapi-coversheet.tex                     |   40 
 docs/xen-api/xenapi-datamodel-graph.dot                |   17 
 docs/xen-api/xenapi-datamodel.tex                      | 9648 +++++++++++++++++
 docs/xen-api/xenapi.tex                                |   56 
 tools/libxen/COPYING                                   |  510 
 tools/libxen/Makefile                                  |   37 
 tools/libxen/README                                    |   54 
 tools/libxen/include/xen_boot_type.h                   |   87 
 tools/libxen/include/xen_boot_type_internal.h          |   37 
 tools/libxen/include/xen_common.h                      |  145 
 tools/libxen/include/xen_cpu_feature.h                 |  387 
 tools/libxen/include/xen_cpu_feature_internal.h        |   37 
 tools/libxen/include/xen_driver_type.h                 |   77 
 tools/libxen/include/xen_driver_type_internal.h        |   37 
 tools/libxen/include/xen_host.h                        |  285 
 tools/libxen/include/xen_host_cpu.h                    |  232 
 tools/libxen/include/xen_host_cpu_decl.h               |   30 
 tools/libxen/include/xen_host_decl.h                   |   30 
 tools/libxen/include/xen_int_float_map.h               |   53 
 tools/libxen/include/xen_internal.h                    |  192 
 tools/libxen/include/xen_network.h                     |  266 
 tools/libxen/include/xen_network_decl.h                |   30 
 tools/libxen/include/xen_on_crash_behaviour.h          |   97 
 tools/libxen/include/xen_on_crash_behaviour_internal.h |   38 
 tools/libxen/include/xen_on_normal_exit.h              |   77 
 tools/libxen/include/xen_on_normal_exit_internal.h     |   37 
 tools/libxen/include/xen_pif.h                         |  283 
 tools/libxen/include/xen_pif_decl.h                    |   30 
 tools/libxen/include/xen_sr.h                          |  275 
 tools/libxen/include/xen_sr_decl.h                     |   30 
 tools/libxen/include/xen_string_string_map.h           |   53 
 tools/libxen/include/xen_user.h                        |  197 
 tools/libxen/include/xen_user_decl.h                   |   30 
 tools/libxen/include/xen_vbd.h                         |  277 
 tools/libxen/include/xen_vbd_decl.h                    |   30 
 tools/libxen/include/xen_vbd_mode.h                    |   77 
 tools/libxen/include/xen_vbd_mode_internal.h           |   37 
 tools/libxen/include/xen_vdi.h                         |  337 
 tools/libxen/include/xen_vdi_decl.h                    |   30 
 tools/libxen/include/xen_vdi_type.h                    |   82 
 tools/libxen/include/xen_vdi_type_internal.h           |   37 
 tools/libxen/include/xen_vif.h                         |  298 
 tools/libxen/include/xen_vif_decl.h                    |   30 
 tools/libxen/include/xen_vm.h                          |  802 +
 tools/libxen/include/xen_vm_decl.h                     |   30 
 tools/libxen/include/xen_vm_power_state.h              |   97 
 tools/libxen/include/xen_vm_power_state_internal.h     |   37 
 tools/libxen/include/xen_vtpm.h                        |  209 
 tools/libxen/include/xen_vtpm_decl.h                   |   31 
 tools/libxen/src/xen_boot_type.c                       |   83 
 tools/libxen/src/xen_common.c                          | 1363 ++
 tools/libxen/src/xen_cpu_feature.c                     |  143 
 tools/libxen/src/xen_driver_type.c                     |   81 
 tools/libxen/src/xen_host.c                            |  376 
 tools/libxen/src/xen_host_cpu.c                        |  273 
 tools/libxen/src/xen_int_float_map.c                   |   37 
 tools/libxen/src/xen_network.c                         |  350 
 tools/libxen/src/xen_on_crash_behaviour.c              |   85 
 tools/libxen/src/xen_on_normal_exit.c                  |   81 
 tools/libxen/src/xen_pif.c                             |  389 
 tools/libxen/src/xen_sr.c                              |  374 
 tools/libxen/src/xen_string_string_map.c               |   49 
 tools/libxen/src/xen_user.c                            |  187 
 tools/libxen/src/xen_vbd.c                             |  370 
 tools/libxen/src/xen_vbd_mode.c                        |   81 
 tools/libxen/src/xen_vdi.c                             |  519 
 tools/libxen/src/xen_vdi_type.c                        |   82 
 tools/libxen/src/xen_vif.c                             |  426 
 tools/libxen/src/xen_vm.c                              | 1582 ++
 tools/libxen/src/xen_vm_power_state.c                  |   85 
 tools/libxen/src/xen_vtpm.c                            |  213 
 tools/libxen/test/test_bindings.c                      |  424 
 tools/python/README.XendConfig                         |  160 
 tools/python/README.sxpcfg                             |  117 
 tools/python/scripts/README                            |   49 
 tools/python/scripts/README.lifecycle                  |  136 
 tools/python/scripts/xapi.domcfg.py                    |   39 
 tools/python/scripts/xapi.py                           |  492 
 tools/python/scripts/xapi.vbdcfg.py                    |   12 
 tools/python/scripts/xapi.vdicfg.py                    |    7 
 tools/python/scripts/xapi.vifcfg.py                    |   10 
 tools/python/xen/lowlevel/xc/xc.c                      |   56 
 tools/python/xen/util/blkif.py                         |    1 
 tools/python/xen/util/xmlrpclib2.py                    |   36 
 tools/python/xen/xend/Args.py                          |    2 
 tools/python/xen/xend/PrettyPrint.py                   |    2 
 tools/python/xen/xend/XendAPI.py                       | 1459 ++
 tools/python/xen/xend/XendAPIConstants.py              |   75 
 tools/python/xen/xend/XendAuthSessions.py              |  137 
 tools/python/xen/xend/XendBootloader.py                |    6 
 tools/python/xen/xend/XendCheckpoint.py                |   40 
 tools/python/xen/xend/XendConfig.py                    |  884 +
 tools/python/xen/xend/XendConstants.py                 |   96 
 tools/python/xen/xend/XendDevices.py                   |   68 
 tools/python/xen/xend/XendDomain.py                    | 1272 +-
 tools/python/xen/xend/XendDomainInfo.py                | 2460 ++--
 tools/python/xen/xend/XendError.py                     |   16 
 tools/python/xen/xend/XendNode.py                      |  121 
 tools/python/xen/xend/XendProtocol.py                  |    2 
 tools/python/xen/xend/XendRoot.py                      |   28 
 tools/python/xen/xend/XendStorageRepository.py         |  381 
 tools/python/xen/xend/XendVDI.py                       |  155 
 tools/python/xen/xend/image.py                         |   51 
 tools/python/xen/xend/server/DevController.py          |   73 
 tools/python/xen/xend/server/SrvDaemon.py              |   10 
 tools/python/xen/xend/server/SrvDomainDir.py           |    2 
 tools/python/xen/xend/server/SrvServer.py              |   30 
 tools/python/xen/xend/server/XMLRPCServer.py           |   97 
 tools/python/xen/xend/server/blkif.py                  |   60 
 tools/python/xen/xend/server/iopif.py                  |    4 
 tools/python/xen/xend/server/irqif.py                  |    2 
 tools/python/xen/xend/server/netif.py                  |   38 
 tools/python/xen/xend/server/pciif.py                  |   61 
 tools/python/xen/xend/server/tpmif.py                  |   32 
 tools/python/xen/xend/sxp.py                           |   24 
 tools/python/xen/xend/uuid.py                          |   10 
 tools/python/xen/xm/create.py                          |   75 
 tools/python/xen/xm/main.py                            |   53 
 tools/python/xen/xm/new.py                             |   68 
 128 files changed, 31981 insertions(+), 1778 deletions(-), 3 modifications(!)

diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/lowlevel/xc/xc.c Wed Nov 01 10:40:46 2006 +0000
@@ -73,7 +73,7 @@ static PyObject *pyxc_domain_create(XcOb
         0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
         0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef };
 
-    static char *kwd_list[] = { "dom", "ssidref", "handle", NULL };
+    static char *kwd_list[] = { "domid", "ssidref", "handle", NULL };
 
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "|iiO", kwd_list,
                                       &dom, &ssidref, &pyhandle))
@@ -144,7 +144,7 @@ static PyObject *pyxc_vcpu_setaffinity(X
     uint64_t  cpumap = ~0ULL;
     PyObject *cpulist = NULL;
 
-    static char *kwd_list[] = { "dom", "vcpu", "cpumap", NULL };
+    static char *kwd_list[] = { "domid", "vcpu", "cpumap", NULL };
 
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|iO", kwd_list, 
                                       &dom, &vcpu, &cpulist) )
@@ -171,7 +171,7 @@ static PyObject *pyxc_domain_setcpuweigh
     uint32_t dom;
     float cpuweight = 1;
 
-    static char *kwd_list[] = { "dom", "cpuweight", NULL };
+    static char *kwd_list[] = { "domid", "cpuweight", NULL };
 
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|f", kwd_list, 
                                       &dom, &cpuweight) )
@@ -256,7 +256,7 @@ static PyObject *pyxc_domain_getinfo(XcO
             PyList_SetItem(pyhandle, j, PyInt_FromLong(info[i].handle[j]));
         info_dict = Py_BuildValue("{s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:i"
                                   ",s:l,s:L,s:l,s:i,s:i}",
-                                  "dom",       info[i].domid,
+                                  "domid",       info[i].domid,
                                   "online_vcpus", info[i].nr_online_vcpus,
                                   "max_vcpu_id", info[i].max_vcpu_id,
                                   "dying",     info[i].dying,
@@ -291,7 +291,7 @@ static PyObject *pyxc_vcpu_getinfo(XcObj
     int rc, i;
     uint64_t cpumap;
 
-    static char *kwd_list[] = { "dom", "vcpu", NULL };
+    static char *kwd_list[] = { "domid", "vcpu", NULL };
     
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|i", kwd_list,
                                       &dom, &vcpu) )
@@ -334,7 +334,7 @@ static PyObject *pyxc_linux_build(XcObje
     unsigned long store_mfn = 0;
     unsigned long console_mfn = 0;
 
-    static char *kwd_list[] = { "dom", "store_evtchn",
+    static char *kwd_list[] = { "domid", "store_evtchn",
                                 "console_evtchn", "image",
                                 /* optional */
                                 "ramdisk", "cmdline", "flags",
@@ -375,9 +375,9 @@ static PyObject *pyxc_hvm_build(XcObject
     int apic = 0;
     unsigned long store_mfn = 0;
 
-    static char *kwd_list[] = { "dom", "store_evtchn", "memsize", "image",
-                                "vcpus", "pae", "acpi", "apic",
-                                NULL };
+    static char *kwd_list[] = { "domid", "store_evtchn",
+                               "memsize", "image", "vcpus", "pae", "acpi", 
"apic",
+                               NULL };
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiisiiii", kwd_list,
                                       &dom, &store_evtchn, &memsize,
                                       &image, &vcpus, &pae, &acpi, &apic) )
@@ -397,7 +397,7 @@ static PyObject *pyxc_evtchn_alloc_unbou
     uint32_t dom, remote_dom;
     int port;
 
-    static char *kwd_list[] = { "dom", "remote_dom", NULL };
+    static char *kwd_list[] = { "domid", "remote_dom", NULL };
 
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "ii", kwd_list,
                                       &dom, &remote_dom) )
@@ -416,7 +416,7 @@ static PyObject *pyxc_physdev_pci_access
     uint32_t dom;
     int bus, dev, func, enable, ret;
 
-    static char *kwd_list[] = { "dom", "bus", "dev", "func", "enable", NULL };
+    static char *kwd_list[] = { "domid", "bus", "dev", "func", "enable", NULL 
};
 
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiiii", kwd_list, 
                                       &dom, &bus, &dev, &func, &enable) )
@@ -557,7 +557,7 @@ static PyObject *pyxc_sedf_domain_set(Xc
     uint32_t domid;
     uint64_t period, slice, latency;
     uint16_t extratime, weight;
-    static char *kwd_list[] = { "dom", "period", "slice",
+    static char *kwd_list[] = { "domid", "period", "slice",
                                 "latency", "extratime", "weight",NULL };
     
     if( !PyArg_ParseTupleAndKeywords(args, kwds, "iLLLhh", kwd_list, 
@@ -586,7 +586,7 @@ static PyObject *pyxc_sedf_domain_get(Xc
         return PyErr_SetFromErrno(xc_error);
 
     return Py_BuildValue("{s:i,s:L,s:L,s:L,s:i,s:i}",
-                         "domain",    domid,
+                         "domid",    domid,
                          "period",    period,
                          "slice",     slice,
                          "latency",   latency,
@@ -647,6 +647,15 @@ static PyObject *pyxc_shadow_mem_control
     return Py_BuildValue("i", mbarg);
 }
 
+static PyObject *pyxc_sched_id_get(XcObject *self) {
+    
+    int sched_id;
+    if (xc_sched_id(self->xc_handle, &sched_id) != 0)
+        return PyErr_SetFromErrno(xc_error);
+
+    return Py_BuildValue("i", sched_id);
+}
+
 static PyObject *pyxc_sched_credit_domain_set(XcObject *self,
                                               PyObject *args,
                                               PyObject *kwds)
@@ -654,7 +663,7 @@ static PyObject *pyxc_sched_credit_domai
     uint32_t domid;
     uint16_t weight;
     uint16_t cap;
-    static char *kwd_list[] = { "dom", "weight", "cap", NULL };
+    static char *kwd_list[] = { "domid", "weight", "cap", NULL };
     static char kwd_type[] = "I|HH";
     struct xen_domctl_sched_credit sdom;
     
@@ -714,7 +723,7 @@ static PyObject *pyxc_domain_memory_incr
     unsigned int extent_order = 0 , address_bits = 0;
     unsigned long nr_extents;
 
-    static char *kwd_list[] = { "dom", "mem_kb", "extent_order", 
"address_bits", NULL };
+    static char *kwd_list[] = { "domid", "mem_kb", "extent_order", 
"address_bits", NULL };
 
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "il|ii", kwd_list, 
                                       &dom, &mem_kb, &extent_order, 
&address_bits) )
@@ -739,7 +748,7 @@ static PyObject *pyxc_domain_ioport_perm
     uint32_t dom;
     int first_port, nr_ports, allow_access, ret;
 
-    static char *kwd_list[] = { "dom", "first_port", "nr_ports", 
"allow_access", NULL };
+    static char *kwd_list[] = { "domid", "first_port", "nr_ports", 
"allow_access", NULL };
 
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiii", kwd_list, 
                                       &dom, &first_port, &nr_ports, 
&allow_access) )
@@ -762,7 +771,7 @@ static PyObject *pyxc_domain_irq_permiss
     uint32_t dom;
     int pirq, allow_access, ret;
 
-    static char *kwd_list[] = { "dom", "pirq", "allow_access", NULL };
+    static char *kwd_list[] = { "domid", "pirq", "allow_access", NULL };
 
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iii", kwd_list, 
                                       &dom, &pirq, &allow_access) )
@@ -785,7 +794,7 @@ static PyObject *pyxc_domain_iomem_permi
     uint32_t dom;
     unsigned long first_pfn, nr_pfns, allow_access, ret;
 
-    static char *kwd_list[] = { "dom", "first_pfn", "nr_pfns", "allow_access", 
NULL };
+    static char *kwd_list[] = { "domid", "first_pfn", "nr_pfns", 
"allow_access", NULL };
 
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "illi", kwd_list, 
                                       &dom, &first_pfn, &nr_pfns, 
&allow_access) )
@@ -975,6 +984,12 @@ static PyMethodDef pyxc_methods[] = {
       " image   [str]:      Name of HVM loader image file.\n"
       " vcpus   [int, 1]:   Number of Virtual CPUS in domain.\n\n"
       "Returns: [int] 0 on success; -1 on error.\n" },
+
+    { "sched_id_get",
+      (PyCFunction)pyxc_sched_id_get,
+      METH_NOARGS, "\n"
+      "Get the current scheduler type in use.\n"
+      "Returns: [int] sched_id.\n" },    
 
     { "sedf_domain_set",
       (PyCFunction)pyxc_sedf_domain_set,
@@ -1242,6 +1257,11 @@ PyMODINIT_FUNC initxc(void)
 
     Py_INCREF(xc_error);
     PyModule_AddObject(m, "Error", xc_error);
+
+    /* Expose some libxc constants to Python */
+    PyModule_AddIntConstant(m, "XEN_SCHEDULER_SEDF", XEN_SCHEDULER_SEDF);
+    PyModule_AddIntConstant(m, "XEN_SCHEDULER_CREDIT", XEN_SCHEDULER_CREDIT);
+
 }
 
 
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/util/blkif.py
--- a/tools/python/xen/util/blkif.py    Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/util/blkif.py    Wed Nov 01 10:40:46 2006 +0000
@@ -21,7 +21,6 @@ def blkdev_name_to_number(name):
     try:
         return os.stat(n).st_rdev
     except Exception, ex:
-        log.debug("exception looking up device number for %s: %s", name, ex)
         pass
 
     if re.match( '/dev/sd[a-p]([1-9]|1[0-5])?', n):
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/util/xmlrpclib2.py
--- a/tools/python/xen/util/xmlrpclib2.py       Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/util/xmlrpclib2.py       Wed Nov 01 10:40:46 2006 +0000
@@ -21,11 +21,11 @@ An enhanced XML-RPC client/server interf
 """
 
 import string
-import types
 import fcntl
+from types import *
+    
 
 from httplib import HTTPConnection, HTTP
-from xmlrpclib import Transport
 from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
 import SocketServer
 import xmlrpclib, socket, os, stat
@@ -39,6 +39,23 @@ except ImportError:
     # SSHTransport is disabled on Python <2.4, because it uses the subprocess
     # package.
     ssh_enabled = False
+
+#
+# Convert all integers to strings as described in the Xen API
+#
+
+
+def stringify(value):
+    if isinstance(value, IntType) and not isinstance(value, BooleanType):
+        return str(value)
+    elif isinstance(value, DictType):
+        for k, v in value.items():
+            value[k] = stringify(v)
+        return value
+    elif isinstance(value, (TupleType, ListType)):
+        return [stringify(v) for v in value]
+    else:
+        return value
 
 
 # A new ServerProxy that also supports httpu urls.  An http URL comes in the
@@ -81,18 +98,18 @@ class HTTPUnix(HTTP):
 class HTTPUnix(HTTP):
     _connection_class = HTTPUnixConnection
 
-class UnixTransport(Transport):
+class UnixTransport(xmlrpclib.Transport):
     def request(self, host, handler, request_body, verbose=0):
         self.__handler = handler
-        return Transport.request(self, host, '/RPC2', request_body, verbose)
+        return xmlrpclib.Transport.request(self, host, '/RPC2',
+                                           request_body, verbose)
     def make_connection(self, host):
         return HTTPUnix(self.__handler)
 
 
 # See _marshalled_dispatch below.
 def conv_string(x):
-    if (isinstance(x, types.StringType) or
-        isinstance(x, unicode)):
+    if isinstance(x, StringTypes):
         s = string.replace(x, "'", r"\047")
         exec "s = '" + s + "'"
         return s
@@ -134,7 +151,7 @@ class TCPXMLRPCServer(SocketServer.Threa
     allow_reuse_address = True
 
     def __init__(self, addr, requestHandler=XMLRPCRequestHandler,
-                 logRequests=1):
+                 logRequests = 1):
         SimpleXMLRPCServer.__init__(self, addr, requestHandler, logRequests)
 
         flags = fcntl.fcntl(self.fileno(), fcntl.F_GETFD)
@@ -169,8 +186,7 @@ class TCPXMLRPCServer(SocketServer.Threa
             # to transmit the string using Python encoding.
             # Thanks to David Mertz <mertz@xxxxxxxxx> for the trick (buried
             # in xml_pickle.py).
-            if (isinstance(response, types.StringType) or
-                isinstance(response, unicode)):
+            if isinstance(response, StringTypes):
                 response = repr(response)[1:-1]
 
             response = (response,)
@@ -201,7 +217,7 @@ class UnixXMLRPCServer(TCPXMLRPCServer):
 class UnixXMLRPCServer(TCPXMLRPCServer):
     address_family = socket.AF_UNIX
 
-    def __init__(self, addr, logRequests):
+    def __init__(self, addr, logRequests = 1):
         parent = os.path.dirname(addr)
         if os.path.exists(parent):
             os.chown(parent, os.geteuid(), os.getegid())
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/Args.py
--- a/tools/python/xen/xend/Args.py     Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/Args.py     Wed Nov 01 10:40:46 2006 +0000
@@ -18,7 +18,7 @@ import types
 import types
 import StringIO
 
-import sxp
+from xen.xend import sxp
 
 class ArgError(StandardError):
     pass
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/PrettyPrint.py
--- a/tools/python/xen/xend/PrettyPrint.py      Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/PrettyPrint.py      Wed Nov 01 10:40:46 2006 +0000
@@ -22,7 +22,7 @@ import sys
 import sys
 import types
 import StringIO
-import sxp
+from xen.xend import sxp
 
 class PrettyItem:
 
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/XendBootloader.py
--- a/tools/python/xen/xend/XendBootloader.py   Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/XendBootloader.py   Wed Nov 01 10:40:46 2006 +0000
@@ -14,8 +14,8 @@
 
 import os, select, errno
 import random
-import sxp
 import shlex
+from xen.xend import sxp
 
 from XendLogging import log
 from XendError import VmError
@@ -38,7 +38,7 @@ def bootloader(blexec, disk, quiet = 0, 
         raise VmError(msg)
 
     while True:
-        fifo = "/var/lib/xen/xenbl.%s" %(random.randint(0, 32000),)
+        fifo = "/var/lib/xen/xenbl.%s" % random.randint(0, 32000)
         if not os.path.exists(fifo):
             break
     os.mkfifo(fifo, 0600)
@@ -48,7 +48,7 @@ def bootloader(blexec, disk, quiet = 0, 
         args = [ blexec ]
         if quiet:
             args.append("-q")
-        args.append("--output=%s" %(fifo,))
+        args.append("--output=%s" % fifo)
         if blargs is not None:
             args.extend(shlex.split(blargs))
         args.append(disk)
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/XendCheckpoint.py
--- a/tools/python/xen/xend/XendCheckpoint.py   Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/XendCheckpoint.py   Wed Nov 01 10:40:46 2006 +0000
@@ -8,21 +8,17 @@ import os
 import os
 import re
 import string
-import sxp
 import threading
 from struct import pack, unpack, calcsize
 
 from xen.util.xpopen import xPopen3
-
 import xen.util.auxbin
-
 import xen.lowlevel.xc
 
-import balloon
-from XendError import XendError
-from XendLogging import log
-from XendDomainInfo import DEV_MIGRATE_STEP1, DEV_MIGRATE_STEP2
-from XendDomainInfo import DEV_MIGRATE_STEP3
+from xen.xend import balloon, sxp
+from xen.xend.XendError import XendError
+from xen.xend.XendLogging import log
+from xen.xend.XendConstants import *
 
 SIGNATURE = "LinuxGuestRecord"
 XC_SAVE = "xc_save"
@@ -43,13 +39,13 @@ def read_exact(fd, size, errmsg):
 def read_exact(fd, size, errmsg):
     buf  = '' 
     while size != 0: 
-        str = os.read(fd, size)
-        if not len(str):
+        readstr = os.read(fd, size)
+        if not len(readstr):
             log.error("read_exact: EOF trying to read %d (buf='%s')" % \
                       (size, buf))
             raise XendError(errmsg)
-        size = size - len(str)
-        buf  = buf + str
+        size = size - len(readstr)
+        buf  = buf + readstr
     return buf
 
 
@@ -63,7 +59,9 @@ def save(fd, dominfo, network, live, dst
     # Rename the domain temporarily, so that we don't get a name clash if this
     # domain is migrating (live or non-live) to the local host.  Doing such a
     # thing is useful for debugging.
-    dominfo.setName('migrating-' + domain_name)
+    #
+    # FIXME: I don't think this is such a good idea - atse@xxxxxxxxxxxxx
+    #dominfo.setName('migrating-' + domain_name)
 
     try:
         dominfo.migrateDevices(network, dst, DEV_MIGRATE_STEP1, domain_name)
@@ -104,14 +102,14 @@ def save(fd, dominfo, network, live, dst
     except Exception, exn:
         log.exception("Save failed on domain %s (%d).", domain_name,
                       dominfo.getDomid())
-        try:
-            dominfo.setName(domain_name)
-        except:
-            log.exception("Failed to reset the migrating domain's name")
+        #try:
+        #    dominfo.setName(domain_name)
+        #except:
+        #    log.exception("Failed to reset the migrating domain's name")
         raise Exception, exn
 
 
-def restore(xd, fd):
+def restore(xd, fd, dominfo = None):
     signature = read_exact(fd, len(SIGNATURE),
         "not a valid guest state file: signature read")
     if signature != SIGNATURE:
@@ -131,7 +129,11 @@ def restore(xd, fd):
 
     vmconfig = p.get_val()
 
-    dominfo = xd.restore_(vmconfig)
+    if dominfo:
+        dominfo.update(XendConfig(sxp = vmconfig), refresh = False)
+        dominfo.resume()
+    else:
+        dominfo = xd.restore_(vmconfig)
 
     store_port   = dominfo.getStorePort()
     console_port = dominfo.getConsolePort()
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/XendDomain.py       Wed Nov 01 10:40:46 2006 +0000
@@ -22,45 +22,59 @@
  Needs to be persistent for one uptime.
 """
 
-import logging
 import os
+import shutil
 import socket
-import sys
 import threading
 
 import xen.lowlevel.xc
 
-import XendDomainInfo
-
-from xen.xend import XendRoot
-from xen.xend import XendCheckpoint
+
+from xen.xend import XendRoot, XendCheckpoint, XendDomainInfo
+from xen.xend.PrettyPrint import prettyprint
+from xen.xend.XendConfig import XendConfig
 from xen.xend.XendError import XendError, XendInvalidDomain
 from xen.xend.XendLogging import log
+from xen.xend.XendConstants import XS_VMROOT
+
 from xen.xend.xenstore.xstransact import xstransact
 from xen.xend.xenstore.xswatch import xswatch
 from xen.util import security
-
+from xen.xend import uuid
 
 xc = xen.lowlevel.xc.xc()
-xroot = XendRoot.instance()
-
+xroot = XendRoot.instance() 
 
 __all__ = [ "XendDomain" ]
 
-PRIV_DOMAIN = 0
-VMROOT = '/vm/'
-
+CACHED_CONFIG_FILE = 'config.sxp'
+CHECK_POINT_FILE = 'checkpoint.chk'
+DOM0_UUID = "00000000-0000-0000-0000-000000000000"
+DOM0_NAME = "Domain-0"
+DOM0_ID   = 0
 
 class XendDomain:
     """Index of all domains. Singleton.
+
+    @ivar domains: map of domains indexed by UUID Strings
+    @type domains: dict of XendDomainInfo
+    @ivar domains_managed: uuid of domains that are managed by Xend
+    @type managed_domains: list of (uuids, dom_name)
+    @ivar domains_lock: lock that must be held when manipulating self.domains
+    @type domains_lock: threaading.RLock
+    @ivar _allow_new_domains: Flag to set that allows creating of new domains.
+    @type _allow_new_domains: boolean
+    
     """
 
-    ## public:
-    
     def __init__(self):
         self.domains = {}
+        self.managed_domains = []
         self.domains_lock = threading.RLock()
 
+        # xen api instance vars
+        # TODO: nothing uses this at the moment
+        self._allow_new_domains = True
 
     # This must be called only the once, by instance() below.  It is separate
     # from the constructor because XendDomainInfo calls back into this class
@@ -68,85 +82,270 @@ class XendDomain:
     # instance() must be able to return a valid instance of this class even
     # during this initialisation.
     def init(self):
-        xstransact.Mkdir(VMROOT)
-        xstransact.SetPermissions(VMROOT, { 'dom' : PRIV_DOMAIN })
-
-        self.domains_lock.acquire()
-        try:
-            self._add_domain(
-                XendDomainInfo.recreate(self.xen_domains()[PRIV_DOMAIN],
-                                        True))
-            self.dom0_setup()
+        """Singleton initialisation function."""
+
+        xstransact.Mkdir(XS_VMROOT)
+        xstransact.SetPermissions(XS_VMROOT, {'dom': DOM0_ID})
+
+        self.domains_lock.acquire()
+        try:
+            try:
+                dom0info = [d for d in self._running_domains() \
+                            if d.get('domid') == DOM0_ID][0]
+                
+                dom0info['name'] = DOM0_NAME
+                dom0 = XendDomainInfo.recreate(dom0info, True)
+                self._add_domain(dom0)
+            except IndexError:
+                raise XendError('Unable to find Domain 0')
+            
+            self._setDom0CPUCount()
 
             # This watch registration needs to be before the refresh call, so
             # that we're sure that we haven't missed any releases, but inside
             # the domains_lock, as we don't want the watch to fire until after
             # the refresh call has completed.
-            xswatch("@introduceDomain", self.onChangeDomain)
-            xswatch("@releaseDomain",   self.onChangeDomain)
+            xswatch("@introduceDomain", self._on_domains_changed)
+            xswatch("@releaseDomain",   self._on_domains_changed)
+
+            self._init_domains()
+        finally:
+            self.domains_lock.release()
+
+    
+    def _on_domains_changed(self, _):
+        """ Callback method when xenstore changes.
+
+        Calls refresh which will keep the local cache of domains
+        in sync.
+
+        @rtype: int
+        @return: 1
+        """
+        self.domains_lock.acquire()
+        try:
+            self._refresh()
+        finally:
+            self.domains_lock.release()
+        return 1
+
+    def _init_domains(self):
+        """Does the initial scan of managed and active domains to
+        populate self.domains.
+
+        Note: L{XendDomainInfo._checkName} will call back into XendDomain
+        to make sure domain name is not a duplicate.
+
+        """
+        self.domains_lock.acquire()
+        try:
+            running = self._running_domains()
+            managed = self._managed_domains()
+
+            # add all active domains
+            for dom in running:
+                if dom['domid'] != DOM0_ID:
+                    try:
+                        new_dom = XendDomainInfo.recreate(dom, False)
+                        self._add_domain(new_dom)
+                    except Exception:
+                        log.exception("Failed to create reference to running "
+                                      "domain id: %d" % dom['domid'])
+
+            # add all managed domains as dormant domains.
+            for dom in managed:
+                dom_uuid = dom.get('uuid', uuid.createString())
+                dom['uuid'] = dom_uuid
+                dom_name = dom.get('name', 'Domain-%s' % dom_uuid)
+                
+                try:
+                    running_dom = self.domain_lookup_nr(dom_name)
+                    if not running_dom:
+                        # instantiate domain if not started.
+                        new_dom = XendDomainInfo.createDormant(dom)
+                        self._add_domain(new_dom)
+                        self._managed_domain_register(new_dom)
+                    else:
+                        self._managed_domain_register(running_dom)
+                except Exception:
+                    log.exception("Failed to create reference to managed "
+                                  "domain: %s" % dom_name)
+
+        finally:
+            self.domains_lock.release()
+
+
+    # -----------------------------------------------------------------
+    # Getting managed domains storage path names
+
+    def _managed_path(self, domuuid = None):
+        """Returns the path of the directory where managed domain
+        information is stored.
+
+        @keyword domuuid: If not None, will return the path to the domain
+                          otherwise, will return the path containing
+                          the directories which represent each domain.
+        @type: None or String.
+        @rtype: String
+        @return: Path.
+        """
+        dom_path = xroot.get_xend_domains_path()
+        if domuuid:
+            dom_path = os.path.join(dom_path, domuuid)
+        return dom_path
+
+    def _managed_config_path(self, domuuid):
+        """Returns the path to the configuration file of a managed domain.
+
+        @param domname: Domain uuid
+        @type domname: String
+        @rtype: String
+        @return: path to config file.
+        """
+        return os.path.join(self._managed_path(domuuid), CACHED_CONFIG_FILE)
+
+    def _managed_check_point_path(self, domuuid):
+        """Returns absolute path to check point file for managed domain.
+        
+        @param domuuid: Name of managed domain
+        @type domname: String
+        @rtype: String
+        @return: Path
+        """
+        return os.path.join(self._managed_path(domuuid), CHECK_POINT_FILE)
+
+    def _managed_config_remove(self, domuuid):
+        """Removes a domain configuration from managed list
+
+        @param domuuid: Name of managed domain
+        @type domname: String
+        @raise XendError: fails to remove the domain.
+        """
+        config_path = self._managed_path(domuuid)
+        try:
+            if os.path.exists(config_path) and os.path.isdir(config_path):
+                shutil.rmtree(config_path)
+        except IOError:
+            log.exception('managed_config_remove failed removing conf')
+            raise XendError("Unable to remove managed configuration"
+                            " for domain: %s" % domuuid)            
+
+    def managed_config_save(self, dominfo):
+        """Save a domain's configuration to disk
+        
+        @param domninfo: Managed domain to save.
+        @type dominfo: XendDomainInfo
+        @raise XendError: fails to save configuration.
+        @rtype: None
+        """
+        if not self.is_domain_managed(dominfo):
+            return # refuse to save configuration this domain isn't managed
+        
+        if dominfo:
+            domains_dir = self._managed_path()
+            dom_uuid = dominfo.get_uuid()            
+            domain_config_dir = self._managed_path(dom_uuid)
+        
+            # make sure the domain dir exists
+            if not os.path.exists(domains_dir):
+                os.makedirs(domains_dir, 0755)
+            elif not os.path.isdir(domains_dir):
+                log.error("xend_domain_dir is not a directory.")
+                raise XendError("Unable to save managed configuration "
+                                "because %s is not a directory." %
+                                domains_dir)
             
-            self.refresh(True)
-        finally:
-            self.domains_lock.release()
-
-
-    def list(self):
-        """Get list of domain objects.
-
-        @return: domain objects
-        """
-        self.domains_lock.acquire()
-        try:
-            self.refresh()
-            return self.domains.values()
-        finally:
-            self.domains_lock.release()
-
-
-    def list_sorted(self):
-        """Get list of domain objects, sorted by name.
-
-        @return: domain objects
-        """
-        doms = self.list()
-        doms.sort(lambda x, y: cmp(x.getName(), y.getName()))
+            if not os.path.exists(domain_config_dir):
+                try:
+                    os.makedirs(domain_config_dir, 0755)
+                except IOError:
+                    log.exception("Failed to create directory: %s" %
+                                  domain_config_dir)
+                    raise XendError("Failed to create directory: %s" %
+                                    domain_config_dir)
+                
+            try:
+                sxp_cache_file = open(self._managed_config_path(dom_uuid),'w')
+                prettyprint(dominfo.sxpr(), sxp_cache_file, width = 78)
+                sxp_cache_file.close()
+            except IOError:
+                log.error("Error occurred saving configuration file to %s" %
+                          domain_config_dir)
+                raise XendError("Failed to save configuration file to: %s" %
+                                domain_config_dir)
+        else:
+            log.warn("Trying to save configuration for invalid domain")
+
+
+    def _managed_domains(self):
+        """ Returns list of domains that are managed.
+        
+        Expects to be protected by domains_lock.
+
+        @rtype: list of XendConfig
+        @return: List of domain configurations that are managed.
+        """
+        dom_path = self._managed_path()
+        dom_uuids = os.listdir(dom_path)
+        doms = []
+        for dom_uuid in dom_uuids:
+            try:
+                cfg_file = self._managed_config_path(dom_uuid)
+                cfg = XendConfig(filename = cfg_file)
+                doms.append(cfg)
+            except Exception:
+                log.exception('Unable to open or parse config.sxp: %s' % \
+                              cfg_file)
         return doms
 
-    def list_names(self):
-        """Get list of domain names.
-
-        @return: domain names
-        """
-        doms = self.list_sorted()
-        return map(lambda x: x.getName(), doms)
-
-
-    ## private:
-
-    def onChangeDomain(self, _):
-        self.domains_lock.acquire()
-        try:
-            self.refresh()
-        finally:
-            self.domains_lock.release()
-        return 1
-
-
-    def xen_domains(self):
-        """Get table of domains indexed by id from xc.  Expects to be
-        protected by the domains_lock.
-        """
-        domlist = xc.domain_getinfo()
-        doms = {}
-        for d in domlist:
-            domid = d['dom']
-            doms[domid] = d
-        return doms
-
-
-    def dom0_setup(self):
-        """Expects to be protected by the domains_lock."""
-        dom0 = self.domains[PRIV_DOMAIN]
+    def _managed_domain_unregister(self, dom):
+        try:
+            self.managed_domains.remove((dom.get_uuid(), dom.getName()))
+        except ValueError:
+            log.warn("Domain is not registered: %s" % dom.get_uuid())
+
+    def _managed_domain_register(self, dom):
+        self.managed_domains.append((dom.get_uuid(), dom.getName()))
+
+    def _managed_domain_rename(self, dom, new_name):
+        for i in range(len(self.managed_domains)):
+            if self.managed_domains[i][0] == dom.get_uuid():
+                self.managed_domains[i][1] = new_name
+                return True
+        return False
+
+    def is_domain_managed(self, dom = None, dom_name = None):
+        dom_uuid = dom.get_uuid()
+        dom_name = dom.getName()
+        if dom:
+            return ((dom_uuid, dom_name) in self.managed_domains)
+        if dom_name:
+            results = [d for d in self.managed_domains if d[1] == dom_name]
+            return (len(results) > 0)
+        return False
+
+    
+
+    # End of Managed Domain Access
+    # --------------------------------------------------------------------
+
+    def _running_domains(self):
+        """Get table of domains indexed by id from xc.
+
+        @requires: Expects to be protected by domains_lock.
+        @rtype: list of dicts
+        @return: A list of dicts representing the running domains.
+        """
+        return xc.domain_getinfo()
+
+    def _setDom0CPUCount(self):
+        """Sets the number of VCPUs dom0 has. Retreived from the
+        Xend configuration, L{XendRoot}.
+
+        @requires: Expects to be protected by domains_lock.
+        @rtype: None
+        """
+        dom0 = self.privilegedDomain()
 
         # get max number of vcpus to use for dom0 from config
         target = int(xroot.get_dom0_vcpus())
@@ -157,71 +356,417 @@ class XendDomain:
             dom0.setVCpuCount(target)
 
 
-    def _add_domain(self, info):
+    def _refresh(self):
+        """Refresh the domain list. Needs to be called when
+        either xenstore has changed or when a method requires
+        up to date information (like uptime, cputime stats).
+
+        @rtype: None
+        """
+        self.domains_lock.acquire()
+        try:
+            # update information for all running domains
+            # - like cpu_time, status, dying, etc.
+            running = self._running_domains()
+            for dom in running:
+                dom_info = self.domain_lookup_nr(dom['domid'])
+                if dom_info:
+                    dom_info.update(dom)
+
+            # clean up unmanaged domains
+            for dom in self.domains.values():
+                if (dom.getDomid() == None) and \
+                       not self.is_domain_managed(dom):
+                    self._remove_domain(dom)
+                    
+        finally:
+            self.domains_lock.release()
+
+    def _add_domain(self, info, managed = False):
         """Add the given domain entry to this instance's internal cache.
-        Expects to be protected by the domains_lock.
-        """
-        self.domains[info.getDomid()] = info
-
-
-    def _delete_domain(self, domid):
+        
+        @requires: Expects to be protected by the domains_lock.
+        @param info: XendDomainInfo of a domain to be added.
+        @type info: XendDomainInfo
+        @keyword managed: Whether this domain is maanged by Xend
+        @type managed: boolean
+        """
+        log.debug("Adding Domain: %s" % info.get_uuid())
+        self.domains[info.get_uuid()] = info
+        if managed and not self.is_domain_managed(info):
+            self._managed_domain_register(info)
+
+    def _remove_domain(self, info):
         """Remove the given domain from this instance's internal cache.
-        Expects to be protected by the domains_lock.
-        """
-        info = self.domains.get(domid)
+        
+        @requires: Expects to be protected by the domains_lock.
+        @param info: XendDomainInfo of a domain to be removed.
+        @type info: XendDomainInfo
+        """
         if info:
-            del self.domains[domid]
-            info.cleanupDomain()
-
-
-    def refresh(self, initialising = False):
-        """Refresh domain list from Xen.  Expects to be protected by the
-        domains_lock.
-
-        @param initialising True if this is the first refresh after starting
-        Xend.  This does not change this method's behaviour, except for
-        logging.
-        """
-        doms = self.xen_domains()
-        for d in self.domains.values():
-            info = doms.get(d.getDomid())
-            if info:
-                d.update(info)
-            else:
-                self._delete_domain(d.getDomid())
-        for d in doms:
-            if d not in self.domains:
-                if doms[d]['dying']:
-                    log.log(initialising and logging.ERROR or logging.DEBUG,
-                            'Cannot recreate information for dying domain %d.'
-                            '  Xend will ignore this domain from now on.',
-                            doms[d]['dom'])
-                elif d == PRIV_DOMAIN:
-                    log.fatal(
-                        "No record of privileged domain %d!  Terminating.", d)
-                    sys.exit(1)
-                else:
-                    try:
-                        self._add_domain(
-                            XendDomainInfo.recreate(doms[d], False))
-                    except:
-                        log.exception(
-                            "Failed to recreate information for domain "
-                            "%d.  Destroying it in the hope of "
-                            "recovery.", d)
-                        try:
-                            xc.domain_destroy(d)
-                        except:
-                            log.exception('Destruction of %d failed.', d)
-
-
-    ## public:
+            dom_name = info.getName()
+            dom_uuid = info.get_uuid()
+            
+            if info.state != XendDomainInfo.DOM_STATE_HALTED:
+                info.cleanupDomain()
+
+            if self.is_domain_managed(info):
+                self._managed_config_remove(dom_uuid)
+                self._managed_domain_unregister(info)
+                
+            try:
+                del self.domains[dom_uuid]
+            except KeyError:
+                pass
+        else:
+            log.warning("Attempted to remove non-existent domain.")
+
+    def restore_(self, config):
+        """Create a domain as part of the restore process.  This is called
+        only from L{XendCheckpoint}.
+
+        A restore request comes into XendDomain through L{domain_restore}
+        or L{domain_restore_fd}.  That request is
+        forwarded immediately to XendCheckpoint which, when it is ready, will
+        call this method.  It is necessary to come through here rather than go
+        directly to L{XendDomainInfo.restore} because we need to
+        serialise the domain creation process, but cannot lock
+        domain_restore_fd as a whole, otherwise we will deadlock waiting for
+        the old domain to die.
+
+        @param config: Configuration of domain to restore
+        @type config: SXP Object (eg. list of lists)
+        """
+        self.domains_lock.acquire()
+        try:
+            security.refresh_ssidref(config)
+            dominfo = XendDomainInfo.restore(config)
+            self._add_domain(dominfo)
+            return dominfo
+        finally:
+            self.domains_lock.release()
+
+
+    def domain_lookup(self, domid):
+        """Look up given I{domid} in the list of managed and running
+        domains.
+        
+        @note: Will cause a refresh before lookup up domains, for
+               a version that does not need to re-read xenstore
+               use L{domain_lookup_nr}.
+
+        @param domid: Domain ID or Domain Name.
+        @type domid: int or string
+        @return: Found domain.
+        @rtype: XendDomainInfo
+        @raise XendError: If domain is not found.
+        """
+        self.domains_lock.acquire()
+        try:
+            self._refresh()
+            dom = self.domain_lookup_nr(domid)
+            if not dom:
+                raise XendError("No domain named '%s'." % str(domid))
+            return dom
+        finally:
+            self.domains_lock.release()
+
+
+    def domain_lookup_nr(self, domid):
+        """Look up given I{domid} in the list of managed and running
+        domains.
+
+        @param domid: Domain ID or Domain Name.
+        @type domid: int or string
+        @return: Found domain.
+        @rtype: XendDomainInfo or None
+        """
+        self.domains_lock.acquire()
+        try:
+            # lookup by name
+            match = [dom for dom in self.domains.values() \
+                     if dom.getName() == domid]
+            if match:
+                return match[0]
+
+            # lookup by id
+            try:
+                match = [d for d in self.domains.values() \
+                       if d.getDomid() == int(domid)]
+                if match:
+                    return match[0]
+            except (ValueError, TypeError):
+                pass
+
+            return None
+        finally:
+            self.domains_lock.release()
+
+    def privilegedDomain(self):
+        """ Get the XendDomainInfo of a dom0
+
+        @rtype: XendDomainInfo
+        """
+        self.domains_lock.acquire()
+        try:
+            return self.domains[DOM0_UUID]
+        finally:
+            self.domains_lock.release()
+
+    def cleanup_domains(self):
+        """Clean up domains that are marked as autostop.
+        Should be called when Xend goes down. This is currently
+        called from L{xen.xend.servers.XMLRPCServer}.
+
+        """
+        log.debug('cleanup_domains')
+        self.domains_lock.acquire()
+        try:
+            for dom in self.domains.values():
+                if dom.getName() == DOM0_NAME:
+                    continue
+                
+                if dom.state == XendDomainInfo.DOM_STATE_RUNNING:
+                    shutdownAction = dom.info.get('on_xend_stop', 'ignore')
+                    if shutdownAction == 'shutdown':
+                        log.debug('Shutting down domain: %s' % dom.getName())
+                        dom.shutdown("poweroff")
+                    elif shutdownAction == 'suspend':
+                        chkfile = self._managed_check_point_path(dom.getName())
+                        self.domain_save(dom.domid, chkfile)
+        finally:
+            self.domains_lock.release()
+
+
+
+    # ----------------------------------------------------------------
+    # Xen API 
+    
+
+    def set_allow_new_domains(self, allow_new_domains):
+        self._allow_new_domains = allow_new_domains
+
+    def allow_new_domains(self):
+        return self._allow_new_domains
+
+    def get_domain_refs(self):
+        result = []
+        try:
+            self.domains_lock.acquire()
+            result = [d.get_uuid() for d in self.domains.values()]
+        finally:
+            self.domains_lock.release()
+        return result
+
+    def get_vm_by_uuid(self, vm_uuid):
+        self.domains_lock.acquire()
+        try:
+            if vm_uuid in self.domains:
+                return self.domains[vm_uuid]
+            return None
+        finally:
+            self.domains_lock.release()
+
+    def get_vm_with_dev_uuid(self, klass, dev_uuid):
+        self.domains_lock.acquire()
+        try:
+            for dom in self.domains.values():
+                if dom.has_device(klass, dev_uuid):
+                    return dom
+            return None
+        finally:
+            self.domains_lock.release()
+
+    def get_dev_property_by_uuid(self, klass, dev_uuid, field):
+        self.domains_lock.acquire()
+        try:
+            dom = self.get_vm_with_dev_uuid(klass, dev_uuid)
+            if not dom:
+                return None
+
+            value = dom.get_device_property(klass, dev_uuid, field)
+            return value
+        except ValueError, e:
+            pass
+        
+        return None
+
+    def is_valid_vm(self, vm_ref):
+        return (self.get_vm_by_uuid(vm_ref) != None)
+
+    def is_valid_dev(self, klass, dev_uuid):
+        return (self.get_vm_with_dev_uuid(klass, dev_uuid) != None)
+
+    def do_legacy_api_with_uuid(self, fn, vm_uuid, *args):
+        self.domains_lock.acquire()
+        try:
+            if vm_uuid in self.domains:
+                # problem is domid does not exist for unstarted
+                # domains, so in that case, we use the name.
+                # TODO: probably want to modify domain_lookup_nr
+                #       to lookup uuids, or just ignore
+                #       the legacy api and reimplement all these
+                #       calls.
+                domid = self.domains[vm_uuid].getDomid()
+                if domid == None:
+                    domid = self.domains[vm_uuid].getName()
+                return fn(domid, *args)
+            raise XendInvalidDomain("Domain does not exist")
+        finally:
+            self.domains_lock.release()
+        
+
+    def create_domain(self, xenapi_vm):
+        self.domains_lock.acquire()
+        try:
+            try:
+                xeninfo = XendConfig(xenapi_vm = xenapi_vm)
+                dominfo = XendDomainInfo.createDormant(xeninfo)
+                log.debug("Creating new managed domain: %s: %s" %
+                          (dominfo.getName(), dominfo.get_uuid()))
+                self._add_domain(dominfo, managed = True)
+                self.managed_config_save(dominfo)
+                return dominfo.get_uuid()
+            except XendError, e:
+                raise
+            except Exception, e:
+                raise XendError(str(e))
+        finally:
+            self.domains_lock.release()        
+
+    def rename_domain(self, dom, new_name):
+        self.domains_lock.acquire()
+        try:
+            old_name = dom.getName()
+            dom.setName(new_name)
+
+            if self.is_domain_managed(dom):
+                self._managed_domain_rename(dom, new_name)
+
+        finally:
+            self.domains_lock.release()
+                
+    
+    #
+    # End of Xen API 
+    # ----------------------------------------------------------------
+
+    # ------------------------------------------------------------
+    # Xen Legacy API     
+
+    def list(self):
+        """Get list of domain objects.
+
+        @return: domains
+        @rtype: list of XendDomainInfo
+        """
+        self.domains_lock.acquire()
+        try:
+            self._refresh()
+            return self.domains.values()
+        finally:
+            self.domains_lock.release()
+
+
+    def list_sorted(self):
+        """Get list of domain objects, sorted by name.
+
+        @return: domain objects
+        @rtype: list of XendDomainInfo
+        """
+        doms = self.list()
+        doms.sort(lambda x, y: cmp(x.getName(), y.getName()))
+        return doms
+
+    def list_names(self):
+        """Get list of domain names.
+
+        @return: domain names
+        @rtype: list of strings.
+        """
+        return [d.getName() for d in self.list_sorted()]
+
+    def domain_suspend(self, domname):
+        """Suspends a domain that is persistently managed by Xend
+
+        @param domname: Domain Name
+        @type domname: string
+        @rtype: None
+        @raise XendError: Failure during checkpointing.
+        """
+
+        try:
+            dominfo = self.domain_lookup_nr(domname)
+            if not dominfo:
+                raise XendInvalidDomain(domname)
+
+            if dominfo.getDomid() == DOM0_ID:
+                raise XendError("Cannot save privileged domain %s" % domname)
+
+            if dominfo.state != XendDomainInfo.DOM_STATE_RUNNING:
+                raise XendError("Cannot suspend domain that is not running.")
+
+            if not os.path.exists(self._managed_config_path(domname)):
+                raise XendError("Domain is not managed by Xend lifecycle " +
+                                "support.")
+            
+            path = self._managed_check_point_path(domname)
+            fd = os.open(path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
+            try:
+                # For now we don't support 'live checkpoint' 
+                XendCheckpoint.save(fd, dominfo, False, False, path)
+            finally:
+                os.close(fd)
+        except OSError, ex:
+            raise XendError("can't write guest state file %s: %s" %
+                            (path, ex[1]))
+
+    def domain_resume(self, domname):
+        """Resumes a domain that is persistently managed by Xend.
+
+        @param domname: Domain Name
+        @type domname: string
+        @rtype: None
+        @raise XendError: If failed to restore.
+        """
+        try:
+            dominfo = self.domain_lookup_nr(domname)
+            
+            if not dominfo:
+                raise XendInvalidDomain(domname)
+
+            if dominfo.getDomid() == DOM0_ID:
+                raise XendError("Cannot save privileged domain %s" % domname)
+
+            if dominfo.state != XendDomainInfo.DOM_STATE_HALTED:
+                raise XendError("Cannot suspend domain that is not running.")
+
+            chkpath = self._managed_check_point_path(domname)
+            if not os.path.exists(chkpath):
+                raise XendError("Domain was not suspended by Xend")
+
+            # Restore that replaces the existing XendDomainInfo
+            try:
+                log.debug('Current DomainInfo state: %d' % dominfo.state)
+                XendCheckpoint.restore(self,
+                                       os.open(chkpath, os.O_RDONLY),
+                                       dominfo)
+                os.unlink(chkpath)
+            except OSError, ex:
+                raise XendError("Failed to read stored checkpoint file")
+            except IOError, ex:
+                raise XendError("Failed to delete checkpoint file")
+        except Exception, ex:
+            log.exception("Exception occurred when resuming")
+            raise XendError("Error occurred when resuming: %s" % str(ex))
+
 
     def domain_create(self, config):
         """Create a domain from a configuration.
 
         @param config: configuration
-        @return: domain
+        @type config: SXP Object (list of lists)
+        @rtype: XendDomainInfo
         """
         self.domains_lock.acquire()
         try:
@@ -235,10 +780,89 @@ class XendDomain:
             self.domains_lock.release()
 
 
+    def domain_new(self, config):
+        """Create a domain from a configuration but do not start it.
+        
+        @param config: configuration
+        @type config: SXP Object (list of lists)
+        @rtype: XendDomainInfo
+        """
+        self.domains_lock.acquire()
+        try:
+            try:
+                xeninfo = XendConfig(sxp = config)
+                dominfo = XendDomainInfo.createDormant(xeninfo)
+                log.debug("Creating new managed domain: %s" %
+                          dominfo.getName())
+                self._add_domain(dominfo, managed = True)
+                self.managed_config_save(dominfo)
+                # no return value because it isn't meaningful for client
+            except XendError, e:
+                raise
+            except Exception, e:
+                raise XendError(str(e))
+        finally:
+            self.domains_lock.release()
+
+    def domain_start(self, domid):
+        """Start a managed domain
+
+        @require: Domain must not be running.
+        @param domid: Domain name or domain ID.
+        @type domid: string or int
+        @rtype: None
+        @raise XendError: If domain is still running
+        @rtype: None
+        """
+        self.domains_lock.acquire()
+        try:
+            dominfo = self.domain_lookup_nr(domid)
+            if not dominfo:
+                raise XendInvalidDomain(str(domid))
+
+            if dominfo.state != XendDomainInfo.DOM_STATE_HALTED:
+                raise XendError("Domain is already running")
+            
+            dominfo.start(is_managed = True)
+
+            
+        finally:
+            self.domains_lock.release()
+        
+
+    def domain_delete(self, domid):
+        """Remove a domain from database
+
+        @require: Domain must not be running.
+        @param domid: Domain name or domain ID.
+        @type domid: string or int
+        @rtype: None
+        @raise XendError: If domain is still running
+        """
+        self.domains_lock.acquire()
+        try:
+            try:
+                dominfo = self.domain_lookup_nr(domid)
+                if not dominfo:
+                    raise XendInvalidDomain(str(domid))
+
+                if dominfo.state != XendDomainInfo.DOM_STATE_HALTED:
+                    raise XendError("Domain is still running")
+
+                self._remove_domain(dominfo)
+                
+            except Exception, ex:
+                raise XendError(str(ex))
+        finally:
+            self.domains_lock.release()
+        
+
     def domain_configure(self, config):
         """Configure an existing domain.
 
         @param vmconfig: vm configuration
+        @type vmconfig: SXP Object (list of lists)
+        @todo: Not implemented
         """
         # !!!
         raise XendError("Unsupported")
@@ -246,9 +870,12 @@ class XendDomain:
     def domain_restore(self, src):
         """Restore a domain from file.
 
-        @param src:      source file
-        """
-
+        @param src: filename of checkpoint file to restore from
+        @type src: string
+        @return: Restored domain
+        @rtype: XendDomainInfo
+        @raise XendError: Failure to restore domain
+        """
         try:
             fd = os.open(src, os.O_RDONLY)
             try:
@@ -260,7 +887,13 @@ class XendDomain:
                             (src, ex[1]))
 
     def domain_restore_fd(self, fd):
-        """Restore a domain from the given file descriptor."""
+        """Restore a domain from the given file descriptor.
+
+        @param fd: file descriptor of the checkpoint file
+        @type fd: File object
+        @rtype: XendDomainInfo
+        @raise XendError: if failed to restore
+        """
 
         try:
             return XendCheckpoint.restore(self, fd)
@@ -270,151 +903,85 @@ class XendDomain:
             # poor, so we need to log this for debugging.
             log.exception("Restore failed")
             raise XendError("Restore failed")
-
-
-    def restore_(self, config):
-        """Create a domain as part of the restore process.  This is called
-        only from {@link XendCheckpoint}.
-
-        A restore request comes into XendDomain through {@link
-        #domain_restore} or {@link #domain_restore_fd}.  That request is
-        forwarded immediately to XendCheckpoint which, when it is ready, will
-        call this method.  It is necessary to come through here rather than go
-        directly to {@link XendDomainInfo.restore} because we need to
-        serialise the domain creation process, but cannot lock
-        domain_restore_fd as a whole, otherwise we will deadlock waiting for
-        the old domain to die.
-        """
-        self.domains_lock.acquire()
-        try:
-            security.refresh_ssidref(config)
-            dominfo = XendDomainInfo.restore(config)
-            self._add_domain(dominfo)
-            return dominfo
-        finally:
-            self.domains_lock.release()
-
-
-    def domain_lookup(self, domid):
-        self.domains_lock.acquire()
-        try:
-            self.refresh()
-            return self.domains.get(domid)
-        finally:
-            self.domains_lock.release()
-
-
-    def domain_lookup_nr(self, domid):
-        self.domains_lock.acquire()
-        try:
-            return self.domains.get(domid)
-        finally:
-            self.domains_lock.release()
-
-
-    def domain_lookup_by_name_or_id(self, name):
-        self.domains_lock.acquire()
-        try:
-            self.refresh()
-            return self.domain_lookup_by_name_or_id_nr(name)
-        finally:
-            self.domains_lock.release()
-
-
-    def domain_lookup_by_name_or_id_nr(self, name):
-        self.domains_lock.acquire()
-        try:
-            dominfo = self.domain_lookup_by_name_nr(name)
-
-            if dominfo:
-                return dominfo
-            else:
-                try:
-                    return self.domains.get(int(name))
-                except ValueError:
-                    return None
-        finally:
-            self.domains_lock.release()
-
-
-    def domain_lookup_by_name_nr(self, name):
-        self.domains_lock.acquire()
-        try:
-            matching = filter(lambda d: d.getName() == name,
-                              self.domains.values())
-            n = len(matching)
-            if n == 1:
-                return matching[0]
-            return None
-        finally:
-            self.domains_lock.release()
-
-
-    def privilegedDomain(self):
-        self.domains_lock.acquire()
-        try:
-            return self.domains[PRIV_DOMAIN]
-        finally:
-            self.domains_lock.release()
-
  
     def domain_unpause(self, domid):
-        """Unpause domain execution."""
-
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+        """Unpause domain execution.
+
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @rtype: None
+        @raise XendError: Failed to unpause
+        @raise XendInvalidDomain: Domain is not valid        
+        """
+        try:
+            dominfo = self.domain_lookup_nr(domid)
+            if not dominfo:
+                raise XendInvalidDomain(str(domid))
+            
+            log.info("Domain %s (%d) unpaused.", dominfo.getName(),
+                     int(dominfo.getDomid()))
+            
+            dominfo.unpause()
+        except XendInvalidDomain:
+            log.exception("domain_unpause")
+            raise
+        except Exception, ex:
+            log.exception("domain_unpause")
+            raise XendError(str(ex))
+
+    def domain_pause(self, domid):
+        """Pause domain execution.
+
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @rtype: None
+        @raise XendError: Failed to pause
+        @raise XendInvalidDomain: Domain is not valid
+        """        
+        try:
+            dominfo = self.domain_lookup_nr(domid)
+            if not dominfo:
+                raise XendInvalidDomain(str(domid))
+            log.info("Domain %s (%d) paused.", dominfo.getName(),
+                     int(dominfo.getDomid()))
+            dominfo.pause()
+        except XendInvalidDomain:
+            log.exception("domain_pause")
+            raise
+        except Exception, ex:
+            log.exception("domain_pause")
+            raise XendError(str(ex))
+
+    def domain_dump(self, domid, filename, live, crash):
+        """Dump domain core."""
+
+        dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
 
-        if dominfo.getDomid() == PRIV_DOMAIN:
-            raise XendError("Cannot unpause privileged domain %s" % domid)
-
-        try:
-            log.info("Domain %s (%d) unpaused.", dominfo.getName(),
-                     dominfo.getDomid())
-            return dominfo.unpause()
-        except Exception, ex:
-            raise XendError(str(ex))
-
-
-    def domain_pause(self, domid):
-        """Pause domain execution."""
-
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
-        if not dominfo:
-            raise XendInvalidDomain(str(domid))
-
-        if dominfo.getDomid() == PRIV_DOMAIN:
-            raise XendError("Cannot pause privileged domain %s" % domid)
-
-        try:
-            log.info("Domain %s (%d) paused.", dominfo.getName(),
-                     dominfo.getDomid())
-            return dominfo.pause()
-        except Exception, ex:
-            raise XendError(str(ex))
-
-    def domain_dump(self, domid, filename, live, crash):
-        """Dump domain core."""
-
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
-        if not dominfo:
-            raise XendInvalidDomain(str(domid))
-
-        if dominfo.getDomid() == PRIV_DOMAIN:
+        if dominfo.getDomid() == DOM0_ID:
             raise XendError("Cannot dump core for privileged domain %s" % 
domid)
 
         try:
-            log.info("Domain core dump requested for domain %s (%d) live=%d 
crash=%d.",
+            log.info("Domain core dump requested for domain %s (%d) "
+                     "live=%d crash=%d.",
                      dominfo.getName(), dominfo.getDomid(), live, crash)
             return dominfo.dumpCore(filename)
         except Exception, ex:
             raise XendError(str(ex))
 
     def domain_destroy(self, domid):
-        """Terminate domain immediately."""
-
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
-       if dominfo and dominfo.getDomid() == PRIV_DOMAIN:
+        """Terminate domain immediately.
+
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @rtype: None
+        @raise XendError: Failed to destroy
+        @raise XendInvalidDomain: Domain is not valid        
+        """
+
+        dominfo = self.domain_lookup_nr(domid)
+        if dominfo and dominfo.getDomid() == DOM0_ID:
             raise XendError("Cannot destroy privileged domain %s" % domid)
 
         if dominfo:
@@ -422,19 +989,36 @@ class XendDomain:
         else:
             try:
                 val = xc.domain_destroy(int(domid))
-            except Exception, ex:
-                raise XendInvalidDomain(str(domid))
+            except ValueError:
+                raise XendInvalidDomain(domid)
+            except Exception, e:
+                raise XendError(str(e))
+
         return val       
 
     def domain_migrate(self, domid, dst, live=False, resource=0, port=0):
-        """Start domain migration."""
-
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+        """Start domain migration.
+        
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @param dst: Destination IP address
+        @type dst: string
+        @keyword port: relocation port on destination
+        @type port: int        
+        @keyword live: Live migration
+        @type live: bool
+        @keyword resource: not used??
+        @rtype: None
+        @raise XendError: Failed to migrate
+        @raise XendInvalidDomain: Domain is not valid        
+        """
+
+        dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
 
-        if dominfo.getDomid() == PRIV_DOMAIN:
-            raise XendError("Cannot migrate privileged domain %s" % domid)
+        if dominfo.getDomid() == DOM0_ID:
+            raise XendError("Cannot migrate privileged domain %i" % domid)
 
         """ The following call may raise a XendError exception """
         dominfo.testMigrateDevices(True, dst)
@@ -460,21 +1044,26 @@ class XendDomain:
     def domain_save(self, domid, dst):
         """Start saving a domain to file.
 
-        @param dst:      destination file
-        """
-
-        try:
-            dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @param dst: Destination filename
+        @type dst: string
+        @rtype: None
+        @raise XendError: Failed to save domain
+        @raise XendInvalidDomain: Domain is not valid        
+        """
+        try:
+            dominfo = self.domain_lookup_nr(domid)
             if not dominfo:
                 raise XendInvalidDomain(str(domid))
 
-            if dominfo.getDomid() == PRIV_DOMAIN:
-                raise XendError("Cannot save privileged domain %s" % domid)
+            if dominfo.getDomid() == DOM0_ID:
+                raise XendError("Cannot save privileged domain %i" % domid)
 
             fd = os.open(dst, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
             try:
                 # For now we don't support 'live checkpoint' 
-                return XendCheckpoint.save(fd, dominfo, False, False, dst)
+                XendCheckpoint.save(fd, dominfo, False, False, dst)
             finally:
                 os.close(fd)
         except OSError, ex:
@@ -484,9 +1073,15 @@ class XendDomain:
     def domain_pincpu(self, domid, vcpu, cpumap):
         """Set which cpus vcpu can use
 
-        @param cpumap:  string repr of list of usable cpus
-        """
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @param vcpu: vcpu to pin to
+        @type vcpu: int
+        @param cpumap:  string repr of usable cpus
+        @type cpumap: string
+        @rtype: 0
+        """
+        dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
 
@@ -507,8 +1102,12 @@ class XendDomain:
     def domain_cpu_sedf_set(self, domid, period, slice_, latency, extratime,
                             weight):
         """Set Simple EDF scheduler parameters for a domain.
-        """
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @rtype: 0
+        """
+        dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
         try:
@@ -519,8 +1118,13 @@ class XendDomain:
 
     def domain_cpu_sedf_get(self, domid):
         """Get Simple EDF scheduler parameters for a domain.
-        """
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @rtype: SXP object
+        @return: The parameters for Simple EDF schedule for a domain.
+        """
+        dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
         try:
@@ -538,7 +1142,14 @@ class XendDomain:
             raise XendError(str(ex))
 
     def domain_shadow_control(self, domid, op):
-        """Shadow page control."""
+        """Shadow page control.
+        
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @param op: operation
+        @type op: int
+        @rtype: 0
+        """
         dominfo = self.domain_lookup(domid)
         try:
             return xc.shadow_control(dominfo.getDomid(), op)
@@ -546,7 +1157,13 @@ class XendDomain:
             raise XendError(str(ex))
 
     def domain_shadow_mem_get(self, domid):
-        """Get shadow pagetable memory allocation."""
+        """Get shadow pagetable memory allocation.
+        
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @rtype: int
+        @return: shadow memory in MB
+        """
         dominfo = self.domain_lookup(domid)
         try:
             return xc.shadow_mem_control(dominfo.getDomid())
@@ -554,7 +1171,15 @@ class XendDomain:
             raise XendError(str(ex))
 
     def domain_shadow_mem_set(self, domid, mb):
-        """Set shadow pagetable memory allocation."""
+        """Set shadow pagetable memory allocation.
+        
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @param mb: shadow memory to set in MB
+        @type: mb: int
+        @rtype: int
+        @return: shadow memory in MB
+        """
         dominfo = self.domain_lookup(domid)
         try:
             return xc.shadow_mem_control(dominfo.getDomid(), mb=mb)
@@ -563,8 +1188,13 @@ class XendDomain:
 
     def domain_sched_credit_get(self, domid):
         """Get credit scheduler parameters for a domain.
-        """
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @rtype: dict with keys 'weight' and 'cap'
+        @return: credit scheduler parameters
+        """
+        dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
         try:
@@ -574,8 +1204,14 @@ class XendDomain:
     
     def domain_sched_credit_set(self, domid, weight = None, cap = None):
         """Set credit scheduler parameters for a domain.
-        """
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+
+        @param domid: Domain ID or Name
+        @type domid: int or string.
+        @type weight: int
+        @type cap: int
+        @rtype: 0
+        """
+        dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
         try:
@@ -596,10 +1232,14 @@ class XendDomain:
     def domain_maxmem_set(self, domid, mem):
         """Set the memory limit for a domain.
 
+        @param domid: Domain ID or Name
+        @type domid: int or string.
         @param mem: memory limit (in MiB)
-        @return: 0 on success, -1 on error
-        """
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+        @type mem: int
+        @raise XendError: fail to set memory
+        @rtype: 0
+        """
+        dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
         maxmem = int(mem) * 1024
@@ -613,9 +1253,10 @@ class XendDomain:
 
         @param first: first IO port
         @param last: last IO port
-        @return: 0 on success, -1 on error
-        """
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+        @raise XendError: failed to set range
+        @rtype: 0
+        """
+        dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
         nr_ports = last - first + 1
@@ -632,9 +1273,10 @@ class XendDomain:
 
         @param first: first IO port
         @param last: last IO port
-        @return: 0 on success, -1 on error
-        """
-        dominfo = self.domain_lookup_by_name_or_id_nr(domid)
+        @raise XendError: failed to set range
+        @rtype: 0
+        """
+        dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
         nr_ports = last - first + 1
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/XendDomainInfo.py   Wed Nov 01 10:40:46 2006 +0000
@@ -24,90 +24,38 @@ Author: Mike Wray <mike.wray@xxxxxx>
 
 """
 
-import errno
 import logging
-import string
 import time
 import threading
-import os
+import re
+import copy
+from types import StringTypes
 
 import xen.lowlevel.xc
 from xen.util import asserts
 from xen.util.blkif import blkdev_uname_to_file
 from xen.util import security
-import balloon
-import image
-import sxp
-import uuid
-import XendDomain
-import XendRoot
+
+from xen.xend import balloon, sxp, uuid, image, arch
+from xen.xend import XendRoot, XendNode
 
 from xen.xend.XendBootloader import bootloader
+from xen.xend.XendConfig import XendConfig
 from xen.xend.XendError import XendError, VmError
-
+from xen.xend.XendDevices import XendDevices
 from xen.xend.xenstore.xstransact import xstransact, complete
 from xen.xend.xenstore.xsutil import GetDomainPath, IntroduceDomain
 from xen.xend.xenstore.xswatch import xswatch
-
-from xen.xend import arch
-
-"""Shutdown code for poweroff."""
-DOMAIN_POWEROFF = 0
-
-"""Shutdown code for reboot."""
-DOMAIN_REBOOT   = 1
-
-"""Shutdown code for suspend."""
-DOMAIN_SUSPEND  = 2
-
-"""Shutdown code for crash."""
-DOMAIN_CRASH    = 3
-
-"""Shutdown code for halt."""
-DOMAIN_HALT     = 4
-
-"""Map shutdown codes to strings."""
-shutdown_reasons = {
-    DOMAIN_POWEROFF: "poweroff",
-    DOMAIN_REBOOT  : "reboot",
-    DOMAIN_SUSPEND : "suspend",
-    DOMAIN_CRASH   : "crash",
-    DOMAIN_HALT    : "halt"
-    }
-
-restart_modes = [
-    "restart",
-    "destroy",
-    "preserve",
-    "rename-restart"
-    ]
-
-STATE_DOM_OK       = 1
-STATE_DOM_SHUTDOWN = 2
-
-SHUTDOWN_TIMEOUT = 30.0
+from xen.xend.XendConstants import *
+from xen.xend.XendAPIConstants import *
+
 MIGRATE_TIMEOUT = 30.0
-
-ZOMBIE_PREFIX = 'Zombie-'
-
-"""Constants for the different stages of ext. device migration """
-DEV_MIGRATE_TEST  = 0
-DEV_MIGRATE_STEP1 = 1
-DEV_MIGRATE_STEP2 = 2
-DEV_MIGRATE_STEP3 = 3
-
-"""Minimum time between domain restarts in seconds."""
-MINIMUM_RESTART_TIME = 20
-
-RESTART_IN_PROGRESS = 'xend/restart_in_progress'
-
 
 xc = xen.lowlevel.xc.xc()
 xroot = XendRoot.instance()
 
 log = logging.getLogger("xend.XendDomainInfo")
 #log.setLevel(logging.TRACE)
-
 
 ##
 # All parameters of VMs that may be configured on-the-fly, or at start-up.
@@ -157,6 +105,8 @@ VM_STORE_ENTRIES = [
     ('shadow_memory', int),
     ('maxmem',        int),
     ('start_time',    float),
+    ('on_xend_start', str),
+    ('on_xend_stop', str),
     ]
 
 VM_STORE_ENTRIES += VM_CONFIG_PARAMS
@@ -182,224 +132,155 @@ VM_STORE_ENTRIES += VM_CONFIG_PARAMS
 
 
 def create(config):
-    """Create a VM from a configuration.
-
-    @param config    configuration
-    @raise: VmError for invalid configuration
+    """Creates and start a VM using the supplied configuration. 
+    (called from XMLRPCServer directly)
+
+    @param config: A configuration object involving lists of tuples.
+    @type  config: list of lists, eg ['vm', ['image', 'xen.gz']]
+
+    @rtype:  XendDomainInfo
+    @return: A up and running XendDomainInfo instance
+    @raise VmError: Invalid configuration or failure to start.
     """
 
     log.debug("XendDomainInfo.create(%s)", config)
-
-    vm = XendDomainInfo(parseConfig(config))
+    vm = XendDomainInfo(XendConfig(sxp = config))
     try:
-        vm.construct()
-        vm.initDomain()
-        vm.storeVmDetails()
-        vm.storeDomDetails()
-        vm.registerWatches()
-        vm.refreshShutdown()
-        return vm
+        vm.start()
     except:
         log.exception('Domain construction failed')
         vm.destroy()
         raise
 
-
-def recreate(xeninfo, priv):
+    return vm
+
+def recreate(info, priv):
     """Create the VM object for an existing domain.  The domain must not
     be dying, as the paths in the store should already have been removed,
-    and asking us to recreate them causes problems."""
-
-    log.debug("XendDomainInfo.recreate(%s)", xeninfo)
-
-    assert not xeninfo['dying']
-
-    domid = xeninfo['dom']
+    and asking us to recreate them causes problems.
+
+    @param xeninfo: Parsed configuration
+    @type  xeninfo: Dictionary
+    @param priv: TODO, unknown, something to do with memory
+    @type  priv: bool
+
+    @rtype:  XendDomainInfo
+    @return: A up and running XendDomainInfo instance
+    @raise VmError: Invalid configuration.
+    @raise XendError: Errors with configuration.
+    """
+
+    log.debug("XendDomainInfo.recreate(%s)", info)
+
+    assert not info['dying']
+
+    xeninfo = XendConfig(cfg = info)
+    domid = xeninfo['domid']
     uuid1 = xeninfo['handle']
     xeninfo['uuid'] = uuid.toString(uuid1)
+    needs_reinitialising = False
+    
     dompath = GetDomainPath(domid)
     if not dompath:
-        raise XendError(
-            'No domain path in store for existing domain %d' % domid)
-
-    log.info("Recreating domain %d, UUID %s.", domid, xeninfo['uuid'])
+        raise XendError('No domain path in store for existing '
+                        'domain %d' % domid)
+
+    log.info("Recreating domain %d, UUID %s. at %s" %
+             (domid, xeninfo['uuid'], dompath))
+
+    # need to verify the path and uuid if not Domain-0
+    # if the required uuid and vm aren't set, then that means
+    # we need to recreate the dom with our own values
+    #
+    # NOTE: this is probably not desirable, really we should just
+    #       abort or ignore, but there may be cases where xenstore's
+    #       entry disappears (eg. xenstore-rm /)
+    #
     try:
         vmpath = xstransact.Read(dompath, "vm")
         if not vmpath:
-            raise XendError(
-                'No vm path in store for existing domain %d' % domid)
+            log.warn('/local/domain/%d/vm is missing. recreate is '
+                     'confused, trying our best to recover' % domid)
+            needs_reinitialising = True
+            raise XendError('reinit')
+        
         uuid2_str = xstransact.Read(vmpath, "uuid")
         if not uuid2_str:
-            raise XendError(
-                'No vm/uuid path in store for existing domain %d' % domid)
-
+            log.warn('%s/uuid/ is missing. recreate is confused, '
+                     'trying our best to recover' % vmpath)
+            needs_reinitialising = True
+            raise XendError('reinit')
+        
         uuid2 = uuid.fromString(uuid2_str)
-
         if uuid1 != uuid2:
-            raise XendError(
-                'Uuid in store does not match uuid for existing domain %d: '
-                '%s != %s' % (domid, uuid2_str, xeninfo['uuid']))
-
-        vm = XendDomainInfo(xeninfo, domid, dompath, True, priv)
-
-    except Exception, exn:
-        if priv:
-            log.warn(str(exn))
-
-        vm = XendDomainInfo(xeninfo, domid, dompath, True, priv)
-        vm.recreateDom()
-        vm.removeVm()
-        vm.storeVmDetails()
-        vm.storeDomDetails()
-
-    vm.registerWatches()
-    vm.refreshShutdown(xeninfo)
+            log.warn('UUID in /vm does not match the UUID in /dom/%d.'
+                     'Trying out best to recover' % domid)
+            needs_reinitialising = True
+    except XendError:
+        pass # our best shot at 'goto' in python :)
+
+    vm = XendDomainInfo(xeninfo, domid, dompath, augment = True, priv = priv)
+    
+    if needs_reinitialising:
+        vm._recreateDom()
+        vm._removeVm()
+        vm._storeVmDetails()
+        vm._storeDomDetails()
+        
+    vm._registerWatches()
+    vm._refreshShutdown(xeninfo)
     return vm
 
 
 def restore(config):
     """Create a domain and a VM object to do a restore.
 
-    @param config: domain configuration
+    @param config: Domain configuration object
+    @type  config: list of lists. (see C{create})
+
+    @rtype:  XendDomainInfo
+    @return: A up and running XendDomainInfo instance
+    @raise VmError: Invalid configuration or failure to start.
+    @raise XendError: Errors with configuration.
     """
 
     log.debug("XendDomainInfo.restore(%s)", config)
 
-    vm = XendDomainInfo(parseConfig(config), None, None, False, False, True)
+    vm = XendDomainInfo(XendConfig(sxp = config), resume = True)
     try:
-        vm.construct()
-        vm.storeVmDetails()
-        vm.createDevices()
-        vm.createChannels()
-        vm.storeDomDetails()
-        vm.endRestore()
-        return vm
+        vm.resume()
     except:
         vm.destroy()
         raise
 
-
-def parseConfig(config):
-    def get_cfg(name, conv = None):
-        val = sxp.child_value(config, name)
-
-        if conv and not val is None:
-            try:
-                return conv(val)
-            except TypeError, exn:
-                raise VmError(
-                    'Invalid setting %s = %s in configuration: %s' %
-                    (name, val, str(exn)))
-        else:
-            return val
-
-
-    log.debug("parseConfig: config is %s", config)
-
-    result = {}
-
-    for e in ROUNDTRIPPING_CONFIG_ENTRIES:
-        result[e[0]] = get_cfg(e[0], e[1])
-
-    result['cpu']   = get_cfg('cpu',  int)
-    result['cpus']  = get_cfg('cpus', str)
-    result['image'] = get_cfg('image')
-    tmp_security = get_cfg('security')
-    if tmp_security:
-        result['security'] = tmp_security
-
-    try:
-        if result['image']:
-            v = sxp.child_value(result['image'], 'vcpus')
-            if result['vcpus'] is None and v is not None:
-                result['vcpus'] = int(v)
-            elif v is not None and int(v) != result['vcpus']:
-                log.warn(('Image VCPUs setting overrides vcpus=%d elsewhere.'
-                          '  Using %s VCPUs for VM %s.') %
-                         (result['vcpus'], v, result['uuid']))
-                result['vcpus'] = int(v)
-    except TypeError, exn:
-        raise VmError(
-            'Invalid configuration setting: vcpus = %s: %s' %
-            (sxp.child_value(result['image'], 'vcpus', 1), str(exn)))
-
-    try:
-        # support legacy config files with 'cpu' parameter
-        # NB: prepending to list to support previous behavior
-        #     where 'cpu' parameter pinned VCPU0.
-        if result['cpu']:
-           if result['cpus']:
-               result['cpus'] = "%s,%s" % (str(result['cpu']), result['cpus'])
-           else:
-               result['cpus'] = str(result['cpu'])
-
-        # convert 'cpus' string to list of ints
-        # 'cpus' supports a list of ranges (0-3), seperated by
-        # commas, and negation, (^1).  
-        # Precedence is settled by  order of the string:
-        #     "0-3,^1"   -> [0,2,3]
-        #     "0-3,^1,1" -> [0,1,2,3]
-        if result['cpus']:
-            cpus = []
-            for c in result['cpus'].split(','):
-                if c.find('-') != -1:             
-                    (x,y) = c.split('-')
-                    for i in range(int(x),int(y)+1):
-                        cpus.append(int(i))
-                else:
-                    # remove this element from the list 
-                    if c[0] == '^':
-                        cpus = [x for x in cpus if x != int(c[1:])]
-                    else:
-                        cpus.append(int(c))
-
-            result['cpus'] = cpus
-        
-    except ValueError, exn:
-        raise VmError(
-            'Invalid configuration setting: cpus = %s: %s' %
-            (result['cpus'], exn))
-
-    result['backend'] = []
-    for c in sxp.children(config, 'backend'):
-        result['backend'].append(sxp.name(sxp.child0(c)))
-
-    result['device'] = []
-    for d in sxp.children(config, 'device'):
-        c = sxp.child0(d)
-        result['device'].append((sxp.name(c), c))
-
-    # Configuration option "restart" is deprecated.  Parse it, but
-    # let on_xyz override it if they are present.
-    restart = get_cfg('restart')
-    if restart:
-        def handle_restart(event, val):
-            if result[event] is None:
-                result[event] = val
-
-        if restart == "onreboot":
-            handle_restart('on_poweroff', 'destroy')
-            handle_restart('on_reboot',   'restart')
-            handle_restart('on_crash',    'destroy')
-        elif restart == "always":
-            handle_restart('on_poweroff', 'restart')
-            handle_restart('on_reboot',   'restart')
-            handle_restart('on_crash',    'restart')
-        elif restart == "never":
-            handle_restart('on_poweroff', 'destroy')
-            handle_restart('on_reboot',   'destroy')
-            handle_restart('on_crash',    'destroy')
-        else:
-            log.warn("Ignoring malformed and deprecated config option "
-                     "restart = %s", restart)
-
-    result['start_time'] = get_cfg('start_time', float)
-
-    log.debug("parseConfig: result is %s", result)
-    return result
-
+def createDormant(xeninfo):
+    """Create a dormant/inactive XenDomainInfo without creating VM.
+    This is for creating instances of persistent domains that are not
+    yet start.
+
+    @param xeninfo: Parsed configuration
+    @type  xeninfo: dictionary
+    
+    @rtype:  XendDomainInfo
+    @return: A up and running XendDomainInfo instance
+    @raise XendError: Errors with configuration.    
+    """
+    
+    log.debug("XendDomainInfo.createDormant(%s)", xeninfo)
+    
+    # domid does not make sense for non-running domains.
+    xeninfo.pop('domid', None)
+    vm = XendDomainInfo(XendConfig(cfg = xeninfo))
+    return vm    
 
 def domain_by_name(name):
+    """Get domain by name
+
+    @params name: Name of the domain
+    @type   name: string
+    @return: XendDomainInfo or None
+    """
+    from xen.xend import XendDomain
     return XendDomain.instance().domain_lookup_by_name_nr(name)
 
 
@@ -411,17 +292,19 @@ def shutdown_reason(code):
     @return: shutdown reason
     @rtype:  string
     """
-    return shutdown_reasons.get(code, "?")
+    return DOMAIN_SHUTDOWN_REASONS.get(code, "?")
 
 def dom_get(dom):
     """Get info from xen for an existing domain.
 
     @param dom: domain id
+    @type  dom: int
     @return: info or None
+    @rtype: dictionary
     """
     try:
         domlist = xc.domain_getinfo(dom, 1)
-        if domlist and dom == domlist[0]['dom']:
+        if domlist and dom == domlist[0]['domid']:
             return domlist[0]
     except Exception, err:
         # ignore missing domain
@@ -430,32 +313,87 @@ def dom_get(dom):
 
 
 class XendDomainInfo:
-
+    """An object represents a domain.
+
+    @TODO: try to unify dom and domid, they mean the same thing, but
+           xc refers to it as dom, and everywhere else, including
+           xenstore it is domid. The best way is to change xc's
+           python interface.
+
+    @ivar info: Parsed configuration
+    @type info: dictionary
+    @ivar domid: Domain ID (if VM has started)
+    @type domid: int or None
+    @ivar vmpath: XenStore path to this VM.
+    @type vmpath: string
+    @ivar dompath: XenStore path to this Domain.
+    @type dompath: string
+    @ivar image:  Reference to the VM Image.
+    @type image: xen.xend.image.ImageHandler
+    @ivar store_port: event channel to xenstored
+    @type store_port: int
+    @ivar console_port: event channel to xenconsoled
+    @type console_port: int
+    @ivar store_mfn: xenstored mfn
+    @type store_mfn: int
+    @ivar console_mfn: xenconsoled mfn
+    @type console_mfn: int
+    @ivar vmWatch: reference to a watch on the xenstored vmpath
+    @type vmWatch: xen.xend.xenstore.xswatch
+    @ivar shutdownWatch: reference to watch on the xenstored domain shutdown
+    @type shutdownWatch: xen.xend.xenstore.xswatch
+    @ivar shutdownStartTime: UNIX Time when domain started shutting down.
+    @type shutdownStartTime: float or None
+    @ivar state: Domain state
+    @type state: enum(DOM_STATE_HALTED, DOM_STATE_RUNNING, ...)
+    @ivar state_updated: lock for self.state
+    @type state_updated: threading.Condition
+    @ivar refresh_shutdown_lock: lock for polling shutdown state
+    @type refresh_shutdown_lock: threading.Condition
+    @ivar _deviceControllers: device controller cache for this domain
+    @type _deviceControllers: dict 'string' to DevControllers
+    """
+    
     def __init__(self, info, domid = None, dompath = None, augment = False,
                  priv = False, resume = False):
+        """Constructor for a domain
+
+        @param   info: parsed configuration
+        @type    info: dictionary
+        @keyword domid: Set initial domain id (if any)
+        @type    domid: int
+        @keyword dompath: Set initial dompath (if any)
+        @type    dompath: string
+        @keyword augment: Augment given info with xenstored VM info
+        @type    augment: bool
+        @keyword priv: Is a privledged domain (Dom 0) (TODO: really?)
+        @type    priv: bool
+        @keyword resume: Is this domain being resumed?
+        @type    resume: bool
+        """
 
         self.info = info
-
-        if not self.infoIsSet('uuid'):
-            self.info['uuid'] = uuid.toString(uuid.create())
-
-        if domid is not None:
+        if domid == None:
+            self.domid =  self.info.get('domid')
+        else:
             self.domid = domid
-        elif 'dom' in info:
-            self.domid = int(info['dom'])
-        else:
-            self.domid = None
-
-        self.vmpath  = XendDomain.VMROOT + self.info['uuid']
+        
+        #REMOVE: uuid is now generated in XendConfig
+        #if not self._infoIsSet('uuid'):
+        #    self.info['uuid'] = uuid.toString(uuid.create())
+
+        #REMOVE: domid logic can be shortened 
+        #if domid is not None:
+        #    self.domid = domid
+        #elif info.has_key('dom'):
+        #    self.domid = int(info['dom'])
+        #else:
+        #    self.domid = None
+
+        self.vmpath  = XS_VMROOT + self.info['uuid']
         self.dompath = dompath
 
-        if augment:
-            self.augmentInfo(priv)
-
-        self.validateInfo()
-
         self.image = None
-        self.security = None
         self.store_port = None
         self.store_mfn = None
         self.console_port = None
@@ -463,67 +401,215 @@ class XendDomainInfo:
 
         self.vmWatch = None
         self.shutdownWatch = None
-
         self.shutdownStartTime = None
         
-        self.state = STATE_DOM_OK
+        self.state = DOM_STATE_HALTED
         self.state_updated = threading.Condition()
         self.refresh_shutdown_lock = threading.Condition()
 
+        self._deviceControllers = {}
+
+        for state in DOM_STATES_OLD:
+            self.info[state] = 0
+
+        if augment:
+            self._augmentInfo(priv)
+
+        self._checkName(self.info['name'])
         self.setResume(resume)
-
-    ## private:
-
-    def readVMDetails(self, params):
-        """Read the specified parameters from the store.
+            
+
+    #
+    # Public functions available through XMLRPC
+    #
+
+
+    def start(self, is_managed = False):
+        """Attempts to start the VM by do the appropriate
+        initialisation if it not started.
+        """
+        from xen.xend import XendDomain
+        
+        if self.state == DOM_STATE_HALTED:
+            try:
+                self._constructDomain()
+                self._initDomain()
+                self._storeVmDetails()
+                self._storeDomDetails()
+                self._registerWatches()
+                self._refreshShutdown()
+                self.unpause()
+
+                # save running configuration if XendDomains believe domain is
+                # persistent
+                #
+                if is_managed:
+                    xendomains = XendDomain.instance()
+                    xendomains.managed_config_save(self)
+            except:
+                log.exception('VM start failed')
+                self.destroy()
+                raise
+        else:
+            raise XendError('VM already running')
+
+    def resume(self):
+        """Resumes a domain that has come back from suspension."""
+        if self.state in (DOM_STATE_HALTED, DOM_STATE_SUSPENDED):
+            try:
+                self._constructDomain()
+                self._storeVmDetails()
+                self._createDevices()
+                self._createChannels()
+                self._storeDomDetails()
+                self._endRestore()
+            except:
+                log.exception('VM resume failed')
+                raise
+        else:
+            raise XendError('VM already running')
+
+    def shutdown(self, reason):
+        """Shutdown a domain by signalling this via xenstored."""
+        log.debug('XendDomainInfo.shutdown')
+        if self.state in (DOM_STATE_SHUTDOWN, DOM_STATE_HALTED,):
+            raise XendError('Domain cannot be shutdown')
+        
+        if not reason in DOMAIN_SHUTDOWN_REASONS.values():
+            raise XendError('Invalid reason: %s' % reason)
+        self._storeDom("control/shutdown", reason)
+                
+    def pause(self):
+        """Pause domain
+        
+        @raise XendError: Failed pausing a domain
         """
         try:
-            return self.gatherVm(*params)
+            xc.domain_pause(self.domid)
+            self._stateSet(DOM_STATE_PAUSED)
+        except Exception, ex:
+            raise XendError("Domain unable to be paused: %s" % str(ex))
+
+    def unpause(self):
+        """Unpause domain
+        
+        @raise XendError: Failed unpausing a domain
+        """
+        try:
+            xc.domain_unpause(self.domid)
+            self._stateSet(DOM_STATE_RUNNING)
+        except Exception, ex:
+            raise XendError("Domain unable to be unpaused: %s" % str(ex))
+
+    def send_sysrq(self, key):
+        """ Send a Sysrq equivalent key via xenstored."""
+        asserts.isCharConvertible(key)
+        self._storeDom("control/sysrq", '%c' % key)
+
+    def device_create(self, dev_config):
+        """Create a new device.
+
+        @param dev_config: device configuration
+        @type  dev_config: dictionary (parsed config)
+        """
+        log.debug("XendDomainInfo.device_create: %s" % dev_config)
+        dev_type = sxp.name(dev_config)
+        devid = self._createDevice(dev_type, dev_config)
+        self.info.device_add(dev_type, cfg_sxp = dev_config)        
+        self._waitForDevice(dev_type, devid)
+        return self.getDeviceController(dev_type).sxpr(devid)
+
+    def device_configure(self, dev_config, devid):
+        """Configure an existing device.
+        
+        @param dev_config: device configuration
+        @type  dev_config: dictionary (parsed config)
+        @param devid:      device id
+        @type  devid:      int
+        """
+        deviceClass = sxp.name(dev_config)
+        self._reconfigureDevice(deviceClass, devid, dev_config)
+
+    def waitForDevices(self):
+        """Wait for this domain's configured devices to connect.
+
+        @raise VmError: if any device fails to initialise.
+        """
+        for devclass in XendDevices.valid_devices():
+            self.getDeviceController(devclass).waitForDevices()
+
+    def destroyDevice(self, deviceClass, devid):
+        try:
+            devid = int(devid)
         except ValueError:
-            # One of the int/float entries in params has a corresponding store
-            # entry that is invalid.  We recover, because older versions of
-            # Xend may have put the entry there (memory/target, for example),
-            # but this is in general a bad situation to have reached.
-            log.exception(
-                "Store corrupted at %s!  Domain %d's configuration may be "
-                "affected.", self.vmpath, self.domid)
-            return []
-
-
-    def storeChanged(self, _):
-        log.trace("XendDomainInfo.storeChanged");
-
-        changed = False
-        
-        def f(x, y):
-            if y is not None and self.info[x[0]] != y:
-                self.info[x[0]] = y
-                changed = True
-
-        map(f, VM_CONFIG_PARAMS, self.readVMDetails(VM_CONFIG_PARAMS))
-
-        im = self.readVm('image')
-        current_im = self.info['image']
-        if (im is not None and
-            (current_im is None or sxp.to_string(current_im) != im)):
-            self.info['image'] = sxp.from_string(im)
-            changed = True
-
-        if changed:
-            # Update the domain section of the store, as this contains some
-            # parameters derived from the VM configuration.
-            self.storeDomDetails()
-
-        return 1
-
-
-    def augmentInfo(self, priv):
-        """Augment self.info, as given to us through {@link #recreate}, with
-        values taken from the store.  This recovers those values known to xend
-        but not to the hypervisor.
+            # devid is not a number, let's search for it in xenstore.
+            devicePath = '%s/device/%s' % (self.dompath, deviceClass)
+            for entry in xstransact.List(devicePath):
+                backend = xstransact.Read('%s/%s' % (devicePath, entry),
+                                          "backend")
+                devName = xstransact.Read(backend, "dev")
+                if devName == devid:
+                    # We found the integer matching our devid, use it instead
+                    devid = entry
+                    break
+                
+        return self.getDeviceController(deviceClass).destroyDevice(devid)
+
+
+    def getDeviceSxprs(self, deviceClass):
+        return self.getDeviceController(deviceClass).sxprs()
+
+
+    def setMemoryTarget(self, target):
+        """Set the memory target of this domain.
+        @param target: In MiB.
+        """
+        log.debug("Setting memory target of domain %s (%d) to %d MiB.",
+                  self.info['name'], self.domid, target)
+        
+        if target <= 0:
+            raise XendError('Invalid memory size')
+        
+        self.info['memory'] = target
+        self.storeVm("memory", target)
+        self._storeDom("memory/target", target << 10)
+
+    def getVCPUInfo(self):
+        try:
+            # We include the domain name and ID, to help xm.
+            sxpr = ['domain',
+                    ['domid',      self.domid],
+                    ['name',       self.info['name']],
+                    ['vcpu_count', self.info['online_vcpus']]]
+
+            for i in range(0, self.info['max_vcpu_id']+1):
+                info = xc.vcpu_getinfo(self.domid, i)
+
+                sxpr.append(['vcpu',
+                             ['number',   i],
+                             ['online',   info['online']],
+                             ['blocked',  info['blocked']],
+                             ['running',  info['running']],
+                             ['cpu_time', info['cpu_time'] / 1e9],
+                             ['cpu',      info['cpu']],
+                             ['cpumap',   info['cpumap']]])
+
+            return sxpr
+
+        except RuntimeError, exn:
+            raise XendError(str(exn))
+
+    #
+    # internal functions ... TODO: re-categorised
+    # 
+
+    def _augmentInfo(self, priv):
+        """Augment self.info, as given to us through L{recreate}, with
+        values taken from the store.  This recovers those values known
+        to xend but not to the hypervisor.
         """
         def useIfNeeded(name, val):
-            if not self.infoIsSet(name) and val is not None:
+            if not self._infoIsSet(name) and val is not None:
                 self.info[name] = val
 
         if priv:
@@ -536,199 +622,63 @@ class XendDomainInfo:
         entries.append(('security', str))
 
         map(lambda x, y: useIfNeeded(x[0], y), entries,
-            self.readVMDetails(entries))
-
-        device = []
-        for c in controllerClasses:
-            devconfig = self.getDeviceConfigurations(c)
+            self._readVMDetails(entries))
+
+        devices = []
+
+        for devclass in XendDevices.valid_devices():
+            devconfig = self.getDeviceController(devclass).configurations()
             if devconfig:
-                device.extend(map(lambda x: (c, x), devconfig))
-        useIfNeeded('device', device)
-
-
-    def validateInfo(self):
-        """Validate and normalise the info block.  This has either been parsed
-        by parseConfig, or received from xc through recreate and augmented by
-        the current store contents.
-        """
-        def defaultInfo(name, val):
-            if not self.infoIsSet(name):
-                self.info[name] = val()
-
-        try:
-            defaultInfo('name',         lambda: "Domain-%d" % self.domid)
-            defaultInfo('on_poweroff',  lambda: "destroy")
-            defaultInfo('on_reboot',    lambda: "restart")
-            defaultInfo('on_crash',     lambda: "restart")
-            defaultInfo('features',     lambda: "")
-            defaultInfo('cpu',          lambda: None)
-            defaultInfo('cpus',         lambda: [])
-            defaultInfo('cpu_cap',      lambda: 0)
-            defaultInfo('cpu_weight',   lambda: 256)
-
-            # some domains don't have a config file (e.g. dom0 )
-            # to set number of vcpus so we derive available cpus
-            # from max_vcpu_id which is present for running domains.
-            if not self.infoIsSet('vcpus') and self.infoIsSet('max_vcpu_id'):
-                avail = int(self.info['max_vcpu_id'])+1
-            else:
-                avail = int(1)
-
-            defaultInfo('vcpus',        lambda: avail)
-            defaultInfo('online_vcpus', lambda: self.info['vcpus'])
-            defaultInfo('max_vcpu_id',  lambda: self.info['vcpus']-1)
-            defaultInfo('vcpu_avail',   lambda: (1 << self.info['vcpus']) - 1)
-
-            defaultInfo('memory',       lambda: 0)
-            defaultInfo('shadow_memory', lambda: 0)
-            defaultInfo('maxmem',       lambda: 0)
-            defaultInfo('bootloader',   lambda: None)
-            defaultInfo('bootloader_args', lambda: None)            
-            defaultInfo('backend',      lambda: [])
-            defaultInfo('device',       lambda: [])
-            defaultInfo('image',        lambda: None)
-            defaultInfo('security',     lambda: None)
-
-            self.check_name(self.info['name'])
-
-            if isinstance(self.info['image'], str):
-                self.info['image'] = sxp.from_string(self.info['image'])
-
-            if isinstance(self.info['security'], str):
-                self.info['security'] = sxp.from_string(self.info['security'])
-
-            if self.info['memory'] == 0:
-                if self.infoIsSet('mem_kb'):
-                    self.info['memory'] = (self.info['mem_kb'] + 1023) / 1024
-            if self.info['memory'] <= 0:
-                raise VmError('Invalid memory size')
-
-            if self.info['maxmem'] < self.info['memory']:
-                self.info['maxmem'] = self.info['memory']
-
-            for (n, c) in self.info['device']:
-                if not n or not c or n not in controllerClasses:
-                    raise VmError('invalid device (%s, %s)' %
-                                  (str(n), str(c)))
-
-            for event in ['on_poweroff', 'on_reboot', 'on_crash']:
-                if self.info[event] not in restart_modes:
-                    raise VmError('invalid restart event: %s = %s' %
-                                  (event, str(self.info[event])))
-
-        except KeyError, exn:
-            log.exception(exn)
-            raise VmError('Unspecified domain detail: %s' % exn)
-
-
-    def readVm(self, *args):
+                devices.extend(map(lambda conf: (devclass, conf), devconfig))
+
+        if not self.info['device'] and devices is not None:
+            for device in devices:
+                self.info.device_add(device[0], cfg_sxp = device)
+
+    #
+    # Function to update xenstore /vm/*
+    #
+
+    def _readVm(self, *args):
         return xstransact.Read(self.vmpath, *args)
 
-    def writeVm(self, *args):
+    def _writeVm(self, *args):
         return xstransact.Write(self.vmpath, *args)
 
-    def removeVm(self, *args):
+    def _removeVm(self, *args):
         return xstransact.Remove(self.vmpath, *args)
 
-    def gatherVm(self, *args):
+    def _gatherVm(self, *args):
         return xstransact.Gather(self.vmpath, *args)
-
-
-    ## public:
 
     def storeVm(self, *args):
         return xstransact.Store(self.vmpath, *args)
 
-
-    ## private:
-
-    def readDom(self, *args):
+    #
+    # Function to update xenstore /dom/*
+    #
+
+    def _readDom(self, *args):
         return xstransact.Read(self.dompath, *args)
 
-    def writeDom(self, *args):
+    def _writeDom(self, *args):
         return xstransact.Write(self.dompath, *args)
 
-
-    ## public:
-
-    def removeDom(self, *args):
+    def _removeDom(self, *args):
         return xstransact.Remove(self.dompath, *args)
 
-    def recreateDom(self):
-        complete(self.dompath, lambda t: self._recreateDom(t))
-
-    def _recreateDom(self, t):
+    def _storeDom(self, *args):
+        return xstransact.Store(self.dompath, *args)
+
+    def _recreateDom(self):
+        complete(self.dompath, lambda t: self._recreateDomFunc(t))
+
+    def _recreateDomFunc(self, t):
         t.remove()
         t.mkdir()
         t.set_permissions({ 'dom' : self.domid })
 
-
-    ## private:
-
-    def storeDom(self, *args):
-        return xstransact.Store(self.dompath, *args)
-
-
-    ## public:
-
-    def completeRestore(self, store_mfn, console_mfn):
-
-        log.debug("XendDomainInfo.completeRestore")
-
-        self.store_mfn = store_mfn
-        self.console_mfn = console_mfn
-
-        self.introduceDomain()
-        self.storeDomDetails()
-        self.registerWatches()
-        self.refreshShutdown()
-
-        log.debug("XendDomainInfo.completeRestore done")
-
-
-    def storeVmDetails(self):
-        to_store = {}
-
-        for k in VM_STORE_ENTRIES:
-            if self.infoIsSet(k[0]):
-                to_store[k[0]] = str(self.info[k[0]])
-
-        if self.infoIsSet('image'):
-            to_store['image'] = sxp.to_string(self.info['image'])
-
-        if self.infoIsSet('security'):
-            security = self.info['security']
-            to_store['security'] = sxp.to_string(security)
-            for idx in range(0, len(security)):
-                if security[idx][0] == 'access_control':
-                    to_store['security/access_control'] = sxp.to_string([ 
security[idx][1] , security[idx][2] ])
-                    for aidx in range(1, len(security[idx])):
-                        if security[idx][aidx][0] == 'label':
-                            to_store['security/access_control/label'] = 
security[idx][aidx][1]
-                        if security[idx][aidx][0] == 'policy':
-                            to_store['security/access_control/policy'] = 
security[idx][aidx][1]
-                if security[idx][0] == 'ssidref':
-                    to_store['security/ssidref'] = str(security[idx][1])
-
-        if not self.readVm('xend/restart_count'):
-            to_store['xend/restart_count'] = str(0)
-
-        log.debug("Storing VM details: %s", to_store)
-
-        self.writeVm(to_store)
-        self.setVmPermissions()
-
-
-    def setVmPermissions(self):
-        """Allow the guest domain to read its UUID.  We don't allow it to
-        access any other entry, for security."""
-        xstransact.SetPermissions('%s/uuid' % self.vmpath,
-                                  { 'dom' : self.domid,
-                                    'read' : True,
-                                    'write' : False })
-
-
-    def storeDomDetails(self):
+    def _storeDomDetails(self):
         to_store = {
             'domid':              str(self.domid),
             'vm':                 self.vmpath,
@@ -746,16 +696,13 @@ class XendDomainInfo:
         f('store/port',       self.store_port)
         f('store/ring-ref',   self.store_mfn)
 
-        to_store.update(self.vcpuDomDetails())
+        to_store.update(self._vcpuDomDetails())
 
         log.debug("Storing domain details: %s", to_store)
 
-        self.writeDom(to_store)
-
-
-    ## private:
-
-    def vcpuDomDetails(self):
+        self._writeDom(to_store)
+
+    def _vcpuDomDetails(self):
         def availability(n):
             if self.info['vcpu_avail'] & (1 << n):
                 return 'online'
@@ -767,25 +714,80 @@ class XendDomainInfo:
             result["cpu/%d/availability" % v] = availability(v)
         return result
 
-
-    ## public:
-
-    def registerWatches(self):
+    #
+    # xenstore watches
+    #
+
+    def _registerWatches(self):
         """Register a watch on this VM's entries in the store, and the
         domain's control/shutdown node, so that when they are changed
         externally, we keep up to date.  This should only be called by {@link
         #create}, {@link #recreate}, or {@link #restore}, once the domain's
         details have been written, but before the new instance is returned."""
-        self.vmWatch = xswatch(self.vmpath, self.storeChanged)
+        self.vmWatch = xswatch(self.vmpath, self._storeChanged)
         self.shutdownWatch = xswatch(self.dompath + '/control/shutdown',
-                                     self.handleShutdownWatch)
+                                     self._handleShutdownWatch)
+
+    def _storeChanged(self, _):
+        log.trace("XendDomainInfo.storeChanged");
+
+        changed = False
+        
+        def f(x, y):
+            if y is not None and self.info[x[0]] != y:
+                self.info[x[0]] = y
+                changed = True
+
+        map(f, VM_CONFIG_PARAMS, self._readVMDetails(VM_CONFIG_PARAMS))
+
+        im = self._readVm('image')
+        current_im = self.info['image']
+        if (im is not None and
+            (current_im is None or sxp.to_string(current_im) != im)):
+            self.info['image'] = sxp.from_string(im)
+            changed = True
+
+        if changed:
+            # Update the domain section of the store, as this contains some
+            # parameters derived from the VM configuration.
+            self._storeDomDetails()
+
+        return 1
+
+    def _handleShutdownWatch(self, _):
+        log.debug('XendDomainInfo.handleShutdownWatch')
+        
+        reason = self._readDom('control/shutdown')
+
+        if reason and reason != 'suspend':
+            sst = self._readDom('xend/shutdown_start_time')
+            now = time.time()
+            if sst:
+                self.shutdownStartTime = float(sst)
+                timeout = float(sst) + SHUTDOWN_TIMEOUT - now
+            else:
+                self.shutdownStartTime = now
+                self._storeDom('xend/shutdown_start_time', now)
+                timeout = SHUTDOWN_TIMEOUT
+
+            log.trace(
+                "Scheduling refreshShutdown on domain %d in %ds.",
+                self.domid, timeout)
+            threading.Timer(timeout, self._refreshShutdown).start()
+
+        return True
+
+
+    #
+    # Public Attributes for the VM
+    #
 
 
     def getDomid(self):
         return self.domid
 
     def setName(self, name):
-        self.check_name(name)
+        self._checkName(name)
         self.info['name'] = name
         self.storeVm("name", name)
 
@@ -812,11 +814,10 @@ class XendDomainInfo:
     def getVCpuCount(self):
         return self.info['vcpus']
 
-
     def setVCpuCount(self, vcpus):
         self.info['vcpu_avail'] = (1 << vcpus) - 1
         self.storeVm('vcpu_avail', self.info['vcpu_avail'])
-        self.writeDom(self.vcpuDomDetails())
+        self._writeDom(self._vcpuDomDetails())
 
     def getLabel(self):
         return security.get_security_info(self.info, 'label')
@@ -834,16 +835,13 @@ class XendDomainInfo:
     def getWeight(self):
         return self.info['cpu_weight']
 
-    def endRestore(self):
-        self.setResume(False)
-
     def setResume(self, state):
         self.info['resume'] = state
 
     def getRestartCount(self):
-        return self.readVm('xend/restart_count')
-
-    def refreshShutdown(self, xeninfo = None):
+        return self._readVm('xend/restart_count')
+
+    def _refreshShutdown(self, xeninfo = None):
         # If set at the end of this method, a restart is required, with the
         # given reason.  This restart has to be done out of the scope of
         # refresh_shutdown_lock.
@@ -862,6 +860,7 @@ class XendDomainInfo:
                     # VM may have migrated to a different domain on this
                     # machine.
                     self.cleanupDomain()
+                    self._stateSet(DOM_STATE_HALTED)
                     return
 
             if xeninfo['dying']:
@@ -873,10 +872,11 @@ class XendDomainInfo:
                 # holding the pages, by calling cleanupDomain.  We can't
                 # clean up the VM, as above.
                 self.cleanupDomain()
+                self._stateSet(DOM_STATE_SHUTDOWN)
                 return
 
             elif xeninfo['crashed']:
-                if self.readDom('xend/shutdown_completed'):
+                if self._readDom('xend/shutdown_completed'):
                     # We've seen this shutdown already, but we are preserving
                     # the domain for debugging.  Leave it alone.
                     return
@@ -888,9 +888,11 @@ class XendDomainInfo:
                     self.dumpCore()
 
                 restart_reason = 'crash'
+                self._stateSet(DOM_STATE_HALTED)
 
             elif xeninfo['shutdown']:
-                if self.readDom('xend/shutdown_completed'):
+                self._stateSet(DOM_STATE_SHUTDOWN)
+                if self._readDom('xend/shutdown_completed'):
                     # We've seen this shutdown already, but we are preserving
                     # the domain for debugging.  Leave it alone.
                     return
@@ -901,15 +903,15 @@ class XendDomainInfo:
                     log.info('Domain has shutdown: name=%s id=%d reason=%s.',
                              self.info['name'], self.domid, reason)
 
-                    self.clearRestart()
+                    self._clearRestart()
 
                     if reason == 'suspend':
-                        self.state_set(STATE_DOM_SHUTDOWN)
+                        self._stateSet(DOM_STATE_SUSPENDED)
                         # Don't destroy the domain.  XendCheckpoint will do
                         # this once it has finished.  However, stop watching
                         # the VM path now, otherwise we will end up with one
                         # watch for the old domain, and one for the new.
-                        self.unwatchVm()
+                        self._unwatchVm()
                     elif reason in ['poweroff', 'reboot']:
                         restart_reason = reason
                     else:
@@ -923,7 +925,8 @@ class XendDomainInfo:
             else:
                 # Domain is alive.  If we are shutting it down, then check
                 # the timeout on that, and destroy it if necessary.
-
+                self._stateSet(DOM_STATE_RUNNING)
+                
                 if self.shutdownStartTime:
                     timeout = (SHUTDOWN_TIMEOUT - time.time() +
                                self.shutdownStartTime)
@@ -936,61 +939,133 @@ class XendDomainInfo:
             self.refresh_shutdown_lock.release()
 
         if restart_reason:
-            self.maybeRestart(restart_reason)
-
-
-    def handleShutdownWatch(self, _):
-        log.debug('XendDomainInfo.handleShutdownWatch')
-        
-        reason = self.readDom('control/shutdown')
-
-        if reason and reason != 'suspend':
-            sst = self.readDom('xend/shutdown_start_time')
-            now = time.time()
-            if sst:
-                self.shutdownStartTime = float(sst)
-                timeout = float(sst) + SHUTDOWN_TIMEOUT - now
-            else:
-                self.shutdownStartTime = now
-                self.storeDom('xend/shutdown_start_time', now)
-                timeout = SHUTDOWN_TIMEOUT
-
-            log.trace(
-                "Scheduling refreshShutdown on domain %d in %ds.",
-                self.domid, timeout)
-            threading.Timer(timeout, self.refreshShutdown).start()
-
-        return True
-
-
-    def shutdown(self, reason):
-        if not reason in shutdown_reasons.values():
-            raise XendError('Invalid reason: %s' % reason)
-        if self.domid == 0:
-            raise XendError("Can't specify Domain-0")
-        self.storeDom("control/shutdown", reason)
-
-
-    ## private:
-
-    def clearRestart(self):
-        self.removeDom("xend/shutdown_start_time")
-
-
-    def maybeRestart(self, reason):
+            self._maybeRestart(restart_reason)
+
+
+    #
+    # Restart functions - handling whether we come back up on shutdown.
+    #
+
+    def _clearRestart(self):
+        self._removeDom("xend/shutdown_start_time")
+
+
+    def _maybeRestart(self, reason):
         # Dispatch to the correct method based upon the configured on_{reason}
         # behaviour.
         {"destroy"        : self.destroy,
-         "restart"        : self.restart,
-         "preserve"       : self.preserve,
-         "rename-restart" : self.renameRestart}[self.info['on_' + reason]]()
-
-
-    def renameRestart(self):
-        self.restart(True)
-
-
-    def dumpCore(self,corefile=None):
+         "restart"        : self._restart,
+         "preserve"       : self._preserve,
+         "rename-restart" : self._renameRestart}[self.info['on_' + reason]]()
+
+
+    def _renameRestart(self):
+        self._restart(True)
+
+    def _restart(self, rename = False):
+        """Restart the domain after it has exited.
+
+        @param rename True if the old domain is to be renamed and preserved,
+        False if it is to be destroyed.
+        """
+        from xen.xend import XendDomain
+        
+        self._configureBootloader()
+        config = self.sxpr()
+
+        if self._infoIsSet('cpus') and len(self.info['cpus']) != 0:
+            config.append(['cpus', reduce(lambda x, y: str(x) + "," + str(y),
+                                          self.info['cpus'])])
+
+        if self._readVm(RESTART_IN_PROGRESS):
+            log.error('Xend failed during restart of domain %s.  '
+                      'Refusing to restart to avoid loops.',
+                      str(self.domid))
+            self.destroy()
+            return
+
+        self._writeVm(RESTART_IN_PROGRESS, 'True')
+
+        now = time.time()
+        rst = self._readVm('xend/previous_restart_time')
+        if rst:
+            rst = float(rst)
+            timeout = now - rst
+            if timeout < MINIMUM_RESTART_TIME:
+                log.error(
+                    'VM %s restarting too fast (%f seconds since the last '
+                    'restart).  Refusing to restart to avoid loops.',
+                    self.info['name'], timeout)
+                self.destroy()
+                return
+
+        self._writeVm('xend/previous_restart_time', str(now))
+
+        try:
+            if rename:
+                self._preserveForRestart()
+            else:
+                self._unwatchVm()
+                self.destroyDomain()
+
+            # new_dom's VM will be the same as this domain's VM, except where
+            # the rename flag has instructed us to call preserveForRestart.
+            # In that case, it is important that we remove the
+            # RESTART_IN_PROGRESS node from the new domain, not the old one,
+            # once the new one is available.
+
+            new_dom = None
+            try:
+                new_dom = XendDomain.instance().domain_create(config)
+                new_dom.unpause()
+                rst_cnt = self._readVm('xend/restart_count')
+                rst_cnt = int(rst_cnt) + 1
+                self._writeVm('xend/restart_count', str(rst_cnt))
+                new_dom._removeVm(RESTART_IN_PROGRESS)
+            except:
+                if new_dom:
+                    new_dom._removeVm(RESTART_IN_PROGRESS)
+                    new_dom.destroy()
+                else:
+                    self._removeVm(RESTART_IN_PROGRESS)
+                raise
+        except:
+            log.exception('Failed to restart domain %s.', str(self.domid))
+
+
+    def _preserveForRestart(self):
+        """Preserve a domain that has been shut down, by giving it a new UUID,
+        cloning the VM details, and giving it a new name.  This allows us to
+        keep this domain for debugging, but restart a new one in its place
+        preserving the restart semantics (name and UUID preserved).
+        """
+        
+        new_uuid = uuid.createString()
+        new_name = 'Domain-%s' % new_uuid
+        log.info("Renaming dead domain %s (%d, %s) to %s (%s).",
+                 self.info['name'], self.domid, self.info['uuid'],
+                 new_name, new_uuid)
+        self._unwatchVm()
+        self._releaseDevices()
+        self.info['name'] = new_name
+        self.info['uuid'] = new_uuid
+        self.vmpath = XS_VMROOT + new_uuid
+        self._storeVmDetails()
+        self._preserve()
+
+
+    def _preserve(self):
+        log.info("Preserving dead domain %s (%d).", self.info['name'],
+                 self.domid)
+        self._unwatchVm()
+        self._storeDom('xend/shutdown_completed', 'True')
+        self._stateSet(DOM_STATE_HALTED)
+
+    #
+    # Debugging ..
+    #
+
+    def dumpCore(self, corefile = None):
         """Create a core dump for this domain.  Nothrow guarantee."""
         
         try:
@@ -1011,259 +1086,121 @@ class XendDomainInfo:
                           self.domid, self.info['name'])
             raise XendError("Failed to dump core: %s" %  str(ex))
 
-    ## public:
-
-    def setMemoryTarget(self, target):
-        """Set the memory target of this domain.
-        @param target In MiB.
-        """
-        if target <= 0:
-            raise XendError('Invalid memory size')
-        
-        log.debug("Setting memory target of domain %s (%d) to %d MiB.",
-                  self.info['name'], self.domid, target)
-        
-        self.info['memory'] = target
-        self.storeVm("memory", target)
-        self.storeDom("memory/target", target << 10)
-
-
-    def update(self, info = None):
-        """Update with info from xc.domain_getinfo().
-        """
-
-        log.trace("XendDomainInfo.update(%s) on domain %d", info, self.domid)
-        if not info:
-            info = dom_get(self.domid)
-            if not info:
-                return
-            
-        #manually update ssidref / security fields
-        if security.on() and info.has_key('ssidref'):
-            if (info['ssidref'] != 0) and self.info.has_key('security'):
-                security_field = self.info['security']
-                if not security_field:
-                    #create new security element
-                    self.info.update({'security': [['ssidref', 
str(info['ssidref'])]]})
-            #ssidref field not used any longer
-        info.pop('ssidref')
-
-        self.info.update(info)
-        self.validateInfo()
-        self.refreshShutdown(info)
-
-        log.trace("XendDomainInfo.update done on domain %d: %s", self.domid,
-                  self.info)
-
-
-    ## private:
-
-    def state_set(self, state):
-        self.state_updated.acquire()
-        try:
-            if self.state != state:
-                self.state = state
-                self.state_updated.notifyAll()
-        finally:
-            self.state_updated.release()
-
-
-    ## public:
-
-    def waitForShutdown(self):
-        self.state_updated.acquire()
-        try:
-            while self.state == STATE_DOM_OK:
-                self.state_updated.wait()
-        finally:
-            self.state_updated.release()
-
-
-    def __str__(self):
-        s = "<domain"
-        s += " id=" + str(self.domid)
-        s += " name=" + self.info['name']
-        s += " memory=" + str(self.info['memory'])
-        s += ">"
-        return s
-
-    __repr__ = __str__
-
-
-    ## private:
-
-    def createDevice(self, deviceClass, devconfig):
-        return self.getDeviceController(deviceClass).createDevice(devconfig)
-
-
-    def waitForDevices_(self, deviceClass):
-        return self.getDeviceController(deviceClass).waitForDevices()
-
-
-    def waitForDevice(self, deviceClass, devid):
+    #
+    # Device creation/deletion functions
+    #
+
+    def _createDevice(self, deviceClass, devConfig):
+        return self.getDeviceController(deviceClass).createDevice(devConfig)
+
+    def _waitForDevice(self, deviceClass, devid):
         return self.getDeviceController(deviceClass).waitForDevice(devid)
 
-
-    def reconfigureDevice(self, deviceClass, devid, devconfig):
+    def _reconfigureDevice(self, deviceClass, devid, devconfig):
         return self.getDeviceController(deviceClass).reconfigureDevice(
             devid, devconfig)
 
-
-    ## public:
-
-    def destroyDevice(self, deviceClass, devid):
-        if type(devid) is str:
-            devicePath = '%s/device/%s' % (self.dompath, deviceClass)
-            for entry in xstransact.List(devicePath):
-                backend = xstransact.Read('%s/%s' % (devicePath, entry),
-                                          "backend")
-                devName = xstransact.Read(backend, "dev")
-                if devName == devid:
-                    # We found the integer matching our devid, use it instead
-                    devid = entry
-                    break
-        return self.getDeviceController(deviceClass).destroyDevice(devid)
-
-
-    def getDeviceSxprs(self, deviceClass):
-        return self.getDeviceController(deviceClass).sxprs()
+    def _createDevices(self):
+        """Create the devices for a vm.
+
+        @raise: VmError for invalid devices
+        """
+        for (devclass, config) in self.info.all_devices_sxpr():
+            log.info("createDevice: %s : %s" % (devclass, config))
+            self._createDevice(devclass, config)
+
+        if self.image:
+            self.image.createDeviceModel()
+
+    def _releaseDevices(self):
+        """Release all domain's devices.  Nothrow guarantee."""
+
+        while True:
+            t = xstransact("%s/device" % self.dompath)
+            for devclass in XendDevices.valid_devices():
+                for dev in t.list(devclass):
+                    try:
+                        t.remove(dev)
+                    except:
+                        # Log and swallow any exceptions in removal --
+                        # there's nothing more we can do.
+                        log.exception(
+                           "Device release failed: %s; %s; %s",
+                           self.info['name'], devclass, dev)
+            if t.commit():
+                break
+
+    def getDeviceController(self, name):
+        """Get the device controller for this domain, and if it
+        doesn't exist, create it.
+
+        @param name: device class name
+        @type name: string
+        @rtype: subclass of DevController
+        """
+        if name not in self._deviceControllers:
+            devController = XendDevices.make_controller(name, self)
+            if not devController:
+                raise XendError("Unknown device type: %s" % name)
+            self._deviceControllers[name] = devController
+    
+        return self._deviceControllers[name]
+
+    #
+    # Migration functions (public)
+    # 
+
+    def testMigrateDevices(self, network, dst):
+        """ Notify all device about intention of migration
+        @raise: XendError for a device that cannot be migrated
+        """
+        for (n, c) in self.info.all_devices_sxpr():
+            rc = self.migrateDevice(n, c, network, dst, DEV_MIGRATE_TEST)
+            if rc != 0:
+                raise XendError("Device of type '%s' refuses migration." % n)
+
+    def migrateDevices(self, network, dst, step, domName=''):
+        """Notify the devices about migration
+        """
+        ctr = 0
+        try:
+            for (dev_type, dev_conf) in self.info.all_devices_sxpr():
+                self.migrateDevice(dev_type, dev_conf, network, dst,
+                                   step, domName)
+                ctr = ctr + 1
+        except:
+            for dev_type, dev_conf in self.info.all_devices_sxpr():
+                if ctr == 0:
+                    step = step - 1
+                ctr = ctr - 1
+                self._recoverMigrateDevice(dev_type, dev_conf, network,
+                                           dst, step, domName)
+            raise
+
+    def migrateDevice(self, deviceClass, deviceConfig, network, dst,
+                      step, domName=''):
+        return self.getDeviceController(deviceClass).migrate(deviceConfig,
+                                        network, dst, step, domName)
+
+    def _recoverMigrateDevice(self, deviceClass, deviceConfig, network,
+                             dst, step, domName=''):
+        return self.getDeviceController(deviceClass).recover_migrate(
+                     deviceConfig, network, dst, step, domName)
 
 
     ## private:
 
-    def getDeviceConfigurations(self, deviceClass):
-        return self.getDeviceController(deviceClass).configurations()
-
-
-    def getDeviceController(self, name):
-        if name not in controllerClasses:
-            raise XendError("unknown device type: " + str(name))
-
-        return controllerClasses[name](self)
-
-
-    ## public:
-
-    def sxpr(self):
-        sxpr = ['domain',
-                ['domid',   self.domid]]
-
-        for e in ROUNDTRIPPING_CONFIG_ENTRIES:
-            if self.infoIsSet(e[0]):
-                sxpr.append([e[0], self.info[e[0]]])
-        
-        if self.infoIsSet('image'):
-            sxpr.append(['image', self.info['image']])
-
-        if self.infoIsSet('security'):
-            sxpr.append(['security', self.info['security']])
-
-        for cls in controllerClasses:
-            for config in self.getDeviceConfigurations(cls):
-                sxpr.append(['device', config])
-
-        def stateChar(name):
-            if name in self.info:
-                if self.info[name]:
-                    return name[0]
-                else:
-                    return '-'
-            else:
-                return '?'
-
-        state = reduce(
-            lambda x, y: x + y,
-            map(stateChar,
-                ['running', 'blocked', 'paused', 'shutdown', 'crashed',
-                 'dying']))
-
-        sxpr.append(['state', state])
-        if self.infoIsSet('shutdown'):
-            reason = shutdown_reason(self.info['shutdown_reason'])
-            sxpr.append(['shutdown_reason', reason])
-        if self.infoIsSet('cpu_time'):
-            sxpr.append(['cpu_time', self.info['cpu_time']/1e9])
-        sxpr.append(['online_vcpus', self.info['online_vcpus']])
-            
-        if self.infoIsSet('start_time'):
-            up_time =  time.time() - self.info['start_time']
-            sxpr.append(['up_time', str(up_time) ])
-            sxpr.append(['start_time', str(self.info['start_time']) ])
-
-        if self.store_mfn:
-            sxpr.append(['store_mfn', self.store_mfn])
-        if self.console_mfn:
-            sxpr.append(['console_mfn', self.console_mfn])
-
-        return sxpr
-
-
-    def getVCPUInfo(self):
-        try:
-            # We include the domain name and ID, to help xm.
-            sxpr = ['domain',
-                    ['domid',      self.domid],
-                    ['name',       self.info['name']],
-                    ['vcpu_count', self.info['online_vcpus']]]
-
-            for i in range(0, self.info['max_vcpu_id']+1):
-                info = xc.vcpu_getinfo(self.domid, i)
-
-                sxpr.append(['vcpu',
-                             ['number',   i],
-                             ['online',   info['online']],
-                             ['blocked',  info['blocked']],
-                             ['running',  info['running']],
-                             ['cpu_time', info['cpu_time'] / 1e9],
-                             ['cpu',      info['cpu']],
-                             ['cpumap',   info['cpumap']]])
-
-            return sxpr
-
-        except RuntimeError, exn:
-            raise XendError(str(exn))
-                      
-
-    ## private:
-
-    def check_name(self, name):
-        """Check if a vm name is valid. Valid names contain alphabetic 
characters,
-        digits, or characters in '_-.:/+'.
-        The same name cannot be used for more than one vm at the same time.
-
-        @param name: name
-        @raise: VmError if invalid
-        """
-        if name is None or name == '':
-            raise VmError('missing vm name')
-        for c in name:
-            if c in string.digits: continue
-            if c in '_-.:/+': continue
-            if c in string.ascii_letters: continue
-            raise VmError('invalid vm name')
-
-        dominfo = domain_by_name(name)
-        if not dominfo:
-            return
-        if self.domid is None:
-            raise VmError("VM name '%s' already in use by domain %d" %
-                          (name, dominfo.domid))
-        if dominfo.domid != self.domid:
-            raise VmError("VM name '%s' is used in both domains %d and %d" %
-                          (name, self.domid, dominfo.domid))
-
-
-    def construct(self):
+    def _constructDomain(self):
         """Construct the domain.
 
         @raise: VmError on error
         """
 
-        log.debug('XendDomainInfo.construct: %s',
-                  self.domid)
+        log.debug('XendDomainInfo.constructDomain')
 
         self.domid = xc.domain_create(
-            dom = 0, ssidref = security.get_security_info(self.info, 
'ssidref'),
+            domid = 0,
+            ssidref = security.get_security_info(self.info, 'ssidref'),
             handle = uuid.fromString(self.info['uuid']))
 
         if self.domid < 0:
@@ -1272,13 +1209,13 @@ class XendDomainInfo:
 
         self.dompath = GetDomainPath(self.domid)
 
-        self.recreateDom()
+        self._recreateDom()
 
         # Set maximum number of vcpus in domain
         xc.domain_max_vcpus(self.domid, int(self.info['vcpus']))
 
 
-    def introduceDomain(self):
+    def _introduceDomain(self):
         assert self.domid is not None
         assert self.store_mfn is not None
         assert self.store_port is not None
@@ -1289,25 +1226,25 @@ class XendDomainInfo:
             raise XendError(str(exn))
 
 
-    def initDomain(self):
+    def _initDomain(self):
         log.debug('XendDomainInfo.initDomain: %s %s',
                   self.domid,
                   self.info['cpu_weight'])
 
         # if we have a boot loader but no image, then we need to set things
         # up by running the boot loader non-interactively
-        if self.infoIsSet('bootloader') and not self.infoIsSet('image'):
-            self.configure_bootloader()
-
-        if not self.infoIsSet('image'):
+        if self._infoIsSet('bootloader') and not self._infoIsSet('image'):
+            self._configureBootloader()
+
+        if not self._infoIsSet('image'):
             raise VmError('Missing image in configuration')
 
         try:
             self.image = image.create(self,
                                       self.info['image'],
-                                      self.info['device'])
-
-            localtime = self.info['localtime']
+                                      self.info.all_devices_sxpr())
+
+            localtime = self.info.get('localtime', 0)
             if localtime is not None and localtime == 1:
                 xc.domain_set_time_offset(self.domid)
 
@@ -1352,7 +1289,7 @@ class XendDomainInfo:
             xc.domain_memory_increase_reservation(self.domid, reservation, 0,
                                                   0)
 
-            self.createChannels()
+            self._createChannels()
 
             channel_details = self.image.createImage()
 
@@ -1360,20 +1297,20 @@ class XendDomainInfo:
             if 'console_mfn' in channel_details:
                 self.console_mfn = channel_details['console_mfn']
 
-            self.introduceDomain()
-
-            self.createDevices()
+            self._introduceDomain()
+
+            self._createDevices()
 
             if self.info['bootloader']:
                 self.image.cleanupBootloading()
 
             self.info['start_time'] = time.time()
 
+            self._stateSet(DOM_STATE_RUNNING)
         except RuntimeError, exn:
+            log.exception("XendDomainInfo.initDomain: exception occurred")
             raise VmError(str(exn))
 
-
-    ## public:
 
     def cleanupDomain(self):
         """Cleanup domain resources; release devices.  Idempotent.  Nothrow
@@ -1383,7 +1320,7 @@ class XendDomainInfo:
         try:
             self.unwatchShutdown()
 
-            self.release_devices()
+            self._releaseDevices()
 
             if self.image:
                 try:
@@ -1394,46 +1331,15 @@ class XendDomainInfo:
                 self.image = None
 
             try:
-                self.removeDom()
+                self._removeDom()
             except:
                 log.exception("Removing domain path failed.")
 
-            try:
-                if not self.info['name'].startswith(ZOMBIE_PREFIX):
-                    self.info['name'] = ZOMBIE_PREFIX + self.info['name']
-            except:
-                log.exception("Renaming Zombie failed.")
-
-            self.state_set(STATE_DOM_SHUTDOWN)
+            self.info['dying'] = 0
+            self.info['shutdown'] = 0
+            self._stateSet(DOM_STATE_HALTED)
         finally:
             self.refresh_shutdown_lock.release()
-
-
-    def cleanupVm(self):
-        """Cleanup VM resources.  Idempotent.  Nothrow guarantee."""
-
-        self.unwatchVm()
-
-        try:
-            self.removeVm()
-        except:
-            log.exception("Removing VM path failed.")
-
-
-    ## private:
-
-    def unwatchVm(self):
-        """Remove the watch on the VM path, if any.  Idempotent.  Nothrow
-        guarantee."""
-
-        try:
-            try:
-                if self.vmWatch:
-                    self.vmWatch.unwatch()
-            finally:
-                self.vmWatch = None
-        except:
-            log.exception("Unwatching VM path failed.")
 
 
     def unwatchShutdown(self):
@@ -1450,311 +1356,97 @@ class XendDomainInfo:
         except:
             log.exception("Unwatching control/shutdown failed.")
 
-
-    ## public:
+    def waitForShutdown(self):
+        self.state_updated.acquire()
+        try:
+            while self.state in (DOM_STATE_RUNNING,):
+                self.state_updated.wait()
+        finally:
+            self.state_updated.release()
+
+
+    #
+    # TODO: recategorise - called from XendCheckpoint
+    # 
+
+    def completeRestore(self, store_mfn, console_mfn):
+
+        log.debug("XendDomainInfo.completeRestore")
+
+        self.store_mfn = store_mfn
+        self.console_mfn = console_mfn
+
+        self._introduceDomain()
+        self._storeDomDetails()
+        self._registerWatches()
+        self._refreshShutdown()
+
+        log.debug("XendDomainInfo.completeRestore done")
+
+
+    def _endRestore(self):
+        self.setResume(False)
+
+    #
+    # VM Destroy
+    # 
 
     def destroy(self):
         """Cleanup VM and destroy domain.  Nothrow guarantee."""
 
-        log.debug("XendDomainInfo.destroy: domid=%s", self.domid)
-
-        self.cleanupVm()
+        log.debug("XendDomainInfo.destroy: domid=%s", str(self.domid))
+
+        self._cleanupVm()
         if self.dompath is not None:
-                self.destroyDomain()
+            self.destroyDomain()
 
 
     def destroyDomain(self):
-        log.debug("XendDomainInfo.destroyDomain(%s)", self.domid)
+        log.debug("XendDomainInfo.destroyDomain(%s)", str(self.domid))
 
         try:
             if self.domid is not None:
                 xc.domain_destroy(self.domid)
+                self.domid = None
+                for state in DOM_STATES_OLD:
+                    self.info[state] = 0
         except:
             log.exception("XendDomainInfo.destroy: xc.domain_destroy failed.")
 
         self.cleanupDomain()
 
 
-    ## private:
-
-    def release_devices(self):
-        """Release all domain's devices.  Nothrow guarantee."""
-
-        while True:
-            t = xstransact("%s/device" % self.dompath)
-            for n in controllerClasses.keys():
-                for d in t.list(n):
-                    try:
-                        t.remove(d)
-                    except:
-                        # Log and swallow any exceptions in removal --
-                        # there's nothing more we can do.
-                        log.exception(
-                           "Device release failed: %s; %s; %s",
-                           self.info['name'], n, d)
-            if t.commit():
-                break
-
-
-    def createChannels(self):
+    #
+    # Channels for xenstore and console
+    # 
+
+    def _createChannels(self):
         """Create the channels to the domain.
         """
-        self.store_port = self.createChannel()
-        self.console_port = self.createChannel()
-
-
-    def createChannel(self):
+        self.store_port = self._createChannel()
+        self.console_port = self._createChannel()
+
+
+    def _createChannel(self):
         """Create an event channel to the domain.
         """
         try:
-            return xc.evtchn_alloc_unbound(dom=self.domid, remote_dom=0)
+            return xc.evtchn_alloc_unbound(domid=self.domid, remote_dom=0)
         except:
             log.exception("Exception in alloc_unbound(%d)", self.domid)
             raise
 
-
-    ## public:
-
-    def createDevices(self):
-        """Create the devices for a vm.
-
-        @raise: VmError for invalid devices
-        """
-
-        for (n, c) in self.info['device']:
-            self.createDevice(n, c)
-
-        if self.image:
-            self.image.createDeviceModel()
-
-    ## public:
-
-    def checkLiveMigrateMemory(self):
-        """ Make sure there's enough memory to migrate this domain """
-        overhead_kb = 0
-        if arch.type == "x86":
-            # 1MB per vcpu plus 4Kib/Mib of RAM.  This is higher than 
-            # the minimum that Xen would allocate if no value were given.
-            overhead_kb = self.info['vcpus'] * 1024 + self.info['maxmem'] * 4
-            overhead_kb = ((overhead_kb + 1023) / 1024) * 1024
-            # The domain might already have some shadow memory
-            overhead_kb -= xc.shadow_mem_control(self.domid) * 1024
-        if overhead_kb > 0:
-            balloon.free(overhead_kb)
-
-    def testMigrateDevices(self, network, dst):
-        """ Notify all device about intention of migration
-        @raise: XendError for a device that cannot be migrated
-        """
-        for (n, c) in self.info['device']:
-            rc = self.migrateDevice(n, c, network, dst, DEV_MIGRATE_TEST)
-            if rc != 0:
-                raise XendError("Device of type '%s' refuses migration." % n)
-
-    def testDeviceComplete(self):
-        """ For Block IO migration safety we must ensure that
-        the device has shutdown correctly, i.e. all blocks are
-        flushed to disk
-        """
-        start = time.time()
-        while True:
-            test = 0
-            diff = time.time() - start
-            for i in self.getDeviceController('vbd').deviceIDs():
-                test = 1
-                log.info("Dev %s still active, looping...", i)
-                time.sleep(0.1)
-                
-            if test == 0:
-                break
-            if diff >= MIGRATE_TIMEOUT:
-                log.info("Dev still active but hit max loop timeout")
-                break
-
-    def migrateDevices(self, network, dst, step, domName=''):
-        """Notify the devices about migration
-        """
-        ctr = 0
-        try:
-            for (n, c) in self.info['device']:
-                self.migrateDevice(n, c, network, dst, step, domName)
-                ctr = ctr + 1
-        except:
-            for (n, c) in self.info['device']:
-                if ctr == 0:
-                    step = step - 1
-                ctr = ctr - 1
-                self.recoverMigrateDevice(n, c, network, dst, step, domName)
-            raise
-
-    def migrateDevice(self, deviceClass, deviceConfig, network, dst,
-                      step, domName=''):
-        return self.getDeviceController(deviceClass).migrate(deviceConfig,
-                                        network, dst, step, domName)
-
-    def recoverMigrateDevice(self, deviceClass, deviceConfig, network,
-                             dst, step, domName=''):
-        return self.getDeviceController(deviceClass).recover_migrate(
-                     deviceConfig, network, dst, step, domName)
-
-    def waitForDevices(self):
-        """Wait for this domain's configured devices to connect.
-
-        @raise: VmError if any device fails to initialise.
-        """
-        for c in controllerClasses:
-            self.waitForDevices_(c)
-
-
-    def device_create(self, dev_config):
-        """Create a new device.
-
-        @param dev_config: device configuration
-        """
-        dev_type = sxp.name(dev_config)
-        devid = self.createDevice(dev_type, dev_config)
-        self.waitForDevice(dev_type, devid)
-        self.info['device'].append((dev_type, dev_config))
-        return self.getDeviceController(dev_type).sxpr(devid)
-
-
-    def device_configure(self, dev_config):
-        """Configure an existing device.
-        @param dev_config: device configuration
-        """
-        deviceClass = sxp.name(dev_config)
-        self.reconfigureDevice(deviceClass, None, dev_config)
-
-
-    def pause(self):
-        xc.domain_pause(self.domid)
-
-
-    def unpause(self):
-        xc.domain_unpause(self.domid)
-
-
-    ## private:
-
-    def restart(self, rename = False):
-        """Restart the domain after it has exited.
-
-        @param rename True if the old domain is to be renamed and preserved,
-        False if it is to be destroyed.
-        """
-
-        self.configure_bootloader()
-        config = self.sxpr()
-
-        if self.infoIsSet('cpus') and len(self.info['cpus']) != 0:
-            config.append(['cpus', reduce(lambda x, y: str(x) + "," + str(y),
-                                          self.info['cpus'])])
-
-        if self.readVm(RESTART_IN_PROGRESS):
-            log.error('Xend failed during restart of domain %d.  '
-                      'Refusing to restart to avoid loops.',
-                      self.domid)
-            self.destroy()
-            return
-
-        self.writeVm(RESTART_IN_PROGRESS, 'True')
-
-        now = time.time()
-        rst = self.readVm('xend/previous_restart_time')
-        if rst:
-            rst = float(rst)
-            timeout = now - rst
-            if timeout < MINIMUM_RESTART_TIME:
-                log.error(
-                    'VM %s restarting too fast (%f seconds since the last '
-                    'restart).  Refusing to restart to avoid loops.',
-                    self.info['name'], timeout)
-                self.destroy()
-                return
-
-        self.writeVm('xend/previous_restart_time', str(now))
-
-        try:
-            if rename:
-                self.preserveForRestart()
-            else:
-                self.unwatchVm()
-                self.destroyDomain()
-
-            # new_dom's VM will be the same as this domain's VM, except where
-            # the rename flag has instructed us to call preserveForRestart.
-            # In that case, it is important that we remove the
-            # RESTART_IN_PROGRESS node from the new domain, not the old one,
-            # once the new one is available.
-
-            new_dom = None
-            try:
-                new_dom = XendDomain.instance().domain_create(config)
-                new_dom.unpause()
-                rst_cnt = self.readVm('xend/restart_count')
-                rst_cnt = int(rst_cnt) + 1
-                self.writeVm('xend/restart_count', str(rst_cnt))
-                new_dom.removeVm(RESTART_IN_PROGRESS)
-            except:
-                if new_dom:
-                    new_dom.removeVm(RESTART_IN_PROGRESS)
-                    new_dom.destroy()
-                else:
-                    self.removeVm(RESTART_IN_PROGRESS)
-                raise
-        except:
-            log.exception('Failed to restart domain %d.', self.domid)
-
-
-    def preserveForRestart(self):
-        """Preserve a domain that has been shut down, by giving it a new UUID,
-        cloning the VM details, and giving it a new name.  This allows us to
-        keep this domain for debugging, but restart a new one in its place
-        preserving the restart semantics (name and UUID preserved).
-        """
-        
-        new_name = self.generateUniqueName()
-        new_uuid = uuid.toString(uuid.create())
-        log.info("Renaming dead domain %s (%d, %s) to %s (%s).",
-                 self.info['name'], self.domid, self.info['uuid'],
-                 new_name, new_uuid)
-        self.unwatchVm()
-        self.release_devices()
-        self.info['name'] = new_name
-        self.info['uuid'] = new_uuid
-        self.vmpath = XendDomain.VMROOT + new_uuid
-        self.storeVmDetails()
-        self.preserve()
-
-
-    def preserve(self):
-        log.info("Preserving dead domain %s (%d).", self.info['name'],
-                 self.domid)
-        self.unwatchVm()
-        self.storeDom('xend/shutdown_completed', 'True')
-        self.state_set(STATE_DOM_SHUTDOWN)
-
-
-    # private:
-
-    def generateUniqueName(self):
-        n = 1
-        while True:
-            name = "%s-%d" % (self.info['name'], n)
-            try:
-                self.check_name(name)
-                return name
-            except VmError:
-                n += 1
-
-
-    def configure_bootloader(self):
+    #
+    # Bootloader configuration
+    #
+
+    def _configureBootloader(self):
         """Run the bootloader if we're configured to do so."""
         if not self.info['bootloader']:
             return
         blcfg = None
         # FIXME: this assumes that we want to use the first disk device
-        for (n,c) in self.info['device']:
+        for (n, c) in self.info.all_devices_sxpr():
             if not n or not c or not(n in ["vbd", "tap"]):
                 continue
             disk = sxp.child_value(c, "uname")
@@ -1771,38 +1463,492 @@ class XendDomainInfo:
             raise VmError(msg)
         self.info['image'] = blcfg
 
-
-    def send_sysrq(self, key):
-        asserts.isCharConvertible(key)
-
-        self.storeDom("control/sysrq", '%c' % key)
-
-
-    def infoIsSet(self, name):
+    # 
+    # VM Functions
+    #
+
+    def _readVMDetails(self, params):
+        """Read the specified parameters from the store.
+        """
+        try:
+            return self._gatherVm(*params)
+        except ValueError:
+            # One of the int/float entries in params has a corresponding store
+            # entry that is invalid.  We recover, because older versions of
+            # Xend may have put the entry there (memory/target, for example),
+            # but this is in general a bad situation to have reached.
+            log.exception(
+                "Store corrupted at %s!  Domain %d's configuration may be "
+                "affected.", self.vmpath, self.domid)
+            return []
+
+    def _cleanupVm(self):
+        """Cleanup VM resources.  Idempotent.  Nothrow guarantee."""
+
+        self._unwatchVm()
+
+        try:
+            self._removeVm()
+        except:
+            log.exception("Removing VM path failed.")
+
+
+    def checkLiveMigrateMemory(self):
+        """ Make sure there's enough memory to migrate this domain """
+        overhead_kb = 0
+        if arch.type == "x86":
+            # 1MB per vcpu plus 4Kib/Mib of RAM.  This is higher than 
+            # the minimum that Xen would allocate if no value were given.
+            overhead_kb = self.info['vcpus'] * 1024 + self.info['maxmem'] * 4
+            overhead_kb = ((overhead_kb + 1023) / 1024) * 1024
+            # The domain might already have some shadow memory
+            overhead_kb -= xc.shadow_mem_control(self.domid) * 1024
+        if overhead_kb > 0:
+            balloon.free(overhead_kb)
+
+    def _unwatchVm(self):
+        """Remove the watch on the VM path, if any.  Idempotent.  Nothrow
+        guarantee."""
+
+    def testDeviceComplete(self):
+        """ For Block IO migration safety we must ensure that
+        the device has shutdown correctly, i.e. all blocks are
+        flushed to disk
+        """
+        start = time.time()
+        while True:
+            test = 0
+            diff = time.time() - start
+            for i in self.getDeviceController('vbd').deviceIDs():
+                test = 1
+                log.info("Dev %s still active, looping...", i)
+                time.sleep(0.1)
+                
+            if test == 0:
+                break
+            if diff >= MIGRATE_TIMEOUT:
+                log.info("Dev still active but hit max loop timeout")
+                break
+
+    def _storeVmDetails(self):
+        to_store = {}
+
+        for k in VM_STORE_ENTRIES:
+            if self._infoIsSet(k[0]):
+                to_store[k[0]] = str(self.info[k[0]])
+
+        if self._infoIsSet('image'):
+            to_store['image'] = sxp.to_string(self.info['image'])
+
+        if self._infoIsSet('security'):
+            secinfo = self.info['security']
+            to_store['security'] = sxp.to_string(secinfo)
+            for idx in range(0, len(secinfo)):
+                if secinfo[idx][0] == 'access_control':
+                    to_store['security/access_control'] = sxp.to_string(
+                        [secinfo[idx][1], secinfo[idx][2]])
+                    for aidx in range(1, len(secinfo[idx])):
+                        if secinfo[idx][aidx][0] == 'label':
+                            to_store['security/access_control/label'] = \
+                                secinfo[idx][aidx][1]
+                        if secinfo[idx][aidx][0] == 'policy':
+                            to_store['security/access_control/policy'] = \
+                                secinfo[idx][aidx][1]
+                if secinfo[idx][0] == 'ssidref':
+                    to_store['security/ssidref'] = str(secinfo[idx][1])
+
+
+        if not self._readVm('xend/restart_count'):
+            to_store['xend/restart_count'] = str(0)
+
+        log.debug("Storing VM details: %s", to_store)
+
+        self._writeVm(to_store)
+        self._setVmPermissions()
+
+
+    def _setVmPermissions(self):
+        """Allow the guest domain to read its UUID.  We don't allow it to
+        access any other entry, for security."""
+        xstransact.SetPermissions('%s/uuid' % self.vmpath,
+                                  { 'dom' : self.domid,
+                                    'read' : True,
+                                    'write' : False })
+
+    #
+    # Utility functions
+    #
+
+    def _stateSet(self, state):
+        self.state_updated.acquire()
+        try:
+            if self.state != state:
+                self.state = state
+                self.state_updated.notifyAll()
+        finally:
+            self.state_updated.release()
+
+    def _infoIsSet(self, name):
         return name in self.info and self.info[name] is not None
 
-
-#============================================================================
-# Register device controllers and their device config types.
-
-"""A map from device-class names to the subclass of DevController that
-implements the device control specific to that device-class."""
-controllerClasses = {}
-
-def addControllerClass(device_class, cls):
-    """Register a subclass of DevController to handle the named device-class.
+    def _checkName(self, name):
+        """Check if a vm name is valid. Valid names contain alphabetic
+        characters, digits, or characters in '_-.:/+'.
+        The same name cannot be used for more than one vm at the same time.
+
+        @param name: name
+        @raise: VmError if invalid
+        """
+        from xen.xend import XendDomain
+        
+        if name is None or name == '':
+            raise VmError('Missing VM Name')
+
+        if not re.search(r'^[A-Za-z0-9_\-\.\:\/\+]+$', name):
+            raise VmError('Invalid VM Name')
+
+        dom =  XendDomain.instance().domain_lookup_nr(name)
+        if dom and dom != self:
+            raise VmError("VM name '%s' already exists" % name)
+        
+
+    def update(self, info = None, refresh = True):
+        """Update with info from xc.domain_getinfo().
+        """
+
+        log.trace("XendDomainInfo.update(%s) on domain %s", info,
+                  str(self.domid))
+        
+        if not info:
+            info = dom_get(self.domid)
+            if not info:
+                return
+            
+        #manually update ssidref / security fields
+        if security.on() and info.has_key('ssidref'):
+            if (info['ssidref'] != 0) and self.info.has_key('security'):
+                security_field = self.info['security']
+                if not security_field:
+                    #create new security element
+                    self.info.update({'security':
+                                      [['ssidref', str(info['ssidref'])]]})
+        #ssidref field not used any longer
+        if 'ssidref' in info:
+            info.pop('ssidref')
+
+        # make sure state is reset for info
+        # TODO: we should eventually get rid of old_dom_states
+
+        self.info.update(info)
+        self.info.validate()
+
+        if refresh:
+            self._refreshShutdown(info)
+
+        log.trace("XendDomainInfo.update done on domain %s: %s",
+                  str(self.domid), self.info)
+
+    def sxpr(self, ignore_devices = False):
+        return self.info.get_sxp(domain = self,
+                                 ignore_devices = ignore_devices)
+
+    # Xen API
+    # ----------------------------------------------------------------
+
+    def get_uuid(self):
+        return self.info['uuid']
+    def get_memory_static_max(self):
+        return self.info['maxmem']
+    def get_memory_static_min(self):
+        return self.info['memory']
+    def get_vcpus_policy(self):
+        sched_id = xc.sched_id_get()
+        if sched_id == xen.lowlevel.xc.XEN_SCHEDULER_SEDF:
+            return 'sedf'
+        elif sched_id == xen.lowlevel.xc.XEN_SCHEDULER_CREDIT:
+            return 'credit'
+        else:
+            return 'unknown'
+    def get_vcpus_params(self):
+        return '' # TODO
+    def get_power_state(self):
+        return XEN_API_VM_POWER_STATE[self.state]
+    def get_tpm_instance(self):
+        return '' # TODO
+    def get_tpm_backend(self):
+        return '' # TODO
+    def get_bios_boot(self):
+        return '' # TODO
+    def get_platform_std_vga(self):
+        return False
+    def get_platform_serial(self):
+        return '' # TODO
+    def get_platform_localtime(self):
+        return False # TODO
+    def get_platform_clock_offset(self):
+        return False # TODO
+    def get_platform_enable_audio(self):
+        return False # TODO
+    def get_builder(self):
+        return 'Linux' # TODO
+    def get_boot_method(self):
+        bootloader = self.info['bootloader']
+        if not bootloader or bootloader not in XEN_API_BOOT_TYPE:
+            return 'kernel_external'
+        return bootloader
+    
+    def get_kernel_image(self):
+        return self.info['kernel_kernel']
+    def get_kernel_initrd(self):
+        return self.info['kernel_initrd']
+    def get_kernel_args(self):
+        return self.info['kernel_args']
+    def get_grub_cmdline(self):
+        return '' # TODO
+    def get_pci_bus(self):
+        return 0 # TODO
+    def get_tools_version(self):
+        return {} # TODO
+    def get_other_config(self):
+        return {} # TODO
+    
+    def get_on_shutdown(self):
+        after_shutdown = self.info.get('on_poweroff')
+        if not after_shutdown or after_shutdown not in XEN_API_ON_NORMAL_EXIT:
+            return XEN_API_ON_NORMAL_EXIT[-1]
+        return after_shutdown
+
+    def get_on_reboot(self):
+        after_reboot = self.info.get('on_reboot')
+        if not after_reboot or after_reboot not in XEN_API_ON_NORMAL_EXIT:
+            return XEN_API_ON_NORMAL_EXIT[-1]
+        return after_reboot
+
+    def get_on_suspend(self):
+        after_suspend = self.info.get('on_suspend') # TODO: not supported
+        if not after_suspend or after_suspend not in XEN_API_ON_NORMAL_EXIT:
+            return XEN_API_ON_NORMAL_EXIT[-1]
+        return after_suspend        
+
+    def get_on_crash(self):
+        after_crash = self.info.get('on_crash')
+        if not after_crash or after_crash not in XEN_API_ON_CRASH_BEHAVIOUR:
+            return XEN_API_ON_CRASH_BEHAVIOUR[0]
+        return after_crash
+
+    def get_dev_config_by_uuid(self, dev_class, dev_uuid):
+        """ Get's a device configuration either from XendConfig or
+        from the DevController.
+
+        @param dev_class: device class, either, 'vbd' or 'vif'
+        @param dev_uuid: device UUID
+
+        @rtype: dictionary
+        """
+        dev_type_config = self.info['device'].get(dev_uuid)
+
+        # shortcut if the domain isn't started because
+        # the devcontrollers will have no better information
+        # than XendConfig.
+        if self.state in (XEN_API_VM_POWER_STATE_HALTED,):
+            if dev_type_config:
+                return copy.deepcopy(dev_type_config[1])
+            return None
+
+        # instead of using dev_class, we use the dev_type
+        # that is from XendConfig.
+        # This will accomdate 'tap' as well as 'vbd'
+        dev_type = dev_type_config[0]
+        
+        controller = self.getDeviceController(dev_type)
+        if not controller:
+            return None
+            
+        all_configs = controller.getAllDeviceConfigurations()
+        if not all_configs:
+            return None
+
+        dev_config = copy.deepcopy(dev_type_config[1])
+        for _devid, _devcfg in all_configs.items():
+            if _devcfg.get('uuid') == dev_uuid:
+                dev_config.update(_devcfg)
+                dev_config['id'] = _devid
+                return dev_config
+
+        return dev_config
+                    
+    def get_dev_xenapi_config(self, dev_class, dev_uuid):
+        config = self.get_dev_config_by_uuid(dev_class, dev_uuid)
+        if not config:
+            return {}
+        
+        config['VM'] = self.get_uuid()
+        
+        if dev_class == 'vif':
+            if not config.has_key('name'):
+                config['name'] = config.get('vifname', '')
+            if not config.has_key('MAC'):
+                config['MAC'] = config.get('mac', '')
+            if not config.has_key('type'):
+                config['type'] = 'paravirtualised'
+            if not config.has_key('device'):
+                devid = config.get('id')
+                if devid != None:
+                    config['device'] = 'eth%d' % devid
+                else:
+                    config['device'] = ''
+                    
+            config['network'] = '' # Invalid for Xend
+            config['MTU'] = 1500 # TODO
+            config['network_read_kbs'] = 0.0
+            config['network_write_kbs'] = 0.0
+            config['IO_bandwidth_incoming_kbs'] = 0.0
+            config['IO_bandwidth_outgoing_kbs'] = 0.0
+
+        if dev_class =='vbd':
+            config['VDI'] = '' # TODO
+            config['device'] = config.get('dev', '')
+            config['driver'] = 'paravirtualised' # TODO
+            config['image'] = config.get('uname', '')
+            config['IO_bandwidth_incoming_kbs'] = 0.0
+            config['IO_bandwidth_outgoing_kbs'] = 0.0
+            if config['mode'] == 'r':
+                config['mode'] = 'RO'
+            else:
+                config['mode'] = 'RW'
+
+        return config
+
+    def get_dev_property(self, dev_class, dev_uuid, field):
+        config = self.get_dev_xenapi_config(dev_class, dev_uuid)
+        try:
+            return config[field]
+        except KeyError:
+            raise XendError('Invalid property for device: %s' % field)
+
+    def get_vcpus_util(self):
+        # TODO: this returns the total accum cpu time, rather than util
+        # TODO: spec says that key is int, however, python does not allow
+        #       non-string keys to dictionaries.
+        vcpu_util = {}
+        if 'max_vcpu_id' in self.info and self.domid != None:
+            for i in range(0, self.info['max_vcpu_id']+1):
+                info = xc.vcpu_getinfo(self.domid, i)
+                vcpu_util[str(i)] = info['cpu_time']/1000000000.0
+                
+        return vcpu_util
+
+    def get_vifs(self):
+        return self.info.get('vif_refs', [])
+
+    def get_vbds(self):
+        return self.info.get('vbd_refs', [])
+
+    def get_vtpms(self):
+        return self.info.get('vtpm_refs', [])
+
+    def create_vbd(self, xenapi_vbd):
+        """Create a VBD device from the passed struct in Xen API format.
+
+        @return: uuid of the device
+        @rtype: string
+        """
+
+        dev_uuid = self.info.device_add('vbd', cfg_xenapi = xenapi_vbd)
+        if not dev_uuid:
+            raise XendError('Failed to create device')
+        
+        if self.state in (XEN_API_VM_POWER_STATE_RUNNING,):
+            sxpr = self.info.device_sxpr(dev_uuid)
+            devid = self.getDeviceController('vbd').createDevice(sxpr)
+            raise XendError("Device creation failed")
+
+        return dev_uuid
+
+    def create_vbd_with_vdi(self, xenapi_vbd, vdi_image_path):
+        """Create a VBD using a VDI from XendStorageRepository.
+
+        @param xenapi_vbd: vbd struct from the Xen API
+        @param vdi_image_path: VDI UUID
+        @rtype: string
+        @return: uuid of the device
+        """
+        xenapi_vbd['image'] = vdi_image_path
+        log.debug('create_vbd_with_vdi: %s' % xenapi_vbd)
+        dev_uuid = self.info.device_add('tap', cfg_xenapi = xenapi_vbd)
+        if not dev_uuid:
+            raise XendError('Failed to create device')
+
+        if self.state in (XEN_API_VM_POWER_STATE_RUNNING,):
+            sxpr = self.info.device_sxpr(dev_uuid)
+            devid = self.getDeviceController('tap').createDevice(sxpr)
+            raise XendError("Device creation failed")
+
+        return dev_uuid
+
+    def create_vif(self, xenapi_vif):
+        """Create VIF device from the passed struct in Xen API format.
+
+        @param xenapi_vif: Xen API VIF Struct.
+        @rtype: string
+        @return: UUID
+        """
+        dev_uuid = self.info.device_add('vif', cfg_xenapi = xenapi_vif)
+        if not dev_uuid:
+            raise XendError('Failed to create device')
+        
+        if self.state in (DOM_STATE_HALTED,):
+            sxpr = self.info.device_sxpr(dev_uuid)
+            devid = self.getDeviceController('vif').createDevice(sxpr)
+            raise XendError("Device creation failed")
+
+        return dev_uuid
+
+    def create_vtpm(self, xenapi_vtpm):
+        """Create a VTPM device from the passed struct in Xen API format.
+
+        @return: uuid of the device
+        @rtype: string
+        """
+
+        dev_uuid = self.info.device_add('vtpm', cfg_xenapi = xenapi_vtpm)
+        if not dev_uuid:
+            raise XendError('Failed to create device')
+
+        if self.state in (DOM_STATE_HALTED,):
+            sxpr = self.info.device_sxpr(dev_uuid)
+            devid = self.getDeviceController('vtpm').createDevice(sxpr)
+            raise XendError("Device creation failed")
+
+        return dev_uuid
+
+    def has_device(self, dev_class, dev_uuid):
+        return (dev_uuid in self.info['%s_refs' % dev_class])
+
     """
-    cls.deviceClass = device_class
-    controllerClasses[device_class] = cls
-
-
-from xen.xend.server import blkif, netif, tpmif, pciif, iopif, irqif, usbif
-from xen.xend.server.BlktapController import BlktapController
-addControllerClass('vbd',  blkif.BlkifController)
-addControllerClass('vif',  netif.NetifController)
-addControllerClass('vtpm', tpmif.TPMifController)
-addControllerClass('pci',  pciif.PciController)
-addControllerClass('ioports', iopif.IOPortsController)
-addControllerClass('irq',  irqif.IRQController)
-addControllerClass('usb',  usbif.UsbifController)
-addControllerClass('tap',  BlktapController)
+        def stateChar(name):
+            if name in self.info:
+                if self.info[name]:
+                    return name[0]
+                else:
+                    return '-'
+            else:
+                return '?'
+
+        state = reduce(lambda x, y: x + y, map(stateChar, DOM_STATES_OLD))
+
+        sxpr.append(['state', state])
+
+        if self.store_mfn:
+            sxpr.append(['store_mfn', self.store_mfn])
+        if self.console_mfn:
+            sxpr.append(['console_mfn', self.console_mfn])
+    """
+
+    def __str__(self):
+        return '<domain id=%s name=%s memory=%s state=%s>' % \
+               (str(self.domid), self.info['name'],
+                str(self.info['memory']), DOM_STATES[self.state])
+
+    __repr__ = __str__
+
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/XendError.py
--- a/tools/python/xen/xend/XendError.py        Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/XendError.py        Wed Nov 01 10:40:46 2006 +0000
@@ -34,6 +34,20 @@ class XendError(Fault):
 
 class VmError(XendError):
     """Vm construction error."""
-
     pass
 
+
+XEND_ERROR_AUTHENTICATION_FAILED = ('ELUSER', 'Authentication Failed')
+XEND_ERROR_SESSION_INVALID       = ('EPERMDENIED', 'Session Invalid')
+XEND_ERROR_DOMAIN_INVALID        = ('EINVALIDDOMAIN', 'Domain Invalid')
+XEND_ERROR_HOST_INVALID          = ('EINVALIDHOST', 'Host Invalid')
+XEND_ERROR_HOST_RUNNING          = ('EHOSTRUNNING', 'Host is still Running')
+XEND_ERROR_HOST_CPU_INVALID      = ('EHOSTCPUINVALID', 'Host CPU Invalid')
+XEND_ERROR_UNSUPPORTED           = ('EUNSUPPORTED', 'Method Unsupported')
+XEND_ERROR_VM_INVALID            = ('EVMINVALID', 'VM Invalid')
+XEND_ERROR_VBD_INVALID           = ('EVBDINVALID', 'VBD Invalid')
+XEND_ERROR_VIF_INVALID           = ('EVIFINVALID', 'VIF Invalid')
+XEND_ERROR_VTPM_INVALID          = ('EVTPMINVALID', 'VTPM Invalid')
+XEND_ERROR_VDI_INVALID           = ('EVDIINVALID', 'VDI Invalid')
+XEND_ERROR_SR_INVALID           = ('ESRINVALID', 'SR Invalid')
+XEND_ERROR_TODO                  = ('ETODO', 'Lazy Programmer Error')
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/XendNode.py
--- a/tools/python/xen/xend/XendNode.py Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/XendNode.py Wed Nov 01 10:40:46 2006 +0000
@@ -13,22 +13,40 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #============================================================================
 # Copyright (C) 2004, 2005 Mike Wray <mike.wray@xxxxxx>
-#============================================================================
-
-"""Handler for node operations.
- Has some persistent state:
- - logs
- - notification urls
-
-"""
+# Copyright (c) 2006 Xensource Inc.
+#============================================================================
 
 import os
+import socket
 import xen.lowlevel.xc
+from xen.xend import uuid
+from xen.xend.XendError import XendError
+from xen.xend.XendStorageRepository import XendStorageRepository
 
 class XendNode:
-
+    """XendNode - Represents a Domain 0 Host."""
+    
     def __init__(self):
         self.xc = xen.lowlevel.xc.xc()
+        self.uuid = uuid.createString()
+        self.cpus = {}
+        self.name = socket.gethostname()
+        self.desc = ""
+        self.sr = XendStorageRepository()
+        
+        physinfo = self.physinfo_dict()
+        cpu_count = physinfo['nr_cpus']
+        cpu_features = physinfo['hw_caps']
+        
+        for i in range(cpu_count):
+            # construct uuid by appending extra bit on the host.
+            # since CPUs belong to a host.
+            cpu_uuid = self.uuid + '-%04d' % i
+            cpu_info = {'uuid': cpu_uuid,
+                        'host': self.uuid,
+                        'number': i,
+                        'features': cpu_features}
+            self.cpus[cpu_uuid] = cpu_info
 
     def shutdown(self):
         return 0
@@ -39,6 +57,78 @@ class XendNode:
     def notify(self, _):
         return 0
     
+    #
+    # Ref validation
+    #
+    
+    def is_valid_host(self, host_ref):
+        return (host_ref == self.uuid)
+
+    def is_valid_cpu(self, cpu_ref):
+        return (cpu_ref in self.cpus)
+
+    #
+    # Storage Repo
+    #
+
+    def get_sr(self):
+        return self.sr
+
+    #
+    # Host Functions
+    #
+
+    def xen_version(self):
+        info = self.xc.xeninfo()
+        from xen import VERSION
+        return {'Xen': '%(xen_major)d.%(xen_minor)d' % info,
+                'Xend': VERSION}
+
+    def get_name(self):
+        return self.name
+
+    def set_name(self, new_name):
+        self.name = new_name
+
+    #
+    # Host CPU Functions
+    #
+
+    def get_host_cpu_by_uuid(self, host_cpu_uuid):
+        if host_cpu_uuid in self.cpus:
+            return host_cpu_uuid
+        raise XendError('Invalid CPU UUID')
+
+    def get_host_cpu_refs(self):
+        return self.cpus.keys()
+
+    def get_host_cpu_uuid(self, host_cpu_ref):
+        if host_cpu_ref in self.cpus:
+            return host_cpu_ref
+        else:
+            raise XendError('Invalid CPU Reference')
+
+    def get_host_cpu_features(self, host_cpu_ref):
+        try:
+            return self.cpus[host_cpu_ref]['features']
+        except KeyError:
+            raise XendError('Invalid CPU Reference')
+
+    def get_host_cpu_number(self, host_cpu_ref):
+        try:
+            return self.cpus[host_cpu_ref]['number']
+        except KeyError:
+            raise XendError('Invalid CPU Reference')        
+            
+    def get_host_cpu_load(self, host_cpu_ref):
+        return 0.0
+
+    
+
+    #
+    # Getting host information.
+    #
+
     def info(self):
         return (self.nodeinfo() + self.physinfo() + self.xeninfo() +
                 self.xendinfo())
@@ -98,6 +188,19 @@ class XendNode:
     def xendinfo(self):
         return [['xend_config_format',  2]]
 
+    # dictionary version of *info() functions to get rid of
+    # SXPisms.
+    def nodeinfo_dict(self):
+        return dict(self.nodeinfo())
+    def xendinfo_dict(self):
+        return dict(self.xendinfo())
+    def xeninfo_dict(self):
+        return dict(self.xeninfo())
+    def physinfo_dict(self):
+        return dict(self.physinfo())
+    def info_dict(self):
+        return dict(self.info())
+    
 
 def instance():
     global inst
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/XendProtocol.py
--- a/tools/python/xen/xend/XendProtocol.py     Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/XendProtocol.py     Wed Nov 01 10:40:46 2006 +0000
@@ -22,7 +22,7 @@ import types
 import types
 
 from encode import *
-import sxp
+from xen.xend import sxp
 
 from xen.xend import XendRoot
 
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/XendRoot.py
--- a/tools/python/xen/xend/XendRoot.py Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/XendRoot.py Wed Nov 01 10:40:46 2006 +0000
@@ -30,12 +30,8 @@ import string
 import string
 import sys
 
-import osdep
-import XendLogging
-from XendError import XendError
-
-import sxp
-
+from xen.xend import sxp, osdep, XendLogging
+from xen.xend.XendError import XendError
 
 class XendRoot:
     """Root of the management classes."""
@@ -101,6 +97,9 @@ class XendRoot:
 
     """Default interface to listen for VNC connections on"""
     xend_vnc_listen_default = '127.0.0.1'
+
+    """Default session storage path."""
+    xend_domains_path_default = '/var/lib/xend/domains'
 
     components = {}
 
@@ -196,15 +195,18 @@ class XendRoot:
         return self.get_config_bool("xend-http-server", 
self.xend_http_server_default)
 
     def get_xend_tcp_xmlrpc_server(self):
-        return self.get_config_bool("xend-tcp-xmlrpc-server", 
self.xend_tcp_xmlrpc_server_default)
+        return self.get_config_bool("xend-tcp-xmlrpc-server",
+                                    self.xend_tcp_xmlrpc_server_default)
 
     def get_xend_unix_xmlrpc_server(self):
-        return self.get_config_bool("xend-unix-xmlrpc-server", 
self.xend_unix_xmlrpc_server_default)
+        return self.get_config_bool("xend-unix-xmlrpc-server",
+                                    self.xend_unix_xmlrpc_server_default)
 
     def get_xend_relocation_server(self):
         """Get the flag indicating whether xend should run a relocation server.
         """
-        return self.get_config_bool("xend-relocation-server", 
self.xend_relocation_server_default)
+        return self.get_config_bool("xend-relocation-server",
+                                    self.xend_relocation_server_default)
 
     def get_xend_port(self):
         """Get the port xend listens at for its HTTP interface.
@@ -214,7 +216,8 @@ class XendRoot:
     def get_xend_relocation_port(self):
         """Get the port xend listens at for connection to its relocation 
server.
         """
-        return self.get_config_int('xend-relocation-port', 
self.xend_relocation_port_default)
+        return self.get_config_int('xend-relocation-port',
+                                   self.xend_relocation_port_default)
 
     def get_xend_relocation_hosts_allow(self):
         return self.get_config_value("xend-relocation-hosts-allow",
@@ -245,6 +248,11 @@ class XendRoot:
         """Get the path the xend unix-domain server listens at.
         """
         return self.get_config_value("xend-unix-path", 
self.xend_unix_path_default)
+
+    def get_xend_domains_path(self):
+        """ Get the path for persistent domain configuration storage
+        """
+        return self.get_config_value("xend-domains-path", 
self.xend_domains_path_default)
 
     def get_network_script(self):
         """@return the script used to alter the network configuration when
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py    Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/image.py    Wed Nov 01 10:40:46 2006 +0000
@@ -189,7 +189,7 @@ class LinuxImageHandler(ImageHandler):
         store_evtchn = self.vm.getStorePort()
         console_evtchn = self.vm.getConsolePort()
 
-        log.debug("dom            = %d", self.vm.getDomid())
+        log.debug("domid          = %d", self.vm.getDomid())
         log.debug("image          = %s", self.kernel)
         log.debug("store_evtchn   = %d", store_evtchn)
         log.debug("console_evtchn = %d", console_evtchn)
@@ -198,7 +198,7 @@ class LinuxImageHandler(ImageHandler):
         log.debug("vcpus          = %d", self.vm.getVCpuCount())
         log.debug("features       = %s", self.vm.getFeatures())
 
-        return xc.linux_build(dom            = self.vm.getDomid(),
+        return xc.linux_build(domid          = self.vm.getDomid(),
                               image          = self.kernel,
                               store_evtchn   = store_evtchn,
                               console_evtchn = console_evtchn,
@@ -218,7 +218,7 @@ class PPC_LinuxImageHandler(LinuxImageHa
         store_evtchn = self.vm.getStorePort()
         console_evtchn = self.vm.getConsolePort()
 
-        log.debug("dom            = %d", self.vm.getDomid())
+        log.debug("domid          = %d", self.vm.getDomid())
         log.debug("image          = %s", self.kernel)
         log.debug("store_evtchn   = %d", store_evtchn)
         log.debug("console_evtchn = %d", console_evtchn)
@@ -229,7 +229,7 @@ class PPC_LinuxImageHandler(LinuxImageHa
 
         devtree = FlatDeviceTree.build(self)
 
-        return xc.linux_build(dom            = self.vm.getDomid(),
+        return xc.linux_build(domid          = self.vm.getDomid(),
                               image          = self.kernel,
                               store_evtchn   = store_evtchn,
                               console_evtchn = console_evtchn,
@@ -272,7 +272,7 @@ class HVMImageHandler(ImageHandler):
     def buildDomain(self):
         store_evtchn = self.vm.getStorePort()
 
-        log.debug("dom            = %d", self.vm.getDomid())
+        log.debug("domid          = %d", self.vm.getDomid())
         log.debug("image          = %s", self.kernel)
         log.debug("store_evtchn   = %d", store_evtchn)
         log.debug("memsize        = %d", self.vm.getMemoryTarget() / 1024)
@@ -282,9 +282,8 @@ class HVMImageHandler(ImageHandler):
         log.debug("apic           = %d", self.apic)
 
         self.register_shutdown_watch()
-        self.register_reboot_feature_watch()
-
-        return xc.hvm_build(dom            = self.vm.getDomid(),
+
+        return xc.hvm_build(domid          = self.vm.getDomid(),
                             image          = self.kernel,
                             store_evtchn   = store_evtchn,
                             memsize        = self.vm.getMemoryTarget() / 1024,
@@ -417,7 +416,6 @@ class HVMImageHandler(ImageHandler):
 
     def destroy(self):
         self.unregister_shutdown_watch();
-        self.unregister_reboot_feature_watch();
         if not self.pid:
             return
         os.kill(self.pid, signal.SIGKILL)
@@ -446,7 +444,7 @@ class HVMImageHandler(ImageHandler):
         """ watch call back on node control/shutdown,
             if node changed, this function will be called
         """
-        from xen.xend.XendDomainInfo import shutdown_reasons
+        from xen.xend.XendConstants import DOMAIN_SHUTDOWN_REASONS
         xd = xen.xend.XendDomain.instance()
         vm = xd.domain_lookup( self.vm.getDomid() )
 
@@ -459,39 +457,6 @@ class HVMImageHandler(ImageHandler):
                 vm.refreshShutdown(vm.info)
 
         return 1 # Keep watching
-
-    def register_reboot_feature_watch(self):
-        """ add xen store watch on control/feature-reboot """
-        self.rebootFeatureWatch = xswatch(self.vm.dompath + 
"/control/feature-reboot", \
-                                         self.hvm_reboot_feature)
-        log.debug("hvm reboot feature watch registered")
-
-    def unregister_reboot_feature_watch(self):
-        """Remove the watch on the control/feature-reboot, if any. Nothrow
-        guarantee."""
-
-        try:
-            if self.rebootFeatureWatch:
-                self.rebootFeatureWatch.unwatch()
-        except:
-            log.exception("Unwatching hvm reboot feature watch failed.")
-        self.rebootFeatureWatch = None
-        log.debug("hvm reboot feature watch unregistered")
-
-    def hvm_reboot_feature(self, _):
-        """ watch call back on node control/feature-reboot,
-            if node changed, this function will be called
-        """
-        xd = xen.xend.XendDomain.instance()
-        vm = xd.domain_lookup( self.vm.getDomid() )
-
-        status = vm.readDom('control/feature-reboot')
-        log.debug("hvm_reboot_feature fired, module status=%s", status)
-        if status == '1':
-            self.unregister_shutdown_watch()
-
-        return 1 # Keep watching
-
 
 class IA64_HVM_ImageHandler(HVMImageHandler):
 
diff -r 874cc0ff214d -r 33e9c88aab02 
tools/python/xen/xend/server/DevController.py
--- a/tools/python/xen/xend/server/DevController.py     Wed Nov 01 09:55:43 
2006 +0000
+++ b/tools/python/xen/xend/server/DevController.py     Wed Nov 01 10:40:46 
2006 +0000
@@ -88,9 +88,9 @@ class DevController:
         xd = xen.xend.XendDomain.instance()
         backdom_name = sxp.child_value(config, 'backend')
         if backdom_name is None:
-            backdom = xen.xend.XendDomain.PRIV_DOMAIN
-        else:
-            bd = xd.domain_lookup_by_name_or_id_nr(backdom_name)
+            backdom = xen.xend.XendDomain.DOM0_ID
+        else:
+            bd = xd.domain_lookup_nr(backdom_name)
             backdom = bd.getDomid()
         count = 0
         while True:
@@ -141,7 +141,6 @@ class DevController:
 
     def waitForDevices(self):
         log.debug("Waiting for devices %s.", self.deviceClass)
-        
         return map(self.waitForDevice, self.deviceIDs())
 
 
@@ -221,27 +220,48 @@ class DevController:
         """@return an s-expression giving the current configuration of the
         specified device.  This would be suitable for giving to {@link
         #createDevice} in order to recreate that device."""
-
+        configDict = self.getDeviceConfiguration(devid)
+        sxpr = [self.deviceClass]
+        for key, val in configDict.items():
+            if type(val) == type(list()):
+                for v in val:
+                    sxpr.append([key, v])
+            else:
+                sxpr.append([key, val])
+        return sxpr
+
+    def sxprs(self):
+        """@return an s-expression describing all the devices of this
+        controller's device-class.
+        """
+        return xstransact.ListRecursive(self.frontendRoot())
+
+
+    def sxpr(self, devid):
+        """@return an s-expression describing the specified device.
+        """
+        return [self.deviceClass, ['dom', self.vm.getDomid(),
+                                   'id', devid]]
+
+
+    def getDeviceConfiguration(self, devid):
+        """Returns the configuration of a device.
+
+        @note: Similar to L{configuration} except it returns a dict.
+        @return: dict
+        """
         backdomid = xstransact.Read(self.frontendPath(devid), "backend-id")
         if backdomid is None:
             raise VmError("Device %s not connected" % devid)
-        
-        return [self.deviceClass, ['backend', int(backdomid)]]
-
-
-    def sxprs(self):
-        """@return an s-expression describing all the devices of this
-        controller's device-class.
-        """
-        return xstransact.ListRecursive(self.frontendRoot())
-
-
-    def sxpr(self, devid):
-        """@return an s-expression describing the specified device.
-        """
-        return [self.deviceClass, ['dom', self.vm.getDomid(),
-                                   'id', devid]]
-
+
+        return {'backend': int(backdomid)}
+
+    def getAllDeviceConfigurations(self):
+        all_configs = {}
+        for devid in self.deviceIDs():
+            config_dict = self.getDeviceConfiguration(devid)
+            all_configs[devid] = config_dict
+        return all_configs
 
     ## protected:
 
@@ -387,7 +407,7 @@ class DevController:
 
         backdom_name = sxp.child_value(config, 'backend')
         if backdom_name:
-            backdom = xd.domain_lookup_by_name_or_id_nr(backdom_name)
+            backdom = xd.domain_lookup_nr(backdom_name)
         else:
             backdom = xd.privilegedDomain()
 
@@ -451,9 +471,10 @@ class DevController:
 
     def backendRoot(self):
         import xen.xend.XendDomain
-       from xen.xend.xenstore.xsutil import GetDomainPath
-        backdom = xen.xend.XendDomain.PRIV_DOMAIN
-        return "%s/backend/%s/%s" % (GetDomainPath(backdom), self.deviceClass, 
self.vm.getDomid())
+        from xen.xend.xenstore.xsutil import GetDomainPath
+        backdom = xen.xend.XendDomain.DOM0_ID
+        return "%s/backend/%s/%s" % (GetDomainPath(backdom),
+                                     self.deviceClass, self.vm.getDomid())
 
     def frontendMiscPath(self):
         return "%s/device-misc/%s" % (self.vm.getDomainPath(),
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/server/SrvDaemon.py
--- a/tools/python/xen/xend/server/SrvDaemon.py Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/server/SrvDaemon.py Wed Nov 01 10:40:46 2006 +0000
@@ -205,6 +205,8 @@ class Daemon:
                                 sig)
                 else:
                     self.run(w and os.fdopen(w, 'w') or None)
+                    # if we reach here, the child should quit.
+                    os._exit(0)
 
         return ret
 
@@ -297,9 +299,17 @@ class Daemon:
             log.info("Xend changeset: %s.", xinfo['xen_changeset'])
             del xc
 
+            try:
+                from xen import VERSION
+                log.info("Xend version: %s", VERSION)
+            except ImportError:
+                log.info("Xend version: Unknown.")
+
             relocate.listenRelocation()
             servers = SrvServer.create()
             servers.start(status)
+            del servers
+            
         except Exception, ex:
             print >>sys.stderr, 'Exception starting xend:', ex
             if XEND_DEBUG:
diff -r 874cc0ff214d -r 33e9c88aab02 
tools/python/xen/xend/server/SrvDomainDir.py
--- a/tools/python/xen/xend/server/SrvDomainDir.py      Wed Nov 01 09:55:43 
2006 +0000
+++ b/tools/python/xen/xend/server/SrvDomainDir.py      Wed Nov 01 10:40:46 
2006 +0000
@@ -39,7 +39,7 @@ class SrvDomainDir(SrvDir):
         self.xd = XendDomain.instance()
 
     def domain(self, x):
-        dom = self.xd.domain_lookup_by_name_or_id(x)
+        dom = self.xd.domain_lookup(x)
         if not dom:
             raise XendError('No such domain ' + str(x))
         return SrvDomain(dom)
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/server/SrvServer.py
--- a/tools/python/xen/xend/server/SrvServer.py Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/server/SrvServer.py Wed Nov 01 10:40:46 2006 +0000
@@ -42,6 +42,7 @@
 
 import fcntl
 import time
+import signal
 from threading import Thread
 
 from xen.web.httpserver import HttpServer, UnixHttpServer
@@ -54,7 +55,6 @@ from SrvRoot import SrvRoot
 from SrvRoot import SrvRoot
 from XMLRPCServer import XMLRPCServer
 
-
 xroot = XendRoot.instance()
 
 
@@ -65,6 +65,14 @@ class XendServers:
 
     def add(self, server):
         self.servers.append(server)
+
+    def cleanup(self, signum = 0, frame = None):
+        log.debug("SrvServer.cleanup()")
+        for server in self.servers:
+            try:
+                server.shutdown()
+            except:
+                pass
 
     def start(self, status):
         # Running the network script will spawn another process, which takes
@@ -100,8 +108,24 @@ class XendServers:
             status.write('0')
             status.close()
 
-        for t in threads:
-            t.join()
+        # Prepare to catch SIGTERM (received when 'xend stop' is executed)
+        # and call each server's cleanup if possible
+        signal.signal(signal.SIGTERM, self.cleanup)
+
+        # Interruptible Thread.join - Python Bug #1167930
+        #   Replaces: for t in threads: t.join()
+        #   Reason:   The above will cause python signal handlers to be
+        #             blocked so we're not able to catch SIGTERM in any
+        #             way for cleanup
+        runningThreads = len([t for t in threads if t.isAlive()])
+        while runningThreads > 0:
+            try:
+                for t in threads:
+                    t.join(1.0)
+                runningThreads = len([t for t in threads if t.isAlive()])
+            except:
+                pass
+
 
 def create():
     root = SrvDir()
diff -r 874cc0ff214d -r 33e9c88aab02 
tools/python/xen/xend/server/XMLRPCServer.py
--- a/tools/python/xen/xend/server/XMLRPCServer.py      Wed Nov 01 09:55:43 
2006 +0000
+++ b/tools/python/xen/xend/server/XMLRPCServer.py      Wed Nov 01 10:40:46 
2006 +0000
@@ -16,19 +16,31 @@
 # Copyright (C) 2006 XenSource Ltd.
 #============================================================================
 
+import types
 import xmlrpclib
-
-from xen.xend import XendDomain, XendDomainInfo, XendNode, \
-                     XendLogging, XendDmesg
 from xen.util.xmlrpclib2 import UnixXMLRPCServer, TCPXMLRPCServer
 
-from xen.xend.XendClient import XML_RPC_SOCKET, ERROR_INVALID_DOMAIN
-from xen.xend.XendError import *
+from xen.xend import XendDomain, XendDomainInfo, XendNode
+from xen.xend import XendLogging, XendDmesg
+from xen.xend.XendClient import XML_RPC_SOCKET
 from xen.xend.XendLogging import log
-from types import ListType
+from xen.xend.XendAPI import XendAPI
+from xen.xend.XendError import XendInvalidDomain
+
+# vcpu_avail is a long and is not needed by the clients.  It's far easier
+# to just remove it then to try and marshal the long.
+def fixup_sxpr(sexpr):
+    ret = []
+    for k in sexpr:
+        if type(k) in (types.ListType, types.TupleType):
+            if len(k) != 2 or k[0] != 'vcpu_avail':
+                ret.append(fixup_sxpr(k))
+        else:
+            ret.append(k)
+    return ret
 
 def lookup(domid):
-    info = XendDomain.instance().domain_lookup_by_name_or_id(domid)
+    info = XendDomain.instance().domain_lookup_nr(domid)
     if not info:
         raise XendInvalidDomain(str(domid))
     return info
@@ -37,28 +49,16 @@ def dispatch(domid, fn, args):
     info = lookup(domid)
     return getattr(info, fn)(*args)
 
-# vcpu_avail is a long and is not needed by the clients.  It's far easier
-# to just remove it then to try and marshal the long.
-def fixup_sxpr(sexpr):
-    ret = []
-    for k in sexpr:
-        if type(k) is ListType:
-            if len(k) != 2 or k[0] != 'vcpu_avail':
-                ret.append(fixup_sxpr(k))
-        else:
-            ret.append(k)
-    return ret
-
 def domain(domid):
     info = lookup(domid)
     return fixup_sxpr(info.sxpr())
 
-def domains(detail=1):
+def domains(detail=1, full = 0):
     if detail < 1:
         return XendDomain.instance().list_names()
     else:
         domains = XendDomain.instance().list_sorted()
-        return map(lambda dom: fixup_sxpr(dom.sxpr()), domains)
+        return map(lambda dom: fixup_sxpr(dom.sxpr(not full)), domains)
 
 def domain_create(config):
     info = XendDomain.instance().domain_create(config)
@@ -75,8 +75,8 @@ def get_log():
     finally:
         f.close()
 
-methods = ['device_create', 'device_configure', 'destroyDevice',
-           'getDeviceSxprs',
+methods = ['device_create', 'device_configure',
+           'destroyDevice','getDeviceSxprs',
            'setMemoryTarget', 'setName', 'setVCpuCount', 'shutdown',
            'send_sysrq', 'getVCPUInfo', 'waitForDevices',
            'getRestartCount']
@@ -84,25 +84,44 @@ exclude = ['domain_create', 'domain_rest
 exclude = ['domain_create', 'domain_restore']
 
 class XMLRPCServer:
-    def __init__(self, use_tcp=False):
-        self.ready = False
+    def __init__(self, use_tcp=False, host = "localhost", port = 8006,
+                 path = XML_RPC_SOCKET):
         self.use_tcp = use_tcp
+        self.port = port
+        self.host = host
+        self.path = path
+        
+        self.ready = False        
+        self.running = True
+        self.xenapi = XendAPI()
         
     def run(self):
         if self.use_tcp:
-            # bind to something fixed for now as we may eliminate
-            # tcp support completely.
-            self.server = TCPXMLRPCServer(("localhost", 8005), 
logRequests=False)
+            self.server = TCPXMLRPCServer((self.host, self.port),
+                                          logRequests = False)
         else:
-            self.server = UnixXMLRPCServer(XML_RPC_SOCKET, False)
+            self.server = UnixXMLRPCServer(self.path, logRequests = False)
+
+        # Register Xen API Functions
+        # -------------------------------------------------------------------
+        # exportable functions are ones that do not begin with '_'
+        # and has the 'api' attribute.
+        
+        for meth_name in dir(self.xenapi):
+            meth = getattr(self.xenapi, meth_name)
+            if meth_name[0] != '_' and callable(meth) and hasattr(meth, 'api'):
+                self.server.register_function(meth, getattr(meth, 'api'))
+                
+        # Legacy deprecated xm xmlrpc api
+        # --------------------------------------------------------------------
 
         # Functions in XendDomainInfo
         for name in methods:
             fn = eval("lambda domid, *args: dispatch(domid, '%s', args)"%name)
             self.server.register_function(fn, "xend.domain.%s" % name)
 
-        # Functions in XendDomain
         inst = XendDomain.instance()
+
         for name in dir(inst):
             fn = getattr(inst, name)
             if name.startswith("domain_") and callable(fn):
@@ -126,4 +145,20 @@ class XMLRPCServer:
 
         self.server.register_introspection_functions()
         self.ready = True
-        self.server.serve_forever()
+
+        # Custom runloop so we can cleanup when exiting.
+        # -----------------------------------------------------------------
+        try:
+            self.server.socket.settimeout(1.0)
+            while self.running:
+                self.server.handle_request()
+        finally:
+            self.cleanup()
+
+    def cleanup(self):
+        log.debug("XMLRPCServer.cleanup()")
+
+    def shutdown(self):
+        self.running = False
+        self.ready = False
+
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/server/blkif.py
--- a/tools/python/xen/xend/server/blkif.py     Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/server/blkif.py     Wed Nov 01 10:40:46 2006 +0000
@@ -16,7 +16,6 @@
 # Copyright (C) 2005, 2006 XenSource Inc.
 #============================================================================
 
-
 import re
 import string
 
@@ -24,9 +23,7 @@ from xen.util import security
 from xen.util import security
 from xen.xend import sxp
 from xen.xend.XendError import VmError
-
 from xen.xend.server.DevController import DevController
-
 
 class BlkifController(DevController):
     """Block device interface controller. Handles all block devices
@@ -38,12 +35,10 @@ class BlkifController(DevController):
         """
         DevController.__init__(self, vm)
 
-
     def getDeviceDetails(self, config):
         """@see DevController.getDeviceDetails"""
-        uname = sxp.child_value(config, 'uname')
-
-        dev = sxp.child_value(config, 'dev')
+        uname = sxp.child_value(config, 'uname', '')
+        dev = sxp.child_value(config, 'dev', '')
 
         if 'ioemu:' in dev:
             (_, dev) = string.split(dev, ':', 1)
@@ -66,17 +61,17 @@ class BlkifController(DevController):
 
         mode = sxp.child_value(config, 'mode', 'r')
         if mode not in ('r', 'w', 'w!'):
-            name = uname
-            if not name:
-                name = sxp.child_value(config, 'dev')
-            raise VmError('Invalid mode \'%s\' for %s. Valid modes are '
-            '{r,w,w!}' % (mode, name))
+            raise VmError('Invalid mode')
 
         back = { 'dev'    : dev,
                  'type'   : typ,
                  'params' : params,
                  'mode'   : mode
                }
+
+        uuid = sxp.child_value(config, 'uuid')
+        if uuid:
+            back['uuid'] = uuid
 
         if security.on():
             (label, ssidref, policy) = security.get_res_security_details(uname)
@@ -112,27 +107,30 @@ class BlkifController(DevController):
                           (self.deviceClass, devid, config))
 
 
-    def configuration(self, devid):
-        """@see DevController.configuration"""
+    def getDeviceConfiguration(self, devid):
+        """Returns the configuration of a device.
 
-        result = DevController.configuration(self, devid)
+        @note: Similar to L{configuration} except it returns a dict.
+        @return: dict
+        """
+        config = DevController.getDeviceConfiguration(self, devid)
+        devinfo = self.readBackend(devid, 'dev', 'type', 'params', 'mode',
+                                   'uuid')
+        dev, typ, params, mode, uuid = devinfo
+        
+        if dev:
+            dev_type = self.readFrontend(devid, 'device-type')
+            if dev_type:
+                dev += ':' + dev_type
+            config['dev'] = dev
+        if typ and params:
+            config['uname'] = typ +':' + params
+        if mode:
+            config['mode'] = mode
+        if uuid:
+            config['uuid'] = uuid
 
-        (dev, typ, params, mode) = self.readBackend(devid,
-                                                    'dev', 'type', 'params',
-                                                    'mode')
-
-        if dev:
-            (dev_type) = self.readFrontend(devid, 'device-type')
-            if dev_type:
-                dev += ":" + dev_type
-            result.append(['dev', dev])
-        if typ and params:
-            result.append(['uname', typ + ":" + params])
-        if mode:
-            result.append(['mode', mode])
-
-        return result
-
+        return config
 
     def destroyDevice(self, devid):
         """@see DevController.destroyDevice"""
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/server/iopif.py
--- a/tools/python/xen/xend/server/iopif.py     Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/server/iopif.py     Wed Nov 01 10:40:46 2006 +0000
@@ -20,7 +20,7 @@
 
 import types
 
-import xen.lowlevel.xc;
+import xen.lowlevel.xc
 
 from xen.xend import sxp
 from xen.xend.XendError import VmError
@@ -72,7 +72,7 @@ class IOPortsController(DevController):
             raise VmError('ioports: Invalid i/o range: %s - %s' %
                           (io_from, io_to))
 
-        rc = xc.domain_ioport_permission(dom          = self.getDomid(),
+        rc = xc.domain_ioport_permission(domid        = self.getDomid(),
                                          first_port   = io_from,
                                          nr_ports     = io_to - io_from + 1,
                                          allow_access = True)
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/server/irqif.py
--- a/tools/python/xen/xend/server/irqif.py     Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/server/irqif.py     Wed Nov 01 10:40:46 2006 +0000
@@ -23,7 +23,7 @@
 
 import types
 
-import xen.lowlevel.xc;
+import xen.lowlevel.xc
 
 from xen.xend import sxp
 from xen.xend.XendError import VmError
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/server/netif.py
--- a/tools/python/xen/xend/server/netif.py     Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/server/netif.py     Wed Nov 01 10:40:46 2006 +0000
@@ -26,12 +26,9 @@ import re
 
 from xen.xend import sxp
 from xen.xend import XendRoot
-
 from xen.xend.server.DevController import DevController
 
-
 xroot = XendRoot.instance()
-
 
 def randomMAC():
     """Generate a random MAC address.
@@ -138,7 +135,6 @@ class NetifController(DevController):
     
     def __init__(self, vm):
         DevController.__init__(self, vm)
-
 
     def getDeviceDetails(self, config):
         """@see DevController.getDeviceDetails"""
@@ -157,6 +153,7 @@ class NetifController(DevController):
         mac     = sxp.child_value(config, 'mac')
         vifname = sxp.child_value(config, 'vifname')
         rate    = sxp.child_value(config, 'rate')
+        uuid    = sxp.child_value(config, 'uuid')
         ipaddr  = _get_config_ipaddr(config)
 
         devid = self.allocateDeviceID()
@@ -182,34 +179,37 @@ class NetifController(DevController):
             back['vifname'] = vifname
         if rate:
             back['rate'] = parseRate(rate)
+        if uuid:
+            back['uuid'] = uuid
 
         return (devid, back, front)
 
 
-    def configuration(self, devid):
+    def getDeviceConfiguration(self, devid):
         """@see DevController.configuration"""
 
-        result = DevController.configuration(self, devid)
-
-        (script, ip, bridge, mac, typ, vifname, rate) = self.readBackend(
-            devid, 'script', 'ip', 'bridge', 'mac', 'type', 'vifname', 'rate')
+        result = DevController.getDeviceConfiguration(self, devid)
+        devinfo =  self.readBackend(devid, 'script', 'ip', 'bridge',
+                                    'mac', 'type', 'vifname', 'rate', 'uuid')
+        (script, ip, bridge, mac, typ, vifname, rate, uuid) = devinfo
 
         if script:
-            result.append(['script',
-                           script.replace(xroot.network_script_dir + os.sep,
-                                          "")])
+            network_script_dir = xroot.network_script_dir + os.sep
+            result['script'] = script.replace(network_script_dir, "")
         if ip:
-            for i in ip.split(" "):
-                result.append(['ip', i])
+            result['ip'] = ip.split(" ")
         if bridge:
-            result.append(['bridge', bridge])
+            result['bridge'] = bridge
         if mac:
-            result.append(['mac', mac])
+            result['mac'] = mac
         if typ:
-            result.append(['type', typ])
+            result['type'] = typ
         if vifname:
-            result.append(['vifname', vifname])
+            result['vifname'] = vifname
         if rate:
-            result.append(['rate', formatRate(rate)])
+            result['rate'] = formatRate(rate)
+        if uuid:
+            result['uuid'] = uuid
 
         return result
+
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/server/pciif.py
--- a/tools/python/xen/xend/server/pciif.py     Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/server/pciif.py     Wed Nov 01 10:40:46 2006 +0000
@@ -109,29 +109,54 @@ class PciController(DevController):
 
         return (0, back, {})
 
-    def configuration(self, devid):
-        """@see DevController.configuration"""
-
-        result = DevController.configuration(self, devid)
-
-        (num_devs) = self.readBackend(devid, 'num_devs')
-
+    def getDeviceConfiguration(self, devid):
+        result = DevController.getDeviceConfiguration(self, devid)
+        num_devs = self.readBackend(devid, 'num_devs')
+        pci_devs = []
+        
         for i in range(int(num_devs)):
-            (dev_config) = self.readBackend(devid, 'dev-%d'%(i))
+            (dev_config,) = self.readBackend(devid, 'dev-%d'%(i))
 
             pci_match = re.match(r"((?P<domain>[0-9a-fA-F]{1,4})[:,])?" + \
                     r"(?P<bus>[0-9a-fA-F]{1,2})[:,]" + \
                     r"(?P<slot>[0-9a-fA-F]{1,2})[.,]" + \
                     r"(?P<func>[0-9a-fA-F]{1,2})", dev_config)
+            
             if pci_match!=None:
                 pci_dev_info = pci_match.groupdict('0')
-                result.append( ['dev', \
-                        ['domain', '0x'+pci_dev_info['domain']], \
-                        ['bus', '0x'+pci_dev_info['bus']], \
-                        ['slot', '0x'+pci_dev_info['slot']], \
-                        ['func', '0x'+pci_dev_info['func']]])
-
+                pci_devs.append({'domain': '0x%(domain)s' % pci_dev_info,
+                                 'bus': '0x%(bus)s' % pci_dev_info,
+                                 'slot': '0x(slot)s' % pci_dev_info,
+                                 'func': '0x(func)s' % pci_dev_info})
+
+        result['dev'] = pci_devs
         return result
+
+    def configuration(self, devid):
+        """Returns SXPR for devices on domain.
+
+        @note: we treat this dict especially to convert to
+        SXP because it is not a straight dict of strings."""
+        
+        configDict = self.getDeviceConfiguration(devid)
+        sxpr = [self.deviceClass]
+
+        # remove devs
+        devs = configDict.pop('dev', [])
+        for dev in devs:
+            dev_sxpr = ['dev']
+            for dev_item in dev.items():
+                dev_sxpr.append(list(dev_item))
+            sxpr.append(dev_sxpr)
+        
+        for key, val in configDict.items():
+            if type(val) == type(list()):
+                for v in val:
+                    sxpr.append([key, v])
+            else:
+                sxpr.append([key, val])
+
+        return sxpr    
 
     def setupDevice(self, domain, bus, slot, func):
         """ Attach I/O resources for device to frontend domain
@@ -155,9 +180,9 @@ class PciController(DevController):
         PCIQuirk(dev.vendor, dev.device, dev.subvendor, dev.subdevice, domain, 
                 bus, slot, func)
 
-       for (start, size) in dev.ioports:
+        for (start, size) in dev.ioports:
             log.debug('pci: enabling ioport 0x%x/0x%x'%(start,size))
-            rc = xc.domain_ioport_permission(dom = fe_domid, first_port = 
start,
+            rc = xc.domain_ioport_permission(domid = fe_domid, first_port = 
start,
                     nr_ports = size, allow_access = True)
             if rc<0:
                 raise VmError(('pci: failed to configure I/O ports on device '+
@@ -171,7 +196,7 @@ class PciController(DevController):
 
             log.debug('pci: enabling iomem 0x%x/0x%x pfn 0x%x/0x%x'% \
                     (start,size,start_pfn,nr_pfns))
-            rc = xc.domain_iomem_permission(dom = fe_domid,
+            rc = xc.domain_iomem_permission(domid =  fe_domid,
                     first_pfn = start_pfn,
                     nr_pfns = nr_pfns,
                     allow_access = True)
@@ -181,7 +206,7 @@ class PciController(DevController):
 
         if dev.irq>0:
             log.debug('pci: enabling irq %d'%dev.irq)
-            rc = xc.domain_irq_permission(dom = fe_domid, pirq = dev.irq,
+            rc = xc.domain_irq_permission(domid =  fe_domid, pirq = dev.irq,
                     allow_access = True)
             if rc<0:
                 raise VmError(('pci: failed to configure irq on device '+
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/server/tpmif.py
--- a/tools/python/xen/xend/server/tpmif.py     Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/server/tpmif.py     Wed Nov 01 10:40:46 2006 +0000
@@ -22,19 +22,16 @@
 """
 
 from xen.xend import sxp
+from xen.xend import XendRoot
 from xen.xend.XendLogging import log
 from xen.xend.XendError import XendError
-from xen.xend import XendRoot
-from xen.xend.XendDomainInfo import DEV_MIGRATE_TEST
-
+from xen.xend.XendConstants import DEV_MIGRATE_TEST
 from xen.xend.server.DevController import DevController
 
 import os
 import re
 
-
 xroot = XendRoot.instance()
-
 
 class TPMifController(DevController):
     """TPM interface controller. Handles all TPM devices for a domain.
@@ -52,22 +49,37 @@ class TPMifController(DevController):
         if inst == -1:
             inst = int(sxp.child_value(config, 'instance' , '0'))
 
+        typ    = sxp.child_value(config, 'type')
+        uuid   = sxp.child_value(config, 'uuid')
+
         log.info("The domain has a TPM with pref. instance %d and devid %d.",
                  inst, devid)
         back  = { 'pref_instance' : "%i" % inst,
                   'resume'        : "%s" % (self.vm.getResume()) }
+        if typ:
+            back['type'] = typ
+        if uuid:
+            back['uuid'] = uuid
+
         front = { 'handle' : "%i" % devid }
 
         return (devid, back, front)
 
-    def configuration(self, devid):
+    def getDeviceConfiguration(self, devid):
+        """Returns the configuration of a device"""
+        result = DevController.getDeviceConfiguration(self, devid)
 
-        result = DevController.configuration(self, devid)
-
-        instance = self.readBackend(devid, 'instance')
+        (instance, uuid, type) = \
+                           self.readBackend(devid, 'instance',
+                                                   'uuid',
+                                                   'type')
 
         if instance:
-            result.append(['instance', instance])
+            result['instance'] = instance
+        if uuid:
+            result['uuid'] = uuid
+        if type:
+            result['type'] == type
 
         return result
 
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/sxp.py
--- a/tools/python/xen/xend/sxp.py      Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/sxp.py      Wed Nov 01 10:40:46 2006 +0000
@@ -267,10 +267,14 @@ class Parser:
         elif c == 'x':
             self.state.fn = self.state_hex
             self.state.val = 0
-        else:
+        elif c in string.octdigits:
             self.state.fn = self.state_octal
             self.state.val = 0
             self.input_char(c)
+        else:
+            # ignore escape if it doesn't match anything we know
+            self.state.parent.buf += '\\'
+            self.pop_state()
 
     def state_octal(self, c):
         def octaldigit(c):
@@ -375,7 +379,7 @@ def show(sxpr, out=sys.stdout):
 def show(sxpr, out=sys.stdout):
     """Print an sxpr in bracketed (lisp-style) syntax.
     """
-    if isinstance(sxpr, types.ListType):
+    if isinstance(sxpr, (types.ListType, types.TupleType)):
         out.write(k_list_open)
         i = 0
         for x in sxpr:
@@ -393,7 +397,7 @@ def show_xml(sxpr, out=sys.stdout):
 def show_xml(sxpr, out=sys.stdout):
     """Print an sxpr in XML syntax.
     """
-    if isinstance(sxpr, types.ListType):
+    if isinstance(sxpr, (types.ListType, types.TupleType)):
         element = name(sxpr)
         out.write('<%s' % element)
         for attr in attributes(sxpr):
@@ -416,7 +420,7 @@ def elementp(sxpr, elt=None):
     sxpr sxpr
     elt  element type
     """
-    return (isinstance(sxpr, types.ListType)
+    return (isinstance(sxpr, (types.ListType, types.TupleType))
             and len(sxpr)
             and (None == elt or sxpr[0] == elt))
 
@@ -432,7 +436,7 @@ def name(sxpr):
     val = None
     if isinstance(sxpr, types.StringType):
         val = sxpr
-    elif isinstance(sxpr, types.ListType) and len(sxpr):
+    elif isinstance(sxpr, (types.ListType, types.TupleType)) and len(sxpr):
         val = sxpr[0]
     return val
 
@@ -444,7 +448,7 @@ def attributes(sxpr):
     returns attribute list
     """
     val = []
-    if isinstance(sxpr, types.ListType) and len(sxpr) > 1:
+    if isinstance(sxpr, (types.ListType, types.TupleType)) and len(sxpr) > 1:
         attr = sxpr[1]
         if elementp(attr, k_attr_open):
             val = attr[1:]
@@ -474,7 +478,7 @@ def children(sxpr, elt=None):
     returns children (filtered by elt if specified)
     """
     val = []
-    if isinstance(sxpr, types.ListType) and len(sxpr) > 1:
+    if isinstance(sxpr, (types.ListType, types.TupleType)) and len(sxpr) > 1:
         i = 1
         x = sxpr[i]
         if elementp(x, k_attr_open):
@@ -563,7 +567,7 @@ def with_id(sxpr, id, val=None):
 
     return s-exp or val
     """
-    if isinstance(sxpr, types.ListType):
+    if isinstance(sxpr, (types.ListType, types.TupleType)):
         for n in sxpr:
             if has_id(n, id):
                 val = n
@@ -583,7 +587,7 @@ def child_with_id(sxpr, id, val=None):
 
     return s-exp or val
     """
-    if isinstance(sxpr, types.ListType):
+    if isinstance(sxpr, (types.ListType, types.TupleType)):
         for n in sxpr:
             if has_id(n, id):
                 val = n
@@ -605,7 +609,7 @@ def elements(sxpr, ctxt=None):
     yield (sxpr, ctxt)
     i = 0
     for n in children(sxpr):
-        if isinstance(n, types.ListType):
+        if isinstance(n, (types.ListType, types.TupleType)):
             # Calling elements() recursively does not generate recursively,
             # it just returns a generator object. So we must iterate over it.
             for v in elements(n, (i, sxpr, ctxt)):
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xend/uuid.py
--- a/tools/python/xen/xend/uuid.py     Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xend/uuid.py     Wed Nov 01 10:40:46 2006 +0000
@@ -54,10 +54,6 @@ uuidFactory = getUuidRandom
 uuidFactory = getUuidRandom
 
 
-def create():
-    return uuidFactory()
-
-
 def toString(u):
     return "-".join(["%02x" * 4, "%02x" * 2, "%02x" * 2, "%02x" * 2,
                      "%02x" * 6]) % tuple(u)
@@ -65,3 +61,9 @@ def fromString(s):
 def fromString(s):
     s = s.replace('-', '')
     return [ int(s[i : i + 2], 16) for i in range(0, 32, 2) ]
+
+def create():
+    return uuidFactory()
+
+def createString():
+    return toString(create())
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xm/create.py
--- a/tools/python/xen/xm/create.py     Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xm/create.py     Wed Nov 01 10:40:46 2006 +0000
@@ -299,7 +299,7 @@ gopts.var('vif', val="type=TYPE,mac=MAC,
           This option may be repeated to add more than one vif.
           Specifying vifs will increase the number of interfaces as needed.""")
 
-gopts.var('vtpm', val="instance=INSTANCE,backend=DOM",
+gopts.var('vtpm', val="instance=INSTANCE,backend=DOM,type=TYPE",
           fn=append_value, default=[],
           use="""Add a TPM interface. On the backend side use the given
           instance as virtual TPM instance. The given number is merely the
@@ -307,7 +307,11 @@ gopts.var('vtpm', val="instance=INSTANCE
           which instance number will actually be assigned to the domain.
           The associtation between virtual machine and the TPM instance
           number can be found in /etc/xen/vtpm.db. Use the backend in the
-          given domain.""")
+          given domain.
+          The type parameter can be used to select a specific driver type
+          that the VM can use. To prevent a fully virtualized domain (HVM)
+          from being able to access an emulated device model, you may specify
+          'paravirtualized' here.""")
 
 gopts.var('access_control', val="policy=POLICY,label=LABEL",
           fn=append_value, default=[],
@@ -450,6 +454,18 @@ gopts.var('uuid', val='',
           will be randomly generated if this option is not set, just like MAC 
           addresses for virtual network interfaces.  This must be a unique 
           value across the entire cluster.""")
+
+gopts.var('on_xend_start', val='ignore|start',
+          fn=set_value, default='ignore',
+          use='Action to perform when xend starts')
+
+gopts.var('on_xend_stop', val='continue|shutdown|suspend',
+          fn=set_value, default="ignore",
+          use="""Behaviour when Xend stops:
+          - ignore:         Domain continues to run;
+          - shutdown:       Domain is shutdown;
+          - suspend:        Domain is suspended;
+          """)
 
 def err(msg):
     """Print an error to stderr and exit.
@@ -585,27 +601,28 @@ def configure_vtpm(config_devs, vals):
     """Create the config for virtual TPM interfaces.
     """
     vtpm = vals.vtpm
-    vtpm_n = 1
-    for idx in range(0, vtpm_n):
-        if idx < len(vtpm):
-            d = vtpm[idx]
-            instance = d.get('instance')
-            if instance == "VTPMD":
-                instance = "0"
-            else:
-                if instance != None:
-                    try:
-                        if int(instance) == 0:
-                            err('VM config error: vTPM instance must not be 
0.')
-                    except ValueError:
-                        err('Vm config error: could not parse instance 
number.')
-            backend = d.get('backend')
-            config_vtpm = ['vtpm']
-            if instance:
-                config_vtpm.append(['pref_instance', instance])
-            if backend:
-                config_vtpm.append(['backend', backend])
-            config_devs.append(['device', config_vtpm])
+    if len(vtpm) > 0:
+        d = vtpm[0]
+        instance = d.get('instance')
+        if instance == "VTPMD":
+            instance = "0"
+        else:
+            if instance != None:
+                try:
+                    if int(instance) == 0:
+                        err('VM config error: vTPM instance must not be 0.')
+                except ValueError:
+                    err('Vm config error: could not parse instance number.')
+        backend = d.get('backend')
+        typ = d.get('type')
+        config_vtpm = ['vtpm']
+        if instance:
+            config_vtpm.append(['pref_instance', instance])
+        if backend:
+            config_vtpm.append(['backend', backend])
+        if typ:
+            config_vtpm.append(['type', type])
+        config_devs.append(['device', config_vtpm])
 
 
 def configure_vifs(config_devs, vals):
@@ -682,8 +699,9 @@ def make_config(vals):
                 config.append([n, v])
 
     map(add_conf, ['name', 'memory', 'maxmem', 'shadow_memory',
-                   'restart', 'on_poweroff', 'on_reboot', 'on_crash',
-                   'vcpus', 'features'])
+                   'restart', 'on_poweroff',
+                   'on_reboot', 'on_crash', 'vcpus', 'features',
+                   'on_xend_start', 'on_xend_stop'])
 
     if vals.uuid is not None:
         config.append(['uuid', vals.uuid])
@@ -1151,8 +1169,11 @@ def config_security_check(config, verbos
             (res_label, res_policy) = security.get_res_label(resource)
             if not res_label:
                 res_label = ""
-            print "   --> res:"+res_label+" ("+res_policy+")"
-            print "   --> dom:"+domain_label+" ("+domain_policy+")"
+            print "   --> res: %s (%s)" % (str(res_label),
+                                           str(res_policy))
+            print "   --> dom: %s (%s)" % (str(domain_label),
+                                           str(domain_policy))
+
             answer = 0
 
     return answer
diff -r 874cc0ff214d -r 33e9c88aab02 tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py       Wed Nov 01 09:55:43 2006 +0000
+++ b/tools/python/xen/xm/main.py       Wed Nov 01 10:40:46 2006 +0000
@@ -91,6 +91,15 @@ SUBCOMMAND_HELP = {
     'top'         : ('', 'Monitor a host and the domains in real time.'),
     'unpause'     : ('<Domain>', 'Unpause a paused domain.'),
     'uptime'      : ('[-s] <Domain>', 'Print uptime for a domain.'),
+
+    # Life cycle xm commands
+    'new'         : ('<ConfigFile> [options] [vars]',
+                     'Adds a domain to Xend domain management'),
+    'delete'      : ('<DomainName>',
+                     'Remove a domain from Xend domain management.'),
+    'start'       : ('<DomainName>', 'Start a Xend managed domain'),
+    'resume'      : ('<DomainName>', 'Resume a Xend managed domain'),
+    'suspend'     : ('<DomainName>', 'Suspend a Xend maanged domain'),
 
     # less used commands
 
@@ -194,6 +203,8 @@ common_commands = [
 common_commands = [
     "console",
     "create",
+    "new",
+    "delete",
     "destroy",
     "dump-core",
     "help",
@@ -203,8 +214,11 @@ common_commands = [
     "pause",
     "reboot",
     "restore",
+    "resume",
     "save",
     "shutdown",
+    "start",
+    "suspend",
     "top",
     "unpause",
     "uptime",
@@ -214,6 +228,8 @@ domain_commands = [
 domain_commands = [
     "console",
     "create",
+    "new",
+    "delete",
     "destroy",
     "domid",
     "domname",
@@ -226,8 +242,11 @@ domain_commands = [
     "reboot",
     "rename",
     "restore",
+    "resume",
     "save",
     "shutdown",
+    "start",
+    "suspend",
     "sysrq",
     "top",
     "unpause",
@@ -469,9 +488,9 @@ def xm_restore(args):
 
 def getDomains(domain_names, full = 0):
     if domain_names:
-        return [server.xend.domain(dom) for dom in domain_names]
-    else:
-        return server.xend.domains(1)
+        return [server.xend.domain(dom, full) for dom in domain_names]
+    else:
+        return server.xend.domains(1, full)
 
 
 def xm_list(args):
@@ -683,6 +702,26 @@ def xm_vcpu_list(args):
 
             print format % locals()
 
+def xm_start(args):
+    arg_check(args, "start", 1)
+    dom = args[0]
+    server.xend.domain.start(dom)
+
+def xm_delete(args):
+    arg_check(args, "delete", 1)
+    dom = args[0]
+    server.xend.domain.delete(dom)
+
+def xm_suspend(args):
+    arg_check(args, "suspend", 1)
+    dom = args[0]
+    server.xend.domain.suspend(dom)
+
+def xm_resume(args):
+    arg_check(args, "resume", 1)
+    dom = args[0]
+    server.xend.domain.resume(dom)
+    
 def xm_reboot(args):
     arg_check(args, "reboot", 1, 3)
     from xen.xm import shutdown
@@ -1323,6 +1362,7 @@ commands = {
     # xenstat commands
     "top": xm_top,
     # domain commands
+    "delete": xm_delete,
     "destroy": xm_destroy,
     "domid": xm_domid,
     "domname": xm_domname,
@@ -1332,8 +1372,10 @@ commands = {
     "restore": xm_restore,
     "save": xm_save,
     "shutdown": xm_shutdown,
+    "start": xm_start,
     "sysrq": xm_sysrq,
     "uptime": xm_uptime,
+    "suspend": xm_suspend,
     "list": xm_list,
     # memory commands
     "mem-max": xm_mem_max,
@@ -1373,13 +1415,14 @@ commands = {
 ## The commands supported by a separate argument parser in xend.xm.
 IMPORTED_COMMANDS = [
     'create',
+    'new',    
     'migrate',
     'labels',
-    'addlabel',
     'cfgbootpolicy',
     'makepolicy',
     'loadpolicy',
-    'dumppolicy',
+    'dumppolicy',        
+    'addlabel',
     'rmlabel',
     'getlabel',
     'dry-run',
diff -r 874cc0ff214d -r 33e9c88aab02 docs/xen-api/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/xen-api/Makefile     Wed Nov 01 10:40:46 2006 +0000
@@ -0,0 +1,23 @@
+TEX := $(wildcard *.tex)
+EPS := $(wildcard *.eps)
+EPSDOT := $(patsubst %.dot,%.eps,$(wildcard *.dot))
+
+.PHONY: all
+all: xenapi.pdf xenapi.ps
+
+xenapi.dvi: $(TEX) $(EPS) $(EPSDOT)
+       latex xenapi.tex
+       latex xenapi.tex
+
+%.pdf: %.ps
+       ps2pdf $< $@
+
+%.ps: %.dvi
+       dvips $< -o $@
+
+%.eps: %.dot
+       dot -Tps $< >$@
+
+.PHONY: clean
+clean:
+       rm -f *.pdf *.ps *.dvi *.aux *.log $(EPSDOT)
diff -r 874cc0ff214d -r 33e9c88aab02 docs/xen-api/coversheet.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/xen-api/coversheet.tex       Wed Nov 01 10:40:46 2006 +0000
@@ -0,0 +1,50 @@
+%
+% Copyright (c) 2006 XenSource, Inc.
+%
+% Permission is granted to copy, distribute and/or modify this document under
+% the terms of the GNU Free Documentation License, Version 1.2 or any later
+% version published by the Free Software Foundation; with no Invariant
+% Sections, no Front-Cover Texts and no Back-Cover Texts.  A copy of the
+% license is included in the section entitled
+% "GNU Free Documentation License" or the file fdl.tex.
+%
+% Authors: Ewan Mellor, Richard Sharp, Dave Scott, Jon Harrop.
+%
+
+\pagestyle{empty}
+
+\doctitle{} \hfill \revstring{}
+
+\vspace{1cm}
+
+\begin{center}
+\resizebox{8cm}{!}{\includegraphics{\coversheetlogo}}
+
+\vspace{3cm}
+
+\begin{Huge}
+  \doctitle{}
+\end{Huge}
+
+\vspace{1cm}
+\begin{Large}
+Version: \revstring{}\\
+Date: \datestring{}
+\\
+\releasestatement{}
+
+\vspace{1cm}
+\begin{tabular}{rl}
+\docauthors{}
+\end{tabular}
+
+\end{Large}
+\end{center}
+
+\vfill
+
+\noindent
+\legalnotice{}
+
+\newpage
+\pagestyle{plain}
\ No newline at end of file
diff -r 874cc0ff214d -r 33e9c88aab02 docs/xen-api/fdl.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/xen-api/fdl.tex      Wed Nov 01 10:40:46 2006 +0000
@@ -0,0 +1,488 @@
+\chapter{GNU Free Documentation License}
+%\label{label_fdl}
+
+ \begin{center}
+
+       Version 1.2, November 2002
+
+
+ Copyright \copyright 2000,2001,2002  Free Software Foundation, Inc.
+ 
+ \bigskip
+ 
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+  
+ \bigskip
+ 
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+\end{center}
+
+
+\begin{center}
+{\bf\large Preamble}
+\end{center}
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+\begin{center}
+{\Large\bf 1. APPLICABILITY AND DEFINITIONS}
+\addcontentsline{toc}{section}{1. APPLICABILITY AND DEFINITIONS}
+\end{center}
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The \textbf{"Document"}, below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as \textbf{"you"}.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A \textbf{"Modified Version"} of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A \textbf{"Secondary Section"} is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject.  (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The \textbf{"Cover Texts"} are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A \textbf{"Transparent"} copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not "Transparent" is called \textbf{"Opaque"}.
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification.  Examples of
+transparent image formats include PNG, XCF and JPG.  Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The \textbf{"Title Page"} means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as \textbf{"Acknowledgements"},
+\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.)  
+To \textbf{"Preserve the Title"}
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+\begin{center}
+{\Large\bf 2. VERBATIM COPYING}
+\addcontentsline{toc}{section}{2. VERBATIM COPYING}
+\end{center}
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+\begin{center}
+{\Large\bf 3. COPYING IN QUANTITY}
+\addcontentsline{toc}{section}{3. COPYING IN QUANTITY}
+\end{center}
+
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+\begin{center}
+{\Large\bf 4. MODIFICATIONS}
+\addcontentsline{toc}{section}{4. MODIFICATIONS}
+\end{center}
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+\begin{itemize}
+\item[A.] 
+   Use in the Title Page (and on the covers, if any) a title distinct
+   from that of the Document, and from those of previous versions
+   (which should, if there were any, be listed in the History section
+   of the Document).  You may use the same title as a previous version
+   if the original publisher of that version gives permission.
+   
+\item[B.]
+   List on the Title Page, as authors, one or more persons or entities
+   responsible for authorship of the modifications in the Modified
+   Version, together with at least five of the principal authors of the
+   Document (all of its principal authors, if it has fewer than five),
+   unless they release you from this requirement.
+   
+\item[C.]
+   State on the Title page the name of the publisher of the
+   Modified Version, as the publisher.
+   
+\item[D.]
+   Preserve all the copyright notices of the Document.
+   
+\item[E.]
+   Add an appropriate copyright notice for your modifications
+   adjacent to the other copyright notices.
+   
+\item[F.]
+   Include, immediately after the copyright notices, a license notice
+   giving the public permission to use the Modified Version under the
+   terms of this License, in the form shown in the Addendum below.
+   
+\item[G.]
+   Preserve in that license notice the full lists of Invariant Sections
+   and required Cover Texts given in the Document's license notice.
+   
+\item[H.]
+   Include an unaltered copy of this License.
+   
+\item[I.]
+   Preserve the section Entitled "History", Preserve its Title, and add
+   to it an item stating at least the title, year, new authors, and
+   publisher of the Modified Version as given on the Title Page.  If
+   there is no section Entitled "History" in the Document, create one
+   stating the title, year, authors, and publisher of the Document as
+   given on its Title Page, then add an item describing the Modified
+   Version as stated in the previous sentence.
+   
+\item[J.]
+   Preserve the network location, if any, given in the Document for
+   public access to a Transparent copy of the Document, and likewise
+   the network locations given in the Document for previous versions
+   it was based on.  These may be placed in the "History" section.
+   You may omit a network location for a work that was published at
+   least four years before the Document itself, or if the original
+   publisher of the version it refers to gives permission.
+   
+\item[K.]
+   For any section Entitled "Acknowledgements" or "Dedications",
+   Preserve the Title of the section, and preserve in the section all
+   the substance and tone of each of the contributor acknowledgements
+   and/or dedications given therein.
+   
+\item[L.]
+   Preserve all the Invariant Sections of the Document,
+   unaltered in their text and in their titles.  Section numbers
+   or the equivalent are not considered part of the section titles.
+   
+\item[M.]
+   Delete any section Entitled "Endorsements".  Such a section
+   may not be included in the Modified Version.
+   
+\item[N.]
+   Do not retitle any existing section to be Entitled "Endorsements"
+   or to conflict in title with any Invariant Section.
+   
+\item[O.]
+   Preserve any Warranty Disclaimers.
+\end{itemize}
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+\begin{center}
+{\Large\bf 5. COMBINING DOCUMENTS}
+\addcontentsline{toc}{section}{5. COMBINING DOCUMENTS}
+\end{center}
+
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications".  You must delete all sections
+Entitled "Endorsements".
+
+\begin{center}
+{\Large\bf 6. COLLECTIONS OF DOCUMENTS}
+\addcontentsline{toc}{section}{6. COLLECTIONS OF DOCUMENTS}
+\end{center}
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+\begin{center}
+{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS}
+\addcontentsline{toc}{section}{7. AGGREGATION WITH INDEPENDENT WORKS}
+\end{center}
+
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+\begin{center}
+{\Large\bf 8. TRANSLATION}
+\addcontentsline{toc}{section}{8. TRANSLATION}
+\end{center}
+
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+\begin{center}
+{\Large\bf 9. TERMINATION}
+\addcontentsline{toc}{section}{9. TERMINATION}
+\end{center}
+
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License.  Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License.  However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+\begin{center}
+{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE}
+\addcontentsline{toc}{section}{10. FUTURE REVISIONS OF THIS LICENSE}
+\end{center}
+
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+\begin{center}
+{\Large\bf ADDENDUM: How to use this License for your documents}
+\addcontentsline{toc}{section}{ADDENDUM: How to use this License for your 
documents}
+\end{center}
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+\bigskip
+\begin{quote}
+    Copyright \copyright  YEAR  YOUR NAME.
+    Permission is granted to copy, distribute and/or modify this document
+    under the terms of the GNU Free Documentation License, Version 1.2
+    or any later version published by the Free Software Foundation;
+    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+    A copy of the license is included in the section entitled "GNU
+    Free Documentation License".
+\end{quote}
+\bigskip
+    
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+\bigskip
+\begin{quote}
+    with the Invariant Sections being LIST THEIR TITLES, with the
+    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+\end{quote}
+\bigskip
+    
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff -r 874cc0ff214d -r 33e9c88aab02 docs/xen-api/presentation.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/xen-api/presentation.tex     Wed Nov 01 10:40:46 2006 +0000
@@ -0,0 +1,149 @@
+%
+% Copyright (c) 2006 XenSource, Inc.
+%
+% Permission is granted to copy, distribute and/or modify this document under
+% the terms of the GNU Free Documentation License, Version 1.2 or any later
+% version published by the Free Software Foundation; with no Invariant
+% Sections, no Front-Cover Texts and no Back-Cover Texts.  A copy of the
+% license is included in the section entitled
+% "GNU Free Documentation License" or the file fdl.tex.
+%
+% Authors: Ewan Mellor, Richard Sharp, Dave Scott, Jon Harrop.
+%
+
+The API is presented here as a set of Remote Procedure Calls, with a wire
+format based upon XML-RPC. No specific language bindings are prescribed,
+although examples will be given in the python programming language.
+ 
+Although we adopt some terminology from object-oriented programming, 
+future client language bindings may or may not be object oriented.
+The API reference uses the terminology {\em classes\/} and {\em objects\/}.
+For our purposes a {\em class\/} is simply a hierarchical namespace;
+an {\em object\/} is an instance of a class with its fields set to
+specific values. Objects are persistent and exist on the server-side.
+Clients may obtain opaque references to these server-side objects and then
+access their fields via get/set RPCs.
+
+%In each class there is a $\mathit{uid}$ field that assigns an indentifier
+%to each object. This $\mathit{uid}$ serves as an object reference
+%on both client- and server-side, and is often included as an argument in
+%RPC messages.
+
+For each class we specify a list of
+fields along with their {\em types\/} and {\em qualifiers\/}.  A
+qualifier is one of:
+\begin{itemize}
+  \item $\mathit{RO}_\mathit{run}$: the field is Read
+Only. Furthermore, its value is automatically computed at runtime.
+For example: current CPU load and disk IO throughput.
+  \item $\mathit{RO}_\mathit{ins}$: the field must be manually set
+when a new object is created, but is then Read Only for
+the duration of the object's life.
+For example, the maximum memory addressable by a guest is set 
+before the guest boots.
+  \item $\mathit{RW}$: the field is Read/Write. For example, the name
+of a VM.
+\end{itemize}
+
+A full list of types is given in Chapter~\ref{api-reference}. However,
+there are three types that require explicit mention:
+\begin{itemize}
+  \item $t~\mathit{Ref}$: signifies a reference to an object
+of type $t$.
+  \item $t~\mathit{Set}$: signifies a set containing
+values of type $t$.
+  \item $(t_1, t_2)~\mathit{Map}$: signifies a mapping from values of
+type $t_1$ to values of type $t_2$.
+\end{itemize}
+
+Note that there are a number of cases where {\em Ref}s are {\em doubly
+linked\/}---e.g.\ a VM has a field called {\tt groups} of type
+$(\mathit{VMGroup}~\mathit{Ref})~\mathit{Set}$; this field lists
+the VMGroups that a particular VM is part of. Similarly, the VMGroups
+class has a field called {\tt VMs} of type $(\mathit{VM}~{\mathit
+Ref})~\mathit{Set}$ that contains the VMs that are part of a particular
+VMGroup. These two fields are {\em bound together\/}, in the sense that
+adding a new VMGroup to a VM causes the VMs field of the corresponding
+VMGroup object to be updated automatically.
+
+The API reference explicitly lists the fields that are
+bound together in this way. It also contains a diagram that shows
+relationships between classes. In this diagram an edge signifies the
+existance of a pair of fields that are bound together, using standard
+crows-foot notation to signify the type of relationship (e.g.\
+one-many, many-many).
+
+\section{RPCs associated with fields}
+
+Each field, {\tt f}, has an RPC accessor associated with it
+that returns {\tt f}'s value:
+\begin{itemize}
+\item ``{\tt get\_f(Ref x)}'': takes a
+{\tt Ref} that refers to an object and returns the value of {\tt f}.
+\end{itemize}
+
+Each field, {\tt f}, with attribute
+{\em RW} and whose outermost type is {\em Set\/} has the following
+additional RPCs associated with it:
+\begin{itemize}
+\item an ``{\tt add\_to\_f(Ref x, v)}'' RPC adds a new element v to the 
set\footnote{
+%
+Since sets cannot contain duplicate values this operation has no action in the 
case
+that {\tt v} was already in the set.
+%
+};
+\item a ``{\tt remove\_from\_f(Ref x, v)}'' RPC removes element {\tt v} from 
the set;
+\end{itemize}
+
+Each field, {\tt f}, with attribute
+{\em RW} and whose outermost type is {\em Map\/} has the following
+additional RPCs associated with it:
+\begin{itemize}
+\item an ``{\tt add\_to\_f(Ref x, k, v)}'' RPC adds new pair {\tt (k, v)}
+to the mapping stored in {\tt f} in object {\tt x}. Adding a new pair for 
duplicate
+key, {\tt k}, overwrites any previous mapping for {\tt k}.
+\item a ``{\tt remove\_from\_f(Ref x, k)}'' RPC removes the pair with key {\tt 
k}
+from the mapping stored in {\tt f} in object {\tt x}.
+\end{itemize}
+
+Each field whose outermost type is neither {\em Set\/} nor {\em Map\/}, 
+but whose attribute is {\em RW} has an RPC acessor associated with it
+that sets its value:
+\begin{itemize}
+\item For {\em RW\/} ({\em R\/}ead/{\em
+W\/}rite), a ``{\tt set\_f(Ref x, v)}'' RPC function is also provided.
+This sets field {\tt f} on object {\tt x} to value {\tt v}.
+\end{itemize}
+
+\section{RPCs associated with classes}
+
+\begin{itemize}
+\item Each class has a {\em constructor\/} RPC named ``{\tt create}'' that
+takes as parameters all fields marked {\em RW\/} and
+$\mathit{RO}_\mathit{ins}$. The result of this RPC is that a new {\em
+persistent\/} object is created on the server-side with the specified field
+values.
+
+\item Each class has a {\tt get\_by\_uuid(uuid)} RPC that returns the object
+of that class that has the specified {\tt uuid}.
+
+\item Each class that has a {\tt name\_label} field has a
+``{\tt get\_by\_name\_label(name)}'' RPC that returns a set of objects of that
+class that have the specified {\tt label}.
+
+\item Each class has a ``{\tt to\_XML()}'' RPC that serialises the
+state of all fields as an XML string.
+
+\item Each class has a ``{\tt destroy(Ref x)}'' RPC that explicitly deletes
+the persistent object specified by {\tt x} from the system.  This is a
+non-cascading delete -- if the object being removed is referenced by another
+object then the {\tt destroy} call will fail.
+
+\end{itemize}
+
+\subsection{Additional RPCs}
+
+As well as the RPCs enumerated above, some classes have additional RPCs
+associated with them. For example, the {\tt VM} class have RPCs for cloning,
+suspending, starting etc. Such additional RPCs are described explicitly
+in the API reference.
diff -r 874cc0ff214d -r 33e9c88aab02 docs/xen-api/todo.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/xen-api/todo.tex     Wed Nov 01 10:40:46 2006 +0000
@@ -0,0 +1,140 @@
+%
+% Copyright (c) 2006 XenSource, Inc.
+%
+% Permission is granted to copy, distribute and/or modify this document under
+% the terms of the GNU Free Documentation License, Version 1.2 or any later
+% version published by the Free Software Foundation; with no Invariant
+% Sections, no Front-Cover Texts and no Back-Cover Texts.  A copy of the
+% license is included in the section entitled
+% "GNU Free Documentation License" or the file fdl.tex.
+%
+% Authors: Ewan Mellor, Richard Sharp, Dave Scott, Jon Harrop.
+%
+
+\section{To-Do}
+
+Lots and lots! Including:
+
+\subsection{Clarity}
+
+\begin{itemize}
+
+\item Roll constructors and get\_by\_uuid etc (section 1.2) into section 2 so
+that it is clearer that each class has these.
+
+\item Emphasise that enums are strings on the wire, and so are not restricted
+to a certain number of bits.
+
+\item Clarify return values, in particular that void means return a status
+code, potential error description, but otherwise no value.
+
+\item Talk about UUID generation.
+
+\item Clarify session behaviour wrt timeouts and disconnects.
+
+\item Clarify behaviour of progress field on asyncrhonous request polling when
+that request fails.
+
+\end{itemize}
+
+\subsection{Content}
+
+\subsubsection{Model}
+
+\begin{itemize}
+
+\item Improve the set of available power\_states and corresponding lifecycle
+semantics.  Rename power\_state, maybe.
+
+\item Specify the CPU scheduler configuration properly, inc CPU affinity,
+weights, etc.
+
+\item Add Vm.architecture and Host.compatible\_architecture fields.
+
+\item Add migration calls, including the ability to test whether a migration
+will succeed, and authentication token exchange.
+
+\item Improve asynchronous task handling, with a registration call, a
+``blocking poll'' call, and an explicit notification destination.  Registration
+for ``power\_state'' is useful.
+
+\item Specify that session keys outlive the HTTP session, and add a timeout
+for them (configurable in the tools).
+
+\item Add places for people to store extra data (``otherConfig'' perhaps)
+
+\item Specify how hardware UUIDs are used / accessed.
+
+\item Marking VDIs as exclusive / shareable (locking?)
+
+\item Consider how to represent CDROMs (as VDIs?)
+
+\item Define lists of exceptions which may be thrown by each RPC, including
+error codes and parameters.
+
+\item Host characteristics: minimum amount of memory, TPM, network bandwidth,
+amount of host memory, amount consumed by VMs, max amount available for new
+VMs?
+
+\item Cooked resource monitoring interface.
+
+\item Network needs additional attributes that provide media characteristics
+of the NIC:
+
+\begin{itemize}
+
+\item RO bandwidth integer Bandwidth in mbps
+\item RO latency integer time in ms for an icmp roundtrip to a host on the
+same subnet.
+
+\end{itemize}
+
+\item TPM
+\begin{itemize}
+
+\item Would it not be better to have a class TPM and a member TPMs ((TPM ref)
+Set) containing an array of zero or one references to TPMs? I assume that
+an empty array would make it clear that no TPM is associated with the VM
+instead of encoding its existence into TPM/instance or TPM/backend
+somehow. The current members instance and backend could then be moved into
+the TPM class.
+
+\item Also a Xen system can be running an access control policy where each
+VM's run-time access to resources is restricted by the label it has been given
+compared to those of the resources. Currently a VM's configuration file may
+contain a line like access\_control[policy='$<$name of the system's
+policy$>$',label='$<$label given to VM$>$'].  I think the identifiers 'policy'
+and 'label' should also be part of the VM class either directly in the form
+'access\_control/policy' or indirectly in an access\_control class.
+
+\end{itemize}
+
+\item Mike Day's Vm.profile field?
+
+\item Clone customisation?
+
+\item NIC teaming?  The NIC field of the Network class should be a list (Set)
+so that we can signify NIC teaming. (Combining physical NICs in a single host
+interface to achieve greater bandwidth).
+
+\end{itemize}
+
+\subsubsection{Transport}
+
+\begin{itemize}
+
+\item Allow non-HTTP transports.  Explicitly allow stdio transport, for SSH.
+
+\end{itemize}
+
+\subsubsection{Authentication}
+
+\begin{itemize}
+
+\item Delegation to the transport layer.
+
+\item Extend PAM exchange across the wire.
+
+\item Fine-grained access control.
+
+\end{itemize}
diff -r 874cc0ff214d -r 33e9c88aab02 docs/xen-api/vm-lifecycle.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/xen-api/vm-lifecycle.tex     Wed Nov 01 10:40:46 2006 +0000
@@ -0,0 +1,24 @@
+%
+% Copyright (c) 2006 XenSource, Inc.
+%
+% Permission is granted to copy, distribute and/or modify this document under
+% the terms of the GNU Free Documentation License, Version 1.2 or any later
+% version published by the Free Software Foundation; with no Invariant
+% Sections, no Front-Cover Texts and no Back-Cover Texts.  A copy of the
+% license is included in the section entitled
+% "GNU Free Documentation License" or the file fdl.tex.
+%
+% Authors: Ewan Mellor, Richard Sharp, Dave Scott, Jon Harrop.
+%
+
+\section{VM Lifecycle}
+
+\begin{figure}
+\centering
+\resizebox{0.9\textwidth}{!}{\includegraphics{vm_lifecycle}}
+\caption{VM Lifecycle}
+\label{fig-vm-lifecycle}
+\end{figure}
+
+Figure~\ref{fig-vm-lifecycle} shows the states that a VM can be in
+and the API calls that can be used to move the VM between these states.
diff -r 874cc0ff214d -r 33e9c88aab02 docs/xen-api/vm_lifecycle.dot
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/xen-api/vm_lifecycle.dot     Wed Nov 01 10:40:46 2006 +0000
@@ -0,0 +1,15 @@
+digraph g{
+
+node [shape=box]; "powered down" paused running suspended;
+
+"powered down" -> paused [label="start(paused=true)"];
+"powered down" -> running [label="start(paused=false)"];
+running -> suspended [label="suspend"];
+suspended -> running [label="resume(paused=false)"];
+suspended -> paused [label="resume(paused=true)"];
+paused -> suspended [label="suspend"];
+paused -> running [label="resume"];
+running -> "powered down" [label="cleanShutdown /\nhardShutdown"];
+running -> paused [label="pause"];
+
+}
\ No newline at end of file
diff -r 874cc0ff214d -r 33e9c88aab02 docs/xen-api/wire-protocol.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/xen-api/wire-protocol.tex    Wed Nov 01 10:40:46 2006 +0000
@@ -0,0 +1,287 @@
+%
+% Copyright (c) 2006 XenSource, Inc.
+%
+% Permission is granted to copy, distribute and/or modify this document under
+% the terms of the GNU Free Documentation License, Version 1.2 or any later
+% version published by the Free Software Foundation; with no Invariant
+% Sections, no Front-Cover Texts and no Back-Cover Texts.  A copy of the
+% license is included in the section entitled
+% "GNU Free Documentation License" or the file fdl.tex.
+%
+% Authors: Ewan Mellor, Richard Sharp, Dave Scott, Jon Harrop.
+%
+
+\section{Wire Protocol for Remote API Calls}
+
+API calls are sent over a network to a Xen-enabled host using
+the XML-RPC protocol. In this Section we describe how the
+higher-level types used in our API Reference are mapped to
+primitive XML-RPC types.
+
+In our API Reference we specify the signatures of API functions in the 
following
+style:
+\begin{verbatim}
+    (ref_vm Set)   Host.ListAllVMs()
+\end{verbatim}
+This specifies that the function with name {\tt Host.ListAllVMs} takes
+no parameters and returns a Set of {\tt ref\_vm}s.
+These types are mapped onto XML-RPC types in a straight-forward manner:
+\begin{itemize}
+  \item Floats, Bools, DateTimes and Strings map directly to the XML-RPC {\tt
+  double}, {\tt boolean}, {\tt dateTime.iso8601}, and {\tt string} elements.
+
+  \item all our ``{\tt ref\_}'' types (e.g.\ {\tt ref\_vm} in the above
+  example) map to XML-RPC's {\tt String} type.  The string itself is the OSF
+  DCE UUID presentation format (as output by {\tt uuidgen}, etc).
+
+  \item ints are all assumed to be 64-bit in our API and are encoded as a
+  string of decimal digits (rather than using XML-RPC's built-in 32-bit {\tt
+  i4} type).
+
+  \item values of enum types are encoded as strings. For example, a value of
+  {\tt destroy} of type {\tt on\_normal\_exit}, would be conveyed as:
+  \begin{verbatim}
+    <value><string>destroy</string></value>
+  \end{verbatim}
+
+  \item for all our types, {\tt t}, our type {\tt t Set} simply maps to
+  XML-RPC's {\tt Array} type, so for example a value of type {\tt cpu\_feature
+  Set} would be transmitted like this:
+
+  \begin{verbatim}
+<array>
+  <data>
+    <value><string>CX8</string></value>
+    <value><string>PSE36</string></value>
+    <value><string>FPU</string></value>
+  </data>
+</array> 
+  \end{verbatim}
+
+  \item for types {\tt k} and {\tt v}, our type {\tt (k, v) Map} maps onto an
+  XML-RPC struct, with the key as the name of the struct.  Note that the {\tt
+  (k, v) Map} type is only valid when {\tt k} is a {\tt String}, {\tt Ref}, or
+  {\tt Int}, and in each case the keys of the maps are stringified as
+  above. For example, the {\tt (String, double) Map} containing a the mappings
+  Mike $\rightarrow$ 2.3 and John $\rightarrow$ 1.2 would be represented as:
+
+  \begin{verbatim}
+<value>
+  <struct>
+    <member>
+      <name>Mike</name>
+      <value><double>2.3</double></value>
+    </member>
+    <member>
+      <name>John</name>
+      <value><double>1.2</double></value>
+    </member>
+  </struct>
+</value>
+  \end{verbatim}
+
+  \item our {\tt Void} type is transmitted as an empty string.
+
+\end{itemize}
+
+\subsection{Return Values/Status Codes}
+\label{synchronous-result}
+
+The return value of an RPC call is an XML-RPC {\tt Struct}.
+
+\begin{itemize}
+\item The first element of the struct is named {\tt Status}; it
+contains a string value indicating whether the result of the call was
+a ``{\tt Success}'' or a ``{\tt Failure}''.
+\end{itemize}
+
+If {\tt Status} was set to {\tt Success} then the Struct contains a second
+element named {\tt Value}:
+\begin{itemize}
+\item The element of the struct named {\tt Value} contains the function's 
return value.
+\end{itemize}
+
+In the case where {\tt Status} is set to {\tt Failure} then
+the struct contains a second element named {\tt ErrorDescription}:
+\begin{itemize}
+\item The element of the struct named {\tt ErrorDescription} contains
+an array of string values. The first element of the array represents an error 
code;
+the remainder of the array represents error parameters relating to that code.
+\end{itemize}
+
+For example, an XML-RPC return value from the {\tt Host.ListAllVMs} function 
above
+may look like this:
+\begin{verbatim}
+    <struct>
+       <member>
+         <name>Status</name>
+         <value>Success</value>
+       </member>
+       <member>
+          <name>Value</name>
+          <value>
+            <array>
+               <data>
+                 <value>vm-id-1</value>
+                 <value>vm-id-2</value>
+                 <value>vm-id-3</value>
+               </data>
+            </array>
+         </value>
+       </member>
+    </struct>
+\end{verbatim}
+
+\section{Making XML-RPC Calls}
+
+\subsection{Transport Layer}
+
+We ought to support at least
+\begin{itemize}
+\item HTTP/S for remote administration
+\item HTTP over Unix domain sockets for local administration
+\end{itemize}
+
+\subsection{Session Layer}
+
+The XML-RPC interface is session-based; before you can make arbitrary RPC calls
+you must login and initiate a session. For example:
+\begin{verbatim}
+   session_id    Session.login_with_password(string uname, string pwd)
+\end{verbatim}
+Where {\tt uname} and {\tt password} refer to your username and password
+respectively, as defined by the Xen administrator.
+The {\tt session\_id} returned by {\tt Session.Login} is passed to subequent
+RPC calls as an authentication token.
+
+A session can be terminated with the {\tt Session.Logout} function:
+\begin{verbatim}
+   void          Session.Logout(session_id session)
+\end{verbatim}
+
+\subsection{Synchronous and Asynchronous invocation}
+
+Each method call (apart from those on ``Session'' and ``Task'' objects)
+can be made either synchronously or asynchronously.
+A synchronous RPC call blocks until the
+return value is received; the return value of a synchronous RPC call is
+exactly as specified in Section~\ref{synchronous-result}.
+
+Each of the methods specified in the API Reference is synchronous.
+However, although not listed explicitly in this document, each
+method call has an asynchronous analogue in the {\tt Async}
+namespace. For example, synchronous call {\tt VM.Install(...)}
+(described in Chapter~\ref{api-reference})
+has an asynchronous counterpart, {\tt
+Async.VM.Install(...)}, that is non-blocking.
+
+Instead of returning its result directly, an asynchronous RPC call
+returns a {\tt task-id}; this identifier is subsequently used
+to track the status of a running asynchronous RPC. Note that an asychronous
+call may fail immediately, before a {\tt task-id} has even been created---to
+represent this eventuality, the returned {\tt task-id}
+is wrapped in an XML-RPC struct with a {\tt Status}, {\tt ErrorDescription} and
+{\tt Value} fields, exactly as specified in Section~\ref{synchronous-result}.
+
+The {\tt task-id} is provided in the {\tt Value} field if {\tt Status} is set 
to
+{\tt Success}.
+
+Two special RPC calls are provided to poll the status of
+asynchronous calls:
+\begin{verbatim}
+    Array<task_id>  Async.Task.GetAllTasks (session_id s)
+    task_status     Async.Task.GetStatus   (session_id s, task_id t)
+\end{verbatim}
+
+{\tt Async.Task.GetAllTasks} returns a set of the currently
+executing asynchronous tasks belong to the current user\footnote{
+%
+The current user is determined by the username that was provided
+to {\tt Session.Login}.
+%
+}.
+
+{\tt Async.Task.GetStatus} returns a {\tt task\_status} result.
+This is an XML-RPC struct with three elements:
+\begin{itemize}
+  \item The first element is named {\tt Progress} and contains
+an {\tt Integer} between 0 and 100 representing the estimated percentage of
+the task currently completed.
+  \item The second element is named {\tt ETA} and contains a {\tt DateTime} 
+representing the estimated time the task will be complete.
+  \item The third element is named {\tt Result}. If {\tt Progress}
+is not 100 then {\tt Result} contains the empty string. If {\tt Progress}
+{\em is\/} set to 100, then {\tt Result} contains the function's return
+result (as specified in Section~\ref{synchronous-result})\footnote{
+%
+Recall that this itself is a struct potentially containing status, errorcode,
+value fields etc.
+%
+}.
+\end{itemize}
+
+\section{Example interactive session}
+
+This section describes how an interactive session might look, using the python
+XML-RPC client library. 
+
+First, initialise python and import the library {\tt xmlrpclib}:
+
+\begin{verbatim}
+\$ python2.4
+...
+>>> import xmlrpclib
+\end{verbatim}
+
+Create a python object referencing the remote server:
+
+\begin{verbatim}
+>>> xen = xmlrpclib.Server("http://test:4464";)
+\end{verbatim}
+
+Acquire a session token by logging in with a username and password 
(error-handling ommitted for brevity; the session token is pointed to by the 
key {\tt 'Value'} in the returned dictionary)
+
+\begin{verbatim}
+>>> session = xen.Session.do_login_with_password("user", "passwd")['Value']
+\end{verbatim}
+
+When serialised, this call looks like the following:
+
+\begin{verbatim}
+<?xml version='1.0'?>
+<methodCall>
+  <methodName>Session.do_login_with_password</methodName>
+  <params>
+    <param>
+      <value><string>user</string></value>
+    </param>
+    <param>
+      <value><string>passwd</string></value>
+    </param>
+  </params>
+</methodCall>
+\end{verbatim}
+
+Next, the user may acquire a list of all the VMs known to the host: (Note the 
call takes the session token as the only parameter)
+
+\begin{verbatim}
+>>> all_vms = xen.VM.do_list(session)['Value']
+>>> all_vms
+['b7b92d9e-d442-4710-92a5-ab039fd7d89b', 
'23e1e837-abbf-4675-b077-d4007989b0cc', '2045dbc0-0734-4eea-9cb2-b8218c6b5bf2', 
'3202ae18-a046-4c32-9fda-e32e9631866e']
+\end{verbatim}
+
+Note the VM references are internally UUIDs. Once a reference to a VM has been 
acquired a lifecycle operation may be invoked:
+
+\begin{verbatim}
+>>> xen.VM.do_start(session, all_vms[3], False)
+{'Status': 'Failure', 'ErrorDescription': 'Operation not implemented'}
+\end{verbatim}
+
+In this case the {\tt start} message has not been implemented and an error 
response has been returned. Currently these high-level errors are returned as 
structured data (rather than as XMLRPC faults), allowing for internationalised 
errors in future. Finally, here are some examples of using accessors for object 
fields:
+
+\begin{verbatim}
+>>> xen.VM.getname_label(session, all_vms[3])['Value']
+'SMP'
+>>> xen.VM.getname_description(session, all_vms[3])['Value']
+'Debian for Xen'
+\end{verbatim}
diff -r 874cc0ff214d -r 33e9c88aab02 docs/xen-api/xen.eps
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/xen-api/xen.eps      Wed Nov 01 10:40:46 2006 +0000
@@ -0,0 +1,44 @@
+%!PS-Adobe-3.1 EPSF-3.0
%%Title: xen3-1.0.eps
%%Creator: Adobe Illustrator(R) 11
%%AI8_CreatorVersion: 11.0.0
%AI9_PrintingDataBegin
%%For: Rich Quarles
%%CreationDate: 6/26/06
%%BoundingBox: 0 0 215 94
%%HiResBoundingBox: 0 0 214.1646 93.5196
%%CropBox: 0 0 214.1646 93.5196
%%LanguageLevel: 2
%%DocumentData: Clean7Bit
%%Pages: 1
%%DocumentNeededResources: 
%%DocumentSuppliedResources: procset Adobe_AGM_Image (1.0 0)
%%+ procset Adobe_CoolType_Utility_T42 (1.0 0)
%%+ procset Adobe_CoolType_Utility_MAKEOCF (1.19 0)
%%+ procset Adobe_CoolType_Core (2.23 0)
%%+ procset Adobe_AGM_Core (2.0 0)
%%+ procset Adobe_AGM_Utils (1.0 0)
%%DocumentFonts: 
%%DocumentNeededFonts: 
%%DocumentNeededFeatures: 
%%DocumentSuppliedFeatures: 
%%DocumentProcessColors:  Black
%%DocumentCustomColors: 
%%CMYKCustomColor: 
%%RGBCustomColor: 
%ADO_ContainsXMP: MainFirst
%AI7_Thumbnail: 128 56 8
%%BeginData: 6266 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C45FD19FFA8A87DA8FD077DA8A8FD70FF7D7D527D527D527D7D7D527D
%527D52FD047DFD6AFFA87D527D7D7D52FD0B7D52FD047DA8A8FD65FFA87D
%7D527D52FD047DFD09A87D7D527D527D527D7DFD63FFA8FD057DA8A8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8FD057DA8FD5FFFA87D527D527D7DA8
%A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A87D7D527D527DA8FD5CFF
%A87D527D7DA8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF
%A8A87D7D527DA8FD5AFF7D7D527D7DFD04A8FFA8A8A8FFA8A8A8FFA8A8A8
%FFA8A8A8FFA8A8A8FFFD04A8527D527DA8FD58FFFD057DFFA8FFA8FFA8FF
%A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8FD047DA8FD56
%FF7D7D527D7DA8A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8
%A8A8FFA8A8A8FFA8A8FD047DA8FD54FFA8FD047DFFA8FFA8FFA8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFFD047DA8FD
%52FFA87D527D7DFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8A8FFA8A8A8FF
%A8A8A8FFFD05A8FFA8FFA8FFFD047DA8FD51FF7D7D7D27FD0E527DA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFFFA827FD0552272727FD09527DFD47FFA8
%527D7D52FD0FF852A8A8A8FFA8A8A8FFA8A8A8FFA8FFA87DFD12F852FD48
%FF7D7D7DA8A827FD0FF87DFFFFA8FFA8FFA8FFA8FFA8FFFF7DFD11F8277D
%FD48FF7D7D527DA8FFA827FD0FF8FD04A8FFA8A8A8FFA8FFA852FD11F827
%A8FD49FF7D7D7DA8FFA8FF7DFD0FF827FFA8FFA8FFA8FFA8FFA827FD11F8
%52FD4AFFA8527D7DFFA8A8A8FF52FD0FF852FFA8FFA8A8A8FF7DFD12F87D
%FD4BFF7D7D7DA8A8FFA8FFA8FF52FD0FF87DFFA8FFA8FF7DFD12F852A8FD
%4AFFA87D527DA8A8A8FFA8A8A8FF27FD0EF827A8FFA8FF52FD11F8277D7D
%7DA8FD07FFA8FFA8FFA8FD23FFA8FFA8FD17FFA8527D7DFFA8FFA8FFA8FF
%FFFFFD0FF852FFFF27FD11F852FF7D7D7DFFA87D52522727F827F827F827
%27527DFD0BFFFD04A87DA8A8A87DFD04A8FFFFFFA87D5227F827F8272752
%7DFD14FF7D7D52FD04A8FFA8A8A8FFA8A8FD0FF85227FD10F8277DFFA8A8
%5227FD11F82752FD07FFA8FD0CF8FFFFA827FD0CF87DFFFFFFA8F8F8F87D
%27F8527DF8F8FD04FF7D7D7DA8FFA8FFA8FFA8FFA8FFFF7DFD1FF827A8FF
%FF7D27FD16F8A8FD05FFA8FD0BF827FF7DFD0FF87DFFFFFFA8F87DFF27F8
%2727F8F8FFFFFFA8527D7DA8A8FFA8A8A8FFA8A8A8FFA852FD1DF852A8FF
%A852FD19F87DFD04FF52FD0BF82727FD11F8A8FFFFA8F852FFF827F8F852
%F8FFFFFFA87D7DA8A8FFA8FFA8FFA8FFA8FFA8FFA852FD1BF8A8FFFFA827
%FD0BF87DA8FF7D52FD0BF8FD04FF52FD1EF852FFFFFF52A8FFFD047DA852
%FFFFFFA8527D7DFFA8FFA8A8A8FFA8A8A8FFA8FFA827FD18F827A8A8FFA8
%27FD0AF827FD06FF27FD0AF827FFFFFFFD0FF82727FD0EF852FD0FFFA87D
%52A8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA827FD16F852FFFFFFA852FD0BF8
%FD07FF52FD0AF827FFFFA8FD0DF827A8FFFFFF52FD0CF852FD0FFFA8527D
%7DFFA8A8A8FFA8A8A8FFA8A8A8FFA8FF7DFD15F852FFA8A8A87DFD0BF852
%FD04FFA8FFFF52FD0BF8A8FF7DFD0CF827FD05FFA8FD0CF852FD0FFFA87D
%7DA8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF52FD12F827A8FFA8FFA8FF27
%FD0CF8FD0727FD0CF8A8FF52FD0CF8FD07FFFD0CF87DFD0FFFA8527D7DFF
%A8A8A8FFA8A8A8FFA8A8A8FFA8FF52FD12F852A8FFA8A8A8FF7DFD20F8FF
%FF27FD0BF852FD06FF7DFD0CF8A8FD0FFFA87D7DA8A8FFA8FFA8FFA8FFA8
%FFA8FFFFA827FD12F827A8FFA8FFA8FFA87DFD1FF827FFFFFD0CF87DFD06
%FF7DFD0BF827FD10FFA8527D7DA8A8FFA8A8A8FFA8A8A8FFA87DFD15F852
%A8A8A8FFA8FF52FD0CF827F827F827F827F827F827F827F827F827F82752
%FF7DFD0CF8A8FD06FF27FD0BF827FD10FFA87D7D7DA8FFA8FFA8FFA8FFA8
%FFFF7DFD17F87DFFFFA8FFA852FD0BF8A8FD15FF7DFD0BF827FD07FF27FD
%0BF87DFD11FF7D7D7DA8A8FFA8A8A8FFA8FFA852FD19F87DA8FFA8FF52FD
%0BF87DFD15FF27FD0BF827FD06FFA8FD0CF8A8FD11FFA8527DA8FFA8FFA8
%FFA8FFA827FD1BF8A8A8FFFF7DFD0BF87DFD06FF7D272752275227522752
%27277DFFFF27FD0BF87DFD06FF7DFD0CF8FD12FF7D7D52FD06A8FF52FD1D
%F827FFA8FFA8FD0CF8A8FD04FF52FD0CF8A8FFA8FD0CF87DFD06FF52FD0B
%F852FD13FF7D7D7DFFA8FFFFFF52FD1FF852FFA8FF7DFD0CF8525252FD0D
%F8A8FFFF7DFD0CF8FD07FF27FD0BF852FD13FF7D527DA8FFA8A827FD11F8
%2727FD0EF852FFA8FF52FD19F827A8FFFFFF52FD0BF852FD06FFA8FD0CF8
%A8FD13FFA87D52A8FF7DFD12F852FF52FD0FF87DFFA8FF7D27FD15F8277D
%FD05FFFD0CF852FD06FF7DFD0CF8FD15FF527D7D52FD12F87DFFA8FF27FD
%0EF827A8FFA8FFA87D2727FD0FF85252A8FD06FFA8522727275227272752
%272727A8FD06FF52FD04275227272752272752FD15FFA85227FD11F827A8
%FFA8FFA8A8FD0FF852FFFFA8FF7D7D7DA8A8A87D7D527D52FD047DA8A8FD
%40FF7DFD12F852A8FFA8FFA8A8A87DFD0FF87DFFFF7D7D527DFD4DFF7DFD
%12F87DA8FFA8FFA8FFA8FFA852FD0FF8A8A87D7D7DA8FD4CFF52FD12F8FD
%04A8FFA8A8A8FFA8FF7DFD10F8FD047DFD4CFF27FD11F827FFFFFFA8FFA8
%FFA8FFA8FFA8FF7DFD0FF8277D7DFD4BFFA8FD12F852FFA8FFA8A8A8FFA8
%A8A8FFA8A8A8FF27FD0FF827FD4BFF7DFD0FF827F8277DFFA8FFA8FFA8FF
%A8FFA8FFA8FFA8FFA8A8FD10F87DFD4AFF7DFD0AA87D5252527D7DA8A8FF
%A8FFA8A8A8FFA8A8A8FFA8A8A8FFFD04A87DA87DA87DA87DA87DFD0452A8
%A8A8FD56FFA87D7D7DA8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF
%A8FFA8FD05FFA8FD047DFD5BFFA8527D527D7DA8A8FFA8A8A8FFA8A8A8FF
%A8A8A8FFA8A8A8FFA8A8A8FFA8A8FD047D52FD5EFFFD057DA8A8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8FD057DFD60FF7D7D527D527D7D
%FD04A8FFA8A8A8FFA8A8A8FFFD04A87D7D527D527D7DFD62FFA8A8FD077D
%FD04A8FFFD06A8FD077DA8FD67FF7D7D527D527D527D527D527D7D7D527D
%527D527D527D7DFD6BFFA8FD047D527D7D7D527D7D7D52FD047DFD70FFFD
%04A8FD077DA8A8FFA8FD58FFFF
%%EndData
%%EndComments
%%BeginDefaults
%%ViewingOrientation: 1 0 0 1
%%EndDefaults
%%BeginProlog
%%BeginResource: procset Adobe_AGM_Utils 1.0 0
%%Version: 1.0 0
%%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc.  All Rights Reserved.
systemdict /setpacking known
{
        currentpacking
        true setpacking
} if
userdict /Adobe_AGM_Utils 68 dict dup begin put
/bdf
{
        bind def
} bind def
/nd{
        null def
}bdf
/xdf
{
        exch def
}bdf
/ldf 
{
        load def
}bdf
/ddf
{
        put
}bdf    
/xddf
{
        3 -1 roll put
}bdf    
/xpt
{
        exch put
}bdf
/ndf
{ 
        exch dup where{
                pop pop pop
        }{
                xdf
        }ifelse
}def
/cdndf
{
        exch dup currentdict exch known{
                pop pop
        }{
                exch def
        }ifelse
}def
/bdict
{
        mark
}bdf
/edict
{
        counttomark 2 idiv dup dict begin {def} repeat pop currentdict end
}def
/ps_level
        /languagelevel where{
                pop systemdict /languagelevel get exec
        }{
                1
        }ifelse
def
/level2 
        ps_level 2 ge
def
/level3 
        ps_level 3 ge
def
/ps_version
        {version cvr} stopped {
                -1
        }if
def
/makereadonlyarray
{
        /packedarray where{
                pop packedarray
        }{
                array astore readonly
        }ifelse
}bdf
/map_reserved_ink_name
{
        dup type /stringtype eq{
                dup /Red eq{
                        pop (_Red_)
                }{
                        dup /Green eq{
                                pop (_Green_)
                        }{
                                dup /Blue eq{
                                        pop (_Blue_)
                                }{
                                        dup () cvn eq{
                                                pop (Process)
                                        }if
                                }ifelse
                        }ifelse
                }ifelse
        }if
}bdf
/AGMUTIL_GSTATE 22 dict def
/get_gstate
{
        AGMUTIL_GSTATE begin
        /AGMUTIL_GSTATE_clr_spc currentcolorspace def
        /AGMUTIL_GSTATE_clr_indx 0 def
        /AGMUTIL_GSTATE_clr_comps 12 array def
        mark currentcolor counttomark
                {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put
                /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def} 
repeat pop
        /AGMUTIL_GSTATE_fnt rootfont def
        /AGMUTIL_GSTATE_lw currentlinewidth def
        /AGMUTIL_GSTATE_lc currentlinecap def
        /AGMUTIL_GSTATE_lj currentlinejoin def
        /AGMUTIL_GSTATE_ml currentmiterlimit def
        currentdash /AGMUTIL_GSTATE_do xdf /AGMUTIL_GSTATE_da xdf
        /AGMUTIL_GSTATE_sa currentstrokeadjust def
        /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def
        /AGMUTIL_GSTATE_op currentoverprint def
        /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def
        /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def
        currentcolortransfer cvlit /AGMUTIL_GSTATE_gy_xfer xdf cvlit 
/AGMUTIL_GSTATE_b_xfer xdf
                cvlit /AGMUTIL_GSTATE_g_xfer xdf cvlit /AGMUTIL_GSTATE_r_xfer 
xdf
        /AGMUTIL_GSTATE_ht currenthalftone def
        /AGMUTIL_GSTATE_flt currentflat def
        end
}def
/set_gstate
{
        AGMUTIL_GSTATE begin
        AGMUTIL_GSTATE_clr_spc setcolorspace
        AGMUTIL_GSTATE_clr_indx {AGMUTIL_GSTATE_clr_comps 
AGMUTIL_GSTATE_clr_indx 1 sub get
        /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def} repeat 
setcolor
        AGMUTIL_GSTATE_fnt setfont
        AGMUTIL_GSTATE_lw setlinewidth
        AGMUTIL_GSTATE_lc setlinecap
        AGMUTIL_GSTATE_lj setlinejoin
        AGMUTIL_GSTATE_ml setmiterlimit
        AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash
        AGMUTIL_GSTATE_sa setstrokeadjust
        AGMUTIL_GSTATE_clr_rnd setcolorrendering
        AGMUTIL_GSTATE_op setoverprint
        AGMUTIL_GSTATE_bg cvx setblackgeneration
        AGMUTIL_GSTATE_ucr cvx setundercolorremoval
        AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx 
AGMUTIL_GSTATE_b_xfer cvx
                AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer
        AGMUTIL_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or
                {
                currenthalftone /HalftoneType get AGMUTIL_GSTATE_ht 
/HalftoneType get ne
                        {
                          mark AGMUTIL_GSTATE_ht {sethalftone} stopped 
cleartomark
                        } if
                }{
                AGMUTIL_GSTATE_ht sethalftone
                } ifelse
        AGMUTIL_GSTATE_flt setflat
        end
}def
/get_gstate_and_matrix
{
        AGMUTIL_GSTATE begin
        /AGMUTIL_GSTATE_ctm matrix currentmatrix def
        end
        get_gstate
}def
/set_gstate_and_matrix
{
        set_gstate
        AGMUTIL_GSTATE begin
        AGMUTIL_GSTATE_ctm setmatrix
        end
}def
/AGMUTIL_str256 256 string def
/AGMUTIL_src256 256 string def
/AGMUTIL_dst64 64 string def
/AGMUTIL_srcLen nd
/AGMUTIL_ndx nd
/agm_sethalftone
{ 
        dup
        begin
                /_Data load
                /Thresholds xdf
        end
        level3 
        { sethalftone }{
                dup /HalftoneType get 3 eq {
                        sethalftone
                } {pop} ifelse
        }ifelse
} def 
/rdcmntline
{
        currentfile AGMUTIL_str256 readline pop
        (%) anchorsearch {pop} if
} bdf
/filter_cmyk
{       
        dup type /filetype ne{
                exch () /SubFileDecode filter
        }
        {
                exch pop
        }
        ifelse
        [
        exch
        {
                AGMUTIL_src256 readstring pop
                dup length /AGMUTIL_srcLen exch def
                /AGMUTIL_ndx 0 def
                AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{
                        1 index exch get
                        AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put
                        /AGMUTIL_ndx AGMUTIL_ndx 1 add def
                }for
                pop
                AGMUTIL_dst64 0 AGMUTIL_ndx getinterval
        }
        bind
        /exec cvx
        ] cvx
} bdf
/filter_indexed_devn
{
        cvi Names length mul names_index add Lookup exch get
} bdf
/filter_devn
{       
        4 dict begin
        /srcStr xdf
        /dstStr xdf
        dup type /filetype ne{
                0 () /SubFileDecode filter
        }if
        [
        exch
                [
                        /devicen_colorspace_dict /AGMCORE_gget cvx /begin cvx
                        currentdict /srcStr get /readstring cvx /pop cvx
                        /dup cvx /length cvx 0 /gt cvx [
                                Adobe_AGM_Utils /AGMUTIL_ndx 0 /ddf cvx
                                names_index Names length currentdict /srcStr 
get length 1 sub {
                                        1 /index cvx /exch cvx /get cvx
                                        currentdict /dstStr get /AGMUTIL_ndx 
/load cvx 3 -1 /roll cvx /put cvx
                                        Adobe_AGM_Utils /AGMUTIL_ndx 
/AGMUTIL_ndx /load cvx 1 /add cvx /ddf cvx
                                } for
                                currentdict /dstStr get 0 /AGMUTIL_ndx /load 
cvx /getinterval cvx
                        ] cvx /if cvx
                        /end cvx
                ] cvx
                bind
                /exec cvx
        ] cvx
        end
} bdf
/AGMUTIL_imagefile nd
/read_image_file
{
        AGMUTIL_imagefile 0 setfileposition
        10 dict begin
        /imageDict xdf
        /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
        /imbufIdx 0 def
        /origDataSource imageDict /DataSource get def
        /origMultipleDataSources imageDict /MultipleDataSources get def
        /origDecode imageDict /Decode get def
        /dstDataStr imageDict /Width get colorSpaceElemCnt mul string def
        /srcDataStrs [ imageDict begin
                currentdict /MultipleDataSources known {MultipleDataSources 
{DataSource length}{1}ifelse}{1} ifelse
                {
                        Width Decode length 2 div mul cvi string
                } repeat
                end ] def
        imageDict /MultipleDataSources known {MultipleDataSources}{false} ifelse
        {
                /imbufCnt imageDict /DataSource get length def
                /imbufs imbufCnt array def
                0 1 imbufCnt 1 sub {
                        /imbufIdx xdf
                        imbufs imbufIdx imbufLen string put
                        imageDict /DataSource get imbufIdx [ AGMUTIL_imagefile 
imbufs imbufIdx get /readstring cvx /pop cvx ] cvx put
                } for
                DeviceN_PS2 {
                        imageDict begin
                        /DataSource [ DataSource /devn_sep_datasource cvx ] cvx 
def
                        /MultipleDataSources false def
                        /Decode [0 1] def
                        end
                } if
        }{
                /imbuf imbufLen string def
                Indexed_DeviceN level3 not and DeviceN_NoneName or {
                        imageDict begin
                        /DataSource [AGMUTIL_imagefile Decode BitsPerComponent 
false 1 /filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource 
/exec cvx] cvx def
                        /Decode [0 1] def
                        end
                }{
                        imageDict /DataSource {AGMUTIL_imagefile imbuf 
readstring pop} put
                } ifelse
        } ifelse
        imageDict exch
        load exec
        imageDict /DataSource origDataSource put
        imageDict /MultipleDataSources origMultipleDataSources put
        imageDict /Decode origDecode put        
        end
} bdf
/write_image_file
{
        begin
        { (AGMUTIL_imagefile) (w+) file } stopped{
                false
        }{
                Adobe_AGM_Utils/AGMUTIL_imagefile xddf 
                2 dict begin
                /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
                MultipleDataSources {DataSource 0 get}{DataSource}ifelse type 
/filetype eq {
                        /imbuf imbufLen string def
                }if
                1 1 Height { 
                        pop
                        MultipleDataSources {
                                0 1 DataSource length 1 sub {
                                        DataSource type dup
                                        /arraytype eq {
                                                pop DataSource exch get exec
                                        }{
                                                /filetype eq {
                                                        DataSource exch get 
imbuf readstring pop
                                                }{
                                                        DataSource exch get
                                                } ifelse
                                        } ifelse
                                        AGMUTIL_imagefile exch writestring
                                } for
                        }{
                                DataSource type dup
                                /arraytype eq {
                                        pop DataSource exec
                                }{
                                        /filetype eq {
                                                DataSource imbuf readstring pop
                                        }{
                                                DataSource
                                        } ifelse
                                } ifelse
                                AGMUTIL_imagefile exch writestring
                        } ifelse
                }for
                end
                true
        }ifelse
        end
} bdf
/close_image_file
{
        AGMUTIL_imagefile closefile (AGMUTIL_imagefile) deletefile
}def
statusdict /product known userdict /AGMP_current_show known not and{
        /pstr statusdict /product get def
        pstr (HP LaserJet 2200) eq      
        pstr (HP LaserJet 4000 Series) eq or
        pstr (HP LaserJet 4050 Series ) eq or
        pstr (HP LaserJet 8000 Series) eq or
        pstr (HP LaserJet 8100 Series) eq or
        pstr (HP LaserJet 8150 Series) eq or
        pstr (HP LaserJet 5000 Series) eq or
        pstr (HP LaserJet 5100 Series) eq or
        pstr (HP Color LaserJet 4500) eq or
        pstr (HP Color LaserJet 4600) eq or
        pstr (HP LaserJet 5Si) eq or
        pstr (HP LaserJet 1200 Series) eq or
        pstr (HP LaserJet 1300 Series) eq or
        pstr (HP LaserJet 4100 Series) eq or 
        {
                userdict /AGMP_current_show /show load put
                userdict /show {
                  currentcolorspace 0 get
                  /Pattern eq
                  {false charpath f}
                  {AGMP_current_show} ifelse
                } put
        }if
        currentdict /pstr undef
} if
/consumeimagedata
{
        begin
        currentdict /MultipleDataSources known not
                {/MultipleDataSources false def} if
        MultipleDataSources
                {
                1 dict begin
                /flushbuffer Width cvi string def
                1 1 Height cvi
                        {
                        pop
                        0 1 DataSource length 1 sub
                                {
                                DataSource exch get
                                dup type dup 
                                /filetype eq
                                        {
                                        exch flushbuffer readstring pop pop
                                        }if
                                /arraytype eq
                                        {
                                        exec pop
                                        }if
                                }for
                        }for
                end
                }
                {
                /DataSource load type dup 
                /filetype eq
                        {
                        1 dict begin
                        /flushbuffer Width Decode length 2 div mul cvi string 
def
                        1 1 Height { pop DataSource flushbuffer readstring pop 
pop} for
                        end
                        }if
                /arraytype eq
                        {
                        1 1 Height { pop DataSource pop } for
                        }if
                }ifelse
        end
}bdf
/addprocs
{
          2{/exec load}repeat
          3 1 roll
          [ 5 1 roll ] bind cvx
}def
/modify_halftone_xfer
{
        currenthalftone dup length dict copy begin
         currentdict 2 index known{
                1 index load dup length dict copy begin
                currentdict/TransferFunction known{
                        /TransferFunction load
                }{
                        currenttransfer
                }ifelse
                 addprocs /TransferFunction xdf 
                 currentdict end def
                currentdict end sethalftone
        }{ 
                currentdict/TransferFunction known{
                        /TransferFunction load 
                }{
                        currenttransfer
                }ifelse
                addprocs /TransferFunction xdf
                currentdict end sethalftone             
                pop
        }ifelse
}def
/clonearray
{
        dup xcheck exch
        dup length array exch
        Adobe_AGM_Core/AGMCORE_tmp -1 ddf 
        {
        Adobe_AGM_Core/AGMCORE_tmp AGMCORE_tmp 1 add ddf 
        dup type /dicttype eq
                {
                        AGMCORE_tmp
                        exch
                        clonedict
                        Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf 
                } if
        dup type /arraytype eq
                {
                        AGMCORE_tmp exch
                        clonearray
                        Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf 
                } if
        exch dup
        AGMCORE_tmp 4 -1 roll put
        }forall
        exch {cvx} if
}bdf
/clonedict
{
        dup length dict
        begin
                {
                dup type /dicttype eq
                        {
                                clonedict
                        } if
                dup type /arraytype eq
                        {
                                clonearray
                        } if
                def
                }forall
        currentdict
        end
}bdf
/DeviceN_PS2
{
        /currentcolorspace AGMCORE_gget 0 get /DeviceN eq level3 not and
} bdf
/Indexed_DeviceN
{
        /indexed_colorspace_dict AGMCORE_gget dup null ne {
                /CSD known
        }{
                pop false
        } ifelse
} bdf
/DeviceN_NoneName
{       
        /Names where {
                pop
                false Names
                {
                        (None) eq or
                } forall
        }{
                false
        }ifelse
} bdf
/DeviceN_PS2_inRip_seps
{
        /AGMCORE_in_rip_sep where
        {
                pop dup type dup /arraytype eq exch /packedarraytype eq or
                {
                        dup 0 get /DeviceN eq level3 not and AGMCORE_in_rip_sep 
and
                        {
                                /currentcolorspace exch AGMCORE_gput
                                false
                        }
                        {
                                true
                        }ifelse
                }
                {
                        true
                } ifelse
        }
        {
                true
        } ifelse
} bdf
/base_colorspace_type
{
        dup type /arraytype eq {0 get} if
} bdf
/doc_setup{
        Adobe_AGM_Utils begin
}bdf
/doc_trailer{
        currentdict Adobe_AGM_Utils eq{
                end
        }if
}bdf
systemdict /setpacking known
{
        setpacking
} if
%%EndResource
%%BeginResource: procset Adobe_AGM_Core 2.0 0
%%Version: 2.0 0
%%Copyright: Copyright (C) 1997-2003 Adobe Systems, Inc.  All Rights Reserved.
systemdict /setpacking known
{
        currentpacking
        true setpacking
} if
userdict /Adobe_AGM_Core 216 dict dup begin put
/nd{
        null def
}bind def
/Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def
/AGMCORE_str256 256 string def
/AGMCORE_save nd
/AGMCORE_graphicsave nd
/AGMCORE_c 0 def
/AGMCORE_m 0 def
/AGMCORE_y 0 def
/AGMCORE_k 0 def
/AGMCORE_cmykbuf 4 array def
/AGMCORE_screen [currentscreen] cvx def
/AGMCORE_tmp 0 def
/AGMCORE_&setgray nd
/AGMCORE_&setcolor nd
/AGMCORE_&setcolorspace nd
/AGMCORE_&setcmykcolor nd
/AGMCORE_cyan_plate nd
/AGMCORE_magenta_plate nd
/AGMCORE_yellow_plate nd
/AGMCORE_black_plate nd
/AGMCORE_plate_ndx nd
/AGMCORE_get_ink_data nd
/AGMCORE_is_cmyk_sep nd
/AGMCORE_host_sep nd
/AGMCORE_avoid_L2_sep_space nd
/AGMCORE_distilling nd
/AGMCORE_composite_job nd
/AGMCORE_producing_seps nd
/AGMCORE_ps_level -1 def
/AGMCORE_ps_version -1 def
/AGMCORE_environ_ok nd
/AGMCORE_CSA_cache 0 dict def
/AGMCORE_CSD_cache 0 dict def
/AGMCORE_pattern_cache 0 dict def
/AGMCORE_currentoverprint false def
/AGMCORE_deltaX nd
/AGMCORE_deltaY nd
/AGMCORE_name nd
/AGMCORE_sep_special nd
/AGMCORE_err_strings 4 dict def
/AGMCORE_cur_err nd
/AGMCORE_ovp nd
/AGMCORE_current_spot_alias false def
/AGMCORE_inverting false def
/AGMCORE_feature_dictCount nd
/AGMCORE_feature_opCount nd
/AGMCORE_feature_ctm nd
/AGMCORE_ConvertToProcess false def
/AGMCORE_Default_CTM matrix def
/AGMCORE_Default_PageSize nd
/AGMCORE_currentbg nd
/AGMCORE_currentucr nd
/AGMCORE_gradientcache 32 dict def
/AGMCORE_in_pattern false def
/knockout_unitsq nd
/AGMCORE_CRD_cache where{
        pop
}{
        /AGMCORE_CRD_cache 0 dict def
}ifelse
/AGMCORE_key_known
{
        where{
                /Adobe_AGM_Core_Id known
        }{
                false
        }ifelse
}ndf
/flushinput
{
        save
        2 dict begin
        /CompareBuffer 3 -1 roll def
        /readbuffer 256 string def
        mark
        {
        currentfile readbuffer {readline} stopped
                {cleartomark mark}
                {
                not
                        {pop exit}
                if
                CompareBuffer eq
                        {exit}
                if
                }ifelse
        }loop
        cleartomark
        end
        restore
}bdf
/getspotfunction
{
        AGMCORE_screen exch pop exch pop
        dup type /dicttype eq{
                dup /HalftoneType get 1 eq{
                        /SpotFunction get
                }{
                        dup /HalftoneType get 2 eq{
                                /GraySpotFunction get
                        }{ 
                                pop
                                {
                                        abs exch abs 2 copy add 1 gt{
                                                1 sub dup mul exch 1 sub dup 
mul add 1 sub
                                        }{
                                                dup mul exch dup mul add 1 exch 
sub
                                        }ifelse
                                }bind
                        }ifelse
                }ifelse
        }if
} def
/clp_npth
{
        clip newpath
} def
/eoclp_npth
{
        eoclip newpath
} def
/npth_clp
{
        newpath clip
} def
/add_grad
{
        AGMCORE_gradientcache 3 1 roll put
}bdf
/exec_grad
{
        AGMCORE_gradientcache exch get exec
}bdf
/graphic_setup
{
        /AGMCORE_graphicsave save def
        concat
        0 setgray
        0 setlinecap
        0 setlinejoin
        1 setlinewidth
        [] 0 setdash
        10 setmiterlimit
        newpath
        false setoverprint
        false setstrokeadjust
        Adobe_AGM_Core/spot_alias get exec
        /Adobe_AGM_Image where {
                pop
                Adobe_AGM_Image/spot_alias 2 copy known{
                        get exec
                }{
                        pop pop
                }ifelse
        } if
        100 dict begin
        /dictstackcount countdictstack def
        /showpage {} def
        mark
} def
/graphic_cleanup
{
        cleartomark
        dictstackcount 1 countdictstack 1 sub {end}for
        end
        AGMCORE_graphicsave restore
} def
/compose_error_msg
{
        grestoreall initgraphics        
        /Helvetica findfont 10 scalefont setfont
        /AGMCORE_deltaY 100 def
        /AGMCORE_deltaX 310 def
        clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto
        0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto
        0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath
        0 AGMCORE_&setgray
        gsave 1 AGMCORE_&setgray fill grestore 
        1 setlinewidth gsave stroke grestore
        currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto
        /AGMCORE_deltaY 12 def
        /AGMCORE_tmp 0 def
        AGMCORE_err_strings exch get
                {
                dup 32 eq
                        {
                        pop
                        AGMCORE_str256 0 AGMCORE_tmp getinterval
                        stringwidth pop currentpoint pop add AGMCORE_deltaX 28 
add gt
                                {
                                currentpoint AGMCORE_deltaY sub exch pop
                                clippath pathbbox pop pop pop 44 add exch moveto
                                } if
                        AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show
                        0 1 AGMCORE_str256 length 1 sub
                                {
                                AGMCORE_str256 exch 0 put
                                }for
                        /AGMCORE_tmp 0 def
                        }
                        {
                                AGMCORE_str256 exch AGMCORE_tmp xpt
                                /AGMCORE_tmp AGMCORE_tmp 1 add def
                        } ifelse
                } forall
} bdf
/doc_setup{
        Adobe_AGM_Core begin
        /AGMCORE_ps_version xdf
        /AGMCORE_ps_level xdf
        errordict /AGM_handleerror known not{
                errordict /AGM_handleerror errordict /handleerror get put
                errordict /handleerror {
                        Adobe_AGM_Core begin
                        $error /newerror get AGMCORE_cur_err null ne and{
                                $error /newerror false put
                                AGMCORE_cur_err compose_error_msg
                        }if
                        $error /newerror true put
                        end
                        errordict /AGM_handleerror get exec
                        } bind put
                }if
        /AGMCORE_environ_ok 
                ps_level AGMCORE_ps_level ge
                ps_version AGMCORE_ps_version ge and 
                AGMCORE_ps_level -1 eq or
        def
        AGMCORE_environ_ok not
                {/AGMCORE_cur_err /AGMCORE_bad_environ def} if
        /AGMCORE_&setgray systemdict/setgray get def
        level2{
                /AGMCORE_&setcolor systemdict/setcolor get def
                /AGMCORE_&setcolorspace systemdict/setcolorspace get def
        }if
        /AGMCORE_currentbg currentblackgeneration def
        /AGMCORE_currentucr currentundercolorremoval def
        /AGMCORE_distilling
                /product where{
                        pop systemdict/setdistillerparams known product (Adobe 
PostScript Parser) ne and
                }{
                        false
                }ifelse
        def
        level2 not{
                /xput{
                        dup load dup length exch maxlength eq{
                                dup dup load dup
                                length dup 0 eq {pop 1} if 2 mul dict copy def
                        }if
                        load begin
                                def
                        end
                }def
        }{
                /xput{
                        load 3 1 roll put
                }def
        }ifelse
        /AGMCORE_GSTATE AGMCORE_key_known not{
                /AGMCORE_GSTATE 21 dict def
                /AGMCORE_tmpmatrix matrix def
                /AGMCORE_gstack 32 array def
                /AGMCORE_gstackptr 0 def
                /AGMCORE_gstacksaveptr 0 def
                /AGMCORE_gstackframekeys 10 def
                /AGMCORE_&gsave /gsave ldf
                /AGMCORE_&grestore /grestore ldf
                /AGMCORE_&grestoreall /grestoreall ldf
                /AGMCORE_&save /save ldf
                /AGMCORE_gdictcopy {
                        begin
                        { def } forall
                        end
                }def
                /AGMCORE_gput {
                        AGMCORE_gstack AGMCORE_gstackptr get
                        3 1 roll
                        put
                }def
                /AGMCORE_gget {
                        AGMCORE_gstack AGMCORE_gstackptr get
                        exch
                        get
                }def
                /gsave {
                        AGMCORE_&gsave
                        AGMCORE_gstack AGMCORE_gstackptr get
                        AGMCORE_gstackptr 1 add
                        dup 32 ge {limitcheck} if
                        Adobe_AGM_Core exch
                        /AGMCORE_gstackptr xpt
                        AGMCORE_gstack AGMCORE_gstackptr get
                        AGMCORE_gdictcopy
                }def
                /grestore {
                        AGMCORE_&grestore
                        AGMCORE_gstackptr 1 sub
                        dup AGMCORE_gstacksaveptr lt {1 add} if
                        Adobe_AGM_Core exch
                        /AGMCORE_gstackptr xpt
                }def
                /grestoreall {
                        AGMCORE_&grestoreall
                        Adobe_AGM_Core
                        /AGMCORE_gstackptr AGMCORE_gstacksaveptr put 
                }def
                /save {
                        AGMCORE_&save
                        AGMCORE_gstack AGMCORE_gstackptr get
                        AGMCORE_gstackptr 1 add
                        dup 32 ge {limitcheck} if
                        Adobe_AGM_Core begin
                                /AGMCORE_gstackptr exch def
                                /AGMCORE_gstacksaveptr AGMCORE_gstackptr def
                        end
                        AGMCORE_gstack AGMCORE_gstackptr get
                        AGMCORE_gdictcopy
                }def
                0 1 AGMCORE_gstack length 1 sub {
                                AGMCORE_gstack exch AGMCORE_gstackframekeys 
dict put
                } for
        }if
        level3 /AGMCORE_&sysshfill AGMCORE_key_known not and
        {
                /AGMCORE_&sysshfill systemdict/shfill get def
                /AGMCORE_&usrshfill /shfill load def
                /AGMCORE_&sysmakepattern systemdict/makepattern get def
                /AGMCORE_&usrmakepattern /makepattern load def
        }if
        /currentcmykcolor [0 0 0 0] AGMCORE_gput
        /currentstrokeadjust false AGMCORE_gput
        /currentcolorspace [/DeviceGray] AGMCORE_gput
        /sep_tint 0 AGMCORE_gput
        /devicen_tints [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0] AGMCORE_gput
        /sep_colorspace_dict null AGMCORE_gput
        /devicen_colorspace_dict null AGMCORE_gput
        /indexed_colorspace_dict null AGMCORE_gput
        /currentcolor_intent () AGMCORE_gput
        /customcolor_tint 1 AGMCORE_gput
        <<
        /MaxPatternItem currentsystemparams /MaxPatternCache get
        >>
        setuserparams
        end
}def
/page_setup
{
        /setcmykcolor where{
                pop
                Adobe_AGM_Core/AGMCORE_&setcmykcolor /setcmykcolor load put
        }if
        Adobe_AGM_Core begin
        /setcmykcolor
        {
                4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch 
AGMCORE_gput
                1 sub 4 1 roll
                3 {
                        3 index add neg dup 0 lt {
                                pop 0
                        } if
                        3 1 roll
                } repeat
                setrgbcolor pop
        }ndf
        /currentcmykcolor
        {
                /currentcmykcolor AGMCORE_gget aload pop
        }ndf
        /setoverprint
        {
                pop
        }ndf
        /currentoverprint
        {
                false
        }ndf
        /AGMCORE_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch 
dup mul add sqrt def
        /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def
        /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def
        /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def
        /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def
        /AGMCORE_plate_ndx 
                AGMCORE_cyan_plate{ 
                        0
                }{
                        AGMCORE_magenta_plate{
                                1
                        }{
                                AGMCORE_yellow_plate{
                                        2
                                }{
                                        AGMCORE_black_plate{
                                                3
                                        }{
                                                4
                                        }ifelse
                                }ifelse
                        }ifelse
                }ifelse
                def
        /AGMCORE_have_reported_unsupported_color_space false def
        /AGMCORE_report_unsupported_color_space
        {
                AGMCORE_have_reported_unsupported_color_space false eq
                {
                        (Warning: Job contains content that cannot be separated 
with on-host methods. This content appears on the black plate, and knocks out 
all other plates.) ==
                        Adobe_AGM_Core 
/AGMCORE_have_reported_unsupported_color_space true ddf
                } if
        }def
        /AGMCORE_composite_job
                AGMCORE_cyan_plate AGMCORE_magenta_plate and 
AGMCORE_yellow_plate and AGMCORE_black_plate and def
        /AGMCORE_in_rip_sep
                /AGMCORE_in_rip_sep where{
                        pop AGMCORE_in_rip_sep
                }{
                        AGMCORE_distilling 
                        {
                                false
                        }{
                                userdict/Adobe_AGM_OnHost_Seps known{
                                        false
                                }{
                                        level2{
                                                currentpagedevice/Separations 2 
copy known{
                                                        get
                                                }{
                                                        pop pop false
                                                }ifelse
                                        }{
                                                false
                                        }ifelse
                                }ifelse
                        }ifelse
                }ifelse
        def
        /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or 
def
        /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def
        /AGM_preserve_spots 
                /AGM_preserve_spots where{
                        pop AGM_preserve_spots
                }{
                        AGMCORE_distilling AGMCORE_producing_seps or
                }ifelse
        def
        /AGM_is_distiller_preserving_spotimages
        {
                currentdistillerparams/PreserveOverprintSettings known
                {
                        currentdistillerparams/PreserveOverprintSettings get
                                {
                                        
currentdistillerparams/ColorConversionStrategy known
                                        {
                                                
currentdistillerparams/ColorConversionStrategy get
                                                /LeaveColorUnchanged eq
                                        }{
                                                true
                                        }ifelse
                                }{
                                        false
                                }ifelse
                }{
                        false
                }ifelse
        }def
        /convert_spot_to_process where {pop}{
                /convert_spot_to_process
                {
                        dup map_alias {
                                /Name get exch pop
                        } if
                        dup dup (None) eq exch (All) eq or
                                {
                                pop false
                                }{
                                AGMCORE_host_sep
                                { 
                                        gsave
                                        1 0 0 0 setcmykcolor currentgray 1 exch 
sub
                                        0 1 0 0 setcmykcolor currentgray 1 exch 
sub
                                        0 0 1 0 setcmykcolor currentgray 1 exch 
sub
                                        0 0 0 1 setcmykcolor currentgray 1 exch 
sub
                                        add add add 0 eq
                                        {
                                                pop false
                                        }{
                                                false setoverprint
                                                1 1 1 1 5 -1 roll 
findcmykcustomcolor 1 setcustomcolor
                                                currentgray 0 eq
                                        }ifelse
                                        grestore
                                }{
                                        AGMCORE_distilling
                                        {
                                                pop 
AGM_is_distiller_preserving_spotimages not
                                        }{
                                                Adobe_AGM_Core/AGMCORE_name xddf
                                                false
                                                
Adobe_AGM_Core/AGMCORE_in_pattern known {Adobe_AGM_Core/AGMCORE_in_pattern 
get}{false} ifelse
                                                not 
currentpagedevice/OverrideSeparations known and
                                                        {
                                                        
currentpagedevice/OverrideSeparations get
                                                                {
                                                                /HqnSpots 
/ProcSet resourcestatus
                                                                        {
                                                                        pop pop 
pop true
                                                                        }if
                                                                }if
                                                        }if                     
                
                                                        {
                                                        AGMCORE_name /HqnSpots 
/ProcSet findresource /TestSpot get exec not
                                                        }{
                                                        gsave
                                                        [/Separation 
AGMCORE_name /DeviceGray {}]setcolorspace
                                                        false
                                                        
currentpagedevice/SeparationColorNames 2 copy known
                                                        {
                                                                get
                                                                { AGMCORE_name 
eq or}forall
                                                        not
                                                        }{
                                                                pop pop pop true
                                                        }ifelse
                                                        grestore
                                                }ifelse
                                        }ifelse
                                }ifelse
                        }ifelse
                }def
        }ifelse
        /convert_to_process where {pop}{
                /convert_to_process
                {
                        dup length 0 eq
                                {
                                pop false
                                }{
                                AGMCORE_host_sep
                                { 
                                dup true exch
                                        {
                                        dup (Cyan) eq exch
                                        dup (Magenta) eq 3 -1 roll or exch
                                        dup (Yellow) eq 3 -1 roll or exch
                                        dup (Black) eq 3 -1 roll or
                                                {pop}
                                                {convert_spot_to_process 
and}ifelse
                                        }
                                forall
                                        {
                                        true exch
                                                {
                                                dup (Cyan) eq exch
                                                dup (Magenta) eq 3 -1 roll or 
exch
                                                dup (Yellow) eq 3 -1 roll or 
exch
                                                (Black) eq or and
                                                }forall
                                                not
                                        }{pop false}ifelse
                                }{
                                false exch
                                        {
                                        dup (Cyan) eq exch
                                        dup (Magenta) eq 3 -1 roll or exch
                                        dup (Yellow) eq 3 -1 roll or exch
                                        dup (Black) eq 3 -1 roll or
                                        {pop}
                                        {convert_spot_to_process or}ifelse
                                        }
                                forall
                                }ifelse
                        }ifelse
                }def
        }ifelse 
        /AGMCORE_avoid_L2_sep_space  
                version cvr 2012 lt 
                level2 and 
                AGMCORE_producing_seps not and
        def
        /AGMCORE_is_cmyk_sep
                AGMCORE_cyan_plate AGMCORE_magenta_plate or 
AGMCORE_yellow_plate or AGMCORE_black_plate or
        def
        /AGM_avoid_0_cmyk where{
                pop AGM_avoid_0_cmyk
        }{
                AGM_preserve_spots 
                userdict/Adobe_AGM_OnHost_Seps known 
                userdict/Adobe_AGM_InRip_Seps known or
                not and
        }ifelse
        {
                /setcmykcolor[
                        {
                                4 copy add add add 0 eq currentoverprint and{
                                        pop 0.0005
                                }if
                        }/exec cvx
                        /AGMCORE_&setcmykcolor load dup type/operatortype ne{
                                /exec cvx
                        }if
                ]cvx def
        }if
        AGMCORE_host_sep{
                /setcolortransfer
                { 
                        AGMCORE_cyan_plate{
                                pop pop pop
                        }{
                                AGMCORE_magenta_plate{
                                        4 3 roll pop pop pop
                                }{
                                        AGMCORE_yellow_plate{
                                                4 2 roll pop pop pop
                                        }{
                                                4 1 roll pop pop pop
                                        }ifelse
                                }ifelse
                        }ifelse
                        settransfer  
                }       
                def
                /AGMCORE_get_ink_data
                        AGMCORE_cyan_plate{
                                {pop pop pop}
                        }{
                                AGMCORE_magenta_plate{
                                        {4 3 roll pop pop pop}
                                }{
                                        AGMCORE_yellow_plate{
                                                {4 2 roll pop pop pop}
                                        }{
                                                {4 1 roll pop pop pop}
                                        }ifelse
                                }ifelse
                        }ifelse
                def
                /AGMCORE_RemoveProcessColorNames
                        {
                        1 dict begin
                        /filtername
                                {
                                dup /Cyan eq 1 index (Cyan) eq or
                                        {pop (_cyan_)}if
                                dup /Magenta eq 1 index (Magenta) eq or
                                        {pop (_magenta_)}if
                                dup /Yellow eq 1 index (Yellow) eq or
                                        {pop (_yellow_)}if
                                dup /Black eq 1 index (Black) eq or
                                        {pop (_black_)}if
                                }def
                        dup type /arraytype eq
                                {[exch {filtername}forall]}
                                {filtername}ifelse
                        end
                        }def
                /AGMCORE_IsSeparationAProcessColor
                        {
                        dup (Cyan) eq exch dup (Magenta) eq exch dup (Yellow) 
eq exch (Black) eq or or or
                        }def
                level3 {
                        /AGMCORE_IsCurrentColor
                                {
                                gsave
                                false setoverprint
                                1 1 1 1 5 -1 roll findcmykcustomcolor 1 
setcustomcolor
                                currentgray 0 eq 
                                grestore
                                }def
                        /AGMCORE_filter_functiondatasource
                                {       
                                5 dict begin
                                /data_in xdf
                                data_in type /stringtype eq
                                        {
                                        /ncomp xdf
                                        /comp xdf
                                        /string_out data_in length ncomp idiv 
string def
                                        0 ncomp data_in length 1 sub
                                                {
                                                string_out exch dup ncomp idiv 
exch data_in exch ncomp getinterval comp get 255 exch sub put
                                                }for
                                        string_out
                                        }{
                                        string /string_in xdf
                                        /string_out 1 string def
                                        /component xdf
                                        [
                                        data_in string_in /readstring cvx
                                                [component /get cvx 255 /exch 
cvx /sub cvx string_out /exch cvx 0 /exch cvx /put cvx string_out]cvx
                                                [/pop cvx ()]cvx /ifelse cvx
                                        ]cvx /ReusableStreamDecode filter
                                }ifelse
                                end
                                }def
                        /AGMCORE_separateShadingFunction
                                {
                                2 dict begin
                                /paint? xdf
                                /channel xdf
                                        begin
                                        FunctionType 0 eq
                                                {
                                                /DataSource channel Range 
length 2 idiv DataSource AGMCORE_filter_functiondatasource def
                                                currentdict /Decode known
                                                        {/Decode Decode channel 
2 mul 2 getinterval def}if
                                                paint? not
                                                        {/Decode [1 1]def}if
                                                }if
                                        FunctionType 2 eq
                                                {
                                                paint?
                                                        {
                                                        /C0 [C0 channel get 1 
exch sub] def
                                                        /C1 [C1 channel get 1 
exch sub] def
                                                        }{
                                                        /C0 [1] def
                                                        /C1 [1] def
                                                        }ifelse                 
                                                }if
                                        FunctionType 3 eq
                                                {
                                                /Functions [Functions {channel 
paint? AGMCORE_separateShadingFunction} forall] def                      
                                                }if
                                        currentdict /Range known
                                                {/Range [0 1] def}if
                                        currentdict
                                        end
                                end
                                }def
                        /AGMCORE_separateShading
                                {
                                3 -1 roll begin
                                currentdict /Function known
                                        {
                                        currentdict /Background known
                                                {[1 index{Background 3 index 
get 1 exch sub}{1}ifelse]/Background xdf}if
                                        Function 3 1 roll 
AGMCORE_separateShadingFunction /Function xdf
                                        /ColorSpace [/DeviceGray] def
                                        }{
                                        ColorSpace dup type /arraytype eq {0 
get}if /DeviceCMYK eq
                                                {
                                                /ColorSpace [/DeviceN [/_cyan_ 
/_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] def
                                                }{
                                                ColorSpace dup 1 get 
AGMCORE_RemoveProcessColorNames 1 exch put
                                                }ifelse
                                        ColorSpace 0 get /Separation eq
                                                {
                                                        {
                                                                [1 /exch cvx 
/sub cvx]cvx
                                                        }{
                                                                [/pop cvx 1]cvx
                                                        }ifelse
                                                        ColorSpace 3 3 -1 roll 
put
                                                        pop
                                                }{
                                                        {
                                                                [exch 
ColorSpace 1 get length 1 sub exch sub /index cvx 1 /exch cvx /sub cvx 
ColorSpace 1 get length 1 add 1 /roll cvx ColorSpace 1 get length{/pop cvx} 
repeat]cvx
                                                        }{
                                                                pop [ColorSpace 
1 get length {/pop cvx} repeat cvx 1]cvx
                                                        }ifelse
                                                        ColorSpace 3 3 -1 roll 
bind put
                                                }ifelse
                                        ColorSpace 2 /DeviceGray put            
                                                                                
                                                
                                        }ifelse
                                end
                                }def
                        /AGMCORE_separateShadingDict
                                {
                                dup /ColorSpace get
                                dup type /arraytype ne
                                        {[exch]}if
                                dup 0 get /DeviceCMYK eq
                                        {
                                        exch begin 
                                        currentdict
                                        AGMCORE_cyan_plate
                                                {0 true}if
                                        AGMCORE_magenta_plate
                                                {1 true}if
                                        AGMCORE_yellow_plate
                                                {2 true}if
                                        AGMCORE_black_plate
                                                {3 true}if
                                        AGMCORE_plate_ndx 4 eq
                                                {0 false}if             
                                        dup not currentoverprint and
                                                {/AGMCORE_ignoreshade true 
def}if
                                        AGMCORE_separateShading
                                        currentdict
                                        end exch
                                        }if
                                dup 0 get /Separation eq
                                        {
                                        exch begin
                                        ColorSpace 1 get dup /None ne exch /All 
ne and
                                                {
                                                ColorSpace 1 get 
AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get 
AGMCORE_IsSeparationAProcessColor not and
                                                        {
                                                        ColorSpace 2 get dup 
type /arraytype eq {0 get}if /DeviceCMYK eq 
                                                                {
                                                                /ColorSpace
                                                                        [
                                                                        
/Separation
                                                                        
ColorSpace 1 get
                                                                        
/DeviceGray
                                                                                
[
                                                                                
ColorSpace 3 get /exec cvx
                                                                                
4 AGMCORE_plate_ndx sub -1 /roll cvx
                                                                                
4 1 /roll cvx
                                                                                
3 [/pop cvx]cvx /repeat cvx
                                                                                
1 /exch cvx /sub cvx
                                                                                
]cvx                                                                    
                                                                        ]def
                                                                }{
                                                                
AGMCORE_report_unsupported_color_space
                                                                
AGMCORE_black_plate not
                                                                        {
                                                                        
currentdict 0 false AGMCORE_separateShading
                                                                        }if
                                                                }ifelse
                                                        }{
                                                        currentdict ColorSpace 
1 get AGMCORE_IsCurrentColor
                                                        0 exch 
                                                        dup not 
currentoverprint and
                                                                
{/AGMCORE_ignoreshade true def}if
                                                        AGMCORE_separateShading
                                                        }ifelse 
                                                }if                     
                                        currentdict
                                        end exch
                                        }if
                                dup 0 get /DeviceN eq
                                        {
                                        exch begin
                                        ColorSpace 1 get convert_to_process
                                                {
                                                ColorSpace 2 get dup type 
/arraytype eq {0 get}if /DeviceCMYK eq 
                                                        {
                                                        /ColorSpace
                                                                [
                                                                /DeviceN
                                                                ColorSpace 1 get
                                                                /DeviceGray
                                                                        [
                                                                        
ColorSpace 3 get /exec cvx
                                                                        4 
AGMCORE_plate_ndx sub -1 /roll cvx
                                                                        4 1 
/roll cvx
                                                                        3 [/pop 
cvx]cvx /repeat cvx
                                                                        1 /exch 
cvx /sub cvx
                                                                        ]cvx    
                                                                
                                                                ]def
                                                        }{
                                                        
AGMCORE_report_unsupported_color_space
                                                        AGMCORE_black_plate not
                                                                {
                                                                currentdict 0 
false AGMCORE_separateShading
                                                                /ColorSpace 
[/DeviceGray] def
                                                                }if
                                                        }ifelse
                                                }{
                                                currentdict
                                                false -1 ColorSpace 1 get
                                                        {
                                                        AGMCORE_IsCurrentColor
                                                                {
                                                                1 add
                                                                exch pop true 
exch exit
                                                                }if
                                                        1 add
                                                        }forall
                                                exch 
                                                dup not currentoverprint and
                                                        {/AGMCORE_ignoreshade 
true def}if
                                                AGMCORE_separateShading
                                                }ifelse
                                        currentdict
                                        end exch
                                        }if
                                dup 0 get dup /DeviceCMYK eq exch dup 
/Separation eq exch /DeviceN eq or or not
                                        {
                                        exch begin
                                        ColorSpace dup type /arraytype eq
                                                {0 get}if
                                        /DeviceGray ne
                                                {
                                                
AGMCORE_report_unsupported_color_space
                                                AGMCORE_black_plate not
                                                        {
                                                        ColorSpace 0 get 
/CIEBasedA eq
                                                                {
                                                                /ColorSpace 
[/Separation /_ciebaseda_ /DeviceGray {}] def
                                                                }if
                                                        ColorSpace 0 get dup 
/CIEBasedABC eq exch dup /CIEBasedDEF eq exch /DeviceRGB eq or or
                                                                {
                                                                /ColorSpace 
[/DeviceN [/_red_ /_green_ /_blue_] /DeviceRGB {}] def
                                                                }if
                                                        ColorSpace 0 get 
/CIEBasedDEFG eq
                                                                {
                                                                /ColorSpace 
[/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}]
                                                                }if
                                                        currentdict 0 false 
AGMCORE_separateShading
                                                        }if
                                                }if
                                        currentdict
                                        end exch
                                        }if
                                pop
                                dup /AGMCORE_ignoreshade known
                                        {
                                        begin
                                        /ColorSpace [/Separation (None) 
/DeviceGray {}] def
                                        currentdict end
                                        }if
                                }def
                        /shfill
                                {
                                clonedict
                                AGMCORE_separateShadingDict 
                                dup /AGMCORE_ignoreshade known
                                        {pop}
                                        {AGMCORE_&sysshfill}ifelse
                                }def
                        /makepattern
                                {
                                exch
                                dup /PatternType get 2 eq
                                        {
                                        clonedict
                                        begin
                                        /Shading Shading 
AGMCORE_separateShadingDict def
                                        currentdict end
                                        exch AGMCORE_&sysmakepattern
                                        }{
                                        exch AGMCORE_&usrmakepattern
                                        }ifelse
                                }def
                }if
        }if
        AGMCORE_in_rip_sep{
                /setcustomcolor
                {
                        exch aload pop
                        dup 7 1 roll inRip_spot_has_ink not     { 
                                4 {4 index mul 4 1 roll}
                                repeat
                                /DeviceCMYK setcolorspace
                                6 -2 roll pop pop
                        }{ 
                                Adobe_AGM_Core begin
                                        /AGMCORE_k xdf /AGMCORE_y xdf 
/AGMCORE_m xdf /AGMCORE_c xdf
                                end
                                [/Separation 4 -1 roll /DeviceCMYK
                                {dup AGMCORE_c mul exch dup AGMCORE_m mul exch 
dup AGMCORE_y mul exch AGMCORE_k mul}
                                ]
                                setcolorspace
                        }ifelse
                        setcolor
                }ndf
                /setseparationgray
                {
                        [/Separation (All) /DeviceGray {}] setcolorspace_opt
                        1 exch sub setcolor
                }ndf
        }{
                /setseparationgray
                {
                        AGMCORE_&setgray
                }ndf
        }ifelse
        /findcmykcustomcolor
        {
                5 makereadonlyarray
        }ndf
        /setcustomcolor
        {
                exch aload pop pop
                4 {4 index mul 4 1 roll} repeat
                setcmykcolor pop
        }ndf
        /has_color
                /colorimage where{
                        AGMCORE_producing_seps{
                                pop true
                        }{
                                systemdict eq
                        }ifelse
                }{
                        false
                }ifelse
        def
        /map_index
        {
                1 index mul exch getinterval {255 div} forall
        } bdf
        /map_indexed_devn
        {
                Lookup Names length 3 -1 roll cvi map_index
        } bdf
        /n_color_components
        {
                base_colorspace_type
                dup /DeviceGray eq{
                        pop 1
                }{
                        /DeviceCMYK eq{
                                4
                        }{
                                3
                        }ifelse
                }ifelse
        }bdf
        level2{
                /mo /moveto ldf
                /li /lineto ldf
                /cv /curveto ldf
                /knockout_unitsq
                {
                        1 setgray
                        0 0 1 1 rectfill
                }def
                /level2ScreenFreq{
                        begin
                        60
                        HalftoneType 1 eq{
                                pop Frequency
                        }if
                        HalftoneType 2 eq{
                                pop GrayFrequency
                        }if
                        HalftoneType 5 eq{
                                pop Default level2ScreenFreq
                        }if
                         end
                }def
                /currentScreenFreq{
                        currenthalftone level2ScreenFreq
                }def
                level2 /setcolorspace AGMCORE_key_known not and{
                        /AGMCORE_&&&setcolorspace /setcolorspace ldf
                        /AGMCORE_ReplaceMappedColor
                        {
                                dup type dup /arraytype eq exch 
/packedarraytype eq or
                                {
                                        dup 0 get dup /Separation eq
                                        {
                                                pop
                                                dup length array copy
                                                dup dup 1 get
                                                current_spot_alias
                                                {
                                                        dup map_alias
                                                        {
                                                                begin
                                                                
/sep_colorspace_dict currentdict AGMCORE_gput
                                                                pop pop pop
                                                                [ 
                                                                        
/Separation Name 
                                                                        CSA 
map_csa
                                                                        dup 
/MappedCSA xdf 
                                                                        
/sep_colorspace_proc load
                                                                ]
                                                                dup Name
                                                                end
                                                        }if
                                                }if
                                                map_reserved_ink_name 1 xpt
                                        }{
                                                /DeviceN eq 
                                                {
                                                        dup length array copy
                                                        dup dup 1 get [ 
                                                                exch {
                                                                        
current_spot_alias{
                                                                                
dup map_alias{
                                                                                
        /Name get exch pop
                                                                                
}if
                                                                        }if
                                                                        
map_reserved_ink_name
                                                                } forall 
                                                        ] 1 xpt
                                                }if
                                        }ifelse
                                }if
                        }def
                        /setcolorspace
                        {
                                dup type dup /arraytype eq exch 
/packedarraytype eq or
                                {
                                        dup 0 get /Indexed eq
                                        {
                                                AGMCORE_distilling
                                                {
                                                        /PhotoshopDuotoneList 
where
                                                        {
                                                                pop false
                                                        }{
                                                                true
                                                        }ifelse
                                                }{
                                                        true
                                                }ifelse
                                                {
                                                        aload pop 3 -1 roll
                                                        
AGMCORE_ReplaceMappedColor
                                                        3 1 roll 4 array astore
                                                }if
                                        }{
                                                AGMCORE_ReplaceMappedColor
                                        }ifelse
                                }if
                                DeviceN_PS2_inRip_seps 
{AGMCORE_&&&setcolorspace} if
                        }def
                }if     
        }{
                /adj
                {
                        currentstrokeadjust{
                                transform
                                0.25 sub round 0.25 add exch
                                0.25 sub round 0.25 add exch
                                itransform
                        }if
                }def
                /mo{
                        adj moveto
                }def
                /li{
                        adj lineto
                }def
                /cv{
                        6 2 roll adj
                        6 2 roll adj
                        6 2 roll adj curveto
                }def
                /knockout_unitsq
                {
                        1 setgray
                        8 8 1 [8 0 0 8 0 0] {<ffffffffffffffff>} image
                }def
                /currentstrokeadjust{
                        /currentstrokeadjust AGMCORE_gget
                }def
                /setstrokeadjust{
                        /currentstrokeadjust exch AGMCORE_gput
                }def
                /currentScreenFreq{
                        currentscreen pop pop
                }def
                /setcolorspace
                {
                        /currentcolorspace exch AGMCORE_gput
                } def
                /currentcolorspace
                {
                        /currentcolorspace AGMCORE_gget
                } def
                /setcolor_devicecolor
                {
                        base_colorspace_type
                        dup /DeviceGray eq{
                                pop setgray
                        }{
                                /DeviceCMYK eq{
                                        setcmykcolor
                                }{
                                        setrgbcolor
                                }ifelse
                        }ifelse
                }def
                /setcolor
                {
                        currentcolorspace 0 get
                        dup /DeviceGray ne{
                                dup /DeviceCMYK ne{
                                        dup /DeviceRGB ne{
                                                dup /Separation eq{
                                                        pop
                                                        currentcolorspace 3 get 
exec
                                                        currentcolorspace 2 get
                                                }{
                                                        dup /Indexed eq{
                                                                pop
                                                                
currentcolorspace 3 get dup type /stringtype eq{
                                                                        
currentcolorspace 1 get n_color_components
                                                                        3 -1 
roll map_index
                                                                }{
                                                                        exec
                                                                }ifelse
                                                                
currentcolorspace 1 get
                                                        }{
                                                                
/AGMCORE_cur_err /AGMCORE_invalid_color_space def
                                                                
AGMCORE_invalid_color_space
                                                        }ifelse
                                                }ifelse
                                        }if
                                }if
                        }if
                        setcolor_devicecolor
                } def
        }ifelse
        /sop /setoverprint ldf
        /lw /setlinewidth ldf
        /lc /setlinecap ldf
        /lj /setlinejoin ldf
        /ml /setmiterlimit ldf
        /dsh /setdash ldf
        /sadj /setstrokeadjust ldf
        /gry /setgray ldf
        /rgb /setrgbcolor ldf
        /cmyk /setcmykcolor ldf
        /sep /setsepcolor ldf
        /devn /setdevicencolor ldf
        /idx /setindexedcolor ldf
        /colr /setcolor ldf
        /csacrd /set_csa_crd ldf
        /sepcs /setsepcolorspace ldf
        /devncs /setdevicencolorspace ldf
        /idxcs /setindexedcolorspace ldf
        /cp /closepath ldf
        /clp /clp_npth ldf
        /eclp /eoclp_npth ldf
        /f /fill ldf
        /ef /eofill ldf
        /@ /stroke ldf
        /nclp /npth_clp ldf
        /gset /graphic_setup ldf
        /gcln /graphic_cleanup ldf
        currentdict{
                dup xcheck 1 index type dup /arraytype eq exch /packedarraytype 
eq or and {
                        bind
                }if
                def
        }forall
        /currentpagedevice currentpagedevice def
/getrampcolor {
/indx exch def
0 1 NumComp 1 sub {
dup
Samples exch get
dup type /stringtype eq { indx get } if
exch
Scaling exch get aload pop
3 1 roll
mul add
} for
ColorSpaceFamily /Separation eq
        {
        sep
        }
        {
        ColorSpaceFamily /DeviceN eq
                {
                devn
                }
                {
                setcolor
                }ifelse
        }ifelse
} bind def
/sssetbackground { aload pop setcolor } bind def
/RadialShade {
40 dict begin
/ColorSpaceFamily exch def
/background exch def
/ext1 exch def
/ext0 exch def
/BBox exch def
/r2 exch def
/c2y exch def
/c2x exch def
/r1 exch def
/c1y exch def
/c1x exch def
/rampdict exch def
/setinkoverprint where {pop /setinkoverprint{pop}def}if
gsave
BBox length 0 gt {
newpath
BBox 0 get BBox 1 get moveto
BBox 2 get BBox 0 get sub 0 rlineto
0 BBox 3 get BBox 1 get sub rlineto
BBox 2 get BBox 0 get sub neg 0 rlineto
closepath
clip
newpath
} if
c1x c2x eq
{
c1y c2y lt {/theta 90 def}{/theta 270 def} ifelse
}
{
/slope c2y c1y sub c2x c1x sub div def
/theta slope 1 atan def
c2x c1x lt c2y c1y ge and { /theta theta 180 sub def} if
c2x c1x lt c2y c1y lt and { /theta theta 180 add def} if
}
ifelse
gsave
clippath
c1x c1y translate
theta rotate
-90 rotate
{ pathbbox } stopped
{ 0 0 0 0 } if
/yMax exch def
/xMax exch def
/yMin exch def
/xMin exch def
grestore
xMax xMin eq yMax yMin eq or
{
grestore
end
}
{
/max { 2 copy gt { pop } {exch pop} ifelse } bind def
/min { 2 copy lt { pop } {exch pop} ifelse } bind def
rampdict begin
40 dict begin
background length 0 gt { background sssetbackground gsave clippath fill 
grestore } if
gsave
c1x c1y translate
theta rotate
-90 rotate
/c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def
/c1y 0 def
/c1x 0 def
/c2x 0 def
ext0 {
0 getrampcolor
c2y r2 add r1 sub 0.0001 lt
{
c1x c1y r1 360 0 arcn
pathbbox
/aymax exch def
/axmax exch def
/aymin exch def
/axmin exch def
/bxMin xMin axmin min def
/byMin yMin aymin min def
/bxMax xMax axmax max def
/byMax yMax aymax max def
bxMin byMin moveto
bxMax byMin lineto
bxMax byMax lineto
bxMin byMax lineto
bxMin byMin lineto
eofill
}
{
c2y r1 add r2 le
{
c1x c1y r1 0 360 arc
fill
}
{
c2x c2y r2 0 360 arc fill
r1 r2 eq
{
/p1x r1 neg def
/p1y c1y def
/p2x r1 def
/p2y c1y def
p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto
fill
}
{
/AA r2 r1 sub c2y div def
/theta AA 1 AA dup mul sub sqrt div 1 atan def
/SS1 90 theta add dup sin exch cos div def
/p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
/p1y p1x SS1 div neg def
/SS2 90 theta sub dup sin exch cos div def
/p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
/p2y p2x SS2 div neg def
r1 r2 gt
{
/L1maxX p1x yMin p1y sub SS1 div add def
/L2maxX p2x yMin p2y sub SS2 div add def
}
{
/L1maxX 0 def
/L2maxX 0 def
}ifelse
p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
L1maxX L1maxX p1x sub SS1 mul p1y add lineto
fill
}
ifelse
}
ifelse
} ifelse
} if
c1x c2x sub dup mul
c1y c2y sub dup mul
add 0.5 exp
0 dtransform
dup mul exch dup mul add 0.5 exp 72 div
0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
1 index 1 index lt { exch } if pop
/hires exch def
hires mul
/numpix exch def
/numsteps NumSamples def
/rampIndxInc 1 def
/subsampling false def
numpix 0 ne
{
NumSamples numpix div 0.5 gt
{
/numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def
/rampIndxInc NumSamples 1 sub numsteps div def
/subsampling true def
} if
} if
/xInc c2x c1x sub numsteps div def
/yInc c2y c1y sub numsteps div def
/rInc r2 r1 sub numsteps div def
/cx c1x def
/cy c1y def
/radius r1 def
newpath
xInc 0 eq yInc 0 eq rInc 0 eq and and
{
0 getrampcolor
cx cy radius 0 360 arc
stroke
NumSamples 1 sub getrampcolor
cx cy radius 72 hires div add 0 360 arc
0 setlinewidth
stroke
}
{
0
numsteps
{
dup
subsampling { round cvi } if
getrampcolor
cx cy radius 0 360 arc
/cx cx xInc add def
/cy cy yInc add def
/radius radius rInc add def
cx cy radius 360 0 arcn
eofill
rampIndxInc add
}
repeat
pop
} ifelse
ext1 {
c2y r2 add r1 lt
{
c2x c2y r2 0 360 arc
fill
}
{
c2y r1 add r2 sub 0.0001 le
{
c2x c2y r2 360 0 arcn
pathbbox
/aymax exch def
/axmax exch def
/aymin exch def
/axmin exch def
/bxMin xMin axmin min def
/byMin yMin aymin min def
/bxMax xMax axmax max def
/byMax yMax aymax max def
bxMin byMin moveto
bxMax byMin lineto
bxMax byMax lineto
bxMin byMax lineto
bxMin byMin lineto
eofill
}
{
c2x c2y r2 0 360 arc fill
r1 r2 eq
{
/p1x r2 neg def
/p1y c2y def
/p2x r2 def
/p2y c2y def
p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto
fill
}
{
/AA r2 r1 sub c2y div def
/theta AA 1 AA dup mul sub sqrt div 1 atan def
/SS1 90 theta add dup sin exch cos div def
/p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
/p1y c2y p1x SS1 div sub def
/SS2 90 theta sub dup sin exch cos div def
/p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
/p2y c2y p2x SS2 div sub def
r1 r2 lt
{
/L1maxX p1x yMax p1y sub SS1 div add def
/L2maxX p2x yMax p2y sub SS2 div add def
}
{
/L1maxX 0 def
/L2maxX 0 def
}ifelse
p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
L1maxX L1maxX p1x sub SS1 mul p1y add lineto
fill
}
ifelse
}
ifelse
} ifelse
} if
grestore
grestore
end
end
end
} ifelse
} bind def
/GenStrips {
40 dict begin
/ColorSpaceFamily exch def
/background exch def
/ext1 exch def
/ext0 exch def
/BBox exch def
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
/rampdict exch def
/setinkoverprint where {pop /setinkoverprint{pop}def}if
gsave
BBox length 0 gt {
newpath
BBox 0 get BBox 1 get moveto
BBox 2 get BBox 0 get sub 0 rlineto
0 BBox 3 get BBox 1 get sub rlineto
BBox 2 get BBox 0 get sub neg 0 rlineto
closepath
clip
newpath
} if
x1 x2 eq
{
y1 y2 lt {/theta 90 def}{/theta 270 def} ifelse
}
{
/slope y2 y1 sub x2 x1 sub div def
/theta slope 1 atan def
x2 x1 lt y2 y1 ge and { /theta theta 180 sub def} if
x2 x1 lt y2 y1 lt and { /theta theta 180 add def} if
}
ifelse
gsave
clippath
x1 y1 translate
theta rotate
{ pathbbox } stopped
{ 0 0 0 0 } if
/yMax exch def
/xMax exch def
/yMin exch def
/xMin exch def
grestore
xMax xMin eq yMax yMin eq or
{
grestore
end
}
{
rampdict begin
20 dict begin
background length 0 gt { background sssetbackground gsave clippath fill 
grestore } if
gsave
x1 y1 translate
theta rotate
/xStart 0 def
/xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def
/ySpan yMax yMin sub def
/numsteps NumSamples def
/rampIndxInc 1 def
/subsampling false def
xStart 0 transform
xEnd 0 transform
3 -1 roll
sub dup mul
3 1 roll
sub dup mul
add 0.5 exp 72 div
0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
1 index 1 index lt { exch } if pop
mul
/numpix exch def
numpix 0 ne
{
NumSamples numpix div 0.5 gt
{
/numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def
/rampIndxInc NumSamples 1 sub numsteps div def
/subsampling true def
} if
} if
ext0 {
0 getrampcolor
xMin xStart lt
{ xMin yMin xMin neg ySpan rectfill } if
} if
/xInc xEnd xStart sub numsteps div def
/x xStart def
0
numsteps
{
dup
subsampling { round cvi } if
getrampcolor
x yMin xInc ySpan rectfill
/x x xInc add def
rampIndxInc add
}
repeat
pop
ext1 {
xMax xEnd gt
{ xEnd yMin xMax xEnd sub ySpan rectfill } if
} if
grestore
grestore
end
end
end
} ifelse
} bind def
}def
/page_trailer
{
        end
}def
/doc_trailer{
}def
systemdict /findcolorrendering known{
        /findcolorrendering systemdict /findcolorrendering get def
}if
systemdict /setcolorrendering known{
        /setcolorrendering systemdict /setcolorrendering get def
}if
/test_cmyk_color_plate
{
        gsave
        setcmykcolor currentgray 1 ne
        grestore
}def
/inRip_spot_has_ink
{
        dup Adobe_AGM_Core/AGMCORE_name xddf
        convert_spot_to_process not
}def
/map255_to_range
{
        1 index sub
        3 -1 roll 255 div mul add
}def
/set_csa_crd
{
        /sep_colorspace_dict null AGMCORE_gput
        begin
                CSA map_csa setcolorspace_opt
                set_crd
        end
}
def
/setsepcolor
{ 
        /sep_colorspace_dict AGMCORE_gget begin
                dup /sep_tint exch AGMCORE_gput
                TintProc
        end
} def
/setdevicencolor
{ 
        /devicen_colorspace_dict AGMCORE_gget begin
                Names length copy
                Names length 1 sub -1 0
                {
                        /devicen_tints AGMCORE_gget 3 1 roll xpt
                } for
                TintProc
        end
} def
/sep_colorspace_proc
{
        Adobe_AGM_Core/AGMCORE_tmp xddf
        /sep_colorspace_dict AGMCORE_gget begin
        currentdict/Components known{
                Components aload pop 
                TintMethod/Lab eq{
                        2 {AGMCORE_tmp mul NComponents 1 roll} repeat
                        LMax sub AGMCORE_tmp mul LMax add  NComponents 1 roll
                }{
                        TintMethod/Subtractive eq{
                                NComponents{
                                        AGMCORE_tmp mul NComponents 1 roll
                                }repeat
                        }{
                                NComponents{
                                        1 sub AGMCORE_tmp mul 1 add  
NComponents 1 roll
                                } repeat
                        }ifelse
                }ifelse
        }{
                ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi 
get
                aload pop
        }ifelse
        end
} def
/sep_colorspace_gray_proc
{
        Adobe_AGM_Core/AGMCORE_tmp xddf
        /sep_colorspace_dict AGMCORE_gget begin
        GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get
        end
} def
/sep_proc_name
{
        dup 0 get 
        dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not 
and{
                pop [/DeviceGray]
                /sep_colorspace_gray_proc
        }{
                /sep_colorspace_proc
        }ifelse
} def
/setsepcolorspace
{ 
        current_spot_alias{
                dup begin
                        Name map_alias{
                                exch pop
                        }if
                end
        }if
        dup /sep_colorspace_dict exch AGMCORE_gput
        begin
        /MappedCSA CSA map_csa def
        Adobe_AGM_Core/AGMCORE_sep_special Name dup () eq exch (All) eq or ddf
        AGMCORE_avoid_L2_sep_space{
                [/Indexed MappedCSA sep_proc_name 255 exch 
                        { 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec 
cvx ] cvx 
                ] setcolorspace_opt
                /TintProc {
                        255 mul round cvi setcolor
                }bdf
        }{
                MappedCSA 0 get /DeviceCMYK eq 
                currentdict/Components known and 
                AGMCORE_sep_special not and{
                        /TintProc [
                                Components aload pop Name findcmykcustomcolor 
                                /exch cvx /setcustomcolor cvx
                        ] cvx bdf
                }{
                        AGMCORE_host_sep Name (All) eq and{
                                /TintProc { 
                                        1 exch sub setseparationgray 
                                }bdf
                        }{
                                AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK 
eq and 
                                AGMCORE_host_sep or
                                Name () eq and{
                                        /TintProc [
                                                MappedCSA sep_proc_name exch 0 
get /DeviceCMYK eq{
                                                        cvx /setcmykcolor cvx
                                                }{
                                                        cvx /setgray cvx
                                                }ifelse
                                        ] cvx bdf
                                }{
                                        AGMCORE_producing_seps MappedCSA 0 get 
dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{
                                                /TintProc [
                                                        /dup cvx
                                                        MappedCSA sep_proc_name 
cvx exch
                                                        0 get /DeviceGray eq{
                                                                1 /exch cvx 
/sub cvx 0 0 0 4 -1 /roll cvx
                                                        }if
                                                        /Name cvx 
/findcmykcustomcolor cvx /exch cvx
                                                        AGMCORE_host_sep{
                                                                
AGMCORE_is_cmyk_sep
                                                                /Name cvx 
                                                                
/AGMCORE_IsSeparationAProcessColor load /exec cvx
                                                                /not cvx /and 
cvx 
                                                        }{
                                                                Name 
inRip_spot_has_ink not
                                                        }ifelse
                                                        [
                                                                /pop cvx 1
                                                        ] cvx /if cvx
                                                        /setcustomcolor cvx
                                                ] cvx bdf
                                        }{ 
                                                /TintProc /setcolor ldf
                                                [/Separation Name MappedCSA 
sep_proc_name load ] setcolorspace_opt
                                        }ifelse
                                }ifelse
                        }ifelse
                }ifelse
        }ifelse
        set_crd
        setsepcolor
        end
} def
/additive_blend
{
        3 dict begin
        /numarrays xdf
        /numcolors xdf
        0 1 numcolors 1 sub
                {
                /c1 xdf
                1
                0 1 numarrays 1 sub
                        {
                        1 exch add /index cvx
                        c1 /get cvx /mul cvx
                        }for
                numarrays 1 add 1 /roll cvx 
                }for
        numarrays [/pop cvx] cvx /repeat cvx
        end
}def
/subtractive_blend
{
        3 dict begin
        /numarrays xdf
        /numcolors xdf
        0 1 numcolors 1 sub
                {
                /c1 xdf
                1 1
                0 1 numarrays 1 sub
                        {
                        1 3 3 -1 roll add /index cvx  
                        c1 /get cvx /sub cvx /mul cvx
                        }for
                /sub cvx
                numarrays 1 add 1 /roll cvx
                }for
        numarrays [/pop cvx] cvx /repeat cvx
        end
}def
/exec_tint_transform
{
        /TintProc [
                /TintTransform cvx /setcolor cvx
        ] cvx bdf
        MappedCSA setcolorspace_opt
} bdf
/devn_makecustomcolor
{
        2 dict begin
        /names_index xdf
        /Names xdf
        1 1 1 1 Names names_index get findcmykcustomcolor
        /devicen_tints AGMCORE_gget names_index get setcustomcolor
        Names length {pop} repeat
        end
} bdf
/setdevicencolorspace
{ 
        dup /AliasedColorants known {false}{true}ifelse 
        current_spot_alias and {
                6 dict begin
                /names_index 0 def
                dup /names_len exch /Names get length def
                /new_names names_len array def
                /new_LookupTables names_len array def
                /alias_cnt 0 def
                dup /Names get
                {
                        dup map_alias {
                                exch pop
                                dup /ColorLookup known {
                                        dup begin
                                        new_LookupTables names_index 
ColorLookup put
                                        end
                                }{
                                        dup /Components known {
                                                dup begin
                                                new_LookupTables names_index 
Components put
                                                end
                                        }{
                                                dup begin
                                                new_LookupTables names_index 
[null null null null] put
                                                end
                                        } ifelse
                                } ifelse
                                new_names names_index 3 -1 roll /Name get put
                                /alias_cnt alias_cnt 1 add def 
                        }{
                                /name xdf                               
                                new_names names_index name put
                                dup /LookupTables known {
                                        dup begin
                                        new_LookupTables names_index 
LookupTables names_index get put
                                        end
                                }{
                                        dup begin
                                        new_LookupTables names_index [null null 
null null] put
                                        end
                                } ifelse
                        } ifelse
                        /names_index names_index 1 add def 
                } forall
                alias_cnt 0 gt {
                        /AliasedColorants true def
                        0 1 names_len 1 sub {
                                /names_index xdf
                                new_LookupTables names_index get 0 get null eq {
                                        dup /Names get names_index get /name xdf
                                        name (Cyan) eq name (Magenta) eq name 
(Yellow) eq name (Black) eq
                                        or or or not {
                                                /AliasedColorants false def
                                                exit
                                        } if
                                } if
                        } for
                        AliasedColorants {
                                dup begin
                                /Names new_names def
                                /AliasedColorants true def
                                /LookupTables new_LookupTables def
                                currentdict /TTTablesIdx known not {
                                        /TTTablesIdx -1 def
                                } if
                                currentdict /NComponents known not {
                                        /NComponents TintMethod /Subtractive eq 
{4}{3}ifelse def
                                } if
                                end
                        } if
                }if
                end
        } if
        dup /devicen_colorspace_dict exch AGMCORE_gput
        begin
        /MappedCSA CSA map_csa def
        currentdict /AliasedColorants known {
                AliasedColorants
        }{
                false
        } ifelse
        /TintTransform load type /nulltype eq or {
                /TintTransform [
                        0 1 Names length 1 sub
                                {
                                /TTTablesIdx TTTablesIdx 1 add def
                                dup LookupTables exch get dup 0 get null eq
                                        {
                                        1 index
                                        Names exch get
                                        dup (Cyan) eq
                                                {
                                                pop exch
                                                LookupTables length exch sub
                                                /index cvx
                                                0 0 0
                                                }
                                                {
                                                dup (Magenta) eq
                                                        {
                                                        pop exch
                                                        LookupTables length 
exch sub
                                                        /index cvx
                                                        0 /exch cvx 0 0
                                                        }
                                                        {
                                                        (Yellow) eq
                                                                {
                                                                exch
                                                                LookupTables 
length exch sub
                                                                /index cvx
                                                                0 0 3 -1 /roll 
cvx 0
                                                                }
                                                                {
                                                                exch
                                                                LookupTables 
length exch sub
                                                                /index cvx
                                                                0 0 0 4 -1 
/roll cvx
                                                                } ifelse
                                                        } ifelse
                                                } ifelse
                                        5 -1 /roll cvx /astore cvx
                                        }
                                        {
                                        dup length 1 sub
                                        LookupTables length 4 -1 roll sub 1 add
                                        /index cvx /mul cvx /round cvx /cvi cvx 
/get cvx
                                        } ifelse
                                        Names length TTTablesIdx add 1 add 1 
/roll cvx
                                } for
                        Names length [/pop cvx] cvx /repeat cvx
                        NComponents Names length
                        TintMethod /Subtractive eq
                                {
                                subtractive_blend
                                }
                                {
                                additive_blend
                                } ifelse
                ] cvx bdf
        } if
        AGMCORE_host_sep {
                Names convert_to_process {
                        exec_tint_transform
                }
                {       
                        currentdict /AliasedColorants known {
                                AliasedColorants not
                        }{
                                false
                        } ifelse
                        5 dict begin
                        /AvoidAliasedColorants xdf
                        /painted? false def
                        /names_index 0 def
                        /names_len Names length def
                        Names {
                                AvoidAliasedColorants {
                                        /currentspotalias current_spot_alias def
                                        false set_spot_alias
                                } if
                                AGMCORE_is_cmyk_sep {
                                        dup (Cyan) eq AGMCORE_cyan_plate and 
exch
                                        dup (Magenta) eq AGMCORE_magenta_plate 
and exch
                                        dup (Yellow) eq AGMCORE_yellow_plate 
and exch
                                        (Black) eq AGMCORE_black_plate and or 
or or {
                                                /devicen_colorspace_dict 
AGMCORE_gget /TintProc [
                                                        Names names_index 
/devn_makecustomcolor cvx
                                                ] cvx ddf
                                                /painted? true def
                                        } if
                                        painted? {exit} if
                                }{
                                        0 0 0 0 5 -1 roll findcmykcustomcolor 1 
setcustomcolor currentgray 0 eq {
                                        /devicen_colorspace_dict AGMCORE_gget 
/TintProc [
                                                Names names_index 
/devn_makecustomcolor cvx
                                        ] cvx ddf
                                        /painted? true def
                                        exit
                                        } if
                                } ifelse
                                AvoidAliasedColorants {
                                        currentspotalias set_spot_alias
                                } if
                                /names_index names_index 1 add def
                        } forall
                        painted? {
                                /devicen_colorspace_dict AGMCORE_gget 
/names_index names_index put
                        }{
                                /devicen_colorspace_dict AGMCORE_gget /TintProc 
[
                                        names_len [/pop cvx] cvx /repeat cvx 1 
/setseparationgray cvx
                                        0 0 0 0 () /findcmykcustomcolor cvx 0 
/setcustomcolor cvx
                                ] cvx ddf
                        } ifelse
                        end
                } ifelse
        }
        {
                AGMCORE_in_rip_sep {
                        Names convert_to_process not
                }{
                        level3
                } ifelse
                {
                        [/DeviceN Names MappedCSA /TintTransform load] 
setcolorspace_opt
                        /TintProc level3 not AGMCORE_in_rip_sep and {
                                [
                                        Names /length cvx [/pop cvx] cvx 
/repeat cvx
                                ] cvx bdf
                        }{
                                /setcolor ldf
                        } ifelse
                }{
                        exec_tint_transform
                } ifelse
        } ifelse
        set_crd
        /AliasedColorants false def
        end
} def
/setindexedcolorspace
{
        dup /indexed_colorspace_dict exch AGMCORE_gput
        begin
                currentdict /CSD known {
                        CSD get_csd /Names known {
                                CSD get_csd begin
                                currentdict devncs
                                AGMCORE_host_sep{
                                        4 dict begin
                                        /devnCompCnt Names length def
                                        /NewLookup HiVal 1 add string def
                                        0 1 HiVal {
                                                /tableIndex xdf
                                                Lookup dup type /stringtype eq {
                                                        devnCompCnt tableIndex 
map_index
                                                }{
                                                        exec
                                                } ifelse
                                                setdevicencolor
                                                currentgray
                                                tableIndex exch
                                                HiVal mul cvi 
                                                NewLookup 3 1 roll put
                                        } for
                                        [/Indexed currentcolorspace HiVal 
NewLookup] setcolorspace_opt
                                        end
                                }{
                                        level3
                                        {
                                        [/Indexed [/DeviceN Names MappedCSA 
/TintTransform load] HiVal Lookup] setcolorspace_opt
                                        }{
                                        [/Indexed MappedCSA HiVal
                                                [
                                                Lookup dup type /stringtype eq
                                                        {/exch cvx CSD get_csd 
/Names get length dup /mul cvx exch /getinterval cvx {255 div} /forall cvx}
                                                        {/exec cvx}ifelse
                                                        /TintTransform load 
/exec cvx
                                                ]cvx
                                        ]setcolorspace_opt
                                        }ifelse
                                } ifelse
                                end
                        }{
                        } ifelse
                        set_crd
                }
                {
                        /MappedCSA CSA map_csa def
                        AGMCORE_host_sep level2 not and{
                                0 0 0 0 setcmykcolor
                        }{
                                [/Indexed MappedCSA 
                                level2 not has_color not and{
                                        dup 0 get dup /DeviceRGB eq exch 
/DeviceCMYK eq or{
                                                pop [/DeviceGray]
                                        }if
                                        HiVal GrayLookup
                                }{
                                        HiVal 
                                        currentdict/RangeArray known{
                                                { 
                                                        
/indexed_colorspace_dict AGMCORE_gget begin
                                                        Lookup exch 
                                                        dup HiVal gt{
                                                                pop HiVal
                                                        }if
                                                        NComponents mul 
NComponents getinterval {} forall
                                                        NComponents 1 sub -1 0{
                                                                RangeArray exch 
2 mul 2 getinterval aload pop map255_to_range
                                                                NComponents 1 
roll
                                                        }for
                                                        end
                                                } bind
                                        }{
                                                Lookup
                                        }ifelse
                                }ifelse
                                ] setcolorspace_opt
                                set_crd
                        }ifelse
                }ifelse
        end
}def
/setindexedcolor
{
        AGMCORE_host_sep {
                /indexed_colorspace_dict AGMCORE_gget dup /CSD known {
                        begin
                        CSD get_csd begin
                        map_indexed_devn
                        devn
                        end
                        end
                }{
                        AGMCORE_gget/Lookup get 4 3 -1 roll map_index
                        pop setcmykcolor
                } ifelse
        }{
                level3 not AGMCORE_in_rip_sep and /indexed_colorspace_dict 
AGMCORE_gget /CSD known and {
                        /indexed_colorspace_dict AGMCORE_gget /CSD get get_csd 
begin
                        map_indexed_devn
                        devn
                        end
                }
                {
                        setcolor
                } ifelse
        }ifelse
} def
/ignoreimagedata
{
        currentoverprint not{
                gsave
                dup clonedict begin
                1 setgray
                /Decode [0 1] def
                /DataSource <FF> def
                /MultipleDataSources false def
                /BitsPerComponent 8 def
                currentdict end
                systemdict /image get exec
                grestore
                }if
        consumeimagedata
}def
/add_csa
{
        Adobe_AGM_Core begin
                        /AGMCORE_CSA_cache xput
        end
}def
/get_csa_by_name
{
        dup type dup /nametype eq exch /stringtype eq or{
                Adobe_AGM_Core begin
                1 dict begin
                /name xdf
                AGMCORE_CSA_cache
                {
                        0 get name eq {
                                exit
                        }{
                                pop
                        } ifelse
                }forall
                end
                end
        }{
                pop
        } ifelse
}def
/map_csa
{
        dup type /nametype eq{
                Adobe_AGM_Core/AGMCORE_CSA_cache get exch get
        }if
}def
/add_csd
{
        Adobe_AGM_Core begin
                /AGMCORE_CSD_cache xput
        end
}def
/get_csd
{
        dup type /nametype eq{
                Adobe_AGM_Core/AGMCORE_CSD_cache get exch get
        }if
}def
/pattern_buf_init
{
        /count get 0 0 put
} def
/pattern_buf_next
{
        dup /count get dup 0 get
        dup 3 1 roll
        1 add 0 xpt
        get                             
} def
/cachepattern_compress
{
        5 dict begin
        currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def
        /patarray 20 dict def
        /string_size 16000 def
        /readbuffer string_size string def
        currentglobal true setglobal 
        patarray 1 array dup 0 1 put /count xpt
        setglobal
        /LZWFilter 
        {
                exch
                dup length 0 eq {
                        pop
                }{
                        patarray dup length 1 sub 3 -1 roll put
                } ifelse
                {string_size}{0}ifelse string
        } /LZWEncode filter def
        {               
                ReadFilter readbuffer readstring
                exch LZWFilter exch writestring
                not {exit} if
        } loop
        LZWFilter closefile
        patarray                                
        end
}def
/cachepattern
{
        2 dict begin
        currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def
        /patarray 20 dict def
        currentglobal true setglobal 
        patarray 1 array dup 0 1 put /count xpt
        setglobal
        {
                ReadFilter 16000 string readstring exch
                patarray dup length 1 sub 3 -1 roll put
                not {exit} if
        } loop
        patarray dup dup length 1 sub () put                                    
        end     
}def
/add_pattern
{
        Adobe_AGM_Core begin
                /AGMCORE_pattern_cache xput
        end
}def
/get_pattern
{
        dup type /nametype eq{
                Adobe_AGM_Core/AGMCORE_pattern_cache get exch get
                dup wrap_paintproc
        }if
}def
/wrap_paintproc
{ 
  statusdict /currentfilenameextend known{
          begin
                /OldPaintProc /PaintProc load def
                /PaintProc
                {
                  mark exch
                  dup /OldPaintProc get stopped
                  {closefile restore end} if
                  cleartomark
                }  def
          end
  } {pop} ifelse
} def
/make_pattern
{
        dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform
        exch 3 index /XStep get 1 index exch 2 copy div cvi mul sub sub
        exch 3 index /YStep get 1 index exch 2 copy div cvi mul sub sub
        matrix translate exch matrix concatmatrix
                          1 index begin
                BBox 0 get XStep div cvi XStep mul /xshift exch neg def
                BBox 1 get YStep div cvi YStep mul /yshift exch neg def
                BBox 0 get xshift add
                BBox 1 get yshift add
                BBox 2 get xshift add
                BBox 3 get yshift add
                4 array astore
                /BBox exch def
                [ xshift yshift /translate load null /exec load ] dup
                3 /PaintProc load put cvx /PaintProc exch def
                end
        gsave 0 setgray
        makepattern
        grestore
}def
/set_pattern
{
        dup /PatternType get 1 eq{
                dup /PaintType get 1 eq{
                        currentoverprint sop [/DeviceGray] setcolorspace 0 
setgray
                }if
        }if
        setpattern
}def
/setcolorspace_opt
{
        dup currentcolorspace eq{
                pop
        }{
                setcolorspace
        }ifelse
}def
/updatecolorrendering
{
        currentcolorrendering/Intent known{
                currentcolorrendering/Intent get
        }{
                null
        }ifelse
        Intent ne{
                false  
                Intent
                AGMCORE_CRD_cache {
                        exch pop 
                        begin
                                dup Intent eq{
                                        currentdict setcolorrendering_opt
                                        end 
                                        exch pop true exch      
                                        exit
                                }if
                        end
                } forall
                pop
                not{
                        systemdict /findcolorrendering known{
                                Intent findcolorrendering pop
                                /ColorRendering findresource 
                                dup length dict copy
                                setcolorrendering_opt
                        }if
                }if
        }if
} def
/add_crd
{
        AGMCORE_CRD_cache 3 1 roll put
}def
/set_crd
{
        AGMCORE_host_sep not level2 and{
                currentdict/CRD known{
                        AGMCORE_CRD_cache CRD get dup null ne{
                                setcolorrendering_opt
                        }{
                                pop
                        }ifelse
                }{
                        currentdict/Intent known{
                                updatecolorrendering
                        }if
                }ifelse
                currentcolorspace dup type /arraytype eq
                        {0 get}if
                /DeviceRGB eq
                        {
                        currentdict/UCR known
                                {/UCR}{/AGMCORE_currentucr}ifelse
                        load setundercolorremoval
                        currentdict/BG known 
                                {/BG}{/AGMCORE_currentbg}ifelse
                        load setblackgeneration
                        }if
        }if
}def
/setcolorrendering_opt
{
        dup currentcolorrendering eq{
                pop
        }{
                begin
                        /Intent Intent def
                        currentdict
                end
                setcolorrendering
        }ifelse
}def
/cpaint_gcomp
{
        convert_to_process Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf
        Adobe_AGM_Core/AGMCORE_ConvertToProcess get not
        {
                (%end_cpaint_gcomp) flushinput
        }if
}def
/cpaint_gsep
{
        Adobe_AGM_Core/AGMCORE_ConvertToProcess get
        {       
                (%end_cpaint_gsep) flushinput
        }if
}def
/cpaint_gend
{
        newpath
}def
/path_rez
{
        dup 0 ne{
                AGMCORE_deviceDPI exch div 
                dup 1 lt{
                        pop 1
                }if
                setflat
        }{
                pop
        }ifelse         
}def
/set_spot_alias_ary
{
        /AGMCORE_SpotAliasAry where{
                pop pop
        }{
                Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf
                true set_spot_alias
        }ifelse
}def
/set_spot_alias
{
        /AGMCORE_SpotAliasAry where{
                /AGMCORE_current_spot_alias 3 -1 roll put
        }{
                pop
        }ifelse
}def
/current_spot_alias
{
        /AGMCORE_SpotAliasAry where{
                /AGMCORE_current_spot_alias get
        }{
                false
        }ifelse
}def
/map_alias
{
        /AGMCORE_SpotAliasAry where{
                begin
                        /AGMCORE_name xdf
                        false   
                        AGMCORE_SpotAliasAry{
                                dup/Name get AGMCORE_name eq{
                                        save exch
                                        /Adobe_AGM_Core currentdict def
                                        /CSD get get_csd
                                        exch restore
                                        exch pop true
                                        exit
                                }{
                                        pop
                                }ifelse
                        }forall
                end
        }{
                pop false
        }ifelse
}bdf
/spot_alias
{
        true set_spot_alias
        /AGMCORE_&setcustomcolor AGMCORE_key_known not {
                Adobe_AGM_Core/AGMCORE_&setcustomcolor /setcustomcolor load put
        } if
        /customcolor_tint 1 AGMCORE_gput
        Adobe_AGM_Core begin
        /setcustomcolor
        {
                dup /customcolor_tint exch AGMCORE_gput
                current_spot_alias{
                        1 index 4 get map_alias{
                                mark 3 1 roll
                                setsepcolorspace
                                counttomark 0 ne{
                                        setsepcolor
                                }if
                                pop
                                pop
                        }{
                                AGMCORE_&setcustomcolor
                        }ifelse
                }{
                        AGMCORE_&setcustomcolor
                }ifelse
        }bdf
        end
}def
/begin_feature
{
        Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put
        count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put
        {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if
}def
/end_feature
{
        2 dict begin
        /spd /setpagedevice load def
        /setpagedevice { get_gstate spd set_gstate } def
        stopped{$error/newerror false put}if
        end
        count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 
gt{{pop}repeat}{pop}ifelse
        countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 
gt{{end}repeat}{pop}ifelse
        {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if
}def
/set_negative
{
        Adobe_AGM_Core begin
        /AGMCORE_inverting exch def
        level2{
                currentpagedevice/NegativePrint known{
                        currentpagedevice/NegativePrint get 
Adobe_AGM_Core/AGMCORE_inverting get ne{
                                true begin_feature true{
                                                bdict /NegativePrint 
Adobe_AGM_Core/AGMCORE_inverting get edict setpagedevice
                                }end_feature
                        }if
                        /AGMCORE_inverting false def
                }if
        }if
        AGMCORE_inverting{
                [{1 exch sub}/exec load dup currenttransfer exch]cvx bind 
settransfer
                gsave newpath clippath 1 /setseparationgray where{pop 
setseparationgray}{setgray}ifelse 
                /AGMIRS_&fill where {pop AGMIRS_&fill}{fill} ifelse grestore
        }if
        end
}def
/lw_save_restore_override {
        /md where {
                pop
                md begin
                initializepage
                /initializepage{}def
                /pmSVsetup{} def
                /endp{}def
                /pse{}def
                /psb{}def
                /orig_showpage where
                        {pop}
                        {/orig_showpage /showpage load def}
                ifelse
                /showpage {orig_showpage gR} def
                end
        }if
}def
/pscript_showpage_override {
        /NTPSOct95 where
        {
                begin
                showpage
                save
                /showpage /restore load def
                /restore {exch pop}def
                end
        }if
}def
/driver_media_override
{
        /md where {
                pop
                md /initializepage known {
                        md /initializepage {} put
                } if
                md /rC known {
                        md /rC {4{pop}repeat} put
                } if
        }if
        /mysetup where {
                /mysetup [1 0 0 1 0 0] put
        }if
        Adobe_AGM_Core /AGMCORE_Default_CTM matrix currentmatrix put
        level2
                {Adobe_AGM_Core /AGMCORE_Default_PageSize 
currentpagedevice/PageSize get put}if
}def
/driver_check_media_override
{
        /PrepsDict where
                {pop}
                {
                Adobe_AGM_Core /AGMCORE_Default_CTM get matrix currentmatrix ne
                Adobe_AGM_Core /AGMCORE_Default_PageSize get type /arraytype eq
                        {
                        Adobe_AGM_Core /AGMCORE_Default_PageSize get 0 get 
currentpagedevice/PageSize get 0 get eq and
                        Adobe_AGM_Core /AGMCORE_Default_PageSize get 1 get 
currentpagedevice/PageSize get 1 get eq and
                        }if
                        {
                        Adobe_AGM_Core /AGMCORE_Default_CTM get setmatrix
                        }if
                }ifelse
}def
AGMCORE_err_strings begin
        /AGMCORE_bad_environ (Environment not satisfactory for this job. Ensure 
that the PPD is correct or that the PostScript level requested is supported by 
this printer. ) def
        /AGMCORE_color_space_onhost_seps (This job contains colors that will 
not separate with on-host methods. ) def
        /AGMCORE_invalid_color_space (This job contains an invalid color space. 
) def
end
end
systemdict /setpacking known
{
        setpacking
} if
%%EndResource
%%BeginResource: procset Adobe_CoolType_Core 2.23 0
%%Copyright: Copyright 1997-2003 Adobe Systems Incorporated.  All Rights 
Reserved.
%%Version: 2.23 0
10 dict begin
/Adobe_CoolType_Passthru currentdict def
/Adobe_CoolType_Core_Defined userdict /Adobe_CoolType_Core known def
Adobe_CoolType_Core_Defined
        { /Adobe_CoolType_Core userdict /Adobe_CoolType_Core get def }
if
userdict /Adobe_CoolType_Core 60 dict dup begin put
/Adobe_CoolType_Version 2.23 def
/Level2?
        systemdict /languagelevel known dup
                { pop systemdict /languagelevel get 2 ge }
        if def
Level2? not
        {
        /currentglobal false def
        /setglobal /pop load def
        /gcheck { pop false } bind def
        /currentpacking false def
        /setpacking /pop load def
        /SharedFontDirectory 0 dict def
        }
if
currentpacking
true setpacking
/@_SaveStackLevels
        {
        Adobe_CoolType_Data
                begin
                @opStackCountByLevel @opStackLevel
                2 copy known not
                        { 2 copy 3 dict dup /args 7 index 5 add array put put 
get }
                        {
                        get dup /args get dup length 3 index lt
                                {
                                dup length 5 add array exch
                                1 index exch 0 exch putinterval
                                1 index exch /args exch put
                                }
                                { pop }
                        ifelse
                        }
                ifelse
                        begin
                        count 2 sub 1 index lt
                                { pop count 1 sub }
                        if
                        dup /argCount exch def
                        dup 0 gt
                                {
                                exch 1 index 2 add 1 roll
                                args exch 0 exch getinterval 
                        astore pop
                                }
                                { pop }
                        ifelse
                        count 1 sub /restCount exch def
                        end
                /@opStackLevel @opStackLevel 1 add def
                countdictstack 1 sub
                @dictStackCountByLevel exch @dictStackLevel exch put
                /@dictStackLevel @dictStackLevel 1 add def
                end
        } bind def
/@_RestoreStackLevels
        {
        Adobe_CoolType_Data
                begin
                /@opStackLevel @opStackLevel 1 sub def
                @opStackCountByLevel @opStackLevel get
                        begin
                        count restCount sub dup 0 gt
                                { { pop } repeat }
                                { pop }
                        ifelse
                        args 0 argCount getinterval {} forall
                        end
                /@dictStackLevel @dictStackLevel 1 sub def
                @dictStackCountByLevel @dictStackLevel get
                end
        countdictstack exch sub dup 0 gt
                { { end } repeat }
                { pop }
        ifelse
        } bind def
/@_PopStackLevels
        {
        Adobe_CoolType_Data
                begin
                /@opStackLevel @opStackLevel 1 sub def
                /@dictStackLevel @dictStackLevel 1 sub def
                end
        } bind def
/@Raise
        {
        exch cvx exch errordict exch get exec
        stop
        } bind def
/@ReRaise
        {
        cvx $error /errorname get errordict exch get exec
        stop
        } bind def
/@Stopped
        {
        0 @#Stopped
        } bind def
/@#Stopped
        {
        @_SaveStackLevels
        stopped
                { @_RestoreStackLevels true }
                { @_PopStackLevels false }
        ifelse
        } bind def
/@Arg
        {
        Adobe_CoolType_Data
                begin
                @opStackCountByLevel @opStackLevel 1 sub get /args get exch get
                end
        } bind def
currentglobal true setglobal
/CTHasResourceForAllBug
        Level2?
                {
                1 dict dup begin
                mark
                        {
                                (*) { pop stop } 128 string /Category
                        resourceforall
                        }
                stopped
                cleartomark
                currentdict eq dup
                        { end }
                if
                not
                }
                { false }
        ifelse
        def
/CTHasResourceStatusBug
        Level2?
                {
                mark
                        { /steveamerige /Category resourcestatus }
                stopped
                        { cleartomark true }
                        { cleartomark currentglobal not }
                ifelse
                }
                { false }
        ifelse
        def
setglobal
/CTResourceStatus
                {
                mark 3 1 roll
                /Category findresource
                        begin
                        ({ResourceStatus} stopped) 0 () /SubFileDecode filter 
cvx exec
                                { cleartomark false }
                                { { 3 2 roll pop true } { cleartomark false } 
ifelse }
                        ifelse
                        end
                } bind def
/CTWorkAroundBugs
        {
        Level2?
                {
                /cid_PreLoad /ProcSet resourcestatus
                        {
                        pop pop
                        currentglobal
                        mark
                                {
                                (*)
                                        {
                                        dup /CMap CTHasResourceStatusBug
                                                { CTResourceStatus }
                                                { resourcestatus }
                                        ifelse
                                                {
                                                pop dup 0 eq exch 1 eq or
                                                        {
                                                        dup /CMap findresource 
gcheck setglobal
                                                        /CMap undefineresource
                                                        }
                                                        {
                                                        pop 
CTHasResourceForAllBug
                                                                { exit }
                                                                { stop }
                                                        ifelse
                                                        }
                                                ifelse
                                                }
                                                { pop }
                                        ifelse
                                        }
                                128 string /CMap resourceforall
                                }
                        stopped
                                { cleartomark }
                        stopped pop
                        setglobal
                        }
                if
                }
        if
        } bind def
/doc_setup
        {
        Adobe_CoolType_Core
                begin
                CTWorkAroundBugs
                /mov /moveto load def
                /nfnt /newencodedfont load def
                /mfnt /makefont load def
                /sfnt /setfont load def
                /ufnt /undefinefont load def
                /chp /charpath load def
                /awsh /awidthshow load def
                /wsh /widthshow load def
                /ash /ashow load def
                /sh /show load def
                end
        userdict /Adobe_CoolType_Data 10 dict dup
                begin
                /AddWidths? false def
                /CC 0 def
                /charcode 2 string def
                /@opStackCountByLevel 32 dict def
                /@opStackLevel 0 def
                /@dictStackCountByLevel 32 dict def
                /@dictStackLevel 0 def
                /InVMFontsByCMap 10 dict def
                /InVMDeepCopiedFonts 10 dict def
                end put
        } bind def
/doc_trailer
        {
        currentdict Adobe_CoolType_Core eq
                { end }
        if
        } bind def
/page_setup
        {
        Adobe_CoolType_Core begin
        } bind def
/page_trailer
        {
        end
        } bind def
/unload
        {
        systemdict /languagelevel known
                {
                systemdict/languagelevel get 2 ge
                        {
                        userdict/Adobe_CoolType_Core 2 copy known
                                { undef }
                                { pop pop }
                        ifelse
                        }
                if
                }
        if
        } bind def
/ndf
        {
        1 index where
                { pop pop pop }
                { dup xcheck { bind } if def }
        ifelse
        } def
/findfont systemdict
        begin
        userdict
                begin
                /globaldict where { /globaldict get begin } if
                        dup where pop exch get
                /globaldict where { pop end } if
                end
        end
Adobe_CoolType_Core_Defined
        { /systemfindfont exch def }
        {
        /findfont 1 index def
        /systemfindfont exch def
        }
ifelse
/undefinefont
        { pop } ndf
/copyfont
        {
        currentglobal 3 1 roll
        1 index gcheck setglobal
        dup null eq { 0 } { dup length } ifelse
        2 index length add 1 add dict
                begin
                exch
                        {
                        1 index /FID eq
                                { pop pop }
                                { def }
                        ifelse
                        }
                forall
                dup null eq
                        { pop }
                        { { def } forall }
                ifelse
                currentdict
                end
        exch setglobal
        } bind def
/copyarray
        {
        currentglobal exch
        dup gcheck setglobal
        dup length array copy
        exch setglobal
        } bind def
/newencodedfont
        {
        currentglobal
                {
                SharedFontDirectory 3 index  known
                        { SharedFontDirectory 3 index get /FontReferenced known 
}
                        { false }
                ifelse
                }
                {
                FontDirectory 3 index known
                        { FontDirectory 3 index get /FontReferenced known }
                        {
                        SharedFontDirectory 3 index known
                                { SharedFontDirectory 3 index get 
/FontReferenced known }
                                { false }
                        ifelse
                        }
                ifelse
                }
        ifelse
        dup
                {
                3 index findfont /FontReferenced get
                2 index dup type /nametype eq
                        {findfont}
                if ne
                        { pop false }
                if
                }
        if
                {
                pop
                1 index findfont
                /Encoding get exch
                0 1 255
                        { 2 copy get 3 index 3 1 roll put }
                for
                pop pop pop
                }
                {
                dup type /nametype eq
                  { findfont }
          if
                dup dup maxlength 2 add dict
                        begin
                        exch
                                {
                                1 index /FID ne
                                        {def}
                                        {pop pop}
                                ifelse
                                }
                        forall
                        /FontReferenced exch def
                        /Encoding exch dup length array copy def
                        /FontName 1 index dup type /stringtype eq { cvn } if 
def dup
                        currentdict
                        end
                definefont def
                }
        ifelse
        } bind def
/SetSubstituteStrategy
        {
        $SubstituteFont
                begin
                dup type /dicttype ne
                        { 0 dict }
                if
                currentdict /$Strategies known
                        {
                        exch $Strategies exch 
                        2 copy known
                                {
                                get
                                2 copy maxlength exch maxlength add dict
                                        begin
                                        { def } forall
                                        { def } forall
                                        currentdict
                                        dup /$Init known
                                                { dup /$Init get exec }
                                        if
                                        end
                                /$Strategy exch def
                                }
                                { pop pop pop }
                        ifelse
                        }
                        { pop pop }
                ifelse
                end
        } bind def
/scff
        {
        $SubstituteFont
                begin
                dup type /stringtype eq
                        { dup length exch }
                        { null }
                ifelse
                /$sname exch def
                /$slen exch def
                /$inVMIndex
                        $sname null eq
                                {
                                1 index $str cvs
                                dup length $slen sub $slen getinterval cvn
                                }
                                { $sname }
                        ifelse def
                end
                { findfont }
        @Stopped
                {
                dup length 8 add string exch
                1 index 0 (BadFont:) putinterval
                1 index exch 8 exch dup length string cvs putinterval cvn
                        { findfont }
                @Stopped
                        { pop /Courier findfont }
                if
                }
        if
        $SubstituteFont
                begin
                /$sname null def
                /$slen 0 def
                /$inVMIndex null def
                end
        } bind def
/isWidthsOnlyFont
        {
        dup /WidthsOnly known
                { pop pop true }
                {
                dup /FDepVector known
                        { /FDepVector get { isWidthsOnlyFont dup { exit } if } 
forall }
                        {
                        dup /FDArray known
                                { /FDArray get { isWidthsOnlyFont dup { exit } 
if } forall }
                                { pop }
                        ifelse
                        }
                ifelse
                }
        ifelse
        } bind def
/?str1 256 string def
/?set
        {
        $SubstituteFont
                begin
                /$substituteFound false def
                /$fontname 4 index def
                /$doSmartSub false def
                end
        3 index
        currentglobal false setglobal exch
        /CompatibleFonts /ProcSet resourcestatus
                {
                pop pop
                /CompatibleFonts /ProcSet findresource
                        begin
                        dup /CompatibleFont currentexception
                        1 index /CompatibleFont true setexception
                        1 index /Font resourcestatus
                                {
                                pop pop
                                3 2 roll setglobal
                                end
                                exch
                                dup findfont
                                /CompatibleFonts /ProcSet findresource
                                        begin
                                        3 1 roll exch /CompatibleFont exch 
setexception
                                        end
                                }
                                {
                                3 2 roll setglobal
                                1 index exch /CompatibleFont exch setexception
                                end
                                findfont
                                $SubstituteFont /$substituteFound true put
                                }
                        ifelse
                }
                { exch setglobal findfont }
        ifelse
        $SubstituteFont
                begin
                $substituteFound
                        {
                 false
                 (%%[Using embedded font ) print
                 5 index ?str1 cvs print
                 ( to avoid the font substitution problem noted earlier.]%%\n) 
print
                 }
                        {
                        dup /FontName known
                                {
                                dup /FontName get $fontname eq
                                1 index /DistillerFauxFont known not and
                                /currentdistillerparams where
                                        { pop false 2 index isWidthsOnlyFont 
not and }
                                if
                                }
                                { false }
                        ifelse
                        }
                ifelse
                exch pop
                /$doSmartSub true def
                end
                {
                exch pop exch pop exch
                2 dict dup /Found 3 index put
                exch findfont exch
                }
                {
                exch exec
                exch dup findfont
                dup /FontType get 3 eq
          {
                  exch ?str1 cvs
                  dup length 1 sub
                  -1 0
                {
                          exch dup 2 index get 42 eq
                        {
                                 exch 0 exch getinterval cvn 4 1 roll 3 2 roll 
pop
                                 exit
                          }
                          {exch pop} ifelse
                  }for
                }
                {
                 exch pop
          } ifelse
                2 dict dup /Downloaded 6 5 roll put
                }
        ifelse
        dup /FontName 4 index put copyfont definefont pop
        } bind def
/?str2 256 string def
/?add
        {
        1 index type /integertype eq
                { exch true 4 2 }
                { false 3 1 }
        ifelse
        roll
        1 index findfont
        dup /Widths known
                {
                Adobe_CoolType_Data /AddWidths? true put
                gsave dup 1000 scalefont setfont
                }
        if
        /Downloaded known
                {
                exec
                exch
                        {
                        exch ?str2 cvs exch
                        findfont /Downloaded get 1 dict begin /Downloaded 1 
index def ?str1 cvs length
                        ?str1 1 index 1 add 3 index putinterval
                        exch length 1 add 1 index add
                        ?str1 2 index (*) putinterval
                        ?str1 0 2 index getinterval cvn findfont 
                        ?str1 3 index (+) putinterval
                        2 dict dup /FontName ?str1 0 6 index getinterval cvn put
                        dup /Downloaded Downloaded put end copyfont
                        dup /FontName get exch definefont pop pop pop
                        }
                        {
                        pop
                        }
                ifelse
                }
                {
                pop
                exch
                        {
                        findfont
                        dup /Found get
                        dup length exch ?str1 cvs pop
                        ?str1 1 index (+) putinterval
                        ?str1 1 index 1 add 4 index ?str2 cvs putinterval
                        ?str1 exch 0 exch 5 4 roll ?str2 cvs length 1 add add 
getinterval cvn
                        1 dict exch 1 index exch /FontName exch put copyfont
                        dup /FontName get exch definefont pop
                        }
                        {
                        pop
                        }
                ifelse
                }
        ifelse
        Adobe_CoolType_Data /AddWidths? get
                { grestore Adobe_CoolType_Data /AddWidths? false put }
        if
        } bind def
/?sh
        {
        currentfont /Downloaded known { exch } if pop
        } bind def
/?chp
        {
        currentfont /Downloaded known { pop } { false chp } ifelse
        } bind def
/?mv 
        {
        currentfont /Downloaded known { moveto pop pop } { pop pop moveto } 
ifelse
        } bind def
setpacking
userdict /$SubstituteFont 25 dict put
1 dict
        begin
        /SubstituteFont
                dup $error exch 2 copy known
                        { get }
                        { pop pop { pop /Courier } bind }
                ifelse def
        /currentdistillerparams where dup
                {
                pop pop
                currentdistillerparams /CannotEmbedFontPolicy 2 copy known
                        { get /Error eq }
                        { pop pop false }
                ifelse
                }
        if not
                {
                countdictstack array dictstack 0 get
                        begin
                        userdict
                                begin
                                $SubstituteFont
                                        begin
                                        /$str 128 string def
                                        /$fontpat 128 string def
                                        /$slen 0 def
                                        /$sname null def
                                        /$match false def
                                        /$fontname null def
                                        /$substituteFound false def
                                        /$inVMIndex null def
                                        /$doSmartSub true def
                                        /$depth 0 def
                                        /$fontname null def
                                        /$italicangle 26.5 def
                                        /$dstack null def
                                        /$Strategies 10 dict dup
                                                begin
                                                /$Type3Underprint
                                                        {
                                                        currentglobal exch 
false setglobal
                                                        11 dict
                                                                begin
                                                                /UseFont exch
                                                                        $WMode 
0 ne
                                                                                
{
                                                                                
dup length dict copy
                                                                                
dup /WMode $WMode put
                                                                                
/UseFont exch definefont
                                                                                
}
                                                                        if def
                                                                /FontName 
$fontname dup type /stringtype eq { cvn } if def
                                                                /FontType 3 def
                                                                /FontMatrix [ 
.001 0 0 .001 0 0 ] def
                                                                /Encoding 256 
array dup 0 1 255 { /.notdef put dup } for pop def
                                                                /FontBBox [ 0 0 
0 0 ] def
                                                                /CCInfo 7 dict 
dup
                                                                        begin
                                                                        /cc 
null def
                                                                        /x 0 def
                                                                        /y 0 def
                                                                        end def
                                                                /BuildChar
                                                                        {
                                                                        exch
                                                                                
begin
                                                                                
CCInfo
                                                                                
        begin
                                                                                
        1 string dup 0 3 index put exch pop
                                                                                
        /cc exch def
                                                                                
        UseFont 1000 scalefont setfont
                                                                                
        cc stringwidth /y exch def /x exch def
                                                                                
        x y setcharwidth
                                                                                
        $SubstituteFont /$Strategy get /$Underprint get exec
                                                                                
        0 0 moveto cc show
                                                                                
        x y moveto
                                                                                
        end
                                                                                
end
                                                                        } bind 
def
                                                                currentdict
                                                                end
                                                        exch setglobal
                                                        } bind def
                                                /$GetaTint
                                                        2 dict dup
                                                                begin
                                                                /$BuildFont
                                                                        {
                                                                        dup 
/WMode known
                                                                                
{ dup /WMode get }
                                                                                
{ 0 }
                                                                        ifelse
                                                                        /$WMode 
exch def
                                                                        
$fontname exch
                                                                        dup 
/FontName known
                                                                                
{
                                                                                
dup /FontName get
                                                                                
dup type /stringtype eq { cvn } if
                                                                                
}
                                                                                
{ /unnamedfont }
                                                                        ifelse
                                                                        exch
                                                                        
Adobe_CoolType_Data /InVMDeepCopiedFonts get
                                                                        1 index 
/FontName get known
                                                                                
{
                                                                                
pop
                                                                                
Adobe_CoolType_Data /InVMDeepCopiedFonts get
                                                                                
1 index get
                                                                                
null copyfont
                                                                                
}
                                                                                
{ $deepcopyfont }
                                                                        ifelse
                                                                        exch 1 
index exch /FontBasedOn exch put
                                                                        dup 
/FontName $fontname dup type /stringtype eq { cvn } if put
                                                                        
definefont
                                                                        
Adobe_CoolType_Data /InVMDeepCopiedFonts get
                                                                                
begin
                                                                                
dup /FontBasedOn get 1 index def
                                                                                
end
                                                                        } bind 
def
                                                                /$Underprint
                                                                        {
                                                                        gsave
                                                                        x abs y 
abs gt
                                                                                
{ /y 1000 def }
                                                                                
{ /x -1000 def 500 120 translate }
                                                                        ifelse
                                                                        Level2?
                                                                                
{
                                                                                
[ /Separation (All) /DeviceCMYK { 0 0 0 1 pop } ]
                                                                                
setcolorspace
                                                                                
}
                                                                                
{ 0 setgray }
                                                                        ifelse
                                                                        10 
setlinewidth
                                                                        x .8 mul
                                                                        [ 7 3 ]
                                                                                
{
                                                                                
y mul 8 div 120 sub x 10 div exch moveto
                                                                                
0 y 4 div neg rlineto
                                                                                
dup 0 rlineto
                                                                                
0 y 4 div rlineto
                                                                                
closepath
                                                                                
gsave
                                                                                
Level2?
                                                                                
        { .2 setcolor }
                                                                                
        { .8 setgray }
                                                                                
ifelse
                                                                                
fill grestore
                                                                                
stroke
                                                                                
}
                                                                        forall
                                                                        pop
                                                                        grestore
                                                                        } bind 
def
                                                                end def
                                                /$Oblique
                                                        1 dict dup
                                                                begin
                                                                /$BuildFont
                                                                        {
                                                                        
currentglobal exch dup gcheck setglobal
                                                                        null 
copyfont
                                                                                
begin
                                                                                
/FontBasedOn
                                                                                
currentdict /FontName known
                                                                                
        {
                                                                                
        FontName
                                                                                
        dup type /stringtype eq { cvn } if
                                                                                
        }
                                                                                
        { /unnamedfont }
                                                                                
ifelse
                                                                                
def
                                                                                
/FontName $fontname dup type /stringtype eq { cvn } if def
                                                                                
/currentdistillerparams where
                                                                                
        { pop }
                                                                                
        {
                                                                                
        /FontInfo currentdict /FontInfo known
                                                                                
                { FontInfo null copyfont }
                                                                                
                { 2 dict }
                                                                                
        ifelse
                                                                                
        dup
                                                                                
                begin
                                                                                
                /ItalicAngle $italicangle def
                                                                                
                /FontMatrix FontMatrix
                                                                                
                [ 1 0 ItalicAngle dup sin exch cos div 1 0 0 ]
                                                                                
                matrix concatmatrix readonly
                                                                                
                end
                                                                                
        4 2 roll def
                                                                                
        def
                                                                                
        }
                                                                                
ifelse
                                                                                
FontName currentdict
                                                                                
end
                                                                        
definefont
                                                                        exch 
setglobal
                                                                        } bind 
def
                                                                end def
                                                /$None
                                                        1 dict dup
                                                                begin
                                                                /$BuildFont {} 
bind def
                                                                end def
                                                end def
                                        /$Oblique SetSubstituteStrategy
                                        /$findfontByEnum
                                                {
                                                dup type /stringtype eq { cvn } 
if
                                                dup /$fontname exch def
                                                $sname null eq
                                                        { $str cvs dup length 
$slen sub $slen getinterval }
                                                        { pop $sname }
                                                ifelse
                                                $fontpat dup 0 (fonts/*) 
putinterval exch 7 exch putinterval
                                                /$match false def
                                                $SubstituteFont /$dstack 
countdictstack array dictstack put
                                                mark
                                                        {
                                                        $fontpat 0 $slen 7 add 
getinterval
                                                                { /$match exch 
def exit }
                                                        $str filenameforall
                                                        }
                                                stopped
                                                        {
                                                        cleardictstack
                                                        currentdict
                                                        true
                                                        $SubstituteFont 
/$dstack get
                                                                {
                                                                exch
                                                                        {
                                                                        1 index 
eq
                                                                                
{ pop false }
                                                                                
{ true }
                                                                        ifelse
                                                                        }
                                                                        { begin 
false }
                                                                ifelse
                                                                }
                                                        forall
                                                        pop
                                                        }
                                                if
                                                cleartomark
                                                /$slen 0 def
                                                $match false ne
                                                        { $match (fonts/) 
anchorsearch pop pop cvn }
                                                        { /Courier }
                                                ifelse
                                                } bind def
                                        /$ROS 1 dict dup
                                                begin
                                                /Adobe 4 dict dup
                                                        begin
                                                        /Japan1  [ 
/Ryumin-Light /HeiseiMin-W3
                                                                                
  /GothicBBB-Medium /HeiseiKakuGo-W5
                                                                                
  /HeiseiMaruGo-W4 /Jun101-Light ] def
                                                        /Korea1  [ 
/HYSMyeongJo-Medium /HYGoThic-Medium ] def
                                                        /GB1      [ 
/STSong-Light /STHeiti-Regular ] def
                                                        /CNS1    [ /MKai-Medium 
/MHei-Medium ] def
                                                        end def
                                                end def
                                        /$cmapname null def
                                        /$deepcopyfont
                                                {
                                                dup /FontType get 0 eq
                                                        {
                                                        1 dict dup /FontName 
/copied put copyfont
                                                                begin
                                                                /FDepVector 
FDepVector copyarray
                                                                0 1 2 index 
length 1 sub
                                                                        {
                                                                        2 copy 
get $deepcopyfont
                                                                        dup 
/FontName /copied put
                                                                        /copied 
exch definefont
                                                                        3 copy 
put pop pop
                                                                        }
                                                                for
                                                                def
                                                                currentdict
                                                                end
                                                        }
                                                        { $Strategies 
/$Type3Underprint get exec }
                                                ifelse
                                                } bind def
                                        /$buildfontname
                                                {
                                                dup /CIDFont findresource 
/CIDSystemInfo get
                                                        begin
                                                        Registry length 
Ordering length Supplement 8 string cvs
                                                        3 copy length 2 add add 
add string
                                                        dup 5 1 roll dup 0 
Registry putinterval
                                                        dup 4 index (-) 
putinterval
                                                        dup 4 index 1 add 
Ordering putinterval
                                                        4 2 roll add 1 add 2 
copy (-) putinterval
                                                        end
                                                1 add 2 copy 0 exch getinterval 
$cmapname $fontpat cvs exch
                                                anchorsearch
                                                        { pop pop 3 2 roll 
putinterval cvn /$cmapname exch def }
                                                        { pop pop pop pop pop }
                                                ifelse
                                                length
                                                $str 1 index (-) putinterval 1 
add
                                                $str 1 index $cmapname $fontpat 
cvs putinterval
                                                $cmapname length add
                                                $str exch 0 exch getinterval cvn
                                                } bind def
                                        /$findfontByROS
                                                {
                                                /$fontname exch def
                                                $ROS Registry 2 copy known
                                                        {
                                                        get Ordering 2 copy 
known
                                                                { get }
                                                                { pop pop [] }
                                                        ifelse
                                                        }
                                                        { pop pop [] }
                                                ifelse
                                                false exch
                                                        {
                                                        dup /CIDFont 
resourcestatus
                                                                {
                                                                pop pop
                                                                save
                                                                1 index 
/CIDFont findresource
                                                                dup /WidthsOnly 
known
                                                                        { dup 
/WidthsOnly get }
                                                                        { false 
}
                                                                ifelse
                                                                exch pop
                                                                exch restore
                                                                        { pop }
                                                                        { exch 
pop true exit }
                                                                ifelse
                                                                }
                                                                { pop }
                                                        ifelse
                                                        }
                                                forall
                                                        { $str cvs 
$buildfontname }
                                                        {
                                                        false (*)
                                                                {
                                                                save exch
                                                                dup /CIDFont 
findresource
                                                                dup /WidthsOnly 
known
                                                                        { dup 
/WidthsOnly get not }
                                                                        { true }
                                                                ifelse
                                                                exch 
/CIDSystemInfo get
                                                                dup /Registry 
get Registry eq
                                                                exch /Ordering 
get Ordering eq and and
                                                                        { exch 
restore exch pop true exit }
                                                                        { pop 
restore }
                                                                ifelse
                                                                }
                                                        $str /CIDFont 
resourceforall
                                                                { 
$buildfontname }
                                                                { $fontname 
$findfontByEnum }
                                                        ifelse
                                                        }
                                                ifelse
                                                } bind def
                                        end
                                end
                                currentdict /$error known currentdict 
/languagelevel known and dup
                                        { pop $error /SubstituteFont known }
                                if
                                dup
                                        { $error }
                                        { Adobe_CoolType_Core }
                                ifelse
                                begin
                                        {
                                        /SubstituteFont
                                        /CMap /Category resourcestatus
                                                {
                                                pop pop
                                                {
                                                $SubstituteFont
                                                        begin
                                                        /$substituteFound true 
def
                                                        dup length $slen gt
                                                        $sname null ne or
                                                        $slen 0 gt and
                                                                {
                                                                $sname null eq
                                                                        { dup 
$str cvs dup length $slen sub $slen getinterval cvn }
                                                                        { 
$sname }
                                                                ifelse
                                                                
Adobe_CoolType_Data /InVMFontsByCMap get
                                                                1 index 2 copy 
known
                                                                        {
                                                                        get
                                                                        false 
exch
                                                                                
{
                                                                                
pop
                                                                                
currentglobal
                                                                                
        {
                                                                                
        GlobalFontDirectory 1 index known
                                                                                
                { exch pop true exit }
                                                                                
                { pop }
                                                                                
        ifelse
                                                                                
        }
                                                                                
        {
                                                                                
        FontDirectory 1 index known
                                                                                
                { exch pop true exit }
                                                                                
                {
                                                                                
                GlobalFontDirectory 1 index known
                                                                                
                        { exch pop true exit }
                                                                                
                        { pop }
                                                                                
                ifelse
                                                                                
                }
                                                                                
        ifelse
                                                                                
        }
                                                                                
ifelse
                                                                                
}
                                                                        forall
                                                                        }
                                                                        { pop 
pop false }
                                                                ifelse
                                                                        {
                                                                        exch 
pop exch pop
                                                                        }
                                                                        {
                                                                        dup 
/CMap resourcestatus
                                                                                
{
                                                                                
pop pop
                                                                                
dup /$cmapname exch def
                                                                                
/CMap findresource /CIDSystemInfo get { def } forall
                                                                                
$findfontByROS
                                                                                
}
                                                                                
{
                                                                                
128 string cvs
                                                                                
dup (-) search
                                                                                
        {
                                                                                
        3 1 roll search
                                                                                
                {
                                                                                
                3 1 roll pop
                                                                                
                        { dup cvi }
                                                                                
                stopped
                                                                                
                        { pop pop pop pop pop $findfontByEnum }
                                                                                
                        {
                                                                                
                        4 2 roll pop pop
                                                                                
                        exch length
                                                                                
                        exch
                                                                                
                        2 index length
                                                                                
                        2 index
                                                                                
                        sub
                                                                                
                        exch 1 sub -1 0
                                                                                
                                {
                                                                                
                                $str cvs dup length
                                                                                
                                4 index
                                                                                
                                0
                                                                                
                                4 index
                                                                                
                                4 3 roll add
                                                                                
                                getinterval
                                                                                
                                exch 1 index exch 3 index exch
                                                                                
                                putinterval
                                                                                
                                dup /CMap resourcestatus
                                                                                
                                        {
                                                                                
                                        pop pop
                                                                                
                                        4 1 roll pop pop pop
                                                                                
                                        dup /$cmapname exch def
                                                                                
                                        /CMap findresource /CIDSystemInfo get { 
def } forall
                                                                                
                                        $findfontByROS
                                                                                
                                        true exit
                                                                                
                                        }
                                                                                
                                        { pop }
                                                                                
                                ifelse
                                                                                
                                }
                                                                                
                        for
                                                                                
                        dup type /booleantype eq
                                                                                
                                { pop }
                                                                                
                                { pop pop pop $findfontByEnum }
                                                                                
                        ifelse
                                                                                
                        }
                                                                                
                ifelse
                                                                                
                }
                                                                                
                { pop pop pop $findfontByEnum }
                                                                                
        ifelse
                                                                                
        }
                                                                                
        { pop pop $findfontByEnum }
                                                                                
ifelse
                                                                                
}
                                                                        ifelse
                                                                        }
                                                                ifelse
                                                                }
                                                                { 
//SubstituteFont exec }
                                                        ifelse
                                                        /$slen 0 def
                                                        end
                                                }
                                                }
                                                {
                                                {
                                                $SubstituteFont
                                                        begin
                                                        /$substituteFound true 
def
                                                        dup length $slen gt
                                                        $sname null ne or
                                                        $slen 0 gt and
                                                                { 
$findfontByEnum }
                                                                { 
//SubstituteFont exec }
                                                        ifelse
                                                        end
                                                }
                                                }
                                        ifelse
                                        bind readonly def
                                        Adobe_CoolType_Core /scfindfont 
/systemfindfont load put
                                        }
                                        {
                                        /scfindfont
                                                {
                                                $SubstituteFont
                                                        begin
                                                        dup systemfindfont
                                                        dup /FontName known
                                                                { dup /FontName 
get dup 3 index ne }
                                                                { /noname true }
                                                        ifelse
                                                        dup
                                                                {
                                                                
/$origfontnamefound 2 index def
                                                                /$origfontname 
4 index def /$substituteFound true def
                                                                }
                                                        if
                                                        exch pop
                                                                {
                                                                $slen 0 gt
                                                                $sname null ne
                                                                3 index length 
$slen gt or and
                                                                        {
                                                                        pop dup 
$findfontByEnum findfont
                                                                        dup 
maxlength 1 add dict
                                                                                
begin
                                                                                
        { 1 index /FID eq { pop pop } { def } ifelse }
                                                                                
forall
                                                                                
currentdict
                                                                                
end
                                                                        
definefont
                                                                        dup 
/FontName known { dup /FontName get } { null } ifelse
                                                                        
$origfontnamefound ne
                                                                                
{
                                                                                
$origfontname $str cvs print
                                                                                
( substitution revised, using ) print
                                                                                
dup /FontName known
                                                                                
        { dup /FontName get } { (unspecified font) }
                                                                                
ifelse
                                                                                
$str cvs print (.\n) print
                                                                                
}
                                                                        if
                                                                        }
                                                                        { exch 
pop }
                                                                ifelse
                                                                }
                                                                { exch pop }
                                                        ifelse
                                                        end
                                                } bind def
                                        }
                                ifelse
                                end
                        end
                Adobe_CoolType_Core_Defined not
                        {
                        Adobe_CoolType_Core /findfont
                                {
                                $SubstituteFont
                                        begin
                                        $depth 0 eq
                                                {
                                                /$fontname 1 index dup type 
/stringtype ne { $str cvs } if def
                                                /$substituteFound false def
                                                }
                                        if
                                        /$depth $depth 1 add def
                                        end
                                scfindfont
                                $SubstituteFont
                                        begin
                                        /$depth $depth 1 sub def
                                        $substituteFound $depth 0 eq and
                                                {
                                                $inVMIndex null ne
                                                        { dup $inVMIndex 
$AddInVMFont }
                                                if
                                                $doSmartSub
                                                        {
                                                        currentdict /$Strategy 
known
                                                                { $Strategy 
/$BuildFont get exec }
                                                        if
                                                        }
                                                if
                                                }
                                        if
                                        end
                                } bind put
                        }
                if
                }
        if
        end
/$AddInVMFont
        {
        exch /FontName 2 copy known
                {
                get
                1 dict dup begin exch 1 index gcheck def end exch
                Adobe_CoolType_Data /InVMFontsByCMap get exch
                $DictAdd
                }
                { pop pop pop }
        ifelse
        } bind def
/$DictAdd
        {
        2 copy known not
                { 2 copy 4 index length dict put }
        if
        Level2? not
                {
                2 copy get dup maxlength exch length 4 index length add lt
                2 copy get dup length 4 index length add exch maxlength 1 index 
lt
                        {
                        2 mul dict
                                begin
                                2 copy get { forall } def
                                2 copy currentdict put
                                end
                        }
                        { pop }
                ifelse
                }
        if
        get
                begin
                        { def }
                forall
                end
        } bind def
end
end
%%EndResource
%%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.19 0
%%Copyright: Copyright 1987-2003 Adobe Systems Incorporated.
%%Version: 1.19 0
systemdict /languagelevel known dup
        { currentglobal false setglobal }
        { false }
ifelse
exch
userdict /Adobe_CoolType_Utility 2 copy known
        { 2 copy get dup maxlength 25 add dict copy }
        { 25 dict }
ifelse put
Adobe_CoolType_Utility
        begin
        /ct_Level2? exch def
        /ct_Clone? 1183615869 internaldict dup
                        /CCRun known not
                        exch /eCCRun known not
                        ct_Level2? and or def
ct_Level2?
        { globaldict begin currentglobal true setglobal }
if
        /ct_AddStdCIDMap
                ct_Level2?
                        { {
                        ((Hex) 57 StartData
                        0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0
                        7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60
                        d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8
                        cc36 74f4 1144 b13b 77) 0 () /SubFileDecode filter cvx 
exec
                        } }
                        { {
                        
<BAB431EA07F209EB8C4348311481D9D3F76E3D15246555577D87BC510ED54E
                 
118C39697FA9F6DB58128E60EB8A12FA24D7CDD2FA94D221FA9EC8DA3E5E6A1C
                        4ACECC8C2D39C54E7C946031DD156C3A6B4A09AD29E1867A> eexec
                        } }
                ifelse bind def
userdict /cid_extensions known
dup { cid_extensions /cid_UpdateDB known and } if
         {
         cid_extensions
         begin
         /cid_GetCIDSystemInfo
                 {
                 1 index type /stringtype eq
                         { exch cvn exch }
                 if
                 cid_extensions
                         begin
                         dup load 2 index known
                                 {
                                 2 copy
                                 cid_GetStatusInfo
                                 dup null ne
                                         {
                                         1 index load
                                         3 index get
                                         dup null eq
                                                  { pop pop cid_UpdateDB }
                                                  {
                                                  exch
                                                  1 index /Created get eq
                                                          { exch pop exch pop }
                                                          { pop cid_UpdateDB }
                                                  ifelse
                                                  }
                                         ifelse
                                         }
                                         { pop cid_UpdateDB }
                                 ifelse
                                 }
                                 { cid_UpdateDB }
                         ifelse
                         end
                 } bind def
         end
         }
if
ct_Level2?
        { end setglobal }
if
        /ct_UseNativeCapability?  systemdict /composefont known def
        /ct_MakeOCF 35 dict def
        /ct_Vars 25 dict def
        /ct_GlyphDirProcs 6 dict def
        /ct_BuildCharDict 15 dict dup
                begin
                /charcode 2 string def
                /dst_string 1500 string def
                /nullstring () def
                /usewidths? true def
                end def
        ct_Level2? { setglobal } { pop } ifelse
        ct_GlyphDirProcs
                begin
                /GetGlyphDirectory
                        {
                        systemdict /languagelevel known
                                { pop /CIDFont findresource /GlyphDirectory get 
}
                                {
                                1 index /CIDFont findresource /GlyphDirectory
                                get dup type /dicttype eq
                                        {
                                        dup dup maxlength exch length sub 2 
index lt
                                                {
                                                dup length 2 index add dict 
copy 2 index
                                                /CIDFont 
findresource/GlyphDirectory 2 index put
                                                }
                                        if
                                        }
                                if
                                exch pop exch pop
                                }
                        ifelse
                        +
                        } def
                /+
                        {
                        systemdict /languagelevel known
                                {
                                currentglobal false setglobal
                                3 dict begin
                                        /vm exch def
                                }
                                { 1 dict begin }
                        ifelse
                        /$ exch def
                        systemdict /languagelevel known
                                {
                                vm setglobal
                                /gvm currentglobal def
                                $ gcheck setglobal
                                }
                        if
                        ? { $ begin } if
                        } def
                /? { $ type /dicttype eq } def
                /| {
                        userdict /Adobe_CoolType_Data known
                                {
                        Adobe_CoolType_Data /AddWidths? known
                                {
                                 currentdict Adobe_CoolType_Data
                                        begin
                                          begin
                                                AddWidths?
                                                                {
                                                                
Adobe_CoolType_Data /CC 3 index put
                                                                ? { def } { $ 3 
1 roll put } ifelse
                                                                CC charcode 
exch 1 index 0 2 index 256 idiv put
                                                                1 index exch 1 
exch 256 mod put
                                                                stringwidth 2 
array astore
                                                                currentfont 
/Widths get exch CC exch put
                                                                }
                                                                { ? { def } { $ 
3 1 roll put } ifelse }
                                                        ifelse
                                        end
                                end
                                }
                                { ? { def } { $ 3 1 roll put } ifelse } ifelse
                                }
                                { ? { def } { $ 3 1 roll put } ifelse }
                        ifelse
                        } def
                /!
                        {
                        ? { end } if
                        systemdict /languagelevel known
                                { gvm setglobal }
                        if
                        end
                        } def
                /: { string currentfile exch readstring pop } executeonly def
                end
        ct_MakeOCF
                begin
                /ct_cHexEncoding
                
[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
                 
/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
                 
/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
                 
/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
                 
/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
                 
/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
                 
/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
                 
/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
                 
/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
                 
/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
                 
/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
                 
/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
                 
/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
                 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def
                /ct_CID_STR_SIZE 8000 def
                /ct_mkocfStr100 100 string def
                /ct_defaultFontMtx [.001 0 0 .001 0 0] def
                /ct_1000Mtx [1000 0 0 1000 0 0] def
                /ct_raise {exch cvx exch errordict exch get exec stop} bind def
                /ct_reraise
                        { cvx $error /errorname get (Error: ) print dup (       
                                          ) cvs print
                                        errordict exch get exec stop
                        } bind def
                /ct_cvnsi
                        {
                        1 index add 1 sub 1 exch 0 4 1 roll
                                {
                                2 index exch get
                                exch 8 bitshift
                                add
                                }
                        for
                        exch pop
                        } bind def
                /ct_GetInterval
                        {
                        Adobe_CoolType_Utility /ct_BuildCharDict get
                                begin
                                /dst_index 0 def
                                dup dst_string length gt
                                        { dup string /dst_string exch def }
                                if
                                1 index ct_CID_STR_SIZE idiv
                                /arrayIndex exch def
                                2 index arrayIndex  get
                                2 index
                                arrayIndex ct_CID_STR_SIZE mul
                                sub
                                        {
                                        dup 3 index add 2 index length le
                                                {
                                                2 index getinterval
                                                dst_string  dst_index 2 index 
putinterval
                                                length dst_index add /dst_index 
exch def
                                                exit
                                                }
                                                {
                                                1 index length 1 index sub
                                                dup 4 1 roll
                                                getinterval
                                                dst_string  dst_index 2 index 
putinterval
                                                pop dup dst_index add 
/dst_index exch def
                                                sub
                                                /arrayIndex arrayIndex 1 add def
                                                2 index dup length arrayIndex gt
                                                          { arrayIndex get }
                                                          {
                                                          pop
                                                          exit
                                                          }
                                                ifelse
                                                0
                                                }
                                        ifelse
                                        }
                                loop
                                pop pop pop
                                dst_string 0 dst_index getinterval
                                end
                        } bind def
                ct_Level2?
                        {
                        /ct_resourcestatus
                        currentglobal mark true setglobal
                                { /unknowninstancename /Category resourcestatus 
}
                        stopped
                                { cleartomark setglobal true }
                                { cleartomark currentglobal not exch setglobal }
                        ifelse
                                {
                                        {
                                        mark 3 1 roll /Category findresource
                                                begin
                                                ct_Vars /vm currentglobal put
                                                ({ResourceStatus} stopped) 0 () 
/SubFileDecode filter cvx exec
                                                        { cleartomark false }
                                                        { { 3 2 roll pop true } 
{ cleartomark false } ifelse }
                                                ifelse
                                                ct_Vars /vm get setglobal
                                                end
                                        }
                                }
                                { { resourcestatus } }
                        ifelse bind def
                        /CIDFont /Category ct_resourcestatus
                                { pop pop }
                                {
                                currentglobal  true setglobal
                                /Generic /Category findresource
                                dup length dict copy
                                dup /InstanceType /dicttype put
                                /CIDFont exch /Category defineresource pop
                                setglobal
                                }
                        ifelse
                        ct_UseNativeCapability?
                                {
                                /CIDInit /ProcSet findresource begin
                                12 dict begin
                                begincmap
                                /CIDSystemInfo 3 dict dup begin
                                  /Registry (Adobe) def
                                  /Ordering (Identity) def
                                  /Supplement 0 def
                                end def
                                /CMapName /Identity-H def
                                /CMapVersion 1.000 def
                                /CMapType 1 def
                                1 begincodespacerange
                                <0000> <FFFF>
                                endcodespacerange
                                1 begincidrange
                                <0000> <FFFF> 0
                                endcidrange
                                endcmap
                                CMapName currentdict /CMap defineresource pop
                                end
                                end
                                }
                        if
                        }
                        {
                        /ct_Category 2 dict begin
                        /CIDFont  10 dict def
                        /ProcSet        2 dict def
                        currentdict
                        end
                        def
                        /defineresource
                                {
                                ct_Category 1 index 2 copy known
                                        {
                                        get
                                        dup dup maxlength exch length eq
                                                {
                                                dup length 10 add dict copy
                                                ct_Category 2 index 2 index put
                                                }
                                        if
                                        3 index 3 index put
                                        pop exch pop
                                        }
                                        { pop pop /defineresource /undefined 
ct_raise }
                                ifelse
                                } bind def
                        /findresource
                                {
                                ct_Category 1 index 2 copy known
                                        {
                                        get
                                        2 index 2 copy known
                                                { get 3 1 roll pop pop}
                                                { pop pop /findresource 
/undefinedresource ct_raise }
                                        ifelse
                                        }
                                        { pop pop /findresource /undefined 
ct_raise }
                                ifelse
                                } bind def
                        /resourcestatus
                                {
                                ct_Category 1 index 2 copy known
                                        {
                                        get
                                        2 index known
                                        exch pop exch pop
                                                {
                                                0 -1 true
                                                }
                                                {
                                                false
                                                }
                                        ifelse
                                        }
                                        { pop pop /findresource /undefined 
ct_raise }
                                ifelse
                                } bind def
                        /ct_resourcestatus /resourcestatus load def
                        }
                ifelse
                /ct_CIDInit 2 dict
                        begin
                        /ct_cidfont_stream_init
                                {
                                        {
                                        dup (Binary) eq
                                                {
                                                pop
                                                null
                                                currentfile
                                                ct_Level2?
                                                        {
                                                                { 
cid_BYTE_COUNT () /SubFileDecode filter }
                                                        stopped
                                                                { pop pop pop }
                                                        if
                                                        }
                                                if
                                                /readstring load
                                                exit
                                                }
                                        if
                                        dup (Hex) eq
                                                {
                                                pop
                                                currentfile
                                                ct_Level2?
                                                        {
                                                                { null exch 
/ASCIIHexDecode filter /readstring }
                                                        stopped
                                                                { pop exch pop 
(>) exch /readhexstring }
                                                        if
                                                        }
                                                        { (>) exch 
/readhexstring }
                                                ifelse
                                                load
                                                exit
                                                }
                                        if
                                        /StartData /typecheck ct_raise
                                        }
                                loop
                                cid_BYTE_COUNT ct_CID_STR_SIZE le
                                        {
                                        2 copy cid_BYTE_COUNT string exch exec
                                        pop
                                        1 array dup
                                        3 -1 roll
                                        0 exch put
                                        }
                                        {
                                        cid_BYTE_COUNT ct_CID_STR_SIZE div 
ceiling cvi
                                        dup array exch 2 sub 0 exch 1 exch
                                                {
                                                2 copy
                                                5 index
                                                ct_CID_STR_SIZE
                                                string
                                                6 index exec
                                                pop
                                                put
                                                pop
                                                }
                                        for
                                        2 index
                                        cid_BYTE_COUNT ct_CID_STR_SIZE mod 
string
                                        3 index exec
                                        pop
                                        1 index exch
                                        1 index length 1 sub
                                        exch put
                                        }
                                ifelse
                                cid_CIDFONT exch /GlyphData exch put
                                2 index null eq
                                        {
                                        pop pop pop
                                        }
                                        {
                                        pop /readstring load
                                        1 string exch
                                                {
                                                3 copy exec
                                                pop
                                                dup length 0 eq
                                                        {
                                                        pop pop pop pop pop
                                                        true exit
                                                        }
                                                if
                                                4 index
                                                eq
                                                        {
                                                        pop pop pop pop
                                                        false exit
                                                        }
                                                if
                                                }
                                        loop
                                        pop
                                        }
                                ifelse
                                } bind def
                        /StartData
                                {
                                mark
                                        {
                                        currentdict
                                        dup /FDArray get 0 get /FontMatrix get
                                        0 get 0.001 eq
                                                {
                                                dup /CDevProc known not
                                                        {
                                                        /CDevProc 1183615869 
internaldict /stdCDevProc 2 copy known
                                                                { get }
                                                                {
                                                                pop pop
                                                                { pop pop pop 
pop pop 0 -1000 7 index 2 div 880 }
                                                                }
                                                        ifelse
                                                        def
                                                        }
                                                if
                                                }
                                                {
                                                 /CDevProc
                                                         {
                                                         pop pop pop pop pop
                                                         0
                                                         1 cid_temp 
/cid_CIDFONT get
                                                         /FDArray get 0 get
                                                         /FontMatrix get 0 get 
div
                                                         7 index 2 div
                                                         1 index 0.88 mul
                                                         } def
                                                }
                                        ifelse
                                        /cid_temp 15 dict def
                                        cid_temp
                                                begin
                                                /cid_CIDFONT exch def
                                                3 copy pop
                                                dup /cid_BYTE_COUNT exch def 0 
gt
                                                        {
                                                        ct_cidfont_stream_init
                                                        FDArray
                                                                {
                                                                /Private get
                                                                dup 
/SubrMapOffset known
                                                                        {
                                                                        begin
                                                                        /Subrs 
SubrCount array def
                                                                        Subrs
                                                                        
SubrMapOffset
                                                                        
SubrCount
                                                                        SDBytes
                                                                        
ct_Level2?
                                                                                
{
                                                                                
currentdict dup /SubrMapOffset undef
                                                                                
dup /SubrCount undef
                                                                                
/SDBytes undef
                                                                                
}
                                                                        if
                                                                        end
                                                                        
/cid_SD_BYTES exch def
                                                                        
/cid_SUBR_COUNT exch def
                                                                        
/cid_SUBR_MAP_OFFSET exch def
                                                                        
/cid_SUBRS exch def
                                                                        
cid_SUBR_COUNT 0 gt
                                                                                
{
                                                                                
GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval
                                                                                
0 cid_SD_BYTES ct_cvnsi
                                                                                
0 1 cid_SUBR_COUNT 1 sub
                                                                                
        {
                                                                                
        exch 1 index
                                                                                
        1 add
                                                                                
        cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add
                                                                                
        GlyphData exch cid_SD_BYTES ct_GetInterval
                                                                                
        0 cid_SD_BYTES ct_cvnsi
                                                                                
        cid_SUBRS 4 2 roll
                                                                                
        GlyphData exch
                                                                                
        4 index
                                                                                
        1 index
                                                                                
        sub
                                                                                
        ct_GetInterval
                                                                                
        dup length string copy put
                                                                                
        }
                                                                                
for
                                                                                
pop
                                                                                
}
                                                                        if
                                                                        }
                                                                        { pop }
                                                                ifelse
                                                                }
                                                        forall
                                                        }
                                                if
                                                cleartomark pop pop
                                                end
                                        CIDFontName currentdict /CIDFont 
defineresource pop
                                        end end
                                        }
                                stopped
                                        { cleartomark /StartData ct_reraise }
                                if
                                } bind def
                        currentdict
                        end def
                /ct_saveCIDInit
                        {
                        /CIDInit /ProcSet ct_resourcestatus
                                { true }
                                { /CIDInitC /ProcSet ct_resourcestatus }
                        ifelse
                                {
                                pop pop
                                /CIDInit /ProcSet findresource
                                ct_UseNativeCapability?
                                        { pop null }
                                        { /CIDInit ct_CIDInit /ProcSet 
defineresource pop }
                                ifelse
                                }
                                { /CIDInit ct_CIDInit /ProcSet defineresource 
pop null }
                        ifelse
                        ct_Vars exch /ct_oldCIDInit exch put
                        } bind def
                /ct_restoreCIDInit
                        {
                        ct_Vars /ct_oldCIDInit get dup null ne
                                { /CIDInit exch /ProcSet defineresource pop }
                                { pop }
                        ifelse
                        } bind def
                /ct_BuildCharSetUp
                        {
                        1 index
                                begin
                                CIDFont
                                        begin
                                        Adobe_CoolType_Utility 
/ct_BuildCharDict get
                                                begin
                                                /ct_dfCharCode exch def
                                                /ct_dfDict exch def
                                                CIDFirstByte ct_dfCharCode add
                                                dup CIDCount ge
                                                        { pop 0 }
                                                if
                                                /cid exch def
                                                        {
                                                        GlyphDirectory cid 2 
copy known
                                                                { get }
                                                                { pop pop 
nullstring }
                                                        ifelse
                                                        dup length FDBytes sub 
0 gt
                                                                {
                                                                dup
                                                                FDBytes 0 ne
                                                                        { 0 
FDBytes ct_cvnsi }
                                                                        { pop 0 
}
                                                                ifelse
                                                                /fdIndex exch 
def
                                                                dup length 
FDBytes sub FDBytes exch getinterval
                                                                /charstring 
exch def
                                                                exit
                                                                }
                                                                {
                                                                pop
                                                                cid 0 eq
                                                                        { 
/charstring nullstring def exit }
                                                                if
                                                                /cid 0 def
                                                                }
                                                        ifelse
                                                        }
                                                loop
                        } def
                /ct_SetCacheDevice
                        {
                        0 0 moveto
                        dup stringwidth
                        3 -1 roll
                        true charpath
                        pathbbox
                        0 -1000
                        7 index 2 div 880
                        setcachedevice2
                        0 0 moveto
                        } def
                /ct_CloneSetCacheProc
                        {
                        1 eq
                                {
                                stringwidth
                                pop -2 div -880
                                0 -1000 setcharwidth
                                moveto
                                }
                                {
                                usewidths?
                                        {
                                        currentfont /Widths get cid
                                        2 copy known
                                                { get exch pop aload pop }
                                                { pop pop stringwidth }
                                        ifelse
                                        }
                                        { stringwidth }
                                ifelse
                                setcharwidth
                                0 0 moveto
                                }
                        ifelse
                        } def
                /ct_Type3ShowCharString
                        {
                        ct_FDDict fdIndex 2 copy known
                                { get }
                                {
                                currentglobal 3 1 roll
                                1 index gcheck setglobal
                                ct_Type1FontTemplate dup maxlength dict copy
                                        begin
                                        FDArray fdIndex get
                                        dup /FontMatrix 2 copy known
                                                { get }
                                                { pop pop ct_defaultFontMtx }
                                        ifelse
                                        /FontMatrix exch dup length array copy 
def
                                        /Private get
                                        /Private exch def
                                        /Widths rootfont /Widths get def
                                        /CharStrings 1 dict dup /.notdef
                                                <d841272cf18f54fc13> dup length 
string copy put def
                                        currentdict
                                        end
                                /ct_Type1Font exch definefont
                                dup 5 1 roll put
                                setglobal
                                }
                        ifelse
                        dup /CharStrings get 1 index /Encoding get
                        ct_dfCharCode get charstring put
                        rootfont /WMode 2 copy known
                                { get }
                                { pop pop 0 }
                        ifelse
                        exch
                        1000 scalefont setfont
                        ct_str1 0 ct_dfCharCode put
                        ct_str1 exch ct_dfSetCacheProc
                        ct_SyntheticBold
                                {
                                currentpoint
                                ct_str1 show
                                newpath
                                moveto
                                ct_str1 true charpath
                                ct_StrokeWidth setlinewidth
                                stroke
                                }
                                { ct_str1 show }
                        ifelse
                        } def
                /ct_Type4ShowCharString
                        {
                        ct_dfDict ct_dfCharCode charstring
                        FDArray fdIndex get
                        dup /FontMatrix get dup ct_defaultFontMtx ct_matrixeq 
not
                                { ct_1000Mtx matrix concatmatrix concat }
                                { pop }
                        ifelse
                        /Private get
                        Adobe_CoolType_Utility /ct_Level2? get not
                                {
                                ct_dfDict /Private
                                3 -1 roll
                                        { put }
                                1183615869 internaldict /superexec get exec
                                }
                        if
                        1183615869 internaldict
                        Adobe_CoolType_Utility /ct_Level2? get
                                { 1 index }
                                { 3 index /Private get mark 6 1 roll }
                        ifelse
                        dup /RunInt known
                                { /RunInt get }
                                { pop /CCRun }
                        ifelse
                        get exec
                        Adobe_CoolType_Utility /ct_Level2? get not
                                { cleartomark }
                        if
                        } bind def
                /ct_BuildCharIncremental
                        {
                                {
                                Adobe_CoolType_Utility /ct_MakeOCF get begin
                                ct_BuildCharSetUp
                                ct_ShowCharString
                                }
                        stopped
                                { stop }
                        if
                        end
                        end
                        end
                        end
                        } bind def
                /BaseFontNameStr (BF00) def
                /ct_Type1FontTemplate 14 dict
                        begin
                        /FontType 1 def
                        /FontMatrix  [0.001 0 0 0.001 0 0] def
                        /FontBBox  [-250 -250 1250 1250] def
                        /Encoding ct_cHexEncoding def
                        /PaintType 0 def
                        currentdict
                        end def
                /BaseFontTemplate 11 dict
                        begin
                        /FontMatrix  [0.001 0 0 0.001 0 0] def
                        /FontBBox  [-250 -250 1250 1250] def
                        /Encoding ct_cHexEncoding def
                        /BuildChar /ct_BuildCharIncremental load def
                        ct_Clone?
                                {
                                /FontType 3 def
                                /ct_ShowCharString /ct_Type3ShowCharString load 
def
                                /ct_dfSetCacheProc /ct_CloneSetCacheProc load 
def
                                /ct_SyntheticBold false def
                                /ct_StrokeWidth 1 def
                                }
                                {
                                /FontType 4 def
                                /Private 1 dict dup /lenIV 4 put def
                                /CharStrings 1 dict dup /.notdef 
<d841272cf18f54fc13> put def
                                /PaintType 0 def
                                /ct_ShowCharString /ct_Type4ShowCharString load 
def
                                }
                        ifelse
                        /ct_str1 1 string def
                        currentdict
                        end def
                /BaseFontDictSize BaseFontTemplate length 5 add def
                /ct_matrixeq
                        {
                        true 0 1 5
                                {
                                dup 4 index exch get exch 3 index exch get eq 
and
                                dup not
                                        { exit }
                                if
                                }
                        for
                        exch pop exch pop
                        } bind def
                /ct_makeocf
                        {
                        15 dict
                                begin
                                exch /WMode exch def
                                exch /FontName exch def
                                /FontType 0 def
                                /FMapType 2 def
                        dup /FontMatrix known
                                { dup /FontMatrix get /FontMatrix exch def }
                                { /FontMatrix matrix def }
                        ifelse
                                /bfCount 1 index /CIDCount get 256 idiv 1 add
                                        dup 256 gt { pop 256} if def
                                /Encoding
                                        256 array 0 1 bfCount 1 sub { 2 copy 
dup put pop } for
                                        bfCount 1 255 { 2 copy bfCount put pop 
} for
                                        def
                                /FDepVector bfCount dup 256 lt { 1 add } if 
array def
                                BaseFontTemplate BaseFontDictSize dict copy
                                        begin
                                        /CIDFont exch def
                                        CIDFont /FontBBox known
                                                { CIDFont /FontBBox get 
/FontBBox exch def }
                                        if
                                        CIDFont /CDevProc known
                                                { CIDFont /CDevProc get 
/CDevProc exch def }
                                        if
                                        currentdict
                                        end
                                BaseFontNameStr 3 (0) putinterval
                                0 1 bfCount dup 256 eq { 1 sub } if
                                        {
                                        FDepVector exch
                                        2 index BaseFontDictSize dict copy
                                                begin
                                                dup /CIDFirstByte exch 256 mul 
def
                                                FontType 3 eq
                                                        { /ct_FDDict 2 dict def 
}
                                                if
                                                currentdict
                                                end
                                        1 index  16
                                        BaseFontNameStr  2 2 getinterval cvrs 
pop
                                        BaseFontNameStr exch definefont
                                        put
                                        }
                                for
                                ct_Clone?
                                        { /Widths 1 index /CIDFont get 
/GlyphDirectory get length dict def }
                                if
                                FontName
                                currentdict
                                end
                        definefont
                        ct_Clone?
                                {
                                gsave
                                dup 1000 scalefont setfont
                                ct_BuildCharDict
                                        begin
                                        /usewidths? false def
                                        currentfont /Widths get
                                                begin
                                                exch /CIDFont get 
/GlyphDirectory get
                                                        {
                                                        pop
                                                        dup charcode exch 1 
index 0 2 index 256 idiv put
                                                        1 index exch 1 exch 256 
mod put
                                                        stringwidth 2 array 
astore def
                                                        }
                                                forall
                                                end
                                        /usewidths? true def
                                        end
                                grestore
                                }
                                { exch pop }
                        ifelse
                        } bind def
                /ct_ComposeFont
                        {
                        ct_UseNativeCapability?
                                {
                                2 index /CMap ct_resourcestatus
                                        { pop pop exch pop }
                                        {
                                        /CIDInit /ProcSet findresource
                                                begin
                                                12 dict
                                                        begin
                                                        begincmap
                                                        /CMapName 3 index def
                                                        /CMapVersion 1.000 def
                                                        /CMapType 1 def
                                                        exch /WMode exch def
                                                        /CIDSystemInfo 3 dict 
dup
                                                                begin
                                                                /Registry 
(Adobe) def
                                                                /Ordering
                                                                CMapName 
ct_mkocfStr100 cvs
                                                                (Adobe-) search
                                                                        {
                                                                        pop pop
                                                                        (-) 
search
                                                                                
{
                                                                                
dup length string copy
                                                                                
exch pop exch pop
                                                                                
}
                                                                                
{ pop (Identity)}
                                                                        ifelse
                                                                        }
                                                                        { pop  
(Identity)  }
                                                                ifelse
                                                                def
                                                                /Supplement 0 
def
                                                                end def
                                                        1 begincodespacerange
                                                        <0000> <FFFF>
                                                        endcodespacerange
                                                        1 begincidrange
                                                        <0000> <FFFF> 0
                                                        endcidrange
                                                        endcmap
                                                        CMapName currentdict 
/CMap defineresource pop
                                                        end
                                                end
                                        }
                                ifelse
                                composefont
                                }
                                {
                                3 2 roll pop
                                0 get /CIDFont findresource
                                ct_makeocf
                                }
                        ifelse
                        } bind def
                /ct_MakeIdentity
                        {
                        ct_UseNativeCapability?
                                {
                                1 index /CMap ct_resourcestatus
                                        { pop pop }
                                        {
                                        /CIDInit /ProcSet findresource begin
                                        12 dict begin
                                        begincmap
                                        /CMapName 2 index def
                                        /CMapVersion 1.000 def
                                        /CMapType 1 def
                                        /CIDSystemInfo 3 dict dup
                                                begin
                                                /Registry (Adobe) def
                                                /Ordering
                                                CMapName ct_mkocfStr100 cvs
                                                (Adobe-) search
                                                        {
                                                        pop pop
                                                        (-) search
                                                                { dup length 
string copy exch pop exch pop }
                                                                { pop 
(Identity) }
                                                        ifelse
                                                        }
                                                        { pop (Identity) }
                                                ifelse
                                                def
                                                /Supplement 0 def
                                                end def
                                        1 begincodespacerange
                                        <0000> <FFFF>
                                        endcodespacerange
                                        1 begincidrange
                                        <0000> <FFFF> 0
                                        endcidrange
                                        endcmap
                                        CMapName currentdict /CMap 
defineresource pop
                                        end
                                        end
                                        }
                                ifelse
                                composefont
                                }
                                {
                                exch pop
                                0 get /CIDFont findresource
                                ct_makeocf
                                }
                        ifelse
                        } bind def
                currentdict readonly pop
                end
        end
%%EndResource
%%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0
%%Copyright: Copyright 1987-2003 Adobe Systems Incorporated.
%%Version: 1.0 0
userdict /ct_T42Dict 15 dict put
ct_T42Dict begin
/Is2015?
{
  version
  cvi
  2015
  ge
} bind def
/AllocGlyphStorage
{
  Is2015?
  {     
                pop
  } 
  { 
                {string} forall
  } ifelse
} bind def
/Type42DictBegin
{
        25 dict begin
  /FontName exch def
  /CharStrings 256 dict 
        begin
                  /.notdef 0 def
                  currentdict 
        end def
  /Encoding exch def
  /PaintType 0 def
  /FontType 42 def
  /FontMatrix [1 0 0 1 0 0] def
  4 array  astore cvx /FontBBox exch def
  /sfnts
} bind def
/Type42DictEnd  
{
         currentdict dup /FontName get exch definefont end
        ct_T42Dict exch
        dup /FontName get exch put
} bind def
/RD {string currentfile exch readstring pop} executeonly def
/PrepFor2015
{
        Is2015?
        {                 
                 /GlyphDirectory 
                 16
                 dict def
                 sfnts 0 get
                 dup
                 2 index
                 (glyx)
                 putinterval
                 2 index  
                 (locx)
                 putinterval
                 pop
                 pop
        }
        {
                 pop
                 pop
        } ifelse                        
} bind def
/AddT42Char
{
        Is2015?
        {
                /GlyphDirectory get 
                begin
                def
                end
                pop
                pop
        }
        {
                /sfnts get
                4 index
                get
                3 index
          2 index
                putinterval
                pop
                pop
                pop
                pop
        } ifelse
} bind def
end
%%EndResource
Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end
%%BeginResource: procset Adobe_AGM_Image 1.0 0
%%Version: 1.0 0
%%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc.  All Rights Reserved.
systemdict /setpacking known
{
        currentpacking
        true setpacking
} if
userdict /Adobe_AGM_Image 75 dict dup begin put
/Adobe_AGM_Image_Id /Adobe_AGM_Image_1.0_0 def
/nd{
        null def
}bind def
/AGMIMG_&image nd
/AGMIMG_&colorimage nd
/AGMIMG_&imagemask nd
/AGMIMG_mbuf () def
/AGMIMG_ybuf () def
/AGMIMG_kbuf () def
/AGMIMG_c 0 def
/AGMIMG_m 0 def
/AGMIMG_y 0 def
/AGMIMG_k 0 def
/AGMIMG_tmp nd
/AGMIMG_imagestring0 nd
/AGMIMG_imagestring1 nd
/AGMIMG_imagestring2 nd
/AGMIMG_imagestring3 nd
/AGMIMG_imagestring4 nd
/AGMIMG_imagestring5 nd
/AGMIMG_cnt nd
/AGMIMG_fsave nd
/AGMIMG_colorAry nd
/AGMIMG_override nd
/AGMIMG_name nd
/AGMIMG_maskSource nd
/invert_image_samples nd
/knockout_image_samples nd
/img nd
/sepimg nd
/devnimg nd
/idximg nd
/doc_setup
{ 
        Adobe_AGM_Core begin
        Adobe_AGM_Image begin
        /AGMIMG_&image systemdict/image get def
        /AGMIMG_&imagemask systemdict/imagemask get def
        /colorimage where{
                pop
                /AGMIMG_&colorimage /colorimage ldf
        }if
        end
        end
}def
/page_setup
{
        Adobe_AGM_Image begin
        /AGMIMG_ccimage_exists {/customcolorimage where 
                {
                        pop
                        /Adobe_AGM_OnHost_Seps where
                        {
                        pop false
                        }{
                        /Adobe_AGM_InRip_Seps where
                                {
                                pop false
                                }{
                                        true
                                 }ifelse
                         }ifelse
                        }{
                        false
                }ifelse 
        }bdf
        level2{
                /invert_image_samples
                {
                        Adobe_AGM_Image/AGMIMG_tmp Decode length ddf
                        /Decode [ Decode 1 get Decode 0 get] def
                }def
                /knockout_image_samples
                {
                        Operator/imagemask ne{
                                /Decode [1 1] def
                        }if
                }def
        }{      
                /invert_image_samples
                {
                        {1 exch sub} currenttransfer addprocs settransfer
                }def
                /knockout_image_samples
                {
                        { pop 1 } currenttransfer addprocs settransfer
                }def
        }ifelse
        /img /imageormask ldf
        /sepimg /sep_imageormask ldf
        /devnimg /devn_imageormask ldf
        /idximg /indexed_imageormask ldf
        /_ctype 7 def
        currentdict{
                dup xcheck 1 index type dup /arraytype eq exch /packedarraytype 
eq or and{
                        bind
                }if
                def
        }forall
}def
/page_trailer
{
        end
}def
/doc_trailer
{
}def
/imageormask_sys
{
        begin
                save mark
                level2{
                        currentdict
                        Operator /imagemask eq{
                                AGMIMG_&imagemask
                        }{
                                use_mask {
                                        level3 {process_mask_L3 
AGMIMG_&image}{masked_image_simulation}ifelse
                                }{
                                        AGMIMG_&image
                                }ifelse
                        }ifelse
                }{
                        Width Height
                        Operator /imagemask eq{
                                Decode 0 get 1 eq Decode 1 get 0 eq     and
                                ImageMatrix /DataSource load
                                AGMIMG_&imagemask
                        }{
                                BitsPerComponent ImageMatrix /DataSource load
                                AGMIMG_&image
                        }ifelse
                }ifelse
                cleartomark restore
        end
}def
/overprint_plate
{
        currentoverprint {
                0 get dup type /nametype eq {
                        dup /DeviceGray eq{
                                pop AGMCORE_black_plate not
                        }{
                                /DeviceCMYK eq{
                                        AGMCORE_is_cmyk_sep not
                                }if
                        }ifelse
                }{
                        false exch
                        {
                                 AGMOHS_sepink eq or
                        } forall
                        not
                } ifelse
        }{
                pop false
        }ifelse
}def
/process_mask_L3
{
        dup begin
        /ImageType 1 def
        end
        4 dict begin
                /DataDict exch def
                /ImageType 3 def
                /InterleaveType 3 def
                /MaskDict 9 dict begin
                        /ImageType 1 def
                        /Width DataDict dup /MaskWidth known 
{/MaskWidth}{/Width} ifelse get def
                        /Height DataDict dup /MaskHeight known 
{/MaskHeight}{/Height} ifelse get def
                        /ImageMatrix [Width 0 0 Height neg 0 Height] def
                        /NComponents 1 def
                        /BitsPerComponent 1 def
                        /Decode [0 1] def
                        /DataSource AGMIMG_maskSource def
                currentdict end def
        currentdict end
}def
/use_mask
{
        dup type /dicttype eq
        {
                dup /Mask known {
                        dup /Mask get {
                                level3
                                {true}
                                {
                                        dup /MaskWidth known {dup /MaskWidth 
get 1 index /Width get eq}{true}ifelse exch
                                        dup /MaskHeight known {dup /MaskHeight 
get 1 index /Height get eq}{true}ifelse
                                        3 -1 roll and
                                } ifelse
                        }
                        {false} ifelse
                }
                {false} ifelse
        }
        {false} ifelse
}def
/make_line_source
{
        begin
        MultipleDataSources {
                [
                Decode length 2 div cvi {Width string} repeat
                ]
        }{
                Width Decode length 2 div mul cvi string
        }ifelse
        end
}def
/datasource_to_str
{
        exch dup type
        dup /filetype eq {
                pop exch readstring
        }{
                /arraytype eq {
                        exec exch copy
                }{
                        pop
                }ifelse
        }ifelse
        pop
}def
/masked_image_simulation
{
        3 dict begin
        dup make_line_source /line_source xdf
        /mask_source AGMIMG_maskSource /LZWDecode filter def
        dup /Width get 8 div ceiling cvi string /mask_str xdf
        begin
        gsave
        0 1 translate 1 -1 Height div scale
        1 1 Height {
                pop
                gsave
                MultipleDataSources {
                        0 1 DataSource length 1 sub {
                                dup DataSource exch get
                                exch line_source exch get
                                datasource_to_str
                        } for
                }{
                        DataSource line_source datasource_to_str
                } ifelse
                <<
                        /PatternType 1
                        /PaintProc [
                                /pop cvx
                                <<
                                        /ImageType 1
                                        /Width Width
                                        /Height 1
                                        /ImageMatrix Width 1.0 sub 1 matrix 
scale 0.5 0 matrix translate matrix concatmatrix
                                        /MultipleDataSources MultipleDataSources
                                        /DataSource line_source
                                        /BitsPerComponent BitsPerComponent
                                        /Decode Decode
                                >>
                                /image cvx
                        ] cvx
                        /BBox [0 0 Width 1]
                        /XStep Width
                        /YStep 1
                        /PaintType 1
                        /TilingType 2
                >>
                matrix makepattern set_pattern
                <<
                        /ImageType 1
                        /Width Width
                        /Height 1
                        /ImageMatrix Width 1 matrix scale
                        /MultipleDataSources false
                        /DataSource mask_source mask_str readstring pop
                        /BitsPerComponent 1
                        /Decode [0 1]
                >>
                imagemask
                grestore
                0 1 translate
        } for
        grestore
        end
        end
}def
/imageormask
{
        begin
                SkipImageProc {
                        currentdict consumeimagedata
                }
                {
                        save mark
                        level2 AGMCORE_host_sep not and{
                                currentdict
                                Operator /imagemask eq DeviceN_PS2 not and {
                                        imagemask
                                }{
                                        AGMCORE_in_rip_sep currentoverprint and 
currentcolorspace 0 get /DeviceGray eq and{
                                                [/Separation /Black /DeviceGray 
{}] setcolorspace
                                                /Decode [ Decode 1 get Decode 0 
get ] def
                                        }if
                                        use_mask {
                                                level3 {process_mask_L3 
image}{masked_image_simulation}ifelse
                                        }{
                                                DeviceN_NoneName DeviceN_PS2 
Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and 
                                                {
                                                        Names 
convert_to_process not {
                                                                2 dict begin
                                                                /imageDict xdf
                                                                /names_index 0 
def
                                                                gsave
                                                                imageDict 
write_image_file {
                                                                        Names {
                                                                                
dup (None) ne {
                                                                                
        [/Separation 3 -1 roll /DeviceGray {1 exch sub}] setcolorspace
                                                                                
        Operator imageDict read_image_file
                                                                                
        names_index 0 eq {true setoverprint} if
                                                                                
        /names_index names_index 1 add def
                                                                                
}{
                                                                                
        pop
                                                                                
} ifelse
                                                                        } forall
                                                                        
close_image_file
                                                                } if
                                                                grestore
                                                                end
                                                        }{
                                                                Operator 
/imagemask eq {
                                                                        
imagemask
                                                                }{
                                                                        image
                                                                } ifelse
                                                        } ifelse
                                                }{
                                                        Operator /imagemask eq {
                                                                imagemask
                                                        }{
                                                                image
                                                        } ifelse
                                                } ifelse
                                        }ifelse
                                }ifelse
                        }{
                                Width Height
                                Operator /imagemask eq{
                                        Decode 0 get 1 eq Decode 1 get 0 eq     
and
                                        ImageMatrix /DataSource load
                                        /Adobe_AGM_OnHost_Seps where {
                                                pop imagemask
                                        }{
                                                currentgray 1 ne{
                                                        currentdict 
imageormask_sys
                                                }{
                                                        currentoverprint not{
                                                                1 
AGMCORE_&setgray
                                                                currentdict 
imageormask_sys
                                                        }{
                                                                currentdict 
ignoreimagedata
                                                        }ifelse                 
                        
                                                }ifelse
                                        }ifelse
                                }{
                                        BitsPerComponent ImageMatrix 
                                        MultipleDataSources{
                                                0 1 NComponents 1 sub{
                                                        DataSource exch get
                                                }for
                                        }{
                                                /DataSource load
                                        }ifelse
                                        Operator /colorimage eq{
                                                AGMCORE_host_sep{
                                                        MultipleDataSources 
level2 or NComponents 4 eq and{
                                                                
AGMCORE_is_cmyk_sep{
                                                                        
MultipleDataSources{
                                                                                
/DataSource [
                                                                                
        DataSource 0 get /exec cvx
                                                                                
        DataSource 1 get /exec cvx
                                                                                
        DataSource 2 get /exec cvx
                                                                                
        DataSource 3 get /exec cvx
                                                                                
        /AGMCORE_get_ink_data cvx
                                                                                
] cvx def
                                                                        }{
                                                                                
/DataSource 
                                                                                
Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul 
                                                                                
/DataSource load
                                                                                
filter_cmyk 0 () /SubFileDecode filter def
                                                                        }ifelse
                                                                        /Decode 
[ Decode 0 get Decode 1 get ] def
                                                                        
/MultipleDataSources false def
                                                                        
/NComponents 1 def
                                                                        
/Operator /image def
                                                                        
invert_image_samples
                                                                        1 
AGMCORE_&setgray
                                                                        
currentdict imageormask_sys
                                                                }{
                                                                        
currentoverprint not Operator/imagemask eq and{
                                                                                
1 AGMCORE_&setgray
                                                                                
currentdict imageormask_sys
                                                                        }{
                                                                                
currentdict ignoreimagedata
                                                                        }ifelse
                                                                }ifelse
                                                        }{      
                                                                
MultipleDataSources NComponents AGMIMG_&colorimage                              
                
                                                        }ifelse
                                                }{
                                                        true NComponents 
colorimage
                                                }ifelse
                                        }{
                                                Operator /image eq{
                                                        AGMCORE_host_sep{
                                                                /DoImage true 
def
                                                                
HostSepColorImage{
                                                                        
invert_image_samples
                                                                }{
                                                                        
AGMCORE_black_plate not Operator/imagemask ne and{
                                                                                
/DoImage false def
                                                                                
currentdict ignoreimagedata
                                                                        }if
                                                                }ifelse
                                                                1 
AGMCORE_&setgray
                                                                DoImage
                                                                        
{currentdict imageormask_sys} if
                                                        }{
                                                                use_mask {
                                                                        level3 
{process_mask_L3 image}{masked_image_simulation}ifelse
                                                                }{
                                                                        image
                                                                }ifelse
                                                        }ifelse
                                                }{
                                                        Operator/knockout eq{
                                                                pop pop pop pop 
pop
                                                                
currentcolorspace overprint_plate not{
                                                                        
knockout_unitsq
                                                                }if
                                                        }if
                                                }ifelse
                                        }ifelse
                                }ifelse
                        }ifelse
                        cleartomark restore
                }ifelse
        end
}def
/sep_imageormask
{
        /sep_colorspace_dict AGMCORE_gget begin
        /MappedCSA CSA map_csa def
        begin
        SkipImageProc {
                currentdict consumeimagedata
        }
        {
                save mark 
                AGMCORE_avoid_L2_sep_space{
                        /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] 
def
                }if
                AGMIMG_ccimage_exists 
                MappedCSA 0 get /DeviceCMYK eq and
                currentdict/Components known and 
                Name () ne and 
                Name (All) ne and 
                Operator /image eq and
                AGMCORE_producing_seps not and
                level2 not and
                {
                        Width Height BitsPerComponent ImageMatrix 
                        [
                        /DataSource load /exec cvx
                        {
                                0 1 2 index length 1 sub{
                                        1 index exch
                                        2 copy get 255 xor put
                                }for
                        } /exec cvx
                        ] cvx bind
                        MappedCSA 0 get /DeviceCMYK eq{
                                Components aload pop
                        }{
                                0 0 0 Components aload pop 1 exch sub
                        }ifelse
                        Name findcmykcustomcolor
                        customcolorimage
                }{
                        AGMCORE_producing_seps not{
                                level2{
                                        AGMCORE_avoid_L2_sep_space not 
currentcolorspace 0 get /Separation ne and{
                                                [/Separation Name MappedCSA 
sep_proc_name exch 0 get exch load ] setcolorspace_opt
                                                /sep_tint AGMCORE_gget setcolor
                                        }if
                                        currentdict imageormask
                                }{ 
                                        currentdict
                                        Operator /imagemask eq{
                                                imageormask
                                        }{
                                                sep_imageormask_lev1
                                        }ifelse
                                }ifelse
                        }{
                                AGMCORE_host_sep{
                                        Operator/knockout eq{
                                                currentdict/ImageMatrix get 
concat
                                                knockout_unitsq
                                        }{
                                                currentgray 1 ne{
                                                        AGMCORE_is_cmyk_sep 
Name (All) ne and{
                                                                level2{
                                                                        [ 
/Separation Name [/DeviceGray]
                                                                        { 
                                                                                
sep_colorspace_proc AGMCORE_get_ink_data
                                                                                
1 exch sub
                                                                        } bind
                                                                        ] 
AGMCORE_&setcolorspace
                                                                        
/sep_tint AGMCORE_gget AGMCORE_&setcolor
                                                                        
currentdict imageormask_sys
                                                                }{
                                                                        
currentdict
                                                                        
Operator /imagemask eq{
                                                                                
imageormask_sys
                                                                        }{
                                                                                
sep_image_lev1_sep
                                                                        }ifelse
                                                                }ifelse
                                                        }{
                                                                
Operator/imagemask ne{
                                                                        
invert_image_samples
                                                                }if
                                                                currentdict 
imageormask_sys
                                                        }ifelse
                                                }{
                                                        currentoverprint not 
Name (All) eq or Operator/imagemask eq and{
                                                                currentdict 
imageormask_sys 
                                                                }{
                                                                
currentoverprint not
                                                                        {
                                                                        gsave 
                                                                        
knockout_unitsq
                                                                        grestore
                                                                        }if
                                                                currentdict 
consumeimagedata 
                                                        }ifelse
                                                }ifelse
                                        }ifelse
                                }{
                                        currentcolorspace 0 get /Separation ne{
                                                [/Separation Name MappedCSA 
sep_proc_name exch 0 get exch load ] setcolorspace_opt
                                                /sep_tint AGMCORE_gget setcolor
                                        }if
                                        currentoverprint 
                                        MappedCSA 0 get /DeviceCMYK eq and 
                                        Name inRip_spot_has_ink not and 
                                        Name (All) ne and {
                                                imageormask_l2_overprint
                                        }{
                                                currentdict imageormask
                                        }ifelse
                                }ifelse
                        }ifelse
                }ifelse
                cleartomark restore
        }ifelse
        end
        end
}def
/decode_image_sample
{
        4 1 roll exch dup 5 1 roll
        sub 2 4 -1 roll exp 1 sub div mul add
} bdf
/colorSpaceElemCnt
{
        currentcolorspace 0 get dup /DeviceCMYK eq {
                pop 4
        }
        {
                /DeviceRGB eq {
                        pop 3
                }{
                        1
                } ifelse
        } ifelse
} bdf
/devn_sep_datasource
{
        1 dict begin
        /dataSource xdf
        [
                0 1 dataSource length 1 sub {
                        dup currentdict /dataSource get /exch cvx /get cvx 
/exec cvx
                        /exch cvx names_index /ne cvx [ /pop cvx ] cvx /if cvx
                } for
        ] cvx bind
        end
} bdf           
/devn_alt_datasource
{
        11 dict begin
        /srcDataStrs xdf
        /dstDataStr xdf
        /convProc xdf
        /origcolorSpaceElemCnt xdf
        /origMultipleDataSources xdf
        /origBitsPerComponent xdf
        /origDecode xdf
        /origDataSource xdf
        /dsCnt origMultipleDataSources {origDataSource length}{1}ifelse def
        /samplesNeedDecoding
                0 0 1 origDecode length 1 sub {
                        origDecode exch get add
                } for
                origDecode length 2 div div
                dup 1 eq {
                        /decodeDivisor 2 origBitsPerComponent exp 1 sub def
                } if
                2 origBitsPerComponent exp 1 sub ne
        def
        [
                0 1 dsCnt 1 sub [
                        currentdict /origMultipleDataSources get {
                                dup currentdict /origDataSource get exch get 
dup type
                        }{
                                currentdict /origDataSource get dup type
                        } ifelse
                        dup /filetype eq {
                                pop currentdict /srcDataStrs get 3 -1 /roll cvx 
/get cvx /readstring cvx /pop cvx
                        }{
                                /stringtype ne {
                                        /exec cvx
                                } if
                                currentdict /srcDataStrs get /exch cvx 3 -1 
/roll cvx /xpt cvx
                        } ifelse
                ] cvx /for cvx
                currentdict /srcDataStrs get 0 /get cvx /length cvx 0 /ne cvx [
                        0 1 Width 1 sub [
                                Adobe_AGM_Utils /AGMUTIL_ndx /xddf cvx
                                currentdict /origMultipleDataSources get {
                                        0 1 dsCnt 1 sub [
                                                Adobe_AGM_Utils /AGMUTIL_ndx1 
/xddf cvx
                                                currentdict /srcDataStrs get 
/AGMUTIL_ndx1 /load cvx /get cvx /AGMUTIL_ndx /load cvx /get cvx
                                                samplesNeedDecoding {
                                                        currentdict 
/decodeDivisor known {
                                                                currentdict 
/decodeDivisor get /div cvx
                                                        }{
                                                                currentdict 
/origDecode get /AGMUTIL_ndx1 /load cvx 2 /mul cvx 2 /getinterval cvx /aload 
cvx /pop cvxs
                                                                
BitsPerComponent /decode_image_sample load /exec cvx
                                                        } ifelse
                                                } if
                                        ] cvx /for cvx
                                }{
                                        Adobe_AGM_Utils /AGMUTIL_ndx1 0 /ddf cvx
                                        currentdict /srcDataStrs get 0 /get cvx 
/AGMUTIL_ndx /load cvx          
                                        currentdict /origDecode get length 2 
idiv dup 3 1 /roll cvx /mul cvx /exch cvx /getinterval cvx 
                                        [
                                                samplesNeedDecoding {
                                                        currentdict 
/decodeDivisor known {
                                                                currentdict 
/decodeDivisor get /div cvx
                                                        }{
                                                                currentdict 
/origDecode get /AGMUTIL_ndx1 /load cvx 2 /mul cvx 2 /getinterval cvx /aload 
cvx /pop cvx
                                                                
BitsPerComponent /decode_image_sample load /exec cvx
                                                                Adobe_AGM_Utils 
/AGMUTIL_ndx1 /AGMUTIL_ndx1 /load cvx 1 /add cvx /ddf cvx
                                                        } ifelse
                                                } if
                                        ] cvx /forall cvx
                                } ifelse
                                currentdict /convProc get /exec cvx
                                currentdict /origcolorSpaceElemCnt get 1 sub -1 
0 [
                                        currentdict /dstDataStr get 3 1 /roll 
cvx /AGMUTIL_ndx /load cvx currentdict /origcolorSpaceElemCnt get /mul cvx /add 
cvx /exch cvx
                                        currentdict /convProc get 
/filter_indexed_devn load ne {
                                                255 /mul cvx /cvi cvx 
                                        } if
                                        /put cvx 
                                ] cvx /for cvx
                        ] cvx /for cvx
                        currentdict /dstDataStr get
                ] cvx /if cvx
        ] cvx bind
        end
} bdf
/devn_imageormask
{
        /devicen_colorspace_dict AGMCORE_gget begin
        /MappedCSA CSA map_csa def
        2 dict begin
        dup dup
        /dstDataStr exch /Width get colorSpaceElemCnt mul string def
        /srcDataStrs [ 3 -1 roll begin
                currentdict /MultipleDataSources known {MultipleDataSources 
{DataSource length}{1}ifelse}{1} ifelse
                {
                        Width Decode length 2 div mul cvi string
                } repeat
                end ] def
        begin
        SkipImageProc {
                currentdict consumeimagedata
        }
        {
                save mark 
                AGMCORE_producing_seps not {
                        level3 not {
                                Operator /imagemask ne {
                                        /DataSource [
                                                DataSource Decode 
BitsPerComponent currentdict /MultipleDataSources known 
{MultipleDataSources}{false} ifelse
                                                colorSpaceElemCnt 
/devicen_colorspace_dict AGMCORE_gget /TintTransform get 
                                                dstDataStr srcDataStrs 
devn_alt_datasource /exec cvx
                                                ] cvx 0 () /SubFileDecode 
filter def
                                        /MultipleDataSources false def
                                        /Decode colorSpaceElemCnt [ exch {0 1} 
repeat ] def
                                } if
                        }if
                        currentdict imageormask
                }{
                        AGMCORE_host_sep{
                                Names convert_to_process {
                                        CSA map_csa 0 get /DeviceCMYK eq {
                                                /DataSource
                                                        Width BitsPerComponent 
mul 7 add 8 idiv Height mul 4 mul 
                                                        [
                                                        DataSource Decode 
BitsPerComponent currentdict /MultipleDataSources known 
{MultipleDataSources}{false} ifelse
                                                        4 
/devicen_colorspace_dict AGMCORE_gget /TintTransform get 
                                                        dstDataStr srcDataStrs 
devn_alt_datasource /exec cvx
                                                        ] cvx
                                                filter_cmyk 0 () /SubFileDecode 
filter def
                                                /MultipleDataSources false def
                                                /Decode [1 0] def
                                                /DeviceGray setcolorspace
                                                currentdict imageormask_sys
                                        }{
                                                
AGMCORE_report_unsupported_color_space
                                                AGMCORE_black_plate {
                                                        /DataSource [
                                                                DataSource 
Decode BitsPerComponent currentdict /MultipleDataSources known 
{MultipleDataSources}{false} ifelse
                                                                CSA map_csa 0 
get /DeviceRGB eq{3}{1}ifelse /devicen_colorspace_dict AGMCORE_gget 
/TintTransform get
                                                                dstDataStr 
srcDataStrs devn_alt_datasource /exec cvx
                                                                ] cvx 0 () 
/SubFileDecode filter def
                                                        /MultipleDataSources 
false def
                                                        /Decode 
colorSpaceElemCnt [ exch {0 1} repeat ] def
                                                        currentdict 
imageormask_sys
                                                }
                                                {
                                                        gsave 
                                                        knockout_unitsq
                                                        grestore
                                                        currentdict 
consumeimagedata 
                                                } ifelse
                                        } ifelse
                                }
                                {       
                                        /devicen_colorspace_dict AGMCORE_gget 
/names_index known {
                                                Operator/imagemask ne{
                                                        MultipleDataSources {
                                                                /DataSource [ 
DataSource devn_sep_datasource /exec cvx ] cvx def
                                                                
/MultipleDataSources false def
                                                        }{
                                                                /DataSource 
/DataSource load dstDataStr srcDataStrs 0 get filter_devn def
                                                        } ifelse
                                                        invert_image_samples
                                                } if
                                                currentdict imageormask_sys
                                        }{
                                                currentoverprint not 
Operator/imagemask eq and{
                                                        currentdict 
imageormask_sys 
                                                        }{
                                                        currentoverprint not
                                                                {
                                                                gsave 
                                                                knockout_unitsq
                                                                grestore
                                                                }if
                                                        currentdict 
consumeimagedata 
                                                }ifelse
                                        }ifelse
                                }ifelse
                        }{
                                currentdict imageormask
                        }ifelse
                }ifelse
                cleartomark restore
        }ifelse
        end
        end
        end
}def
/imageormask_l2_overprint
{
        currentdict
        currentcmykcolor add add add 0 eq{
                currentdict consumeimagedata
        }{
                level3{                         
                        currentcmykcolor 
                        /AGMIMG_k xdf 
                        /AGMIMG_y xdf 
                        /AGMIMG_m xdf 
                        /AGMIMG_c xdf
                        Operator/imagemask eq{
                                [/DeviceN [
                                AGMIMG_c 0 ne {/Cyan} if
                                AGMIMG_m 0 ne {/Magenta} if
                                AGMIMG_y 0 ne {/Yellow} if
                                AGMIMG_k 0 ne {/Black} if
                                ] /DeviceCMYK {}] setcolorspace
                                AGMIMG_c 0 ne {AGMIMG_c} if
                                AGMIMG_m 0 ne {AGMIMG_m} if
                                AGMIMG_y 0 ne {AGMIMG_y} if
                                AGMIMG_k 0 ne {AGMIMG_k} if
                                setcolor                        
                        }{      
                                /Decode [ Decode 0 get 255 mul Decode 1 get 255 
mul ] def
                                [/Indexed                               
                                        [
                                                /DeviceN [
                                                        AGMIMG_c 0 ne {/Cyan} if
                                                        AGMIMG_m 0 ne 
{/Magenta} if
                                                        AGMIMG_y 0 ne {/Yellow} 
if
                                                        AGMIMG_k 0 ne {/Black} 
if
                                                ] 
                                                /DeviceCMYK {
                                                        AGMIMG_k 0 eq {0} if
                                                        AGMIMG_y 0 eq {0 exch} 
if
                                                        AGMIMG_m 0 eq {0 3 1 
roll} if
                                                        AGMIMG_c 0 eq {0 4 1 
roll} if                                           
                                                }
                                        ]
                                        255
                                        {
                                                255 div 
                                                mark exch
                                                dup     dup dup
                                                AGMIMG_k 0 ne{
                                                        /sep_tint AGMCORE_gget 
mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop             
 
                                                        counttomark 1 roll
                                                }{
                                                        pop
                                                }ifelse
                                                AGMIMG_y 0 ne{
                                                        /sep_tint AGMCORE_gget 
mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop             
 
                                                        counttomark 1 roll
                                                }{
                                                        pop
                                                }ifelse
                                                AGMIMG_m 0 ne{
                                                        /sep_tint AGMCORE_gget 
mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop             
 
                                                        counttomark 1 roll
                                                }{
                                                        pop
                                                }ifelse
                                                AGMIMG_c 0 ne{
                                                        /sep_tint AGMCORE_gget 
mul MappedCSA sep_proc_name exch pop load exec pop pop pop               
                                                        counttomark 1 roll
                                                }{
                                                        pop
                                                }ifelse
                                                counttomark 1 add -1 roll pop
                                        }
                                ] setcolorspace
                        }ifelse
                        imageormask_sys
                }{
        write_image_file{
                currentcmykcolor
                0 ne{
                        [/Separation /Black /DeviceGray {}] setcolorspace
                        gsave
                        /Black
                        [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx 
MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec 
cvx]
                        cvx modify_halftone_xfer
                        Operator currentdict read_image_file
                        grestore
                }if
                0 ne{
                        [/Separation /Yellow /DeviceGray {}] setcolorspace
                        gsave
                        /Yellow
                        [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx 
MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec 
cvx]
                        cvx modify_halftone_xfer
                        Operator currentdict read_image_file
                        grestore
                }if
                0 ne{
                        [/Separation /Magenta /DeviceGray {}] setcolorspace
                        gsave
                        /Magenta
                        [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx 
MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec 
cvx]
                        cvx modify_halftone_xfer
                        Operator currentdict read_image_file
                        grestore
                }if
                0 ne{
                        [/Separation /Cyan /DeviceGray {}] setcolorspace
                        gsave
                        /Cyan 
                        [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx 
MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx]
                        cvx modify_halftone_xfer
                        Operator currentdict read_image_file
                        grestore
                } if
                                close_image_file
                        }{
                                imageormask
                        }ifelse
                }ifelse
        }ifelse
} def
/indexed_imageormask
{
        begin
                save mark 
                currentdict
                AGMCORE_host_sep{
                        Operator/knockout eq{
                                /indexed_colorspace_dict AGMCORE_gget dup /CSA 
known {
                                        /CSA get map_csa
                                }{
                                        /CSD get get_csd /Names get
                                } ifelse
                                overprint_plate not{
                                        knockout_unitsq
                                }if
                        }{
                                Indexed_DeviceN {
                                        /devicen_colorspace_dict AGMCORE_gget 
/names_index known {
                                                indexed_image_lev2_sep
                                        }{
                                                currentoverprint not{
                                                        knockout_unitsq
                                                }if
                                                currentdict consumeimagedata
                                        } ifelse
                                }{
                                        AGMCORE_is_cmyk_sep{
                                                Operator /imagemask eq{
                                                        imageormask_sys
                                                }{
                                                        level2{
                                                                
indexed_image_lev2_sep
                                                        }{
                                                                
indexed_image_lev1_sep
                                                        }ifelse
                                                }ifelse
                                        }{
                                                currentoverprint not{
                                                        knockout_unitsq
                                                }if
                                                currentdict consumeimagedata
                                        }ifelse
                                }ifelse
                        }ifelse
                }{
                        level2{
                                Indexed_DeviceN {
                                        /indexed_colorspace_dict AGMCORE_gget 
begin
                                        CSD get_csd begin
                                }{
                                        /indexed_colorspace_dict AGMCORE_gget 
begin
                                        CSA map_csa 0 get /DeviceCMYK eq 
ps_level 3 ge and ps_version 3015.007 lt and {
                                                [/Indexed [/DeviceN [/Cyan 
/Magenta /Yellow /Black] /DeviceCMYK {}] HiVal Lookup]
                                                setcolorspace
                                        } if
                                        end
                                } ifelse
                                imageormask
                                Indexed_DeviceN {
                                        end
                                        end
                                } if
                        }{ 
                                Operator /imagemask eq{
                                        imageormask
                                }{
                                        indexed_imageormask_lev1
                                }ifelse
                        }ifelse
                }ifelse
                cleartomark restore
        end
}def
/indexed_image_lev2_sep
{
        /indexed_colorspace_dict AGMCORE_gget begin
        begin
                Indexed_DeviceN not {
                        currentcolorspace 
                        dup 1 /DeviceGray put
                        dup 3
                        currentcolorspace 2 get 1 add string
                        0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get 
length 1 sub
                        {
                        dup 4 idiv exch currentcolorspace 3 get exch get 255 
exch sub 2 index 3 1 roll put
                        }for 
                        put     setcolorspace
                } if
                currentdict 
                Operator /imagemask eq{
                        AGMIMG_&imagemask
                }{
                        use_mask {
                                level3 {process_mask_L3 
AGMIMG_&image}{masked_image_simulation}ifelse
                        }{
                                AGMIMG_&image
                        }ifelse
                }ifelse
        end end
}def
  /OPIimage
  {
        dup type /dicttype ne{
                10 dict begin
                        /DataSource xdf
                        /ImageMatrix xdf
                        /BitsPerComponent xdf
                        /Height xdf
                        /Width xdf
                        /ImageType 1 def
                        /Decode [0 1 def]
                        currentdict
                end
        }if
        dup begin
                /NComponents 1 cdndf
                /MultipleDataSources false cdndf
                /SkipImageProc {false} cdndf
                /HostSepColorImage false cdndf
                /Decode [
                                0 
                                currentcolorspace 0 get /Indexed eq{
                                        2 BitsPerComponent exp 1 sub
                                }{
                                        1
                                }ifelse
                ] cdndf
                /Operator /image cdndf
        end
        /sep_colorspace_dict AGMCORE_gget null eq{
                imageormask
        }{
                gsave
                dup begin invert_image_samples end
                sep_imageormask
                grestore
        }ifelse
  }def
/cachemask_level2
{
        3 dict begin
        /LZWEncode filter /WriteFilter xdf
        /readBuffer 256 string def
        /ReadFilter
                currentfile
                0 (%EndMask) /SubFileDecode filter
                /ASCII85Decode filter
                /RunLengthDecode filter
        def
        {
                ReadFilter readBuffer readstring exch
                WriteFilter exch writestring
                not {exit} if
        }loop
        WriteFilter closefile
        end
}def
/cachemask_level3
{
        currentfile
        <<
                /Filter [ /SubFileDecode /ASCII85Decode /RunLengthDecode ]
                /DecodeParms [ << /EODCount 0 /EODString (%EndMask) >> null 
null ]
                /Intent 1
        >>
        /ReusableStreamDecode filter
}def
/spot_alias
{
        /mapto_sep_imageormask 
        {
                dup type /dicttype ne{
                        12 dict begin
                                /ImageType 1 def
                                /DataSource xdf
                                /ImageMatrix xdf
                                /BitsPerComponent xdf
                                /Height xdf
                                /Width xdf
                                /MultipleDataSources false def
                }{
                        begin
                }ifelse
                                /Decode [/customcolor_tint AGMCORE_gget 0] def
                                /Operator /image def
                                /HostSepColorImage false def
                                /SkipImageProc {false} def
                                currentdict 
                        end
                sep_imageormask
        }bdf
        /customcolorimage
        {
                Adobe_AGM_Image/AGMIMG_colorAry xddf
                /customcolor_tint AGMCORE_gget
                bdict
                        /Name AGMIMG_colorAry 4 get
                        /CSA [ /DeviceCMYK ] 
                        /TintMethod /Subtractive
                        /TintProc null
                        /MappedCSA null
                        /NComponents 4 
                        /Components [ AGMIMG_colorAry aload pop pop ] 
                edict
                setsepcolorspace
                mapto_sep_imageormask
        }ndf
        Adobe_AGM_Image/AGMIMG_&customcolorimage /customcolorimage load put
        /customcolorimage
        {
                Adobe_AGM_Image/AGMIMG_override false put
                dup 4 get map_alias{
                        /customcolor_tint AGMCORE_gget exch setsepcolorspace
                        pop
                        mapto_sep_imageormask
                }{
                        AGMIMG_&customcolorimage
                }ifelse                 
        }bdf
}def
/snap_to_device
{
        6 dict begin
        matrix currentmatrix
        dup 0 get 0 eq 1 index 3 get 0 eq and
        1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop
        {
                1 1 dtransform 0 gt exch 0 gt /AGMIMG_xSign? exch def 
/AGMIMG_ySign? exch def
                0 0 transform
                AGMIMG_ySign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch
                AGMIMG_xSign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch
                itransform /AGMIMG_llY exch def /AGMIMG_llX exch def
                1 1 transform
                AGMIMG_ySign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch
                AGMIMG_xSign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch
                itransform /AGMIMG_urY exch def /AGMIMG_urX exch def            
        
                [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub  
AGMIMG_llX AGMIMG_llY] concat
        }{
        }ifelse
        end
} def
level2 not{
        /colorbuf
        {
                0 1 2 index length 1 sub{
                        dup 2 index exch get 
                        255 exch sub 
                        2 index 
                        3 1 roll 
                        put
                }for
        }def
        /tint_image_to_color
        {
                begin
                        Width Height BitsPerComponent ImageMatrix 
                        /DataSource load
                end
                Adobe_AGM_Image begin
                        /AGMIMG_mbuf 0 string def
                        /AGMIMG_ybuf 0 string def
                        /AGMIMG_kbuf 0 string def
                        {
                                colorbuf dup length AGMIMG_mbuf length ne
                                        {
                                        dup length dup dup
                                        /AGMIMG_mbuf exch string def
                                        /AGMIMG_ybuf exch string def
                                        /AGMIMG_kbuf exch string def
                                        } if
                                dup AGMIMG_mbuf copy AGMIMG_ybuf copy 
AGMIMG_kbuf copy pop
                        }
                        addprocs
                        {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf} true 4 
colorimage       
                end
        } def                   
        /sep_imageormask_lev1
        {
                begin
                        MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq 
or has_color not and{
                                {
                                        255 mul round cvi GrayLookup exch get
                                } currenttransfer addprocs settransfer
                                currentdict imageormask
                        }{
                                /sep_colorspace_dict AGMCORE_gget/Components 
known{
                                        MappedCSA 0 get /DeviceCMYK eq{
                                                Components aload pop
                                        }{
                                                0 0 0 Components aload pop 1 
exch sub
                                        }ifelse
                                        Adobe_AGM_Image/AGMIMG_k xddf 
                                        Adobe_AGM_Image/AGMIMG_y xddf 
                                        Adobe_AGM_Image/AGMIMG_m xddf 
                                        Adobe_AGM_Image/AGMIMG_c xddf 
                                        AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and 
AGMIMG_c 0.0 eq and{
                                                {AGMIMG_k mul 1 exch sub} 
currenttransfer addprocs settransfer
                                                currentdict imageormask
                                        }{ 
                                                currentcolortransfer
                                                {AGMIMG_k mul 1 exch sub} exch 
addprocs 4 1 roll
                                                {AGMIMG_y mul 1 exch sub} exch 
addprocs 4 1 roll
                                                {AGMIMG_m mul 1 exch sub} exch 
addprocs 4 1 roll
                                                {AGMIMG_c mul 1 exch sub} exch 
addprocs 4 1 roll
                                                setcolortransfer
                                                currentdict tint_image_to_color
                                        }ifelse
                                }{
                                        MappedCSA 0 get /DeviceGray eq {
                                                {255 mul round cvi ColorLookup 
exch get 0 get} currenttransfer addprocs settransfer
                                                currentdict imageormask
                                        }{
                                                MappedCSA 0 get /DeviceCMYK eq {
                                                        currentcolortransfer
                                                        {255 mul round cvi 
ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll
                                                        {255 mul round cvi 
ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll
                                                        {255 mul round cvi 
ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll
                                                        {255 mul round cvi 
ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll
                                                        setcolortransfer 
                                                        currentdict 
tint_image_to_color
                                                }{ 
                                                        currentcolortransfer
                                                        {pop 1} exch addprocs 4 
1 roll
                                                        {255 mul round cvi 
ColorLookup exch get 2 get} exch addprocs 4 1 roll
                                                        {255 mul round cvi 
ColorLookup exch get 1 get} exch addprocs 4 1 roll
                                                        {255 mul round cvi 
ColorLookup exch get 0 get} exch addprocs 4 1 roll
                                                        setcolortransfer 
                                                        currentdict 
tint_image_to_color
                                                }ifelse
                                        }ifelse
                                }ifelse
                        }ifelse
                end
        }def
        /sep_image_lev1_sep
        {
                begin
                        /sep_colorspace_dict AGMCORE_gget/Components known{
                                Components aload pop
                                Adobe_AGM_Image/AGMIMG_k xddf 
                                Adobe_AGM_Image/AGMIMG_y xddf 
                                Adobe_AGM_Image/AGMIMG_m xddf 
                                Adobe_AGM_Image/AGMIMG_c xddf 
                                {AGMIMG_c mul 1 exch sub}
                                {AGMIMG_m mul 1 exch sub}
                                {AGMIMG_y mul 1 exch sub}
                                {AGMIMG_k mul 1 exch sub}
                        }{ 
                                {255 mul round cvi ColorLookup exch get 0 get 1 
exch sub}
                                {255 mul round cvi ColorLookup exch get 1 get 1 
exch sub}
                                {255 mul round cvi ColorLookup exch get 2 get 1 
exch sub}
                                {255 mul round cvi ColorLookup exch get 3 get 1 
exch sub}
                        }ifelse
                        AGMCORE_get_ink_data currenttransfer addprocs 
settransfer
                        currentdict imageormask_sys
                end
        }def
        /indexed_imageormask_lev1
        {
                /indexed_colorspace_dict AGMCORE_gget begin
                begin
                        currentdict
                        MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq 
or has_color not and{
                                {HiVal mul round cvi GrayLookup exch get HiVal 
div} currenttransfer addprocs settransfer
                                imageormask
                        }{
                                MappedCSA 0 get /DeviceGray eq {
                                        {HiVal mul round cvi Lookup exch get 
HiVal div} currenttransfer addprocs settransfer
                                        imageormask
                                }{
                                        MappedCSA 0 get /DeviceCMYK eq {
                                                currentcolortransfer
                                                {4 mul HiVal mul round cvi 3 
add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll
                                                {4 mul HiVal mul round cvi 2 
add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll
                                                {4 mul HiVal mul round cvi 1 
add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll
                                                {4 mul HiVal mul round cvi      
         Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll
                                                setcolortransfer 
                                                tint_image_to_color
                                        }{ 
                                                currentcolortransfer
                                                {pop 1} exch addprocs 4 1 roll
                                                {3 mul HiVal mul round cvi 2 
add Lookup exch get HiVal div} exch addprocs 4 1 roll
                                                {3 mul HiVal mul round cvi 1 
add Lookup exch get HiVal div} exch addprocs 4 1 roll
                                                {3 mul HiVal mul round cvi      
        Lookup exch get HiVal div} exch addprocs 4 1 roll
                                                setcolortransfer 
                                                tint_image_to_color
                                        }ifelse
                                }ifelse
                        }ifelse
                end end
        }def
        /indexed_image_lev1_sep
        {
                /indexed_colorspace_dict AGMCORE_gget begin
                begin
                        {4 mul HiVal mul round cvi               Lookup exch 
get HiVal div 1 exch sub}
                        {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal 
div 1 exch sub}
                        {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal 
div 1 exch sub}
                        {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal 
div 1 exch sub}
                        AGMCORE_get_ink_data currenttransfer addprocs 
settransfer
                        currentdict imageormask_sys
                end end
        }def
}if
end
systemdict /setpacking known
{
        setpacking
} if
%%EndResource
currentdict Adobe_AGM_Utils eq {end} if
%%EndProlog
%%BeginSetup
Adobe_AGM_Utils begin
2 2010 Adobe_AGM_Core/doc_setup get exec
Adobe_CoolType_Core/doc_setup get exec
Adobe_AGM_Image/doc_setup get exec
currentdict Adobe_AGM_Utils eq {end} if
%%EndSetup
%%Page: xen3-1.0.eps 1
%%EndPageComments
%%BeginPageSetup
/currentdistillerparams where
{pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse
{ userdict /AI11_PDFMark5 /cleartomark load put
userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put}
{ userdict /AI11_PDFMark5 /pdfmark load put
userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse
[/NamespacePush AI11_PDFMark5
[/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5
[{ai_metadata_stream_123}
currentfile 0 (%  &&end XMP packet marker&&)
/SubFileDecode filter AI11_ReadMetadata_PDFMark5
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?><x:xmpmeta 
xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 3.0-29, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' 
xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+
+ <rdf:Description rdf:about='uuid:bacf4235-e435-11da-8f1a-000d93afebb2'
+  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
+  <pdf:Producer>Adobe PDF library 6.66</pdf:Producer>
+ </rdf:Description>
+
+ <rdf:Description rdf:about='uuid:bacf4235-e435-11da-8f1a-000d93afebb2'
+  xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
+ </rdf:Description>
+
+ <rdf:Description rdf:about='uuid:bacf4235-e435-11da-8f1a-000d93afebb2'
+  xmlns:xap='http://ns.adobe.com/xap/1.0/'
+  xmlns:xapGImg='http://ns.adobe.com/xap/1.0/g/img/'>
+  <xap:CreateDate>2006-05-14T09:34:14-07:00</xap:CreateDate>
+  <xap:ModifyDate>2006-06-26T18:03:19Z</xap:ModifyDate>
+  <xap:CreatorTool>Illustrator</xap:CreatorTool>
+  <xap:MetadataDate>2006-05-14T09:34:14-07:00</xap:MetadataDate>
+  <xap:Thumbnails>
+   <rdf:Alt>
+    <rdf:li rdf:parseType='Resource'>
+     <xapGImg:format>JPEG</xapGImg:format>
+     <xapGImg:width>256</xapGImg:width>
+     <xapGImg:height>112</xapGImg:height>
+     
<xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAcAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FUn13zZoei&#xA;L/ps49elVto/ilP+x7fNqYq8/wBW/NrVpyyabbpZx9pH/eyfPf4B9xxVIX1Tzpqx5fWLy4Rv5C6x&#xA;/ctExVT/AMJ+Zpvia1Zj4vIgP/DNirY8v+arT4o4JoyNwYXBP/CMcVV7fzf5z0pwj3c4p/uq6Beo&#xA;8P3oJH0YqyvRfzcidli1i19OuxubepX5mM1P3E/LFWfafqVhqNuLmxnS4hP7aGtD4EdQfY4qicVd&#xA;irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVececvzLMbSafobguKrNfdQ&#xA;D3EXj/rfd44qxDSfLOq6zIbqZmjhkPJrmWrM57lQd2+eKsz03yro1gAVgE0o/wB2zUc19h0H0DFU&#xA;3xV2KuxVZLDFMhjlRZEPVHAYH6DirHdV8jabchnsz9Um6gDeMn3Xt9GKsWjk8w+VtREkbNby/wAw&#xA;+KKVR2PZh8+mKvVPKHnex1+L0nAt9SQVkt67MP5o69R7dvxxVk2KuxV2KuxV2KuxV2KuxV2KuxV2&#xA;KuxV2KuxV2KuxV2KuxV2KuxV2KvNPzI86uHk0PTpONPhvp1O58Ygf+Jfd44qk3lTyksypf6gtYjv&#xA;BbkfaHZm9vAd8VZuAAAAKAbADFW8VdirsVdirsVdiqhe2Nre27W9zGJIn7HqD4g9jirznWdHvvL+&#xA;oxz28jCMNztbldiCu9D/AJQ/HFXq3krzZF5g06slE1CCguohsD4Ovs34YqyPFXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWP+d/MY0PRJJoyPrk/7q1HgxG7/wCxG/zpirxaPyPJ5xsL&#xA;61lvJ7FShKX8DMsq3BBKMCCOQB3YV3G3euKvmfzZf/mb5V1+70LVtb1KK8tG4ki8uODod0kjJYVR&#xA;huMVSj/HPnb/AKmDUv8ApMn/AOa8Vd/jnzt/1MGpf9Jk/wDzXiqc+Wfzh/MPQtYstQXXb+9gtJAz&#xA;6fdXU8tvKh2dHjdmX4gTvSoO43xV9teUPNekea/L1nrulSc7S7TlxP243GzxuOzI2x/piqc4q7FX&#xA;l/5v/nnofkSB7C04aj5mdf3diD8EIYVElwR0FNwg+I+w3xV8m6p+Zn5ganqE9/deYL8T3DF3WK4l&#xA;hjHskcbKiqOwAxVBS+c/OEycJtd1CROvF7udhX5F8VW2/nDzbbOZLbW7+CQiheO6mQ08KqwxVG2/&#xA;nr8xrmeO3t/MOsTXEzBIoY7y6d3djRVVQ5JJPQDFX1b+R/5I+fLc2/mL8wvMGqPOOMtn5e+v3BVC&#xA;N1a7IejH/iobfzV3UKvoPFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXjX5m6u9/5kNoh&#xA;5Q2CiFFHeRqM5+daL9GKsq0LTV07S4LUD4wOUx8Xbdv6YqwP87/yjtvPugetZqkXmTT1LafcGg9R&#xA;ept5G/lb9k/st7E4q+J7u1ubO6mtLqJoLm3dop4ZAVdHQ8WVgehBGKqWKuxV6p+Qf5tP5I8w/UdR&#xA;lP8AhvVHC3incQS7KtwB7dHp1X/VGKvtJZEdBIjBo2HJXBqCDuCDir5+/Oj/AJyRg031/L3kqZZ9&#xA;RFY7vWVo0cJGxSCtVd/F/sjtU9FXy9cXFxc3ElxcyvNcTMZJppGLu7saszMakknqTiqnirsVTPQP&#xA;Lms6/fCz0q2e4lADSsB8EaEgc5H6KtT1Py64q+xf+caPyr8qeXYLq/mhS981QkBr+QVEUUi0426n&#xA;7G4YM/2iPAGmKvfMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVWSyJFE8rmiRqWY+wFTi&#xA;rwjQ1fVPNEUs27SzPcy18QTIa/M4q9OxV2KvAf8AnJH8mf0vay+c9Ag/3K2qV1a1jG9xCg/vlA6y&#xA;Rgb/AMy+67qvlXFXYq7FWcy/nN57fyJb+S1vTFpsHKNp0qLh7c/Zt2kr/drvsO3w/Z2xVg2KuxV2&#xA;KvRvyp/JTzJ5+uVuFBsPL8b8bjU5F2ah+JIFNOb/AIDv4Yq9180ebvym/KHyzP5T0uH6zqkkf7yz&#xA;gKvcNKRVZbyciinuB1p9leOKvD5v+cgvzEhmnbQ7tNFjnX03FuivIUqDvJKHoajqoXFWKat+YPnz&#xA;V2Lap5i1K85bcZruZ1oewUtxA9gMVSKWaaZzJM7SSHq7ksdvc4qiLPVtVsiDZXk9sVqVMMrx0J60&#xA;4kYqzXy3+ff5u+X5FNl5mvJ4lO8F8/1yMj+Wlx6hUf6pGKvpP8m/+crdJ8131voHmy3j0jW7hlit&#xA;LuEt9TuJWNFSjFmhdifhBYg+INBir6BxV8PfnL+ev5kWn5o+ZLHQ/MN1Y6XY3jWkFrCy8ENsohkp&#xA;Ve8iMT74qwz/AJX9+cn/AFNl9/wS/wDNOKu/5X9+cn/U2X3/AAS/804q9x0z/nKCLyh+Vmix6hcP&#xA;5o8+X8UlzcRySD07dJZn9D6xItaH0uBEaivjxqCVXiXm78//AM2fNE0jXmv3FlbOTSy05mtIVU/s&#xA;0iIdx/rs2KsBuby7u5TLdTyTymtZJWZ23NTuxJ64qmmh+dfOGgypLoutXunslOIt7iSNdhQAqG4k&#xA;U7EYq+qP+cd/+cltR80atD5Q85FH1a4B/RmqoixidkUs0UyLRFfiPhZQAelK0qqzX/nI7XPPnlfy&#xA;dJ5r8r+Ym0pLAxQzacLS1uFnaeZUDmWdJGTiG6Ab4q8488+f/wA7NB8j/l9eab5ra/1vzqUnFdPs&#xA;I+H1m3tmitlHpMrcZJm+OgJrirDde/5yZ/NvUdDsdS8vap9Rg0qxtLbzBMbW0czalM8w5j1IXVfU&#xA;jh5BUoo3xV9ieZJPT8u6o4NCtpOQT4+m1MVeReQEDa3IT+xAxHz5KP44q9DxV2KuxV8k/wDORf5M&#xA;f4dvn816DBTQbyT/AE62jHw2k7nqAOkUhO3ZW26FcVeG4q7FXYq7FW1VmYKoJYmgA3JJxV9Cfk9/&#xA;zjPcagINd88Rtb2JpJbaLUrNKOoa4IoY1/yB8R78e6r0P8+fzQj/AC98tWuheXVjttZv4zHZrEqq&#xA;lpap8JkVAKA/sxilOp/ZoVXx1NNNPM80ztLNKxeSRyWZmY1LMTuST1OKrMVe9/8AOL/5HaZ54u7r&#xA;zJ5jiM3l/TJRBBZVKrc3XEOwcgg+nErKSP2iR2qCq+woPKPlS3sP0fBotjFYU4/VEtoVip4cAvHt&#xA;4Yq+H/8AnKHyP5f8ofmebXQYEtLHULKLUDZRbRwySSSxOiL+yp9HkF6Cu21MVeRYq2CQajYjFX6G&#xA;/k158fW/yY0nzPq8paa1s5l1Kd/tMbFnjeRiepdYuZ+eKvz71XUJ9S1O81Gf+/vZ5LiXv8crl2/E&#xA;4qhcVdir3P8AKr/nFLzV5z0eDXdWv00DSbtRJZBojPczRncSCLlEqI4+yxap68aUJVa/Ob/nGG//&#xA;AC+8tnzJY6wNX0yGSOK8jeD6vLF6p4I4o8iupchT0IqOu+KvDcVdirJfy0kuI/zG8rPblhONXsfT&#xA;4btyNygAA71xV+keraNpGsWL2Gr2NvqNjIVMlpdxJPExU8lJjkDKaEVG2Koebyt5YnTTUn0iylTR&#xA;ih0dXtomFmY+Ppm2BX9zw4Lx4UpQeGKoL/lXf5f/AFOay/wxpP1K5lWe4tvqNt6UkqAhZHThxZ1D&#xA;tRiK7nFUw8xxmTy9qiKKs1pOFHuY2piryHyA4XW5FP7cDAfMMp/hir0PFXYqpXNzbWtvJc3MqQW8&#xA;Kl5ppGCIiqKlmZqAADucVfL/AOdn/ORsesWt55X8ohW0udWgv9VkSpmRtmSBHHwoR+2RU9qdSq+f&#xA;MVdirsVdir6g/wCcXvIfkG60f/FHMal5kt5DHNBOoAsWqeBjjqal1HISn5ChDYq+iMVfCv57eYJt&#xA;b/NTX5XYmOyuG0+BD0RLT90wHzkVm+nFWA4q7FUwtotfjiH1ZLtIW+JfTEgU1HUcdt8VVf8Anaf+&#xA;X7/ktiqhNY65O/Oa3uZXpTk6SMafMjFVn6J1X/ljn/5Fv/TFXfonVf8Aljn/AORb/wBMVfV0dxce&#xA;TP8AnDLjPyivtWtpYEifYkandsCoH/MM5bFXyNirsVZT+V3ldPNX5h+X9AkUvb315Gt0o6m3Q+pP&#xA;0/4qRsVfpTHHHFGscahI0AVEUAKqgUAAHQDFXhn/ADmLr66f+VKaYG/e6zfwQlP+K4K3DH6HjT78&#xA;VfEGKuxV6n/zjJ5dGt/nNoQdOcGmmXUZvb6uhMR/5HGPFX6A4q7FXYqtljSSN43FUcFWHsRQ4q8H&#xA;0Vn0rzRHFNsYZ2tpa7dSYz9x3xV6diqSeb/Ofl3yjo8mra7drbWybRp1klftHEnV2P8AadsVfHn5&#xA;s/nh5i8+XD2kZbTvLiNWHTUbeTiaq9ww+23fj9le2+5Vea4q7FXYq7FXYqy38svzD1XyJ5ng1izr&#xA;JbNSLUbKtFngJ+Jf9ZeqHsfauKvuvy/r2leYNGtNZ0qcXFhexiWCUeB2KsOzKdmHY7Yq+Ffza0W5&#xA;0b8yvMdlOhSt/PPDy7w3DmaJveqOMVYjirsVfpZ+WGu6Prf5f6BfaRMktmbG3iohH7t4olR4mA+y&#xA;0bDiRiq38x/zI8teQPLs2s61MAQCtnZKw9e5l7RxKf8Ahm6KNzirxT/od7yt/wBS1ff8jocVd/0O&#xA;95W/6lq+/wCR0OKp15N/5yy0vzb5n0/y9pXla+e81CZYlb1oisa9Xlen7MaAs3sMVY//AM5u+YvS&#xA;0Ty35cjfe7uJr+dB2W3QRR19mM7/AHYq+RsVdir3z/nDXy7+kPzNutYkSsWi2Ejxv/LPcsIUH0xG&#xA;XFX2xir48/5zZ8xfWfN2g+X0eqabZvdyqOgku5OND7hLcH6cVfN2KuxV9R/84Q+XeV75m8ySJ/dR&#xA;wadbSePqMZph9HpxYq+scVdirsVdirxz8z9Iax8xG8RaQ36iVSOgkWiuP1N9OKpD55/Pzy35S0CF&#xA;mIv/ADHNHSPS42oVcbepOwr6aHqO57eIVfJfnPzx5l846w+q69dm4mNRDCPhhhQmvpwp0VfxPUkn&#xA;fFUgxV2Kro43kdY41LyOQqIoqSTsAAMVe5+Vf+cWPMeo+UrzU9XnOna1LBz0fSjSvMfEBdE/Y5jb&#xA;iN1rVuhXFXh91bXFrcy2tzG0NxA7RTROKMjoeLKwPQgihxVSxV2KvX/+cffzgbybrP6F1eanlnU5&#xA;BzdjtaztRRMP8hthJ9/bdV77+cP5LaR+YdnFeW8qWXmC2Tja39OUckf2hFNx3K1NVYbr79MVfJ3m&#xA;78r/ADv5TvHttX02QBRyFzB+/hZakBuaV41p0ah9sVYpiqYaV5g17SC50nUrrTzJ/eG1nkh5U/m9&#xA;Nlriqhf6lqOo3LXWoXU15cts09xI0shHuzknFXWGmajqM4t9PtZry4b7MNvG0rmv+SgJxV6n5L/5&#xA;xe/NnzJLG1zpv6BsWoXutTrC4HWgtxWavzUD3xV9ZflH+R3lL8trNmsA19rdwnC81ecASMuxMcSi&#xA;ojjqK8QST3JoMVfNX/OV6+Yte/NqeK0027uLPSbS3s4ZYoJXjYspuHIZVofin4n5Yq8b/wAJ+af+&#xA;rNff9I03/NOKu/wn5p/6s19/0jTf804q+vP+cNvKN5o/kvWtVv7WS0u9UvliEcyMjmG0j+BuLAH7&#xA;c0mKvoPFXwB+fcPmbzH+bnmTUIdLvZbWO5+p2zrbyshjtFEAZCFoVYxlh88Vef8A+E/NP/Vmvv8A&#xA;pGm/5pxV3+E/NP8A1Zr7/pGm/wCacVfcP/OLHlW48v8A5RWRu4Gt73VLi4vriKRSjrVvRj5A77xw&#xA;qfpxV69irsVdirRIUEk0A3JPQDFXy1/zkV/zkboMsLeWPKBS/voJKz64pDQQsAVZLc7iVt92+yO3&#xA;Lsq+Vbi4nuJnnuJGmnlJaSVyWZmPUkncnFVPFXYqmXl3y5rfmPVoNJ0W0e8v7g0SKMdB3ZidlVe7&#xA;HYYq+vfyf/IPRPJMceqapw1LzMwr9YIrDbVG6wA/teMh38Kb1Ves4q+Z/wDnKP8AKoRv/jvSIaI5&#xA;WPXYUHRjRY7mg8dkf3oe5OKvm/FXYq7FX0z/AM48fnhENL/wj5jmJuLKMnRLhjUyxqP95Sf5k/YP&#xA;8u3YVVeh6Tp995p8xiNiazt6lxIOkcS9afIbLir2C78n+U7yOOO90axu0iVUQXFtFLRVFFHxq3QY&#xA;qln/ACqf8rP+pN0P/uG2n/VPFVe1/LX8ubRuVr5V0e3aoblFYWqGo6H4Yx0xVPrWztLSIQ2sEdvC&#xA;OkcSqijanRQB2xVWxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kvmj877n/nIfzqZ9C8ueV7zSvKx&#xA;qkp9e2W5vF6H1Ss3wRn/AH2Dv+0T0Crw3/oW/wDO3/qVp/8Akdbf9VcVUrn/AJx3/Oi2geebyvcC&#xA;KMFnIkt2IA6miyE4qki/lZ5+Zgo0h6nYVkhA+8virJvLv/OOH5o6rqdvbXenDS7KT4ptQnkieNE6&#xA;1CxuzOT+yB18QN8VfVn5e/lr5Y8iaT9R0eCs8gBvL+QAzzsO7t2UfsqNh86nFWV4q7FVG9s7W9s5&#xA;7O7iWe1uY2hnhcVV43BVlYeBBpir4686/wDOOHn/AE7zLe23l7S5NT0XnzsLpZIQfSfcI4d1PJPs&#xA;k03698VSP/lQP5v/APUtzf8AI23/AOqmKqF5+R/5qWcPrXWgSQx9OTTW+58APU3xVD6f+VX5lyXs&#xA;C2Gjzm85g2/pPHz5g1BWj9uuKvt78jtO8wWnk5T5m0eTSvMfMx35laJxME/u5IzEzgIVO4P7Ve1M&#xA;VeiYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8885/lqLl5NQ0RQkzVaay&#xA;6Kx6kx9gf8npirCtL8xavocxtZUZoozSS0mqpU+1d1xVmWm+bdGvgF9b6vMesc3w7+zfZP34qnII&#xA;IBBqD0IxVvFXYqpz3FvbxmSeRYox1Z2Cj7zirG9V892FuCliv1qX+c1WMH9Z+j78VYzb23mLzVqP&#xA;GNWuJB1b7MUSnxPRR+J98Ver+UvJdh5fg57XGoSCktyR0H8sfgv68VZHirsVdirsVdirsVdirsVd&#xA;irsVdirsVdirsVdirsVdirsVdirsVdirsVdiqVa55Y0XWo+N/bhpAKJOnwyr8mH6jtirANW/KPUY&#xA;mL6XdJcx9opv3cg9qiqn8MVY8+geddKJC2t5CB1MHJ0++IsuKqf6e82RfA004I7MlT+K1xVsan5w&#xA;u/hje7kJ2pEjA/8ACAYqiLXyP5y1KQPJaSpXrLdNwI+Yc8/wxVlujflHaRFZNXuTcMNzbwVRPpc/&#xA;EfoAxVndjYWVjbrbWcKQQL0RBQfM+J98VRGKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K&#xA;uxV2KuxV/9k=</xapGImg:image>
+    </rdf:li>
+   </rdf:Alt>
+  </xap:Thumbnails>
+ </rdf:Description>
+
+ <rdf:Description rdf:about='uuid:bacf4235-e435-11da-8f1a-000d93afebb2'
+  xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/'>
+  
<xapMM:DocumentID>uuid:65ad4e0e-e367-11da-8f1a-000d93afebb2</xapMM:DocumentID>
+ </rdf:Description>
+
+ <rdf:Description rdf:about='uuid:bacf4235-e435-11da-8f1a-000d93afebb2'
+  xmlns:dc='http://purl.org/dc/elements/1.1/'>
+  <dc:format>application/postscript</dc:format>
+ </rdf:Description>
+
+</rdf:RDF>
+</x:xmpmeta>
+                                                                               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                 <?xpacket end='w'?>
%  &&end XMP packet marker&&
[{ai_metadata_stream_123}
<</Type /Metadata /Subtype /XML>>
/PUT AI11_PDFMark5
[/Document
1 dict begin /Metadata {ai_metadata_stream_123} def
currentdict end /BDC AI11_PDFMark5
Adobe_AGM_Utils begin
Adobe_AGM_Core/page_setup get exec
Adobe_CoolType_Core/page_setup get exec
Adobe_AGM_Image/page_setup get exec
%%EndPageSetup
Adobe_AGM_Core/AGMCORE_save save ddf
1 -1 scale 0 -93.5196 translate
[1 0 0 1 0 0 ]  concat
% page clip
gsave
newpath
gsave % PSGState
0 0 mo
0 93.5196 li
214.165 93.5196 li
214.165 0 li
clp
[1 0 0 1 0 0 ] concat
8.25879 46.7579 mo
8.25879 22.3165 28.0782 2.5 52.521 2.5 cv
76.9634 2.5 96.7769 22.3165 96.7769 46.7579 cv
96.7769 71.2032 76.9634 91.0196 52.521 91.0196 cv
28.0782 91.0196 8.25879 71.2032 8.25879 46.7579 cv
false sop
/0 
[/DeviceGray] add_csa
0.8706 gry
f
5 lw
0 lc
0 lj
4 ml
[] 0 dsh
true sadj
8.25879 46.7579 mo
8.25879 22.3165 28.0782 2.5 52.521 2.5 cv
76.9634 2.5 96.7769 22.3165 96.7769 46.7579 cv
96.7769 71.2032 76.9634 91.0196 52.521 91.0196 cv
28.0782 91.0196 8.25879 71.2032 8.25879 46.7579 cv
cp
0.5647 gry
@
116.116 47.1055 mo
117.075 42.9981 115.555 40.2793 110.896 40.2793 cv
106.516 40.2793 103.46 42.9356 102.483 47.1055 cv
116.116 47.1055 li
cp
101.063 53.17 mo
99.8052 58.5411 101.595 61.004 106.256 61.004 cv
110.22 61.004 112.205 59.3594 113.233 57.3379 cv
133.266 57.3379 li
131.397 62.6465 123.05 67.7012 105.038 67.7012 cv
88.691 67.7012 78.7691 62.834 81.5796 50.8321 cv
84.4605 38.5137 97.022 33.586 112.466 33.586 cv
125.82 33.586 138.41 37.4395 135.127 51.4629 cv
134.728 53.17 li
101.063 53.17 li
/1 
[/DeviceCMYK] add_csa
0 0 0 1 cmyk
f
139.871 47.2325 mo
140.86 42.9981 141.766 38.8282 142.365 34.7872 cv
162.536 34.7872 li
161.512 40.3458 li
161.648 40.3458 li
166.04 35.8575 172.068 33.586 179.16 33.586 cv
185.423 33.586 195.758 35.4805 192.936 47.5469 cv
188.498 66.4981 li
168.054 66.4981 li
172.026 49.5059 li
173.122 44.8301 171.49 43.1876 167.941 43.1876 cv
163.209 43.1876 160.644 45.8418 159.507 50.7051 cv
155.807 66.4981 li
135.358 66.4981 li
139.871 47.2325 li
f
39.7618 47.836 mo
17.8775 20.8731 li
44.6934 20.92 li
56.3023 36.6368 li
75.6192 20.8731 li
106.646 20.8731 li
67.9107 50.6114 li
89.6958 78.6407 li
62.6739 78.6407 li
51.5777 62.3243 li
30.9258 78.6407 li
0 78.6407 li
39.7618 47.836 li
f
199.061 36.5992 mo
197.165 36.5992 li
197.165 35.1919 li
203.389 35.1919 li
203.389 36.5992 li
201.493 36.5992 li
201.493 40.9673 li
199.061 40.9673 li
199.061 36.5992 li
f
204.381 35.1919 mo
208.069 35.1919 li
209.276 39.063 li
209.292 39.063 li
210.46 35.1919 li
214.165 35.1919 li
214.165 40.9673 li
211.909 40.9673 li
211.909 36.6236 li
211.893 36.6236 li
210.309 40.9673 li
207.956 40.9673 li
206.469 36.6236 li
206.444 36.6236 li
206.444 40.9673 li
204.381 40.9673 li
204.381 35.1919 li
f
%ADOBeginClientInjection: EndPageContent "AI11EPS"
userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse

%ADOEndClientInjection: EndPageContent "AI11EPS"
% page clip
grestore
grestore % PSGState
Adobe_AGM_Core/AGMCORE_save get restore
%%PageTrailer
[/EMC AI11_PDFMark5
[/NamespacePop AI11_PDFMark5
Adobe_AGM_Image/page_trailer get exec
Adobe_CoolType_Core/page_trailer get exec
Adobe_AGM_Core/page_trailer get exec
currentdict Adobe_AGM_Utils eq {end} if
%%Trailer
Adobe_AGM_Image/doc_trailer get exec
Adobe_CoolType_Core/doc_trailer get exec
Adobe_AGM_Core/doc_trailer get exec
%%EOF
%AI9_PrintingDataEnd

userdict /AI9_read_buffer 256 string put
userdict begin
/ai9_skip_data
{
        mark
        {
                currentfile AI9_read_buffer { readline } stopped
                {
                }
                {
                        not
                        {
                                exit
                        } if
                        (%AI9_PrivateDataEnd) eq
                        {
                                exit
                        } if
                } ifelse
        } loop
        cleartomark
} def
end
userdict /ai9_skip_data get exec
%AI9_PrivateDataBegin
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(R) 11.0
%%AI8_CreatorVersion: 11.0.0
%%For: (Rich Quarles) (glassCanopy, LLC)
%%Title: (xen.eps)
%%CreationDate: 6/26/06 11:03 AM
%AI9_DataStream
%Gb"-6l#J&kFY<FlrXS_PAtmN]Ljbu=A<r@?WQR@K]8]PA.h1lL)d%f3@Yb(hW%(ZHVk:<,+8>9G%;<$r+h\4JAk%%?HMjl%q;R=s
%l1<s4qoA0&VuQP2<E3""F^&*.AUi5eNVh^ns)J(n]8u26fCdMAGi<dF<t/Ej?+8'<^b,5%hc=^Nr:KFKLV(T&?TgWe]DMACqt0CM
%r:(S)e&1Rb5F\kN:QM.+j'ViUI"2%mkJ)HAE;O=_rVH-[h`ooR^!C#mq.9HJrr1kos7H6Jp=!#k?/TAg2tX'+J%YaJmMAss2h1bK
%a*/&dhqrhc%Cgcbb7F+88,T+]LAq2KmaEQI+$??PkAPkKYQ)rBo>aX&+/jcu>SYjZe[P=S*uao3P\knM>lDQAS)=/3bMVZhb-J_7
%r_2ae?%uR_PZRnScOWg$]RA]M^e=\\W2FB'pt8J\f+$>;(,1hrp%J+641uJ#(gBgs*W-hfTu.YeFoVAeGPA$PQGZPXY6Jc$(]EV?
%SuiedFbrn0b9!]'i.'R,XhXS]:[e:)X4Ku,l`n<Qa/6d^78]-Fnh6VR+2818/Qut*?2&KkJ?SC4n,IG.pudFE:if>g=(N1T$!6pg
%.SFU7aLrMV;OE7e2"nC4=*jOAei9$c45`g:F>Ie"f6=r=:"0!CmGkt\o+/Qh4AH(+;;X7E\aEhn*ZgpP,+%R_s5CG2hq`e[oR-Q#
%rortQr/@!"n*WAes)@l"Ncn6)^j`ho`tj/Z^ZA'idrZ=`1Akq.&[iB)M8&.;po:R5mf*1amOte)DVs87IX:kc-f+i1h7qu%Z?cHA
%p&0BW?Ke&fI]W=nhgU$aHiF!(4`2e(2^@5Rl_jK$&$uZ(hYk>DmL&>dTnP/ph<jfXGFsCN4?\)3hYuML.-.GdI/`W9gE5jT5>#eQ
%2d_#`p\;@us$a'gGu[j(lh)!7M>nu4!CDRR$L2<.WfEYT<2bsMQh5j9%-td!oFX5[_,mk%^O3cqmf)_md_PjOIt#+]+80jgFn6./
%"0HnJ5O*`9/G/hgVn5H5I/hI[rq-$(+!5FiEH%r:WpQrs,/0FPVB>!U:U`$j<S(OTO1YG%RXY$bUnrTC?/s86_k5tF5IXkq['&qC
%?/rD:NSi;EJ%OUuh0`;UiDj0=n%'"4l8lSXlh5\-Eua_=EPuW^Gi@K=Lf]Q\?A3mf:V:GS`N-FO]Q:^(Dmil_B"uB)p\V,2]D$[M
%I_Y&m\Ad60D@\so^Vr;-qmprXi(pumqh.3(.dWAmPeY*WiD7)jH\=Vgh`;Bt0D5^%i]HK=rkt7MS@E1t&cT^tj)=i0qh3;VdH'KN
%<S/u&M:_+gpmKD<[[bC*8!-:JJ+B/cF)F.MS_M.[a-Q$2knX-5X0@*K'5QSFjBhG%4Ce.*YJU;'%.gFe^">RIM=7Zm4TG2?>E5?6
%:V7&3LHg&"H'Rm/o(2C.\d#D#\pebH\:$L)GSQ:/NXPTO>E:B!G4BXaAt:Th6=4sHp.e[9p($QR?LtYY5Q$@>nbU9)nX/gZp_0jI
%hRP:]AaA43OlIhYlIIhoCIM;D[[^D+Y6E_u3i>+.gc?L!IP-[#[TmH5qo3KnX7YX]45\BAo8?hu4-N`%cT.$qf<D.hYMZS=q&]9a
%maeVKFI^5%kLH^#5--u]400U]l!]m#Pf#UkMf^67mP#R5<c,$(Qg<`pbHdcWrar04b,_Q;S+)nS9uHG;Dgo5Mg6Or0^\QFSr'(&@
%f.c^k@F/Wto%IpTS+)nSe&:^mDgo5Mk*\F?^\P:lnb_gF?\Nta4ib+NT00=T?Jk9kk[2kVRs%#_0Qrpo1\C9Nf[%p8);jiE*j4km
%IVu4U?f0o"p_R2mo^dP"2HYaJ#/6MB'jP8#nl>)cX\nO?7f5As(>MdI*UnJ-Fhg(D(&V/$J%0eh_rH-F\44,8Y<2I4[YJUm]bGdl
%=.]C5mgf"gSXV=Q1_.cVX17'W2ge-F9)]Mo@/9/1>"do.8=^bb41+VSfYtV9hsiY&p."2S8_\X8I-:Nbg2WtC[<]FBp,BHcC2EK;
%BM0D9I]e"lF=/kaUuhB8Y&E'plET8"^jGfse+;DN@bN.*4j<Kn#]gMb03<B=e1g*FnSD(i:^?]DXZ^cU\VFs?LLM94cM8rlA[tS+
%5<bG&VmSEA@qYmM6S!PF=6/(c[H%3B@ro!83d&aC8RX10q9luMb9u'=n-m"bY(A?B]NQ4@ajP1kq8N'^)Kj8kY0fk%q_qT!pq,nQ
%Ib>`6K\?*\T80i74780<NRnSuV#5FDJCmPrVjN]$BFb/UfmASnm]8s76K?GVN9;UO[Z"BiE1cqFS2"k2f&fJ10"-,=f!i3ll!#Vs
%C=j#2qnQtt>rS0o]%:*CF\Ya$p-S`>fb:PG?$5k_pbtAOT8gV[IV]Km31B;=<XVb0qIJC)(s<heG[,M^FLTGp%fAF/o=^QS_rh=h
%AI<S=I.ME(Pk;oEnY>Do\rQ9nV-3HWW5!WCBD1H&j/mE_Aok<A=m]a4nG@W9`Br+b*VdaJ:Of6PLT%H&Vm`3f!;f:bmU_pe'5>0n
%>nc"'?>nfEbdU\hP3Xd'Y#[!1h`[1I(l^.46X/V#gK)<]fAALRpF/3,c!4go$r\3np6OjMf=g6ZRX@lj^6Q)Cc#,M]EdcMOng^n$
%[4:mUa68qToV`-\(:nHm%I5J,kB5063P5!6rIeJ_kM^V@;P'Yq1sDZ\G8RBJEj#B(>nZh:$f_fPZ::m>O&9-XpuF:_#MU-h%qcK(
%!uF2l(mJTXROq:j;<`W)dbNZuD8nd'lD3U03hFM4PPLr=#26+8o.&\i_u=;;b5Kj<L[0)jQBaIG3kl$lr3lMh)#GZ(TD_N#jtXie
%WLhh8R"6HGL3M"Qi+Yf-e$Db5rN<GAT5+qsAbhXJhM%LX0'JJO8(nL9REA^ZB2=GQUKd4?Eosc\?UMD7W(oJ//_6TTc('qp(0W<%
%GYdnClA<j"&[tfOeaT(*9m;A\B^?K3P?Y:0/?`I5>2V)VVhA&gV(jJt!l%b]4IeFRifd_b!<-s"He]E"')D,7n'i^@?e9)rXe\fu
%E5C%e@^"2gh%=u!q2bJP2@-rM97k7&DMBkFnWQk-9'6P21\^4mHTj%ZccLe2XFg1FZ]Q.ab&(=.HWYk0S7haA5KES^Q@hkFC$2a"
%ERF>rb0i8YP>\YQ-c;WV;!Z!oD0IHsgQikH6T:`df[!it4-:PPQ0re5'$Wr.C[CHE67kW%"5!3=/^9`m`md2+dBcmYmN8W!%?Or[
%5r1oQP+D\DoS_PcHaHB6?e_IhBIEYTer$Z&T,sT<j6up'oZc!3T0@bnro!)3k2/?eICf<#s7kEfh::06I.r$cmrrI>\CnO0^O(]R
%52L+IiTm!#]=[h3%hH-.]A%P%5Mb/nk0s:Hqn&=NoeLa_H[j'f?ZJfIh;#`VIt%.f_m^/#s)E*!Y2T7rWUb7:q&S;UDXR;N4*0_Y
%^\+2!^ZTD#br,7pRRaC7h)t58:OMPn\b=-Pqnu5)ba3e@90\2)h9BS^mJGZ,^:Sa+Gn1@s]=W=nj*gOhe(sTtp>Y,g4#DrQr:0Br
%_qh5[mr+h<"MXob%G^L4p@8)'+(1>)a^b[b]t\jeo_f<HpYYr6e'4fRg\5n6DP-rV_enn(]7,/(o`":5S'CB`bE!1C+91F"8)HOY
%rqPIOnT232J,aK^Gk9m8qQX70Vn\jqhg]tX<S]mriSP_p5JI$mJ8b(3>PMHprbnFt5%5ns5Q0^6k3bIj4ktLZ5@J]j^UnoE)uO"!
%5!6[B/t;CeB:.tr%o8f=m_8W6hXO.l4ZqMLO$3O<rU%5/Rgi057M_Kkg>+mM)L6]@9tIn45egtU_[obCqM+=3GN!WBnGW=#hr=e.
%KBC5P?i=?h52YpimQNj";+kW$pib+JWm9FJHOh-_jT//kq&Z.!oH"eSc#qZOJ%Y`)k8Qs1i6kDNHM[OOQAE0+QmK="IrBRCm!Ri:
%4>ah6c[TYqlS&3*^Z:<ejGU`/okD1Uj=>]*=8^oUo6^K%4jMQtO7tTqDOuXp\*oo.]g(EEA[h,A6h$E(*URbDo_J$hgZQm)*c=2l
%JpmFdGk^BjGIMO`qq[9+]^>ask'%n3J%5BpeSjA=2L6%)g-*/s6=5sa>^^*&6=TDF5MSY6hF(GN4o'=%038L&:oh7_]RTe<h=#gf
%rm(J9lq5sW=(Par^pr1ugZR;rGgkL(5CO";imSEM\)CH9"[FX-DK0jiN@Tbs2]Z`2:\V=/n*e$ip'*SNJQr:p^41TXs7m[sKR9Zf
%',!7&IMd";r,DDdm?K3Bp')oFDP4%Nlu-dVLE$4[=tpLGoA.<^gT.>jAC\P7qp2mpn*[?YVSJ*3?laagoa`/Dq"4(#%K@404a4U$
%nb`U2pFDUN[#quXI#m.nhgG+d)8>t1kGQY`s75^7-he-.107hV;>g7[b=D?f:KQ$:kDt,(qVBWL_p>LF$fih@"i#HaA?S2l%(LJo
%r_V!2F`22LO:_)uJ![3"o=]Y!g:[_5\:;#:^'f)1>Q=TYSR9.,U!0o"rlS<6\`</mBM%!/r"(>9T7jt?XU(;m#GAXMI5Up\2!e<<
%s/mFbY&(iLp?DC*R9KH/p\=3$%o;)P@J$/lD7o`&\'Ns8<K!u3Xnj).jm17eTC0Qa5CN;JIG1j<rmU9/q!m?9hB>-(m/HeUcOXi^
%Wk4]@c1h6sRhmL10<Y:_^AA2cr9AdIdJ'8/O$@^M#NY,)]a*]c++aBj2c(hLgNnU[K<fD&-mb)b8dtr2/X-`;%qTED-lXQJPV!R\
%Wg[5"F7<\sm+VS6#mFmq)G3AoduI$2AUlO6fg(suCoPWTG#\0;]#&SY=&Q#je5W@a<#<;q.K^I\:XH(\7qKFanGfB@<)@=C/cNcq
%G+5)GYSj-j0m9mW12h?*4oV&\.-4FeIg;N\l$ir7T*?_([%[NK1f)k?2smOA[b-mB.MrZ^9=O;^$rH9"S[R;?DEDc6b>?EZK9<<E
%`3?l04No%7c+KSp2"<ocmttBWV8Cp<2:*dqKS."T8G#^_-t<Qh/"qO`e/?E3gm@o<W(Jg]f._D#NYtCF6T%3`<)Wt&X6+.umH^K!
%l`.*n?,HfS0W][cct_L(YbMq0dG22flN>E,6urg$9U!X5Mc2[b1r9AVS2Hb<L*ikf`bkn=[dA7o^.79r%4eAGK/lWA6k`%b>LQsr
%2#K.'`<;A[_A)Ys>qJcW"oX-(KrLW`m5Vr;NT2_d@gD=u)/JGG3>TM]fXYE3[P1@D@2t#qLNUuSbtnr$;"XX6#?&jUTA\rY[%W8_
%dmAt-BNa")h&b916Ye&_2>TK0d"g1<B56X.fn%obMfXWE:=/#5Q>mH6DdaW#(ltsS@/98i;tMHMTrkSRJ]$k1_CuHRR(.`P(g>^"
%'lC@QhF#uD-JZH`i3jV68d:Y">kP4OC[kE@`0GIBm@ilS12!!&$!0)[1%Z$S)^i=Ql%_o?+d>e1>T0h3AmD"5?uY(`N`K"Q];pW4
%@(d:89,,>dapuuPXD-;mY_e7"3`S!aPkt%3<kkXe.kZ-P*\5U:k3@kCVIuF'4jEASL_,cFM.V$#1HcAulD\k^k;_c:c$W6=%LHGR
%VVTY4Di$mQh!==mr3o'rGn%]m+KPZJ#u&uT>3d31q4<$FoUgVnZlAZ#LAooR0!RWlB[P\1T+6>.<l1JMk3"AgF-lgsms$5KVVRQ:
%$rK:BKj/[hg1.t\8jlIs*Y:a_H:[OmfJ3'fWBe.7\"U+`9iO$JN92K(^1L#l#UqdSm'5K#k&%*p2VkdP8OqI,]KId5Pb$]tUMNMl
%p85!_CrRK47c'"ID8i*T+`G;@)pYf"AL#>]KUkXcUpEaOjt(&LoRsOqdQ&NA">VmQ5ja=.C8cY`1pBA0+F!u>M@C-4/J,e4)[ddI
%'bJGU(=+*r@nX/+B-a+0SXbUc,0k3Ei^m84&P+L,0jq^]Gm?Gf[_b<Y(U9a3]_>s1oGe&+'ZsLmq;OMXTaXCd4,)>rAMok.@!4n?
%%UqJdk>8mF>"G-40>l$:cErXf>mGhC_<9cY;V2UBCkO&X;66:tOV-+dlA5'E.HE$Z''\JQ[$&QsV5FAb@R3["NeA]>n2YrY=,qAU
%eq(6R<'NLC6m"<l51gQc<%C'r00I$@>QAtcG1>D4Oh[&]JXV=`=TN(<2T-",G$l[K5sZO2K;0d-TYY-9(&":J(1ElX\'r*Wl&R3a
%fLVJ1KTUA2PLN1LE0>Z:bD;9kN^MJkUr9q[ISr2K;+S-9QHEJ_Nu9oOr>fmKI*U\YnA<.9l_oJn)Z<(K1f8U'(o<k#f!B)-Uq$Yi
%Q;1.MLUU%'Q4EU/*qD'<4=Q967d'\[XRkmhcr8daN44a'C`=8Sg'fTpkse.&`^b9cMV.E!fP`*<)^&4:@(?HcZ;bTD7P%'=OE+&f
%\VP3i9Xnb>jJIP&Cdkhms-hM999jJ\V6WCe*/PKe&5gBg\]i,Cm\K46H2,<ESm+dcW<E`NR4XQJ:<m31I7O<YF@99lUK5]B4Y&r^
%U&Q=3_#KRrE(N`@:"1$EET;lLm6kdTL`7Ck6jMZS3T[@Z?tSDjpN.Ur:ZSHCQmn-7G.@!tAg>LD@LWZ&/I492ZR6ooLCTuM_kPFE
%_Ti@=*>Nj3&:4-$0.qURF(P?sR(J8:7*BVZaYrO?qD'AR\:h6/`)Xp['%^[_$?;VnZL7KeELst3i^g.t=a.4?kHL]`Z/'an>O.l(
%6=M/WN6]btlseec\9Cp[/'XA#K`&)W[GM)H1IKiIF:)daQJ8Xa/^sfhCZolCTJ(PSm=A&"IVC;ped+@3hn`?J:#?LBYBHb;'5nE5
%c,@(cYh3np&$VUeUMGF&f>QX5BQo2_1,$?gP(I]"ofsa`RP\tm<"=YYKS+?,.u@<W6u-Ta&Y%B^&.MW!<:MXJLajUcDIFtkjhr8j
%WiW/IU6c[!@K\`b,%D0&6#:Wg2^4M9kqH3';<:<5+B=.);P_Ht.S5dSBr?Y4Kr7<dKVh*`K;V$`Ju8Vr_9;n?s57ScFms\?H/Nht
%H-g9HA\</mH)u:e]a4%46O("D\;Onenkpo!#iY1c.K":JhOcAFGKbMj-W1WJ/.^h&cSOAiMd";O=2^%4Ib(dccuqq(TBK\DkoW;l
%ePTs_ic],&;FMM,K!Yoj$p&YOFEBtT[/t"cIX2#o2%Q`#W:M3H,(qSe:a:dR;IZ<UG?tb'h1R"*L"$cB6(occ/]gJ^W)-KJ.P"\s
%Suf.-=fEkp5'^6ZrM"Cl@S[+e(RuHS\[&:X.Ug/K(JPGB46epYAI;;UW!oU;TZVa4OKe:e'YR0*8B.Srjg#P.@M08^0VX3`<N$YN
%rtN<TSb'IPI[=5CpsTq(6`::"Y->u_a7k:kZag>gVXoqU40Q057n6mep0d!#"ZrOmeLrC92Pg,=JJt<C[tK`;PLd2F&i5WpG9Z_#
%NqC#`!,5j0GIu]4eK7AVYpC\#W\6u/"]-HG.YB@l^b__5RC^JA5l0NMJV],1,t.sH?Gu/91g.N=Uu$k]8HGjSM"HP,SB0YWgcLj*
%MC<7N?%`Zf*8Zj(Mj_#h\A_[\Mmp+;m.B(^Drq">s7^5]_h'GPW3"IHoiqF;Ng,Q)4At_E=;`qq(^OL7KX'([2e?l2@;`1NJQZ7$
%j;KpXH!FF)=)Af1-*(g@%'pNFIA0m67L(TiHId9oRYAjs'jtP88EgC;1+Kt7S60L<'PTZSM^pFk#E2bXC2Y\\D'_IL0-f_n2hJLm
%l7?m9imleB`FS\r$u7^tnTlA_`1EjY$J2sQ?PW>KM/8a6^@;+(,2Oi8$S#+nr3]i]#KR:r9.J.,M9!rdjXkqW[+6hN09[2'7gc!T
%7D/!.HJ=7;M/l<Z@P`q2H]i>k:*`T8gE0#F)<=J"q6M@^D_4k#7HB:/d63=Q3spt$A(JJ93g!C;Ep4^%'MG>UBoH1fa\lkF%+efr
%<>:m$?H'3i,X89dg63MQibQFMDdmOFF;?FJ^.ERI8pHY)0M6u-?ehtWHH'I-m$F0$[7d8N4\GT]H\8\Sd2/,Hj,UXmA_"Gll:>m;
%8ZJ[jSlk'0":hmbEU:WpA>G6>d'<71a$BP:>:JKp-$GjjPVjLo9`E2J[suMHQ[TM%)OJ/T%PW9.>f6^sbIY6q:&^;;>_Y1CE2CF4
%l2SThPC<"c37u()ORfVq[rUk2mG`0I'fn^`dbHFsm!l(D9)ifSbEZ87Upu@O*7$n*`7T$9R\)HcgULq@m>uM=@+t9``H&DgKbdG/
%1jfp2pfQ4Fh3:6eaE;bVQ4%VZG/F.oVM&T\5lF""eOI*i"3reTN2%U"<\V^A^@>)/ZHJ\uG@HH?^kV2r7V)%`@fNDZ&G4fC!jp-D
%d,HimAEZr\BG\e;@Mrmm?)/-\Lq8#>4_-oST9rD^Y(N+/]f:TYl3ug26"!`e&^R\IfEh-\@ipPiHFjd7K3pG-*"2X=M!nG;"&Y1=
%Tk5OZ(bn)jQ_)3/n:"pf)Pr9[C9'TDlt;'J7Tt5+q1u^n7Z6[!/Ic8]_qEM#%V!0[%MoLs$`Et>1u]f9J!D^>,R(Gg*u-Qp;&Q?L
%8?"n-aF2&T3n;-p%'_Bk7\H3`fi^d2a+?gV1Lm/SU*CnXj3.Mf+GG@RK=1:hV*J6X1N&J<ShgJIK,=ejLJim`%-_GQ=XNIXilh\S
%]C8]%<T/kG4NNWMT^0Dj_09Jq3ap`b*l;1OCi%=ckcAT!rL-YJ=^^Ooi/6itkR$cqCrub>f*iC'gslhf<rbNc:qZ(n/ZsV/@Kg,N
%0>>!0K'=LB]jeLd:,!([89!e^nfDc]Tanp-6bGRn\SJBA@/`J#?;_*;!k:Y"!*EaBKjYOslaF^>2Zs;_cR>j&jU,0I";fojcPF=6
%Jh[]H1R#*2pi!aNWNP3Ukecr:\;-]mOG+EZ+1?knCP:)E#fiO0,k9sUg["^ICqA%Wo&;.'"Wf9-$a5)P;(hMBlW6mn#3iC#0,!h%
%2MYM`;f`/5J%deIqqN.LC")ES^"$USn&51jqtKPtIpd(`qZ`WgX7J6sPTc_?.Re+jOqOphKWOsTd7&h#OBPY%<QUM5F&WQB$M;CW
%dZfnBHQ)*.?rboB;))n>n=j73auHY]12GW*Z&&R`7#Vba8Y*(V`#gQOP+D,6/r;/HV?g<KA;H<fWdkWF`>rM_*"_[*aSdg]_jh8/
%4nY[pjHhTa(WMJ[*ThI*D.##:jDgR)$2b6R2]29q_h$>OQWQ6(I;%itXZA4EA41Pf8>^$f:u/-fHC?jQK[ZSLM,d27Z'80:<Q95k
%mhb%c4W%G"8d^HOS.]OK4;sO>,LIJk;&sr$;-%D<0m\bS[]$Jm%oQ%2hKs/V\%U5bmLQQL3mpBn;T.EDKS].D+[Z,#'.ICaHO_6Q
%$4nUL*-XUVZ:!_AHoOWHYgPn#*@13mR8&C:22>E"VCIP<D3,$]XY=knF#QTBB0P1SE.4Vmc!^7*jmP'be'cI)9"$5,Nj8L&9;k."
%9kE%\=F__Ocj(`O'^,MOaoD%>2:o*6+V=01X\6so=kLg65M=hfSrg@)d5KjrWY#bG/Y+gnFcQ)m^&Q2d)mrZTiiY@8@:RU&gT>'5
%-mX0bGsRoplc<,'<[sn2lM8RT$+n9tdX/_!I-.e,92fF$W_>C*Z\j=Wc/djVP;De-A1JA]b97Vt,oUrN8B$%7L><kJZ!VPL]CQcd
%LD^)9Z?#e0#/He*SkbR"]L,bFJl:CqQ[HV[pu@SrJ@4?:pk-Z/'_)Hp9?:5&>\%<tX`+ZC."SZD6Yp+MAD#RtU4QB6lnGsn[1k\s
%p7ep'f?&a]>*V'DQ?7ZD]c6)"aD#l3DorO"'G'&uZ4f1nL6c[NEKoNh8]u>H>qA!j#huS'ibLPH>Z+ASd]N:L2WRM:d/mD,93gUm
%hCl"n?lTMGI6\u"8Q?srQ7R+O>qom^"m=^]dN<m7`L"%^?^FDor03+B.V9-@(T,651#V<q&TRd2##k=8pREI"roWW%=22>Yr>+Hb
%s!Q=WV+=SuP:ELFBdgo5Nl($t`RQ>THa2?)5d%GtN1I8&Zpto[H#HIIdDW6@s6P_Ss3LQ!q*2OLeWTgaO[rJt9eksj<Ca^%+l;UW
%W[pLKaD'a43+T'J--oJ.0V;6g9BRn'2mbcCp6OPSMXN[TVif)`KdB<HahcR*<@]BbFMK=CT\<0MONX"?oB1X&1SkhJHoskEL5.+=
%*X9H,f0G7r8.r65<`%b*$Bcp07"<tdD\+[KREe!2ap(Z95$hu]`3=hQ`?9o7+QfG<>S;_-+rNJ)B!en$IPt&`@s98p(l:C<[P!]0
%7;<<+Cat[J&2JRR@e+QWm,K:A&!_,UF%P`/G`8p)Tf>5of<`!"H`j.6T$E&Z*]riN]FbWan?1$OKfEL/auGQQSop0f_>tFpj`r7\
%)j?*re7)":Fdqcnd[B)@*p:EKD3/1sW6XK=&5BKAj5KTa28VLm/j,(HOUiOJf-'`':%%+Cck4jg=U?H'CUZg'%nP.EF>1dX[^P5e
%W4_J?H?'60O.+U,,=cWeagm$R3Xm%BQ1FJs\UY(V5NblAlM9lHmAHlFX5+;1E3MfMiG`Z+E!>3qVOb2I4k0QVWdkf"dt&Y.gF_cR
%*Lp;(CM-u$IPjnbQN_G,*HP#:(3U:DXiqL.[dg99i*BGgp=-!2\T!F>KEIbj]'tJ'\01u5KM[spMJ!d=4OO!RL/LApp-+"8'&d;Y
%[W^[U(((X0G#>'PBQ4Yi&h"hG'Ja+f-8Ha_,ue1jTnCG.=VOA@dtsm7P82KiU"BGF)h=,cWX3Fo69Fm[r7!E95YYW!R*p)Jh?_B"
%T/\hf7?5HMb&JoUKl^Ql;Bpk:'.6"S8u?.M*&1tdDkdH4oU^044u@tM=I;OJ8I\AAi2"Kj8KE5@$;YO^h't<tW(Q<,<HPYOCr4bK
%gk:XtarR;M!Wphb64H4Xcp/@P)O6&`i"C%:9(WP=\/&7$G0W/$(GcWO&^KnIApnK!36#qHVI?rJVKn(4g.701$]O!"$]`dc%uTuP
%=#OcWE"R70&*/^7LkCVX3r.kW+/ucg10YV@8=LG^Jf/)W$LpM)m``"82bPe+B1m%dp3%9cg+Xf7hrCa3XFKE]9I)rD)P4I4RTnF9
%Ham_k1oc9`AtWuu>eL<lXs8M-!4d:tQ56%jOEmDEh%(o@L\tFL1?f5.'\UBa*;gAZ*%<.^e-e\rrJoV,1LIO:C,1@2i+*K(I0hRs
%;m[je?kV+&ODpI`%R_haG_l`-KI[WZ9*htZ'.1<MJ16P&?r1/tY7e&K'^2Ak5Q_O/Y[\\nn-KK*;'o>;2#d77I6S$GJV"U>^\bnQ
%No$=<j#FkRb,tNm?g&s#c2u`[_,JLI"1N9-Vj(DH29J?^ke)V;gD[6PL5U/&"p;dH1Aa6j`(!M?ck7D7^nV]Z`.neCQ?dTo[@m/U
%)l?[a3'o.bL_)SNK&@ER^af[hY*8:]++E3llIAUH6nV&.$[*SA+BF'W1=1^dQ9si4f@FF9N6[?`ZXT1koRBTXC+f^ni'X:G&IE-+
%`7;d;&R-=B23bS#nJ2+,`WReYOZ<KaS&^Ko88jJ-l\b?Nd,"gNa4=X:GiT=";Op=)M\4iKCQ^S%_O51Mdp%bkI@`WZT2H".W1Bgg
%G$-4NfL\?ab-I+B3/_?F3PQuRBMltp@Ublh`(!QH$k=]'CjZRNodQR(ckA;&NY1'aXOfmX]Ij8t+iQ$`!g`+o_d)8S:*N/[S4_AL
%(3c@dd6NO7(U[X&ghu3gr7#6,7]bCt71'M^=/p6q&3V1`/qM[0)</+.IE3);dN3*TH`$=649W**%lJ^0m@>D?&`=^W9.hf"a.c$5
%)RZ(9?s'mR*Ri+IXc-JhD&om!XiF_W+H+5TY0.PM#HVk3Fi-Q"`a&dWY\nl1CMMJrTFjJn&W3X!"I2hm'cs&VY<K(nfOs^]*-H$1
%$%Dt<YF#8=#c>IH/`L1*d1%R<Ud>H2Y]#K(XVVImi3i\)[dihlUL6j56oi*BlU:_g+sfUqC'LGJ#[dpqc_tdg/8]UVCE;]-NK;F)
%B*3iA/l3K%0TP;:M*FGENQX'Nb2+Xb=Y3T)7WKb1W\`9/-IbNe(Gs]uG5jf4%IX1PC]lOKW#H>W33Wba'(7(RZ4cjCn"_!$Yt]<K
%g'F`+g$l=&EELSIf'b-:8Pu:q3-T;9/N*mIL8pa/7,c>tG4M+t2P0NGS5DuuQ,D0k6f!X2)0J<hQINn5r$i#bPP;!Cd5kGN!BkDm
%gQ`S/Cg(K!4MC2g]GL^-?!%B/?NrS:g.?NbJ@ApY'ocQ,@:.%+1INa6X<P8RTNuph4*X7c9aSka$jR1^/hI=q_4e02irk[3U\.U7
%HK*Jna%'u[1/m7u*iILiBX'Y<'nWCS*)Yb4kUq_3WC=ZAXl\Kk<*mfCFErmgQ+@s0`P=;T/;7'Qc_7mQg(;^:0Bp*D8<Pu1^Q:mW
%[(t_5@b?m!3<bM]YS7FI$B\ae6#:M4V+."XlYCXWOZ`rCU30gG@,*Y#jFY6Z!Jqao=gubDCa,C;LpWU*Zl:HgX"K#2=\%20,p6_.
%&ot91IHs1ArJF\03k0'ZG'c:<mH"gYN1h0f7^mZJap?`p\]RNF"An(\QR%AgK)gs+*bo6KKe+a#>N%Z"hcn(m>?[+']h]5]K,>Zr
%`Zg3X\F@dhaLrE@g`hG&Wa72jS)0q'9qo:g"&QKP*DY^k_E.2n++,'\<n',kM>\nmWDe0%n6U_)aM#Fcpb"uH076#d,9@Ad&)dl3
%>I4/iGUZMN[8\6\&]%11\%MjFjq'@-$_:V(eQW+2$%dmjQ7ie+@xxxxxxxx'':"V_BRJrUnV*(G1ak-0ong-'H$*Jon4SK3e@R`k
%qP>?u$e8Uar(GRiBrIh@!1d0lVLV$J^gn?=RC^=-BSc8"PGo776RUc5_gbb!iQIs/h$HVO_2[E2N;?Oi6a?Cg1A$nQ:01#3+3(M[
%E2p`8$*]Q+)M3tKr*)0"DsYX)pb;7lEKmED7tIDujK?3PEHp['$-t-4]=mZ_pu!-)KAYPB5Q:3;00aOW0;taH(Ba+eUfP:@=E@u?
%=pK\bc<KQZg,'&UP/)X+'6S8f<X3A>2R/ujE2$th/X,Cc-4pLt]n>.;=fK=hV++tsPmCKp,jtt.-G;!f!e%lL&1KkU!0mOViVo8>
%B)tl>IUZEgBJ8!LYE+&\Mgd5L+^<)?.C#YbMD?^.dMt"2_R_PP:7NZ2m;7e\m,K(uS<jNuAn--+"(1IY=-uJs@#)]h$2ie']Y_Ri
%Kkf7/dE8^SH>+JIq8^HC,+6p.7AVqS)<2^'_'M'1SQ$JFY]N7op#3Mj"[E$pW`F>%;+jAPU'TWdjL56Enn,*%3krP`LN!(%X70Ms
%RTCn-/$r.hs6.*0W@O!Z83O8rc:>R$\/1-Q=b;OH[4YXa)O\<r(l9Q=>87=qfJ(Lkd@/*<0GA8UJt0%`_,2`);[BFadF09b%_7'c
%5ReOkONGJ_pBf2<^uEut$<=#*o^!]tgJ<AU7QNsV6%+YYOVHXs8lOacoKHApS)aU/^(F\XpAtk5I%<'+=IVB>rs%Om\Kg[TYf:TE
%7=Paofac<3)U>N-cE7I`5UlE5,sB2$!^1aq@qt$`BUUUX(g.qVVQC\>CN!gU..P9JE&f3sRZ8L"M=ptt:(Ek7m"@`=Ur\oD*B(;J
%#]./mT2-7e>PMa&Es3470S7)2Bbt@fFj>cRe:'(*Z_KASTQ=GT\,%3,4eV9HD[;(^6&bYdE0gVWXG'`ep%V-t%5d7%?S&WZM\6]F
%"%:_^=jWQRb]_S`V-]C$Xgn&-<cG2;X?onZ?4hWX/>hJaB%WUkfhbS5S>f_F4-`1*nfV4X6HGhDFV31tN;I&fp<&o3#D60Ma%Yk0
%J6(i![9AE`IRVmo#*(a'Wb\hT[i+O8F5X%hO>@bLE]Hm>K[r[p-77L[d8H.(^na5u#a09RFTrf.G@]DQT4B^=UNq7I*Kng78\,9W
%rl@WGG3"QDP-Gtj$i;)C@VKV:Z3!USij>Y]!XZqu%LjFU&#:5GW'FQ)jf&nN"VM1g'hg$C9JDT*&eP_3KB,<"lO+gJDo1Y+YSh5+
%]dqqdnhQ5HV);jB,jXD:[3CX5LP%*$[iS:4e9#?,#$D>]8haA90"VV[8siXqLim`Sb/*<T1rq+T.lGi:-l28Tk#W93cB9he?!qrY
%n5UrK*HdrZaU$LdeWb&lG*/S*-E:Pp<8Anti"`Ul(S%0DaNGn%jdbfc/&`P.qIj"8nBYVD^FJhtiTk02JW"mh1Z-,E'Jk_!nd3AU
%a)SXjT])7!3(3](&Xp+O4VL[6'l;RSQ/kE4<0W$(Mm=YJ<TLc7YS(/mK"'LpH't?S?VLlu:A(EhS6!MsL't\+/t5BqF_.@V(.'ad
%7'a-e6:o*G&Vph4%,=;4iBWKU>7cS8(qNMh52h,&S;C/Rj<5(i;b;U.I-k4E93bAI5ADQj3Q:Ynf);)>q'Kl\=gP>o.0Y?XO)6`]
%hQqT1AhZPH\X5L67Y]Vdm,+jo,Ycl!(4#9)AW/H88EC&7R_cim]\(pQg_0<6.^cqk`bc["G(iBM((cdoJ6<`C>C<6("XNi9CUm3[
%P8P8)`Eu^1FgfGfQ_*4Np%@/$a3V4*=22Fqs"bJ)6Ph86D5Ml[)FV_cadT]/SWa<I*P)h1j[m6BB()fPph3E_1RhW(UfFc.'c4t+
%7CcJc<?#U:!OSLg-hn:0jVGr1*[jho`+]47\d)-a")5Zj<mk4g*dcWC.4d@E(>aB=n1Atnc4oGQTUq1qM@?LX?<[q:$^SGZo43Rh
%@fiC]"#[(9e=%EMX9[H[_9'(ic?"^BA-Ual86</C7bR3XO/6j$;[ji9gn$o8CUjAc)>1DkYdL_lM$4leJoN5s,>lRf5/Bo/5kQTL
%N$XS3!m]AfK+i3UDN&Q4%57eb*)de9$[6R*FE$/O7q+UN/=a3Ok97B*@bh<c\:asB3Ns[t9G-5fdeb.ik4i;<5Md%s`kYr8&k>;3
%'&JYmJ8,4'#j6F7h+#:hj'_`)Epg'Y4jhTXQQ7Afk_2j+CQ*jL"s^iUJoHKq5eR:t=:%=b81$>B%tqT>5.158_1EY>/ro*iI*ZZ6
%GqRTpLdKoF+6jmKh,t7c3!kn4*/(4TSM0J4FtpLae[[7U_MqXM!GtERB9XI?kV]Z$QU\`D/NG4mjCq92IihqR<^#m9N!Um)U9IZf
%YqS6=LHn[>%C8@+a@(*Y5)@%\KFq/HM#1K@$EF8+gt<N^Vu.Z-?bR(>3#+*:pQ^/\$j%h`30c/F>o2IiLD]rNRWUORIg[j\q'd46
%fSG`Yqd9e&!CntPlPP1^=BGt@4<\)@kOZ1ZI'Xe,h?b1_0b3usS5ml(^c;lAH!ocbeQ8dF]WXK"I4>`i5oS8L\Oi'c9D*#ONHXJT
%0g>/]:,h'-DkS01;ZsP!E%#Vg+qS3P:A0o&W^p9S.Y^'mC*)Ro:7%KkK^dXfZ8U[gZ+ppX8E83k<bH-SQ<%oAF&RL%NCQ1PM((X(
%OBW0k<DP0p@]Gk@!cN$I=!?9)NS/Z`C=&R;/h?g+Q@4okFglCm#P+#gS33Up9=$Q0FC^0M;M/R+V!VWn6\<3cl:@t9bH5H!^WSN`
%XfFrLNP+jPO8+$`Xs@#4\21K<p/G9k9&e.CPoRq_kem2N$/1Q8.liiaKN'81S(>EP[!`l,m2Ca!L6d.^N]W'"4_Adt7r666BJu-P
%DTA>`p.UAq`s6`J7]Va,Mj$hY['`QXn6Tr!a]WuGb7$R-Nm#,[i03_:6fD?do#\]$]FL<'BTRQ]0Um%.\CUbf#tKu%a]XfjC8.q$
%<D=3$h-p:e%PQo@"-P!MPl-'%\rXVt!J2Z=i)t9We:s.S@'%Mr!'Sg0HA@2b53jgm+P9Wd6V9BV<-B8N.%3EMOjbp!AL+0jjBjbq
%.CiLOK:U>X(MP0k^Zd:\ihsE#LTBeQ&,2.Rn"*CK(k7'3.9*39gP.YI7B-^Ir9JmUAI_PiH*$Y`DlOY_B(fFZ[Gb5h)UHSe&#eGa
%8Qa@Rj0-K/lrs;MJXSV1I1i-H!%<N2j:!_;!:U7**bPR5]+c!V(:]2Y4R#%j/n-N2k8^A+96"*9RQ"ip=\\2rE5Y2L/VH.$@"jrE
%aU*oJD6[B;#ph_Em2EcGpB`O1#:4@5pU0SB4Q8S/>3T*[._XNH,pW$4n@q9,]l4bWp."5Q!,LsWW<]io7=^G=hFOukN`!#]$eLi"
%NgVG?N/OrN330".%L(CE"\kOgeAq4`0bjoJRGN:pg4eNge]'==Bi#Zd:`X2'"U9\n=0/ukKs6*6CQr*2#4/kN*U!=K)Vc'-KeMCc
%[4?C3"C.d@\-R(sYHXO,UkH!fQoS3b"=9#S_$"FHP#,GQJL$.Fgb6Xs2-JJK_Q)aMIl/f/ZJWschn=mPR#AND[mpB4)]dF+];Y'@
%?"/pIk"5Wl<2g]M[E"e[ZEP]pVoW!jl3%rM%=/tZ]1^M[dr\"_I7]86n(GrXZ'e*L$+i/$g%@_jU+IAsG;E_?%Da$=^^gJUK+n1=
%@'s.k!tk[W*D9m6QR0r#]'OamD&5PIS">t70'>89&t2_-?)H6%B/B>q0)048nX^clIOl[kTsAl2':$HVNI`12+[].`NIu*\(;Rr1
%Si[UY(HXRS2VnXhq&IbD:-O8.G+rbUC7A8s9lD'L47$("9-4$4nRDmmX1GQi"IYAq#C!s%F$N78Ebe4boOA4$$0LV!ZO)ce>\XpI
%'.@.jGY/::P(>\(R(*+6P"L'f(LA<`LP/PL_<1hhVn=.Uq;KcIV!+p%^QjdeR`BBThH*Sd,^-+"O\53^-0n&o/p-;4:Y2p@g,+h-
%h8Z(.F*3iE\aJ?9p\3H'Ij4YMadaZf0W>U?V4T)(mR;#-,pdRh`eb;K<223BRLo1%e[*FGo4-'#;rcH\W&`ush5k(j>BRC:P`u#q
%/sH5)7I"Npe3Eh@THV4HaW%KB!tpdW2&SQ)5`h<j]-q0'89B'\$JOV4)N'bJWQ>8KJ2$IQ.2f$/j+Ls+Nm-Z1j%O"9&nNV]WM!lb
%O'HoXR,\T4Zs2ghnbcj%e18O4TOQ$F,WWD;1$\<A'5rm1)`Bl*Gb1,#8-,O@Url:P\p'=k\Kj4?'@#V^M%Y-R>2n3',33ZG!>t"b
%f!C$47ui*=*@_Fs<MYO#"b.[?XQj^qhpW;]@/qCZKl_usaK_l25u.6P#Y(I5D*C&.S`mY-_I!8a=6J1n$+Hihi>+`PDjC>OEkK5K
%G6rNl`2j8@QR4!f%c0+5figQqS&qc(c9Z!eBM@'8%liOq;Y>?4YnrQRg:E_W<P)>@)dU)%Git#eP0%U]F@3@4,Uu0^-IZ4?BstaW
%[P0W;G_/9.nd/QeN'h$<X]F8hoIDYf,qD0<s+R*,Qi<gTj;JQn/n#s7o+uG#CCHoKKHo!4>f>L$EHgg`p5W?t+g8>oWjtcI27@1)
%Gl4b9rpGs0s/dU#Q3:FfE@^jRSU>-#O)3otXqe@3#M-lb6Qp&=O&-q!kb;!43_.Ft)GX5V?/A26N)$,hj^9)@l>.^.lf9j7bejAH
%4:Y"-fijaXXFqa-QE]n<+VcA]>aS16_@MQ3)dfI2fnSL>_)tnG8Y+irOEVVa\.)Q\JLPU\0R6]o1oi'@OtnAZbN<"$R8u2sW_'Uu
%8cM,AChKJQHfr:W6`@)4AV=IEJEIcrf580:fmE_97A7%k/5OmnKpf[Q!je*ZqJf@j\\`a@EW:kQ%uR1o7H?m7S"N+69/2n2SP:`m
%IDkR(b3lgY9-j:h`5./6jo)hj\kShJ/TFA?F2+)>4.CCW=6@s,l!0^upA>fPc<,5o:NIl)\s"Zc8g9UbI(n4j=q[>ueD>#0BHMN^
%N,-fr)fo+MHVYk9moYg68p):"eZ9`@+tOO')M8s:54Msjmp!-YLM1*iag.!;D@G`?]Hld<[(4%[+%Q8m<]rX44s,p=L\5W4V3G![
%&+op:/INYbUc.Dl&6\m^]rt]"?";/[q,X-5FK*HR,HI;6(A=a^N9kJIB[DSFX7VfPpJJ@sS$>r9`oJ`m]q%fRoBAq9l#Pm&#2a%^
%D$L%&1MH8rHH@cSiS<&r3CK_(&&o4o=_r\jj9rQ1Q\8B!Fl0[9WAaaGnS'[RV<b:H_mo!OCHQbL2GNUD]!&6GZF7C5S$EF2UgJ)d
%0R7ch?GkilX4&`3\'k5d]cLAsEYEptf/?SoIgtT1GZCS'c@3sQ3)WgX?Pdk@Rs:F`$b@6bK!+C]L:)\qc3[\MrSur*LV*:^hoSAQ
%F3BWK?B&0?]j.VPS@J;Wa_@_W/b_H,V.R,OHreEcK&F[`j-%?HSD(7O*j"qC/N$+.927C6jg$,?)pWT*fe,5IOYcg?QWc`PbJL0m
%XCP6e4qT-rD?iaQk^h5("5/Q!@[R?GW_#.FqH..WVI^'b5:,b"(.JcWA)i!-jLn2Qp6XF0LWaE?:Wq7qL*14n[h;36//\@iriU'W
%qs#PlOm#<8E7IO#%G,XF!Aa=:%7&VukA8s@e0tj:L5J$kUFkeL:t"#p_A"O`Fd-$t?gLhJGqhg[C9b"Tdk$3cTR=6DM7%S#29lTX
%XXHiLkdb;c4`_HXU(WL2aU+]fWF\7o>g41X/?Ebpc@XaJlU0sO<VTpr_Z/?>nVdf.8uh#:cP(?2%Og+E8T;-E&/\\",2d\_6kg:I
%"[tsIKEd/6HED/g9!ncgmS),\Q6?rThtSt0QHc\o9%LBjYg3b/FtsZ5o"p[`ZB^]UJnM?2bdF10$;i96WK2&f`(N&al.0Ca(11@Q
%R&S-r9U7JXfq%=p)i`l1HTcMs\083Y;_:Ka:KAXq]^3tVPB1h=AWj@h?FZcUND<[??#j0>p/R12g+S4:39_>Oh7]s@k<4!$Zi!.+
%:0=;MQmIEq/>-k^g.Zk/X*4kSPNH\;I!q&oi:CVM%)R)p2LZB4,fUI:SGVMDkTq<,?r09;C;BY\!<j:u!&k@,@tb;k>ZBt)C)9p`
%/=]6Ol!JH@!'q9n/c`]o5huEL7fZN4&BqNX"/psO;PsMuW<p;3_)XdJs+@9@=iK8Z0u,`bfr7%u.I1d<h#_a`X411/o93j4e5:`i
%ohH4KC97apn]"GDL0"Q/hT7Sg6T2p4+@0M[-4on#mU1&%/k2d#0)[&0\C6V^=W-169kMSkGF=-0CU3?l11u\H2erK]7V(>F^`%Z+
%q0>R9f_'EbaH)cg/gQR[I@Ll8F(]NbKoBZ>hshjhW1fbhMdV20]TB@k4[#;!_!HFW&SWgbK/%]3d#3p:2'*2Q5%e>u=D\e!VG!T0
%NY1$SUe9<:`"=6'1$N@CpJTI;7HB(,aPN,A5X:Qe!"j51LgG#PPOZ-sA9=%`'UL4(X[;W0=u2qs'Y.&Z`'ul8C<m4ViPHK1p2Y>_
%WJtId2S]&d)[[V</tCIt[J5-@.*pR9(o)$QLN&a:*594_l+V3cp1B<p><ZFR71)\sN/rh@:Zi6`H[&kE1B*hapj.h4[d<WeiEM#u
%'d&PgH6&dWi=NSq;NYDRF!Zs`E^En[_$(Unb'UBi?j$S@.N(YFJWs,!fIk*pNEaI/3Nu(JaGpN0cH$/>ZGDCGIJMpPU7ZmgQYD,5
%%'2N-_1,^,Z3]<JZRi3Z/0'CEYj-(V<LB+VPb:<F;4tkM'<a647UHcY5Q]Yo"^]i<?G,bK5VWC/irk.2(#D=Vl3F(9=$JKpjk+hp
%T`@l*!3.!A-P+r$0le0fc=aul/92demR,8bq';@$`pYa<[#^?+,$Z<.66$[Fooua3AYnsbo59DY`"H?`+0GIm7P7@Ba2Kq!`RoSn
%Ed3MTRuEu/1G3QZY)hL^W33HF>GOP5`?GkiEKT/Fi58DM``[KJj.lbMlS;LuUSTk$$CKQ1!iEm9CsB_.qPC,oM5r4\l.8dOXhr"o
%N7!uECc0Ep"PVR+>8qCj#e+(DgocFf/i/pjX?^Yd/^T=3PLiet<Wj-D1_4RY'g6T*)<f$)fpGQLEY*bAXQ6\$CF)\M2."m/5?p(`
%p!@oBZ1jl3Qag'9DGq(4e4&FtE;D.>EB8WDaS6e6Vsr2*>n;se:<*j;jQLU*l'$bQcJa%%Z$iFXjF]>NUQ`k^Gg^np++C#>LJ&-*
%.,jNQUS$^>Dmd*__*+i(3eiu)btd2ZcETGO.;Li@Mp$VA$?Ol]cRpXp<N^RM'<eb(Ej4r:`$sP4@AOX`lf(SPL:aQ3#EHl4?"!L\
%8=[^jF6c)"L+,hQV,TYJe%2UopZZ.JFm<?'<S'Kkd0EMhMJJrb-KcVR[YpfU&@H7?YidFA.ZQG03+g9"r^WC.;s]VdqFCg?`+:)_
%1dd3Gko[gj2[C\s!!J-Ie0brnO<F@;VEKcC.qT$qp;Nli,o%KMn%;CU<oM^L^0d<O>]TuBP,9ot==F'P=_Z(<[.S?bY-O1Ap-RW=
%O>2PH"M$sahN5=lVX5:LDB(Rl.*.mn]Eu[6DOt.bI+*qo<_YMaK_76M43a/.]f"QuC$M4M4NH2b9_KHu*C:?1pQ>8p$pO:.]?LSb
%dbm*WGFc4r)<1Q&*<HqBZk3mpBaS49"#.u1C,haMn'o!8##*%-&Y\"5(taPjBD1%#9hA:ZPL%/G7`jDZ^b"ZDZ>>Pi.>l6)@8\XU
%b%:Zm:hW+$':j+]cGuhfJ4ACb5ebBS;u";+;pT`CMM6BmeI&Vt.Dq6Z;Tm(i).(."$S^&T%%CfCEd@-%b]btBc(iAb_!Ip.dBBg4
%.TK8I\ElX`RknL"$^DEc$%Y.;7lS38PeGDQFGEOG+iif4EiSp\M(Z&VDg"$gl59I_/j?Vug#?]4<&#PfdrBgoakoSPgGTB"N<uR3
%VU!Oe92V+WSg``k-+B[$qE["-!=q1DrOLoaY-eu+Ha.GtO"2()0%oe-a>Y%OeJ6.d"3'[n-Y-`Y4p'^V'[@MA[d9`073.!6X@&'f
%o`sZ"6uB*#3;+h^^8eN[a@LV@3(BE&7?S354@RP:P<(GSP0;rkH:bCgpKDh!H>pG_R>j2o]+`6!e@@5Umjl@J[Egi.7;dQ,nad\5
%$X_3,0=L%4`]WlMYZAEh_(U!!3sCmJ`*;'NZ0AA=+ojun`4#5XQCg5F/t^,Y1FVlIe5>0^osKLM?pW'fkH0>bq.bn9=//"5bRbkp
%Z"[\%)Xo!/N[6N;k)69:M;JZU(95ZH87el`[s4/h0=&loAOV[pH(1p_G$2#P3_Fm;;rFqkRu`@Wb837TF/L9@E,0,kP_:jc"B2h.
%(`>LJ(H7.m.CLb'Bp*hO-`J\3?H_7s',/<1SID(sZFM[[@6c/#(#RF`%p=!I@Xam;^FA[!12>=u:g0LRNR+Nr)N!-0B2.l\02/js
%4EY,f\C+Vm=K8F)\F03j]Ll(ejXuW7>U(R8.kka>EBU[nV$lmI2)X+si.FH2Z#afGJ5aV8<HG`+2G:i;_-\d,4DXee;:EYnDddHu
%=R%3Ao973)>6KllehFrpimjP%XlbKha]c[iFT/BqZ_CE%.n]IjR^R>hb)9SE'jgf!a[0rD3F(N3-AUWq*UCrL$0q(k.;7<AFM=8W
%M6^C3+Zn2PQDhX+8+H%HChG+5hi:p;VR>Da^=]#^AlH-S6.deP]p;p`iPu*B$q6L61RXI8Q^_RQ;B3NKVMjRgXR2ociSTNG*@n<Y
%_N#8<o17L?h?>MT6$XYoCpteH0:*6Pb^-iXAK2oH0-/lsXAWh_DIH1.So0Z2Z02$/+XVSo</%T,S'=G>j'\kOQ!N*ec@G"Z\\k/?
%,t_7BE".hC5r+t#_7`JR)cORl*QZsUL2S@(a0+p0b;>bZI4f-#%b$aX]PWs6B#Uh%X'l[n=r7"bY#-1.[k@6R?,RZq`Si5tfL]L`
%=qdfS,P>8X/.o!dEe;o[kQlOPU,FLh`6p,D>SkI.@=_e=G6%u.1I.Js]J-H1^pY;)gS;P2"GMYg,ANs;7-OuPOqSQBrDFk:m\AAb
%TcZT_p>g_-*G:a0F?4(UGoTK`b!UU^mF5'hPF6e+)PC=[3>:afB^<3uLNt[oaZ-#$Pj1Ub#*ChWp/^-VKg1D$s$jZpR4"W`F@rC1
%/NiFM4iFkb(;@`t^/]Eol_igFG-Pu=g"p=V^1F3(Li)/2dLV9Y_cdof'_6IhPqH9]0gn`@>i[[!>pkZJ0H@l2E4c&L=G8UHL"MSW
%$UsX!Og(HYKs0K`HB:Bsk%]4jIQhQA0"7oD\lXr0c"&oIBK*)2_<f`/")%=r9/]tb_4n%HjUD]]+H9/=>jj0*h+LE2ZIjL_e"&Id
%WNW:5't/W9l4rCY:0e&[,TqhDW/puk&mU1Va:EF>O<E*hPs&c]1TL5r6teoNEM?Sq&NTBWanaAdHIFF8BnHBLpdW,LljA4VQK/,D
%F4`SQ>fq*h`AsLCX;q!q.^Pp*l"P%VMd'#E*,Q"HV=m+=<C0Z.lFT4fU9UOC!IuSm-5f\o',&s8/tsSJ7@*OWhg!bbKDpWYj+)Bc
%$XQL^Lg[`K@]2'l]@*o.%D1#\'+MS#TE>Y7c_0k<]$?sAHI\<8\!/3IF6)uS/lRn5%&XUUlAcip8qI;:#SID/J1;+#GD,[B3'ZVJ
%=2LJDMbPo??."0FBmeg(Xu&M\mR9M#YlbG\Sm8`A7XI;(LIr^B,K2X(DbAJj*DFbnojnU[D:ZP!r>@bL*)$\hB57a5C)RRdmoBPX
%<mWg%:jk!:31$%@,-A;3$u!?KRL]Z92CFFmZjXUh+YO7M,U]R"Eg_Y3P9&d^(+F:FF2jJ/mnBp&Gpd3[ED_<)[?IROVnstf8-Qt.
%#`&eU",=jsG!=AJ7k3snE"GA40QqOh.4hYL(X&,oi4UBBj4n%$isqu;'7X3*&`^f"S0geuH#_t!ent![;#E%CI`3ncf@Eg?cBaM7
%L$5$P,nlE]T![fg[Sm$C[M9L;D6(Wm"lWn%d:0aD3`@@W&N!9n$B'W;R#*Nc'%&NNCmQpJR,dT*L\1GZIY)n*1(ND9k,3Yja7j`.
%pSIJ.lM_hd^pbp9_GL@MlNZ5uU<18D*!HC_5.k,-ck')eh/"%hki91Y`6$T4H.ag?Ct%1.RH,p_)='s'omD4S/:R)7H57<.B/tJc
%Cf#d:L2`(q4<TAtDdWm<35R,-E#q[)TF&49R.+5!!NXRg!=)g<3,faCiGelJQ@aqs8#uha/-@16JVbse`:?`6-7C$F2B2do8:C@j
%YcL%FrZDbl;rk`M1Id!S"34tbQW9O#X1[:[fGb-D,@PL9m#?\3Og$bWp-upU8D)gUKI,?g;Y5JIAR>@?e.<sq_lC98@B$?/(;g;/
%e+Sc(D;U0.A3M*n_AP2F\@*"/q-&Z<9MEW5jN=i7YM&"tjt]'^DVhItnCSoADi6t_EHPIHOh`$ejT+54clIN67)MMe8:g@>+:!P7
%R4,@,.9IRI_a,?ILVe4)$X4g8o;ER,LXo2bbj)j-I,`E9*TWPae$3\9E/Z0S/XO<.MUAku=Bc0//ISoH#\T&l8NHB='1IrUd^U"=
%Fn0d['-2j4YC,(2WiKO=3hOArEPt0FF*?29ACjkd>mHGXWq``\`HQG/i`/6M"mE@iZTS<%"uJ)np<$L@#4L*)#':Z4^6[h(>gf$@
%)p#=N30.AMPe^W0qiqDPcsIfq=Zicl+nO]NLYqE^ijC:aobK/1A6(YX_K<@n;c;CbQQ>RP=u^)`E7)6ieZu^FQR!m->:7CX5A<Yq
%6"7'C-13Vj9.XD+HO[b'lXJgN^lk$N&@d6V5XXgjQ.<NEd_Gs1UEj[j8MA?s0P)S@e?m:3V/jdXOqCj:---OQh9ZNZ8.]G9IY/h(
%bY_D%O_C6j1fgDT$8a[(pKCTYO^q].A0Nk:al=?-'E#.:Nr"942Z!Tk1'`72d-3=\S0"/`jq:)36'bl!@/9=To,R)Ue"tZQW?-bZ
%]p!$:U"Rj?=45lC?4;'F6WQ&S8=9c2]HZQ4#tgo`cR@JSKQObUIC=boWF,fPZ6a-qSdDs.g,0B&%:`<pK^Gn_h@,l"0WQYY9b#1C
%d5X$"0<inlORs0#<SY_M,;cI*8F@%W@:1$CgK.4]ag5M4-u/-0TjDu9NGpr[(_p-kB<Y6;_58:WQ(FDn"Cks_\M(hf,GDXp0t@kC
%GU<ipN?dDk-W*sO.$Z'o_DoLPl@B<PclofKT8s+HIQ\kZH?%cG"BA^9>r`aOM6h,3%umG5*"P_(O21'u9n!j8,']'*,#U5,7tk#"
%E(PI@es4?.s,ou66Te`1<..E!-:ANCI.40Q&<ieSIh:u/dTPYJqd1U9Ae@Tc+N^\]Mj/#V,"L#<O*HWU0cWSF=>C>G4QnNZ,!b:\
%a2g:?,!Gg]$kZ="obL,oW,2sN@P2t;AsNO)2MSe%WB_/lfm8Ln4sH,ALl4A`XFEdd42guMeD_=>DB\?`il*8;#q<P`8F-rJrBV'/
%&F0ZiDBLS%"'PJN/DWOll\BW[+P-n^I6Q0@,BEK[3-m,]4<iquG43L4Ff[TEN2teS).2m']>b_;(ouL1QYQ(%*ggi-D)Ir$FTJS2
%GW'l_7^iB^N?NV''k#!\?+r+DdA>fZ"%PIuk.NpXaWFWKh[*Z?/G/_DYk5sYb=^+Oc7VR<1E-0Ylu&o<O&Yj+a7$1rmF)Kf<aj<(
%qoXWjbMnS`gA41iQ\1_j9tafC6pn_TGra$ZCm=Kk+]"YM.liqr*KdA[f@)=@PSH2ijI2ON?.H"!=m(endZ<WkQ>5g27rMW0D2Z/G
%n[C+L[`..4ptHSaqq^84d4@.)./F$hkAZ!]>+]a#IY"XFRmaD/@eeD^W/F;*lu[!:ljBmtAgYb_8?CcNVU/!C9&t9J*5Hek='n/!
%h&9\`JI:!l5r.h=eR:-s029gE!0%nPO<u1_&ktrjQ3QOQgmpAh2lR,;,'UX6'D*.HBZ]kaGqg]0'0R(nlH(B!9(QHe<)7JqKfi/"
%jbY`T3QZWi=YDXl72;Z'd%$GdBZ;L3`1@KZ0acZOTUHJ"1?RPW)cTPNSM:k[Z$=2lU"3\coiXY+FK1)NTd?8<S3^+qLpl:bf9=0[
%ZACW7:fPnSbnN^jBgiEX]bGS(f:$$1``+aQ%]"lJ.#f"VAd<f.]<J2!esonYYnJ\uFsdSd7r\XdqR!"ZU@b:X*^qEPjlE0WEA""3
%+PdT%,Ip8,OPn>,'rc*co,a3+hCNYAaXBLUY0>^O]*]c`p(3t>.4%8.8OJYJ>RjiF%a)"ZnusX2Q1K'M/M`(ZUO*F`]!\3Cf.`n&
%$bCZo'=uGLj\AL1FTRRf>M.^3".M6Q-.XrYXg)eDQaMb7/E:Oc:TWU5hcD'4(VBUJ48l>Yr$GabmYKMX(Hee.DrU$IN7agjLD;gK
%i/#'mXe_XgL.E0,M\e[h:r,IE$BZXI%&&d;Z"]E(JgFPHYCX_3NK(0Gcu.HV:4Ym9PW#ATg%VdlPOfBFC]PM%__Yk55YL$#<l1`[
%=VT2sojnP\SRq;+j,hEO-'Z^dg!2oZ\0>sd<0Q(bJPt;O`HTae)9lbO4le`YHKRl9!_mrA(L/>%)]IXi\0qd(c>--@m_YVTiN,pj
%'1.rj@6=+QTV?C_jO?N40FZ0gS>%Sdpk+f!96\Gl@6SqeMKFUn!&$EsIq892>kbgnMH4t^PMN5;HJIF[F'E.FRM1I>=$(ChW_+>k
%OD<%M-e\EJEH]-Z:M='")N]()1,eF=6LE%H$GbDcbX*YWU27QdL$VT,)Tc&4k>rLIJ;^CO<X0]+_P9jg%3=09a_nc]L@\Q=Q.:9M
%Lh0F"ji1NQHgd1]MBfG'+KG`&cYFfl#"dFh\X^t_KJY@AZ:gP+AK4*BS&<lj0Flco<OA;kQ:?I@`nX")W]>00BmOkM.nOZcpF5N4
%!nD+dWOlW'F]Susn$Z!`\oFg:C3QH6;Q7PXcQ3<U]p-e59V+m5TUsHiV;)5%?"-93(qMbKItH(dDoX$=>+Bf3bmPhcQ[fsP$pVV<
%FDqYPgJ_I;^Jf8\21;lWnjSgGf.A*FGfr?78l@rBrOFQ-0e:0%>Zehc31VVI:.7E054jS+T&QKT"VpVX7=A&>\W-Nh3Y!W7d,oN!
%%2NqY5[20\-2b_n8;kYrPUdd_Kcm=1dEaoRgPMYZ$L]hd51mY:nqK-IW/O%><?qr18$E_\71"toAFVt6%6A"+W$S`&`!b:t_7bmI
%AEsCLc88)=gFSkfd^'>n7g'mA;l"to2%('-6)[bO?q-)\b`JemQ<*$snFX\`[ilH5L(Kg4PV&S=/Sp^b1\D?9I8.cE#,i4WPa*Jd
%q>o59"K3uq6`VTLX;R%_P!$!q3\b6pQ_L3r,U]WU3EL?V5ej.*K"QLPks62:^(f\l5c;I/=OTlII7M_rc#aZLF:\k\h^%c"PG`=0
%,^scuN>GlK/+N3a9(1`Z^3m!rB8ui/7o7Hm^FflrV>j-H)?4k,FE/sX1<l`-$q2s5I(.J;+1M.fN.6d+**KK%/kU=Sl.:eKDh\qJ
%GcWls-2VYL:+50HmeE-]To=oRi&&=30Uot=N\W]?mYl`K22)ku6(%3d=BM(12gA,!4q=W*as-=RSWC_KBWOKDZ8`n@,G8"?AhI\P
%b`]IeYC\DQ"un$h=oI1_CfMkJpYMt.8HJ9*@#G`glsfueBlI&uk&P0T&#dF,.`>ST1&f-!0kW@Q&S#`jI[0cY=:1>l<Vhai6Ydlj
%,,!,8MC>?2"b\HeeqVsJAOmkO6.e"W&]\*ZKgD.<2%?m^fYZa'5^/B7Lsq&k1>79p,HSVAe'R*S_GrE!\Rt/m`_I^J^N2fM.o3SU
%43t@8F\>`:iBmAZr9Er0Qa4%=:F"?h`<W)Og35`NBQgbD2MOHJR%ce(ctuTV*)I>9MC>"971ht9JnmKr?LWGWYNaT!U/?M4HNKdL
%jf&sWs/\Ur;mB%)CKSK`qPf5HgTpp(NUnXPfdgO:Cj[+qdYG]>V:+C[=p:)K?nbP.15sHOD2?f]-e+q/5T:oI"\'\G*?neqG49*>
%L:Jmi&`KZ4[AcP4Rn6sDdVK;NJXN#WFD-o\_F]@D_6>'m)H(ZQG)*?P7,;3"d7Pq+k9(0UZ<W*VHu>L!Bc2V^"?KFMlK#'K,S+44
%g^)Y9#`CY#``Emp.uIc#]lkTH+nO7m_c@G3-JDeg:Y+M:ndu-fmsrfc1nBI]#XM"XVfT6P0'EbPg\<$d]3%5V@dHZ8KDB;r"K*:=
%MkUeEj0p6_FHKUV]G`'H@$lauDEQP4%(d7AXM@gb-P^kRmhisrZrbYKKud'aRW^2DUYT_>XXI3JCYGmsR"(Q!9pQ&C/#?N#R?s+N
%r`g=Ab.(?*ZoauN[S5A[>q'i"S3[_-Q`MZ]eK:]2M@>]5C8DagSlN.3*9f@Ye-=2gd:X2@2@^rHe6-G4Uhu&BA@GC^"pQGPc]W>"
%ZT?CmIh0m=Ja62%Sn8SRBJV=H5G,qA&WBY-pJH\f@H^ntV][Z#MOu#_5NM_%]I1q]_%Jk,Jp2:8]lORn!O3kGUlXh%i37a*%P`J8
%hd!Fh9i?b5GU977+0QX9l9RZ-P"J842K1cdbsjh'g9H71i]A(dS*Vh.:r<o]30llU?;LlBkpQT12<BFV&4Aghk1aWJr1Tj%Tq"7F
%hA>G=Z:;nr"+b;OV+91e2&nhb=A0/D1D<T<!Z3M"ZRRpj[W#:>E(V6C[3`j@jJ?TG]kq/V[:ATWJPu25@]k-p23N7ES-0RTnpF@f
%>a*n2Krd@u]a@-V2^WQ.jdC/e;JTPNS;I-6N5f%D@_m[U\F'R!h4P$P2-B;kF*a=ckSh+76rfFPctq8eXj1q29b]I!9$WX*X4A88
%cS^=rIJpSFfr8u$,Ykf\/>FB*0iDrm$Z3+1O:7;71M>,+,[-YsEs?o:!)64Bm#5"[N,"TgQ!0m931%4t^XRRs"s;=PAZEdG@iS3q
%X!o&NcD1)4hWIkO:=U,hG47?J<G@I7og2YC<&W3*hKuOAO&VG7fdi?KI.9j0QcWFD;aK\m,kqmZb1h_@6$t"N%1p0!CW];tP$YUB
%7GHbV-7@74DE5N:g&&_I-T420CMg_"CI];S_'UEB2qKW-b1ISE=$hP4^hG9/2l=Fl28X2bW4[-7MgX;rFKEXg`MRXXDeoAimD#e%
%\$c7EpA[4VrRJ-OVR]0!CD$K/]cn+L<VP)cXQMG,.X/_PjI.DGfJG#0Zp&m&&;!M<.=Eg'I0^*^s6?E,\AcAAatjRI33>Cr!NeM]
%@n/ndghIt`Ta)SdDRD&D[jfcmesWBpI[V*JP+bGS1ei?U8ZoCm=&mMFkZ2\u#M#h(=+b6&Q)g*m33eq&>eoef%5(7d=HNlW:M6W+
%<]3gn6,+c5f6KGX$uMo9^ENAr$#>lM&p$]!Z,?taJF0oNgeL4h9*91CGK(seM`0#;V6"7.pGh$#GOsE!gT/t'1gX->CW3E*FgP[$
%F_M4bM`]^FPqoHXkDuFH1*7p4QOE!1M4'K`_o:#a(IP^t/+7G*^7$7H8pHU:^/B[<hY\*mp_#6)R-sNMmQBUW/U&iF\b"YiOc:Kl
%&4A_;8'D&fYn-1:p48H0htY-2l6i\\!X\sO_R*OUh4Pc,>J\`H>$Zh?`b7'<i#XIf5lmFbn]jD))c5l&'`<ISS>#ATo2"`P@pOW7
%$-9^[nV]L^cqW6(_8P<mbXO23n<TC''lM,2;erJmX:5hf\15\o/@;?M_U9FagfA]p/<o$!o65l03a>OBO'?0n6OQ]KISXGg1Llg9
%UFj!g_TQ0XaR):Sfc1m.dD*(H,Tqf.Ns50`81>M>5<BPBhaFuOLSF^s#+18<GACXdQNGDn+6]>Mq(JK?RnT@P1<P)c-\Oh18X+]<
%7JUjIb(""m_(k;PLqc7No`?g9;2f&qX?IX55>IB4[1k\=peA7cNY@cS9t3QN':8Jg\3l8iQhX:b<CkpRj*_r#l&n>K6WPk[2JIu!
%QXmY3LINsiV/Aq]Aal)R"=K]C-Wg^7&t_F)A2-a;QVYjV,#4l40)MH^*a/fp-[4WZa;G?r*e,WmbSp+Gr4iDqF4ihi'b0NI\W!O,
%<oDlqBW;dRfm*V/MP@&$A/sZ>Q&1,ECnTWBD3^$0hEsQ?GIB>Zm(&?\+b3iBf3K#tY(>mXZZcql'l&]=`2C6$L8WWe^a+T2#=,@%
%QQ@@!)p1WVKfF/jKqWFD2k:l26hIoJPU@gK?lV+M<Ok'mhJ]SE1Tne\2MRtYC^us\K#>3BZ^W0p.&4ep+>=W>-QNB(TM2YTTU1C8
%Occ"BA3lR`@J0ekO5P*88-B>kB>["SgoZ^h@,:jCJmgu(S!!8@1Oi8JO6^+3$g&sqX)PpT-qgfRV[V?KN#4AW6N3!!nuG^aLH(ZA
%AgP&;g(g>oTl,(KDeG'AC>Dn]NbXc-'#q`q=$m[S\qiWEi`-YGSd+_")oSejZ'5CC//>7<:_a*_S)Pc^9c?d(BAn_+`d/9a-c(BI
%gJEJ:AJ8I->X0J'QBXGI+&_a)%E7'@CPm([$p7L)J=D`.\PqiD[C<'pX=7AFA*5Em75VEgM@s_R_1(B\-\cORIaO"SK^C%"+5(sm
%aH)`Aqi-C/]Ak%t#:]0M\l=%)Hj$7H/^<uiAir=^f_h6pofW&q5_@!AW>[k@O^OG"m4?6TCJQHjB3'eh%n@!Q\7R5m`XkHSNii]D
%9T'YU3WW04m!3h-jAnUY%O0sVkMmJt)MhH[R/aAlP,oXlQ\,9SA0pGCke(6C`[:\PCr<*QKpjh7Tb6nqX>@g?!uD_'9CPrF^9f7O
%7+<KtT2AmZE$Lo%8[cR"0MbRZ'51Ak>N/A#&gC?iIj1g,cK&3^)i\N-OA(L_V">"W/kW5gDWadeSpVr%GU2T9B;6lkF'+]sWP=$G
%7q6#=b5#O+GUn`9=b4k&@N12k\VXkG*4jWkjGYpNX`Y0%nTF43C@X1je-aX"HX.X+kMsa;9jXcPlCE^kfLDBA]`Q@h@np4G8]eoh
%:)K6AA*Sl$(l<Oj''!BPL)ods>N..k_EJA0Y+l27@sAcqo?Nhr-SZH9IZ0l.S5slm>%!U&'*C084E\NO6RRrdQK_O;&a\c28#K-o
%Ct3l^ibTjt-*^SXX0m__VDF$RPQ4h!+Vp<[lSO`G!3R[4',Mga9L_L4/_M;LoFY<9Mi?=L8NiE3Xm]b%lWWCmb*O!b;9%8>E:/j>
%b!M@a5QQM*$,@A]'U7tMT1'tdq&U#,.*EbZ6:,OfGH7^GlLl,E97>@af0DtIo9==a&g.ki.$:T0rf0kqe@*tKP,d!6kIN\'TqcD6
%+kOu(!3S0gN'_As536Mh$DGNQj/9g_2dR_?2K9fD07/gC;UuedM6WRXq=ReIlW/8(`B%MD5$1PhYK-`WA4fTGH`4"_h@=k2*O@Vp
%CD]1QTdqS06C$=Fe__::G>dC6/VtQ*AkEgnD(>*J[b$^pS)R*k[SV-;$EH\kd<e`Y3qG7aOC;^2GZCWj^,2\up\pAAMr#olYJ1\V
%]=>^VWSS42k#.Xk&IHXJdafg;cA7aIKGY`WAN#$U?S=A%Eb![hmmFq!'R2uD0SV?OFGr+(j4:#;PiBX?]T>tTdX+T?4H6JZ<s[Fb
%)t,tefJ96FE8nK9eB@3<R_Q*dfLm_t*.sTCMo$W:imgTd"=c2MAM/S>25tEf7`'W@$@`bIF!eeHS7t%"*3Bg6i1Q@5-\qMT%,#U#
%oHVC8"Mt`a&48QbR7Z+))GkdR#6Mbsf0DY<H!Ho<)+lj]*d8bS(J65f.$g6"b`#,Q$CG9g+p&6Sl?bsq!>WOB"/]%+E'C[F^n?SX
%@%C$TRV9PnSlh$&@&a?.%9REkj\2f-6J>7J<f9RM;gsg:ZU&OdL6ugKV_sVqM_g)DLu:\$X-0cB%qKD,;5WhdlsE+jpY*?DYdXts
%.f;B-n8HKc^[MMWku#$L,GAlE=+.b^pg:bPh1"N^N[d)p>ZtPgnb?o&Dbi%@_o8a*EI-cAPB&,ncKoX$WDpWuW$2`een.Mf([".E
%D5e;IN(O^@AnT;Dq+Y49&=X,PZa"NGfKN&Fs$jkSqA'!p#fN/.h4;.I:Yb1>Eho84Rnq*=F(in&DcPGYDRi9^!9U`OE]Z`pdHNiZ
%FNqMOco[l-Y`W%*[ASdZ7>84Pn)\9EJuF]8PF1%Rcor:VHUmL4C2df&>+<2jXmYe(lQXgTkY:NNl^)hl'(c"ec0srg,rq\3__r@h
%e"C]'&6'I^6b/r)2uFU$qlq[L;(0]n]YtcoEK%K1&sY;uirN>H+X@pLOrjD/,CW3F;R0_eL.`sb67sgo8-q^Y,_SQFj81i*j<8d-
%=C7S_0\E0J)btTh8V6WT.2Ku:-<WH.!K57h?%cKO!m^HONq%D:6.cJX3W"Gh#4/o6:Jg`m*XGU_]g0OA<.M,uM,,Q(jEfhlg_tT)
%/+WJ*`S7^D:X9ZNHR9P)FR[6,Ob0g;2j@JKSN0?1PARQRL8$1:&0qc5ruV%0]\i?%];%%[B0@@Wc1P2HXb#NN"@:"L9C=f#pRUpE
%I@5^Z(<Eh]NJg@?g_F0d9sLDo=P&r'<8t.qgag-LFa$Z&HaU;eL'<ZXX1]R+`nG!f\E0uH:NF!fX$2k9dB*>KlHP1nAlLFaEgbAr
%CqEtK5ffDVJAZ8$U!2e4Ru7Icaln8dK99Rgnch#HT(L()4l-:'5gAi=_-hEW"N/ai?/*5HeNdE\S@dcbPf$^i_qS(6>7,:AiGC#S
%A"T(b;hS;Fq_!O!QZ,LkDdUEbof3ed2u/^<d3YABkPNaT`LV#=TuU'iCnTnB@:k-:0d>cbLq!VtP/N/e"%8Fu+qu<>OY;qR'7U%<
%O)SkNA0!\;q;#NST9=D/8H9S5c_f*9adhf%m`ZRcCOJ+.GtkU!E;#AuW6Hk9:*g'!.J.A2[$`ep"3j(X$2!2Hb_]r&M7q'qH@(HE
%aak[?GXN\SRM>'AKftsX--ke5$.aO75VY0.Pan#f6VuXflDb`).p/cJqLjcEQ`LYY:(Fm<gaUnti6J%bC`(.epW>9P[fl_G.4_G.
%a6<'mVB;7sKR*R10;>U:<l,jA[igDARH0E4eB`,(bBgG)L$RE"kgd34=A:s'@P9P'4>)&<V=6P+8X=[aD7qnm,G3tSk?*hhX^nT4
%>r_<4'/)B;>a/3Y:VA_;;K;Jt#mpF'_`Bk4V9b1@FHY'V&!)i",MZ0H6L42"^NjAgR#W\PS6&I+&jI\*j\UbjESY_.?Ft?H9a7XY
%jQTBAHsPgo*B$r^naR[F"q+bnhD5haJZ<\:#&CN6/23?WoN9sARsct>A*n(j=r!P\$&)t9cIfu%Z=PSU[p="$l\o+hM1\kVFQ,^g
%kOh!uZ@N\0_B]UN3P2qRF*&,Xp.[N0>/,">?udSJ,,ER[2Gb(o@H/J^A$bTqN=/=#C"Onb::7HW(_@Fa[Bgu70fDAi[O^2a4T7D5
%GW_$$S/an=$p/FE<&u67.lqH^b$!l6VX=09fG3?k^.ChC%o5.[YBUPfKn2IlM+E&H;EMV%i&bkk\#0&\knDh;HNT6>Ou%=j4a,4a
%n1b-p8-O)DZ,R_UI*bP5\g`un9ZQsJ<@an,.FL_K2N!dI"(a]51k2m-m,+<6Z(^g;QiV3$Cu/i#Y9a/,L2nAV^??RabPlFm/+iLt
%h6C2='pn9JBSX*VF'[Z$-)[*Qlk(%PP(efeE,I\C9=h?#SD>UMNFb$$e;s'^SV8\;OV7DM%4B`b#5tZ=Dcq-C45)6a<CEB%C(q&u
%'rlVWUV2i4(AbHijRpC'ESO@g*1*pa>PTEIYnQkeb8qkt%S9HYoc4*\`7Z`J4A'.F"<Xi;fH,$]P?:2mq>&S>/og,6n[l^].>6V<
%Mp>V%qd.)P$A>:J1*VpR]BVG)=-C`%]&k9_9iICSLTWDDl3m'1RD+!glDo]m*dB0$S_#DE38un.6H6M!OAf(IRHanO4-SqletR%^
%65:a(&J_<MA0/s/;.FRUS?%iTVRg#Gm4hK3F=AMgl]>11jQ)DmT##(WS=,.7+d[geW"r"n<70M^R\N'pG&P#g+b2-1]d"GbF]5DI
%-TZst)-DSaFl;HI#u20:h29YQ'X9<lg2S"DcI/Yq?!(O%6SH>!oV$E%f4hP3(O^m]Z,"$YDLlD#rn`noVs4:`'F6)M#Z"A2]%eVq
%bb#mg@<;@#kI>"c_K$0(ABq>f<]W!M>GHAW?]<nZRh`s=W-IPBHui'"N1#8;>B&3ql59,>9Lk0b@[F<8\O#X-k%nn-AZ/lsf$R<l
%K:R$k]8Sj:3g4usNEkg[p\N"m@Z3=Pb$\J3j2mOseK:,/N[nNR>dB9@a-7fDq;D/n8"u\]Pmc2d-O1MqQU)E.U6l-@gsI%d"'[^%
%OTQ9:gj8-7i+^dCC=aSCCIrh!Shn[(c7EC=/Pp9m;nE144U>&G@'tlkIgT;[5h4;WMYJp6CYOM@f'F/-6g&ENLeDdn",6]d!Xq]B
%6at7s,;hY0*RB;\JhrEp4u(kK3LqEF$2NgBJO4<ng/3Wb29"_8X$,pHBMsJf8/eNSqEA'f!1/5S$kX#NA#1m$3`ZY(P<qeP=6g9P
%<5=WrU602MV]:b]@S0?O83Bj5lRfOL!OQB8;g'VMJ$DYK`C>F8,RdNi%C*1S&3La].lIe_-Girn%XK$kLL92&]6"g0-T^;MJ`eh\
%\F(ZG\?RD6FZ:IbAXjG*"-OT9)AKXtQ-?b>GU[9\`arG@o-9Li<jmY!*DWBUnfF7i0Z6`?dE6EdObf>o]KkJM83I;o0UuJsnS#ji
%gZ`a8LI2:,OSYalYM55qrDn"gi;uoQe?F0op!Hk)&dZ+P$\!^K.7\^8MY%2LbQ,c8Fk-+a:o:mu%VeAWDM\f)1Y;Q-@`QTRiMJ,G
%S@l"o0r)t'nG[Kn3WJF5]A'CNiUbmOSG=*.e>I1S*%]E=q+,@tTaRRJS5*\e.:mZ7gcGSOG6kRY.:`KQ]&]$S,Xe/[:JHJ_nNG\i
%!M<#0nVe6Er#/1oH[%A2+O)<PMe9HW4@LSYZ]/.b2Z=F:eYTu&<=5ff6:]tF+WnSH-^`g;=#1g\-(R,fGZ3(/mcn'29lW3lQ_TEK
%E66!_rm3<U;_am/iiDLmLf?C1_tA$ED@s"64!N-@dN4SY*HVM<Sk,QoSkjC"-Y]bXY"bND8Wk'4RY/lk+?Za59,tfi!"JWjf4=Gq
%qoEV%6;6b[Ha])DTbfFSKd$sZa&Pq'S/Q:ebZU1lb_lnPR4^:q,)i-iFQP"4ZAA(A;=4d3kH%5h(^.`pVCYrqs(cp:9lB)lRlSW.
%[[#&N(#et2PST0U;D>*mVP@fBg!;5/f8)Ys8%Lc4hp*Z%cahFnEG>nVN%t1]ZHa`7./hF##r,n@m*1o_ho:"Q^te_0CiofaLmlj"
%\5X+T"On^]Kk.j#@V\FnZ=_"s?lGG\[dr2K91'Ftl&[='69^NH7Bo;%LE(+e))OhA:rL4t[uf't$R6atLP8'oN,ldDd4J-28pf7?
%C:iWjpO4WJVB:G>n=U<ea"*d&=a-iI_hmP[7u,[6H'(Y+d`dXhP+GL%Xhq@)ptVm-^Oc76Fs7pPCO*0VL3+n*L?=5!Y][=M*c&gM
%/A/NP*Qr"g=]R<FU<%in\nhdGm8X@l5N(%aK;8b&'VV)=]P<g2I+uf@%)iiUn<oP_5'uMERjY^qUIcW?9KF9RIUbW1=^?_Ldq5#!
%(W<F:mg*neXQoFV_s+F7l'Z/pPQM@g_X,VBE:WJYj:>oSqGV?7S:;3>KY7rn]ruO<LcuJ'r]*9bp<^3!bY\b=T,`eY"c(e;LKk/+
%g'/msK*B`?P\sm#C(4c=$pYPPO4ofU2PR[5jZ_>_9rWO.ge*]A@^cFj4fl1+(0h(l9!N(M9[j:/Xah(0J<d?o'7'aRG(_.u_6VOM
%&4`gI?O,#if]6BKC%%A0^T;--$L`(0"E^E[ZPqDV"')*0<RY-hf%\*O"13LFT[jIAg-E8r31C02"=Dc_-$>t5.d>#h1:/&.!u7f.
%JhXDV([?aFV`C^r4&+>D"ATHF-0,&gs2,D>4fm`d)EpMu@>2KTQp?m&4H0h/bnfHJJis91#hE#[]5I\8XFNGp^fab?,;:9a7KZRG
%"6jN.mEL6S0u+^3kS^b\q9\0nEqVMP[mJ.o5*p7_ZBbV$-J'R9C.YPi"fYZ<.RU)g.[;ImM*deT9i6)5T$/ds`g6k14-QN2P^rGm
%!P\6KS1lM"kt*&Io[gUkCs_D991a'=\Z;k`F#A_Y9%84<L+6!/QKscke@$7nFc6g[j"FHiR&6I"]l!3D1_MZ%_a#*X`:nudM%lV=
%DX3Y65NC>07_o'(rmUhD]DqbCHFSCtkF]<[/_0Y$F7]ZXoEKC/#&*R^D=b1MhNl%5;Rd.tk^3m&&pU41\=TbY_T0+r$1jpa^-Oor
%nN_"Tcl9B>48@Zu_V7t5>7,kp:lk+^2nsWar9F+Wn^IHsG<c,<@?'UimPj%`2`6*Vea981GL)>c1Mr`PDQeNdq)_uKr1Dc%K)T*n
%^rq,qc"Cd^[d7@MTXXq7rqufS_nTG6=22KG_uD0ghUCZfnltA%#Pa;O'N`&4^SF>FT>'?d*q@CRc1gkXQ_\*nV@#2+XAg.d<=?LM
%-r+YfnF0=P_pQls?Z(9r.r?do!Zk?>POreJLb`[RGTYdjlN`$2GE#j*5Ue(b4D5*aS`./uHV(E_fQ5QJEk#k>lY`X_*hN?LQ=/rA
%.m"12C[q@"TQ[`VDYk$[+/-mIZn:-eTCr+b!VOn<VW.?paR?0uhj8^`L[FB3g7i=#Hji+P0'TOZZ0:`V3'b+1(40!M4oKM/p'lH$
%6"f,(f/@^]<f8!W^YZfG<='JnXaUDZdamnZe'ajW\?<AWi7UI.?cXfnU\2`9n+bl60`=o'Jo>Gg]!`F4_`l[9;P0BrL8q%5;4j?K
%HL0U93\9dW%uZBO"-Y]R[5,&[^97Ctj838doeA9j:e`tD1b:J9%<cAtW#tRXFh##cMn\eT<A9kA0j`B4_B3r&(%u1:YNk8]WQL>E
%;8YO[1pQJP>G,e6YV)SIFkr,RV\r3V#JKOD\5r%^Wp9jiP-;?I/e$06I<J[uGJuOJC"rRF$Z#@)XS:_c@46TQUT;"9am/;KepYel
%Pn!.P^Vjp&gWC+?ZENnq$J''NTChcR=W&M04p!<k"YI2?]jDYj>oC";oum>\!:im'bH]%\4ie`;^?TK>aWOj8at"%jO]E.0DdbL4
%/#t+)EQNfk<bo"*m35>-^Y]gsL5C+Q]%,6"\@,V8:Mg3ceDlhf)4ibsr1:p)X^F(EV;=RLLS'-.GbmbX;\eHBX9Mu2*1kq$Z2f^W
%C<SG?;;m,#jUe<bK=mED:KBs_\?mj2VImFr6;ueuVLnt7WdrnsIth[QaW$nENcm)3"3ZBI5^rO)9.X7tna_XjY$'<FEp)CtfjH(+
%U`.5_LQ7E*):jBM))@<$GRirF>`u"*91'%V`<]ZZqV"t(+X91Jmg&Y]+#mRaj#%,;jcs']m6]Hi/#a$tgpaSTTV`3c1JlF.[Nd>s
%)TSej`ge5U6CQ?V,qWHkYQj:sN`6,2_37M51aI<W'hoK?H\Y+^g]K(AWN^*ISZk62ij1:Z4A$.C(8)2B.V&NenI7ARNeVp#ArdtU
%>>AHJdoM8ppXo"R^`Ck]*&;B4lt3J-:.JfR-<[pfUhe/mgKdlL6do9!3Dm4An^q(@duJHA.gYIiH_A,@%<Q5oZ_d:?VE_VZ8S?@C
%Cpgi7]"T?Y_LjGPU-cBH!gdO9D2u!&+3Y;km[0TC6f?!3*OZ]o&CCtT<`48(#uO<i1.1s+`QVn;eI?tI_&GL+i(?*iRK;:Y$\C/9
%,MNN[J<-M.66C=rC^o/KFb=VUHK]p?+;`GW4H$^dCAA,NlH%(nkUimXOZ0pa4-5^2qUQhM7%:.X14lVW];kLA#<uJa8WVX5Y&`T(
%T\2JK03.&#ZG&+g)0.mEU'BV/TJg28OOE[p=m-r3injRPZh-*s_X\!qZfKRqC<r`(:i0j?`X\%Xb2<S,[.kDi(O?He/ACN;[UK.G
%[o@u%_'0&o%F\C<4FMX$qN;-p1EZ97F>*'j*t]B^1<;\-QH:L3`otdk>q^tga/*F)&nM7A6Ogpfr.,,f;DAPj;C+ODj?)8m8erCa
%SZ^3H=>H[\XJ:N)p;d.&mI6SuP2;0`l%S#*Q%+m4&at?cQRoRA_]O#G@RFu9f7l\-Phrls#g!Os,1&g^hb`jt*e_JUT)2QbRrH`&
%0EP#q.]/qN:>D(\b(buW%bDl3PD,kD794fnFoEH?@/7-l`Ro'mVBC:lT#$aL7#A,iL74O*Lm03=0"[I=WeG`:ZYH0#g#9;=Z;flq
%hC?s$;C!C.jZ>l3=A;]k=Q'Ui@'EjG,J$d]3%u*rLp\6U"CO<1rurB`.m.,h(\8P:kAW6j;N_T[m*5ZHE5XdejFBjo<bS(`7VbI\
%L?;RM+jHr36^enbb7B!X#$Tk\o9-OpHP]PFR-]'T['btjQ#CLAniO:@o*=pC9Ka!_A8YqW@`T_96IA-p^rq_US=Z-hqusPRLP5;8
%_0DiIl%4!$0XmI`\(I27rl&r#)"BC=[p@srI`2&`qf,l9:b`E;-sX-RPN<kSL#lXOS0(XL<n0mh54Agj4&Nh^LX]53N=&G)&b^gh
%XfI[,WGsr7Z\=mJlY?Xl<n_?>2f]PX8+iN&!PRl>.-Rk.(Z'th'@[5&A$+euhU\nTFf3_HPCIZ'6Yf4g6g^nCY.okJ%/h&G!?js]
%V4:@n3MA3I6GbJ!-d#5Y,,-^0X)oK%Zs:H`8OJmtWXD]#n<mO@g<e5(<*F-@2YeV?2!Mab9/9hA&J^a*=#?Jr7!M@VJ5?]">BR53
%K\M$<b+=tDI..D8IVkSD!k,$_#BhpR@C2b!Kbbq.b;Pqn@tgk%T&eFJ][c_#X2^Of*G:<.g/a6T0)W\saD;i$>kCn>Ce`/mCZpH`
%*I9e87#*sXc3Vgk\$5)US`VpVUX/Ta;6'4^Fi$eZ0iCu^UanSsV>!F?.4RJMNZ.#JkVFO7neaImF/nA(@u6SM64_G8?Va:):f*!S
%:kcj$1s-B!c5*@Y:<n"X7*bJ:]cM,eB(f7lcOst/:QV(R2/I(K9Kj2+PfHX^)YN#WCm"/tM]Hq"f7eXO,PD-VMh][8?:maW6:eE#
%3uY>J1juuB`XjH`r",5Tm7H)-56<UnPo1'))\U#M)32nnU3+<:^0GKSACICP10%;nHH`4[;n+F/\KUV[?EA]1QKYTg=EF#$9GVHW
%RT!CsTN"Qf7P%RL-Z2r3#tu=@K@\:.92^#I-*>_tceI4A>*!IP@8Ck!iO]D(h\7>.Uo<'/"UBi\6%X3K\.Jj0UYOsQd(<_.g[3UR
%`m:GO0(!Q.>'544:4:PsP/oq0EcV/<\]HLn[uDoRoog[QMML8]FNm0oUn;[pjKB034+/Vbs7pZmhBf%Dd@HtRI7OT8ee2A-=>.=,
%]rsOoE1V-c\J0oo,K)`g3T6&ljaXn,^LoLUn^B?O[Uq3c5-9LWW*OVlnuZE6p<s+Yb-e?X]f;HV0)fSB!aU!:cZ\OnLL#4%(8`:*
%h1:=/Df?_O$S<`/IY0fNKQZ2$)>:nP?8E&bYg-\S>HXB4SF8bReV,9KODFa:\#`rDr686IbN4]ri,(/$9f`J752oeo#$c%*]Xs`E
%^?0gMPC9tun8mK$<+f8?['k9E)[0h<p$B^??&>ncn\l1;m&_7>aukfX-<lXaq0Gb=YF\uT44Uo#0H*i?ph5'QlL$LpjC#TIYdCK"
%WAS`CLg+ZW$D<G81_]Uko8e$HlaEa6EDLFX+6^d;TpO>'$6SWun_LPkVrfgWT-j;C@\#'SY9mGtegT*eWNKP$!iXs*M>(XXg-O6/
%BsWZmaeCUrS=V(c0M1G!r%ueEi%[-V*+)K&[]]XNf'NkCW_[+^O68LX%hms=3&d8nVPEbUM'H<<!7&J]"ZNte$LXP^nURbC3-^P+
%<XBqQTb+H0@?Lo$QG?E;nXmPqFmhG4\=_+HO7n.8M,P33H>*DXAn>K_UAZPHWL6\,??@Y;o(Ss,9FLgBpSOKofTok<XL=g^S)#KG
%B*nMd^n4Z^;6Nt('/H,rPtY5Jr'?kWBuSn$D[E0sIU?ZHJr"^cB7c)sG,GHuYAoaDj>ok0]eYui#!:UJ_sIEg[\I^j(j:d&3)5Y.
%7Ber^hl0+ELF4pgKM_^87j(ndr>B)(C$#?FodS7sj;@";+=s-1BeO(2)>pf6d3A6]4[P'80DqtC1%=e)GaLG'H,0<icRYkCo0Ad-
%m%5?N&\eh0Z%Z-JkMAAj<25,:-0R9toq#@0L"[E"Gb)VXL]-';pJUZH?2^sUiPls&eT'8X4h/eF%,3%,O^171$HUpkXf"+'L":<&
%Cs[K+C0FF2PDdLsB\WtIp!S"ucF79;R<#lCZo3Xk*9P8=E%rk8pdl;\TdXbLQA/MBfC_#6.24)N:KY_R[`HD7m]>YC57AX7V@iRR
%#<T@j\N,oBRrCFtbB=AA2ic&EA;okt#Xb!KTQfF&YBO@*SiQdO0Bdd6"Pnbb(Y'aT1Va\'cU0NYrCp.?;paH@+g&>p&D%nrOBsYj
%Z$-"VL?9,n[,r"GI'C@[VX52;pG\E.0V-OUp$Yr.Yfc*.pp<pNjKEneRh1EL/0*t%97*$ie4cd>o[O8)2Vk7`pbZD$%"#>>n&78"
%F_X:;m<#C-0J,P8r5S@h)+Q('kqop!nA!2-V\s%0^VN*3N[F_.B!$3(?@8@pVU<Gf:,*4q?=8)2EjV<0<g<n4hptH`WS6Z?h8V8;
%9>dVam:bNt2p'u\5gRmU<Cg73K7OMj-aYVCF03-T+'6XaNMS[NA,V",?S@sSqUHV?S&cTrngLYR=oKo9T=+j9(M6EXkhFZFoH&\u
%U)CcpPXA:A.jp#C/>!1+h2gqOcXpV[XLa@#e.(<f,AVZ]kgoO_S9S0-DsF/p(sH?V)Y5]d[o%Kij7P7+ZQttce[I]J&'c,I.k:cN
%Ykk_/1a1i=3T@IiirfsC2(dEMYPEORpr-eMcl`7_a7`GKIPjVkJ[p!CmM*_]n\%lZmphUICW+%'Rkb2N/:HSEl\[H/ncfuW>T@.B
%Mt1c"F4_RT?;-q?@@IDpXt,aBqBe=6qGu4(B\Ukj^`9-@K$"d:0a1s4f:.!Hc-jZ/2Q'^p/`]!W1[`f^?khPN3)F@+^CCh-bQe\C
%7(r=):6(FX:%C>ba,0c>HI.Uc9cpt=SU9grTT?/RrLouQIB@.o=/"FkpS"?K7p=2(LZ?'i2P2\,Y9S&^KWEY)cM(;se!)qO&b$Mf
%c[)r(phD+bO6<Z;$?Y?r+F81V8#29seE<2=d'cTj0u;hb3@;e.'8.n!R)C4E,=1PDSRW9SCO];f,0(t_gW+5&T-CR)qAbXj!D=e,
%!kARr$tLU@0[T8_].lY2>DNk"k5kG,q%aG^5N3aNhMArUhnlY3g1ZE)=s@/XJa6(,.RV2cU?e@r(!f9K<kPnCZK'\ZcAT-=ad6>Z
%H1-F5e<XIY)=Ek'hn#6p.4<0?ET#!=2t;^1CMN-5D^p?1QL9f1H>?0eWGqZ>.V^'2?B^BmOUY,3grA"IO0`PlEV"kMBBqC>qaiut
%rjFAt"Z*<YQ_cUB`:$_W;Xp9*&Uf]+Mnl/b&I@_IFXWpU:u10ac%b,J@<E+PQ`afqVjT8gm\MKg9muBRZJQN1GbHo7lB&f4.q^u_
%1Qh4sc1IF%fJitgkrI&FDH;hIrVbrJ'Di?JJ31`mBd#&O#X8:e%_I+OI'[d>'qVU%!eDNHFGg9i>$HSP*AU6%D2CXM9I(*2:>OOH
%B\][1p+uFs@OV?Za&3%.SJ#mFI;/!4HL%b%lC4r@U#oukmb32=G96SY@6QVX?bQjmB99ll9tgINQ#Eji(u[@JChZB3:,An;RSgcI
%N8g6r1\t_2c#RE\6VdeJ:Ps&(e3>;/C2W<<#=7ZNf@(UhL<U.]2tCCA+e<kGjN]?=Am+d6m0?7\op5*A>=`SWPJ`<-Xq"(/)a1>c
%QW1TYE!*1s54mrA?K35K%sF5(C#XZAQ>3^c\L(G=Lms32/r7cY[M4O==6O<>NfSNk:+`1'gfm7q3OXEU3CRT.G3`BW:a^@!7C]FC
%&FTprlI'X!X'2?WoW9"eH`V\2Y&k_5GR(CA"E]B][,)6uLB_sZ@T2alIa<Q"8Bi8@!1fs)6peoX2'*VQV^H8PZuC>DNbg(baluQE
%?b<`Eq]h1a.#?O^<"IsW]qHTj)^"sNH0agT'+9#&BVH*Po5Y^(e,J[mOlt34=*M(l:*B-7jn01;+MPpii:UD["pM2k0g_Ua"u._.
%B+WP_FR]*#Rq&))oWktK(B9SKJ-9[#.,?aJ:_j/hVf2A&g[[;mSUJ0b3(BV4a!GLeIolr>cO'PY3LYNaKG'F$J7'Snfe(C/G_Cp^
%!MAFq.VDGN*^-[B=WkukF-<GjVK>J^P!TlI.oV3e;IR/N"dMiLK`mo"$[q@5Sf?ohO%X@+0=1G!h?udY7teK4^.aLCV,,>&Q*d.Z
%1j6D3UeQQsj3u28(NK%sche<uZNph.o-,M.0euCjq-5YF4'qU?1Kf@=3>9<LUQb)5&+ae4Z1EX?k5-\9*[J^W1g/dTMib4OpY39f
%OKp6bq7\J)[KqboG/`7/fRY:C-`2)0Orp_h;A<U5[iC*E%-t>aDFlFGa"=?'H$0+A;V+gdehP1>]:S]4QBc(4Z6cVupZPoKTgV>p
%<p3ZOXcTZ[6Io^JKmr&dYX1FTl5U`9JJQgtdEs_86;r])V-'%3@R5gP8@/Z-'q#huj8(P)h6\#lm^bH2cp?.m4+$KA>*h%PU<(Tj
%qtdQ5en9Rd6ZPXe2r=u,(?l]t0YTg.NPYZef9`b/?(9Q:rTCN(VDZcnRVCRdlfqp3mH^<<@3O.k.4g.,#RROp/OZ>FArO[G;Z3^2
%jaAmVM"4)+#uMbc-r1&3-_J6A;g@jpp_bojs%Em@o6ACZq'/kD)tL3#gt2bg/1@,,*Hd',E!flZ]2e]E<9ZK:=Qk%E'l%-$`Oq?+
%4sFoUOcL.p=\HgRkKqsuf\FrZmblYacn(o_f,qDgaMS@%B"PI=D:E1/be"2((Si-Bir^'f].'G9G7Auba)bTXGr1DZ:71uBIdaW@
%qIu+?Gtuf3D.dH/9]=6DY[gM;c50FCo4"?R_2Gsn(2bNh&ZK<3WJ)gM-dj?H2i,FEC<d2r=td'0lM]Akj1'`D^Z%;+mLM]Cm3UcW
%C[-Q?@Anf'[f$eVXY&bN-CoP]i9?[5A#-WMA%3M*UprOTO2@k53F:ZDN#XOYWCmgb&>Hem).\LC6r#FobKft3DV:7uUbR#UaUNO^
%6S\rVLV*=@(oDI9k,49]5)q@8?+;tp]cVo3pNS'+\+?lu:A!\#SR&V[\8a5OOeEG@()].fY^Pk_%"@7c`8#;M6;;lg_L[fJCZG,j
%_\#h0U[X)rN:8Y(cXSfCP:(SGjGj.5Vmp.ekh9NGbF#kmlT(6)ehPdYSjP!_UX<__*5>[C^GA'_1p>#MrS96o=5(:uT,&s:qT@N4
%1l+W^B_5-W1\RC/h0D&0F`O3N\Tpe2:"on?h/(/Z1%l@FHoW4I,!^;<d\4C]\BS'bfkNGTnh^k`VTI:dEeI\.E)^Y#q.LWc:TO!`
%(uD6ap508\]O:Dck@?65m0QR5^)b6Uce5Ks%X"8f\4?32fX/8M45V<G?c;Ugb?lMq*OBkQ1*lBt2V]3.Y+1+IG8K71,7!IIA\K8,
%41E^$r[<7dnN=t^(W$(ppRh-`p*fL%Zk+)I3h\5o1aDdKZDI7fT&G=+*[LP8[\I6"V;ANs1Q>6jHp`t'+dK4m1"5Q)h7jcHqhW)d
%[Abl61U%>24C/P.3_Q5N>(,/3GBD?',1cao>IM8bPo8QT]]^mjER":G=LJgs*>>F`2@`/#dOVD47/"T0lrY1TDaL-+1LYJjl^X)6
%(0YK!S1.O4kpE+C[6IlRMfcBtX.m)I8D&bN2%k(A<;ZI_=Nus3&W>I9ho"rgNp8HOY>1he<jX#*"/;?7'RB<sZ?r=LcL,tbd*0n4
%F*-X`i&A^V]u1.>`t/_ZAY)IhZd#4';CFm(2D"\=MPd(j#$G8&$:9QO84!#_LrX3`:Qq]U1`<Q2,POE2#Ob@JUFH/XL1_e]n-^Nk
%n-bB,itl/g<cl-pjkaM?To/];AT9KqbpL6(8_DA<GoAnAFUQnoQj>ts#nrAubfGdZ5.WeHCojrPFu!fcJf%WsTccgjfCqb\%lDd"
%c"si$9SSs*gWeNnW=Mf'Hs8n-=+$B:jumD1TO)fF[^D+LhC+=i,k['<J!'rijs(`M1Lt37=_He'[EQ*H/W97o-b8r]Ji[9tI;s#K
%eCrCbP+m_oOS$du12f,3DU_>;8NaaYmr+;TdJrJAf1f9VJp`_dZWN].hQ$e#@gZJ>Ibu?XN2kbu-XPu\B*rB<XtR(sQ?CO622u</
%gdA9B0$f>9T_<iOcoI?5(]nC6f\4sH>@c1;8N8*gCmGk&af(U["F'dET8f)7LF@eA38H3?GE+'<^(l[ON[T/[kBVpXH&,NeQ^4Bm
%JanFh"7*\Om0gZn#O42-HcG,N4Mu^^9q%RKe>##p@xxxxxxxxxxxx;CR9aU'kH4@!rB(R&eAR4iY3;ml\A!)6]JCZ@boXXN2e3he
%kNUfg`l$f(SO0[3ke!G"'<e]GWEjEMEP#dtm;>(2[5GE@'*r++DAW07:r%W!1#j7JIl`U&[m,(Z=PI_Cmcq$ch&aMBMuD?M7'YGR
%ZL=fGPW/U52LSh3amlT^"ApSu,VS[@r%85$YQ%_YA"_Dahj7"5:c<rEZlto?ZYsJ7cY2qsRqOYTRa2"lChDBd.[ukbOR/C?"79oF
%N#7[nnr"?iG279bpb?Gh0D6Nu"P@H]D"(qVp@Zk1p)gMhR[8:MJ`_,'7I?-)nZAqB$1[?tB<^h&>F`ObL7!55`bB>IkFLKPncO?2
%DMGd[P9TX)&?3p9o`bl94<RYo+1Lq\rn2iqXq1dVB<rY_%Q7q]5WVkK`<n[?2ah;OZ8EtEm7V6.bc5sNFd$j;X_etP'7?2Ge'dFr
%c+KM5AN$a-LK0dIM)(>I]?:5S4HTO54W[l\.q0h\,Jn_e>;uDn5:Pt@<Y#-hk5B*54u]iYDW5.b,kE#*\NA$NDaXWNg.s:tq"]t_
%[#J]?Vp.?3\lnb_*Fk[91O,;Dmml^1g4Hn$l.t)R25_X(0p2?%T0;Yo6!$.Vplk<orENCoFf1fbg=5c*&WE/a#7NjldW?85ZS6i7
%>-r=O;%g`FaD5PNQF])MckkTn*VpDp4t_\;F.5,'BlA*d7.`/?T,E.kqX3kD7SSooZS,+X^=tFn:WUe4CDLa4ZaaoK<)K]t$%R8^
%2)ho6NOFIfI&e!to!=CXE#(F>5^HH_`_d]\H(4p(7l&?6eQ+MLC$b?qa,JOWjYP\e@%$*$+I"40ocha(i-o&)KWhXT^<J+R<ZWG(
%g[u1'.Itc@gmgcYF1O/_eEO(Uo9;,0c'HS6#oiDq::ghoV";6;[]MWgA@$"+_%d6Dm&9Sb1H&16aap-XXeB3@Y8SChe0KLl?*sfb
%39=KP-iY`_+891KmM=F?F>eE;oqP3eo8Q'R(Pr$'0]dS<d9o:_dc0,R]?$4-F3couFDGl=8d\S4lI55s"$DQlf:T=K*<`3ol0Mh>
%=h[6=TFHaUd>]5h!RWh-U"cJu;tjR6;Ek=V4gR;B+SlN!"R1G\f?gc5GMcRcg*6H-6_C8ZrY;o>FYKq\QXs\3H(=Uf7i$7VDiEei
%K-tufH#oPP"$mb_Xh3J83c#bp=.Cl>ZfK#,oBAC6;V<6"n#?]`>^nP]2SuN"3gjN&5U50kD"BjhLW)<80Rl[h%-$VBfY+Aa80_3O
%]$!*5rp-.&EXR0(mUBDcW.&XH+'KqY\S#sd.MT-nnXI,t%cmI?8)@9:VLErISEM6?Mk#&q=AIddr\c=-5FgD$bC#f![9pC%=;-Rq
%35<6&\*nh2,+:BspK:H(_W7"<I?/F#U\@-ALU$$r$Y,iGJ\+WR2ANskU9h-dl`u_S40PlD(&5"*f2e*p1n3L9rbuu1G;<ip;POYi
%K\SE%L["iE3o3qgN\\a/\qOr-$/L0kODpu+_H-'sNa`@MpnJ^CXg3UKV\?5Pjb58RMhPYB+72U'LI?-i@`tJ)@`EWJ6<2RLf1/mX
%e29Ko3o&i%C:CAg/ideVSNZ]>UK;q[YQ!#a.MDY`j]n;G1]r"6bO=&89'u6nVO#,0X@B@tq&X>'aO]?XF:fN23]Qb[Jn;gc)cX'^
%,R'*%2O8s6<I6fq;-YC%l:#]Pn1C+"#O"G_JhLCHR1Z^_;c>2QReYBh1H3,TWF@(OISW&V=n)BrHI+Xt^Z*PG&>j%0Y`SLm>u+l[
%QC8!q<*V\e/(*8[+G4!%*dTSGI_U8K[LSALj&b8]gfm1JLseL2@'a(m$eXf@KrWX0[mCq\ETRe\KsLOPg'0rHh"B\MMEF7Aah7a\
%H:>KBf[*:@pst3!['X.-g*#lk-).G$H#G+fkHm/VNW2NaCAlQHloWfuLZ5>l<ZRc5cm1"D1%Kk7K\$ZDYA:eS"ANb2dJs]h\@^?C
%Co(4c3_;#^LfXl==,#e5&Z]hV53)2P=5RhpS4o?S[SCmL>.r(p%Vg%2H$YIVDk<E$F8&\ubT^a6>,JL3C6d%N*LbTDnG&[5!oeem
%*t>DP'M=3A+[reW.K9"@2.X]5`?-*JjDaoHi]Y^1ENqsN@'Jfa`1SkW*h?:CTB_rKYQuO:6akMD8\7DZ^\V8okZHn^Q/&N(lW^t9
%V8^mHja49X.E#(_n1J8U,5!hY;B;JQ?Mi/!?"uRHeI_L(=4</GXWP1h&;te-IQVc?cYV\ql&%B8Na1i'fi;&!Gt/HrdFH99s6Q_6
%ojlAY`S'E6q]rqG$N4e/-e$OtMpSCJ$T$1$%aXU;$IE]!UX-c/q/J/b5+=4Q`7;sud7,nYkH2.Sgsia&1q@R+k<6bp>.7UUCKH_?
%@:R$jOKVX&(`j+Eo>I+Gk;7CTVtXjs*A+Cg)>=#2f_M$T<i6ald5SI2UUehfI@7oIZTLdrSRerb?48+=jR[gAW,XNS_1%a^YD0O.
%/2nZ>*E9U21MUu-l0?KlVka(BJ[!Vt3TJ.irI!m[qY]-eQS,rEo'J-`H&[;rl_iK^`dOiD[&+j\h!HF3r$%hInbocA**g'994i6a
%WS`Q1mjo>]3RMJt:s$,-F1b&LpVUD%l0hndh?\jA@_cCdR^5D1hWCa8FBon@E+!5WjM8omho!>0blcF)DnT_HKVP1[V<EhnI?D<@
%Mk>E$p[B3%QiZ"k6_D@aTBF/A]Ql.=p2O>M"=J_,AmjrAgq*doAe@%]cu2D>4h\5P=JN6F7%"ae=/KlgntMVV\rQF*1f!Zf]f,H6
%a8P#=_fkT]juSN"j#N,sj([+4eu(>GCSF=4Ut/L<*>I0\1:BD;feMg/O+Ce<=@iitM7Q<'ePqeGl'?(@@Pnpm-&U4Yk^+"-dn6OZ
%\?Gn_*BZ7bf0.bJPdB18L+1s5h?L--[e>>X[S^r&]$1^jgge:gOE;eXRP0nIhnV0;4H7/*+AEGuF+iI=&E.OkIGYcgA!hWo7PP$J
%1pp])dF?NLU8aj"4IOqNbP#K@*fT*B`Vd]Jrj7KYFZ(njVko9UO>a'8@b1nn*,7.ghcEM7M=dWa)^jB"(E_[+T1jL9M/PGs(Y?8+
%D5t,&<G5=g)*(2Ck[Yre(tW3[kGdu.I9^V:Ud)2.le\H;e(T.Q0qCB$V'-^rQuMoAUcMUQ-H!t.PjddJV:Wue@IG'lVUo+SD/&$R
%2bN%37))@`-S_H,;-(cb-nAj'kH,A]F3k_`F]9`[QK7q#l.f1K"@f(H8E;.<h95@ld(aB$ql#I=1?`Hd(*,q%ILd:qf(CF,c<%Km
%G-ZB)h1Ne;jOoI$HP21a(emBmg*`qKdAKh:Seh9OMWm&JN*klh1:D-?P'P!;\+if7c(aLXT"U=\o+6Q?S<Ts4ots?df>$aLW;a6k
%l0@H8f'"P>GDt;D6[Hddh`2DG0jsZ3dU8)%q9d&X3_)I$$:@pc=ee'j&o4!]oo5UCNT?_`QB!%*)U[:5o)SGC1(Re,;d@9UFn+7R
%G:$%"TA1;)R%7l,Ek0G4#N_+;s0F4l4nSbkaBuW2P:'o3PIsZHEGE7k"TE(Nq:M`\=5H#I*hc*UoQ'#kAeKnE7l?Jq:XU69m,@cB
%-7KDMD`(+#p-29\(P2)+N0t7`?d4rUiS:j$BT*pp<cFk5%T5=bcR)#:$5sq/Nlf[hJrVH2-jg^Qf"SW6p:YsJY5"^30kl>1*3S,,
%1BQj:0+h#&IGNKUMLcSOe.t7c8.Otj7QW^=0d>R'L_8sUB2=+m2JVh/OCmN(bpn'^//43m`H#;Np*5a!9$>j9?+ucVYC%k+Zf9Zb
%YP\(7))'\T'//'!c-?-io(rN%7)./^pni@5qji=Z[#O,0G)fTC9JbaCO/^]6qjjlD'=sW/A.FWuo\)$KG3*H3%8lf/'t#8RlJnsl
%R<dVaS7ZQ+`o@1DBE,V$\j\EYVRF_2(&5..STGHlM56'nCLdJ<GXUgn@-59,"S]EKU]4ALeStiDb[]MSL>d3%46@kRG=+.37';Zr
%:g9M\5>4gan?#5nLh@g-c-+W%B&,QiA"J]:Gb!XZa2N:!48V@3hN4$&IbkE7bO%@ZgodN;Xb0@acWUK4],]fQQmEnkMqkD2CRo&%
%/95Bcr4KgY&#c?3N\$[R;Gh1q_rbd2pnP0Xin;A+0lM('(-(]C%[;bj3]b1WTCD:Z+`HIFeNWeNkk5B6:WUf?CDLj7F'3(X9T0sJ
%7C=EWe^qa63[PW]Z]AmA(-Aj)H<)`>;4Ii9QiZZ2)9pEKG2(ZGWQ,)\'36b_5/TO@QVmU<U1ootZWMR)qgJE!r9C!4cq.f`3a&]8
%gAL7!g4EJQN]AZ-&)*WrIrLj$X>ue4?Ds/n@Z(!DJMm[[Mn?^F*?sn0F="`DHT9]247V:rMT\F8&PFZ'pk#J5k8oY\o@BQYRE2j8
%;3cifksXjc;/#=`neYT'0"`*Z>:OT3r0YmFa6KcHXRiTj)OWh(PtojofU;Wc2n!M6e&5Fn`r;!+]HB'4q&S*qc>p>-aN#F^]WR[:
%+;4DA$r`^AY@Tc*;g4;7(&q<4<Zpn.bCF=/EW"ZdA#>PUp'%uDVp"koF]dg0^=Rg-c='EGlN3:5K1JXaRLUjc@HQOMj*P!6>=M%=
%8UJBMe;aoQ.-Rn;,Q$5X*m[?k`<s@]E6BVu(\oTbScjb>WCIuPC6X%"D02"T/Z$@LpAHd[jI)"EjUV_r%Vs9;`g5J)74t&t[Zf0N
%8c(QmMldK\,0Ef"W?iXWY*/Ujra#cf-nl`RWfpRV^RpRQbp*#_r+#$:7s[q^\]AgVqjLMq,3P9bUuDjF]<sQ?Q;R?<iA4ur_-;\7
%p`P]7C9-t!`r:'cc/\Ss&X-OObd-=FP7J;<VKLc?ga:].aGrj!bU8#4]^Tm5YYk!KDc'Uo:\,Jf9YG^p^<GGh$3%1$?UVd_4sIL1
%Ul#ah<mA2M,UD:!^IjJ;2S:`brUI#(f\Imh4hZdPXH"9S=S7fP&?EN6HJbAPf;n"Pb@n.#DSFau%Yp62Pe-@iLXK8hTG*'P4mn$!
%4]KRC[.h1%,]8>,F=jWAX6QX6*MW\5C8@l*m_#P"YkC-&#?bE)jqX:V^(mV>dL.8@TO4%JBG%O"1+bgn4c\eio$bMoqDEE,LLVEG
%>=[K"V?o\'<ckA@+duL,]eA?sJ%jDZhBGrE`7m4)N^+,M0Jn%>:"R^$I22DSXQJ'$#$R>C?sA,g]g(35aV\fqWP=0g'la8f:l0R_
%OMHuS&e]Gp=Srpb]3DftI;N<HoBLf?&B2;mB;DWj]h-HaP0ceFrY[+rrF_e54UIB<9^A/Di7+Gt%_g*-f2^uBVpGuIC)TDV2>B:K
%nCZR!dY30%[(YrDFo,9Ok/9G!\N-pU4cIJZ\RJJr^I#I&!pEWL]rjP3@YGFnDC)0=8k^+fQla-_hM39L+FPf%_PV,,h"GZ^b92?s
%iA<$>-,1MXhTI&]B1D@3$md<,R@tlhfGu?WjD;8pXI:ddjAj,\L`qL#L&TQ<PGB7J.gos71!,V^jNMCI=sFR$kl%I99uPN*+Q/tB
%`uSuGR"CbCSS^!^a\*Vip=6go&N!cTL>>C9WFdK$>"^_/q3-@X1:tE8(n"ai?0n^uZ_HRuX"4+(oWf^L9UMS*Xq1fLp?*h`QH"lW
%_&"!>PkHhCLn+MBSOZ1>kVJ5T/kpDG.74=9*edh?GUI6Mo!X",\&':M3c#ms(/E24Om+:Z`=).EnU>F%59V?R;\3D]`'q![(!S9"
%>t9>F$+7BIrX$:Nictg$L1tZYcYhnNcZJ63h=W4+S9uiAZ'I+UP(_8d%hie+&c],E[aoLjR2db>Z^H%r,EGmffa.OcUjcK=dpefu
%imW3rJjqW8GpI&[/E1%2S:)c,GFhN9J%APsgPd(!jC9=LP;-r5ekKf-8;*uq!"au`eHH#g[AZf#\(N8*1qro&QtOLh/9:._C!tIV
%e"W<arFl^iSlXF-\9Pi!_Wi'Bl!PU#bQgp_^)asMce(dBSp-l:MgF'kg?(;2I%rfQ&_8V@r(1:q85sHJ7s/Of8+gJoO5qPCMWCOI
%VY[35q*AKCe5BMF8+A[^jsS"$8bH6I^MXESDi4N^HB[5H@F9]aj7eH$DdAE5l1F4oSWFn(GV?NQU%T]%T&elf7ahp_p1YJ0#&>9D
%#5`!3An'FL$IdV<L(#Z(L1D@1kKSGi7^K>q[V'LnWD3+4r/0fB\.NuS[977ZE$KBbroh/c=L\rTgeXrkX9_NF1+tuCGRPY"5qnPC
%0F3D2=mDZ$7NP^fM``e2XDuoF]C(uBMB/H%pLHU4Y"if$OfK-WC':F._]%bMZ(M2DQ)@3K.!T)jAJ.6eSoN$$6rH:W+i;:sG",q:
%oYlYMdFCa^di:@D)H]$B,j#ZR3CNAKR4ujNGr@h1\D0^@:]M/h&AUG0JU1s9[L$G#5L8KVDbSesV\PA.AgeqPb^TN1iX)S&CWh<.
%'t<A-#iCN@LleWtPAd%ce,4WcihIfJZF!D^q"Ie<fbVp_DJ$6:Ct>+giA=D=k4-o*GH+&eg.7J7;>\U7NPdc9p="\>0N$+BbSS`_
%'>-Y!N!-?2&>(L%T-p"K.dCPnRB88@hk/ZudYEU,^9+-TX1_:]lLplZM]2;mBlb4P^.BBl_KqO/Y7#4g2u6'4niQMdZUr]ERRL[^
%W+Jg\m=Q+ZBaqub1%,FdL=,$8MU,G654A8VJ%DeC(mI>4MaXItho"aXm8%r#@GdgrJN1fq;4,Xlp/MYg8H?I`PeU+cni-5U*;"MO
%4O'?S;p:iQF[g<OpgjYI@rbrBh%KjrS=J^)2l$%X[a7AQZ868u`i(T#k&fE(E60b#U07C?d\#NmVdP'95^A;q*eTsFaQGQ;qDi`.
%CS*/6K9^qBfpTa'?31k3"*V85;^?q5$bK2WgV`p!B76l/*(;SP=Zg(R_>cW0r8lFh\XVI[$b\F.*h4I]B<?6dNA6K"]BPl-.TaMp
%a^!6]Dd<_mjJMUpT"[*AAso-;UH^?-#NsG"+.E-ucX$FWfDj,<s5IDbpilc$ornCCrGVZ)YPt<:8oD$B?4d6&^tL<JnkV?Sa!Yg$
%odtnFThd,[=.d*fiYS2J/*9/e_Xs"Tb+kf*Nibi(q]C6"<e,ph<1gSXd&\@C6Z()8:i6R^lPkIXhi%>9h5Xh(EJ\-sPtRpM)S)nn
%jJGAY?Z8+(P$?n%/?#XE+4>o[TDtSH4b5GtX!\3;71u,rU,[1T"QPX8:U]R%rS3ML^LG@f6PU@JF`L_EP"X9p(ZP3c1bFPaGu<=Z
%P0>UGFp=JdD$@WAJ])b+n\VJGStFV4V*-0CM9"_h0'-!uIbH\3=oS"P^Zj1rPcFE'&)eg=;#B\W54j(J52uHqJr;-;_Xbt;?^JSN
%1&mH-bP1XIe(iEEs$`Thn,M&frr?@9>>0GBB8sjrIb+O%k'Z'VT";PPHoF!-EHB8ed@<F5WqS+9SCBYcP\B;qmb-o/^5u-uS)gUa
%1]Ig.^qLPelR)C"2nI>=g4\o\\gB/?#u>F97sp&Yfu(K%D_nF]Wace:17b^UJY&+j]W^_i7m-D+&F-s3G"O_tW&(FWJNb7-mo#ib
%]KuRX5?tK)N>l@B:C$'R[s3,L*ZMWh1Ca9B7/YD$$[LQ$K;b]l<[8l#I>DtQHiKu[pAF%'KKW\<M%eeBY(&+lZGaLJ=7Vr7rhrQL
%o=f"@`\ZM#j3K4I@s*H<O4=gd5?>gsDf&/JhU&ZQ&OLsVWP<Usp<U#i`\rhP8>RmC97JUG@4hEQ<l3Lr>;'^6^cOi`Jl#u?e[638
%CVY:JQ[nf3YCLWl5P/Z'M`6;+5Apc]o=Z6a`#koUJ#c/%,gYQjo<*['EnL-1+9J-X8etn@WeY2*U9bF%F[Br`Zg2TPmEb_!IQu-8
%DQPrT*Kg=m]K'<70C/DUFr`#*,5bUA3>rb/V`s`J]0BabdP.#+?'*[i+[,;81-L*?EtQ=]&f#K*!6-,JBAB3p3Zd@9hqC3BHCKDk
%b;?-+QCGE653Z9dSfd=Rg,Zc/?iTrg+h4\BYmg+RMtUc&ft/5Hs2_\CouDKYDs"djmtpeID#<!f(A3aJO6;T$c>0oh)"EdJN^@"o
%GiB4r)IG:<(#:[/h_<#<8$#A]ne)`.KK[Y?Y2N1JO1=8/NqS.?<Pq_@Lm=#r%tClj\lJ\Br**IeV/b`qcMcscAmdT#\&NiLm2-Eh
%gZ%3cYh!ZSRdj=/c*$ji\PQ]1"XQc50B<A;[8@<3L19JPm8nV"^F[:Witp)C^ED7^[Jni7no+R#YQ+7PrN#s4qg\V<hu3HPornAD
%J,8KGs#XNd%tFO"roWZskJ.&e07No$s7l><oA_M'e)12MJ,JV^pm6K!XuRL6Am%Iog=S1#YV/6?c1TE_n%/=%IdB;uk9'`Us1S@*
%pUpOpr\mP(@a%n.403Q(dO)6o^OOj!`$^$a10.7KEH_=,,PConhu0S\%CZ920=i)RbkTfI?N9j0^<Kl9Z9@t@VE;cOc?Qq-Vb;@T
%poaV4osoQJ%H)HJrVulAhu344r:Q-NrGV[9E"CPC:d^%mrr\[>0Fe'6aSb3K/`iVCIsgS6I4%5JMe,r`Z/M:(rl`Ks@`4QSrsSAA
%EXt0Vgp,pum%eec'FCLU2H0,?Ofr]Wo$HIL[QHDA[r*s(79C8/Z8-1t6BU$!rkC5e!0\R3J6kCuM!shDD'ZWdYMQP9f*6kXA_QA$
%THZNVIeLt`ZUH=q^HB.;p\r!gB,O8?SPsL@ZlC@(lRfkn5NBd"I5kS+?!a.P'ebK+i2L!9L6WQNXd9q=hhj<9V]^H_9D:Mtm$H>5
%[?%h1qQlS-N"b%\NJuc6f7)*kAHC26T>g-U1Y7lk'-h)Q&OP#^`(ua),+ZAH'.C\@P=Zit)\,?CVdgn!,sUt,*]`g]<_%/Xj\+?3
%a:`kL>@\RGAQ@]2`0:1:Z%-Mqogl)b?<\u4Yodb.G2%K"pR:aBKAk-l]K9tir0pG=ZuMFMaLV?W1>8.!>kaGi[F:H8p3CmWb4-]A
%E!/2WD?PM^TG?X?!!,BX];kZ^5h(@X90!=&R<JkmW`"a@fGEY@&d68#r.U`s?$1cB3;]#f"pfU#hAZaur_aX?r]V"V#f=khmu6=f
%5QSRRf%Nr6i*Y)]+g5;-Q5fpglfND]U*o!Y&-0<nXJ&<pmS3p?6L&_.<^P:1RA:Zmr$3_NHS'W_NWbjHqLuqtlHOTo`\\6Z:*5Mu
%dGrGC`N:*`HB.goXVCrsOUNWl%!MYb6X1OUJ<EPFgd<K[qprKB\WBU\P.bL:^/Xco-t#*dZSiLOjf4DKF1/40dNnCW&HWC9NO.5*
%.=*Clg+]n[+!S-#(r#Vl4pi-O#/"8JQG(,Mc^2&Un?^tM=:!D1TRciQ'Jepq[31Gq6iZFo9ba?76@&OHi\sG$r5C7<Y:l5XhY3cA
%C4F@5rQma@Q=a?_712UMNsH5UE$Q^(9=.D5E3HN[n$N5BOP3@0jQ>;b'bk"gpUf=kkGR5:cJ9s<E1ldPh'4Q/.G0TCSlDImkP'-D
%c/@GDhF@\u/(,H4B5G^JVO:Ws!Jh9):ZHouds1^`4O@a-'c.(uV>TnCnYX<Qr=%WhG[<nu/J"=["pW9H+XA!Hmk>)baubW7LNu%m
%fii1NIeVUjr:Jb$#tf$0"NR^+HN?mS)XF6WM"04LZZNr@^Q/[LQab2D?Pi$-=9S-]"9tt_rb^HZIiH^XMsNLr;DHqP1I;Im>5#:u
%:j]=>b#Y&nXetH6RYdkj42$pZFZ+BTQN-?<DS1-O&Q/R7-s7+;J,A(.iq!Gd8IiH0lL)W@J+;^9],1MGjl(X$RYYED>n>p16F/uZ
%?PoI2FNY3oo(oNR'-6dqep"^7q*3]Y*q%fZrI`+E?gD%UDV`W.bF`\.n!i/kJ"d/sT'e\pmWC4kB:nTd5`H$G2eDP'm1t%kEbH[A
%P7UN9Xo&:TnF`91KpYmeijLH#[Rse!X8CcPA<h#@]`K+pV,bHHIb&C82Q3SM-]g$#QO&3K\X;%ts&>&UD+6Fbi"t"pgeh<3Sd/%d
%g=dpiEE+4naN_6U>1n*XK?_'cPecb72SuN8CN;h)HeX!Z1tk$M=T=pgqJ`<>BnphjNJ61Y5\k)l^iND>*;E)UYoQq2aObEBaUPq!
%IYjOS5#Gkfq,r"id(?+EO\"dbRS&s3Y9QHN#J0gh)gC<Y5;@WWL?M_=&b_br%lGW:M1u4`G?<KOgt-e'OD*N*<o'0X3@c\8G?qR]
%KpJoh3A7bX,r%YkK<Lt9b[BennaT;\Qo=R0#/gqRa,fp/E*_A^9*K&b<$2SV5XGV'odV^22HA\h.5lOPJb?Qs^WFbYp,as5$jQ(4
%K->r;*GrWS_\O)+`LK37GMetb)gAj+_hb\ge@V6j?V!`Ua&ZAnkrlYI0A\6HEX`Nmq>aW4L53S:BC2oS2We@O';-?,I_P%<&>/Hk
%iF"Du!Q?TW&m#'jg)3H"$=+hQ+06]"5kTk^1VOIWr)p=rm0G,qb!;uk/rLpoJ!O8gY/X6G7!jKil9?KQhLD*pmbdrmJ,%?>p%SLW
%:[ns9aVU'9,JJ#+RP$Q8EW.E_:N'D%g.V393RkX$r6jEJB67qcp2mW(g7.CDKa4(0BpYeV49Z'%Y+eP.05.Kb1Ule]JF'jgF<o,=
%f8edP,i=K]\SuX=a7Rehi75L.:tAK%?^#<d4X[XDZA[>dYnOg^B"X`*[JVe/`qM)cI/(sH5\OJ*IYZ5`XkIp2`55ABGX9A6A271'
%aA8Kt5_k>uGQ$o^l_NA77C(s:iRaQ<BO5tM:-=:&9e+gWFL1R`Bg?mQ\cO]p'W#[5Edt2Fbm%dUWl<_,]_(H$?!s<tM_^tlcrX'6
%K=1bPk7)9dCSSlpWji<!A/s7VohL2\!3IBl[AWB,hsd==::b4S;*o=6Oa^[/ELgLlZq$1]m:+2RXBON^Jm\VE"CHipH0K&KSC/@X
%>1K:D+``\]B/F%!Nf<*`-]cGo[WCK3DldE&JPcSTEm,7@[pWP7F(Z4V?JN/9M$!Q>]AB<1e>Z+W6UsclTK@*XaHg[Y1@T72XcVBA
%G.U7b^b-"C@$e<c$Co*K`Ur)-HKf7$SM\]!$b"4T(cd:j!LQ,aD.4d,MHVkqFcZ.i$02C5/NlYB:PWNj<Y.0e[9XAslO.??[s%?M
%\*HbC%m[M<q8[,k7gr[q8\$O2TB86-Fh_l"OA&XlEP#ft9&NCInPBMDp*FQ*6O,t7?<),U*W+O+p7l3L`-g&#F0:ZB0n!'=XNJkH
%QX?tg6)L-M?"-PR'+0t`R;k=8_)U=/$%-UBFsu6fDtfs4?!e7YLYe>9p8f]^PAfR"%1-H>9D2Z9\V@XKZ[k1&"<1XZ,AmZn)VQic
%3Hh69,L.!(#SP,#ID'X,%r^&X<?9ng6hI(J[&e+R7BAjA8$r`.j5:k;IN6]`2IVg:']%Ulj;)TC\i+X\@a!aPKO3NIlg%hfeKj:.
%T+>f045`bG8)a]RZ9'B1Z<+&J>L%MGY/K\oTfY6?JK2.tX(Pc!]8XW\?1!_p7[MDV<ThCkbP'<-XFh`8Wm!_E5u5pl/Hp/Bg]<Wr
%&>YYa\DVmf??;;^nH3(sWcR*pr8%)Y*3lhnS?J-cMsHhsTgMCH:..UOTe=;NTQ]BJ!D&bP#2l/mDY(#W">8VN?[$K\n*4&qd(OP/
%6V\-9:!&'Z\],b(KiN52(HMQT<I51q`+mDDTpDCfdg!ST?;VH9WPYgAN>hBuj5)ZnY!FZ627so#HWn^1%FdqF_psqXNu?Hqd@PBq
%A-I<UXY73S:c[N9<UOe=VW2\J3biC0:AFhNSp$c@0%h$!$"fIOb;MEo%80mK#`JTaGTGD1JV.Lo\1H]I:,PW(D9tua22/OsC-9MT
%]mZ%AY[(bVjT=51;mouAih/trL8V:Tn=1!AJ*h9,nN(RS'5C9A),WKWf`Pu'heCuHX-MZI@J/'t%QIN80dE/gmGb7"HUABm/)Ufj
%B^t$Hc_J#o(X8LV&PaHj=Z8WhSd`W5h'B-0*TVtj0`L3VU4f^)!EH@O6`+NqrHN.S$YQ1#qH3NdCn&us@^/Gk'K+3q>cl1@jK9.&
%krLa!H#Rf>=M=@76VaYMQimr%<bH2J.3um;EAs60.T7'.C)!0?8+X$$E0tMSmKE5EER&jud']!G_HQi]l)K!BVK_RW4AJG9n:"98
%L!HsEeTpLSnj/-*8od)?&\5%2661+!c_N$,HTi5NZpWmt^%eG-?-ntGNF]G6=.U?G]BZ2+*?_:0#BFpQi-T7Lf&/?[$3lbDB<G91
%'D>TqJbtR&]/F]o./Wt4dhN\fl]MkE!K^d/!GCWnF<]\nFsJNAj;u*C>gN6J>s2ghDDV"g\oJf32B]u?m?PuAP;gM,G0gQ%`0GW3
%/03-(?GcOL:M5Z&q`H^WF0bCIK;uV!U7]%[eWh1PL^4;J"ciAHd(tQq1;NE!\2i#]?_>UD_+Mpa'9CREZ6gY5cg.=NOc][V8u\#I
%K,CJ.E'g^n<QL``;4>`_TrQ^9$dmVY%QPuN5("@X=<-"*1_WgO^fsZD#A0<n3s^ZF)-bn6AA[-iY.`.gYcaO]/"DlY!ROe@<a?Lr
%BCBK%NW<:Rkkk?,6[@lYOcGM5;j>+Rc5/bm>,2[H$=Tcej2'l@1,.7e-BGk,c4"V.7ET(L`DW\j7m8D8eoJQhRlB(`QA%OhDC2-r
%Dj*^UA2[jckCrt+5#HMYBnDXM207c.,PfnW5cYVZOQIOAC#6s$G2<br50kj^5#K8^Z*$[M;a3IOH5'mI@+m5NLf#>3`juj9Wk;PF
%08k^_?GP'5-.OIs0bKb2UE5$dEJ=KN33uTj^6P3D<#Wgr;B%SH7:'%aH;o$Te2;s[je:p*k=@N>d=J%pi"7@+[UBZ>o^X:H?TRhI
%D<#r5;gn!)e'cmDf)o7KKhm8qb1IGo&'V^;#BB8W,Db;=2Sm;i"["c:eh"]m)1Cg'P*IU(.l`.u/m-$uLcB/=-rp'd^o+PrZ]DXG
%`eQ%b!h7h./pUDW>>`]B"BiRrUX'>c"ZB"eIFef--H8PqC.hFf$DOoDg'E39ihJ9YmS(K9DD)2BW.]G\.Gd?DJER^L?P)qA$Jh`5
%!!laC8lCNF@O8/+l&'=H>OT+YeN9'A@YK>.?:<YS:mYHhSX/CZI:0%a?H'_("YguT.H[Rt]OZ<e1/pWIj(HjN]>3Ar!M&.t!jRKL
%^u7!Qi#J"=&_r\g_bAd?S`q]FL1aC`91,f5KaQ)&Q,d(t'T$9"Re>Mcs(215i1X8o6W+ME]rp##GEPN,4o3AB;-&Ma$6$FB%+'S'
%(][NY'ZnUoX9V#fN^SqD-DZ>EnRT'`5]g4:!)`Om5\;@:jTaN!,h'qo<FC"e*MVl&#Z:q<b`fX%i-do0BG8`fU]r;AkQ2ng\LrOF
%bXN_^*^XQ,dq<h/O=2cXY:e89%8f9VQ$COoVSEm7YlUR.C']JI688HPpppp^YmI-\H\'#q>[]^eUu2BY0$.OTR$e&j(Xa4J8jZ8t
%e*@8Pd8^d"L.GqQ$R1>^OdcV[m/dg,M4o\gI:-Hu]9%o'G;5WX93])],BiV=?h!-(C5Gg(L+keZ++>bfj%\R4T39!k"fut#6e1.8
%THK"^>`1rFn4Z+N=XI;1`fsmkN)u8]h<ON_Rhan]&B]`l2<FlLM714pZ8-LmP[X*Y9:qUb_#IG<67aYCaTsUb&J2bfL!ki0L;)S&
%]om&hd6sk&pf4XQm/gt=jputb")=)4LEpH)_aEc+#)M"i-5Ce[Zg=-I:thUGJ:rq>i^p2k#Z:Dp(01qiUlaU?*ak5\R(N!QblHO&
%V<VpP@;WSXec6h)'P;Tb9oRDo=@aE"5QRS-qp>SpNX9oAWQftW&snsa_BfA*$Ju\t']K+K:po@:dKbfgKf<GraeZl/:,(WSWD?!K
%bE!!cW;Kq*IBcTGV,&2d#-PGcbS@dk=IBb1h@FMpXMRE6Qs(Ts#m="(=c^-udsuPtKoi[YAE)$97ZERr+-/tsS$O9l&!3D(,"0$c
%>0/&O?:-,.KfTlAE&$gE<AN87_:b'dX4-52d\i.B!2RQf2-h';CP8W4YKNeNBIkXUK2YJ>aCD8U@n\X84t#,rB3$Q>n3Pk,l"G*.
%$\[PFGcg1rnVL4VmYb$F2bGCa5gTXWP0g"hgEY5RSI>lnfu;L<>ta[G*W"ui?]oS7]^=-&CVW=%%!]33(*Af%3>Kf!eV%LcJdua\
%s(]@RrT\K^$1NKb%r0<<N@!tGpi,ZkR=hMY`F3\e>#Cq-N"rhC@sr7;*AB[>NinV*Jd;pT.A>5-DXu5P:QG#mfmBu?b1-4Wg#M!K
%\Z*kk2M(=Nc[j#UX<hcJa*j\6gcC-b>.qW[W\CD''W#mrT.J+3GhO!dImM*'mU<OU'QL.o0YNe7W=#';K_I9mT%[$Tn_$\eD)D]m
%Yt#fsg<l*@`C";5Lph9BPfoiW2,KHq);"2CNu?(gh+,Yrh'*UE#7i'i>QAcW'rP<,'d]6u!/TkVB9AM_!:cIWgHAR=Ft>@?)V!2W
%AH`!"DffDEXK,e79q:R1&6Xe\0^]]Q@^"BEkV?@PT6o&gjAWX(#_C;4ZBfR$f,rI99:KH;_(<^RpO`er>WB&E;4n>)\59L[MprL"
%EmG[?9t=ZRLY!9(TIuX)N%t?4m\;<sPE<"KN:I\OfTghfB>>hE&;$.mS]f??e8h"S!ob6nABn1QR#:RlS'Pn74S>/nJHd$Hf<-$$
%T($oEC["nJHhi_P,#O'^Xg7'<,2RQLdu]d^B>V%]`_QL;8!h/B5I!gTk"e7n\]NJ;&J*6R[_:@Tc:oso1A+&ICchLDNL'[FZ<=P>
%Fh`J3+Fa3q=bh6Jj)6i)"^PLt:RSbD&t_0_pWVp[m-Q_6P(3:afa2S\=TT6[lmhAV_/7<79C.UnPU"7/MK*/Zd/p`_2JM.G7BV9n
%HPZAj:MSCebrf\';C_3tPI%X-JeBFjFpIF:=KpZNW2GbWSZ-M2Cr$:+1=6dZDVYJ=#u`hN/nE"W1gRLt8AXo$W5[aY"B/\VNYisd
%.-hYt%(;d#\RYfoWcLMANT78W_LjX\eZVGM]5`/7re1kfHFd0/gn&AUGj;t'-S\Iu^mpr_K";2EKFMT/&\sWr.>m(52>kqT6TfB$
%o-0ZioJ..Ej+_o'OerYn!TPN`^^%#.`mheUKYn)hUKo3L'lg0rD0;BBgF-oq7t%p;E"p:R+2;9SG1ko9#5<.1dtF-CXuCGk`0<r[
%"'dC):0lj]gE:@o>0Eq+p^1ap88m/=n30;^o6i3a"aq(2:f0L-KnL5e6@rdPVG/S!XX"AGWFO`+A:T:he]JA)%\;K?9M,tPI`Sgs
%MmD96\0_Y(:]I<p;#/J;1CY10&af[0%F2gEb"uel"$r:mVF_]k5cDB=@uoJ;_t/p;`=Xe^!RFd[0iCk<5[J/4%Kk)BckERlA$]?[
%*pk[/<oSA@Ct9D9]:o)7k!6SM2FkJtohh7>ZlG5C$^@Tr.A)B3KcVV5I5qO8q#OYA8+SbsX?&*ol,el^M_M.`4NAM;>E>dhM]&9-
%>)XoC`[K5eFZmlh8B@*eA8?iI/Xco:>!t$O;51HQM-ber9p]$kL_E0;HttT`.q:lhJ/ElP+bC;c(:P!1IEI+i3n>GYM;A;-22:V6
%i-Gp^4(_(PTjU@-3A$9'lsX4:QV?BmeLk@cEfSQhCZS_gLo!-K0j8WbJcGf1CYL\,9A=,2_g%Keb/>>+d0VZO.g-&7,jf(7DP#mM
%JQZ^kBtUb(+Wsc>_4uG/[-9;=N)$@H'1#uGPlZe-P!IXXLlfV1-(;4O<Tb+T#K<5#Nn=9CWA$+k,&MF1CI\E820>$'f5?u40TG(7
%Wg8(U65RPHT=1pN3+L8!+BaLdI+@8Q\0&FpQ'a&P)6P#$(q=)u(_q;!$lXqqSK<T!3KliAZt9s%iD>n5k'CR5`sk.0N1P"`F4SKM
%[]Upap/PnbD4D`55S[#^"F:/sF8SWsI4lM&-GEURJ]\DMMMX<_.G$hM(]l;h>qVs3^9I%c9Z1&');/o#I]n;<D'I<V.;+)KUlD\'
%CB%GS.[h)ci^#U/pEdaO&m+ZR$!1,Nbj;Z=JIu3(N&KY*C/k;o<F\FHdOAf@e>U:Y1^k>_RNPM]efm41A.[bJ]%VF?kT^+d58=sB
%'$\*j8,S88S>@C/W3Kff<_s"KJ7Fe68pO`9T<STYe'+L<Cr^g^/><D8[C5j34fmHF]jW/J.H1mLg:96s<*l5'4X4AOb%Z_NdU!WJ
%;O4MBEY(`!==U^W*Ju2[YcS$24,Ljg0m3fh-^uXjn>MtZO,iE^%,8(,S;=l!8R0>p<'_R+(S7sD"EOC>f5MZV(a)-tU,Vm1NqP!K
%*a%a-T!V4haG']Pl>h1`d`T']p^NNW9MajZQ\Ku#YBYOI"'K8E]5d]GQ>/6K$fR=]]FC'bZ^]8i4tO)Zl!^T$`[`s1CnZ7nf`3aE
%8$^7?fJnPh4"3<u,RBPHp1^`Q,'XL\e$edce1-blm!Ntbpt19)(G^)lX_t7lfF.HPef`Ba3mnJg58r+Gi5DfI"$$E:*n</B/*t>>
%b-'HX;:Xec7mAphA3W?:g$c2BAII%!iG3qZ[2Yt"D_5Uk@)L"=8nW6:d`sc>SS-l1+c8fXN`,DMP<ISC#6o@Z?->Of_bRq0=;<>d
%N2-mm1m--f&Un\D`j.#8Y'9eY7E(:R6m*>P%eC1t&8iF&=r>Q;K-^=(4\)!&SkD&MD*u<DHKtR!#;o[`4<3&(Y-d:hS[Zi)+XmUd
%qrf1:dgMuG!52gBB;64o'X!9N5W[A3b]()k\1^8PWZp6Bj23"RlODGpOjNBL$dj\d_a;FF&P@]e5^-j/iW;&?V<1tT<9/On[@[dA
%:PcIOi,AhV,-,!Nrg'h4B2T:VZk!Ll3c;W^.CJ?u^bms$eHGe#b4;RaE0A-f$/X_kC2CehjdTcUB6f"65Z?RH%QT>E3)?N;"0gT8
%rI1XF6,pd^gQqFp/J2Y7I6Amhh/!.Rirkipetcg^30;t09/jJKVUd*8N;4dKjPI*0p0g+9^4n7rKkDP5KOml7?R8gRbHU?<X?s;6
%A#2LpM=pu)ot6QF<OJu%R/#oNNZW7`;,'WqT!h;P^L"V>n-p*u)Re8>23=D39Mg_hUimj&]m0Xe)lDN[\e(O'O&V_).-XEp]M4n\
%.:ao"#'l<SndZV^?KBTr[?E<tO2l3S]1KW>!FMQ!ksP`,;e1,:_nG16O8/0Qlu3/#S'EC+ERf/=1mYR_1_0t:?#IW4L60k888&-[
%EVt]gS9Bic>'?R@UY@CZ>jAg]/<i+4n#i4@>d?5pa-\mkF-XE<'<^.6^#;68KYf_MYKOt7=B]gD[>IHLC;@BNF.B9.XYS%k*%/&J
%F6t)+%J0&8;_=gXK=Nti.d`B3dL)(!YA50PMmO0_<"T[t7C>d`PLV"L_V4CpQF<T9S<?5p6WGS7rJ$;BPh`G,`4m3#l?mjH@3(^.
%5-d4211F*2\Z<\JPpR):T;6TkT\9k'mrIDaGj/b_I8ZgBT1i*-%?Zj&K.?1:Xk:O$]e.p_#X:<NPSY">!9l(L-qY?:!4?+JFR)51
%*U.8#d;V;-D%SLVIoF5bj-CP#GlTpIBNo?s"!G#hTZ(ip5ZC(#<`B#(f@jK8_ANDjR1tOKG?f!1=278qnmam=5@K8%a&I=/Z4J?n
%48[i<%OJ_kn;jI$XXS."Xb/L$7<T.aU!PadaC+.S(,aVK2nP%C(`F`$'IcgC+Gk@hmP4_UbdU1e7lXmW)Fdnp3RtF>*BcMB]Q:0f
%j1dl//$a:<b3KWLE)]2Q?'-Ci[8.Q&T'K1Mp*)_?=mWL).j`om86742j<m3!>:QU@(jB*On2=a\rcFlhNj+=/0V*4D?V/ZV//WC"
%gA2;<\""_oXQ*]Z/#N.E)AQO[fA4!0CNZYsE^k)bicHU8/W5\09TNFHgs;ODM+^$S;(H<n*3rbmB\]+FQk8U6&3c<b`iT<%a\(A2
%gYQB/Q7q6dbS=ac'liP0X:Vq'n_]jg1#U\p(L<7kZprhtViYm0PJrd8)=T,XDi2CN$C]sD-u@ZK.%I6J.T(q'E7j6uRRIGE\b-s]
%^Y@P)[7;_`\7HGB4iQ-JEIZfP/M]nEX.C&Qe`q:]$+M0"HE,KZ9ee)c"M7\tUbH!p:fL<gbYZZq&l:"3-S5hI9M#^KY#l_G?<Z6?
%OM,.'LBp#q?^tuZ+?Hj.%BJU77;;.3=ZeL)pRBr&k_[lrOK^-[m4.!:;q)YBH?+IV?r0iF^fXCsPl_%GpStij6"<IU;me-oS=aQG
%f_>r8G>-V&;7[/o$lD(?/6&H#XdaSHOKW#sr#cVX&Gt"YK]1sBL'%re42lgLJaWC"%*YG\+06&7j1u`_n=[U^";SP*'GQ).Q:QFm
%g>Ba:]+)\hM"$:pSe,:3BYp.tD"LZ_L[)Z0X9dsm_,M+r&=VD(TJ:An?urOccN:LB72$tSO(_MS%0RT;%RAf$VFM3FDGWg9p7R&u
%*G[4W5>H24Q_u9o.5GV>=uSmC1:Nk.=[;%e,'l=mj>GFfkS6[H0f'6*"BV]:;H3:=:_&G7*7DD#&1,H#%\b<.<);,I8?pbVFF_#4
%p.XU0UWeCupp*.n?iUk8P39`GGL$g-';R<t;aIsRASZOH>Qk?NDMB9Ad)g?O)L(,Eb2G8=6"`lQpX%(/ja6>[6#]@(@M%C3#<G!(
%0JGiLgF4X3E>j=0VYDD#-g,`tLCH)K6b2JEj2_33Xp&VdWXH3`cBe9fHkQu$_XWAU2H$OZ8!3Nli1S+'GFbqMRoe\9]E[DmrE\dE
%)s08=-[cVNOkS0d`(m$ciKh;>+ZdTBE^f4$;c$e\I5V=7)n%$RTf,i3NZnpm`;HAJ%>J6q)Y3T2Bb[UgEe\Q5=0mY4G?DLd1W*Cl
%N<d&i@>7.4,VUSJ+]=(%7O/9@`o?oC#&qX2S/N0%EMPIDn\Ce^i(eq=oU^+/`hkQgLdm\!/^R>beS:!VF-^ND=@(P:"io8H%ZfLc
%SAJSJ1?+,\,uc@p@]W\@Ld,+DVFI\g`ggK31;'6U_/Z7risb=+baUb3=%nR_n).U0[h4XkW`s!3i`N9JGn.4'iW3N)@SVrgr>cgF
%=Fj"Z^1pZ0%IqW*L9=4iR*k'@XQ`a6UXC?D7BkL*:6+pQh61CV+gMC]3\?2MKMLI1/$+!6@h[&&0>=u_1KMBOo_bfOc@ZJF9D^e5
%I\4F[/!Ju/`U(?KUD.:9\6(^7S&<'9[ST;W-o.S'%U6@hBj$u"m?eRne$O<aA2.?85VO0*J5?4W@SKY)`R-&,BkH4kU%t>#aVIC3
%k1cmJOebD`oGfAd,KcJ,]:R,g(-W6f:esBQ%4<C08eeGS>7fAa_r0S_f))sYc.)?C[2iGYOMJmC2)XpApsVTRrPP-3lL:cK+\7'u
%5nU.4)AhD2:C2$4(N]"L0!%9g,W#<NBjedNT:nc!At6MK%#6G_R=:mReD_%GG4+OSQWAPRbNU^<!uq4PHM4(p&You#)@&kB5)N#A
%C%r*D7>bNL]qNd),''sj%)W9#q)O5t`Ec5_SV#GSod6<.%X0UKn$"reB]5k/Obd4&nMWGLe_a@xxxx<km80T"Aj2D+)X!9A')cS/
%BLC(7_Z<hm(*bb\2m!*BCr2O<_i886XG@+fEp4+&ReTHr+_X:&6p*A=LPBN+DM8`#)1#AKV^cSj:g9@&?gdn/Qb$4b-VfIKj5uls
%f&9okXeEXj.M_jo=t*B@'mB2saq$l4E(7h=4Z8kV_X\Ja\T3"jO&5)&SBEb0eZL91A8ST`@k8bV+jan9=lHs(p2hQ"G?-ZL6EJ?Y
%^_-!oUtY$RKWK3DTA''KfGfbcN%j-'fGk)RRMM#MQObaGKup,gB[Ad'gdoRL\(4tW?XX`!T*#-t`3u<EH0q]9\O[e[H<fQ7NZOfm
%//Md[R2brn"<"+6B&XU#OQ\AmTh)t2W#H/50XifijA_2.k(,@p4kp.?'2io!fH_-#+SY6Xmt5R;?/X)i6P3kD=Jb0RJ"6'1^9mIK
%Lo_jHhr2N+0HG2C.+nimeH(q+j^ue#N-6^_p[.rcbp8Pb`VFJWOO8AXl+O]&I<=\Y,Bom*4@OdL6H5t/NM"0J_((@CK5Agrr5^j$
%*_O.YBJc&$!ZMKZ6Wn8V?Au7o*(oIi0NDZI/uNOCHU9J-)U[4B62uPLm&A#u?.S.>Tr[uKJui[$jCa$1@HY>\7\<Zt^)/"\k)T&;
%jn;Mj8&hT,]NCUS0sNI334s<3m/j"^VYKN13fW41ab+WDY!dB#3>%q1fYa0,2tOB6)dj$-d'6+sKl)aKWORZm*@$rAAQ+.M,4C1n
%>&0T4%JiQ19Nl8[LE9b?*Mkf!(4eMg)Nc`8p7O,cq8gGFV4!s0Z6[nO?Z./@GSm[K!@Su8N9*L6TM1rXgr`mZCY3Ec9Y8rnWu:0e
%lC:M=T;'f8/20Gh2c22\)h>aZ6t/0+]JT5T^_#.&'!ileX!Oi&i]&@[=edbaT1hL6jO`JGVjM0Y\kFlK<PcNBC,npa?7kn2.@ao3
%EDh$noU)ZO!E,/V2t`1.0ZX;(G;pP.;qk]d7)=G7/CMMe_2RK0$C\9s9ZqTFp:sOo)4SoZAq6Mc9f=L!WdKrmoYrH-U!G5hf<ElT
%)Mtia25pBJ7_TnLJ2]gt\6cQ),;iC5Xm\^4ZclXt>;+r.TGE<9dYNqtFfr;b4!bDs=9iU_HHP&WkisA+KP%;U+<!41`3hK\nMBW`
%1*,#u%a!D_6]'q,;lH>ZnXkdi/Fl/0;g4WlCe_X.8"So.9t'?\6r9DW:@HDH]sfQ:FcUm0_HDMV>o[A-QR71%CYN9F<JLJ;,U(7X
%b$f3`;II2Fj:YH>V#;D*M)<L;^^u'X(\AqA+%7'_N1CiqZNW40B%/>_i`=P\@jYh6TgX@K-I\4\<uI$(4!lQ>#E+(i2q#86$kmG+
%[Q.=L`I[s!.-kEGEX^')ru9;a$ulR))\0n^f>$$JT(gZPQSfVl)c't4m].lEMmi?.#Ng_K<L\+C*Wm986Z2Lr?]O?(`F;1!ZZ(Yp
%$j/o`*,V-CSO>"m8/;[=pbMI\VfsS^LojlcU6.Ea&_JR>H_g]cPCeIdRi(!M0+fWJ+S^`0(Vmqu-#R5'6gG>g?XOt!`,\ZgnZpj[
%S&KBn6WXh^_DGY=.^qE,)cBIbb-Y9/FNou&@27bJ=<)9\'ZUK;n\K4<%rfDNZe1*[M23RYTWWDpCkf6h+S\_[-aSt4&VePd@?X`^
%@d?Ckd)pF-JkH\S"'lXZ_kYA!9de5i&g"t,QqIb=`9JQlCsg?6P"OnL'-/7BF`jJjIHJ(Ql4;N9^5VXgS_26PK.e7CQUSr[0SL-_
%\nhe%'nbA[pk5]kPsP>LofODj6'-is)paOoF>o/G]$O,]`hrr-6E.<63r2dVmtJ6\M.&l:-cpq/0]H\Wc*S%S4_d=%SD8_%hfUpf
%]<(:RVc#MK[9ONmIND$FXi4_I<+?>`=ql"S4:8(b]S:B-A:oHVafsBo/1f"h7jngF'uV8;3j31JlEbF@jM#8Igi4PSmUX/MoS'.+
%g>:G8T+_`uEr-Fef-99%/f=#tR->ab]J,U8=N2B/Ud]%Sk+`oXk7k@B9bTXL[7(#J6Y0Upn1GA.Qp(T00?rOoSc"0KV@20nR&AI8
%P2-:sWjYs%c:AA=DH7Lic7mN.?o`/0LFaAX<1cUN,giqPfQ01WG8u3c/D7I2iYJ;L\?&%DfqG1B:3*A7jhS)n`gpFFH;UV4<KriL
%Z/J7WgU2,cHP%#.CW54N<<3&FXoUWESH/NsIaJNl]?O>K7_:M%Z)6+,K&<k[hO>=QL/f3Zq.mQe"["f+&B/JHX+E^8)`q-".`H0)
%l[p=H,`ro%b^r"!Z"Ri',3V>&0im[MEj7*;$Gi=E$!2u4e"m509=\k,SW%FX=>#^XPsis9bj&+AY_l&S,ir;2V=daWmQrHJ>Peh;
%"Fe+;9iWffQt($hGmIiK%T_EY(DjdDl!iVTR2QjNYKC$FBr"2N.#VhsXU=.*<Ws0a\3::u8W>Ta7Nc-c0PEkK6P^B`E)hV+*+F,'
%P+)1jWqqcU%_/<1(%>AaHXh"$ZqL5o_@NLQMQi$1,4&AjhX3nLc9\?!Rg`:&d?NOF-i>MQKY!.QGrB;+^bp43q=]--haO40kS'W`
%"XpR`R__bE?+CH5NK%,[,>K>7lti[u0)D=Uql7*HdhRn]JVVR&9^oXI9`5^m[oDo9p^,pC=K\J(^kpf;$"OY$Z`8I5BcFRs/l?a>
%WIjhN8l&nj'l4&@p8/>]0[Nl=A!J!]9X5B?:.WAe.E2q>1W17cqD!q>JbpegP&N@T8VD4U=T>,ac!Yr6*#,Yd0uu\Q,r$8("q\,>
%Ldh"CE`@s""Fi!MQ+LSh@3/i<6`[n1,U5\SX\Md:*c5Uc%Zpkkj<X3r!LZYAHSjRf@`*pu?"%Mk$j$J\b3"]7\t*?+3O^Gm<!ec2
%-e+`A9BM1jO,K%FVb>F?XphZ_eT+9+c3m8`c\Qu`N3q7_b!=0!L+6YKIK8%Gq.:j_`!nIDS^4Z3W6+!b*Po*]*O:VL#_kRE">M]6
%ZYT-%b#or4#h2>JTp]hS.c=ZKmp=_N]0i\](jZggqn#M)0OVN/:F@cU>RXS4H8(*[\q/cM]A)nOV%XbqnW0?]o`\CEYU`_0PCE`%
%U[Y0U_0V>lBo.7]?Ong("D`ep'*'S#MP28hUnc8]7@GW;$kfQNQ]f4e_A6?#s/WMI+_P<pSLP^5SXKR:E0goXe^@P71tLr_41/oA
%R@c#l23<#)!!3H;*eP;IZa'uEJ`#[C$/g`S+p+?kB*PVL7l;kt;BG[ne0e*oYjcKF%==*Uetgm=SBX8YB9OM6@:<;DTN7^I)h/M%
%QRT^`+eU"8`A1#0B%FOd.++![W+$[fB2kSM<._mG6K36/"+V(<U$@.]r`\\a#UGKPlm/+@,%12*Z3V;MLis/MMT#Spk^hnGP9Hh@
%[&!Q[8i]9/pBe"K6Fo'p9/,/f=CS1n*<hoD*";YgTHY+;jr'_q"JPf]?]hA4E.]f0;=e&8Q0:$Y8G&lIkG2oZP4W-\4N*IQ]!'Z3
%)ojO_A/=mI5pPIpmI#d@C^93@n0c8ql%gIeaeLR9q4c9[SP!7cNW*B50o:=1JLcX7MTCc$)s!I.Ni\7("MqmY_RuO?2IcMbj`/04
%h4V+!U1flkih7"Q]4r&IY!<4h"$)d%FVkM/8j*T@8\*+*C)#:/8-:9gc>6r6:-e1oHWElFjh5eA1'?Npq3R7j14-/jVSiKEgF_^X
%l7=%Z`-\H67GES7bnL@I)$f`@Ko\$",)5BI0[W^Rm%B75GDTj;+-a%RY%?riEn&7kJsj_Zg%;ul_Oj99D,(S$'Z-f)<.e]hPn%m5
%7QcM-1.@V\`ThaD"e6Us8uuW3j9.SVUT^u]U[fk%=B1)0q>'&_Rb[7$0FMD*Ajq[^;uj4jT[p`>CQs$#`T<CSdS9ZMB'["6+'J#/
%dB/cm"?U<?7oc)'7>Z`FZZPhF>G8<#Gri6*?k]]#4$-_$N"KPkr2dlrQ`uq=/5TVe#>qg-7/fj_:P\4j*%*84&\qDHn8X>"!X8:Z
%;c9W]4A+@;[g#FJ@J\]k"J9b#OPFkY<#:nTT)/DR+Wf/:`Gh.lZ](Who,S4%+r5jK.;%N+!`r2YRF5&'".Zd.Z;@p,3_3aH&.t%M
%OGA^E2+S)T)\.ac5g5uQ*c/XB4Fota)+)@mF$;'J_+7a)O]1YZCi#cAX(G_l9,*S0VYc\>BXd3,3qrM-X#b#O<cL0^dir1)c&^/S
%Jn4`dpIk^@)+IZV6fA=ipJ)%Mdq3mD^OU;8N$iUa9,;`E)_.<<gcuG[L;SDE!L^?#EeBKq*RJ8%T`cWq#=QJfLdDui9e`k,%q3Zl
%AHT3oVK.2L3T2sd;JfpY5Hp;h@&'q0k:R41KE!ub4:D/@`E>Z@k9kk3f<m[W=iU<XPthb=FG?QVm*q`W0dh#gIQSoB8g)9M-H30^
%+tCm&eI8%hO',/l'ZBSkgP%F5gu+Ruq^1bb34DX%mIsm@]f<bnG+cnnQ4,d:0aYlQIqJ(;7Ffk/g%8;MK"Do+EUH5+/5`PtL#O"9
%`hbDjYlHs?_UDaOaF$`pM,!]W,n$>kLuCNX3?PNGi'1Vccc"IG:AI/:&p&1A[+-I"[&.7<!:A*AqprId]=2X:gFa`Il%5*P*WF8t
%NRuRP^Sn_[^aH2&-<_g^3u.!#]\#Z(%E[9_Vb*j*bB/mnQ6nj"42K-hY'21mA/>7`qRC'oC+,`g"o.^e=r+jVTSTg-J6\,5r.WeN
%*PGjW!`pc2mK2P6YUO&-eo58U8><O:LYA^3F/M5V5I23t4qWhW^bDaM7P,WXd/hh@J8_p!T.KDhY7auD7aNjb#)ZMO=.@9p3@r"-
%%Nc$m$*mUZ0$\AL<A1BY>bh'-l3tN6<]<UhI?>!,a>/V=%TFQdZSc]$Lnnl,C-)?FZCZimM!6.5l1J\4A<c&M/*'[4?sjg`1)AD5
%p(_8fb]0&.[//5t6^#R9a[5fU),L,QDKX\tOlR"Y"?'"I]gJ5X[>u=S6`H[Dg45/+FCAcY*2qpgq0<\M1/Q^ZM><bO_?eSnh`/`d
%>m-67U"NPTIH^672IW*fC(b7%H-a=lC,cMiX&Ki)6XI[dg'ebj:B)/J<%7UOc)I=O?itp&hP$9'&:r)NkL?B3M/$g6)G-jsh<u$5
%[OOJA>'WI-9c0'+p5<GDmSa8PkE>!hk,$]WP6+(E7^KhN+hQRcl-F1XRjp845?6<^#+dFh7f,6b4#T1qZk-_V"Bjp[oEnC>js0iP
%at3\XL7ke0J?5&fb(QiaIOO'LB)-dUn+_"h,C?A>+B?Ee[[PGE4cW.G:6[C`=ln;Y?+=4K]pof=%9i[0'Vf`15I8UPU1B&>&nZ%!
%-T<i5-a*7Hfm]NU_'TdaBlT:U*RY>settD8-Ggp!X[nk_2BX>J.##<hV&H]:+K=c51H<P.-<EWn+u_%qWk&8=;f8PY:oJ9\>`IE=
%=b<BI4V3d3PEqV:%$bb1Us(i-LS$[+R;I(Fd:COre0\PtFK"AtF?!D1X+HEBT8'S3YV]np1@6i5@=q^Y6BcNFk`L!'7+C]JU9ZVg
%^GqWHUi'4sCUmST2uDT:&F\o=Fsn90Y)9L&<)ckY)P!h+9>&pE_2X=Eb@Zd&,l%3WIq0e[`#+3TU-7=R%u(fY*ao/+:o\+2"T+q@
%j*h%^1[6#M"uAZX<Lq9#$f.Td6lfdmd(X9a@Cq4'_K%8sFegH?E'UB4MEnFM.*Opng=g_k-W6.M^?r-l<^cq7,chi\fQFFO@Z\[%
%X1:02pd6PZfQqbUSLK-khsMs@f\JL<'I!4C".*-5hE`FnZ,9UoI0l$PTMC'\6UJeg'(irYH9XiIBmh9L)d-a_#GZ;poOq3ZLj5Ml
%/b0=#V"#'!W$i-rkA%/U%>Qe1G^%,u7A^9+nku$`;c#9pMU%[&r3k!-<4!ie[X\i/5DWH=]!DZhAIJj^<X`9q:7Oc;N=>l*;abdq
%IH+(Nm#=j!d-2CO89IWdMf)F&W1g>6bJL7l]V9q:`t;N^[_f_VlKlcip:CUWZV^^i<@!#Ueo?mMd5=u!SiZe;&J4%h1!^BLY:q@X
%C[)usq.6#u&"31_ikKBU]XOMj-:2,nei%`*DG_bJB'UOR<2R9t2/d@0C-:G(gYK;!e>.0JmI!5J<"hE^J#`ee_.<(=4V0oA.+hL!
%LDI?1S.:n-61*^QeE`0SJP8>NI+MZ?1/!S"J0\$T*9_Q*Bfn%$eYN>p1jUfY/r,("E%F_q,.itBLB@#tgK;DGdUX'?6X7/OSj<\l
%Pd5_h#*QSROF%R:#R2/T8Jrmape6jF.?Pq`N=Z%@VKg-00j,f"i$1Am]f97?D[,,UX'f)k)Fh!_i'P8Y6Y3t#@jjXO#NH@!,2bR_
%(p:Cbo-+tN)MRG[q^*g5X'&_;G@0H"@TcN_SRKQl#o@j'E?3A9Zh!Ne`KtW\SWF<,>k1E/7-$#j`9*LID,3j4gGoI[&/e8idn3M3
%!-49c/:K.q&t0s<bWs6)C.OFg<R/X8;Wg,"%3Y^?O;.bM[4"+Gl:?,e\\&2&VSc\+E8P1;A$*G_22k+/]TZQPj+Q*n41-FO\[,ti
%5Da$2:>`JAOh\t0atPtjk1<Q)7aa%c@7Y3ol4Onl4!uC-a&.[%[9`OG<TLaZIpaTkKi#N6B*UYop+t8-A08f@-`Y#mfN"H'aA.Sq
%P<;*5*&K_C53/"ZF)+mRO=XF[.YY^]]qa<:Sls!j]4^pSEg9;L:bkZ/RX2%]QlRW=(!M2-B3()\.Z"t6O@mru=F<:]G5KSkHtG9I
%`Ep6;9!%QYWr[5P.Q6e78HilKLYqG"k_F#r"r%)RLJ)qZls[qG?-Q#7m$eKl^b_;7^+'4,"kmqJC!S=cO'Z:Y4r]`j9X`@;LQ3B+
%5$Wagp28qi,LMMc!m,/Cp'.22+jOH6$m.$Y^=._MZ(<-6b`9b"g,RMBs2';dR!Oor!C2hKUfSB`Ct!2O;/nBFMYfV=<T2`>&VLVr
%4=P/F0mGXl0BOenZgQ\Qie^*OaOkZD2ot/VW4#b2Ps@1C.[+<'5*UPWJEL`=0^@&@L5>\e&5:'O8YjRAc;,(bbQ*#u;l!0^=4)V7
%/?':(X%k6,.FnOP-?E]_28a)C#E@h6hH^md^-qDWj)h8p*Sbi`k=YHVSOV.$3X+4n.jI(K6Pd[hhQ5+O<@fm:JE@@r+]EI5Te\]1
%)>2Z!X6:+SI-oLblLMX83=l3K6h$Ll0cui:a!)C15e/sSSqp3qmLoqC/?)X)"HMZm!2ZNQ8Y"D>^f#kA<=WRXm[6gBi43aM)+%[B
%n3kPhHc0fUrD;EfEA7k(8js.$'dQCsV6^Z>[Me(g\[=^\L^5)g]*7lIG0=J#2\bh&rL!K^Og-VW`U.#"`BtQ[g_=;A<LX+<5IcT+
%)cHfR&]5K_QFYCEl>i+fn,_Q.jcBplcghB4JpOqm@'@LDHbJWlB%90[E`-Z2(4=X/W>mfIAMVQ411=[.6<%,Hhc*bH1Ca%(FJir4
%>/AF:]b9'FHu:_C+.41VAJpY#%i;1hUuTD)"o:KJTd>NoaeZOWp-"KF.h+BafHsER*>):NAcTfD@!%oJ=O"EshI$%i;@q5Tdsf%]
%j*@gX>q[6#"%aODJ,uE1?ENc?MS78]e&h&55.&?QjnR>aAis"s\UNuD7n-$)`b^$*Ei$L_8Mc!FMsMc1g8aG^Z:kRdA=,CjMUmM-
%cb@@EWA(7.P:Aa86Nf`%!m?D^hM\0ad*1;j8^p\N107Qa[Xj9!TdDWR<a\L!^06fZ[8UNF$g(hj=<8\F),IQ_`fT>M\5W,dZ:I=#
%ls%PlL?/X21_m<r"*!rbKKbpnBEE(Pq:)_9;<$dA]Q[u='pk$7%r3GnC`J3KWdVM7?@F)t`oql/*M(XM\<!gQl!i$b$S+<;MD`hY
%,;Ed?#OfVd._/(\7`)WqWRRO_aM%TarVsf"$+1ClI&Y6g2O617!@ne4-09Pa*\LENBK?B7S!O:H."XgDe[AcGoRd!o?0cW1Q$3G@
%)G<+*MTH^q&\E8];bD@ej46Nt#6`ZpENk2GLmDGbOSe#k$PS=2f"8X--6C)=;TuD%ZHF@*LBYs'HtKS+-DZ>^QikX0OJ64!'&\G*
%'h\SM%!hsO,363RFBJ>m,,(5VbaA9!Bir;L[%EqD=k)':RY16YRQ0qmF3$$COl$8CYhid9'c,oNo.$SkLO)KboC%i6a@@0<I*jpm
%N<Q<qhg3A(5'R!3b9_n*ml?V^D%I(R(9/pQ3QVNC6[%F615:psc7%*WE8;aFfmXUegCQQ-.E6RDH;6'fW5o096$i_h]=?9d3o.0:
%@1g;F41.*Z$JS"]F>f[9Cd`9)JH,ko"jd4&!`dS!Jis5*R3e%3>'F.E<`@kkK^Due*HRq/#^Ek:!LAP0!-j/jZk("\JMY_$q]^K?
%C)"^c&C;uOAc%1qE*/@k[ir$m'dhSp^5feZRso@g>gIRXE4V3`Dma?2gSX;U<O__XXJ;k0<;4tjdo;'W^H!M0OgXf1p'ImlC_AYG
%ObbhbNe:&Q'D<[k,N)tdWDYW,C75JunNs"K$fo[u=B%Eg[Sj7l"!'V2S['kGmh,?*R')WA4W3S,#WtA35d<\!$;U2Aa#1+SWb`@C
%&Bu/Sfe[AZo-h(l6ASK]VsM[?M_24U'IT2O.m6Fq)+<GJ_E*4YK_QEP%YNKo!g2$@Gd*ATdl&&E@#Mo_ok.!(;D/a=\%k;>b2>p]
%$"BK?apZ;N(J/mWea2;".oi3ZCJgAR4\>Z9*FK&#,VgM$6q47Z>T7d&6#hrGZVUu?USdT]LFb<0&[.`jG6O[fo4"pAQtEFF1u\(p
%eb!t6*@P)WXpDM^U1%)Rmp1!dg;(+$N`0S/W)BjcrN'^,-GJKhp*9TJRiIWMM0]aA;S_^-,]2Ub<=&5:;m4e?=d$CT"J!d9fhU4j
%Z2C$cj_KLoGoZQXR%c:Uf+d45OUsLJ[%[t"l9N^BZkp-DG$5/0PgQ%!qS9Uu=!:7rlGK1qE#L^7TrGOW[9W'?d'r9a+Gu"KJ(>TO
%A."?[E)Bs*P*[=.A^D%ZS,UeSJUWcLePm22f3k2meuhh"R]>hR<3oNQL[],j"tQ,%igPC1ES&/m->Xt):*Ymh,C9n"=ehQ2#ZI(l
%[2)cn:A%_J-kf4F).67la,6g7A'PcgHkD5\8ghO8KTd2S<u6R&Q<i"55C3SZ2B+[lrW[aYL!D$S-0A44JUr+E,Y@C'0$jV&0=5T+
%oFZc^A+qG264pXf8;'umYm5A:,B2i*Yif4a+G?A&CDf=J:.Em1EtE:63t@rcd9mY!,o;i1ChB>(1Xk?#(d+/h2ODlY+;_$6%V7?F
%XAB)qq\[V_b(K`sX8,;I6b<g6+An73#U?MU^(\_.U4.t:/l7V$,aj'1dWd\ln7nc@+g)RjHC/sn8JcE8m4@nRid<_Vq9kXKMgT9o
%VMWR>\lBW<<9Ihf=u=a$;tcNHMaEN0"Vk6#B9YTajdo3VLDMq5aA<<^Vu38W(WJ'R)J<`/7%c%U)@lVrXFA_7Ad((pZ,">2ZiI<h
%AhtV3E9(OP;^VR+T-SEk:cD!/l)YI*$2k/E;m;\%$oE5b&AEt.I`<N+RZO#`541.!*P3ESqs$e,PaOL\QK'St7Kjr=I(JA\'STOk
%BTLVT#%,"Pd(sn8fG9-Z]0i_<XL%3?L@B]p;8gMHniO,%g<Z5)jQM;%"klq@2%0^poS]BG@[St7nI$\8A!^e7ETX5as"JNXBM';_
%H_n][JFBA$a0cNB7NV;'Nt].p,-qX:Z<&WTPe:!@I#(bMDXEiC4\[=]A+Ym\(jR$e<$:&PQR5ch-!-DG!F\hsid1n>:j'lE3)SYa
%s&j<(.0cTQYV4M6FWtN%`Thu*(4aF92Pn&oT8'e)P@q/^VRl1:XE9CDF`A5;M(?RR&bU-Xa>loQSuQW[PjY9L!S7YA'sVOB0a/2G
%*77rS6\esDln+E/_!!#D0j[>L_-IgM"3uNkES1qY9GKTk@$@Uj'F&>?0juI%N?YtcHWR=Bk9B;bJ3.Tq!0<ag:27pL()_th:d/F=
%XR_F.M.IDX2I4@["^ANga0cL,6Y"nMqV94!IhH36;Heh>Q?.]R1^K(S/o&$#+m`0aS=;h@aLlnhCnd;sc%tu().=JlWZf@C9G#'F
%70u_hV4WGh]Z2_`Y%$Oka2Eis&`9E,"QJqb-gB3V=r)pOf^(akrXH2,%L%1]EGh$gg]fN&/jEYU]hN6Bqi.Em%TMS0@735:Xtda'
%ocmWJ5"<bmZAIRW`onWloP%r98P6boOpuq`E5b"dA3qEK(%rh2^+X;)LBg>o79_.d7#Wr2'FZ8B`Pe4i\Nn*>"DJu"569Ma_E*9,
%!o$[nLfPUA@D]/_.2W^Z<Br!u[&:sPnYX_T5H-.0Z#?@'7k?2\*Kk2&g<jWTFH!Z6VKegA=2eAkLd&(Bj'<@#8SOlQ)\FEYcnL8@
%62,K`d0r=C=Q_[5Cp%&s492[\4(kKa/'^mJqa[44C#f`1rJOC%*E!825)`H^?8a&JoFpS0Vh.(BXsh\u@&`PA?rLp&?Q:PQ\F1WG
%7Q;`#X0srkQR(s12"bs14?E<tC4uaTT@pL>[N^L]mYH.Cn#nLf6SCPrPIHA-KttL?E@M%PB0iNQYW*UZJsWd5=,*3B^OSCpinXFr
%LiR_OKD`PC<M>o2hI13J?;.8_<960DM-c?3dsb5k4%$DDn,^n4'lCK5;bU3@oO_kNW\31R'&4Kmn!^iXROXX`_d3a.6Z%?)9\Z(D
%MLM=I&5m(@L^[30IeGcA(*]7di:b$$5]qg^#SrhXo_AXqfK_KHZH6I3D%YrN#"XCb&1d7=-r:M>"N_u\G3$CnK/'Ng1fn2aN=/Q*
%r>-0N]6J*.rGbnG?PS^>[_b-5^G[W18-bM:qTKl7lH*j(D88Frc]!K.WU^j^7'>DimEO^7I"mlg61s=KDKX?50^J5^212b0>afAp
%AW:(p.R-A('O(5R7D%Pg7AKhQT5LfAjD\N^ZiUA4&\H`Sac6L`%8j<U="qZ8r5bm4`]`JRluMe'<BYujPA>c32=VqqVsA,t/EM0?
%'p0MijkpWH#.),*%P!64Q$tIe7j3l2GpAVD>N&1H4:!"^:)aqTP14fr?sJ;[0+c<%V(laSOhffn\G"@ocOA:`_F',*&kO48>@C0l
%'"0YiX!H@<:td^B,1oGXA`k+fTqKdUO%Iu<5S==L[CP\'=GHWjaG88aKAGc'3sL6<7;5c16S$e5TeQSgD'a_mTkpbbW":?/pYg^$
%C#u=lT@oN5O-fZt8Oo&E&\qm?;JjCt\]I_Qi(/Ab6LD]:o/4T=8T`&MN/,^FAG)XrFie=F!,#:sXu?@mX.9:8WemdV?WA)p[4<l1
%mLR*5`DoE.!G^>Y?u+8_\[IEu\?=]Ddgll*Wp!^`/nXe[C39"t;:=#*#M'FC6u#,(KZs?=a?$RQ2pt0_:G;%0=^:q3Qk_>!Q>X!j
%OlCK98RMas1=8Itl=Y-(%$9F-;"!T^e.oDZ_.'37"hDL9bpkbuo.q%5.iUchXu^2`AHnaP\&F%f;8O:K!)R_;_qd,.-0PNdDDKBb
%E*,2[L.?;rZC7L);cE0$'/in'j!+#B^g_LrU:m8$o-u=V[E;CgA;>oR'bb%X.]i+WD6BDWp[^0K/X`)"\?j=9(U10uCMLM3RA]"E
%`#CgNSnj>PNS'Bq\[k+,OY!Im?`F;PRF\R0S*H!%0K/)1:a9]Eb)DLqYb'&X")=^R$.tWWZ"4,fF6J`:M(Kj^2Y,5D&'V,N^0[%B
%`Mg.E'4Z)YG8/hE@@i^8/1WZi7RrhRb;tKR#*<d;,q.!GX(qPf\f7,Z3BGe`b+7$"_P[2!f73\GVRDKp\F#1FLe8R""\?3XMeMMr
%*QPfM1U%C\rQJBD>1b?H9PKq+m'I7t`%@?QRHTtOCFLi+fJ,\l=6k,o@%dX[MSOdLRXB?cGt"%[eBSlgd2@s]-Am;QFR(8sqZbpN
%>(D%-*MX?U!HBD@f-o]6#ImVV*Mm+hqiT]uo`eHn1,:&]eKk6A.2Z(+,`E`V3]XE+%i'!s]'E'qN`egUs3nAs+c]?u/ZSYjf2CIi
%$e_ao+jE_R4_n<.da+d#2XGT*Sd+DKl4D>4],R]hbj%t7%[,.<CjG=47i"e^54f4-[1QSV'KMk?7o&,W[V9Kf/6&B]?+JtaiTt?4
%N\2gpibtQ):F\m&HCq"O;CR_+kbfFHRO]Zq\`A&[V6A^gbNM#Q\+]Jp2att8eXRpCP?%.4eeT!')ERbX.?`5>?qNpUD-_)DaOpnu
%1O]u[/3Gc9TZ!:2<R<I3iRcFc/h*&*0uKF]n20\%E2Za;8t':E!&in/8!cBV=e1l1.b,-PAL1,Ha>KPMP`]+aO92(SQ:VZY-L?0F
%kslLXQC`\(%%5ne+cDiA_Ipa`.2oqAN_`MuiKS0]a.14?TN!i<'&=F1/gQkB"-]hR(*q@;k%7n+W+e4i;F%N5/[U`d9%4'9m5+oe
%<ke_t*n$.@>ufpB-ShdKZFeIahqLr.K.7R88]/F=#BUA]!7q2]=QJkLga$R+e2AN7NX,oa#_pu'Mc-6J''F3G*`qI"]aeY,j2a0$
%Rgs1Tf;^__eA(%`ZKOQjZVh<>3b:?heVp`-i[2EY(DI]$WfS/\qjFFE4$&V6U'0)H$n]=ULQT'OLFGbT+Yl1GaS>D.(HH8g-HE<0
%e[)87r2Nah*L2gUd\%`g%2Nt^iX"g$Ls##m-'>76g()2(Km3cA4K.9%jq;C()`ttV3VW2PZQ467\<k<P;9oFb$Z!#;G?%d'C0Rcd
%%qd^7!TtEILYL3A,L8+fApJF`_Z3%46RbXPf%]ajaCtLN0h7.l\<*GaLCDt#lNGm,Vfib!k;a7NA1H6m)o1N<M[Ob%?2`"FL,oRp
%K?h(/1Q8Spc,U$K!s(ri\..@uFDbrND1S@\%)>GcT6(,%]?"#Hrp+EHP;*Puld,eoA[TDm>+@"UaV\2dI3g>c[U$$f%6e[7fG;A!
%GbS?k#'a!J#ITuT(j^nGQ"tkQPhQ7Vgbl^$j"$>=[W^gU,,+*MN"2u@-lS%4%G`br0Ns&"eeud5j%l;#YT@9GMh35r)cG:lAeO;e
%2tQ,r2-f>rNQGCo*tC2KM$b4W&A%qe/NMbH"2k8$3*bFXNEF.ejq+DnE/7Op,hi/YgmIT.JQ6JeHA&HQ4*!RRXfe<cmkuHaB(%oS
%/\n9,*ss\W9Pt)>)$:@^J))ETORE?__s\YF@]aln`H2<#]7G8Uo^u&R6uG7BkAjb2`fU>nla57WgDCPGk_:R=$i?1Uq\@R.RB7FP
%G,L(P<Nfl1%W186e-'&qVEodT(`Y#l3ng[:'\A/9b,UC[?*AILESQ2H_:7bOTJ`Zk8Tdjdi-FM^,B09_5iGLLi3_-+&](1=2l%Aj
%m\.d\+N&t1<kK<Sm7-B3E7lFi($H-#\;?,hV4$@u.or4dl5Y_s6*t8B.-tYR8[EfUj;J/(V8STYDIqekeF@7iFbA52;PWlXLPpLE
%NKFZJ3Okh%1bCSFl!FCgogBQ$fNp9uMGoVA.FJ#/f4Nt5Js&:7!A0F?:9uP#7>a6og,\rL+`V+H)57Grd/_q7W'6Tto",-MO7Ni`
%Ndf2>d1,I227XouP19qBbZrme9>bVJ?H8i=BbCYM9*!,EVVOJo:(`R,MdI6FqPVI3BuWV9P\ml\,aqmb"cL/BF442ms"88a&=b("
%_mgog)9*8EH6dF![*CC;ocLU:+9T'k0f[.`GZJ!f]3Z2emD[+m3%pdOCT:'Y9n<Pgr^7]Sq2"i3OPoFe4#"E*]I?BLhAB4(6Ea6K
%CDr(W<8S&\c'l[p*pdo4?lEUI3>"T"7caVJ@32/]>WC#!fitu5Aht)NPp)8G$ikt`9:Zg\O\k9R,6P7nCB7MU=]45(inO.AdXdZW
%&:em"9iPIn1AjYE5!#Pqg.4PHR`<W?;nH;!0C+acIB+b6)'au$MWF3Je(+P3;9]je/a&i'qYkuuhJC6@/@uDhK)CE$@R(XC_Wi)T
%ak(jC&:t=U75J?X7cB4_BJ9^[,#e!gqi#-i^!F5d2DYD$!L<EGf^3Ed1ZfN*]*+irTbkd\@iYI8cE.^V94m10l&Ap)IKj*5P]qiC
%@[TY)RX0L7(WNL#30coK`fs?/%;tM:M]E@18&a:Z<mAN3eHh*VCq#d_`/ldD.)i.)AHJ@Lj:k,Ida=]:p`M/Bq\iu.2g#hj@.\Y:
%3Q*)>Rp0gGq:W$YndtXUCQi;AZl2kN&i+.2D<'2L=q#-]m8Bn=+m^(\1NHXG;Yrl6&jF1j*,![41N#AQ].qMu*mPB!L:^H*2.N?\
%Tq%'e=A#]OF""C`NE[O*$B461Y;;IP]^lE_O\g.=bN1A@DIo(<j7B(H-L_/3O'U%7bSV[cefp8"dC2p!0=b;T#pMetqh4Orcthc1
%lebf-QI0^8fT99DPW`ChbUVF[#Q_K3TY5p-2>,co(GJjhd57c;=:E8J]a+e>BgrH]Z>&iu,$`bU3sq'e?"puh+hC7>T/Sh5j8d&)
%+HV6".SDVe0-0ep1][mUO="=iXUTe=L0mW.%p0D%a@0kX]LWP2Y%G-*_STc_R1baTBm+Le!-nZ7&BqA@:X'LK/t&XtPO]D2=$/<o
%!)N,#4UkU#5B?@im1gH*kI,1a.7QJRi\qNf[L(9bTpd&_\QD)+G3(89NQ1EO28A'ca:pGldY58&i";Fe"0dM'J7"!liWV]3Z9g:>
%`DuS8n2sbUc(I,Xa?;F9Q8363^$-*Ok><PCMG("LMG!Q@f=mL8fM82Z<TC`-8m<*9]1FnoU"FD,f$s#cS.(1/H*SaUM<3OR;GHcb
%Q=+c2+>eoW@-Ed5"_2-@3`T`h0a)_rf3G=>`=h"ABgrbN?X*^nXGFpl\:t-9@m/!%XOK;^'ipcc[Vi#&:LA`dp@^@bTH5MnKF2)o
%4c256l%16`N9=!eP?&F3J6/#4pKDc;@#5c\T.qKk#jaAF>uRP&0AZ8s*"?'$BlQmL;%S"EAOW^MgIa7/dd/68,VuCt\4I"18&'G5
%aE+u6an2s;!hi]t6FIr>7M`s\Yq)OOWQNa8*J&R-GqT_Tj&oJk\M[U=lSir.="$%,,`k[-&esVgT.i*:3YPW9\p<MD$kF8Ofu-iQ
%7*2?"@ULLV$rf,/p2;MS_aKPk/=p.drpFbehG$OKXRnc2CQ2G]'tjM\j.C)XbOQ)nGk;@7gdPRB/!3I]b;`b3d3f#HZIhUM?k\)l
%"\o4lFXloKg9r]BZ05bO^K-$NQP$,_28YYSi?_b9;TuhVc*%WSel[O!_\q119$^m"AMCX9d/HbQQ]VZ1fnWrRk$h2tSBH6Vc=VQe
%q9!2Q(,j;)#2Mu,ho0<_XNd3#'_04[<=DX?h(:E;OTYcHoaa=n5938Yb,MM=P,ohQ&cdD`'`-o4-bi$=0L[D"jNtU6e!G)aR#Y1X
%irR^6\=GWYKkXY9>e05Z;pJ!a]F+m\4,rpR89?d+="/j:K\HO8q.,8eg"bTj\mb"-c+KPJ6;QR>^WPo.Zq6OKfBe9iT$+ofl92rr
%RVMT4c8UtF@A5#rA%rnYlT*"s\B)eA3LT%V`=853M;^Ep4pbgMLhHODVW>tnimXb!3j(FDb"N*XGA0e":,4tN<*J3eD@i*d`X,!I
%#$\?_QYuXl.W7cP/8GE/kq1:`<.F645aUH&2IXp7=[Ui(6V?!cLpWZBT@(a\<b.tu=UEH\E_<L/A.9.V!jTkjC;n/<S^H]SjUj49
%FCuM/;iG1.V\>hY<!p=t,2)YKU9+-LnJ?r#3G+_.p*eO8nW-j0"-2YVQ:7]Ej!gPDRsHZ<Dbl-aTgrK?]]itC[%WXL@[,DnKp,mb
%U2O#%^c_1[]`ae>la<(nQ@b&!"l$J\C$7_h0S![_)WIuKp.(lQTQ#p]S2[=Q'<it-[MikoQ.Bp(bY(Y:g*E8><D+Elrkb+JO38;_
%`,-D%KZ,$slSnR0"p&$(.V&l;6<NC?)aeO*dsd="\J"+"^uVhhHRU)T]W59a?IB5rbQ>"DWtoRbmD;hXV6U4Os.MT4E<6hqEK287
%ChP=#LZk"G73e/B:Z@>9niObo=GQD$9:sJ"Y-("in7gjc@lYFF?[5F*U_LP%ZmM"=^""WA5p@RbMH>%Z;&Yu9*_k99;p"a.%0Dt;
%,41^nhC+.jFD&eYO5@lnYs?cC6EInA_5;coWZ.7R@RQRoSA99&ER2r['@M<,A)3rI[LNT2Oo%kq>KD^l@MntK",khhEJV0CEi*k%
%8:!25IRtaFmac-S]#JkdD(U8R6M4,5#SC!T7MG/E4N8Y$K;Y<PAUZk+ZN@<18nGH`_^L,i79Z3%;h:qUZ45L:T;Wl-f2"ND>5KJ'
%!D,dAZ78!DC;psj)a/nX6rk-CQr))hU70=Mi#$!9pg:9lnVSfY_(97OCcK@9PG!<ER<Re=W4E#M[l]W36Z5"R7kG%M#r3uTc.Q!r
%=lENT/)[+oJg9N@$p8L+TtJDkY:n.El\ePLV9$-U-\HEH7pjW#fja;d=c.r6!-XT%:kd<3UFWVtl*-6M[PLV:I&20uW.c`'qu[c>
%=^PZ;M,\L+o/p0IL5?stgUs8;@jc%$L\nHdap?Y;ptNJ,Oof(dN^ud$3Y.*78XNgel'O*KX!0hLp4Gfk?-n<M8d$+"d(M9lXWN"1
%&uf$VF=S?N:2&3YO`Ad%r8uW9TQY+pa)?0RZ;,BLp.+(f,rrB7#ar(^YY@RLK"r4sVRA46.'4q'.!>CGK`sJmD^tW76U;F,'nHu`
%me#'4:!-,<%RB\(a:+4\Og^Y*Z9jd(bpEuu\?m?H3fJ/UJHVEM<_H;RQZfup&3c6GBdS476HctSBLHe15WWEZ82/IW+HdkmftX9u
%W`C.2;lp79Fd`AhL-d:M@:!8MVPL^2[d>O_`qYuqa=Gag?,Wq"\khUq'3-khd?2LVLYsoLn%C*7dO4dl=CNOIJlX]r3UeVh:T.U_
%Z]u:'TufY+_5V5R$<F-.WKQq@f"6(D-h9'lIYAWW@dO/B_YaU5;D_#_^^Wi#7]NNldr4tKUKi&6dj2JgXlfub+m%)dEq'c08ku7m
%N-QZDU>00(bV:+ZUXL\gdtX"%V#Z!S/gR4_bUdi(Lr#b+]cZT2-$]hGQB[=`V,u#`R7N(]XIs+Kn@gSeTFX:pf.>QM%<q,khj[5h
%hC&YgQhX5,"[u2MZG+R!#`Jd#hu]4o2#T4VTG+Bl;f2nG,)<T6L9hap@tE$lRj_2CjhRR4"5(!!&EL6q:V#hd"_Ipl(+#8cJ68M3
%V]P&2$+kD4*MareU#nKd$QK\S=#`+28hlP,;L3,a&@n3hIu3gmV<,FWb5cr.1PrF;g^Q]OPNk"rC;<uV0/1CC'@X^k+5k&,F.*9Z
%Kg5a1LU'*n#kTH$*triVoF%MeW%q-)8rRfC+'$7H]O308$k-3P#>G[A0G=i$ds.Gh:":$R?GM;UVI;2E1H_^oQ5hd"Yb8%A7=T"1
%FNf"Elq4sEK5/P?H"jfB,nsMph&DHU@3]>9[D%!q^_Z7D(98_&^DFZ@$!!G]5,Uu!o?liVeKer)W_Ya_\RD\:91QSi+mO/c,T-':
%4#kRDb1pU.)2'&F(/Br[3SXZQIHN+\/e_?WV)Car:(fW$KHU/@hTr6C!r#H*9&#_M#$)*ILS?=;2?c([<URm<gREj,SShmJI&]O)
%V5:qk'7bPNAE8ZXG-B"R2A_oq<oJ/9bZW(eph+[edDJ-MFH>pROT)=AbWc_"GT)Z(E%.qn9^+aZY$DHBW^7TorjXWLYGJ+N;(Q/]
%oFG1l$_-Ve#\,AE:5uk4ml8EpB7],ihYE_=^%YYmIE(r^#5fg;H%HB'<V/:91c#G.*\mrH8P",$X`,r\r2%IuHjr-Q(YN+fP4kEO
%]s,4J\(i8o;b!p>]$JM_IrEIiDT,stW:4PcorMRsE#i(X<a8i`R6lP!V&.apqeQm,XeAUo$WJB7=,gG3*-@Oh_&%Yh2+:-cRTdb\
%6MTAP$_5[mQ^*rNFB9V3!YVJ!+pIUOj$F<b:<dgh6`bLq+nG1S;YSV\?]*"$GMl_">5Ar!ZOY9f%.k/=acbUh.7"fcU:Y_8J+"<A
%VDt[.9NbEuJJs$>W'reC1ItOEfO5EiQg@lkS`fgO'edG-)>IK:>m6]/\>H"Q4O<J"B![pC!t8&&^P%#=a^<`S>PZ]sjd]-;Pn:Hu
%UuW\I/MNW_Op=4aVo+N*0$tr:)$7X4'!o%OrCZjTN]ODL>%ueOX@aIQ@.A*>kd^X[<"Heus,>7FkO2\3%SP6hPsj7?WcZR']fIhW
%cuZ?`-Z[;6iiEdbDW_o<Df/7W-EItc8?IL"LL>0L1#4RigU5X6K3'&'X'7&O8S&u.4>n_!pUqi%bXtM9d56KA+&aHmC+4lG%&BtL
%898>pH89^5Xnf@QG7>E(H+!"-ATE+ge4pJN.Be8:SE]rnf1<U"B6<CG9P`<_=Vk"jJt<7,1EknaW?jhO/Ou&1`g/2F9m;]1:47YX
%%@_B<eJ:,50X5OMU"UMG&GuZ"r@B?TQ=O^aYl+>.[0*%5d9s=9quc%&>*@M!l=/'s/r>4X34.llCihufpGVtd9H%i;R1l3qP/Rc/
%3"R@"3Al5_Lu0<1E'Q#RR+pCnif($:eeJ".D=O2Jdd/AmL!;WR=TB4Y/4s1tcBoG&-JO6O7IMQUq4t<s9p*^N(8TY(Ki:+T4i<#W
%MVj%h!S8,VZGB8O#gm41<ei,]8-9qu\LU_V"_`28gg\TR=#+sJ-(p1T%0$*3_:5A`]g^(-;)^m3KIRu`"2()a1Rf0SE3$&78ST6F
%$IZOI.*a7$0\;)!-]5qkM0JdE(bfo1i@2,NNYn:X+uUPX.\II]6W\r'HEDL6U"qsG^O/!6U?VN@:](.7(J8qF-%XSbc7LBn]=s>Q
%<HDlh)iE!K;K.kLXErl#Z),AFLim*>G!iP6]st-Z'ZHlQF^,P)_;UCnUR%]P6HNg'Iujl2RA:m5+#$]pem>g#?'Y2:0&A"<I8*2Y
%T>'dF=J&,U0F2%-!d<(ITp^\g$FU*TE,I8<C\-P1+YR8n)Ai?VS-#l3$,teDqi(/(!_RD^&Qko-P/Oj6Tr+f@obiua+Lt,8n6&Ts
%3&`Mu0X*5gKAI&RX0I;"ld!F]TZN@MICP$FIcdc[4sQP2CDrq>r>K-=CVbfq$o:50OG'TnQJ($E#6,Mphr9<pAD=Z:BR'[`8):L$
%XC72sJ_pl)cR:ZRkqj9Y6Esd(c[_Z^PKd^R2?o@KO`I."9Oaq!##KCcW^*,SbSGR%``n@Lqn:^N74':4FS1SIY1:d(jlU$,V-:dm
%c*\S!";E:[!HH##JI^+#f^]U_2K'Z-2FpS]Bj&kjW_%dNrcka=OY7,&T.4k+fST*7W:@]7grWT@lSupToVc@AEiEA0nnP@(a^;p,
%ii9fJiHK\sPu1pJ6e0%f"keu)1/nbKa\A*n*2fGB#5LBj(d6K4!:SJQA8-"\Hl=T&RP"pY#R[lOc!X#*7:hmZL]h.Sj-h,$)RgOm
%iV3\c(fint4CM(!I,h?F4sOuKj<i>'X<h&/@9=A^LaB[PL_PEM2A!r9gDKrU.?O>6GmZp=F[V/89e.!A"?.RWq5WK9E%WX&%,qdg
%11>I099_rnV8W41:"hSn$,a9*#OOE:/24d>1p4&e&5V<4Ieh,jS,I46962J29X\7pD!]!6)e%uK0_QD_S\q95fGUroOskoK90<A$
%"=0Xio:0G>U;?l&=N'Vr$R84VR<(N,YDFP3X!$D!LfQepaK(boB%c.u3r:fS;R]R?T)g-:%.2W!!IF^g>Dmo!Vm6RT6#-(57N"o%
%)"C/G3o=*P$a3Ulp?G,G;l*7A[rVmMVNdk'.Vn^d(iZ..#J[?Bj0Q?Y#p)gpf=D+bM>k*-:hS2(<[ct@'t$?"Nc^NNLfBA[5bfK[
%%=8OeK@eG^2;0G=.-ja\DTLtRhaRk&gXB]W0b(9-YoV327*S,.es^6I9/rZXRKXoHSpE=`)l>25ZA)ZYE_/Sb;&UBmSLS(VAQ+Q!
%,,#@(*;4%/MV@6RDs1K%$$Q%S&bOO2hAY_oHBV?4G=[/"LNS5(3^S<A[m4"k1oZpS_m<?AVC3s?cH43R\^BV;<Mr,JL73fsTYHD-
%RQcdljd9Y<hK^oL0F-b#2Z[@F@7A6XM;]#Tl]0uFB7RCVb?^7hqtc^^Rsdb0dPsUK0!7JuVY,YsKh,'&%TR5TbrFFX(Y<_g/,4S*
%%:ZD`:!C\cl:E+04^tSe7;sG0!585D`^hN!@Q#CJJP]^_?6/`l&_`OL.Wt8%BJ_]M/L5[M^@TohT+I-dh@$f3_P,ILG@bKfEMLXj
%*f>RRU4fkoA_?19U7KDc7\OJamSVi;BqrT:VTk)EX`4/a3T!Wk?C68!;o089Y+\US<\J/j<pPt?R\=D$Hj2I&QZQQ>=4-nXhV.>j
%CILue_[ni\%PGU@B8R1]\BaofKNGid":)8orqgocECNs+Y`E^/'Hq$d]kFsE2qt)WLjmVu!joS-2-p[Lm*JJ0Rbjl3G#X%*Wh?kk
%R:Zf-T[$Rag't0ELuIZ$IP'c=Kn(%F/>A.Voa!$!@Fie;>a)V[@^%3,T(:dpAs@@(A-7rY[i&[=[EGcGE0UIjr6@;-Q"552RrRtZ
%#S_D#CJir98CruF[E<EHEJArVl&mGCc9Nitd0b"lhtbqr*2\SE$2VTk,:2k9k=$K_m2?oJano1L(pka=Fj?s9ZhCkD]rTj;+N9.-
%Ik;!_P3cD0g)L,d3)N8M).R\(+n-nb?";h`Lo<rtO!-bq_`]E^"6A%;SWP1pHM5O+hE9"X7)u<[<(QSi9VP"<8^Xfsp![k=Uj]fP
%PnTsnNdIHg<0X0fZLaA11%nu7K&T$3k+'KoFbVks5V).Cf-.rd4sUK+iWiLQk"7Kb@9ub!6`VD@^]N4:=sj(pcU9p`ZN`>s/NW`R
%]l_F]V!&kghk<0F_b3)J6C,AN'F18(cmLqd3gckO4@rquODQ?]3[%k<$Bu6N]C$E&q\ZfD,IX+ZDfY0$H"o=1,.Ui&086g+.Hmk+
%4dFaq(99e[JUUqQ2[$>bEktAt.PMS'LS5n.6B`TLk3h371%)(nF_5-FA=,OVLS86D%KVotB!nYA`C+*qZ%s_^$$QuP!kO8SgRmKW
%>BMVQ%=@E::P8_K",TS4L$O\V#4m[?86cQF+G5M&c!p.[8+[atP$I41)BAus.Umj$`\DZR\:-mDnKH%-Q7I]<PuLRFZScH!E'e,m
%-Vm)C5UrET_?S-lEs=.(%ISbDLa/H]o9dR^X)!X8nWCDAQPmKD;5[\&.m\XpR=N;%.C7Bd"*0]%S)b4N<HW!fbR?I7YK_CZUecX`
%3H&q=]WB?@,f27_8P-H[0&-`4UTb%2PUR4;*6"KdQkik<'H(<0BdFK,fQV7a76qhN+!Zkd6HHQ3h"aO'KV/g.LDr;),Vk!ZDDlLA
%/&6dZ?k`iR6Bm;"Fs(bW&UB*L#`04s/j]<JH9E7bUU/+X>/:L%"nG;'$nqg?2DF_T>[Jh/[QV<t)@@<pS6[dbHg@Zg)sXMjdL(>l
%h:*.U7(et8V@2@]PtnAjb]%GE5AZT\<pKjPL@>P]Ch[3)G$Y;aE>Kc:a,O^e/4JW?:C>s15nd00Jo:[q6@H'@E!3"S(mdXTdPPJ:
%=06r%L"#R&k06<<ZInA@=V#]f3C$,r`*#oNS<oGd<O?:MEHMVJ"r2;(/DBk<VskHYm'T]/kbq:1<i\O+o[WPn/dd*"=abZ/'uuW)
%QN6(cP.]aiEAnISh-HM%QijcJb&T.q?H+0+<1=,*40<^5ajXJUhI+>9G7/K!%uDGJB0jC&,@32%;OG^!A&5juUhRMXr<m;;+&*0d
%A3kY'QICM3F$FNZ9G?A46m'uNFO&noZS'h.d@I3/TZp+HQ>,L2G\u&:07>%99CDL>a-Z+FH\oo+bt9loks]CufPG!0@4=HO/ebcp
%;fbj2]^gCaYfW')@U<eaM9I#EBMnU8=Q#ZX]U=19N$msD"P?P1ZIUHPi!9OOP?VChLe9K=q8d4#<\_luPYgt'7@)UrX.-p)?Zcie
%/)]j^2"WY$!2M-8>O7HFfRs'W='u[CS@oiWeng5X2X@K/IW#3(]?QSmB@'':`MQZsUaiAZMu_ue.'7_<ULnZhF9Z#IWt$l;g:/1r
%F^QmGNiaX;j>>$lW(W#K'MHOMS]h/s.U4`lae@]m/4#>5(3JH\Z:1e+U6FjP?gM!>JfYp4Q/Yu>C<8GZ&?B`30s6s79K*%L"oomU
%/iq76_r-=+D(Ar:[5q+lbam2k]Jo/YK0BmN-M5&lB4Hpl4,HNNWlPo-hS`tZW6\Vb"hPYni'(V0;R;`"!P1#dMWm0(e&'J-]84'^
%VIJ)MV1A0#/]>nGZ\qA$l7SgCI^7+%-7<tfjK]`e\uZY)0'WMBZI6!;qd(l(qJ4;24He4s"L?13,>,ON-Vs6E*?E)j!uA>J*hiPY
%1t(gL?5rRg7DD&J%Yk9OB#I^4*'L)h>K#&3GU*8Jno?S!ZAV>>^BZ0rGlT(VM\/Lb\o]e=$B]X.,fjOR)C!Da_(<SA6I!.p^,5R^
%$'$F$f,Qs@fT27g6"@`&K<[1CCQ58-M-el<GamRH?![$%cD`4lJCh@833G0aW0,7p<u$k_j/TCMm"&s,Y[+*X.FC/Z9mc3(h]J*'
%`e^#k885@(Sq)@9XBAZ\RP`H(R:ZQtV^aa_98\S$Q=Po<R4d[R!a.&_eP%(t@shtX0He6WIB[)`\W^E"JYBd/X^Z6!=,g+'Q8L'7
%b+',k`6gJpQ?\B2c+8cF"Nf2-/b]k!7Bmbi,o`i4!\\LkYdH1O\O6m:p_@(G+;+j#<";&_g@r!PD\9>5T)rD=9Q"\U+hTn0_\$.\
%J5J8'd)@C4,rVCL%>gNd6P?&7WNNG7&uc`XMO%]1J'!1a+#.L?#Rmam*@]$2=P@(PVZ:GQ3K>ggq%dG*F'#81_41ueCYSKNj]h-u
%Kh8_-2A5fOP,ZCYY<#0V<3$?[mOQ'oq+<BL**O@q'CP^GAldZNa#,lBa:n7#[^V:nrFlML(cFXP/#(s`@.MO`,jVnKd0J\5`7--B
%k>c'Se5eB-&lS>j_jY?h0Xnh*NdWLFl!h1LbT1L2`RNBS%n/C(_-RX60$q;]G+&PWa;pb)+1^U^U1EXtb8$'rA/e\iN5D%^^ths)
%KnQLf#+gEJ<TFQB\JUO<(>03[.Dj^l/Hqc"IR2Q-qqA-\55P3hC-se_lI=TVXOocK%4uL?Jt!uR>hZbSCOsX.L8qV#A]prEB@`>W
%C2oH+.Nrlfd>c#m.7W4"S%AYI`?jguUoIML(?%<87K`;u':D1SMooMOcYkF_jsBQ]AAk)q<D2[JmNAYQBQb)GefpD[3kpM8U:..O
%OnU$cT%3?^.DhZ!Cj[rAs5'ha9<2HM@0*Bm#N'Ak%jBtd4O3LZ>1>?@>;#m&3/OYqAsJ:QBS1$=;N#+5E(I@SIC'MM;>s/A*XhUa
%@&VF?#kEb4mJt*(7NLoI`>!s6$.$Sd'mGC[MMh&e,ZBGbY=sS=)pb_U7UX!h)Spm'/eWh=[7ke*%@<c[fRuP24]UBH20#@BJRPFB
%LAbp,LIUm../`+`7W]3b][/rI>:Jbg;+X>!F-<HcS\a,<'W'd68[525hosRb-mE4$5!C+CNLMO/Kd*?75-uh!KRp7\Q9b(`&Q9.:
%@MsnD"\6E"QC#"Nq'gW1;H1:3G]0X*h)gK1%>49D[Aq(0B/"?a<AfgN<fot<7:Cg'X]J@xxxxxxx+<^[Tg#;p-t*]Z+!kcoY8KqF
%ALCQ66r?+QVpD#$k;\,C6ZRC`?jaN($^O+M/%/K0=I4TWM(Iah,#8WXp8kp(BaoSO&k.dZK!Papo2"&=cV'ijGhYq(`HGsa_%8O0
%MnbO$!G\C@a]&<X%2Dc\nDN7'Z*d9.N4oB-9NOM.gmEr7`XAZ.$<C&9\C!iTD..E+fVl:b\8A8$(UX]<e_PPG=?/8Aef8n;ht+7'
%$-8t\q!3e`\TO:c#-]p_3tl$bW6CI>7d1i"<BGYo`"e0n/hlW'3WTPM$#%8!2G'sFefd'QgnGsmWoR>!2J;=q8PZ](_[:-!7MCo/
%!=,&L,=Hs;*VJZD^6Y\tK`Ej(6i&$D*@$Mt8\^U><To9)Y;I8<K]WX83CH?=CsG-GPS2qC:9RJu$)0FUQ?%jd+!cN@%]2)bINo]?
%$3)1oZ!58OX]e5IV$UKjV)cnn*e+'Z0-gcr7h5"lK"Z%>impUt*,6o.5H8Em]!<?O.UMIDUVn<\/HZbVD#.PIKHIccf&e(V>ReT&
%.aNsOj_&Hc4='j*msQ+oTh70Nnb9^cJN6/<YeY(XN)*gP[@mHKrW?7'TG5fe;V(rA7p\uX$W]R%_0uLo'f8q:LZO?+n8P?BamgkF
%",WZ*g@7F8B'*:G^2oS`CF$?M\YTIrctWuC\8gHlp?'A']d?!<0^YaYXh&(=?bY]=Z#K(uKU^I&Vc&[iAAQ0\MiKLSbJernbiS8G
%*/D_9LU'IpCdhls/p*PQM/0L.UJHrZ+WSUgMpnW4KKg%FI+ecn[:l!QIQCq-aH=SX2+o\O`m+Ht^(>fQ+@!)cP$q>kq8eF2:'&.#
%;].0!)q)j'?,Sq[FV(;TXTd8upajkuL.Q@#/8-TYOK1FE@pDD("D0rQ4P;=qcad?J$`[WkigmsB=Fn(G?M*eK?OQcU<e1tE5"%0!
%bU]]biT:JDih@t59f2,CTL-*/J7d8(nU_0*lV`KW]PCZ'qFc_[[e$FbOcCJrg,_fI2uohl&a:u)\nRH5qU@>)Q3(]V!/UeY^tlj^
%I/]Wh"^EYFN/F#;VG0t!"8:_Kg&g!OUKN9&$<e3&@EUW\"q;0efOWU0Ao4NM/"Dl?0s9`oen5fo[7CE8@gFG/P%a!$(7Itp>7HdM
%'j]=CVa*^1dF$.HHmuik<PC:`'i/RQH10CO&RZF_bmlE8FD2A/I;V"&5URW#FP%:8>%$`b.HVl,lrd,H[jc&Xlq$SO'k\@Kd&K_9
%_m5)<,(p_#\(#7n\.Nj47&FXC6:8SuIefKe72Dd$i<.ApmCb(f$Ulb-1jZ5-**l\oMCq0]V5`V>LFbimTJ]`#CcQOb`n."X4A1nJ
%G!]_J%8t#G9*FGiafC(Zd(D?__QQqFcrC07)e#0fSjppDPdnARb*V+4;^&_L6oXkC-$aRI0`BuLf\m0So-QVLQK1AcCi(Japd%MH
%Q,=`$`muq>j%iX,RmlDPehYEHjIEZm'6c5p`9h#_[C6FIA/uk6Le:@HROL-bZQ8VmPl3mH!MCc8(fLkb`65W>-.Xu=Xh`r&D#,]N
%)8dFM?"f/D[9RUc18uuc64EChM,t2&C8raY:$:hsOS;kJ[^VRBA07c=iHQa7(m@_(E-rtB-Z6u!p3j8q=8Cq\Jt@R$g7V%:(4N^U
%@WD"T4[qiPHS$sTjNGSn/L!(e0nAp%8C>%t-BK%RB"s87B`NER^'D6R<ZV(rJ:Q@>oaORc)0.D^HSAm@NHMYhA"OqgFj`>aEAd.*
%,j"`n;fOoU7@&]prsA^7''-7Ge?8.9;fel!qF_?)FO`f;T%S9[;'\kQc"olEjNVQW&lAtanYpdt)qW6,l%U2r?;(sD"K".&2[\LQ
%Mi=<(P*Tg\NDARk\6-V!:ka9-`^sIk[J0U'8'-b20eVNP,c"G7l5g<;E.dQj&pJ!!;MfWsaF%MnHc9oh!`A4oRW2i;GV.l]N)$oN
%R]JBM+Z*l%8-l>e5a.$,PJK!O%&tqT/mrU@H9="rd<*n(H>^j.KsLPp=+_K#=fkWTjD:bMJhVmKKc9A,>SN=(._'O&Pc?@'ro61'
%-!d6@Ls.$_To_$t.^6_QbRt[c'E,Kn)@@*b26.u>6?$R/(?#!=^(eNNo'iW2dCWH^efM\N,YN<cm5r7kR,&>SQip8$`%0fu&CHW]
%FN3,K!Tujc+YIO]K/MB46#bn!&r@k7O@=s=U_ZP"c=?)fnnUmZ68qU(53<5`9HN4.)FlI<o!S6m(JGX`SD+a5;f6,h0>ZWO8dN8W
%:0i38`.=?`6k+kc&JVBubo!n"*;n5=jE=fO`NF"X#o#Zg`;V,A%m2qERa7RH.;9NZ[82W[330e?3VW)!?]/2M9gW4.&URFd6X.6:
%Z1a>&*uGT/QPXXNQ@:-AF("43<gG=G%[')?K1K.(.27uJ)J[YQWg$mjVC#[fgcD!0RN%")T.E-k853\FWZ5C<6Dp3qe!GG*B[sJ/
%;a2UC[$\0CGh]PZ)qde_\;=A\XZ8_ag%*J1a.U4sCQ5A)cjWuuND$9E9`@:s1[1ou#d@6`+XEWdQX4O7`97qR!>W$+9im7H,XKgb
%53?W8X/:JnX;VA.WF]89$?VK.2//(9FMeG3XR;kYajF9NU:r$o\ch],U35m!?Q#`:L*;1rN?"rPf>KsrkN9<8_@Jp'/dkqml7!gd
%$BPHeA<9?pI*:.$<DCI][[?2$l(K@T1sdht6?X59=Q"XP@DkJ`0P;&3AD)Z0;:;,-F0*%J98p-$obg6<MUsD@h/!g(>Xb^[#]aNg
%%]K@sNn`Ws6(+_8:\d>aWX2X^3-H.:>os<:?-KmVO>_1tWktgV?km2"WFT)!MUY<cVLn@f2Z^9%6r!n(<$L9YA67:uBF<foPKqFr
%NIjk`]8d_GOWm!KV.QtB6A@$\IK#J77B3AN%bY'Eg4^eqg!q!6fG9P\!Iq`C4sGQ`*C.h\%"rFMjaQ9MTUj.C0?1YNM="?]24Gln
%($*=@NCf7SmQ:rB"[WUkH<>KKZ+n-:A,qG^ngRoQ;cOR@B2`3QCF-uLOI`&3lE0D]ZfL/?&0O:L>=<*PNZVe6@h9W>"S9'i=0`+g
%Wb*F,)_`ihN\NE0:H)gp'L=D-.Rd")>(pE^_>RZ(.R?r@kbjbcq,3T[dQ5MtGZ;#*8ppl:.fCa[cGJa%qfn=cRhDsBhJEG1JRKCm
%&-2.:0Y#=pSm!F:QVsAPo9#_DG)K+<X&KrDC)*^_<L.fqNB:?BjS;0W'VDB4"2ZC!5oqKq3XNGG^$N-QSN&'#97TtdpqV_fP3a`Z
%.<B/:ZR/_LVMQ@6nm?YHHo\L]7f6>kV<ItSga5bHLt[M\&u%Rs-nX`??$Gi:-!q!T'ang$X16tS`Di%2=G0mF7aAH*n.9hX<'/>F
%WAE+^&R'qQZtXQHZHVtQm2X,]!8lH@FGR9pfI=ZeEN7ciMfD)N,4X+%,H/=,U.T_Yckq$,QEPt2MRQoPE]&^W8%/2L/VAl5<Nql"
%H*4)skUH'EU6D)SVDL)R"VO<k^N(Qr/]tq\YR35o=^[;"%]6%C9=\5[bGZCujg0]<Q;hjeVgQL^:\e2XW&PO+<&LOr@0J-FE=hP]
%0SKR/#cK499p*o_DGU>,"P^"GMZKr2:K?KQZVho<5V.WPFZR.6OW\/?/<+a1bKuubAs&,*_f,SXA@D@.']\`,[sU*Zj(`NaUk(0L
%VQ!8;hKG0+;W=dWMS#8C^^_G,!Dl]QH>`4pMsKS$EEcZ[V>qB)#_3k/99eY7Y#;po5agCQ_"kN,jG?RPH"B&]92Od6&%UDhbHN'H
%ghc@nemqQ&XZHhl6Nt08<9s6Yb*>/"<`hP`W]_'t6<Ib9Ft>s\!(2_h1:@V[?n$?U(PN!LW-_(&"Yg8WgTa\#f7WQ899kCUllR"9
%G-5_qHVTnW'e4$MVqXkd)3V*I.^bIR)u,177:;"qn4?!KQr"3^i[^-jqd]VC!e1Klhu.$-ljfJ$"2t$C^eIZ^0k8hg1-=qD^E8\*
%&ff!\W&:GrZ:rpg##BC$-$dn((gJib1"%JSK(([Zqr5rCPAQ*+\9LZSEG+ARVF/WjC"&N:Mci]a;a8dDjD]_#)R1DhRYRrb07rgH
%jqQlP"3smu6"\Xf>QX>ph3C*N*AB5GOAJDL^hO4(^?^d#[g(A3MqN-a?d0S$6Wfsl82;-]OJt3[Q:87F'!LH$l6FGrm4Nd*?g>C;
%ap&DF_4ZPT<J\0o789K99C?.c8HZ:'a>$R'W1F*kmDs9c=YeGo_#P)JZ80\e3gYdl.!4."=BQD&<S<TVeaKBNk\Ci#e!39G9p-m,
%9MH;?<hc4f@h;s%I7H/\K^k-(^3UmEcAGSZf1umTB!R5<VA(Q/>*$F&mcH1'hA)7eRJc6G5]iAn\I4H.Fu+A=*XCLM$,Bet@@]i+
%93SGg\:`'6JJboAaI4pjD=^1E;(]X^bR.O5@&F'=+^CHJ(9e>Q0fq7iP3F;KR3MtHTE=9gHH%QVo`5=-@sI+<@rRJT+iBE9YB&=<
%db-Ghi<878GR(KqK(&T#oEC.U8XulFfchhB;mb\`T;29Z;]!n8dq?TsJHu?M02R*ndaYB$"=!nZ_-AIOpFRJ8TI%q'#>GIm6-Cf;
%#F;nDe<7oZOiFl&hVa@:XqGZSnJlKPrR-`i#>o>hE<fdCgVD"c.17cd<J#:[&Xl"Er/ur&0*=ole^WTe*'m`\MHnAaG4$$IMOF[J
%"G1FJJ8S(4Qh*6anJkRI_Ojt1J,4uuAL,EpdZA0TW7Zb?#%E(7[PYms:MikNgN/9c1DK"]J-c&Tq##rKK(fQR&0">ue$>Lj#@U,r
%,&!.s:`O"1:%D54S;nKh-7j65]PCXn>SSdb;LeeaKPcECP42lfS\d,[cu$98@U#RuDR#2-f:bYV:i!7mBHP]^3oDX<b6D<llcR"Z
%U$D9P5UUKdSgcX+V?G)HWc"fh(R)??%sdH-Ui>d=#O4b9k"J\j=6Eb;k-7L3PQ`V/\HNMB:..J9)-K_=#E`-IdFP?ZdUr=gW0*sW
%C=%=N7Z3JGAoLQ/=*%uh-3_U*M['mok\aLg*9<IoG[`DP":ikc`HiiDOtP10EZ*f@<)cf>^<%;9Hb9&`.&D``\B;\UTOJJ8WkJhZ
%!*nJ\<<Nl,+B0E"\md'+<S,mUZ(EqLHW3E8_hhsN>Pm)+W[\&82"n,\%VhNV,)q2U*A1_j;ll_C'38(3`DE2`UpM[VgYAaL`P_iM
%@:R9W``/mL/Lrk"PeVj@f!U0X$%1$6>Wtl'XI@i@hG_2/]%`4#8Ff0#J/j3ARq9#u]fgtoP;FL<,XCf26?V*7&lr#\6;<'-a;T\I
%Wp,RQTpeOaR:=XndN(iX('o.e.7g9X0au)-\<C[T";jI!6S0U?Llk"R^<#VerKnG!0MX?2k7EB%Hco<e*IpXBYIf;fR!icQW4Bl1
%!BlHBI)s/:ZI?nYb#Ndl\tk8]C8NN6cu,J2a&"N#(_oF(HW&!r-=Kd<*FL)rp(pIXcqdb^.BV?=IP]P4PEJ\Lm7@.0VSNR5r&+Cj
%V/ZatAQ[+>a3A`m:43F]WXj:Ho!Ql>0i9\2ju'q'n<K:T<5$5GGY>A=M2!Doh(27gF(aHrZo$9oliH>?&9\pamSEN4!AD<rWsZ0h
%MHhN>NNe!:<G*d\_U5tA3b#kC1=fa3J5Z+nWD)H(_5%-JO[P;kBJd^GiaddE*s5)hhnFPg1^j9#/a?4$ZL9tZ7jS^t3JT2KG;K_N
%J&WR8=)qh!2R"C4_D;PKG*905N$1:pkXQjd5)4qPBlY0ej!Z@8E^]>-0pH`MJpA[HFmKd(&0*;<3ZB9d!$Tbs&-Tb`q$,J2Wg<-H
%99YccKi?kaS5k,%"dM-sDS,<I!lkiq#9!heQdt2p`B!F$"tq-HJ\RiIj^BoVmaQl##.+cBb)r^9>uj2'AgGMa]h\O=<"p]Gm1Tr(
%A8-29N<d9)]Pld@RCoDm>Z4ONj*AgoP=4HB7TE2fnBDStIorF5InY@RVkFZ3A2bt)1k..Z*F!JLN)a!?'I5?ke!=hnaIgF<lsde.
%m:Ok!9+4,<JUj2$*O49_%#'QDVAYo9@HtsCh%[#Z<V*B8.OO[Z>_APhEuLS*H5?1_oYM",T<Ku]lRZV5WbTose0/)"LV3s<HV)26
%b'WLBTr(bf+8_&^okG"r0o'M#K$XbBY!&`OQ+Rb_0d=SAI;S0E*+e]bY5Z%O`\@dL*.HStdTfpRja>eoKf-%O\$9.]8r'a0G>Y)S
%R101h$B',?XM`XD15Oim&HkP^d!KHd6V&FVF./r]cAT!<VQk%q5_S*ZkZ:kiBfGRdk-QC4a31n^YIOP;)CJNB&K6nb_II^c>Mr:c
%?=lf?,Pme-o9_Nn,cNk`R[2qZQr=$/i;'%AOHBcD-oDlMR/iHs@xxxxxxxxxxx\PL)]OP#"/c["(4,O*K_Vp0[=@JS<b-;nPoU:`
%E0N??nPo2!ie5HT[QkpIic$fnZ:?H\_5qJeh5,3tPKjoS@QHi[MMI/bNWm\=8lI]pQnU:S76#m:=OrS,8#V,.P%aK)a>>45daDFa
%XU,U'A/o?)E2%te5`I,li:JdLc_+mi!VYEt!.OZ.C$MR)h'+tEEHeoMOSPc+T=j[^/N8q(Lm$^[7&Gk-Qt"%Ogq>Q&1?+b\<\Z%T
%Vu\UOCPFH_'huYNWaO7&%Y5I`)6YbQLbRRd3dj5@bkXkCE0Ai^Wj1oYX?].A59)P"m_)kEG%@xxxxx]G\uIrKS_T'A@%\nMN7E*m
%,GcJTl2igAlf52C1'ROd<^D_[Q,YH!-.0Dlr$Q"SkG:-Ym]Vk]%*Z3X(OP(OAgoDY"OVREo)4P+9S?GGYRoh<@Am*WdG\ac(r-sh
%PfRd7r\Vcu=^3]#Z'!RUiR1\PP^W16ED3#?1YQ6.'98X.bCe3JZ4K)T<;ghqbdpG4&n?PR33t>S^/P!>L3b2,YoAPPip'L^gU+/_
%]+BBbfG%VVSO$AO/mG0^NL&Rkmii5pjb0Kk<3[F,b]5F3,lY[F4?@03Lj[CgOmsprVaI7rj;#e48/0<,^lL^&cM)9T<(Kj!M?rJr
%9$nmk&YshH<FlFgQ9I)A[E'k/Zf8@W=B:TAJ?"%-&lYI^k#e;j>[7[aXJ3ks@=g"6M6T@_4R<_mB7bNVRIDNIa&WJCV_0AgQY8TJ
%J'bT,H2KONF^8X\JBi7m0[kp[@Zr^c0\,Bu4MbiXM;/Mu-7TTdbcIu$VID2F=X^$#dJi0qF')Oa&Qii>aU"n0J7I;q7BDM<b<pG-
%DN]ZfUoXp>H;8=Wr0uh=d10$Mg0>A9W=%a-RgAh&0!t3u:(s2odS;1Lnee?cp1Qotb7G:A!GlBILW3?'6WFk$\JK?'GnserB)5M"
%6!1T8!$S-MmfBG'euj+MGD71V8Q1mD1O/BM]oL&^05ib;(_5g9>+6^GMIE^tK",h9XFUdq"uM@48#`)U+[&h1bN-'6c4RC=q34n1
%#MYPqW$:c/DMo^";tPNRS:]::Lg[bu@O9rM-l,l'j.^L9?>V#Zb_d#c;bEW`;;dAK<0-s8[@ETEfUOV6IYj/@1$l,8@PLG(e\iWI
%+=\r(Ab86^*RG<D&@Qe=*uG*bKP0Sqd<#HcT6oXfQ:!`@+1M)j:<ZHTS"^:Lga;i8lo(rSno#h2pYG6LOVDd*.ZO9V_Zht+=R(D-
%=i=sXq?m=&GZ=_DFC:(_0X7"-2SR;:q;GC!0dX[oC!'1]q0@$HL"k[M9%])Y$5RDT6oSn=?ur0%2b%jt!l7@BPad0[Pu69R:!9Ip
%@crPdTmQ81jFJK/r7"40e<JS)guV@$-QcOn(-_X[@[phF"+`D/b0Y1;#<]--*pq>J/_7jJ38JL/g#0QB,3t($gCqsQA#l1&2CAa]
%8h*?)d=II\F\>rcWhRb-'dLn4J^0,rZW,@)7CIg=Ch>8c(r#e_9<)unO<G/iJa!4@MR#$6D03=+fmZ2M%DdY0V3;KQ#&J)0=!3gl
%d:1k/lXF*R(YrI!CH@4GKQH_8IGm99"J"($178AESIAQ&XZ<6N@$sIAWk);47mu)dXllaPr%-iLX$Mh%[LO,]30r?3_mdY8c[<he
%No<>*57hfgbTa6\3W=2cFe%->8lAW+\Ksmg$i#Y-bJCn*Xb(pq=2+Xm9j?Yb>.n'\ESh]/NSd+TT]R6gW9n>&(94Pb;GhrI9T<Vh
%I+36mKQ-IR5bsR_ZN1;5jbHt4q%Oqi(mS7Uf:Wb9X9r7O7+aR4%I'<q_]euJC@rpaeNKsi!QaPRadp5\-1fh'NT*aoo>I5iH5@7n
%.a:NX1U=p71GJ2]aWVA.P(t?t,@Z92ror@l_4AG'mZ&rh+e.%s#T[>Wd/G?;j'urY;\:8![].Ida#=DTi'4uWV,^YsN8T1a;_h9B
%H^GOT=:[EU:#5Nl#9VE+l!Y`uAIW:Tr_R+gU:+&ieo##;j7RODq#\24@h5ptj088CX^MU99,j46o;8t=MHGG:O\>&*.Fu]L%($m]
%.mZ\dLX6*RB:4UH$f*%IT-b-r+`Xs.K&D"[h%MMS(-O'ML,Ca;Ui0"0RQkOZ/-6j&b3GX9Z(`hk;qK!C6&Qf<$;C%1!Y?Pr=II:_
%DcqEnj/=C!VF7KA9n'&;NTTp_1?/(HQ>!?pOA]&_M_q&*m++X;RpD9FbYu!J]N5Q^]O2S+)$'C^,4j7tC,IFsM)`jKI#DI&=Re+G
%@nU]V$&94D3B5':R`.[-r!ZM0Fpu`lFVqpF.9\8c_\%#NGXleDi0kiR)C4"8-s6HkejRWgeT8<%P%sUG-+>jci/cj`\o(cNq[dcS
%0S&i?KmM'^&hS5/GQ#ffh3g4Ph<(GNl]X$cfG(9M&8l\YPN&rDP-^G]R4$7U%paYr'r-6J6eaepdmjR$.mY7<$4rr5QV_Y1pj)2'
%Zat3:8;:P,`L;cf.Ps),K64QCB_n^sm\-"'c>S/?W2fG4nJ0=3)#T$A[]bg2`9D4*MG-cF^..c%m*BoeC"Hu+D`o/<h>-n6-j]J?
%I/e5o1NbnUD*WmOIT[niDgt-fIJ(7\oa"h@xxxxxxx\Z^fO%4`L!1F:MKV6pEJ$1Jr26glS&\Vefn/B*4j9"[#0k4H@,.t+@em[L
%A.bQ@IIfu@QLhQPW`@='Yu>FP#W1lC!<d@&1caI1J_H)hJS!^b6JUB7B40<>AQI%p,*(.V^>7%3$H6g`8t7=.hE`e(F-!dB&^FM)
%[Nl>@En5'fn-fn"V%q7G;N^SlB#+>^3$J&J$QLKW=eBE(DgOlWU2g7"ko5:h3Lq.U"9l[W_jGl,?pJu1$8_g_SR/%O`VIpf5<@*B
%'PigE<>5jQMYQ@1^\l3R;HeGm2GgeQ&iqg]'+W*!WCm)M.%G:,<[e%`3`EuIP2cD\rkUb8]AStK2GCObcUp"[&5b-QkKs%+LbN97
%S6<&7U;>IU]R%!._*TV!=l5T@!Mn#d@WZ2>(f^Rjg#?\fm;Vj6H2"m,ak>1*9R.Ug+V*@fn6uBR:hfjV$QOds0HM-eanmA#l:a5r
%nnkV<$BX>g7TLpt_9s!G/Rf")R%eT:Z=%cccDN:gG_fX,9k2)&dm<=-jsl:JM\Sk1_pHgDp`#qR68'hQ+2=:DLdjYd7o<7mUdG!h
%Z-Wc`@?Cgh\pPSJ4oFei$<"fL85MBiKZ$iBQ_HqAg4i\`P.q1V)Z[/p15oLu<s!^Bna8KL.b$"oaR7T!.$auCSRR;pAl?Sb;c/&u
%6=@GJ"I\Ka3*9ml`hRo#o58#f33"[O<NrA,6AbiL)t6AKFs/Mr'@]@<78?]%8J4K#0fESQQU;?<XUpJ5Wb$sDgf/`>UqLP9?2_`O
%;DCh[_Zr\=cKPCeU$p'EaKSJ8,"\cZl-O&o9?CN7F/C33E"HH3Z`n+";cnQV8<R$$cgPkN]#aE5hX<+WVno+0.c8=AF^_%SaJOF(
%g+2rY@pFei_$J^/Y-/AI2=)]J('&o<1UpLgc.`R%m7m?Q(@lo9%(D;DJi/i@_i?LjA1[ZWJ=b1A]2^lPVp!4CbGjC/bLtGH4T"ml
%=sM@#o<faNVB4Wka7la8%s+XSHT,R*m3bT"SY+4V^4ud,];k7+FVp1H]?eh-bLp*_HL^1s*?rb7I+u;oEAc?.`*h"nB?=gaUqc(9
%cQK8*%#Q>h"b`5.&jeQhNq;j1J>Nj6iHDeg.-oW^rZRVTr$m:9%WE/tKO=9K&^abN[4!eTna7/_S"!ejYJeFl55dM$lHD#.K.54s
%DTU]/EPn7^SQ)dX7%*>!6inEeFjI76S5.DgSIZF1RS<t$b$qOPc07S/+f(BI48F)&o%9J@lcNTXj/-V4*>I%2B-%2[D5h!=]'dQu
%rt)YE=$8uC2_L4%`s#ZQL6o*"O8BG)TATXe?[Vb:s-:@uoe6@$^\XSfs8K5%r]gA-J,738r0r32Hi<pcroX7YgV<KFs8LcfppYbL
%]>+<&?h>F>Omt:5'dp5l548&=g1pH(o^/j^+9)0sO+7.9O+[K*>Pn,4^\r*N0n&pp4T<t4T)VAugD"kjK)L)Wqk9fJRfE9Zr:dtt
%OkZ*"o]9;hH;8%\=bZgn9F.YegKI[UMVC_8')^/\F'pifP:D]#$1L&c'M8-E3+qM8nT6&&%er!6X<F0];TDX$D[K>UeaK0ET4\TJ
%n;_fr"OsC0SK_WD9JSjG@1M[H8/J':-8\7*(E9bL=?rOuVAP&!bE0hlP_*LeB/6iM=3o*q5C`[#:dr>H.$Y3k7ZI?1<8mm_iBE%5
%0bba,s(l#Ss/`OYRe]4#+OHSmKd!`,du_rFWNZ%YA?#gI2K40t6S3,2aZE&SCKq,o#V!+I\uMN@3grnYj2_;3TYdFVLe+cjN^;[S
%0Qh`KQMRE]cGE\JoK[)1Rl_i;+[A3+TdaRU"RH,"TWhD[\KN#!NbFqtS#>PR&VO[PX.KXgRNSO0'B3]SWYWTHAD-"%`S$0#9GYte
%G@Rj".kW=A)q8-1F%@#aU*a$nmKdq?.$B1*Yhi@>;&j%UD,I0srmV(u1dLHFFQN5)AB(u%j:L*QC?0oi-Z+:ob$+\]4AHHZ6Zj9b
%l0rt[i5.WZ`82dPd$!U.:kTSF(C4<PUhNF%K7s;=(Fnkra=#E&6XGC5rXuOO+WS;kAf%mWJqnppV?OYW1WB8i99E855D_IMrV@2i
%CIaqSatiEH-3/ZKSfjQX2,0A1W*3?&>-h!iM]UdgaHJG1;%eT$lDh3.=5:9;%\e7(%gKie:B`7A-0Cir-o[_-5l\0jJgcT7<1iJK
%Bgh*hdVVLOK3I]k]O]s)gH$0<<kj+^ER&qm@Kr3KUnDG%iP\h@>92e,1C;H"QpTBHc#H8(&:1,%i81X$3t1#c'L5V8`,<]<$YLT;
%4ph:P61.A\<])[:G-bbJOk;ZTU?+(A=JF_+^mr9m5!7.G5uKr!LkKm^>QR%V&=iq+0sBIVm=OmOg]EBp'#laX#8uZ^b9<cHmKeBi
%0"#Y!Aqa)Ra<LS[1kZXC&ig"qGM:@dNEWq$CB4s=&6pIM/`Zk%XWeJh9,*SO6c0p)SP.#u!%\d/h-1:8=mua7OVhNl^1<Y9To4=!
%&.?eeJm;Zt5MF*24sh51T^VF['J<RX!<@%Yeh:&&,7@5gUigZK!G8UDr355f`ioaW=E0#//#a6T\')o2AE=bP"d"5Q(duVh]N5p$
%aS2<6p"1YT,hb9<X5o.,+r<[l\e0f4JE#2fO;+0"08<a_]BF.#\+pO\X"LM,6_oo[d;5R'mDIWSIQF\,rTVibA#]Sm#DDEUrMR`)
%je,12"f&)EQcRj]p9<@0]#a1=LA+H$N:='><H4-R8h$EO2SEX%-j'9"6k?i;VH>m/r1PEIML:/f(ga!nI>hSMIA\lk3#6^pN.p\A
%6Pe2Xeh,<uno6n$89<?-eM\Y7ZM4JmHW&SW_9);uk2FE=15.Aq`cKpKS"O*kN+3KLLpE6>dE+?1ZS/n^&`gFWaXYi$8t-Da08A=9
%dTFZDn.6TnjOQl8,E&h"7WJ$G,`TO]fOFKoOPRB*e7tNH-?$+>?H@(+/[9>""q(rN>Y1V9=qFtQ=\!F=+DpfnYCj91DJ!e8&1mhG
%,a,ODk<k#r*L;3mAnZ]B9nO_HE?UBAN%c2E<JNP%!.iRVP#;bZG0QWEJtf"0(k[^>q0\,[3Y.nb01_<\De_T<h6i*RP"hYn<.IaI
%hsdg;[Z;Kgch+QA'0gTmRhd?nb9S<+VMm5onRXmj0c8B6R=)9&as[P2j>!'`V&oam:'A]B0V_AF-B%<;LCdN=jEdWj!n'b3)uVeK
%9.'lEWf0*A1itVY?e\a4e.gMhaa%Fn'J4JfdTIiL-,g]]1,UE+[,K*U\lrdmYdou]E+e-c&VHrL'eCVd?.WM@JmA\p0,lfP<'PGN
%(WL(Z/?H3@"KMWi9"2.FP]=AJX;W#K[r\F7X0,5'7uSYSf3-kUPj?:QSgsJ%02q;BAEB"T\YqWX(\,D3>Et$!5n:<d)f4V07VU!'
%+bM/5]],V6iIq)2Q3=7/-2u[\F'FVnep93GIm,MmL_jW_KPU?FYDR8hog"%3[7g']4V'S$4U`@RF;#qG,<bh?Y*5@b\:"Q^FN/s:
%PIAtgDC9k:'/[VuI44/Zmlt1QQbnXYH80h(li6m^&LsaePk._4-0I;sVW?P,Gt<p4#,f$&R:Uqq109A6LXTjOP&GLu!$#o4gYV9a
%OGZAo`LEA#b2eE\K1B1`QN^+HTd:g[]9WhfiZkoV!cCd+/B%JRJNteqhWLqN:kT*UmkuRs%Je7>C`\tk<+iX&%M8\^>=cb7;r)%E
%\?'+>Vb=c2jdDd6Zn=$C<B1Fg>Ce@0hUj](O,7tm(u\`4eEnOF,'?*;>5P]W"aGOIf_GBV0ht--)#j6SFj?Uk^65DjBD*,^nOi6(
%Z:DOB\LT*dje'<0$A@7#,CnKGCI4N/b;OAlq^ui&ZhDq]T#:tXTP=>HqHCDnnIYoYN;1"($$YX"*/h8$Cgcmd>5[VAFj&6:mQ4+H
%mP,\ebS&%q1_=W[MS\NHJlcle4:NgtDEj1GcuD.SW=dk,`NBuo(_Mkkd2/RkH0.7aMPTITII?%+et/cV_X$af0b^$DKt$l8a)3QT
%0rnLnU>]hWh]M/1ined^O<Cb@fY^g0RY;sRb7_$_E/O+b(LF;WNFS(Y7G%E?piN*.9_;Go<33,;8?q[&dMp59A\S2A1qeBg^TI%E
%&:/eM-b-oWlk`HqH!>PTc^W7oKjp*h3_qgTe4Zi4:$d("V^5)sC\i#9e4K#GF)5+%@e5$Eh5Yp*m6S":hnLO^qtgbS;/dVe@66TB
%B+kBPZojB]JjJPl2lm_;F\L7ogSi>b8_L_h'?=F/s*D#AmSc7W/3G\cB05H<2oAgG3j"0>/CQM$_scisHIV0)M@aC\ds5'F$,I%i
%8XlKB,2lGRBYAnH/R'ie*mqEFmr)eOq7ZuO=(iq"k!Y<%I=E[bj0t>QV`akKR'$5^ZqX=h/33ApIGjRg[fH1KO<!4QJ4^gQ2)^?e
%D3Q4<OuVTpL5PZ+S\6G#s0uoIk8\>PnKu"WHeeR"@rFci%7`fm\#?cC%U$DK--&VWfjj`q5.Mt@-2u"cmS$\5?gg4ePJ';imA;W>
%?,lYRT/'SV/h!:9GVOQ@0bi-RrgU,RoOm1oiU+W'*"Hsns$J$"54c>)/p.Rp45KX(_Cas#'>BoA4+E<`Vrlh8kHQoEr%rUC!QQm+
%,1(kl+\AnJ&bqn;%ZPE2`kFaUN+U"/p>J>^?OT)85?^I3?J\l`VHC>FJ8(>%HX325H4mTrLb'[C4D<_s`IZBU&Pl8oW0u3`Jk/R=
%Pks>Cj_.W*YoS>(pF3+rk!BnJ@U@G]&J^5[gdkSa5c^-t,-H[H6#88BDtk@;Ta8r;aT3B<fNjH1#k,`'1^'*F^j(%@#NM<[+iZZo
%a@Kg*0o"_"mRa#9;GeK4[,SSeN:.%QOFCYfHW_M0n_JOiqDi>NV;Yc*]:Qe9O2$&dQ5U.]+KFu1G/S^!2L(W_#,mj2@7N%G2IdX&
%qe:@2V!G6#ah4EI['at0g%(Ld@d6G4``&j:k(f2`X"I+7KcMBk-?',FfW"?K<_p(a16^67R,;HjNT*A"DF2j2s%p948YKdi>!pXD
%fcq^?;>I?BDH)fu_>;Qk^M;XQ.0+B.8RcnDX<3l=>i)$CnB7]XJA5hp;?O\U18&RA<<n>;"4eampMVg8=9one!1p+3(J&hZ<rDk=
%F.<!X3!RYRPc@5:#,nF<JKdT1!Mr,0`N)._KV8-5**-4$"'Cda:h\6Rk,FGB:S^NC?l+R1\!-8b!*Z'+a]jW"5I)440ar\G`;+gW
%'*7ca1)FseYitQe(-s(d1@,q#WCC=c&&2dX2I9O,$Rer$)B&$68dp`@:mYjIikVpCGs(DB8:Nf3LUt4uJH#cLX[Zi)/=`t,es6hE
%]lPj+VOJB#Jk'8`I7BR1AMo"GWpp)_R4aD7(-AMTO2-3rBRAh`g(o)JpQKS9MDS:"R&aIEBS^3hmXl_mfB87FZE-b0)3?:EO=G";
%QS/e9)A)e]W>B4!U\ojFG#J;ScZCnd6r!`\%Qot52b'tPEIfB*M#jq.nl[MsL>Q98HJ"E77XCh?8U(m(TsG>M,DJaYWYZ,u&:C=B
%h:5+59qqkWII[V"WL4]D`<E7YX]I*aNfc_EeX+Us!>AQK=N*5s/glTt0(^XE#lFu0#*NQ-J>/K3(LmW'=-4mOl^522T`gi"*`J40
%bbQ&_1"IJk.]c>m1*T')5]Vr7"UePZ,..Kb%$M+W:fSN)^SDe/J86?-L<:A>bRp#(<7_?B9oc,<VtBu%0flOYZ\aHXY%D7A9iH^e
%7,^R3VMH(EmR/:V1AWHUi#Y8T6=k!TJco1%^f&djWe$9lmQl/&cC3'r%t`=3hP/:/%0^,c*lm7Ze":^e814m$aXp')&3:b6*j8pl
%O9NY1;P7YNShuTGi+h,'DPR=+6l+Ij@`n-aq34;;'I+m3\nYDC'0pTf<u!Erj`+B*8jHZ(k"E,;T::FDS*2rPaI9sbeV1pi6Ro+J
%j]:Q1@.=5gP-'h&*"Aa5<42Po`R3S!J&.&1-QS,01SJ/[]SB$o@pOV^#Xj9,Ot>XV0Uo!a)/OAK/FXSmdTFYkDpoE=5p,JJW1#O_
%aL0I+a`.L(I_W#-9UM8M2PU<Z(WS6[V(_:"<H,A1!_#ee;q2kD]5G1?/Zd*VmsBK\#rHsCLSPY(`EQb.N!'>/[H&%Ilr&5*0Gk)f
%[L@9o3"Ibi'%_hk)o+]q4NS6lWuPiecDs]]-BXb?fnG'?C1&]NWPCBaEWM3;C.cD)HsD0SiJ3i5!"aZRVMb$q5Z^Z]o(oUG-N<+V
%GVr5\iPGf9TrDf%At`hCUtTT"E[$tV2#pNG:`s_@@mX,LH)UBYH=*dSLJ;tqAIlSc`s[KB4\rpF06d][D3%&bMq;eWIp(nghJY0)
%5-ek/]Nt5s%bMh,U<UL[#`EOSlk]<M<d3<Xo.R]8[L%@19Lb,JVgYX=s86liSN`57*\pO#2@5hMhk\>[2>nRL7@]?0](a1(hdfT$
%m;:E8hQ"aUf-FP7KOlc1>sM1O]TjaRLmk_`djRX.(MR?A10s#SVsG%7TJS=qN/5J7g(_CU$uNg=`*W"9ZJLGC%c;pcfL^62$jPiA
%]5h!Z-R<H6cmC"Fd;#b]>25@e@4@3=Yf5oOS5"*CGTO6I+S\'bjb?l+:+2n9VJa-\Hrf!H*c+kZI_gmNWt/0g88k_a:3+Gn;qUQc
%<ZK+K,\.E3!i7@Y#FqX*C?,]@4(YL?BLXN/_GdCqN;,9g8;UM(`5EiT"d1qSjqRA-dST*#Qu[G*D*CAP[5sj.3(hi8O;t!K#mU3S
%AsEX)RRi$]B[6m9Y3TA'!Jn_6Nen/gaOPqt(5k=(n3LP/Gpp7Y,mg=/YN0((8Y0k(&>P>h9dn[?5VIT[.W9XuB2D!.jm+U((1kZh
%8(UbJJ/lbX_Kc<g[+K=o796>k6ZE5?YJ;]9q5E=n/EIkN#7q;GLs?^K%4PTp@Es0\f"pNdlueSbO$dLfbs4Su+]3Ks6m3>PLV"03
%NfWqfK&%Jr;O%ce4hB2jggl=$*+E8"fomkJ"L,O=I5?9Q9/GQ8%d)R+'4e(E6fN<X9deAUQPPCC3>_bU^Oj1j()n';/<<X/Rm^QO
%Ri7=q5#rXk"1$IC!LFm7M3(=:8H!bC]j@!N?tc6SngS&m5]pp:0%sZsaIP`j"S!-@g-'&J<#B;Fm#/+QCD+LN>Ic^mM/M`2id$%Q
%cJsa50i%o?fj*<n@mr@f6G*neSlT<nF19EGfeba>aE8't!Z"g8IXk$KVK`2=!NUFJJf"X"#VC2a[Rin=>K[1dilI>sGj\I/E6*/2
%IPQ?qgbf3_g`fL0%+$!UN+TA5N/fN!<2)n)N6d4Ql0DhUJ>7BD&2BqT#HA*$Z%e7[d"7F6l<)80M@;6hNb\<DAl0BT[$>c.;K7'i
%-uSk26^X0VGAauQmA;_G]orugYnC1%\+?=o2Q',jh->%8[PKR@8KVVXZ5!9:NA2PF[6?nlDkR3X>fBRA7InJJjJkkb8FX=&$6L=t
%@8h_WiF(eP_DsD:[E1*jY6bBII9f*0MD*ZE#D5e19P/H3X5u'UJs:I=[$j_$5b@E):sGfoq:!APs$B^+2EA;k/a3ZN,T:b6CjI3R
%Vq.&)1k&@ZBG4$R%WK#\?Cjk*_6Q-?3m.SuE/?jY[B1LB"[_+P]oaKd'@*Fn2AumO[e+?#\qE&]en7*OO^@KWnCq@#6JEpph$LCY
%S:CL]-fb&q>G1ZXrprARm>jL1h7#WJhuE>HJ,#N5ne](=F@9\E6duVnC&6q,F^%0)A5hK:kGMg>[W2b9Nt`b:FD//"nsQY.m2"/e
%qmEluF,uZ%naGSA=BZ;PhiSUK+[sM/\s5;u"*T(hl[OTlr6[QdSaG0]PqaNbRjQM[qs>5"N?Z&k.DFD(LZ6Ic&+50^s$cCUGHo(l
%<Pp)uQ)X)(Cc:#Vc4s\"g.e;)^Mkkf7*iua#DXNTduTO.V/JTUmIk.l^<I;CX&3fY>23gt=F#HaJE#,A<53O;&AI$3Of5u74:!YY
%+!'sLDa3.HHF9iuLhhOI]ME;h/jm<P/Nb`pokIm?6$T?c]QtZhG('m7q6S-$g:%U\GJ.8rD+g't`J/ufFaD?7D-gl)!?B#ghm-YH
%DoZHN?V\2&eNQ#.=2'*%\+<e\U6lSnj+F<7Z)CuQLA3beY2MVgdJE?/\]34dh;Z6rM+J]`UO#VPZ,MlG"$`&drSULWq=_Y\52GK]
%Ek=ujHbUS*l+2.A.FABUil\_@me4&^9!5g$qYsQ"O6A]eJPYa>Zl7u@d[(IS`Kb?`h!Jl5]NY*#j]ppgO(6Pq__HdHrp6o"p?dM0
%I;*7DB$]i)"]IB:Ne).(4s.aC'Xd_o=Btas_>S7)pR1EfASEj!@O@UTj#67f#1J@Jau'Z9mh]nDjIk5[H,#Am$q<o9e5:X9bZDOW
%FK[??:=mb&T(d[SWU%,W-5(hY+!'\!Rm,`qCEjb+*JcJ([<THH+D?GbO%Da6[L\Dob."#2osIeM)XV(;I<9Na])*?/%ubtR%/P%c
%inCjPme>tBPOqT2=h6\TTb]^R*OCMUM@Y`d[;R/Bn,Hn@@Yh5K;o&<[5?=u8:b9BWiN[JDhCnUbRoU224!c%RW#^`4rS^(J7NJ1n
%5999*Da3.Ddu=jd%C\gt9^h!DF^B9H/]XBu#KM/'jO9[62FLu[AHklWgbPkg:aM39*BObakDtZ!d^Pk;p9e$4PDq=#i2'-qLWO$k
%]rn=6WIOnL>l462rP#]SDLFX8KgYR^a3)%Y+3#:(jJ-4)mFqm?qq=5&EnAOfnJV:FN'a;[hBUqV:IjEU[h%mADt_M"IfK28s7RQ6
%oQLh<fDf6YHn<hHp0oZ=6.$3rZh!9!hq,KShi>[8[8st)meLO$s7X8l0*bW$C=9%u8unr*cI1k#Wps319[pZNmGIiY[->J9Oq>qJ
%Nk3V,7iil$:]R([[*t0@@MW)rL"jP_J,G#AUR>(T5X_T^73C@,FcGoE.KXLA*K`Yk0B\W4;p`i!ZY$YI#SIDq=-lN&!lia-/qecf
%JA>tYpq&=RIn0nN#XL$F5qUH9i0j_[a10:%L2sbC#e\bXXH&7(j(kq'<EU(M?\s/Wg8%qac+<QX)$g>RNcY_AGW]1!iRcJ,Eb]`O
%!7;cA[&X4db]7p%'UYSkY4c=FL^C&*4K1I7FWG=2ies2HAS(u@Sh1PS7)9p@_%Hp<0A9ZSJ<0pKpB2)nX>tO3JN(DD>ZhGLr$74e
%A*e9d6C80K?:]W%Bso9j`LPNkEuZT&&4<>kAZ)gUP7<$BFTJ>"U`VGRa[k^T2_5K]G;(9K.35(8!5@*O6ic`jrXICQ^^s$gg7+I/
%J.M&,/#]=G43^kq]1C>V>s`aW(KHqq[1sUW/rkM.Bee($9\U./027sUbaJX^!l1#lAZ1s434Ka4C=0P7@7hr?MJ,RV"?MZu&%oLW
%n74u@cbS:->CpqCjpJL#aI,"6rJeYIR1_IE%&e8>3sVAH(!)aPXs&pR;@XW9L=h;JW^gAIgmH3i;H.6"6RI4SUqBq>[5=$g$rLAp
%&N-e)!1PS3"qG0>Q<o`b.=c(3g;s@'IC-e]A,s)ZaSBA4Pj"<f68?*1=\Z6h5;ZK>Afnl<dLNZ/&6PQW:BRB4_T5aulrN'Og36IX
%%KWHd,r2.BQqm.1OGjcW'1t4k<Bl==biJI0h\\%*\MLie^i^+V=l,1\ejQ@Q'flJ.FA;6U%j*9T&P-k7%GTMMO;<BKfkI1X$mnuA
%P0HX-`k8`V&1Io\:MQi-(f*^lqk&]MTZPhAOZFK;_b;^fW3-0J%GB2?:V\'[JSaWo&s),s?1)K#pgm*$G`4,+q95`]J-uDSFL<kX
%'cW!kTh5V\,/L<(Q=n%0_89>8!Vp"LS(PTIP5u<jK(<)JMN1"<!hm\/mTq0_E(AP-Uq/`lm-:Z7'8;@mYN-b&T^tK0k&Ea8b-DZV
%H\#Ei1>9gqCnsLV-j/Gm!Ycbs2R)o,BUdD)2Q"E#rna,hDGnDHOuT^gM)_\P'o7(2_%iIZ9Lsd'XXZN_$#T/se"%$.NB%8M$d(HY
%Xm@KE4js8l[40'uNXJf-U=9>$KHV)KVk[:d9OUWhp=!/UV2X!,;Y4]qHCK=K?k`Sf.H0W!bO`NiP`$hPk#'j=S2DCH6G^Tt<BoO9
%ReP::+8>(i,o1,&c_PJ\GpF2GdX=k*>&Y4C"HD\/Y@ThCp;T-gWUe<Q:()@0l8P<$EkY"8)MN;TZH1)]aK8uqgRos:#2K;FS]pRW
%D9f&UC-:'G'4m:![G+m&2Tjf3Of1I'`+0]uMkcQ9^B-4U\u3:ZVkej;Se&gcV7(?W3!kmr^,V<'CgFN?R41l:MbJaD+VB;32Ir2:
%V#lM`X?T5X!^/W7MWKtfb?ho58jaADRWTN_`I_l2QT(3YUW0sbQm"6m4:Irtf\_4h6fV)e)T<Ke4)ZuQ-:1rG7+NNgZip+('bdnK
%QuddXJ?>eC:mp'pD:$<52l'8U8aFiFO5<lZ"p2uqo]fj):<7(i/EZBQ6.qM?!@Ep92OKBWB2e@]Eh97eH64^I'uQW=JdnoE.Q<F)
%7`cI)EBmtRe'.U"T!)iuBk#-j<t"JoCRej[U+/"\CYnaZ\Mn(NRJ97/'`eNgEc8\VL5=BcOnD(B1FLq_cV9EK#aS'ml>akl+fC['
%8S3$rWTqMM$l0<$&d)PJiZ\)C5[-Tm$N@tfS&_id@dDD1"58r3CtC'P`]]D3-\lH8?JF$S&aLcH)7;4Cg5/Sj#):C!(-=*HZk1$G
%T_[S(H/BlE\&ngD[6%BhdQ]'%,ZnaG31P;,#6gbKg4"4Nah;V&s'_`>`Zg001'9^JM&\$Om#PfM,2:kjAkKRjQJem%JgG9_g&oo1
%Q*17l&2U_./W>+A#>KKjOfD4lUfK#*j?6X-"pFNd)Y-j!jCQ^<XFi-o$9WhTK'Yl_nsn9DWo>Bu6!4]0.++3*o^S*kf44VbJNd55
%&lP3iHSP%VgqE77Q-PXs_#Y)l6ESH#aQ*LEgdFnk+dU$$)9^iY1bAKr+@ko(o/MTV>rG69?$^ZRekK*MMqE?MS8Fmo3[-pIQHG_t
%.M'IF^XAp);?AKL7t5SLm[od2p<>?#S#R`d.Wp2j:I2k5ns(=MmWf/#DULtggVY,0<*BSbc^qFm+?2clp[*=(5VoVmIhS@!6F7-;
%]9l:]XP*,W%^[\gR\>fPJTao50gZt*e76Q,epoG2Zlt*s2kZJ%U%FOO=Sk7)Pm!oi(TF'k+8[K]%cW(*KhH.V,[c]U20.[bA*(R>
%!0u"(6n:X"#j*[3eG1j[7dk.s^@rp6f;N2U)QcE_IGm3qX;W@LJ\Quj1VInGP"`+'dSUg-9FRp.ZIT17bmB9[=iDN(N<HP?&o1Dl
%cL`>9_Q2dX;3)#p\M]6iEYF-_*e$rII&lq7m_e[iln)Tk_sI2<MBQ"'$_4pPp_eWNVJcX4E4Q9YIP-uj(EmUl]>oXf?rp>9R1k_<
%'a)Yo?gQd7BCl:9\9AL$^e<?ahFO176b@``:u,&@X?OOAbC]9D"O-^9%TW[bL&D-p1C;D660qcCbtl&V-tT;+2;^UR^;0@g$Vh@9
%#s]'GIL2oEQi=6`'q.LrfpPqV]kB6g=R/<iqH7XSCbEr4G%kUNJ<EY?*GW%3/]S,k%,"d""#,.N4=mSO>73heWKIRb1stl-UZW%!
%"JGQb[s^'.@T/t[-J8mma5YYr9AEOCL2\i0gd';jSJYQ>SLdY!p\W<'liX\X7SX9GHOh+kDU%:=0lG?-n-ELU+=5"Ck>;<`[Mf&Y
%K;P8-5ED4AVTL]*CjOu/9KH[;Z?_LB1klA&WPUl[OTH(OLc&\8TN8E*'!-'sjjErRH0c&bJiH4rU(+FSL'T<$T#M"GP#,s8_h3.2
%mapZ)U-X2G**lPJ0fG*tWpP`R,c"[&(?;,[;`.#J,%dd/M*V.jH60OA%:d)f#fd(b4S5X\p6OCX3:Y!44JdNngCfJCA17]WnSX:^
%UqMmTH7EqWMe$al8miKr3[BnnB2^ek'iS.s<[4``j/O?jVbp*9Y]mYHXj*^=MFu%6LYG4W"A+[WKj?),aV=^@?G46j/`LcYgY_U3
%,;$jt(8YG.1CkF4'cHYe9J#)IIXhD=,1eG%eu++^'9[Lr9.%^P67pg+/!1('+'LW8:.[Cp<RR,94.KECP^92-.TSmkGN*$uHo4-)
%RF.b_-#+!qJM`7uMnZ]?fAE:Dc<V+6a:jHq78dr,(L*%4!c:I8ngq!u;g:K^[M-j@#%\G$f)!Le1?aEo<=Kju.a;$.*Q,;'pjNVh
%_<VJkO:%9s>0RdHK>SCUES+FSP+UDM;o74,CES>@2)d6Lqikd\BL*]!+?a%=pYZ,A?iuSW.=GRkOq\^c,eX(/#Z!"3>!#NAl04\l
%;U4&Y+&+S+:`g!MMua&87pXNT&KRL)"XdK_=RQ*%>i5^1HZ%T8(&G<(&@s))(Af]?rmn;=<[5Nr%9o]$Y"uqReGIaul"X',/'N8W
%[*$S+2eSn+q`_-=!:%-S--15k;bM.o@8m<KStP^]:O.F[aokFuTt5)7_9bgp_>W>4:tW$6$N1h,$tE,U&uCT"6ia_iZN<[6l9a!Y
%L1,Wa+KKbo'?8aV<IJM^4hJi2g=Te<N'S[.[e/F6=`-Rd'[pW<(<jC38mnJ2,Aofd_"s@-4>e+YTs]OW4<%=0Ad%61IA47VV6ei=
%S9MdB2Fii:B4e:4b:6*Rj6Se27'"$+GB+I3s#.4OncqoEr3H,p;[6$Z12ikT1`>pSF0\?uh:DJ@"-h/q.*=7n3+0ic%R`(?S7I?1
%"#VnWOqj3a,Hhq%&pP1tOYf5--HkgX;YY$DO0(Q_:<oqu'!3?HOE^*.XDC>%*9nUm,"[])*N;@:Do?\)[Knifll&H_4[^Nd:NW57
%@R-:io;)H%!'2bAN^19%ito*!c,*22BAt.5D(m(#K@2d(GRt0-KkEd#'^u-B^;;%Ha%2*_8P0dC=GJYH.+P=-qGJNA;^dj_4I0tE
%WDnKaK)1Cr^0$AhksAqrCB'Ct)O[mkFHgQ5nJ0]'&G9?>.Lr3Y&2p5B*Q8Y'2B7?>,8J%-A/3]b-DKK_(!1*nDm=KG/It.?3C6VL
%]5D8m=>ca&2_L-%3(:[(+;$'5D.Y1m1QV2Q1),kFr[C,6[qemZQrT+M8*6A`.^$WuP%HQ)KM=M-%m,REc/W?,cpS^Up*@nd%ko<l
%>$WIgfp@X5Hlus[VtJckFqf]RLO4eB._*<nJRL35V4`>rS<EK@*WR#Qb]NBVas7t%Lr'eaK<coMm"OY,d]Oh6MWp0'J@dDZY*Fpb
%oVqHDUg4%K3m&$_2ng.HSBPamT8q5%L&!;lKc(:dE\\aKE57Ip"q?<k)_AY)E2k[t-I<\jF`b23>TMo&7a;$C4_1)qeqNe7\KEu@
%%M!:.m?Ge#[u`hNc-_YHEN$+_*]qN=K)B@]?tY*X?BTFV+SnWs;sDd^l[Dj2#oolWnu%8c_*VU.9$>$V)i<qG0\n3pYWa]Q8DOa)
%q1Z\R,L%p%JRo`..Td@<ja4(3Z,/9iP_Vs=?_`sWXc5#>;7Z@01`L"mVMmTWk9+;f?jd0<Q#moK(*]6s;@D)gO;7(i3HD(:,c8V,
%&2FTO%jH),XDc;+CFS;Ncu#m"GQrJ(focnS0kq>[A!'k<I\Frr+rBB<S?CXp'IkQ:)K';_GhM4Qjq]ke'Ss(hOd_aWcm\;3YDOqZ
%/N6*98SX#/ggd_X-"[8/cP8kU:G(rUFkPg:,\K]s\9EX9<e`UF_mBc0+gZ3'(Zt'[[PNt(;T,Dn\OP/oe5bZj?tS8Yabt>#r/=ci
%R86Ubf#9#UE/<S,f86"+7OY?-+:P.(JD^=cqB/gQ_A#DhjPB,B=L+5kX2(KhUd08AUh,'PRfb4?g&<B=BM3WRCI<u2-oh76[[V@j
%*j<?34@J2eI_Ej#,ZhkMIKV2h"<=;IDb'U*Qm1<c:scVN<6WHE7Z;oCa\X)BAij_@9%noEpsQGk=_Gl?4?bd]JOOec\gWAPhHka=
%%[upDa!9_K,-[#GM1kKaneF]dE(9=2Y9If<D$RMSG)[hc.9cHf"+\cDQD`a2U]JOf2E\O&L?c=l/gn!EqpWC&*ABG4\9-3>ast8l
%E]CCs<%RWW0='3@EcnY'A6+KJH$1$LO;g"=Fc2q@R?9bGp&tb<NjCAmU^eUp2?prN$3RFa3s4LRErJo#]uG=\VWkX5&duO[KO\_l
%)b1A,oOq`ZnVmAsHhuue;L-I;%=p`q=*JOQAXB]O^)qu*WG0mI6kQ`oXk--B&#lu-V3ecH-Lt]cNESdA$rBT(Ka^rQ!5=qGQ"G.H
%GUeR3qan2e5O?.,g@AVoi&\g)CUA;//k>fX;"uk,F*Kn<#D`B-R,>j\Cc^2_L<"j'onge#OeH?h^I+j:m*uP]B*)-:P<uME[pkVX
%ETW91__<:/i!q5(BUS[O5a;qX1R-^]S2/nsk@+Ko`Z[ojH3;>Gm*[*K,48F\I)i[g#Va06pl,;/@i.'p9"]lc-ca1"?S7EX_r"Z2
%IRKSIe=;`qhAP4.KK>`;S=/s4XWF,QZfu6GUtJ[%4eQDGW>&c^Lc+5A@Ef&0%/2'Si+ZSoc&bgNr:(7UbM5o/.jWt&#8_=Zc;*M.
%+Vh&>7cOD4cBu'o3A>)AC&7n$EEL"K2s:[pafJ%+cIA8YrB-jbPh](XS5=_b_*($S#t(*iY3?'lT!Z]4Cnb%dm+5bLZt%si&h0;V
%k#"'SfpP=YN?,>2O")Kp3O=Obl0`0s4aJ$d7nb(F&N!QL`tUT)XI)8,5ajKW&4^*n*b'99(6RtOb^+qY8`tdUM^,Z8a]>qR[Tf`J
%&)sunC(6*SiS(F4nI!i.TFdf#^d>1?44q<Mru/=@kT>%;0P(@^#H^115o]Sh/j2_K"8@R=#^JH5p/aX[F\mQTmf3#g0$k]tX<5M*
%;Pr)3!qB@#OBaa!P(5b.,ihVC9mFG2SMf2@B_+Dq^S[9K/p(M"[anbpr?sIu)FkBG/7RCPYsV6pHa!X0B8SQ,<`32:F[@CA0=6+5
%,:3@p=Si'g:]KpFJ+kmOnOre4q"^m5Kh#(W00kaB<:CF1p6SS*@R&\reZ'C)3[F8L%l+4o0DsbTmD=4Hp;>BM,t1_.[KU$4o&If]
%TZ@2jX@hm[VD%[n7"_IL!_<P'ehe1!$pLSp_F"85DCW@;o$,;SFN:a]EY[V:?eSPl!BM?T+MsiD(c*csq2"X`VX%`3hE9sYd0Ok.
%5J!/74;Ru'S84VO/aGQI*hUjRm=*a/VV]Y>GV*<tEF+:0R&P(P*LjdO?/L3X51m_U]:RcWK`Fg7k468HG0U1Xc,\*c^adG&p$:@I
%pN_3(3-'E(VYgCY(57!ol[A*0mX!dLoBP_q<kAUCZ.ig!9s.uDGJn2j)`P0':JZD>rlMWbfBM&=-AY1%cV@i+\DR8;n?ob&!M&l4
%H/6MY@qt)fnbG5#J,A>@XY#\[("MbP#t&9iM5]9%s0#=l5O%hgnE9c<kp0]ciu":W50cmGkqLE0T=6/*f3Gd.Xn-F9"nrrU(u<'&
%mM:6E\6W>;DR\b_\&i:<].1C;h7Cbd7<@l8+u)O/D)r(9_g.^],E8%`?dFi%\*9Pqj#W5,VUV3/9@0s3[r0Y<m`4q7AN]99"[*mc
%4j%V&[%F5:n9O\MbY&fJWc-@;rH`sSBQl/VgnmG^)rLPdVkMi-)$AJig8E9^D*#USXg_`QIiA1T_t3HbQl>dGI(kX"CHDC]h187>
%#UX1M\>'*E`rL,JQM5s,KfEG3[q!PCq-'C\(,aHc,&-QoMaYV>mF]ead,gt'F,lN`o>I]eT'jX)'LD,-D=MoKFtEN]M\7FeBB15I
%'5R-\3/!*"W+7`7ft'>Sqel;qQs)0!>/4K"mSEM`UY`^#;EpG>Q0UOW7]&^RrH:N:593WmgrgH=q<iJ'on.^AqrQ9Wk'>>ufSG;R
%oai:iO.1KCLg7u`ch"R=Tg\aWHFgJ/Lg8!3LJ<54aR(-kDt**:EZGNJLANYU54@?ZamWJP_`I[clg:8'He7Xjg,X?VNpT,Qs,QBI
%\F/PK)#*4i>/[IZcWKVhqc"i!n+2>XE:Wg$LQFBIQ8Ua5TC2@;#<dD<aj21&J-[@Y"Rp!2G??F2!GEj4N@_-`;j:0H]6=!!S64\)
%[eA=u>Vc_;[S>uO9VG<S3@P_HBe+<$VVk/&\)0EW;)!PBa&(_#P."s8jBo=2P)QG'0bF%%NY0q_a1A+%ZSXPEa_cRoWsJ&u>N<bl
%>tm3/;;\IDor_3Z1+>YX[74g(A'q^uX`C%AOkI].`;^C$7t`S[\r*u/@9(>9C,L^,_5A[OcA<MgbSr\2YIpH)^tOHe=E/kR"sGMd
%)-Cdb1'f/sqsIGj5u!_1E./A]@*.;fa:=pFE(FCeT\>gc4SB6bVV=qj+mas3>io/oFZAM]b4sJ_''B.;s#ASaaBG)+lHrP?(OB`(
%/.X((D`jBAMS5r>!aZ![FY*pNV+L45(;Nt=+)=[,'#u#_U>>I/qgeG_"(Gq/+@1i83GPsP@&A%^9,Cn:U8i6ZQnL]lTPdB*<`'2,
%ZN,4\c@A0t_@4-fLg#1bXSc3D3kQaukhsj@[uZC5)LXk34W\(ZAu+!`_*Nd*>c)JQke?L(*omarq_2Fk^XnI^r;RcYA<<^,0RHRq
%,(cc@Ma?pVP2;uO%'oc\3(HrO4cPJI'rI'a;:de,-\iSc!SA)O"rk?/5kX?&Iah2N!W5K;?I=p(&B%a-o\J%W#I-IW/5NgH8?EJn
%?FchM=W+0-Qn(W2@_jbI0J3sOKbtL.$i9M'40QKjM)YTT#+k;99k%o]R#5BB8il$n*(eR/ALipoSka/A*-5-S8jdn:>ai.M_,u:l
%%#YJ\\mg5ii(HQ841_pYD#e*f(>fBBHej@ZhmJ(C/RGfKP4#,IAYp=<jl`9Q_-2gk!$k7<hiQo*B+ZD@]mF*r6U*^jW1)p;fE%r<
%@qBZt!Ng@;*%WYP'i=?W("qZhQsCq(@%Im!"umqa1+8MLV*mf$Z/&At;IgIbGg,>-ND?Rs/g,)Z=hn/(;Cd%Xc>.6<g$i8]+2ds_
%7tZRkQJ+#_O2f2&KZpZJN>'I12nj3KJ9$0@(M;uD3-2LG@XT$GF7#Q("NV%#f(3l%A*I=Z[rVKs;&-c4RI/s"ck"ss9t:UC"u'9^
%UYsMO>[0l_1(`04Mm>KJZTq/W>HqCh6T*ULN;%9G>p"88I.1S\Ss'W$"V6II*\UK#M.6s\VurktNk;ojG53R(N)[$M@_md0hF5`1
%obW8@DH_;#0F??jXU:.%)JKJ!1c['ZNg6CH^)^uG!^tc8#mYeDi9t%-Au9/QQ3h1lW\^h\h*sSEB`NqJ&>_hbFke(Wc-QIWJIPlI
%=klS&b%$)"+&X<#R9E"*'"?5iN8fu*J[TkEj.\r'Nrh!;((Ki#8F&Yqnol%V-pV<jCQf?bZ^^6IM*)$E,N)7>4W_D;6P'^HfRQ>@
%U'/0LqdA+/Ci!-BMIUT]YTaYQPZ25&30q'QHE8f+`/pJ,/Ei>(Pcq([!!'9AGQu1qZXmBGTZ_ou#7u=>RGMPu']:@UhJ5h*o'D<,
%oUcuJ6M(2eJ'VNud(3R41?n[M;^'`qNg3&e&"*euS5^&s_:7gM>l*mb!HN0")j3\D7PLQq#2![2T1fUhnqn`p'q@al?m-hfP`;B0
%&G<Fhf3GI;2GtH6-!V^[!5SY(n.u*9PgNH1UF$i7mWcTEg6N'Ye%+b#ViHhqmeBbUpEX9=mUY+*0I)d'@:6kpE%74L,ZMXtlOruJ
%YKm9%W"SGsFf2mlr7Qo*;;5uEHQPt6iYX^5)!Fme$/ak2:`p^p"*"b-P$im'UZL6GGCFC-)>`.&Sr?Oh*oIlO3cI^l[b,Gj,H6SX
%2kia]p"LsiN+;dfC\[d.SMU"h3eoh3h3?-fBUp`MiSbBE]%E]ra=Q[Y5*'e<6d$$2d'_`+.5-7VCd9kN'\#jHN-cae8@Yg&)CRc$
%#k*?'!p#SUL>uhJ?2G%Oj80f`YCY"*[m3(h9N=[fDUlpV"DQS8c"J$N4nOT,2MR9\euQX,7iYEle^l>`fV`P-7W>Vs9E@4;IXi!M
%`7u7pKToqgBf&GR])6=JlTCC1)F*(j*lhm^KgL;4nZD&0!Gk"eltIhgHf#j,+o#J)K"U&0&-5*.0U#b!>tdB+h_m+5OE-U7/.?]M
%Q-99r??uf$eFmS7`.r7k-$m\=??Tg[FVHFU9lnI0KkgbnTCDCG?u.g<L(S"1"I=l$*\Ar$Nan<Pll9u%Fq:]2h(A'B_WWt''`"nr
%bN_MO@h]rbg3G<oQai)oU3[4YJDcOEVDr`8e?KOEL$u=6=?_CPM=HH;=BFYpE\0Fsn/%(IU%$=UE+sLTVkfMlTt^d!'eFri!,m%%
%N!p]+l=H98?su@`V;"#Kn#h_SXe#]RPJ,^[VMSLt)@>0Ih@0H@?@8!j.8kGCR1/QlB<S<M!u$K*4V&!2TR2hXL(D9PlM5!7a\N;d
%UtA^3$V;L1:_jF*o.0QNVh]U-`r_=dZ>I^4JiC+/_D\Ki8b:$E9oDYT&ZJH\WId*-CJra!FR$<5&@6p<LrI@[kU[V3i2?dI5BZ.+
%/,HrY$>_b:(kf,t1)d2CYkkj2l[V:gQXb]5kZW_e*&m#i7<#uTU`cmUjDr4Xq$bI@7dS`9SV/ggUu".1=.IksEU)K8T)O5=H^A#2
%P3"ao$gJgS,!['N&H;A?8dPs<O\uPgR&rbD&;25RZ%8tlfOP<epV#1r4?W<tH$CjK-3AI2h<bq)*p2VIk%;f&Tn:j*.gQGfX003C
%V_f+27:3(a`R/jrp*=S.*UC<0>Tu"Ih=V0u[r,]A_<i+]IE*D`fCtTs40iFYj5V%.QF#=o=]V!#W?_+2VL=YBo6#>J2qo+6gKns#
%3GR1'QF+Z_]ToqfI&2M+f_!tl0#_-G/)Bd-Y.+aHl,L(/]oZ,p[rM]=VTN+DCT6lrl+0jiHq0IJ2l\uX+q@VEn#18R8!Vu-G@6Be
%;<@D/.duYNWH*?\b$-EG;s""=.\H1.o(e:q[l:<lDbDibH+m/;]W&A?q6n4OhTjAV>cKpDW,gSRD6,`in#5f)UWV?>fMoDr;<;(P
%03)oYW:KaRPrHDQ8ZOsYkuP7Q!O,7#S]02;Je%$EdU7nK/3N^^+K,.3qo*^0=OIsf2cY_#&/'is%6J+a:`@rZlV!3KF$+XpH@`HO
%)QWkl9l6#/nT@K)RbrDjgD45ac,qsbOcH.3%H"?(^[nt:/Q-#)m^ZWd=AhlJFicDpX>dS;b3HLt]^@_el^[[cWHT;>moZjsk$]8(
%?)ZF>fp<(uIV68Ge*]6-aY.29h66Qqh>0%\$9uWH70/_3V*eD"$rjeheR6EO5YgU@)E3q/_,-2SE7^S-f@qcEH!E.[()4E!Ch$%D
%Ip3)j%L[FV;RN=fU11Mu,c,tG&#CK$j>@S]BqEWhg<5ZK2*2tE[V=7eNcoV^kcWalZdWgGF'+VZN=QIXD]2f]ak([,=h'JbCLbn5
%;<i;=ERX@)Rb[)4G4-r`0"G4sIBE!3#1MJACM6o'?1PU<HHjKQ^WW?GC[EHI^bdUWh4h1D*jiU/<=M*qg@!Q%>LIrdVNXZdhhgY.
%_^56DOgV)GO64)AYn%S^11l1k!=<5*q*lWNM\6("XV4="T3.PC6d?eN,u'V!E>ns"qMO^F8hE-V"-X^8ZSe]cjWoY/eMuKh%W,Oj
%;cHt.Ya]*SF&JWi-f]=lO8$GP5e0Uo<J'`L.9o8:J]DkJZX$N`VY#YbgT"tL^2"DFHfCU7dE(T`StJn1,2+bnV$jk/+M28!;^cu!
%];lf0+4Wi2#oiff%TAKo]24rL:&n9lXF4#=(KU<@2'[/1X:&h2!g?.45U-@nqn/VSK7OP0(nN6JQP="DlV#G`U[Y1Umc;n\Ro5;W
%"]Un&_O0rj,WNVQ!7->N(1Q.E(n3elYWhusm)#/;3XO"f1Fm1U$dNF=Mb=Vp_CblF6*UA'iA"Q&0nb:,8?.&]#+,:\.qs'l_'Rs6
%.-:4\RkJCJVtr&UKl+E;]$,DJ<icocr=BUW-D_3,,KH7C,1L)&KiZ/r?)S.4d5T]fJ-6+iE!2.W$'mTf;pF5473pj$g\g'"TiN7/
%Dr?u`qd:HUbX:!0/<]AZJ/.'Q=<1B5XIor1$R%]E#<#jqcV'3CT`s)O3kKq`E#f56P6c<16?<on%'#8MQ)XD[,,T!4J'Ja9X-"`>
%2]66lSEp[\/USrtrin4tlrSt4EYl&@@u-(p276lGBCE7\kZ"TX3d$oA+O#KT?raea,`pYT>DB4"Q'!Fi!3>uWFq>Y3-m8Mb:T^21
%5@OIFJ0#sLJ=5=-)%[XnHRs&<IW/;n=PSCgWbBYHMA[:=.[Our*ei,mo8KaYGINA4^u0:c9+!_25QQ\RP&=D=F`gI]5#me*^hE3V
%LU`fCNKFQYO/YDKX%c9L'0?LZQlg&I2jRp]0d&mp0kdfT*KS=:M^6hQ,\KEo#Wjs+kS-j-@.m>IZeK<1Q?G8)(m\i#'2FW,T?P](
%*=Z.kMO,ebdjb"sR3i,.$PSDQU:&PgdDgNl.?n*02d(2.p5&"@Z\.0]Q!l%@d7=bFgW@$sqe@0K,2J-\KFNMu!`P(s_k%IY<]t@o
%A_9^</h&->Tur1$j#r[$9qoc94jI@"e?4VO4d3tM6:OBa$2.V7<T)"E$%Sp6`Ih,)/5(%s>$Or/rC]U!_<@)&V=HQ'n`hoOUh@<o
%j028'_14Qn'^24Q$%=UF5*`[q_oc5M7(+t0*sJZab5ALJ:cZHu=A@E1^cD:BEibd7G"nugRWV<W_JMBeO/5C;hJlC^SMJFS^^OFg
%SD"eE9#/89n.!pKM>85S&>sb9!#r7B&9V#IAjK3g[YI,;ifG"++(Zl)!JdJpCT#nH9e$oO[=Rj5*A=d1[*T/'?bdt@xxxxxxx#[3
%IuL*S%*UdpH-::BCeHZI/ZXPkY=OUKVeijGS:"fk=rqi:3SBhVjAmn>Gallf8)A7TV^j>/jafP],Y=pH%EV5b(Un79'G9IT\](g-
%1i1h^A(Y<_e8e0=bd<MZ2RS)6SO-a#\&QB^4ag^N\n&s[_Q:f?b%hV1bnDB!Qu&R0YdtulnrYg+_K>6/q..X"QVk_HG^t?ur=!Lb
%Om4A7oJ2L>(rN6qnOghL)=Pt<askAs&iCUVT6Fs=W3S\=0N%E%6G*\Q8qI;X;dE59=P7^R]";^IX"L!KJ:l%C@Tt;Dq8)MC@G^/<
%<B++/j3LFYP]StJ4X(aI!aE<XdOH4g$X]IB+E69QFuPVD7T%oTNZ[gRnJfD;iK"]E6if@T!s)oKp*JlN-dR-.p)4Ik##p3qc4L^h
%krYgkED)s#?j^(#mq*`H]g;tklm%P"bE?e31q0iC]%:U:QgG'%]b$,lE-UE1?1jG@3oOfj/N5^nra@<CDWe5L>sO>N+FFfA$,9Jc
%dcpD_+LC3/$XSO]5D9\78q*_f3W6"VaaDY+9N\%.jcZ;T4@PlO="^Y[-kXkBD1]TsN6i%1AfT",L'4sOrL%=f3h\o>+<Ki<X[@jF
%<\L(c:8&W2jk+O0p0Iq;,%j\<Y9ni=ljZ<TSmZL31OT21PsQpMUL<8VY%8$VW0HCj*]VnDf$)9&LbcuM*P8#j&J(LdWH!NQfK^k/
%7MA>pXoXM0iF%,)@'4=g?CJ+"edbiaVLC>BhU5<5#+W0P.U8Ln%*tHN/^u3Jo?\0QaRhTk0-='QA^)fEj@3,q!pWqH(+P,f.6;MY
%aOc.,-,hTk.mo\r_XhEW#on^bqL`H.I"?t31%NftlN3^kBAcJ,?rK/YRV?Wn6!)Rs"V_d"/i-=B1X1S5`o,C@j:"""7(MP"2drng
%/`ANEdtAHE*UDhCJqF'=*I(dN6`"?UY/#B1[>)tGGbo$=7CAg_$Z$u5F6X[HpnY$ZVYY"E5(N;hQY*iK+j!43SK;?297b;DcJ!83
%(2t(&#s++2N??1D'78&tJl%(J]Sjd"=USjV&=Z&9MgSc;#01/a$](Q`o^+6F^8/?b4jaiF6B'-1FKG1'2uo<f@aP?m@&07aS1`&-
%G3j/W:q>Ad`<;H_q\o;Y]CSddpkXd#(5EB#(UFN2J"Tes_kr5!j%J$oltQYI(N@N>J4ph*bd(-&#p[(ed&F\g,e4E4Zm6VOqCq(&
%&/MGgfV)>3I'9F'#O*Gji!mW$1_)CKg*Ln_7"/T\_;ob\W&V8P55Xlg+cDEq<W5mi*Q'1o)RQdb?:0lPbfF9-r2NEN<>>V>EAALJ
%-`,+Kj?t6_%*K1-@YJ7$(:4oiAVIDGKOsrRXY]Ru=lVGTXQ!OZ>p;4]=:/8bS;%n+_XFg>5CEMe9Gu@A6j4UbHW]G]M6FdH?<7i!
%=>ds3:P-a!R[sY-:!-6kJui80qrG=*)VIRa5h4g+%d[+*3&lOQ.:%(]`3/ZDf?_JFH;9j:XtI3%*:W_W'Uf,2"RY*V5k3Zg%h%Qr
%qD'Kr9SE""-_KjK6BiEm/F^$+=D+OS@W;R0/TOOAc;`'M%n"GB-m@1-&#P"4/Z-J"e7bC'4(St(\;Tl%_`L9J8mpga&jHtq#@&,-
%Rj:oaPW0[+[S0ZEq4)V;E"+="MCL$C]1J9uIS6Bt'rYQa1N'`Q)!i$I[iChAjTgYp8fr5sVh4-g3t0%8(."bCJ`ara3f:XZbe/bb
%3t./NhM[U#Pmql9!S;.5a1j']fgDi(3'iEFOYqO4;L?Y"%0PchTjYW^>$NPooa6L"+#jrGq'M4;;i5:?C*Se#bluPtcf;(0@>q=e
%cN=t^(HWo?R[#]'1rZgIq9"@EZV-.\?=]p&-J(OO\kJ\4*ACoS:A-Kj0r:o&OW!+7(#,tiJ8:<O2NlW"D2F,OlD2rserj=a?/-M8
%F)(7_7n#Mgks%2I34b%=A&Y(C`9O3FCh&T-Lih04`9IE1-$7c(,1c];TgNhQ'!4u77&b@0=GLkY-4bCU@Yun>WNBQ>ZU4$s;qWT*
%a+pg>L)&nR"=%07Zq1[`r1PRH,:js&&oj.ISu=hfejoR'DPYh@r8(N6q)Y+?aLb%Z))pgjerW!nYif;RY6>0#FcIUS]CUR<4((Lj
%`&&bTc&jm+S0pglT0s*2_ndTQ&&oAe?[^1mF>ESmTZggbMnm]a[<FU]p9BnbG7-q^Rm-b6UoYLa41g'hN16n?@EHLI^DPgl?%CS`
%:E?d)l<6;\`P\R'fG/_B<Rm>^b!Qt9`=:]%Zn)nC*%R"O+30<RP6'?Uq+Zkk/VNCS>#hj_>]8iDNnf8V8Xd93]FWQmAH/P&q*Vc1
%>f2@3@+^9AK9d?_'pN\.[k",#PDkF?80un_HO>pa\@CG_[cHJ/.K`rV<[Sbr]7:2NYII3^!#E'4qsoo%iX%Gr=n+e!]]f_kac8?V
%<#%:F,a@?Ml&`H4Aj5a$0JW\+in:-AI^U2Pdmc51#In+XG;tgK_dgc#fB4>OB9EC-DMprYMr+L81e3#bq_3".!+?/i!$@&$WTN7Y
%nWI)CA>i0cds8qGr-/dW@3^$\-\Ef2=r#8KU>'Oiqghm]+,<3/S*1Vf$8me)%T,B#C1_]Zbf3!P)_&C!99,%USS\hX4c@d3eGSl^
%Tl.tgamqPohd5!3=Y?o=1;2"V>Ykp#KchL@!m>O;5io%gK-c5!$(&QFG9Z>5XD3!Y]I',CGiHd.L-e6ZWZ)GbUs[-N`:P3hOlCUC
%F:\i@:iF>8"Ch(KR3q</qm]S<LKH>gWBt5k2<hqQOj\TV)=U48Ib<EO9i;0t3u1=.gK)n%j4QsPc5gQ'+7dg(R)9_1M)R%QbR)CW
%kX7G\&WY[*dA_.95$G+kN32gclspd,V[9qHq^7CI5FCgDWA0G<&YkaLUTO3Jg")1RFM\3'&N#HFb<_LU5X7;DOVG7([.9<\AX:32
%'m^F%88MhU<g@,lcF5f_$k[!\XT8m93d0-&Z(E'DIcDJM!LW0=g`MEPE;CfAmO@i=hLOQpc@7UJ`Hp(fMFbK0=*hML%\=&%^Fu;H
%MRcD9D/c3=PErC&Ic0H\)\pr8Fa5SfE%4=NijXQ;.5H0f6HQ^"Kff>)o`(_P:I[AskKnu.W$Ep:1K";c`8Y,F7QE\%,)G<&RXWg^
%g4?oVg9j?aTpaR!ZT6T,Hh_h_miWXO'-MP\MOPQ)Jh%,I@n]*f2b6<BlSWt//Q<\+?$OEoars?Y66unK3eUNVm<Kq=kUE&FheZ?)
%`B(g:H70OAKl@U$X:n?an5^Y7gu.P"r>A<=o_6_[NgYaj@h&Cb_j(:7Gt$P^40CLnGfNf]`K$RtmRd&U<XL-+P2+]fBagQrk3ba:
%#2WQ(\69M"EDp0"E#K5@P\4'Ep`[?qSuoATdfOf<[:q@4ME,/^WJa6]-:2cX"Wr?<a<\bO0uZ%>Pa&*97-$JMn/F8;I`F93mrMZ*
%RpJ+(HQ&=08dkuM)B"D44$!0"4Zl?jf^-mHTQc#tq$n"._]323BtD^Q7,bDE0-_7"`F+YmB)3[)$ThZi(F&,ud7l`DB^bXnGciWm
%Z@/=HQacK9/6=Xr2Z<Vr.U_.U,Z^(YkVCIH)&;Yli0qKZDH%i[n=0/ZHq;af@%+>6@-Z_/ID&uT,']Id6k;P52,jW*`*0`Q%XVlr
%.Zp3^JNHI:cZ45u+Xa,7@qO[3S)kXQH+'#7@cKfE#Zs.C,5@X9fAX='/D:+E2l@@Xm0^I>;oXM#k`3iK]Y=!IcJU5]#s3&kQ7M)b
%o<JI=gC0KpRZ985DbhhN:E2;^9H9hE6UXPfbi!iY,[;+K>Thc0-6r-"TLGAq8Ub?@0pUOMBq2IqKtoHQ.^;f4Pm@\*-4>H1h/MCa
%WppZG=X8Eu2'u4*H<-='W>n*N,/'!=*$Q3PmS(hLf<@DuDYbR$FdD"b9.'6!_1Ll)S626k*XGts-5k1L9Tk+1BrfEH[%]8aU+=o5
%6(UZf1iiBh5FBQbh0rp:VP7)J'cG@^AS;HHmp$-rBQ:c?L_g(SR.%imj8S5?QQl[=#XpBNg'74/37_j-JX0kA.L>-rRbdG3Kh9JC
%+[>;SKL*cG*e]+K\kQ>;$I%r!A.pu]aef";_[kZ1!^MO"6**tiFC\I9G]F*9aj0Hd3KXH;.hLI).aG@X5ITFMV-D^]6eh2H3hj6`
%1iF?J]m@;^@LI[WNt9fUl&-I!j^S=1_Xr%nj<;6\OCFC=P-]1B3UF,'88pboi]cF"/K+Z+`H5N,qk!:pWb8!Aj'dd9YM8qZg#en0
%b:?'>XqEMLbmFVI<(/Yg'gbU1m8V^RQKa#e>l`-sh4><h?C2_N3D9_,(2Y8%buMR(>o:lAGFL['g!J9[WaM?t=m`*M$or%H?=C>J
%RjVYm@%tI2FB*\TTD'8$#EiF+78"!,:^id=Jd3@[57%?c?]\/OE(=%r2hiE9K46G-Zmm6.Q'29aj*VIS[tVGma:a&cd@pF3NqLeJ
%BHAq\h1-R,!U*j6P6qCb*"gUET_A)%04GdJ!OCH##S)<HEHSC.P01Wk[#9$]EbRjM3JB+464R/6@+Jk]Wb72VMABfj<>4H_^;_#R
%@?"%p>o(b'bp\tLX/njKS0IZ65h,:@,S$m;qs0!9h*:?c4A_A_f_]8e%bYKR2.`Vi6jHpel:3n(LO47Jl>Xf\A`S=(5dAHl9qJSI
%WAD#1QP.2RW;Sdmc5GRDXVqGP#Nt*RS5-bp?q"CS4YWd0TD%j8H^5?)gfQq.'>raepd#=E9X4UtikNe/i?[ueqa\P+F\!F+[M_tf
%P\3SL=e8&N?3Pj3Os"mX_s/SUaA[k(Y,nm9[#C%<mZ=$0:B/eKqFMkA7S:75^D7T!:b\ch8CjEk_uj.D]0s>N[]1i$N?\teQ_aB9
%E+@.d"a-.I_0`f$*#BSdPt11a+iTm@+;=7I.G978,eRVnY,`WjP*A+Kn5#[c#n(TqEJi'Rf$LVu38B##ioe&>!`\I<&sgl$]4R1:
%&S"Lp7?hsDE_Z&MaWiq,-H7Hr7LMd<1hm4a$-A0hA9\-&7FH#hf:\1MQWAh#K-E_r[P9#Kd(q//Y;iHB^-K9cL^F.G!TK'a_9ViR
%GqW;NHG_uX9I4pWSj3XSmYiZ25tQbl>pIk\_"W,f!7Tb\;/`a@Z6ZELCHPi4,`]IQVTcVL^/]Cur!eZrjBCiUr^RRpP,PqIP:^``
%=IP=j'"3`bq[o(S9qg<i:/4s:I8Zs-pI:H]%Lare]O=tn(]Zt.n2lfr<-'s'm:SEOr*I@:T&fYZ`.Z??\iDk:Gu@09#lF[/N?#`%
%e?F#-ZXD![Gdf&I$l7BmU^W-3JAC)"MB6"AoXoMB"=g*L9gQdVE$(t<OQT/`ktSh08>KP(4oc%an6cj*Q3H6GKIgoe(`B`+aaf-j
%>onesp==d)<r)_ROaN6BFR:G>!U38cO/EPFJfq@r*%\,9F1"J)'@4l$!1JcB/B4,.:Df$W*lq^urLO(S>("2DR"Z"e-AW>*$NP[,
%%LRdZOge?;<4WEFAYi[8MZqoV=ue,YgI7^`KPqMa4rRuV_ZaqZr('g$Vm80t8&L"m?5Nh;&+PGh:HD5s\ccBtjnN$1]Jq4p?)/#W
%/V"E6%k1J]J/G2O@6#cg9C?D(&6*X!%*dpK?)J</BJnU-5YSjtV*dAZ#1]CDl&9^A_k>+B\n=\^HC%NW9#rf%!:^]kOk$4BT9QG<
%d69!NDXGM[;oQV7bXip:':-`Z$F>kd'V'5(-OT[32QE6`pfWV!Xb.uNSg\5[BOQ_8(on-Z"bu@S]$Au6.l@l4d;K%'o8S6RXcUpN
%mi`H"H3-"%;KZ>q\LQahKKbhX<O972h!Y#ZV<#gcDb*Jd,pB=6fecE<\MF/_0QcZ;V'npd2mO.D,)E@ac))*?BXb!M-)Z,Kai5F]
%EEVod9UIPdB"nPheVM2NY=.Mg0MmapP""I",e!lc?r=%LWGEKIbpJ\aRl`\04CjBF].EM[K"Wk8"N/X?f$r'F6NNVH!kUbkYa;(s
%*%N+c;L-BXo5C').efoZ^8bMc=n]&UC_6h7<J:e$%C<B0E@i<'?j"b_3!q<DJ<5Wu^JX3]S7.<u$Dqt><B\LO9puDF"ns_GI[\Ad
%R5QNr-IIMJ#f)OH3iRfSW.Ic%T>&S=MpD'=ihG69Mn,\SGhO$[j:pMuRA+XD<HeE-Qpk!50VE_s0gB>E'Bp*47nse3>$%)5+rEb.
%jd<''Gc1-n4KMql.QWm?r.*\X.=Ob*d)f-@xxxxxx!FFg&s.>1#@0,ErAi9r:5)9sA0Y5,Sdr<Tf\BkUnL$2J!b''FW/WXO.9gt>
%5mJL41_k/8r2`?4mYe&ZVZu2oMdr3Fc]s%-T:e_E,\g5Ra>d:S0%\WU;,WY%'kF>iP6&CJoibA^aqc$bK\e'R[<TK//@ODONC)Pt
%gtAbP`_ib'pqbV<m,#0oOAo_XPo6D)QRMXb9MMuI+OaG8`]9`DZg"L2F"jRD2!*:1!^os%5h4]o],2g'N*.T!p-!oL_N[Y-qnXs7
%rQ)%&,%VX8CC#iPd3gZ*I$`N+[,X?@Z@pbZR\iI*UT-^D1q\_=R9gK^36tTuc;pW`i?l]T`;-)O#dTOYpn<`[`!h!4.PCg2M=I+(
%rG3PR+6X"#"OIb3arepb\7=Uk]Y5-iRDp/qc,=];4kGs]P1_8;qYs,5ER9IJ?tpa!@dr8(Rqm'GDep>MYb"T_W[m@0S1f=]Hn'Kb
%<Cr]g!k(ND+JMGKH8=jn=:MJPd!,gJ/QF6OA6;h;fh9CH%!p(OS!"dSWsX7sBOr7EB15Dp"Ek2F%l'PO0q=:iW!rYXg82Y=,Jj`,
%%:<o%$3lBN$-oY[7/8/72Bk8D,Uh#[pe<`,\J82I5i.'<Kc`p1d]ofY*nph4^*DV/S))6<l9]X>h?Q;o=-U-@BG'jgOts1U(:gN/
%EM%,9!5&r0AMB4`1,p-*,7`1$-fbuc&a,Sbehlo@e*fP;B1(-nNRFqfLh$<j-/su-#*-R,c;[eK=_B])+>m]QSCipd<igFu&GhW&
%VV/:=9=l(4+3Meo5L-W6*t5WQX`@J4ZIF4\$fFK&i=K4+\.k)nKnshlrfamF],>"<#`[9OWX>cm+uM?d@.\tNj#VjAP*a>(lfsCC
%45]\(OdDqY^PEM@Uh750+dgFQ.&N&J,#nT36a],*]E56=0qSI@.A.9(GL+:C_u.)pPgM"'B82iOVYu1YJ^hX!lba<[]&Aj_g_:nK
%(kl^h3f`Sm%jlK60#lXT_)GqEX7lp:4';_0m'W&$FnO:*#21hd6eU"5"7s^1j0$O(]Q)-<q@h3]Z;"pXL14'Mg<BU+c@n).:gl4b
%/pYVa+aL!$j0>W-:VtL`"^%3"HTg[`'Tn[HJ"G7npD=[JjLc3WRlq0iVf8VkZEVr$(Z$F8"icI"$5hdMN"-n2G/t^S1/quu-8_=K
%k#I1o$j3'1g-dNEFkVK]k&6,A8!P)g_C;CK8/K'9%W+2'a>[dDpG3G_n"i8TmGViC\k?%-]Tn1VNGsCcWkMpL"T!gmCb(F*_6NC>
%rs_pdWDS4)VKV@"(o*Z\Z[R,kmRkbgOBaE(aLR`Y<+MH&nR+;2+*=ME2VSaBT=TSg1X/[;:BMf:1-H8YXFLDg.eBPEIbARl_2W>W
%ee\+*ftH]Kg>.J?jDb<W*A7KXja!\eB_t@&-LdIo<mfD;!k5s]jt!XWGRr#6QhO),8SW9fnJg4:U`HQ-n4#,oWOY8W.k$6+L\)Qh
%Z(>K>U(rD(-as-l%l(\LR9a]%;<XF>cH5nf&h3?uCFd@*,2W1$!V-jmZgfMe:Mj,$qWV8A!X#'o#pt9q2oG`NWG:M6-LO6Aoq0=P
%:%^/PU_^\P2dD(YA^8aspR'A&0rAI+TeukX%a=G6*5Cp+'OeSUK?eGS2sG"tAkAE399k/XSb;Lfa-oVG*N*qN:^?o^#"Fh_n#OZs
%b#ln`,VW.q8<`bB-HUV;9(uGp!Ld%[X%<a3cYN(ufDZWb#&#QkOu+dVg_RpgCJ7/,OU`b>g0!JC-0oFfaFIfa5;Z@MF]RmioKe9o
%OF:@b;t+9P?]J-?YRUpKVkK;9:Jn[)K:`*r%NpJ"MF.TTYnZGc<2F3TGnkGN,,bjMctMF^."lZHA(:)aJ)HImO_EGSk-7:*^n7il
%7Bh\0:_bUu]X]M*P"rG,5Il)B_D>Xl@"Q92@@(U4oF2kU!LO2HW'#D^*uEGGgfB.\NCcfHAXbS%qr_mCXZhLT88qG;@Ue6n"Km!E
%&*\*ugh`O'fe2SFF.dQ4/SE4EF^("u-i[+Dc)5!aoI/M20jrnR&pDnB[]CDF9emI4RI1(A+*gT::$5Kiedro)Y[#bXCfIl1%$euf
%QQ$!lIb'Gh.lL?cd^/GZLgWErQZH1aIi)XcGE`G'=dfUkPM*VY!qW.Zn]0/4DeI#>@NZ.4[FJ.@-N&cDiFg;B&VfnoFmcUs;*YMO
%e8GJPku1H>Di-uF;$XM^#E*oE"UPq1!r!]BI<CDO2/V]E,LuBE0o-E_.0<`J3]"^^9!^`tC2*'PD48rFeI>DO=7/3[Mp]d$qKjWP
%7,i+V_j)IsP;r-Q,#RQ!?VK"U"""<@6:>H-CI-sF&O:rm7?cIn^H32PYW@R5aE=4H*Gm>6:+b7JQr2q[/I(>jYu1n2^!F\UZThCL
%Djoh<Y+>]ncTc"=Gs#ua5Fc`s4gjp(K1bhO,0TKY:G0u>6\.Hu0]S_9OJ@BQB0E[!^]I)'mMcJ?7JZ929JfbO<%U!pN+!;>DPc&9
%WmT6^4j9Z&j<o&Ean81$48(QJC)c"!i'0os'0X+cYGRh-/7mIu,e)UY$Y+_F%3\20V/RjkYPt<]V>"QZ"_O,,nKPW>76uD9#;['t
%4\a(fiHHeA8S-)<<=kKre[sgk5gX>q+nt'Bq7IDBQ_du\Ma5\N:mh7J0,Ffd&3gc==p#TeLeUiUZY,1WJRZ@G-WVUHAkoG9/^H'C
%0_5[Hf*``#o'5`EP)Et5aQUn^.<_S8I)g=``1]m#`YcW@]EqY=ofZi`)9gO5/],q1R^m/M/I@IMRVA-Z-0FJNDct1(X9)::9JRmO
%8-Q3Kk]EBagiiL=11%;tD$:IG`h$>Y-k?2p;aC/>1Z26m1f*N!Fr0U%3>7,I94-e:0\A/A.APl3M5@I3@lOATm`Kl4'7k%9OSo0p
%dC,</FK&>cj#^m)bbL+8VLuXp,@4IPLe)ZX`'[Y5^d&!5OYN-E"[FXZ%Nb>%Z&Uu2@3IWf:<i4b;J2j*6Zt"Ln+OK"+r5Sm;@3Iq
%CLhac+a\5?kU8Z'ck#L+S^fp53Vd>s2Jj*%;s8t6:T9!uc>iK@"or&rSG19W,3fT6!-ss68R7)To),a<Has&SH0HImNTq=IU0h1D
%8+_)Nc$PYpLe!e-!b=Mh4W9BTXD5'@Fha:oU]4qM?T$FPGcSf<>,[JrgY-.5Wi2Br^GC.7!([9?6VhL'R(E;I(!ptQdS2W]btQ!5
%35WP)jq9?0ds.=4(E&s9TU708DLU(!-tSjHAo?erhS<8M2!('Pf#GilY/@5Th+4kFSsl$/GU,=01rD#&U4J[pODt\/&B<E+RVoXb
%fJGRjK#;D:rJV"WF5CH+`e($?J233IY'Gep<u3rAmVPL\du39!UbEEU0"Z%j)b$?^E4G<U62)90CLW234VlFZ`9=u$esu3i'!!FE
%_r!jt7rh*j2gCR6SqWQ\Isc_X!qM9JGcq_C7TTSDS<)2EK_`5t#A,%[5\1mEk')Hl1fJC16U^k`6+W-]rpn@(]Z>JN31M\k%$^S"
%j@p-sf1!R_E"YUap-&\"kL!4eO^2Z#Y#C%hqfapo[X]@6p\XO,Md2nI1Bi?S?s0g/IFeRg3pH?4I%$U'M[Zf2$l%\URt<$U@r-S`
%=E`(m"!j*-B)tTTDBIcb!X$p3md?GI>i1L8pX@lGcqjg`C7H5nD)t#n]1f7Clht,5q,9XrO-VDMTUmX"fZ3Je50W%5OK$&(@i+eT
%'c3fHegm,dakuno^1dUiqCW3mZ3&0Kj<h2U"3<Yfs3I>/Z7]bi0+W'U=Z/YrFn^["E-SVR`o"cP!`),C@SO<d5hlqc1,!&h_@.K*
%g%a+ONPlqHR)c''?aY]X2r-o$"M+oD/4_?f+_AbZrpB+)KP:A]nXoF%5Q;Olrknd3@r$4S8?3(>`B]Smr:/k@JO?SG0+-'@8:T9q
%X'gn,?-e`2/_ih*C[W&,koF*"=u5NNdaV+7.\_[<r@=h:p%Co+:sRJ<7VMu*m1BB\],i/ThGK'&le(a;.MUN0gXA6sA=spcJ^FQp
%M_9Nd\iWJM20o+FAhbC48"QAar+DCS;nT$H=cVpD@1["(N)"YPRnfD>mj8+e!q-omkp8PJ92u+02C%+%47F/1B2lDP(ld?>185<?
%(=l&kXj?$?mIoIKiY"f2AeT;:-V!/W:FL9?\mHc+FHo6+oVg?k@DH-a+#`QARnn9'>N9EU*8drnh7b_NhP"E@%"#'Na]SBa\i33o
%G;CpA$jI"(0Pkj2=U7EIZB$FCj_fa#D7;Z2ABHf6(S!Mnhk.X@:Dk5f1`,u7hed$dU.PIbEo"Mi=q@K,O0CS04gTSd[]HMerOs5G
%L%hMDn^>&ZL[LEie!ngU1%f]ec^CT1a#>R^e.s*6=GZl^^T`_/EQ<=\=Mh'6meao)(]OeW1(4Oe.pThJnQkQAUQkPIW!UiTJu9Yu
%/^R)NfWE7=^YcWAeA&%TDU2LirDjBaH`;s5UrRos$h.!,:Dua-8%\sbM[htD.j%?)Se%)\7"sLHbIj.!6XA5qX@YjZpH9jUS>,u/
%XIGq'<=4dMjP\G*D11Ddao-@<T%E&58O12j1ZEi_U/aY"<5i:<=.;jS"Esc$G]ZX6Ff+eF6-?CRr$M$2E<'OmdfaG^pO:B^_1t;s
%5\X<Q_JgKS9q>[+MGU)$<6S/=g7%/O*5W>D4I.fV3#bU/#hUFZb.s_pm$PB\;9,T??L@@XW@VTO\Vj<O]H*M?f$8BF!beU\]=n/C
%_XTGJ1,D[_C:#g,ap:@)QV-=CLAIX>A-"L-f+#sqp&7rul1ZPU"D]Bcb-+'C;;<,frlB>2\2!JFdnm9eF2Hpp1fhR!ZR2YeBi1*C
%c#9("ZWh5@<QO:a5g"&J<-$lUk@]6?G4D?Z,@YJf7[(#'1_JJ\`;;,u+h_5OQ2`mSZgSf2opO+)0MB:ndgob]1.P!LC-1?F+="<2
%OBR68D;A%+,P.?Pd\>@8/sZt[@Z5.k:n1>O;JJa`o=21moX29(;&%sj;AZ#cleOgS@WHh%i@"sdSW3qa5)BF_Fq0BZ?@f>*=Cqke
%>V3T6n065n`PT>HJ7>cOrTQb&@,`iGGDP]]3qI^67:YF?Aos4Y+9o2q3Rud56'H6aAq9,B#?IFgpnAYM3p>T1c-S0^)j7+!&anT5
%J[t!aY]oga6!h#Q&iCL37M^$.A"9&p[c)n]7iiT=;'%1tjVF=YZ%j<]eh3OOQ:d#1Sn".6Y][,+'\<6g'NWUi3YiO%D`/rmJX@T]
%HnHK>r;$@+lmV%f$(iM:-!V:rjD"Rgm'tc!+A52&h4b`[p'rOWDjkknEG)55%m+9!:.hfdnmP_6g/$[%ODU&`@Ae)C[P7Tb0[nQQ
%GQ=@hZhYat55D;*`V06*+'I$.eq?AkjV$(jKHH;!^u0_G(I/r[//Si<N$<\9$kt-`![1Kn;GojCbTS@]%NNXU%(B[PA-mJX-5q0J
%4tW^D7SRn-4:BV"4I`/'KR&@oD8s#;BXY5QOsMTG,CGismf\(j#?\r&;M+:E(XS)+2T=Z$FaQ_!;*i'5)IoP<76uS3e\T/]L@/`,
%jir7'L_V*RO4D@fN-4YpXOo-`a6m_\^U&HL,cPg6U1"$.`io[BqkPuSnoh4P(k^4+T;1fJoe.tL-e4\=O/a^b7?8o+iRMu`J+#/h
%=Edp3#4MaRp$e;umuC)eE&TYMgffk_U!*_V/_d-;9^i3BW[ZUo'#8FZAXR.pn<Z)KZRD^OS*HlW`#)/a`j.)%77o_M.P4@1:WD$8
%U'91u\+SdEk+S6inF$?nlUaOH32,qZP!\9V64/"PZ`!e]V+!`+KfV2c@1&0pPJ$F9,q:3q-6gC5W`TIAs5!*`[]_pKD9n;d!;2J1
%9$1(5X6+%YJ<eg<NP,g3mAI0^:N,mApV%:m5BYfaU1p\b'*6U]UP"s?^SQoi#jl=K8&1_8TnbNcIQ8+X/sUI&,1k:MFrr+kF;O2n
%iINs!N$0K:#>K+cXoQ3[lOK5(JQ?5@#;DYRXbZ^CZJ'u,5un^(`9jPI-&uRoP5qZQ-m:ha+mjeaZ]gMs;Y4dJo_H.V/*3Vke>q`G
%<PrCi840")PRL_<[@)tV`Pt;f6tEI,agmLPT/n35YPFX5@D!<\ne'CI*b4#9RGWfqg2-*0mDG.6^@'mKKg^m$+-'.a$83ouOI?(O
%mgoL&7J5083K0j-IHd2AYf`R>,!Nd(a/:I@=^VEQCmT4)"TJH])oiTf4,8.3l]Y(<dJc_H"#YAIZT3W#C9d;n`;T/ucl]IK7R07[
%_"]u#8KI(7]bY&(&.VPljC9`&E&VW*LH9b+pk@/n_`<=d*JV%jah]1nE;:#rLqE6`8T+dpO;;9ZrB4Ks'T6G6$eM=B0mtUIPYo/t
%**(hqp0!7=!lWaOO0[M])'R8YA];P0-#aP!g*<mZ6A^oCa$oK2=l>V!%JB7+%<4__%H%9jit$-ZfSMfA1><.aVuW.U@<9k!TCiuN
%3I'=Jbr5\g#>aP`&;gQ3cKOX3D`s/r:$,YP/lubG7Q@S>GdftH83,c\]QscS(N`WD('#>G"T+?..)o,AlW2,eFsNWL!QUDl7-1`V
%g6=ESe5.Hi*=h18,eeP;UF)(i>O@xxxxx'%,T!5c5f'Rp(f"bp?dGK)L1!kaX[)S7`(EH7j^Q)Z:S)@EfI$bYBK/R127u7!I5W/(
%P\I).KQn>!JW/3Nc,Ze@k);9fY"DQT2CJ$m-I+_?F/.5BAW>(u`nH;#X\FCiQh(H:/@e]T9B,'/W!?^=J%qdR)8Gg#";6;Rnuuo"
%A?dimPJLGRs!'"KT^AF"j!CL&<BjrH05C083XF8^($Ts@mgg-173g5+,K$+LpehjlQX[>jrB'"sM^YqDpi<^B,#iP]oI$-48nJ.b
%K6+^+BnpkS/2ae4\Vd'UrJ.=`%>?q^;8[d.6A\>#ii>O[E@(1F4XO$7<qJ2*>E^%;%$;i4Cm^SW2ESX$b%ld7/FbJ627u/PU6IJc
%p+nM"<*k\e>u9p!6G9_;D$7]4(7@5EWh\&GEOpdH``IX!.5C)S,m9f8]F#(D4$>B[Lg[U4ACD)1NMV<2]"!=pZKf>Z?lJ?lDI<+8
%4C!Z(!Dn\$mG4!l8bm@CBulGBf&=,m_3/!ElpFQ-I;Olm%SeliV52C8-Vj>u<*@]1I4'<m<Gdd69f'O[OipL]Hl8PM_r&_JF"de5
%A/N>o>Bur<[=M6cOq^'.Ie2aC&/l"f1IDhEjltl6g.&_MS(W1#[;'GcU4u*c8?M)')]];m`*eG24G5l0nEhnSjr8OEQ`n,rl+@KR
%U5@G'Qm6F]9njSek2:r,Z=)Lj0QFZV.Q,$sR%e/+ee2iW6q^Eo%jd?,nE[<:h`pf:A+$M%c"tp6fC9RaK4H\gP"4=rh-$:F;5SoX
%U?Q4G&![c,itdgIeXtr:,tW]aAkDu0e3"a\;n%TE,gmS8T.r=6n0FFkm<)cG`-)_Bi9\PHptJrg@#Rtq!gMNOd%jbo'-CCj/.U(p
%*pVSI6mG`2L)Mfu'Dq7',!#WX2E^2=##>KjY/N[@#%L8tSmM*m^iFI.8Jg)PdkunZD#['u\8Dcm6U890qVIn(ZZ^P75*WJuH4CuG
%"$kn&/M'4<qCM'B0m)X'*'a+!FPWEj;*;O0I+V[#CFVMkA.ANY6.sAb1ZO;.s,!Lg>mCcP_Ak#M,Ablt_h7i%m_O[2<N!fLO$a@o
%CVY%,(X_!+a/@O8c!3KApiJ@#iH4q^;"HpDYfjNY;\p#hpaW1M-jHKu*nkA^Et`(&C4V&!Ldn+A+_\73,V+jhd86ll";lo!8#NT^
%<@'CK%7554pa*=`4[nf#.F5"c0.NN$Pb>*X_H#t$5+2#U8EcS9*!)+QLZr8S+87UjWnB@BjqqJ+@V,H$-"bT%WBSa+id@`K`W%]u
%3Q$HLaU.U6/@\X%e`(b4PJG:L%P%4FeSOc3;N2MH8glVcJML0Yc&bMFePQ"J6Dc+&D*r_aV7XpjcH?>WB5.`W6+efaD=W%BVOGTF
%6[uj@<m:)"r?s`&<>(Xs=Qf\>+.clsOV$>mgaa$`Ud3b8U5Fb1T#*,WaOiMi1PNa4/ZH6:]2r6@'o1K(=,FWnQN@9fLEtR)*e.E(
%oaVupnVfkY;*k6X=A8Wtd`UT_W)jU7",=npTc=7$n5K.VI$,fWgoE#;_*U8m,3:"XE"^BJ+F![^^H#;RcY>b28j^os)"X?UX*3>'
%&kR4Q2&Q?7^<B/@]QS]01\Wb@a1]7Jqh]-lU.Q*BilS3aAHk(>p@!)$GCDYJ!GWK'E+gD$@\=j!W^8+k3&./M2G.Vlkdh*I0r91e
%^_QW^7gsP<+jR:C<W'b_pEBLo']4Od).#a$iXnOo.RmTbS:L9Ncls,Mi"'[!W,b83fKkI-nWOTgpibHqkMNoncD2$h$I0MVC&p*_
%LDj&pP'.9lM_8@df_$EO@Ma&G4Z"fP3BiGbAhip7%JpVr7@m5bm",?],3SSg30X4-MQPDBaq!UfDR1[SAd"W:a[h%61+,oC[1YiA
%;eilMMhZ5_,#"nhaQ/9C`-%@EYjXsU6fSV5Ha75IH3q>1gGebYD$57f%Z6]O[Gj;kl`+kR>t<"Tf0'sol#Bok!A"s7`V]-g+CA>0
%Vs]8kY+`9l8)@%d$h'4=92;C>d])LR>pX2+,456tFrFgVJ!;;FWWGKZ'nQNM7Cta%?8S`K(6D'gon4;'Ee`<XO$ZZL;]/hnaI,P"
%g1DE.8P289:ntghhnIq6l.'*]mSKq!CB$\@i-,\d1mJ2_pnD\>3Rs@dg^R5S!ip_I`Uu=U,hG?pA0%m%i?5`-_hO=3T63;d/TkKF
%=`2.R?.QE+2P4[+L[&JlBZd.C1[9P'3Jk9Q\#Vr4ckL\(La0<,afNihG*+*L`CU\0;p^'i8KP!Sq`TP2(hjG&=Y4B]#7;?G"e'o1
%J=YDZfd5mm=;XO_p&$06fD;&/B)8W]nUB)W#U_,'J>iC&H-HOD@gpCa:^D_0Tk^N^[5+SZ&e!)l=8oM:/O:<eV"!`C-\;#n^h8''
%TFSO:R^s&9,7hfC?V*oXb0?pSlUjsWPpH27CfT+dAa<Wn$/+`H`'"9uVleZV9-Esi=A2o;'e]LS`BaBa"q2i\L5Q(bnp=I@LhO+!
%ORn9]Yi7/LC#:bXoPI2aE;i\GEN1"K,hnp(W(L'B07P^7De=mk'5^ha0nH6`FBJUgq`rj%S0qrG3.Jl9X+=-+l![;BVh^[%;+./S
%73NgA;C.Dc!N>>SB:01V*B4DMY-&&g#m_=&$G%e$B9S>J\tLk-m3.I83XO0uM\*Fg4`cDk$ftic9J0;Ua=g<ahQ\sr<:Q$3Y0,&(
%r@DEVoj<4W3<ej=>XdKnFEj7Jf)jQ#NH(P*hE9\q@PrAmQgMC>L)lAWq4`f'>@u?.``Qej7],0qFdo`m.PBdrbB'N>/L?^ng0ki?
%77J3s&@1).:DHH`L(Rh]?o=/KTsi@q0*f3]*a5I$#TFZWWQ70*3/N"jFSl33UEOb@oQJ?>hn8nG[b]8;'@c+7mB](X'X#s<ZfF<)
%MRa`QJuV-L-n9,!5NBe-Q_7SppDURCe]WY,7D%(da8pZ185c&5=B$>,:i^T#a=hI=l*W['$4k/IBW%)MFfcN^B^YAiGB7h8'F<d`
%;6EAAi".&sU;G!I"b]rghQ/<@EXhR:(O_H@mMN^)%NtZSg#@fk<7Xo8&`MYN\S)'BQ6qdZ_6Lqe0&;2Vb(+uUNW=k8_`M9X\gp<m
%C8LU(Lu(=+QXL$71B'14fHKJU8]/][5.$6=ijh$KkE29pq"@b^f0oVV*^<BPG)/]^qf_ksb3TP/b]=KF204<nR@:+jZYAR!qq\ES
%,,nMg0blnbSLZ>8Y6)'](_]7nR;+/"eN\<WU7Q%5<WB8!jE[haWrQ"tBO8&@&U_<mE7$6WRr+SUaeUPX>8H-R,r\W]d$/9797!t;
%=5$o#gZ2g_5>Q0K5)k.Y6s_d:&FnhE?>p,?_G0kKZpo/T8gq`"'jn4:,n$-BBb>,adFePL,Dd.dkuKp1Vlh.11m(=Lf>HT..k2EX
%Ls/4KN$Y_V3Ff@DX[_m7XfFlu<=Dh?BX4"'n%r4-P07u'[?,&mCj/%j8@3E+&lq:U\b/<$f;=B$:mGnt27ABN5dmV5`%'UYQ^N"[
%Q4G\*Z9ujNVrEo(s8#^\SUF/A:Vhs%,]3@QV<I=kD>UujB3"+8lr$B3R$*caS(n:d6^dWmgTaRcCAjle7M_n"RCNSp;qXQoMutps
%8FSKVZ.b<I&rV2>jM7Hfe_KadIk,$saWmMJ:mZs?7tb(hl:8rOJb6`Je]Gq&i`r'Ano'-K6=Z-_S1`\nFRLSThX<YH%Orm]=O"kr
%EOc.3O2EYDA)Ijt-CE%s_\g9_0BGf\4>iD`fMFo-Dl>D;2RA&"\Gd8;Z`a25aMe-L""AG8qJ`OJV<&DshID3A_P\l'5Nhc\gg,Ck
%oNaFd+4jW-bB;XOT"Eji)?da'D`.JW)Qq&k<0KJN(8ItsRbrDjgQ:qhVR]6a%)D])0tn#5R($l1pr.*?#/+jX$U?g-)?_DRC)#l;
%c%#"YHa9ZYNHYFtEdb;T8,#pS@Q)$VOBsACaa^U-lSY$-d=NpP>@UTn]=n'uos=PB\V.1630YhUnl_)^.dBHT9m<Z_VVFm"\5fi0
%>/Y0Vns=$B3aJcqD9T#T%p--JD#/>.;ud+mXG7T-b/iK@:<7t,4MSmOgdf#HaqiZOb9+.AWOqH/R-b^55Ge(i8%lTP?IM*IQ0?7D
%=7Q2,0@?hcYtPhHBBJ]KATAkF^DCtd3.%gSN;'is/&<1+@pg3t^\\a)qU<Q@BHuW6r-'_PHTd;Z[AM+ZC7!lU^&Jd5ps3#QJ)>CP
%*)gh\;=fmqAP*:?M:jn-QX+FRUb:b2d@[:U6$KZ[<BdQF.[YD46L3FH%fbqO`bb(ZP.^3!A)j;hc#p]-YKJhRTOGdPrm3O6J+VRb
%&k:"[+^;D>hdhJ-8">(Jb&/0I,n0-g"R^(nQN&;u@e%Z8ZCtUr\iobPH69.i6Xsmb<b!bCIVgRI=1pI7@jn<oXicC87;Yu%]@sr[
%>cB;]Zu$/?T3J)D.l]K8pta8c[)V];fllR;5L7d#=+dqkdpP?pGil*D)KXe]C[:en/R4F:OhTI);]9jtA&nH#CTOW'pA8Q?>V4iR
%?13rX_:0N6XZ$\QXjs=,=B]&'S^u`m,Y'[MH!94hGb`d-96)+(Tbb7;iDo%efeB4+)Q'$5NV]Ng*ib\6HSX?Q_7\C&S#7]q\(*0c
%`bV&5h=YZ"n2kU5TkFWA#PD=YeRhZbIRCJE7dWib>Li:^)iP#iEgDbdSU(0B/G'0S?ZXJ%g^gnKk:blm!S:M))V&Ngg6KP1@k=pL
%7`(<6YhlHNle?l38oZR$.E*`,5TB(8^"eHQjP@60WEF,qG&8m0!8$5(*bs`D3GPX&QZZ)>h`UA-Vs^0R<3t$,-'0g^q\]/d'n(L0
%H=cPpW")3:Z`CM;V3fI)o]R$9q!NT=Cjr%#A4H[T&s*i0s&F"MQA`-nLKFp;]+&VK6adD=]:F@LI<]R'YRe]iQ[eQ/UI+R2+anLH
%"D/k]L!4='09S73HJ8IX,j)c9R<aXNSKa[IGq&Ka;r.&R:K$pge[l$^Vo;R#=mQM*Qj,4D9@HWdl2J0THL?r$2<L&I[V:^m'C'E<
%`B<T>mI338rFBK=a2H!cL!H6oDVLVt[2tn7^d]6$s6+WG8gQghka96U9&"^JmEr?9ra^3dJ1lEWm=F=>3dm/R1gf,!)=ncknP!Wu
%(hC3o$4eC-=$80c*`2WV`g:n@]/pQgf5\]oiJKLOAahUaV9A.8gr>f[V:Fb7.@3[LQD!-bnFk3>FqB`fA,?9i&!"GKE`=11YP:BT
%\g_.<`)EA;LSg=m]"NDo07+\4kX^9)cP86TQepKqP%OI^[teE(AWMU?5NCPc:/L)>>O4_2ATNcXfXC4oh8ZV`*:6)eV.D.4=p#q"
%/RG2rhIMll<[`==`P+gp.fZfrXjPrX(0\9J[VkR.k$>jPgo_Sg/*>)>>I&!&R;.3:(;n8nNk3J\?A3ZkM_Kk8J882U4GpXDk`GI&
%o=M![Z`^uV*kIVJTqg4mn!!(1(j>It#qptE],0uLQU2`dn9m+AnVl:o^JXjjpU`VtU9?C.b`-4fs(K+*S$P::,sqVBoKe;:A]3['
%[8R@ogXj$;maKc#[!_mUQBg9]:s8A#WMD_(qG_(YSj)i@Ej*aRBpnk!^@-,![KURjmF&I4k%&?I=0sO\S&N4hkPK`sK`9I-fsXa?
%lJ!3bq\FUN]M?t2Vehi9d=(TU'Q2-2f5poXiVTJ=D]PIiF_bidX$,AeK"9`L"VbDna^%?KiB$jSb8+`Nr_s7u[Rrm4bsmsUG.gOl
%-/Z8h0DS._DF_UC5qBG1%c?`$k9,`;K-fu.3T%!O`pUO'rQ8knZ(4ccI=""--G*%5[UlE(DJ\;OApPP6ne#?fqfc8gn_EHAe+`1;
%-Ku*I>0jl@qt:4SrRAApXs&<gWD5B>\gsEPFqZ95/H4D)Oj]HA^UfdW1e-m3*e)c5CsSq,]/U1#C=9YL]ns9(TsjSU[SLDJ`4>8g
%LFL<a[L20"(9sUnpE0;0?Ip_CM0;,VE2E(gIE?stD_#$j5IYQWP0o1,L!<mof+M.Ek.H+fnTDIY'Jm)m6.9>qHB#2?buS3:FmKJ[
%(>*5kDA!6T,_#cu^Md@xxxxxxxxxxxxxx*[rE\4pQL*&4D\KaA?M-ZPFg!-NQZ1E>F;pg)9C;ThmXAHCakOa9`VC)XUQ=;^fGj>#
%l^CJKQI+PDgIOu&TAG"^a7O"srP6As;fi<(<!9B:6YSHe.W+^!a52Ae1h5Eoq[r7=h.m84rQ3tL)IS.>bV,2l,h<?#dIX38kdLiE
%3.'#&J0;*@kH%D6]611#5;/Zh(^68aGA[=oXfrgL@\`DRmDA5_G4<lWp+\Z!qqoDe"Vms$IU3`H0q2psg&6+rZFd8`]9:WQNKn_E
%=391'hLWHAn@jUOpU\A\_K_tsg5FTlV!$Jr(1ZYLf6(X4FZdc((,UU]Cm]5-)np*HPp?JFk'.;m-22e3[JSgiF&NIOD(JE+9_<b>
%UJ5m^48h$3>\-).WD-C(^>o$;0>mF[e\?AJ`j'YV4%s(-MC-0sY"*@H";V[%H_1mt!QX=\k0u6WYgj4Z9.QjQIAm3-\"VaKhkbLC
%j7Vs2!'!FNgDAsq0!V34oL2,`gigU\=[fcJkpS#Lrg1)Qh6pa9U\"Jc*Od=qB4_<uP,pr9G]pdZ@!b=?Hq*J&'8!#IH;tA:Mgp6t
%`*$nY^e-j#<E1!u/3#99e7/\Ve:rRW3Q!7FK*77&<-<F5,ndp3`=o2t6aN4Khjc@81tNVg]nnqj<lK<or7RudfkfSB1q4%B^(=Q,
%2cmSKVB7'MR>=&ThgUb3>j+g[CT]DBr/Rtl6Ck:0e<3KOn6q"n@WIgPq(1oF"5bE)UTc#6Qt1lW#aicRFd`ST+UfBNkGQ+fDOX/i
%Za6j%^OP*U3,Zm0\96A7LCRbI"CFEd@Wei,VZP(<=`r9<\\20Q9G@Vs;cYLp8L"#oTo+1;)j]P#ddbqP(#uf?@Nkm_J]Q5^9],:/
%g+6Dcs#!G;ZM7h+<h*=+r;H4nUJ*EgYK?06U&qTt"Am>:?I`61U1/+X'&.PPq%#_dAVR-clBQIlm)kP[*:#RZV\%AQoeJDg$p+j1
%LQc`jmB]tj5bs67RlMD+3f0C2CPA:/KPBiSIK-`WQeslF.Y,f&'tm*aX0NV%`Dk4d,RG"f+`s$WYL[7;aao57d,baXOe/mZ*<$u`
%D[D;$rNV\&]mGQU"ELR0G<cj))shTZnhfgM*hmtLTQ=b]p:T8\8!<`%eMd[!*pLg2O:)T.TVtCLC,>712'(p,0JPb^SYZLj[B(i*
%KoK$;&]>geR8]M;2Q#uaZ>sBqMVX7%OUP2JmS.N,#.^tp=b#)SVU/Rp>^%Qbd<=3ArPLNB!@H'$'q_4-H-An$Jt&D2&$"5--.kq?
%k`QS5'GgrWX&)dXEjh37Q^'u+!'C`pN?#e8J(59*A/]t+5cTSdX6D"T8WNRJAk+F!=C18VZWbo?m7DuNi/.[*25u6%B=X$`DEV=0
%;E3h?MFBOn:S7BeNB50$8,KT">K7V@8s#`g_#n#8U@O0.&;D<[I&^gS_-%urb^*IeU;YBt.FXllmaO`L+NXk47!OOlKBTrK'saqD
%o7FQ?;aV'mo`]jY1`D,h#FVPec8%S3h9/ja,SHO=,ch]jbL@:=faQg#_/.`i,YW&*(/:AEmkEM',t4cr+V,>QBr-m2DPgdmd_hqA
%js;Hs9-7?fe\/$p@EGR>TcZTQqp26*LH5UT9S#4/W6"/do00,.j-:WuDY@xxxxxx!i3j75AYN=+o1b!%HLq]/!.i:L'M?$c^KKI5
%I,)R*$GWN/n=6X7aMDHuYUn_rLI;ff<*$o\VcS;op,5p$]5EkjNEd/b":VZr,EKRQWnuNq/G"'6E/GHs':0;,j,;p)l",=P82L39
%2L^%"p]mW4!U`*'m[@CV%/Va^?I4iqnD\6`Hb)K_3<GN551GN*3:_E$pC24&p6lihWQ#s2,CPi[?:@EL"N07F`J#LEU4&d46lbGG
%o4abS9FJCW,/&&">/;am;@aeoIi*TI\"Q'Fkp7=P[pZB!)3/I]A#h5+QaJc87P1SE[85@B?h!Hb6sg>sFj\_Z<t]EDP!X][oMMhk
%onn4(a>T^9LDJ>$gWfGur_KV_Y"$l1(l@*NK-8C')B'W"%cgYRFGpWYe"O+ukM*\QGP]eI/f_)56;uqGR@kNt!f5pe_:Ffs?2[C:
%"#nmS#f9;#0U$gk?CV4>m0d:b=s:[gcF2B9c>"OO'/)1L<HQb-ra?r-[NRCd[e%@Y1f_Hqg32:&rbs`6X1mlm6k*u5XKfQ&$^Gh:
%X4AAu2YcNKoBd>WIJ4*_(16H`&LK1$o2`64q5SId'`t_kp*%-"gp6Z`$u9'&\?8&$5a:9/[O9':DNu#h$/:&SF'Z3Q&=jl7D`6I$
%dF3<SU4ZAK^Dd_pL(2_gp'nb@`XH1_Z#5/fPEEVb?0?+rW-AeH@7OI_L%!W)?ag^bJS75k^L+2[eEq^f#=ae9?15gHoF:"#hpJm$
%L>ZduJPFsukIsq2TrB^&D_'.:EnR)^,eo_(iJf\+4S/G6euo3OGG:AM]5*A5KI@5\``*&R-!q6U4iL0Dh/>nli,T8<G;nf8#@b#+
%?$XdsXoJNM7M3cX599G$5sr9(K%=aCV$Z[/E2u=.cSB`RTqbkI,+2L;nho"%<spbEEYFXC2r2L7kA6!hDB*fQn)oGYC&?DI1?>o'
%&Q>fTr&Y`sq"aa^r"2WQgN3rZO5+YP_/D]4AXeRH$sqUk:#H@T61j<W#%Pn\Y6NYGS$D&#5Hi[p@/)A6(9^pq1"C?)S`TZcq[GkG
%rM`j>ep3#*YGnJLU2(^6`g1dLMcuB,]oBS\-!8NB^M7Umdo^)ubOlnGIX<O[gR2-rF^=V@h4Df5&Pjp!c,U%PBZ"lIat`at`\'94
%GQ.;MIUDW%Jp_!3L9+Bjqu3SVSM?%5YB=SlD+2E7cVH#e2e5L9^"r+#4KfI/Ji5B*S"?hmqp\5dg,??e_4%M]qae1Nj*1&pgJr*(
%T2bWGoniFt%5!\)QIU,K>C<:7\ZJt^2A""h+.$5e<GufVH*!ihaa(Vl[nlVmJlP*RG#)R_%_C!(c(n%88fu+,QT]HrC6#(FR^"6\
%['h+odeD!94?YLWr^XV8R=q\2SBBaNRqRK971TE1cqYi!qW$@d[WMjGajEUM.C(bMg'?$a/$#L7\3IW3-?6igENaN]7Jj7iAAR:G
%AC=$\,r_EI8;tqkKc1QUE7gkRhK$:_ZV\]rg!'P$c-8PpVDHRbU#$me;JgA3V[6*+[0L+\:R+L[2_l[83^d:q^OFFEHXZTANF-G3
%XOOJ&2UWqOg\K;35Nr"Ark!<m(aaL@+c&ME+O-qX^o$rO$cN^)ITM2dS>^n;VY2.^Jfh\WcRD;ldC9No+%&/l,W/YSO5:_/B*K.H
%#%j8sS\u$'8%:VH?Al>^Ee03Y_.n=C<kS4NN1s_j>`&5]6\<EeE1^[V9tSt[=s\J?C%_"q]$t`79]fs!bg[&D)fe5Ng&B?KJE->=
%1pG"UA0?b9^P!94.eB5qD*&[BfW?*B&)m,<Da]J/a^ld?>Beki)LDe]`W`1(FunnGe7QAJFo*.[mJ$1u`?<iD-Is"*&T>G@CTMd6
%\n^:C\k".#RH`[OoR-UTimuf_A:+6<UdBT7D*j`g>DVf2%J&_hJ_h3GF/8;`Bn>ehaRahjY'%S0QT+YC45`3M3HeBehW!'/b.:SJ
%FZW-:$PUJ#(qG0ENTlXN!_rQ?\)9RH`4P<K)tm:d"b5g2e/RNSFS5NRhXK4)'<rNrgjP#bY2A-=SSu9:fnl_5'EHD`!r\)Ga)tP$
%s'6s&s7Fs$b`$\ZlT.BTlW.K)hBd*J+AJtV!3Qeuep+l<qqUtR]M4(^h_f=N&`PUm7Q7D48p1-[RZTRX0P:oNcJR51(en<-D;E5'
%<kKch;p,@KlUK+KZ;"d%1[jYsVM:G`p+ndOOuHCq'h%BUQ!1Bbl=`Wn*q$T[QQEFY:7]JqR"J=*<4?d?b"?.RdcG7tI+R8m!5TnY
%>GNnJ*Uh=.?WEA$Wi+![[>`gnB'jIta^Y6iIX;";fD8nI[%=e3QtU/qQ-Nleges&!F=I1!'RYU,RLckMa&t^BpS=+Yl^"e)95?/>
%$WFc&(K(VC"Io<6WVIGMR]#V%N<Ii-]NVI1`\k3F'uOeR(A2q8_rKkPk1XNTf/E^^$bZikT"CJBg\ZE'&V)3^Us[gYMtWfGq0Cch
%@MS,"gFHk@4;NT7XOJg-inYXZK'IPJK"<H3l`9AXPlG$.d^d4DBaYO"*8d@OQ;75sEelOBANpX,bI]jpm3lo,g'i59Kg]0^S+g='
%/*HKclEi([dZ8#im96&]Gil:8Ba#ndBgQXD@$+Q$>s61>[OU^0dgb-S]0k]1#pddlgO+^HG/qe3huEDI'pi3T`PuGl=50*ej1a31
%(u+^4kGPQOqHMSD`%h],s.O5&\4SiQ_9$\hk8F'>]BPH]kfr^G^LT.S\ScSD&0>>T6?EU)lY5"&i;/PQf>uSblU+.KV<l500jREu
%mWIFLDX[(G?!'D)6]_&GeY4=8\nF3XA)e?GCN>NPQFX/>&M`MmgKJ:umd7uFY5TKW#)-<'_WJLVIN4fc+^0H&4joaZ\`s,+VgqFV
%r1W;uUiJn?[6N8Cf8668',#_Vg.VE=o8t=>=$8T"V&!Rs6lW<kY>=<iS=?a"_X:kqrO1=55!AP51W2GAl>DFa>Z>3pH,Eu$TL0Gt
%_nh"c0>STJ-E6aCPq>tSlqR0o:sLtqH4>.3.s><'7^Rn5f`VqbJ%B%q$3:CDl'd/%p2[>s8OF?<G$H0e+VoM09#3HE%MLDUkQcBi
%#Ol-/?HASD8j_U!QudIbe*[T77""lMP3uj`1*IpbWuq#tM!1O]NB"I$d`B`I$DVjI>6`gRE@=*$8b*QF:sEnEeHD`PefuG@c;1Jd
%ne;]EaEZX^;0iBIA)mqooQ0@#HLmR-[ADrtD.`0`'%UiXqln,@-ZV')"E>&R"CZG]UHg%[285c19OVH#Eeg,$%^BK)1Q/?*'dXb$
%_N6F/J:A,^JDsYkR\Iu"MDu,hT.^7(&&J)D40#i#:JV6;0f&r6!30R:jPuIPOfA'@S*S0/H>A<f1V6@[&M+SQ=D1nF%hA'r\N8)N
%W7nf'NnROCl2E#\9m!q+DFI>&goB*-4;JMdL`hi#]h^9`F9Mk33Q_HV-hS%D&$l9HeotbZEG4,RP?dcK=1)36Yfs8dQjllmRTQ"@
%QA7MlN.l5B-Q<NMVB_[OYZm"L^8^*G3`THTg!V.g1d)ec(,_WflaH\H<d4>^8IV*=PeW`J,k^+5:l#BAGKrs;RWp`@X(6^^o'';+
%+-bMUp!dQ&V_]0g#ouO1Y`Y$M:72qCd_#?6<d1;;C]i,=A;3s@xxxxxxx@]*kt0D"$k"rKhTk?(jK;K/!+jVO557jEom*q,W$ZuK
%$q,TY;BPQn#n>0YaPgaSR)DQFOjH4Y#DHD$KoK3f9+`@(+#/$=RQA3ilmeDi.6<#Cam(a1UHYo0RqNMi7'2AV"kX\T^A*[8l)NF,
%,eD8mP'q)F#gOJ8fcdUBlXT'Vo]WN)FGUE:1>,NT46GQUK>_NAC/4F&0R7um9T[F7$4^plb`Fn-5j*EqH1=jro:CrSJ/1>unUgk2
%_;A8hNJO$9MEV[0Wk0r+H;WL*pm]2j5We6lTGp\dql!<PTGgii!HG32W,#@!!8A"OJ>([%igim2o=Q!Y5%NNTTI/t@6,W9?AXEsL
%PV`=P]/u=t<^$)CUPK-ohi:TBA.POuP<n]g[OR6C]/>-)*USSI/V:DjW5<0@p*iDE,oqsGfg-(1`_qGbPCC7kBs%KsYAdS84%3'A
%Lq]9BQ_IL;&HD0^r*ElfA_V.S;7+g-*lnA4TH&Y%K1u.f\,rY[_b@tu"BTn,o8Q.,q[N4[g9Qg6\q/p=Rh.uFH4?HcG-A]!L?Q'I
%1J(SMn.:2)!:>U7!*7+48fkGC]dNH']eQL4U]i-*<A_c<B%E$'+/c]API"*_1'>Q&]+gV'd/g7^km;h3j>J*@a^D#@:POJ<6aZYb
%o(tuFMb:11"8-CI9hu.-DC^UHDMj7X*6oBkW>%2;6,r!R][.IrD3CVc.tb&,jqW.EjQB[,PiP;C^Vf&]9>MV).6$3E\JYk$?f5CF
%TcCRr.NAJ1mGG;H0cLTNH4QYGl.]O&)'l]K/P.6Fp:7F\5VA$R?uHBGJsbAtEYX\0"H*V6NiK3E&.gOS:&XAH+l->V`/B3a'2g8X
%=`LOj5n8&`N=Y\gPR]H#!sf#k%XG7530@$RU(=-^*q0)tFG62Jra]tcA@#(H$c8ot'7d4W2fFgQnXVJZZ(MIA9Eh*+@HU$K>4!66
%;ZrL^nNB=/h1`[8Qak(`+Y#G,QPn0aKn>],`K[+rWjk5JMtFMil*q0;.m((Bf&nK..6PIb$9/)-^D`RDL'n^(M.UZSm8_*Kr)N_j
%&l+MHYcbVmb/fU]T.j6Gf^%KcU::i06]gMa/$<mPA,#4dr\h<=r!.%QJ:#'q-dFW^TQ+GfQ30,N;&s()AfFl<DQf8E-X%GdY*pG9
%+T)]ab\eMn?)!Fs84[ZV42b2P2`<G/*5S\r&quIcoI@l"@lJ2i][\1"M7:WI(j*)oL_H7(1^.b;(/rF1oG0+hVuR<bpGppjYQ+OR
%!PB"9>\R^_r2pQC\Lh\0PQh7^':s:YqeF.kE=V1L_Er0JC$N^J!69p^^&`[o8_0)gE%4$S.N.M2"M$dS]<EN]bk,?_18if<F?=a:
%Amn)&Po"#l+0?sXeqXdYipBa69ba/.BSpX>CFBN':>'K4TdTn-j7h'*;QRa1Y2uS#I&Lfj'Sj]o?k4tB$;96S0N3'6kWk9d)A72o
%7nB"4*0G&!fRa0*P/[)i;tXUlF\lP=]_dQYl%p4mhOt!''(=a$EMt;3'E?^.3Gn$qrn(ML[\o(ZAtE<,E#3U4RW]PY'gQKu:FHSi
%;q1B[%Com:%`0VJTD35e`G+I;Jsm,[3E9o(/1BZG'\Rt23_+5QPF=9p3T0=u9akb`aa(%lK^>OqIufB'e?afM3_F=]?64P2c+$r#
%U8g38h1nlLZ(XUnmFsB>6T)DXYW]sF'j1XTG#`mL6fM7P=@1Ee=5N83V:oF?^Wg$MkO95=LA$_Zq(=ma]R#@-;4&oeDAM"F_%e$3
%WSTI1$k/ZP.4aR.QU0:1f/BZ^(t&ZK:YC\]J=AYlDVEc'J>DQ=T*rn8LX#pf50X"=\P-#/AZ$lqkHJ^6IuAn+aY:\M-!`m)QN<DJ
%]8g=c5;+>QKI%LV\rbV<7If+G#!t,-rHRq1nff%34hm[mQTg`tD;qZo`5b%=TH9E#CY1iCS*#If!`I$dTBGL9Ad__(BNKqXA&3HM
%fkUgc$tgusiG#C,4emu(nP2?lTSj%KgM(,S;^J6.Glm1"N7KrKA-"[`+9O_n=\se"j5@rc+UU=8"rIA&6o,cLJfX4_M9NC"E-+I&
%<+n,rcnP37VC(%U2'E;=;aW8cVnOYjT&!>(-fC:C"Zt7NL[48.`s3K4XHH.+9Uo.FE)W!^_%c5fj1P*c@WDJ&BUF!\8_r#nm"1%1
%6A.dEQ>\SLd>;AuOHA:Nc'*=T=a0L8;oA]XaR=GD6Z6t'ARLBlY@]+F@$QLF\6.W9s+pY,N`q(<2bgpS'jSuN(C*9h:2de]>PQD(
%ON1'h)N3_ur1`!tCmrCsFEZljP=TR.#/eW`_c#[?UCV^_H9/+R07ncEl:L0B--hsug_<8UO!sC")ZdEogK5T_n2hWX3n>i/`6E@F
%$%882(D$'$lBUOtY<tp8*O+\0m_[Wg+j4KtqkeWb%hac[%sI6uq&DW8TqdHUS2HcJlI6l7M8^&4CS:2Zq+[;[T#^%j*/ko:Pi%9b
%m$USkk_p&Y\i4.p'$)5Zq`:/Q%F[q929RrLZmq9-eW;9jPEiEM)C3M.)Vr+O=Et6>N5jBB`,t*2:\;*U!DPA9EU<AUbU+?144)%:
%U59se.O@S2U%]&Rm*kG9V.s&c>$#E5_1.N2R4BQ/?k$tR3dDDO?*p@!>HTm.f?IV`G,%e:V2X`:6sgQ[eT"&NMEiD5X/^C?a%-?N
%^Fn,P3U#BaD^_\0SYl=OlVT<hC`s3nTJmo!8?=a^6epbrL".-#iiG@j@o?+%GgTfrPERE\;(loMTR7CXG\dt0>(e'!\;4]m=efT#
%AGH4ZIT_=4bme.6-QWOV-K]N@]1lnVWh5mT)A>D(CB<u7";W+#Tl;R3!M%eoDG%be@Y]NiEHl]BMpJsP60*fC!;G'7o,lSZ5%'%W
%nnsL:jCr>uGs![?0Dj;CNCC1s&YHseYI_d\P-]+34mPZAj3ZFT0[Me8lW12\(jd!s?K.5@c/Me+KbEX!R$,Yt(aS4]n.Wpj/-`:K
%0Z%g(mU?]NROWG:[@cua?Hnfj[Ck?u"n_,?'2eHG1;Xt?E[@\=j4tO&[ck0R%r\N=9hok'>u,c\m9uW#b?EgU0)LCpFWq"<9FB%l
%+\=07aG5?t8HIHT0t`pMj;SRpHL-0hY"*o5`(uiqh/\$O>q^?E"jMNe1&oEM(IX#$^RS0uHlFjcRjh-<O0J[_U0n\MM'^;^,!P+0
%!aIT_o/pCgRlS-iG(L1^W&I,""JBj)klV7?hS.AFk,?CqMf5jt@W5t.+,G=@os5$C)o!7*FScJ_DE+-ei=+<=#\j($/57$]V;,[(
%!M1#F)B)!f4qH-bY(;C:DAs2hB>9;%-sF0>.(^5(6]WL@*%]TOS/4&7PE=]D$r&.dlN4^7[e^.`+I^)(je\P[o%M+[\ETNrl.?,4
%MN8TAYrMI&ot0Os*5<r)-<(+o$"]DFWOlaXV,r2"]/!*HY@R)9&TG`\Ts9D_MT,Wnh'`$0<T5@_L>2u[(/heN>c^U(i[=:X=98O#
%!"/h>$Y:>/>?e[)qNPWL]]KB>;7b`KRs5n#>qlO#4`FB1p5lda4lP960/Gt4.W,AEfHERa2S=_t+5bhh!>pr<gJf_NAD)OJAYT$_
%hI8&Zrd0tb\ZkMm7EV?o0G@P>2A.XbNCLl@^i[PdTpmhCYR4NZ/$)QKioF5h001Z'IB*5MG-o>efmT*$7M@Z"A)Z!$VLT\*iXO9(
%W_+g?nflfCp"RaEpV-_O(RZPsR)ker#AdF=L[Dt*3Z.DM,KI0Q;&,r4=_/AdUAZQ.gP8l)S@<43qNH>2WW3.r.kjp\^Fbk"LLP8J
%ggMH<53ZJ3,k]QaV$]UJgmGq'(\Is1@2@p/oG9Nr(&$=,m/O$="#p=bJ19pk+FM]s`:?`ITpKXPhd!)`2*kigNCuDgEEJrFm:a_g
%XP[$R6MmC*Ylj."SOt$A'&ho,=$omJ#BN8m2&%LXm9#;*><GR?7E'-3MG#l)^jRtQecVOGfj,Z"3gdJW@L;@aLWMnE!_G'e[&aa_
%[BZ_2:eRQ#lfOdE^P`0]qql@<<Hc>S['E96@pFq2)ll@R9/.<!ic@k+W_b=(gdEs]@lMQj8LbgS%-6!l9Z@*a.W1Gb-Y8`FS([<P
%PDmAfE)Hb`h"0X;1o&*qIBBd5ATZ`,<_cHF`e*@Id/1AB5in'ik,u6T&Ra?R/JjG`S,Iee>DE@5GFU#?:=nAmPm&YSeoT0^0Vt\P
%Z8ljCk(?9=NQjngZbNiLCY/NZ('j8?\c,Xbj_]VW)ikE03%d2r2,DrgL^_7HX2dQ5IE74`p`sci[pKdCGmA'[!Lq[Mf<=GFY(mpt
%If%X'e850_:pZXk:eXI?>ke!]5BP/_>n]mqGr*2iI:[b39L6@Oh7i,B++7Ca6H:CGON+,a7^.OBBKIeZOmEDkP0>ig#sUeCENEsN
%gCgNqCL!8Fp\C[>f=UHCmkUWl4$7r?Wt><#)LUGE8DR<f?RtMIV1!J&fZ.%eK&bN6h*4R70/r3Y/V*/9=$-:h'DNNsrDE+dL629\
%6CX^',?"XlH>qC02'Rg2nZXI`fW(#C4S0EZ6c1K?>SN@YEpJ?r"OZ6ko*-q63&gn@^p4@g$&6$+gu%S>i!o*[]+17X#aR1UD13a;
%&G-_!^0+a=JH?$59(g"*dKUXo<=>SU'KT0/JI26TY9Xs3:2+Je2C?%A0Im2HRlk(%eO?;tP5T:;g=;H$3!$gU5b_h_1Xj41Mj_fL
%^5KBKJieo?!AOVr?+W015DeC-#ZFWu%"!R\kGQ[Qh">XIo:ao<EoE]PU8VlO8L><r4H/!qQ)u8Kbqh6nEm+OdS3D3U*JolCU;N/=
%Ih$2.B?Y+?i1,*\C+3oOTqajm;7Mf5YS4)kGN#.lI]Q/$a*ss<!g3lhKau.+i8[NMYD'iVaG[YQ;C8q_VNXd"j%PKX!:^^\4%H6>
%TplYh9f_GKLC-/fLl%].V:qdhLHK9.;Zp=)bb/E\L+-SD[E52Fl88Yu5c?rB"L8J0[i=[)#h77Eedsg!M:Pt26J^O1b+oad(9j0j
%"V9ndj7"=O(Ce3[d-A[gQO-R3X;u:\<AK7]HsK.0P'^L,*h\Q^J.k)RPNgXd&"<feWC^dj#!jGW1Sih5UQ8n9KTo^lJLr+C"l:Wp
%PVIqg6(X)q0i.jKJ2uU1g!5k_#'uEVC//2;YSt)eb6*?H*!X]\9J/Pdj5XB%Mjk95#dH+SKMrCP>`f#(lGc0Gm<__mjZt?9GNd*J
%ee$X"'`&DNLrKjb1D86j@A1tSR0$9a)%DktE&IAj$sYM^>0WlU#U9FIcENhSoo+i?eH&cmA6Qo[9PJ-kT!@r2K<Rsl:7`oVq1"UJ
%bIM%.j[&EXN)`?teAR)s?Yl!@^&hG(1R$QO,D6sE5Ead):qTa"SI!Vq4TQCeF=^$VL3"+sW_Tr5`g1C"%qJ271/?9qFdag$d!"=j
%i3XqscK%U94T?kh-DD_%8F=9;6mW>kA2m6u@6&LfI&*!4>9aV7OKrXg1;G1)P&juh4U_g0/Kc<Rs+>iTmd"_JLbo,Q6nq7@'&J/E
%_=^DVrfl'CY^=)X5lbgi*[CNZRn.d0#<0]U3J59gD2+Mfh;u2k7\U08kfX7%ScZsOL;[[ak>_mbDRY6%bB.Tq-5/fjN!@xxxxxxx
%4)DU2C^hWn+hL=!)tj<"kqD#N@%K[HBJfP&H/Vtin"HoMLuACu'O$H?N!*Da,5kn._T%u\0b_?9j?##!2XfJ9GIWY?c4"Xm?f'1e
%Qd,S5M3ZrsaoF;m[\+hpq+G1$:9$jH`4ugLS.J<oI>C%0U-];_[HlQJE_hY$o+idLb>=V,'2gRmP(B'sM-*Q;`3b?POELb+.Z>@q
%O^D'V0_XVQ#JF4Dd$9%E/.N$OE(+0SZS`u8a=XVjP9hrkK@4b"V$FIO>S_="_#o4rl:*Wr&9.F6)dAbb6YHbFcklf+,YAZ?%P=.W
%S/8(S0?kXOVVA<Po(IE:<?0QmO]Z3=I_bDA,*hIr6uNl3^#UeaagBaW]a;SH3pjR$1]C?9#gSk5UCmod\tM$e\@A"C_C@]:YCVmZ
%/u,\dmmlP17r,0K(CXL5d!R`s[2I-,T#>cFOWNQLprU+>l.A<TLW4S/%CmUP?L.<o:DM6]b4lAn<*A<9eRNb#D-g`<\uAb6/`%1S
%Bb'fa[:@LkD(7"4U9Wji^"t<Rr;qY-T*/'D?`n=>95N5G++Daf]meQE],=k?&TCPeddqg!B(C,WCe:MYQl_`MPlp5ckVjUZa"G?,
%=\cr^gXfV5pV(5lB)(#MpJ`AeRs!35GV$Sn]&/\U^:$ig;k"n?7=aC0^2j:E>h^Sq0/HEFg"Qs!?p3EiegP\mHKYCa.4$uLO5CU+
%rUu/1b_<Ibf=eM%SV9^A)EULd`>/bd!>YO+\,#F^BNQUJeof1h`H/f,rQH&eJ!E5#8qk_c&.$P(G](]"',o+PhA=mL4=!p#b8a@#
%^4i3U]I"U`Xa)]UmgC_M>G__=<)G[Nl5cGL>-QV$:Z(u1<Lc*^!3m@D`m@X,H(/h"iNQkCF"ePG^Lf.]ndm9A;6:(Z,Feo3:B2lV
%k_#B=7S!`9%&Q9I!Bc]pq5]22n_@jiZn#?cZ5h8r&uE3*.mR+&*FSI#PVj)u7X^0oYQ>GEAVXj3[^nS.1D=LKWXbTiW]1KM9IHs`
%e^ZU`Xr5T!(A6apb*/k8*p;ZP$K>8i!:J*_Tu4NSOE+O\L+cTc;p,m6[hQ!oPhSZVPAh%/o[^U`SaFkahda!)Th9_$P:F5ZegQfl
%@Do4&?U6aVD0hN'+1apL1mP@V)'JNE)Q&]JeW.#tqO=%7U&%0s5N!0aK.$*Vc.89$Y>+[j?hQ_Ug$-[A0E%>nDWVN%p::V2O+,]Q
%GS/8i>hs42>5O298Pj:1jEC40$2+8**+Y-gSRm*@\*&6O"cs:24@n)EFqKG5#XT`(\9qSg540CaY\0mA)>^Qk?!W!4d[0nLNEtgo
%5)$#q-TI6ckP^>__JumWA_P[?41e%5HP-AS#T>8Oo(EqS*toL0_OMe-s'7O6OQ\YWSEa.Dbe!gShTS4o!WhJ7qF-NslRZ1X+:.j!
%(K-fG+46^c(mCZ!Ofu?JVZc[G_hM>,(00#g%P$h/3*$>gf;)AW^PUEMf0,_+?oSYq!I'pg,^gG0_2Doe\H43d=2/]P0fJtjUEa&$
%&=r/FfjL*hE2i^gEf5P:)-u>U-d0WR@[%>KJgP^)l>m+&S<nPfs%B3(N19\J9R`/\,SK*(Zo:`oaZ2-Fi'#qd3='cUZA&3kVj(2l
%8Q5b189$=1Yqh2eN:.76&'m2@@0,gUJUo:_^=iinQD_!F"V4,^H/jmQ.VP9NIQcNR^><*^1mQ9=pO3`R9GL;WMG`#Z:uSR5^c"o9
%<c$";aI-a/G_eO5446-<%6b9g[9uduMY+e;!PED%.MR#TQtM^jV#9Ik3aSNlb!mj+PL=_ofg?P$;fi(P:LMJ&J*!)8n15tmPmY3q
%>81u:,)VE#GUA9di'!1IVPk+@F$1L!LCla*[03V<RYX12WpR@!E,DJq5Cg-pm+R@!4=It?hZI#:PH[T;ZtW:cO&T6e`2YNcB'rkO
%D=Dk]WWjU#b.mCSJPsuqQrMCM7LB7)!fagaWPdt"H%sEK3>HVRjoc7G.;B"30Z3&R/I`Gbn!!<.0Jr&sZ0ke%CQfO(SI[D9d7`-B
%.c9Tho<6f#2-A%#h<(oNK(e`V.\j,Q]1OIefCbr?<Yo\8e&Z&"f?p0=\&i]8Ji7;"m0hJQ[0W=7IggNE_C#'-$L0#4?oHgQ@CJt9
%/lpaNPAjls8.;Fr"Bpa!fA4M*4%UkCn?`$Pm`7aQ"Q42$<PVEOQ!8GgL,jCp5gf:8=%4Xp=^pAmfLEo^?Y.22*A<\%Aco`q`o`;P
%Sn/+d][C.K\a;!(=ZBlXUo'DIG9E<L2YP)396f+*\mjWO]Bh6NI;j3"kQ;05J9^pTrT0aQi,hJo43sq.%$pkUc=#;7GP/3._YJM8
%'6:,/TtVuO\e[*4m^S1[``#P=d=jM'@0*ZW0)*\lkAq.HVq5&T3E0OH.51T'SkZub$K`g'j)siV5QDe^3DNRbdigu:#['C<b=BbI
%:p-BraZ3i<=cnSp%MM"]SH[0tY/1'Yq)U`oD%#u,c;W@^)R8XnjjTaq5-,>U'a2M%WK2[5jZ2A`'$W=igmbR3Do<-T"u3DLM7a>H
%oM_;Cbl@Qm3J7;(X9Nsj+@R!iApA$nFXNO]f:8@ZQWd,O&tUekgJh467A4ghAr>a8LWV1,:)$QBgh,Nagmsp9+G*OD!tfYbPQ!&H
%3uJsYW*<JhAoo,ELBYKQG5=+uDM^UsI!VCBO6bkbJH%'2%so9)hPn5n?[]d_/-KO%2S$m$&1IcXaX=!JgJ)LA1O!:6-9"@?9sB6Z
%Aa>`!^ZZKU:'CL*CQ<to#tA$AUG/09"JMDQZb^\Z_H@lJQ`7Xh=._W&B9g+lABAO2:?*E9WcCf/EhfilP6/^*NosR?W"naZ`FFeV
%=G2\s/OJ#.-a\lBR]4Igf#AL\!FD*FdU!#4pO7C-fm,[JOhPWB7'*F)B/R)ih7@DJK2Kt\M95^A\,I7IBtA%6k@QM)mu5!=oN'_0
%ldH<,Ap9I):N']hm6#<)m[ZBTY4c]+G9]>uM,.7"$t@LfNZLf>!u:]RR*k;=\#74ngcN^Woe6@AQ[e]^s0qQkrq5`0oC)\M5Q&FV
%rr)<\h=1;+rS.A8pODr3J+rh)r8$iAorn?e_uK"?s6JS@^Aj*urp>3U^R=pWs6B(Qnc/Q+EM%a[f>%@bT>1EnhgA&rig8]S^O5tB
%5Q$RLrpfN.Ru[JtO!"E!j+%!aO.lUDWIF\&TDl%oG^T?,>l3u>q5\hg"+,j3P,%dK07WZIlW?1(YL,#4d>%je6&#DCJ,eBXp"-tU
%V>cN_hCKf)(d?RPe_j;(3NBQ%gA<nS!3-6[C?-N%-T0PuJi\o1Pqj8,R.@a?QsMn2I8/=f<^;;:%R5hfk&l<VQJR\]XRs.0>KsmJ
%9V]<76#[>)ck89F]qb"bW$B"[lo'V@eo\"P!g56$m]lZQgPU58FUJ=DD\I48&kR>\DGVo>S.liWnh<-rn@jTr@h"q!mgqNVJiN&,
%0u*pX%\R/)qbcnsDaO><%TdmU*Y^9cJ^\h#S*&c>o=:_'6.]:&N.nBLH"P[k6MS,IA#H^]&-M#5N,Ik]R,Y@q-K8IqbGTP!m.2n1
%`HO:]ro,FVWJXPh7.\plj7FD`!]mjfe%,Ms*hM;%Ulr)1KgIY4MAbi22u&(QVNN;nNNriTrl'qff'1N%%u'T4XOB,Qk>JVE4I_YT
%aF;_#S.r8s`FFiG;Y;,DF^-S-ku>3+ERQpq/Q+eOm&Bg`Qii9`@+7KbT@ZIn%aDn0F\Uq,ok$FgVm[qXY-0u#;":495dY0)KU.rr
%+9eZucOf'q3-P.%B)4AE>25e';Nr:>o'i'K#:&uIGjtX/23^UW%JCC7M&g+([A_p0TZAF]GZ3=PNfprSqhB\?J1E('*[G;FXGVH$
%8tpeeEShDk_@tB/?cEYoHcgacrK@f-a)G<&!uu!U]Q4PUrpb#Vs4ZkCfAQ6Wo$p39>!#`Bq;&s;;OHeA#*9nNf9.9)KA^M'+D6A2
%`f`BN25^+bE!L_nq\E]WeDU!0A6dR@_dFi$VAX.c*H739_GIaFKBJ14UfQKoNn4+7j>W)<W:^Y(:"9S+^hAr0^;M72Y\/!n*l-X0
%dt>VD'QA.OmL*V5IIIepNUC$#1\!3$aCC17i/j]obCU1nK8(]JpnRQIh>-$Je`.cnb4*$J7?0ia-?&6*KV6cO@rLrX2_HReWE0p/
%7"+b<R+'M<icuT8qM6<^H1(o'UN$2b6f7SKUm6@-`5D+W5gk77k_k3,P!.i?*i!icr_F$0-.BL#N<^)n5.)(T]8<]<jO%BJA$FZJ
%&.n%kh`.<)@OssIU\b6HDYUMl[1kbDKDBn-0^XMY^+%*N&PipSf-Uo2`\i#<0RrT9Z+Hq$K.#Wm8Y]_=0W:u6T[rXD=QT0_BjEC3
%CH8(.QC5]7M:m"Rfr-h_i"lL,)tJ@NVGf`f^)<qM&Lcc1H'U!QU>V"-'o!g5*1&Eag7?38Zl9o/Nf\l&=eX0U6,@8$_qK*-+YhtZ
%0b`p-?@CdB$S(K2COqhk(RW-0C03Z55>Np5hdR!'Z5=I3;e_63"<BO=a*gD*Na^??ln=)ZT"=k)<EmYO\^C1+7(;qFLAWUAF*%qY
%\ctgM*X!&HZR:?-F\+]N]DHc#^1cLKX*3,#1`F<M2MscaS=V\MTA_0MA`YLAG^Ke`^3eb`f)s]SJM)@cs4$Yo)'17.R2W.QT5fYX
%r:Ji_0:UJS@4Q^J1@[M^cP4A:TP4iF]--;-%c9'++'J>n:j`M&E;V6i:%Sd6KM?f>YNpn'5&>tas2MMFmO#7UoJ$CcjJrkPi\4GA
%CadsUBK:COgsb<#e/W)G+-FtZ>N7jX=n&X&7gPa?>ks$d80HaH:juWW-DAfaeF;][p)"d%P%P9([ia6@^DFHD0q-[Y8Y.8,<*7GW
%ViOn=+ceF]kN@Jl@INE&m?GeF0J38rGGVY`OIpfdb!(t1<T0GDcaddFfR\hL2^.W8!Q'hT)u-(bGSg3qKO'lE7_l.H@*/&ZE7]^N
%H5K,hAbrr^K;sRp"EoS2/X(6:Wm?PpH;!0/?r\Rfh6rp*Q[1e;;WgupA+5`+QIHLKJ)?K^B?7o<3hDQn<YWd,@(`FI'Ckj-e;.5b
%[&q.i'>hs_O*=4egs[<YQu(JXHu0h2E79<X<sX"Z3YimDAF0[:M1cM620)mpNThd)9/Btb(P?m,1"\AEKUMjBc5KUfaW&AJZGY!Q
%;i,d"miZ>1U(#D!c4_&d3UL)*&qU]Th&>@n;D)h4hBO^FfO/C)c`?hmH%rc:(>%+oXi(!`i(+Z6bAYsQm'TR+eq^Yo[0A</Vp<0Z
%5B$#!CKls,LODJe6bNaJ$(k,P0D6')j9HXYYT]cU&r%Pd%S<&mFphu-6dX_;7Dp#fF76M[M3?'M7X(C:2-8(nH&^"'&[A5frR2C;
%..e`I%aJntC$:[8D26K[fqM!V&dMk#Yo_ZZ_/&!=:-d*E"jIcD4Pl?5q+pJ_`o-<7)M"6B__Y]+8TW&074oJ3&?$9;rRZ2FJled>
%O9o?dIKb$o*J^kM:E"qhSp"CFnE[m'-6ZV?m^+"2XjB>trOP_U^rdT*3-IN>,8O9?MSh8Q&k(+HVE'VOhqhb13MI0Vaj,T)VDi>q
%#W!Cg1+TlZUiK]72;qT/?cAo"2*sP,p:=;DaO!2_c6(b<#b:nsMpL]\q,90:7Mqh"gNsPCcX["WW5#<IRDGl_kuF^]JLGm,ilkK7
%-64i_-RjRXEM^qW9)<d46FiNbn&Jt"_7SJrb(\C:cj)?rCY"MYI:+1fm"I+*mq?*PMOilK_SUFQg#f4,;os8tZ=/+5f*r7=6&_if
%7HQF\'2*dYXf\KK1T/+.@pjFtY!QV#SXBr*EV%.KI!c]Y7W4Q?rV:%!q-D)$$6OgFlVQ?2K5JbjA;]1[Y`0[4!u5bi#Y-C8gKV)5
%*O)t/6Rc/5d>1lC68md^]9?Q(j6>bi$L%LILg0#5s7?Ib0;NN4`Ad;8-6/jD#hl55*`^dpCC"G=\SuU,SeP%X6dN$nhkqNlVo3kY
%?hTBbjH+A@%-Mhjl$o5^G^nc&EEfsM!c"D`rlV.db0M`14gm*C6`u*>I#R)0h=T@.;>4gOQn7>p$Cd<F(tTK`(=mt0o]WJgphsGk
%XpCB:H_;nq;tS_[A('C>hU(#2F)bB"FPp<*L\@d<NV@LO>na[dS6Qq6#Mb!k?a=aGm])b\SM/aMfnNhf]HC8-k$O`J3t8`>_Qo_E
%Z=aFb(-lN5Rl6@(07.Yc5eXujZ>'L.!Ng;S-=0P$80)[>LG%\hGH_*oZ?E<oW$A]H=K%7ljtV.&+emoT<RCp&#WB!%UOdf_3nD@-
%H1>e/*Wn&_*E?>niFPT`0?nQbXNgjMS&SBYIs4Bd_@Ykd+a!3)(T7G6I<%eP1^G"iZY*ZN=E*K8l#;m=ZOSH"8p@#MZ_^Lk4L\cP
%a/&O<oA4R/0C7R2H]JY&0?4dddWt?LFIl3l_@ibuQ`S;!ftkf-T`P!r4uDc.#Bj;KeXq?65Q;\sM`AKY`_\FGfK7$p.M.9!>;t*F
%A?u>se>FLD%1VM4QNJs]&''7W.iM\2?JZ)dPaefj#Bc>i>$1XZRiCiG]F1<']GJk#=pQE>=s$LX:OK_`obHm/7ju3_hh!fh4eSm8
%NAn8T@&_OkoZN5Y&G?D#HHHPLI73_P*XlLelD$0Wb2CSr'EPOuEgJIi<(h)k)JuTaYR8(](5U3P<gltDWJ4H3Go62T0M-<ceBk8+
%!R7CT#-,n+*5k<eqlC.4FOO'#ghWM[[&JBg(g6@2Z@T.*VYT]G!F5ls#_=[0oG'3ZQs(>a.#Yq;VRGfuQQY(s^?@inO&#tt0ih/)
%'rdM>H@lCZW)Ba-$T;o[TO<l?]/ef/>%3>u?O.6XL^#[D*\F1;IDF^cYnae5NcV1"3nWVkZKsCJ+!.dF;ta[`nlX+k&L)l^m67(L
%)]2dF"ODH1e>f.=)7Dg@KHo>1>@gSXK*c6NN)i#AS5UG<c"FOj//4@-*U]\$8EIZM5Q)Q@;<6*ef(NR[]&JlqP@O/+JnN>IBo9qk
%,)c=cU%E&a;u!`;q-jm8_T5ju_:V%IqpF[I#%41KcECFX]elF,$Z7A&(r:O'&YMm9BC'A<SiO/>5ED;X^,726E(J_,SoB:"GscNt
%]L**'[Crs:"?-CDOo'nIBXkmK.;SeDO3RO?nN1N>7=UbY.;Y]l;k+\kIS?A`HrL+ln7![M_d/RifD?Qt*'ack&nS[>+ZH!>!%$9C
%QNeX;a(oHY6I=M/QsahDn'H:m(*o?IX\fpJa`G(A@DY`I@>JaOO2%nBH4aQk;d&#IZkj6@F96;,5YJ0bp[c(7(G@U]G9Z5s>8`WK
%MIG6^*VYP&.%!HXfAY['cPA';'97Ylh5:2NqK:/%=q\Kbo7Wgl1p9sbA-(K7c,uf$Qp(<M63RI>@=6,a>9USn$dl20_+&4<n5BS;
%PQVi@LTX@)=A55D`Ecsq[;&&GN[kdSY3j*B*H+m9k<QE/46L;m2GcmCC@Y\S$tJP7Jee=&YL7WPeP*m&kL??=IZ2[BE7i_t+_'PH
%5X"Q)<BFLRi6,`Vrc8T0Qm;2$>+eJ#QCE`i*6Y&"7O-$FT-7IuD0Ce%`gD1rIt-9,`kn\SqF"^F.j/Jh+$e(Zb2+8<r<)(:KFMc#
%If$G,mi)+t`T>)L#G3'Z*4HN5=E,CZKW&Jeel-H)qQVKPi>_#[d(p5eIX4.9HD3nk[E&GqLR<X?L`t!Q;M]1-_HnkRG;`9,UULN`
%]Y/b7-6sZAKmES$:4#bO9GBj4oo-22:ajOj6aP?<R/f?2R$]!"P0Fb\Vf48sq<@hpTSc-T5FS\4G=jSRd(Vhki-uF1,qI]@GW!#n
%k;sSQECCLd#9a(G-*g]]Fau:2/mL@_h"H,N(u@e>FRdI""E\JgA*WaDC$`Gqr1+;<rh[6C60k!]H/'Ie4ZHaEe2"W?)p$:kad.to
%4b,,i1a/OD_!B(E3N*'%oMFke<>k>r`Ou&UQqg:Ub]p^9Y'1QR6ns)a-4E6m3EE^XaDJ[:+mV3.Lgo2L42i-U&GD(YI-SOlD1Med
%m,l@I(.c:Iql"o>)PXc^fp,D"Lk]0uL#';/BM*0sEj0OV@HnISEGU/]\"])3Z(htF1TY-aI2(@0Ai_W3ksTq?LX1Po0KXJ32?4a(
%q)Fg`KWWo-!=ChH8("BFE=_[U/i;l[,G\u9::-@qNpECSoZQtpl'317!#.`:^sCKFh?dQTb#Q[0.)\IK?&fT$&*g'HYW/fq6Y/(d
%]=AeVpT&+N(+5c.,uT'="*iEj&8T#MKEII>-nOCi>m>sF/nD0E=>@9j?6udQ8jN07hpmkp9*NC6;n`rqZKU]Pon0_=q7@d2:jta@
%-i<aSeXu6u\?Y#KX*/H&4"OVfM\I*A"7j'u-9;?Z/IK&X2Gk$GL7Dn.5/$A^(#l1<W6%\4Tl/R\/MTM.@[ZVd6%na[G');![sP:=
%#(*&U-29*,i$q+:qm6A+f4?2=Y`<ATLK96\1KYS:+N4snhBf$`TFh$$kVMp7@qucRqABu4p.+BI\0!lN]?q-0@*bp1BnNkHc#eB#
%GY'cH8Su?#5:Wob[*6#k2M/Q#"AK5D6Pss-T#uahS'O7-#E=ap97=IlEBB.!2+Ys5X&"3@q=UfhJgK2ac`a74R0/o8!cUSYTSYVr
%=LuDO'MjB@'+13-/Y4PX81Z7^pS2%WqW5?AM5mUf`J+!a>5UiEOQ.JSK[@8b@cLM3J.#[Lj7N;NAuW;V\!TE49?k_FpB&_YEId>Q
%/u\=Id*?Ad!#7FY&rP/0%7cJ9&`0i`QZ.[U8Y8(`Xe$%b7Z1nTGcN<b15.E#Sh^jH7Z.)YZ;kJuZfa`Vg0FcYeol_=[VT(#PKomZ
%,'*2`YsTU#4@4U4-_4^[)k%=_`"<+bhq:8cBU:,MD]mVlkH]"5F/CVuCV9!Nr<":G#lb^Do"7?&6KVSg8<>:['r!L<\@ZA:+Q)^)
%Wh^bt1L\%;I@U&_K9eIm2&YgscCmNYPX0(BU7l;BY\tcW?2[ar$]I5V]--$f5p1WP.k]2-"ss-""'!,AVLC`)+SOKE5DATSWJ<Jo
%gmi8n0H.43hU/Ku"8J/ZMr>4\.pSY8XK6)N2=mtS%i&C0Vn%L@d!d<2`35_ZU#G'>O9**P:(EF]/T:sT3-1s]Y_huIGl`?Fb5/J'
%['Bg)84-<K`Q0abZ2ID,$\aNIQo$PMSq6;%c8$rCNN26$`>Lfp]H!R#B:#3SOr9Wt#W%Yn#d?%P5j7eta9h$bM(rj'$J;#&?Ici%
%X.O]W;?[84p@6C$'d2jf`lT5fK\8K$@51MIm<`$jp2SB-&i5bLi:WWgS<AT]RO;/_?Psae*:VH`?6)K!5X"T;mhB\X<anCdIP0@<
%_M$Jas!$_sHq+8LgCbHXRR\qABb0/4:hXuM+%"$:WI_^eZ/p/=]1!g`o-^&N9fo$J'(#$0/^b+6TOE"'_;E]Dkjkc%(9i)XXAJs_
%#iA.=_>i#9mi$9t.3mV'*-B+VdSNDsdIK`9k94s$-kg3Hpr<P]HAGW&3*b86/6j"B!:[6N$Z/'/Zc`R:h&^QfiFQss$n^B":Z/^-
%+be4-$a+jnoD0<6&mVp_L%@OX2>Y.E:r],24gGS=p_]]s3@[,/+>!WhMZ=C]KX+8#*5G9.$%)[TO]O4Wrr*Kp.fnq]l[XsX&PkKG
%kA1]MGDr3<@CqZAiaQ._ZWr-i<`P.t>[J`8nnd6hJ(E)TLg)0i3ao'.bA-J:@3#ZC_^O14-ikbt8P]Y?9M?<L9agK_]L\Poi*4"0
%)KBUhbP(=)^i%ZD:$H+LIO+4,_We]5BAhH0]c#38$f&W-2W[s0\3'/aGsQORYBX$&Sk`M/G7#P&-g?&6?;!++4lnJeL14^&KM&=M
%jTq7c@qaJSAf"-o)0[(WFgC<[SK.5j_^VR)b1SW^g2JNJ1bUM=M9R%[X1J?r16ja^TM8Z^WtBOhIm0_D9(mB>=I*4HRqdK<QR*"N
%Z,/j>hmJ01!Z]r0"Q?7JimiDX"njKJ2V:c6@(0iD;R-ES++p=G!4+R'*J19VZA&cRKo]=J+q5^"+u\4E^7SWP5\AL\:\mMK&X3da
%[H3LkDbqmm0h2r6<2'T(i[NcB-#*i<HEMCGn9B2@xxxxxxxxxxxxxx"8?iYD`n@DG)K"(B37&*V[eU)2H+41+8c,S8;n)?HZ=a9:
%?l?9nFmuaJHDu/(4G6C(>$&Ygnj7;@@tujAK8T2XjKK25kQRPem]q:UN_Tipbs#Q$M'4I_E.n=_@xxxx/P(\A%7^(dQn&DX$=l-X
%>?j@i]_)9L?RIpb7M`iO1se=25\I/)E?KUYE);A00qqu!Hbb$k&QOodBN`Q9>7VeBLN"GDKq]X9J;)AEIBDI2>uft:=:=bGri.`b
%)JCmTWAX+>/TM&-VlL'c!o-q[&sHSE+_Jcl>dQRuf95IsBX^fhnX@.-QYZN_2;:se\qC)dYo[;2N%=.6Rn&%M>!q#:-*,L\/%?D(
%j4pV).`l*,B:6>iKq4LT4TqI_-c(.]q@IIN9+tm"eMc:j3t&rG/*k6@87'NPaJ^+idY8TI\FBspqd$&jNh@3u+ld4q$Ma"7q[\E"
%Gb"K?"Q?cF<Ec1j*oggCIQEYYAX0ag6u6L?C)61ga(qo1a/Z#Z!k7[-\eBb;,K.!LYsd2g@Kui*U6aSXET-<(KIZ;'8JE@I_g5KC
%Z^Wt+^:a"8c%HKamD@Ia/m-'E7c[m(pY:&S(o*uOEX>uq-Q#qf%q/L"l'1uXim$5kmY46rfU1X'$6ef<1Be;/d@i[T2C=*j;8Jc1
%"K4_(?B-<JTBQhMUC.qP2ru/\(<AR=V"AGk]-HV<L2^f-4B3kaa$+uHb!Z>$%n)[3P.LQo+q'?L'nc]jIY/FjnfphEgqQ`'li]0h
%c<r&0#.T'e"d"MbqW"K8eudKF$!d4FG>A[$<14W/#@2`$2F#=?+@`dhV^qNUc=qS2^L1UiS^pF64G&),oAk%u';$85_M+!f-@?;.
%?ZH*/K]\oBA\DT\5pPK?QW!K\l3\cG$%d.H")['>/>m:(MkI?J:f-sAOoHFc3u?>WLBA1+`D[H/B8GN5lG$<s*j,^rX<G]T?A2X"
%eW9SQ"sihV(QLm*AgB^TO?9[>4cOXN5Qf<%a.[C$S%(O+VOFS'/WaFF(g+a/guqiULetH<oL$&XQIRjBY%5N9h@;-X;TPruG]t<F
%:YIIj_rMPK!I&N`4WYmNVOi3%(*s38lg4r(&mi0%/-p>uT_RO6Rj$8boKe9Fp27D6+2T03W\Zb]#Tj9fHGt8/hq;"WA,?2@<#n'1
%@KkDa_a:CjB"5>RB&'8[Ff\U_A!e8O6mH\^/[@IW%I^4Yc=A]'a3:.Z0\GF,i>d#\<YK)/imC.$StK_RAcm2@4A=cTj;$`F%B4cc
%1aYeE.TffY_QHW&m^RCi6EL;2C^[igD1p9(h1\jrTKWo!0gZ:gTXcEpIa:BF`+],spNX\j25s__-;k:S`>c`7k>2>ff:0jS774A)
%#TK"](?u%WSQj8V:elAjk,(fLetgj,qWS`3l5"n4$j!RGfWlIsm]B.(Gp9UTN#8,O#QXIE<9kG`@gG.)k^%$@P:8AZY;_9`1cUO8
%KRfeCr_Ts?F\b>+:91bWC-XAE&dcoMh!7-_?Y-I+l4\^eCJL".5_1JKR)9NgKRX7ZC(9)b.u+jM+rK`7,cg8\%CcOH3'Vru6P8,t
%FM3D<`c!PR3b&`JeY>:%1f?0qYQG;"*Xq`0Y2h:gH(p.b3RBc@5H:aVb!Xp,1l/gRkmtB3c[k'\+_1R51NsQ`5IR\nIGsiT91XRP
%k'HBik\lKLM$>N?YX$DhZCQ*['k';-eO]+JMF,ut.F`up=eR:1)IZRgDL,E@,Qfj8%ajTHajCT5#N=$q%U?o\!c)h6P#9ncp+1T=
%LW@`bd6qF\mb>.GK,FdHZ!7TU2lY#3P5F@)VR\?<`mR;aYf17B_qQ%<**0QZ?e1[^]baHo5KUj/==cl0bu;t\G=R>'!qUGS5`+i+
%1gik'TNbo=,%TfBR_LB`20)lu1n[/@F8VL!Po3VYqc2p8XTC)-&UT<JD_"&W0n7.3@?Z]h"rYYJ?6LgfRsV(94ZMb;>06.dK)@0k
%N<@VA3h:LIZ#Xs*m;!8^j4ANnJjSki:lT"%rk**BF<.1I#&tH9+UW.9qr!feCgE]==1sD,;f*c\)+q\@L7e"OjFgC0AWgn_f47'm
%/Tu=jNcf5pM4eVk_N9W`;_9ms'[5kL^$=I-dm0lpp(k;ST))'HAHSor$'AD*+V,WUej(P.2j:+W1EFhr6`J4b$Z#(\Sm0Rk*!XMD
%GOfciB*IhL+Uh\QI'G,&nnf\tg&_qG4hLTh4`Ji<;n95%c/79`\LJOX.2691G)L&kQA.9"XQ2^P.5R1Mbml0XNi@sXFGjIR''GuA
%."_](0al%&pkFk[:d0_W6cu6HMDLNu.gV=`boqaWE-]g(lf9'0b#t-CLI=%)W"]bkI^eEk'"RJS/Uf6#*CkW)Z+LDoSc[R?c/V;^
%=QV<@(foW?b!C4n6H5S";(Y)U'h=QLCb9*$+D$j+h?)d?qp*V\/,>%;O$WFC^>'\3eISk@lC[qBTo#%1].\I.lK!peQkl2,U@u76
%YB^#[Gq.Z71C148Prt)%.%N7p?oXU\4o"n>Y8V@RM8`&1;*)lEKs00`q/OF?"*gH8!(:d6WgN7><LV%GOqPHf(8F;0l>_?21kYVL
%p2cD99k3J7i3ID[nQR:)H+-ILlTU_pfcru3kgqal59gEfWW0R#5m%MS:KAc8'@n8iAf$S>O<V71E2hq)C^/8Wb"<-,](_2[(J',X
%-;u'g%pK7bo*WNm'.LkEP$mnr^'Z\'FCPZt$N<09)]\'e6JBrI;FDpC04l3%.5F@-c&DjI'9gqK0G3&m9\M+V>@J=dj!/Es3n?_'
%_MCNV;JlU$>V*dVX3Y`Mnj:35&-XeV5=sjkXppT3fu-6.@EYH+J_hNH3L0c%_'>8sIStF8c979">)Fm++9i=$?eeRjXrargT=Qq`
%OdSr)3`I]4HnEf!N(OEe;G/j`%6VMENgF<49SL(=ZEd4nfF'IRY1_jj*HA4X1/^q1`ZX3VqUjd48*%<3FhSfRT0Ui=phV3mqn%*I
%2E@jV\e8Srqm5@>lEI:Z)tP?9%p*X5mH+lp[>TS[[Ac_kgoJLPYj\m5P7+QjF1[RaLZ0ed=sM!6O8H"&_44T4`Zu^um<dtrcDj6L
%SPuQ*$feUfArUd\jLcB[8d.84^#WFmKGG7)R_@79c=RJhq53YB"2X@e'9@GL>'J)8=tFk-.6suj.Lm%P'LufJbRr/$&DFI$REEl\
%I0f6lGB[crmq5WaII6#hA\ru6c+0".bg[RKqjJHn>>,<eqbig5ZGG/N(FZejHtsfm/9"60GP/f`C8fEf,6Q+ja+:0n\d67aM$sd%
%_8nuL9JQ"DTN?Io<'<M!)'&^^qCn]M3GEpAL%'IUY+1,1[&=Konm/<tI9'FE`9q-S`U=U:,4>LGX>(;$O5!1[YnLiRlgii!=?A`7
%A[.Rr*OUDMN<S47+$GNW%*Pu4b6B?m)oN-Zg_A;"+WNU?$D;#iL'[UjZ,_%>,V(Ln.I0>FLn3,.$)M%k`h9b]%4K82AMp,"+Gi:4
%iU_-p?>X\u1,[oHY/:Gs7Zq8seeUs+HmO?uU7_)2Ghrok"b906a=TSU%34JT/B&7.#fphli<74G+LClI9Iudp#CL.\-*;+\FlTdC
%%NG!"+8')F?.=S=D4(sRd=He.Mi"I\kgt"7^t"L`&t#3L5%Ff<i+?N+$n!Cl1L!smcrPZAA/Hq`D'#=%M2U_X_,p<L<+iKtR5!8]
%9dlO@M-%S82Slu_6=rA?9F&GZ[-/1h+,B;-*AZk+1A%@l#:AfMn""Qm%1q<]75WBpQoL[fdDB*(4p.4!_lEEn9Yt^"-?5#5'9Y==
%HZmTD#!um']LI(@k\!CcR?``PRgVLrCX7$R']j/nX7CdtO2]ZT%uDL^Yc[CkP:c65d-)g[bs7PqB]'jC=VQ3R*=6/>ehU986<$De
%=h6",a+7m!_^ApPEcOhJCVRPXSq>TXW1dttpH]O8X5>/f:u<)<bFfRb$I3$ll]s.*m#LgtGL^hg)#m*u+&*1`fOI,Ge7=ciH-U[a
%"#`CSM^/aGgieO/^p7Wf!$$ThE=cXE&>3*MMGdgq>fI%_ML^dhf;2I0/+rBVpAi1kQ\q]W_a>p(%jOj367(%LFg3)q70;8e)k^)%
%"4?iPLXntM]51@q+3a0jm<[GGI"HXdAak6'eh(,s54p#,DQ#<H?hp$f0VYii"qli3"d9P;Z'`GOc0O`%+q8^MU,^6Zk'_mU3/h\Y
%3mOm@L$q]hN#)R5s.][prA%8)n@S0$2iS6!^%Z:$==#22kfT+45,!GUr^Af9Oc]G]EslH7KE,r;^Hcj5O_o\)j>GS,SnK+?*ORs)
%L3hh5#,*M^eKL3OVpYl/P0,s/A%%T[2!/dV31Q-kR.rHUkZ5ohreh4Tl+V]-FX%$:FFD5f=cmA;%03AWe@\=1m,<JRW<#l&nae#l
%3LE'np+![^>sR=S&MEYe?Nc.,"SH6_,D+D1Ff&u:R.i'p@_0q5h4seQ-V"0OHUE\'T.)AaRGNN)m*d$AmFn@g$o.L*A5Ym8^dNqE
%9cq),YR:uGCM4'Q#E&1a%)[c3jt*o!'?g.tiL)DE:&5![jPRQ^5SC*lKTnA.i^RjRaPr_WTij<25b0`ck7S.'3Uc2^l.$#A\>_$c
%dDjQd6`k\2aJXTs`&R&Z`$<tsWk>RO5P1$@Q(srUM-`FDIBC*8.QcQ-4*K9.j>\:mcFCCQ0J=*R(12eB_I_#Y_[jh(S-C#Q##?Zs
%T7(&&^ejV`h>c3R&AgR9dtXtGN@lS6cRdnh>&H\a:atmFr&s:7'>X3f8h!PnkJ&4DJTsfr.[iQ?:6e9-AO=@d]\9b_jhqpC(A*e4
%R*W$Y)CU^``s,-ZT)uq.*FQ8jTrkQ&qbX.Z\X;m`:qZ"r@b</r3_2#iB,2_oX@XG[4g<]r7,Ql)J'ZnZ'H^P<[*cQ;?_Tqj%;UET
%0r0eOp,rkFU-.B5+\5bSGh*`'3cm/)Q3pCP2A6.&F\Tdf]c)r,_FobGaR,ANN(ss!@&NX)o[4sKCuE)Ag_59l?@5"3pGLnPkU"c%
%;UA&`0VZGnkp<W9>=>8A]`pKo$#g;-'+[M<H$EtHMdjOO4*;()BJ"\*<@9.a:'dF[hG&m%`ZZV?a((ljs1,<L,2Lg!i)gKZZ$fVa
%E3#IC^_&hC!UEhTf<kl[KmCU-!bE0XVb,1^16:*O6mQlFp*OTiNoAK)=_Pc"nEP*1S@FU_Pkg?#B^IY'#*54H,%\H<BfW[(-FjD<
%2%p!X0B*sDpKBJ2(WWt"^ab&6n[+uY2"K5`D&O`=`L'5+6ef[@ck.,(5.,Lip3OK$;loiCZ`k;ric/'?U;h.Z$Pu^fBM&RRTcbTJ
%8Jn"i^i4VkE-tAp(Za?[qL!AT_K2t->`<Mic1DQZAt-2V;9Y<I1TaeK4R+kcAU22B_7:^h,(pOloOl!)gOf#\L+Am_;0TsN3!^o2
%k?O>sD":6G*:=%OQt#bL#R#GqQAN&R3U^)DNHH.EB@&B\etr,:c'j-!!IMtn#GqB(YXjoL7iCc+>gV>^"K:(GB0E<fmPkm.4c5qZ
%FcKpJHkiYXKt%5ePuO'g"rD_#ipCPe3o+tW,,C?*,+UY],a$P@TLar<VQk$FZin]=`>Y'Za-Anb"&h_7F^NF'j9b*O5%Cs[lJS<V
%:;c+-)(S':V]?IuM?;<O9Lm@f`G_O[S)3E6NRA+P'Zr[!U?,/e)VM$!N/:uOL=u;*Bp)d50#6$M7WqoEZbf9a(joh:J;YYE-fSB"
%X;@?FQSCM*?A&JJs)DgpR)>ik#4^`JC*0oU3u(MRZF-dC6]<OT"T&*0=Y?VjNWn@t(Hk"uem!i&LlRLX;1tKX7\a#bc68b)*Pket
%T=]sV1[^4Idh5aPj3bZ\hCb]aY6c^'6StBnf)'TiKlDpuPPLgpZ]H,_%BQRl=X:>H2NqV)KWn'#(\GP26RL,tZ6S&3<h;EV$2_Ci
%.TlojZE_gue52s\^/`elL5g"dpK`#JnQrKVU$Y91YV!haMs.!S<"^?m<Fof;4Ll1i[i`;ce.S2$Ag8uuT@jaObLVB,6c59"'_A1'
%hRWtK5(#W1U\9sh?`hKW8BSr.Xd!oMnuh4T8Q1jI_ELMD!M/<<a.AuZPTibfmBYqk&iG)Qi^HJu/drmqS_:K3G1oZ',%Jqu<FJG8
%KA(C3H@YH:rk*,p.6MkuKLF[nF0RV_>%2L6dm.;*jdP0@_8%PuINbkeDt@gUVBa'j1It<CV`-o>/@!0rJfXicQIG,AdQ,l6g+=dU
%Gp7SeK1@/<Gi@=i$2H41?c@4n!rh,<rjR!E)PV&d.oKe<3]ZLFoH5_m,qQ$Z[O`Jim$S(JqlDggVZ]i>E7+Ks+@'d^dP9^G!80UQ
%$A[T[<pm17N/L/3LU[D-:788tWTPGC@;IYrbaGBcX=d>4+&#%0IPA_kWLu'cBLrm\-5=\j<7GW[>Yl41p$3Y5E%2)f:R>jRmXuG/
%BMfu#@lE6MCZUEs\d+b?:SO<=HtS`(a8q,,+g[R-`ESR\RE`Lf@VVpKkU;gS0%eV="OE3J[O"dffg30ob#/Q&Ka<#uXISFhY:L<&
%JKI\CW,@n!.,g55UNiEpeJo3CpLd?MeZJErX4#Zg=?_dRh7#-erMFJ`FJ((\GJPk>g0!LL(2UDni#$Q$(bN4Wpc<$*-`MQ;Z[Q@U
%&L<(7colK0PId"PP6.?I"u3<_'[]1'Hfe%WCU^HcW8Ipl"@]`R&;JI@f%PR[B\$Na[8UC,J3Ig`Fg)r<Ub6pi;E3>sG^PRj2V'0Z
%#a0e6JU%E:(n[r%%V6m+oJM9X_:?q-B+0+W`skF2C^>\3on7R=_Vp\)`KTsq%,`"k0IG"Sfe8V6\i$-8?t"l&=B-qa3ML?4Wt=>i
%#O5d+Wp>nS!LKDh:fLd)FAAA>/+o"7U9o4PR2V7+:De_,!mF#Cg.f5un7nW_2i%bB/>6!7/.-)%+B(sVU.3CbQjC!I'GYB_MT!)5
%bef<<e]%Y0T(RX,dH-.oI<W(J;5hhp:p'YTnj?eoeuI60*,0-brP=tM0K;7tMBb$Yno\e#&=*g>s5Q\&Q.$IQXJfV9Kbs)N`\^7=
%)VGh4arbg(QYMA]6AQ5UX+s,"95ge$)/(IT+JOE4KfP:T]I"paAt^j#<WZC;I%'/m*?'-SSh5TI%dHSr.2t'K`QH@Q'b/4i)JB96
%pjC)FbQuI[K>4K\=)FmV=Q[Tkgi0lk6]%-^(gn4JQfNt:L[Zuk-b*?<JbuEAFXb]Kna0qYkePk]`:fOC<L:HKm-!J,"PLIeE(CZM
%YW\ni'AVPX.J6.77kmmf]tBp+=*DN]EUM;m"]+TU27e$#/aO8mkc.SnWcB^4$p"BM>bI>#/rX#>XAB13],%PWqn;P0acC!T:cVA(
%S5M#-gco?Wc!8+[bg33$;+O?m&E!'nT92nOW4cnJ8p19N6-Q[/KJuojbrd-[PeLQ,1f/!gRJ:?L);Z@gkZSc?8f$B=5?ebC9G)Yr
%V4Aq^F2`/E)g)NK%NaVa@uF3edT*+6e<2Lok5F[8Cjc91,mgl]B.'ffYF1:rPuHd,Z$cS7MT>XLEoKqrqk>UbL4!P2Sp7]-=Qk`"
%>/;b`dU`S#PU;q%+E:E/8R/ioK8UkU-Ie$`BeYhg%OTt#Ma_.lE,QJ](G9M2"!*-/LR?Gr&ge_OehAJN$:\3f6=^6;q[XhW'1W/)
%6r7Hp>uc\1.m83-H%]p*^%.s/a)%_Y7Ai=O3VQPi:\45_2d3OEEH,6=8W.uR=<!(35(l#@,T?:(gn?d!YIJOcQW&U'j1S`)oT"P#
%p8Sr@xxxxxx[qXUbN>XmDDO:tHPJq=lt&LX*?SCo/c6'LbgJm.T7R=k7PW@9=E5RQ=BT0._^\)C@9LYCMm?,%^(T:1*']*%kqKPq
%>\HR[6b/<OV24?D"EacPVE,.`!#oE_EQ=&QjYd>;\0E!M+=;';W%*#5=8&llSJPkq0e&%4MJXc<R!,834-M3uCV(i($^E5hVBhk"
%$e`*a^1p-a\RrSu9^A!/gjVF)Igr+`(G[)@M.\bc;*3;N?1\=p%)5;t]?P'hQ15AAo;a>o+WaILWt834[EVC$UW8%?`"QG@2u.,f
%eItqcPCT*@'=4`^('@JM4g:Xm\Cd9&\MLI^C?puRT>Z4R)"usD5?J\kiB1]qMq,dPXDE*8bSP1g%cMLYWqSjgZsTZt9"Gr6H7U4%
%bd:'<J#ZYEYJP/4,H/ehU<73m&2)f`$CX\+0l+&eHZs+1eq.shEl!sL]F,Tm%4l[;fL<g98`&A;RCXQsE3XN\Zg=&dUl<Ss\;k^Y
%,;/Z/EusJnLbXieMcm2M`bt&#cBoDQeZ\j:Aj*[flqlU#c"\AjZeMpHXU_^[V(9(EY48B4X14P^KQ#BTTgjbe_T5E]J;[tg27a3e
%HoJ0@):I\K"AM4M6*IY[e`s/^'%:JXf>e)<ne)[gI@+bmPbU^t_u->jQB*7^&t)=/[u]/B00Op'bSg;6(Cb5),7pfGFb=rH"?*)1
%O!qrFRg)L.,faAn(XkDN4AE9[U3[6?H?51bRq(bT1hCC\Wt*@$L6Bjn./JHcc%>jio99BW8rZs3\`Z^ID!"K`N&t`nXI/laZ7Mes
%Z1XG7"TO6'HddR]>a$ctA):Cj.7VQk?JHFM&N>>6o/\$A1E];UOY\4OaA+J<Z;*DH$_rdqbuoAG-'F&OI9eUnoT5*\3<d[K1?L*?
%@TJ=FoY=KW-]*M!<7X@H#k3LCbJZ)>oY1.J%a6'F^hJ2kl^G7ZdZl^8[iO?+DhXHu._KJ`>d=j?WI:+89eisIo?Q(9-nFppN^l%n
%i%@3EZ'&XpGS3qF#8g_LW=\]_f+l*bS_la"#@V'nF9dn;>qE^ib%4Q_C#i=B-eJ,q2k?P.;FKucn+-icA"s:Mpbpr)Y<$N4f)@_G
%`N+CN<d'AV4]o!ooeB'IF_;pc;Z]E;="P3IFKMa?)eX[Pg!^@<(+d@qh'gjtU.D-dX1ERFabqA6/MHGENZq2:hj3l^%ZSK6EspOC
%9fQ;FXU?mt%;9KU8+=%DenMNaA]Dfk!F,k%$nonG[P7nM:`#7)gD;7<kZ1%bmPYM)*MX1(b?=NOgL]@2@psmK%7>AC-s3hL[ZpUS
%Vg"hAfNkAdb&,SF7<sd?>6hr0ZB$N^*2cXB52C+k_]iSCqq?1nT0d_e]'CRShn,BTnV"9n0o/Xo;=saMWo=Io0FZ1b0&nEs,p2)R
%X=WOuW*n&l1>c5+k@H?^`gX#Od</GO@M#ihX-E9;Hd#%tUR4h_2u<_+\3cjZhqMi/kUfG&oI\-j=fa=Db95:,L)e"!Y5j?7"8\Ga
%`o<bGK5FQV[s7I[4'%e)O'EY:?5+F'E0H-u^/^R:71#\Xi(+[9@TK!,l"1((_g\e2EI0NaNLU.b24no!h/")9RkY$jFt>E*2W;99
%5%_$8pmaTFfM$J7GHA5"<^P$Q5HGXr/t:&IGg<(ES%W$".lFC"\e`Gf$t14\6JPaH'@T"=I*l-#79*4S`9MW$G:OaPBpJ)3g.^iu
%ckq!43_Or&XDQi%-)D@]iU'9l9!NCXK:@jWrVl0;gf4sP[1:-+O]/'aZ3,Wb=9BcLgK(L%\@?UCB;fEKZ8l2.jn:GMYjUY%K/df+
%P/m'n<?[SI`G6`Rb@o':B&`k:d(Ta/X*EbAmAR>T[MT']P8]>V_/CAbRL%WB:+$-@41&d1$(7Kn8<`X$'(KfH[;PDB^HNNs_k,1G
%mWOYK@LS>An>^`r[grMY/`2`)J$QomR0;i?HYm&a#o5a2]FYeQUVCTFKVCp+:s<@'?S['o=H"r-oK(^U%'V4D`VeYb>J]R>%lihq
%oCD3FZpUg]F^M/+]0I6%miY.h&_7W%=4u4>VDL5*ULjS&\8D@0mF5[GU;S;`gGf6q[rc=2XrY5B$q*HH-(15MStfSbJK;d^NqLYq
%8'?J-MTr2T^ijSpTCMY@XBPYY!Jqp2_SB"upf*O@@Gu7bG:Kq^10FCe"b\<Eqc#eSJO[\3.hKR:o'/nZSM6]_r-1<OZ/bSL+jQTQ
%EN2dTDE\26D31J@")8MZ$sFMD"86T[kESi?\-%\8qm2q`PMK`Dg8G4a_bFO3i([02]l%&/WWB+3N!.PFO.Sadb'OcCgCHaCP-a/Y
%etMiRng;j=b9D;i`9uCfM62qIDd=2oCDSP!>NILXE6eP<]+TfnVt.R+`!3_i*(1S3l$&Oij^Am)J['Q9.DMtrh/BW-2BajoMYaPK
%2:W'b3nUHFU.T$"/gIbfKYZBsU(dL%jW/#qOs7c_#*Ia_!=JI7o(5+0E,-TdTO^I6dV9?lg2[U(hS\8p3rH@NCQiFIF_2?=LcrVV
%<'!S3600)^r&lR-mr74)aL',XjV?J=%@NKc'<:Rbf:1h`*)D0L4nDZ)DSffMWiYK=lR-g#ZLmS56errl1sK19Yu`qUf#K$]igFFi
%Z0K6f#M="HRW-X)nf7H:ZB4O44H])Gi0<'aA[)9e<F=\MFs.=GF_P!Em\suXi4FFT.?5Xg1,(YbE@ZiZRAlYGWct/FVVTk#0Y`OV
%Si>8b%2_^jT$uC4V<Z%HDJq'1pd(N2Z&50#M#aEuAK@jE+]Lm$^Hj>*!&4VZr9lEs7mZBuEH_SbD<h8gD!@*DBWcHrF,c3d`%;m6
%0fH7</R,L.d%G+-;%#%1Fq+JemotnP=`;-\@/5sohrcNQelF(93/&RQB#[d]__W6JP>T1i,NE%aS6R^9)RiZ&/Gf$J]LH?eg*V5#
%k-3<j3;WJB/@^otCo,TSnG%XL0Z8rfp'.mVOm);C(Q$X/"\WYP_-,uT)RNp&r#VUEs.*)%IaLD(-GsF22+YEpDrI-PT^,U/?\fM8
%';AigU5a%/-P@($Q(^AWf0FrAa-,!GWle#rS-]R_n>i`kmZ`!QHRc?ZY=i[k[X\Q0H!i,L:,Xeo%dTekb++\[576qcDVJ]"EWEK4
%>ELP;;$lRY-!SIC:a]P)N.r2:7,q]"31\OACoS\E$l9r0rGsJL\W$01*Do2hR,:MD2/+UoP*5l>O!h8HM>O2gnS0q>M:6T8QD,`#
%6410J&E]a`h&IB+WelWDUJr7(M]ZpjN[B(A.6j0Ni75nV^iLJ'@dc9<'McSTTu08;EusbC9iZUtkg#dm<1R-a=Zf3Y_Qmj2j%6g1
%/G?scJd9+K=Or6JSb[,?Ht.erEE)EWGHsU=6[&0s%NW$VMe2:q?p._c;/BY(k[=D4?s6D!G*<\V@F?BcQbS<^c4?m.)QhE0h`GZt
%\r'gj.o8&*g'PrqiE7:irBSO'X=!i>Uh(Gt'rhH(83[b@<U$f"\p0bmNI3_99VrBXEFY"P!nVS+0]XGP*%_YY>j7/+LG:G^R;!(>
%>V9A-RDrY$,c;#S1ZfD_@)YogR>qP)cM7joP/E0"?_?cAI=iAQ_tfPlFtu&D:Qbo6YW[^g6"Ano9,b*d>n8;Bhm%o)>I6pcS;ZtD
%oCid/'os!.CI6gT-%\og67FX!#/RGmJqm^NhNf&G,E_WNQeomFlsgXab3Zd!Q?UEr1JcDU&W"XBZC]j]H0[A*DQc?#n=K:rA:qiU
%PH$2C+l?oF!-^mb%i]A`@bG0i,kPu3ZJ'O-<U/ecHrUp2+X>oGLjtqCZ":oJ8D7JW8DW?PR:='L%<)@q/K/IIap0TiakEE'SEP`!
%4'd7YUh+.le52Bsdm=ea?NaiX=,cd3/mOKt@:MkOZAP%]23iK`s*dH?"?L]TU,.]8%qRC;>b"m95\n%aQLI(#'[IM_.4-b?<)%ET
%@xxxxxxxx+[U+;>9)EF*4S6PiS`6dZ^oZ:umK0O$$OgI@E1dO]T>__>H;\PCC@^ENX^<O"mZ+*^@n\m2Gs"i)lDA"lUSoN.?/JP"
%:1]aohKG`[24C)*'CX'phF52623:pNC8`bA.:fHSlZcME@r53ge&d!#UBZY$O1RT^QSrKk7U]kRHA=taU1e$:pt&%<-ap)2M,@K:
%MJ$(+A"9p<-KpS?/LlR`^^>I=3T-k2D,u>4`EV'G4"M/WPo8A<8*TC^@[ZQfR5Q\k+gWe#[h'tj,70nq<*j\eplslI*/ijA=Cd\3
%2g?7](.b@$rnAVaD<H?\VaeV-hdoNe:a>prDY^MVR`/#87PKJ$0789*mb>.Tf2^&JF/@_BL5`^g;SC/sC*([`g3HF7-.s-k"s69F
%8#KZ&:e94/F3"F/A1;n!!W=VeNG)dr:QnlLVp;&tpR%rmMPK+#.RW6aG'GG%BuIrF*"So:<0lktNPq2V!Z2NTe=E/AV?g+;V$C.K
%\fi6h\RXuGdoiuNj`cNKpL99862nVFO:\B/X6QgH+E?<?Yr"f.9J\FtI4mShS>WRSdZg&/360-H:hYI-MXoT?h\5?i#pHTbS'q:*
%TR?76g2;!<]4n,$b=^0e#*=]t6?`lI4f-C6eKNs$o;4rmb07H3J2bq<`dF,>H%rFHRh=CfM$q3>!:Tsa7=G"hK@etg\G5,=Gl7<,
%@MLYre'<V;L-)5;/U=0)T6NiGnh1booO_Zn=_JdpVGe$)arhQL;.j6T9$\)\\G0$#ALWOX$8%9WD244[2-+fg&;_EhZk*oF\-;.8
%-V\$M)#=M6*$a<3i)t"ZfGA(m!uX%D*nor>Y"^a`4^8Nd&9D(K3"dB&a[Aq1r-Nqan-k7@AUZuZ,W4?`Lj>Pk9mL"R(.ZROC,1e@
%'`=Fm)B2b[jAR\P*gL@uX%3IgVL%lj3J&g:Z!qC2;:rBRR0tsL*@rZ<%j@N*`Rl`\&4cF,QGNh/JFaL9nKER`_E'Qtkrk(V7nUK]
%QrWgF&C9&ra:\*7is;e^#qRn%%GuZ0QjCI&G]V?I:<%p430LDV.Xup<Jqah\(;rDk!")Bdf<nqM4C:lf93:80AM"[t[A4nGQ1uT]
%hAV][9T^4*V$t[+?$:t'0SF"MR;JEILT0"P#7tZBNp5olb%JcK7!!qs_-R;#_Mm[e)`WQgd?+>Y@gM0_C&e:BY+-,W5D07g:neiR
%k"5?JG)Lnn(^AZa%,<^ISr2iFBs;hFZh`t0Z\m@g<S>G>>=oj8q'lYGe^^;Q(hAo8Z$*N`=Xh@D6<5n?`O_n'p?jkK"3bd*(Stij
%iYi\,s/9)]F$nWMf,0n<MFV]0RM;a(ETblR]WE?72Z):O1WpY@J"V@W\3sK2bXS;3;Co@0l63\$(R:`f!#r,R;B@SK(3FQ.e@U%n
%@@o?\mY%;S01r1nfcn;(es3:G&0/L1]BYEfpgb8P=!1Nplac\E:LS<TogpIHCk">!"J4#W]bi<$EBt9c+YV'TaiJ_@@A)"j@6Mlj
%Yq>MV0i=?Em.pSk:RI:!aL>.]Hc(Ml3e'i+EHqtO)6<#+,RrD;S/sL\g<&e'&LM"T^F?H[0#tCg3Bi+*2=Q,O'i\,]I\5hJne?KA
%RsB]3hiNM6=<1Y<bbE[WdQ(nj-+6GcFe.`#>P)@%-2N\!1M%T,Vj#fK0!2@[$Re:<>MIcdB26/1Rr*K.>Zq#cnYQqI;B9Sd-"L!&
%?kmGbl+g\a4hCrj-(*=(?o1!B_,!$m,SbR28$NQ4i.q#/![ABOCeqp<h]E*sJ1\cN+eOn!"9Z!iS8ljq%rN3Pg/)2MPjX?]`:+kC
%6oMTFkQM$S9W/6ZWO?R$!2Y27m'b%50jdU^;u%>9mZoc,W:%hGEcIglRW+oCMMD;knlH.JY$-.k=bY6"EO`JV$?+BIDNeWC5/;Va
%kNQ7n#S&"DPNISWBQ[:)hr0+]n^E7Z9S_T_<l\aK6nbm2m]ZcS_@E*?fVrS*Z$%/S5aseF<lF;I/6q+^]s:q,JkdM(D6s[hD5s!n
%"dTDt\cuc&$u@]%f7n$0*2efo`51nNfh_o7`N&?l+<tVQeuW)ea:5a]#jOCR_H,bC6q09VXN$o7P<>Cjo0Qd;e=D"b+&/"^&,b'W
%-5uL69g&2bIWeO]I<49#=LlV>>D^-RB$hKa1tgBt\>=j"I"]dV-HpbU)TH28FDaKOEoW$lX^4gl*GU=]iJ_WaZeNSIR*#nP<I?oe
%/DBK!M,k<8ipU"NdBG&ZHjW/iSnM+PjR"oOFrFR1X(K6T]/#shS7JR??7UWdNLS^]gff/<ZBCYt3%]HVTRn(A;>R`ZKdS$f>UqYq
%YT?ZN%?ED.F[Zu,Q!<><Y"]?FPs9i`aP`>?bFk_%8u01hp3Es,lW,(c#^$s#:*K5?Wrq8KWZip_btJ?-(BAr-M^%$)0S8=_cTR(Y
%_l,J.3'=k>+YO_,4G<4659-!0#"Z*U'F_1cj_kHfST%]:TCg=[IR.UnKVcc]ZkSk#dU4.YR-2Z:h0-rIpW/BUb`I.La#YTfF]LQ3
%)7DHS0_g"+.S.%MjI,_biNg\M)/QSpN3j!TWVo0Sd3@VJ>t*+D62?$::=)e`NZR#h;?0K6;VnjlQm>-4WC=jM/0]aW<U@/MrNN!-
%XB4F%S/e"s&BVmqZ+.ns'p2Rii(:"%e'"i8Z*mTC9I*fr7`JPEfX%BFOe&'k%oML=lZ\larrQW>Qll@/)Rt.0'$V2MbG:P":_f+!
%)aYbGqF,_iA$Bn-SfE_8am#g[C!XYmD?Z=o*k;kmC_nYIqE)*(WN[=s"I<._r%;#<C007tCKGhl<A29<0QPhjq([O+-X@*KPI^`;
%FR@MS\6s&*^I$6L+*"nh:8T:JL851P41FY@(Aq%W5i1km7I%EOg/t+&:^G1uerK1.72s_8pnMQ=,_7<2@Uo'pJ+i)D)o:8E>ZWcP
%\<lL>:/6@KYT//Da)EX>SfF:KdKO9#Oj-9nE>He"'s_/1<SGCEph[OiVJUAN+Og3.ia_F%:#8^5E:`a$_PLV*\Z^hQE$sSiNVfc*
%#p\*3&2oGlquhK9U8.(i.&Yrp*c-SC4m<M0*684BpauEd43%__ZWWH?NN5/CZI[H#&O^sW4';bs2fCSb7&gZ$#c#mL?+H"HWc[M6
%?0,"2&.?La%&6Pm+F7,+oc5$VJej%XeeJMN#$[ATa#!lKriqJ=79>d<S#?Y_33l?DoI^FR5"3m[/rFh)W(Ki3^S=(oEC/?bW1C2r
%#5j45#0a^#R/TEULDLe:JpK&-+B]=lcH)DS",5I4`lhU%M`sujXej-/aUg@LWR'@E98T+7PTq3aJh@Je]>=HVJIs?^+f#YE!,q^3
%4mI%7"S=9LLMOkG'raBs;r>1+&[uBT"kq03XgABLhdhJM$0eT.BhI9'=-)R<@)Daml:B_FaoSgkF+*N#Y&W@T%l?O4q@hPg6;oYM
%#ZJ$t<]Ho;jbWA3k80GO++NY0EU>I5_ZJtaq>X'#fIDun]Jtq+X3oe7b3P-t7-.p^27kL1DDuX)YI^`J9U57S4Z:srOM]%tjV[L,
%pRc"N'YY70J0,@in?L6@)u+#lYk+eJGXgkF5ChB4"2Kq7n4h-=P"tlcCRe)U3$C:p6AR"1OpbM'Y*Pe9WQZf$Vd7@e<i*3M<at%W
%gQi;U6M,qde<rD76@U6D\1$c30GTi6<iN42.2H]fI(In3d-VZO&J3:`Gc+ZnhZTpJ9_DOfC@oljSu]gP4d@pZ]tCA<>XG^%](#U_
%DAfJ7YC=O5Via5\U2Bg@mgt[gX5+ahD,KD(@7at6J.JYcG*n,Ulj?-oN.iHM.X`/ak8lmHaSW8p9RgNt]"h-;?-H&CW)=T6IH0MC
%eF3rFRX\Lm(38WUTAK:=?KB$-+\t4XDChb";\4'rs3Mr1LCrSeCC^4=NWtkd[ckoW9-IAXM\NI-jhe^?47CD+Ji'jFNt-oI2;600
%P$;%PGq.cb?'4_@"oXpAZ\XqgDP0$:r%nOhL76Q*4HY\'6n0>7*ZSTD,40>$:jcNSXsgrrDAs6eN[kn[X2IO?V4;Wm)"&Q0d(`Rh
%,`nqa/H=c"K6$NZ.NjB\*H`Opi_p'f9hb-B6kQgl-D#fV+J4('E=p,>"WZ<Nq5T2/`mUo"1&;[XYH5P$TV$Fae"jL4`,PXUXAhUg
%Wi'Bk8ao\YWA(dZIE^KKidl'W]>U6%X9MFZ]]Y<gWQ0Sa$X2edeRRb8,r+XEg[rM-kM%>:$/12h:K\jtg=;."A6)ec`47Au_*B_M
%D`,utGjZDqC`/D**r<iSh*Qlkq.co\D,6&iT[5._g]eZUQdE,O(Ph%(N)6oLg!GEVHsC<1Heet>^'.h8YmZ&`orl?,)E@nP9&Q:g
%Pa_l3RG?`g,ltgt2+US&j)ZGXTl>pl(d'F8j$%Ze:f*9KI]8=NTR'6!fc`W6Ve33!>.KN.\-MaKi`WcFRtq'6@jMI`eg7J.I<E$E
%gZu<DO\;MrFtd^Hdt:ejXi=mlbL6]DlI<kRRkDC%(E\(]^f'1<.GagT"-,mZD*h$CB%K^-UK06iDCRIRO$G,#\1:8^*0:nKO<VU]
%SMY+P9<9N2W<<1RSn/dt=3k"6@[u^a:JQAX7$;rA9b@]Ph6[1EN;`'JHfu^O+L4(H_feRp8#-]qpraG**6p+=#XaRgkZ@A?ab6--
%I5H6MbagWGkeL[8c@K4]OT9+_SCTt9]M7=j^:9"Nc#?'V_Cp;+PGTL?0RoK!oQGnYT[+rKAG]Q(eQ#qo[4`Df.M)2dBFfE@'kgXd
%7c*+XlDSj0">)MYJANd_Z9^7-[S\AP,o"I-Gur/5W'1cX=(0l1BGdaC9]);&J"nEZ;Y(jm&M>4bT>,oKp=/Xp`%8"%P`aNm"e2RT
%EC*Ym(S4O(#t4,4VI(VM()!I=;<d_l[rE&_!9T-5Z_$3N1D/"F*eaj;[c=4Ihd/84VE*H\>I1IaDV=WL27JFulNR2!/hHWpZ5ToJ
%I)BS9ru6G?O$U_kl=HZ?;LErn&'`0.X/\5_3@"+PM=okYLdXXN&dA+8A[?$IOB'Z9I$.(9lC$K^?[pk5Qg/?k:3<tnNkT6S2l9rZ
%P>>jYeJ::_s8$#DMNg8)T=(uO0MD7)pOHPU'M\/.*cP'/J^W?SIY3lmCO8Inhd/52VV-Lsgm459UcBAZ!?N#VSs:%^:A*3aYP\lG
%p:GXuBY5&/*DH[ej\op1c@\_1JYJ#Sg7XRrf_DU=W!Wok4Fb-aZqh-Pe=uA:nBpJsao]C5D!sJ5bfe:(Msd"pC9rdS.gn$Y&I#rG
%Y^_7CLqo5m#g7G'S-Jq0?>:EG5q"]$?i#hOh_aF10VK+!)u%<M#M?A/IBf7Q4>Z2#L"c0RVpEah6071HBrO#@;k?,Z`!;'XBNde+
%S5o6[ZT;5#4_/Q+/@'a7!FVP3HP2Z361V?tniOi?<k>I10_Vk`_bBDjR2"8dEL:qs'SUTd8erlgkgR_hWu'sqoLIbfrH17N4fpOp
%Q;h3XS3FF*l0Ct%T7LKtLR=aM)$nb(;I>rolXmk%R/kOQU54s$hO\k?Q[OhP]^,[>U**Unb9e)NNCeQ7=;'^:$e&>g3p0s@aIaF1
%I%.1B4l(7Pc&sf6a7-<TP0'386TrTK7odkME1FDhD=aSR7@c`8cVGbBAJT`,AE&K:7pnY!7J&thnsr,lK$ktBa5/_r8]W%Pabe5s
%.FC2<[=cC%pY9&%a4s4:N7(]@a3i]#/,$8mTr-(_<ELT]^teEDqlH_;Q&.G8"9L_@[j'kQI!Q(!C3L]$hmngVi`0/@B5'!Z_7Pa/
%;)3'!iSs2pFd\`sL0b[Z:li.`br#>RO_ci*<IKdZ@HLH_@g\;N)^'7^YYr]A*%>8,6PpEK(]kJ3S-r^:s"Y9MR1h;)T7oR6`-5H5
%(Y^dM-jRD8,&C"Nd%PFNL<s4-Z)$X.2Q8Opn>4HfNIS"H-:H\A(!^Ik4A3em9?Dj`:ot^R1nbcQ]"$WEOej4uJhi/ap#C41<5K@a
%4#f-Yp"pFPUk<Dao&+eQT[TE%*\nn@'jF%p+6G[AC`oZmicMA/h/TjWZNXb,\Z[g*[:Coc@%6-u]Q&G;2Hl]P,jEhG1:1Sk's;n5
%EO7BNJW94s\cX"jF^H;f>[@_]5(C96cBSt\O4)/rZS_4;1p3M=Xpf_%o_SWDRS[eC@B@jo!D:YV.s*leU'1!aG4/lHc0,12%+dfk
%T6<`sCP%Ja=#-N9C[-:3`R<ANcCM&"2erU``i49!_>tI;.MITa.mCqT'uXl^("l2g;-EL2KMittDI!F4R8RMR--meQKrb=*6t=o+
%2&4a9)Y7cQL^a@^7j2[uq)f7=>of5^+-L/h2<eLC>,GH(/r"mD_6LSE#jFr1=^@H\:r?a[g/SEh!4fA9GS>u91*LkLWrh)8q,mr-
%Q%NJ$mH2AK;'XT.<Ng_b"/P"YP-W9B.qF`ubD1\eDd9!$B0Dr,b6eI%lcA(U.k:uh?%kU]O*$X!('%rXTkTM;0JGI:$cHouC?F)-
%(CL>u-<.BF9ghn'4H%_*\i!KoYFH8W<WU;1H-S73lK,UL)\n*,dJKa]!8[&<*dm-jg$.(aPKU*`(bnU4ZoJjV^3LCj=dJ(m>/XXi
%pWL:\M>mm;7AQ6h]iEFe0?t-hUZIV"61)?$2P:FToBNkh%YZnZ#*]b(O;1,;Y%roN^Y)IO3f^;W$U9;S/9tED2U$_E*-"6,@b&DT
%LHiZ4F!,Ncr,5"j<I^>3mCB]*q$&79rDI?6?U87N#t-ZV<aaQRJR&$9B)h]XG2o]Z`PsZdr[r^@T=X]$h;uJ\UX0eRbNc%!ns(CB
%L9i(mk3#3ord2.*4YMQd03Kc*,fN,H,h<.S<n$2Nki_'+^L4;;ar8W36qhJQA0eKF^]3Z4.=uJ&6Ii>[]c0D,:14eHndA44J"PK2
%=)[7P(K,i^Z^mAsC-[R$/U(fYNS!b1XRA@KKdlTW^7t]iV37?l4-Rb1)q\ub;\.0N:7IrK6d;ko4:?/X"]<[9+PH:s[ds9*H#rud
%eVXFoD?nICB0uC8UMP7AFD^:HmeNR/l,;V86u73%Palf'h\'ff^:-#]g/ifh4@+m:F5<c]#\.]oBDa9E1VCs55n!H%<nRfWh1#@)
%=XEbYF,5rL]9Cb*c28-:20Kd"1_WrdS]$oC?a<lYlX7()7UT:OJON0*:h4a]UT0"pm]L)<F)c<<_L<B'@=ruNT<]LeS.tMj&q9?]
%(>)YrO-Gm!]$#kt`["]q7ClU"h9hs8BK$PTI!R-G+73bi5`O;*YnS-tXTe9=DPs&FJ=V;)4'aYTem\`0'>DE?);c)18fS!5cH81@
%_B82E$ml:cqJ&s&\!aL%#56VK7SJ]@U6hA<^bW4>kqRf".)_\=ZpOlN.%UQNKcLaleJ4*ZLTfFN1#Umkl=hVd@rm/;AJ,rm2a_DR
%_)qA@O4W2trNL(BfF)9C,6?%9Z;@6/KqRu!cLG.FJ3j&FYRBM4iXH>_kEP9>6GNSa\aR\Y#NoW)/P$7"9j%RTLGa?.rMjLap#D.C
%"u`N:]=*ZbJ`eC0qp`<Mgkg+#Y^?@'I^(2_e"*`o8W@nKY@qr.nF0fmHb*$Jc]+IG5;g@0affia42f!C^aEj%,30<V;0H"^l##Cl
%l?%,X^o8+JgJF:ZilI"eS6UE6;J4XCfW50(mOi>*R%Bd1T?W%SFK%C7?TNC/"fYSJKK'C=30Q_cGR.H*.uAQJq/tTFO&+f[IRL34
%0*X,]QuLHQTH1O*IuNQdFT8O.jMeM*'<EG>alKB7o+"^ee7:QXTSXmB`OU=uCt7695fOuFD_IUB.k>E'3RKD.YLP8884Q7J,sJ6-
%S:]FtMO1lcRas*Lei4iEKF&#uGUJ.RN;IZ,W$-^kiUJR9?tA+;->@m*&9P=i:0e,JZ?ZLD8.M'.l:b8;1//HCH3g!4iJbH!9Oa>P
%1e&er5BB[J2JXFE8(K/KGUmpLd"/'W$Js6l8(5C&e]=_$`1Q[923tJjcA9lu^^11efPWOhSc(J0?_87@$KZ?Og:4?k$Ei6.PNQQ*
%pT>YdkU_h0H#6BBWjqqeZJ^J?EL-1im!fI_0]j:sV2G*HGl_kq1r]nZl5aomNY6uk`0k4T(R1.NMBI[i60Q-/%5$.DohC$-;*_(N
%q0qT/HaX[E2X@UgXhJG6A`T]"b\tM>#'plI].1nPWbhI<Q%4b_So51417#k[=s#Lkb6f^b5Bfda7L+mLoDR:uQ,O]_FPF2,b<K\o
%+.BhHAfhL&+q.2YQm"iNkI%L.OWL1miWC=CjZZ,Fk/'=7C7P:L4lGQ8r,jF+B#MD^/70mS8Ilt-dT]IUo<6'DZD4SkG;Kj6:`lj$
%Gm0^O*'O%HlKDVI/^mU4L,M(G%C<s9(uch=Z0)e3n6CVVD1'_\hNgqt8?6)S!(tOlF`Kqa&qg6':Sa_=&?/Zf6i?TCN/i1ai]hI%
%d]4Ge3*lF61:r:hB'+RkC3aUjKH]mt*XX3t5Xj;K[j]!\%N)@,0?sPr8L\8'`/;ElkQ<rL9UL)g'*%UQms`tTs2A@Er-/1q(Ou9_
%J,MU5J+qk#i?/']O+7/Ds3L`,pOE%g5Q:0`+oIgZr:g6hLC`CZpt[%knGDs0r.gncrQCh]c[Yoghr"CQTDnc`Du)KoSG^-OpR`LV
%q&^].pqIlEs7g[4q1&8:J,_a]ci7D!r`fDqnd>pnhdunLhkX\Rq!E\nU-ZWe_%pA!Y+Pa1HhBW''YRE5IfJq\XRs_C0W2/(/RH\c
%9a2n'l"ZB^g`V>^-:eq=@xxxxxxxxxx/IaZ#I]NrAJBL^<'_^jbJfrqW&C//9Z4E]1A3bMj<PZu80$U4\ui$`_e%@d3SV_h/[_Tp
%72!9uGF(#`-D,q$,6\bKOiu.*lATADkrY/$C"-(:1Jf?7LG70i+lg^(HFcIu$Qo(`#EG9lWRAFX?G/]gOK`1RS'<p8?'4PO<C_'^
%OW`7;*kI$uXF]qtYd#\VDOCr]lG;`=Vj?#D#*Z`T:&GI:DO-u7W/Y6&&Xf!YioDn8Aqi<9h-+*(@b!`b5Zh-,^5[0IXlY*<>0TL^
%2KfI%A?Q1bi#<2D.aWJZ<U\fg#$ISad#E`H=T?j[)o,[L<I;k\r@s0lZ?3_UO>&k11dJG3aE1BGKERi+`/%UlkQ2?R%Fc-,Um+F.
%T,o"HS]S\U5`p(eL?MPS?p.W5V4'4`C^VBoPLVq$Z@Q10)K6O##a&HSg3I>Z1L(A9m.I/RZ:9TanRY\>8k5H#VutNiWg%<BRKdYb
%E>=3JRE9kH?*n8k4]WMYVVm_`(tp7-&ISu;XHs<N^/)/X9r+IaAk40kSWh!HNk8\n5Z\P>_:pcH:`)*S`!k2[(s"%-`^S6O8VXq[
%EbHgnJ'#1K])7)u1s>ZnPDBfRN`rr!?B.-]%58T2^10j3<?W:(Pse,c264gKLbbJokU^bPU"D9>Re\YUO*iXZ-pZf4+e-!XUr9,_
%GGqd_<Se=aPXFTanDq]KF<ISu*q7paE'8r";g.T&[or)NT!aB198eV]6T%-_8r#A]lbL-T!?7Ri]*6\/?G_X;=p$d[E9X&)?M232
%;(d7t_e2h^X>A$>^'q1tqY8MMS-LTJ@(qrP!`*neRmg3]:HWo\hWf<T7n$tj46h`.Kd``05j-%K#b7=2-lR!>?qn1)M0MJSZaPLE
%:hi]bLguqZ8/Z$tNk,C96Y/lng0$t@SWr51``bI?-b5u+@5PHf5MTi9e6!WY3Mek&N4E:B<ZNH^)Ma@$9SCEP0j&9X+r*I;U=rN5
%[kiap($BT6(BFigk1str=lgljF-BSG.``kU*gO@]`)<@P?egafRL3j%S@r,^_]Dj1-Bn&PDlaM5[pk"L3/"1Z8L&c(Uk>'^/$"cY
%(]kAW-J$\/2D>&*UP,hP#FJ+rD'%17p<9%**2nt"gO0`OTJUgmos7Wfc&Vs3fi)FOXT,MV_"5IC1$6HY_(4$'m^[&&*?Z7[G.&Cq
%.P*r=d*<>lYlkWC'r(N1Cue?c)0T=$GYAhR\V1i4Ra?@UBlU2J'.#>rdEJkGjd6<,Kr0Z?GoR3cd#G,u19o+4WTg1N#,N=;"lE-7
%,dq:k#HA*2i((;l6PVBu]h.<?J6B49s1sS&!'FGMJScl1e^&H7K(i(a.NVm:f.UQlR.(4lbH4DU&QLA(e56]a,d01]&QM,l?rH!4
%]<E)FVa&WcLNj'K@Fba*,j2ieU[l&OQmO9cZq,Z[;RLRX\[;l/3nT4u2\E9.Ff^q9>qMdX1CQ6%e\2&"4.sprWVPps21(8,]#O+B
%+UB`Yl4M7(\*Brj#?-<Hk*DDtdtM)G5aF+_^H#8-!gQaEZ4A+Xht'hccCe'CW[['S&;giEKiYZ3e$7c&g(]1*1Rd4>As-XS&i$hg
%Fd4?WpFSXZ5e*KhbW!QJYa12q0U&pccc83.<+ZR:PK0C%7u."kPI:Wj/dpjGL:,o^@Q6S$Qi#ti4'`LfO8$p9r>*K%G7dhX\TDj"
%KEIlZ3sLi>.XLk:Ia6bOs2t-`efDc3>W<+Zndf"VOjRp&*C:,bFkfQLO$!oR+f7Q?!lGo:LCWaJ(!`IkI3]&G:&1/YVeX2K]$0nQ
%>TI.]d9fg_Ho$fOSSF^^T3'MK+aHA(_23b2D3@S$XpuhG;>^d^j84`5_F^V[WWnV9^"$<E6%!@Gif4=i6ASFVe_K(CMd06F7XfZ:
%OHeb'p_=IH<#s><h9iBFl'$#;2b:=16n7VtK.+=\D!g37a2E*+OeCi>#SH`K0fRRAZmrMR2RBf;'=@xxxxxx+-Xf9YQmiR'aj&13
%I<"Q*PMAA-8jk[Q#UUNOE.Z+Rk_Uk71P-^a`Mh2E$Om4&Af`MCa4YpG"\^UrSEZOd9+pHm>)O3]G2Z8jaXN39#XUnbnPtOogtJ7f
%RkU30H/Leu1JZ>nm')H4!+0_[190sN0h_E]kkb_UN`29MF9('qAWZMm2OkhS#L9?\'6aBKe!iD+nEN*YMm<N]1G$m^&^.ErbBR:e
%=pg.rD=N5E.$?1SPg]J;NZ*"!%Um[iXUH>'g>(HoF.G!k:5L##1Z*Ga(Hbn)-h\Z'ieYe^22lM(S@>=K!`uYb\;?UV\:57)SBM4[
%JC<+ukEto^=Xs.Bh!"kAS^QQm"&QX>`lufu9A,$F2Bm^_kjljLfS&")%8=bb/Pd_@Z-sP":-@.PXTF,jV3lNr(Y?4ndie"<*5%$:
%`6=O2b0W]>mQoIE,`fgK`o^['.c;Y'Q&Qs"19SD.#[LN,Xai64)qq-)W_V>CI]-p6U-R:=Yu%qZ]h7[h'29>_cTXF2J1O],C1/#L
%.eTcX#bMhP&:)ZMkij7/GWGi:_9OG]p4hA3G,Tq`?H8;u/IgN=$4rR`nk9>FbiJ)Y3(_l\Mbd'[a^M_0Bc!6Zl#^#;<S-KUhe5ZT
%[$\"9]Y/4Dm=7nM2)R)g\5/D=rnaKh;N];!PD'WCEe8\LQ:tS<DOfbHIs_""2aK[+JD2,'@4_%IF\+IGLb;-1Nrl-A7`([kP.DIi
%O=6Z6RTa8>1I_6"\HC`CQ_f_6S>l?*$J[2NeZBbBk09\r@*TO@-W@rX$Yk2hRlB>rr&r.DOu17XpO=2@qlbpCNDHgbs3bQuO5(L0
%M%>Z8^O>3:r:WE=%),r:Pj3/I$h;c'L!BV^cV>DAdBgmmGoSppV.uU(a1ehnqM.)ud+Am/+42rE_D[<iH1>/qP0r@D;0D50E*\G,
%+[PTuChcgkXJ]IR/S<.o$"5ofX=1,XV/fLEP*N_Lf;_Zl,=dtYAj\t)T+f^ND*+EHlD91(I\u93TfLNaYZ-SRHBR$<9"B;J&,:`Q
%Ut5"qoW$UlX,/9'DPCa]XHh*aeH0^G1g1oqVo^,!o%Q<V?fWkFnn5<RhM:b3F<0BE.\q`>r7V\ZSfW_/<+-q\mFWF<??C]m:kP#,
%;u*,f<_">1@o<'>/Y@pJ4Dr1-+*ZbE5ttR.WRB'KU.;4PoFDlXXR\QV.Zps(Zjg9(MeU6ZE@5K,iSHJsc";^1!HXp:2=];OZ[6?A
%e%t<cXYsooY0JhC,]A8>jHVh`f](K[(1)',N*?EnIit[Wc3oCCd6UN_Dc8r,$V=l,4Wi[N)@<<j6]VQb^")I$FAh$4Ydd_LYcNVS
%3Yhm71miKfA>1@g]E[RZKWH/=qqCn\_O7g\4l.)?73/OJ\r"XX7JFNQ)uVLMSX9th[42L"KaHXI/+!RkO+;$[b=Z;qK-Km6is$<C
%P4*+R.J!YUApUK209^LGF<#S&2emGn&[s:)@EubcQM[4^oW6D\,#(9h=sb5Zs2/0Snm+Pjd"fG0EXUTr)k$<e2i^W@XW\G$GIF:7
%h#8TYVpe,`=#"q&paJs:RC%aH)mk30X/_Eg?m$B7EQJoI&>O]jMNgNCN8U\Gg/J/(j(A/A&(m6pQ81]/0(D6EMpqme1?2%Ld)WF/
%0noK9e^^G_>E0Uhgc9SU_6O8j\MS9O<_78OFdOmFW<PeOq2-6;9mG0R*O`S["_YA.bRm4gYX]hp5X8Lc<`mehFMttk7DAnd8X<]i
%[m3k'_"jZ2KnDticABPa,HVFNVL3Q;DTG^^bFlbJM3*h`,Gl\0D7IWFI<1`rl&eIt6qu$*g@QP)@Hm_ur,G/'\YZ5[?CSa[d8WBO
%R,O.Gdk:OEDYP+&HL4`FK!`aJV*!O:Y\WmR'9Ra:JW).s),0`I,hWs(@F50r"h5%pl?(=+(:a%:ElgHLEBp>WnU-of+X0RkGJtXK
%]],?9P:2:%M#^44meC31^J'JE9]6#Y^pA0I,ibTd0U3L\S5DRjVDF#0_0Fq$A\KDbp_t'Na;?XY<@t=EUq-f_@fXaG6&VJD/?%6j
%#oe_mdk\^?()bgg@ImBscVb3Fo5UWE_5]<BNh$q8rpc#ZfR8Z1B!#!E":hqONbWPUe7Ht:UN>9sHmNC%LoSuuLIC^Eq)1Q6n,koG
%5g?AXEn6aq.C,U-N\g^</D?'a?C9.Un+Ik_`kX'A2Usben!DSX6)bt/gf0S^A'$0(,`VJLbhlM?dV7c=M`p5YY04b&_pL4uSLgat
%EMFN]r,_D::@DY,0n[D]nD#l3Wle!j[Hpj1H@1/VDk;_9^%Wi/2$_Jn2A!LC5p18\)Im3$)/$=7)0D<gN*f'<eY/-@c[([+KR#5d
%g74)a#9$-s2%gcSo6A!r+Ae8nXW=_is4+m]f73b>5Q.($rpcn9rXXMRr?)'gci<B"oG?C9)`tNos75?&rP/?rO8o-5J,f+Ir6=-s
%ooC2EIfHnWiD74tBE.Pcs5rk4J+r^[)6aR<VXusJ<FM&8L<aD)+G?f,W;"Q7Q0F*^,0rlEUF3+9BLdrD#[2<3TqE6\),\Ud&`.MM
%dDjq,-_CRc<b2jd4Fb.b2*ufc4*W'Hd"uU+f>$5-/*rCb>/PrJ^@]Ed`"S*D7?TYZ<m5@(H3;VHZtC?\KEQJJB.tLB<[QUA`Hff=
%RrAi`bNAkaiFO-baf7gH6.%H-&05Dl+Vd9K@g0t.)b/X#Vd9t[cDi9'l).J)a'lSG.9XT0j_6Ib_Ob<-":i@GZHapVSplkW#0Ntm
%+NSnk'8<&jiQ#jnbHZ`bA]g]>P.\N>dUmrf`KCjtanE^^6A4)_rV'_1/%ZI.cpi\7GT:_0Li\eI*N%<E!\1YQGE4--mi*Y)5c$IS
%2\:5!au-K;?;D7E[h.fLd=[Y9;V[186;48A_P4jF>p-&O-QQhZJoLr@FhoO7hbFQMa^,aoKuI>;ee[>=apAc;F[F*orO"4G^S:lm
%k^74U2;4XCr'LZs_7MJ>hICL5XTOOQgT_]tNT\i(C_O.Y13tW-n%!e#9h:c+KI*qEF6Gmk.ZB$4oru@QSdbsf$(:e`]T.HAUBp/i
%3U#soKo7u@UG)S?1/_]AgR-%F4I^eS=Ra@#JbK(Qcln-5Cc\",rP!%*`p(X3?T[\LYZH`b8eQ_oiC*cGC_#:o>JqXF&#L"t)A^ri
%'^)Ee3B"`1-7"Z@fEga;+\%6>9078I>2305,h214^\`W"WB(MAX6H9#WOpW]A\;5i9hs\A$MEHbit9+#BY,%(S/$7L)di5NBfp8/
%0h?1m[F:7cT7l1/.dpd*84**>&4neEni-BN>SI@s$<H<&K_:O>Cd'MEhs^V/"e.(4D%<@cY)YuGO$5q+)2gdApY@D&LY?:Eh'mn6
%/+FPr!-\^&Le\d/"$)(gSnhlDr'1@d1Jh2n,+tn<Bj@f%P76Oeol*%e2\'p;51,l7X#3(.`2o.:E$OPibUmpsO<5;XW8K#ZE^-9d
%M[/kZA6&Q)LRHo8MiTWic4Hm`h*?UZPOKO:nEOHo[-4pW9Nu%W4ePqt$q@Ol#rd7W_`b:OD!*+QG4TUJ#4"9hrr]jo6=rJ"^LD%r
%@'FU7UJZYEVoa6CN9^u=2?T2'q'7MPs2\hCVa.p7BOH+dpX-3[^P+m[&gre>e4@d%-e'bC;"2i^WA;Vf),(_bcEC+?BT47dj4D5>
%ndqd%/QN,KDObSGHk0%4q:UL\hd#-H6G#@b/AjN84XaWI_%!K5X/?7$]5Z_JF=8^=.ZoGQ7l*05$bUq.i)<[m;J2Xk]$,!V[)kgH
%4kg[$)oX5o1?#)%ef_#\X!m#F0KZK[0IDj)LX&2,fFrG:*scl5,QO9<5=M)^)?FsIR$a[o.@'Ggf#eM:_EAVb:2.QqOFm"LZKF&P
%p3dO?0.4De"2"iPLiDT>F[O%"/m6gDAlc>oJpm^,j)0J\Rum[Uh^ESaj[A<1Ji.LPcOQ0H^SPl1eWnQB6LCAk+$HhE[9GcEC,!LH
%N;"oefsn6D6Sb4)l5uaSk(%.bNa$;+14\]0RR7oOT]!is]T1qk#+<5>E-bS!1l2NEfcaXsN3r[mo__2RbKh/-"E8SuBsa<oL`9)W
%+`\W>,#@Q6k=I$F-S6B7M@g^r;;42<$Rtp9*MgI#.=Hu7e'AQTmg]C`rp^L`NSc5Lr&Np;09/$<7Hf_VNK'UgmZBN=,=h'^^3u5,
%X<jh:mj>a[WsrWS52*7iE],U(s74g]_u=+?)rn6fe,Sr?!>]?t]\Q.t]=hfGk1)Q3T&Li$dtAh32BR]+.2VhX'LK9r6F_V:f#8]"
%N!?kB54GQpcgqriMuC5kQ_8\EYm3[&lu;A(%Q!ufkc?3d5N$<u`%t6P)#l@>i6c%U'0O8f^9%TYa2R^kO@!ahb`H[jS5FE_ll$cR
%.>6@ClQL-]l#G\XN,8.7&DC,'h\K`_nb^B!5<\;p@0h3lUS%D_)idXLW-lhO*#P,bof+p??!-J&Ldta_F.kDHL9QECio8GK+?b]b
%/PH@WAud"8n=._8F'ciN1J^-rI4!6ZE:nn2MK)$CnsN5=C"kgpFaOu$lAZ[Qm90-teifo<)lhgf:KS*p(T-tR@-uW(3!j0#o.=BY
%UH6T!YQ+W4A3CID`NsPl*u?X-[a$?]:#'=7X*/INE>V_64VkYGid4r3q#C3>/DFS/l#%YqU(-(dI$Zm,&;8"=P//K7KV$`Y6KWVt
%[J"!NF7DU9@q0`h5:u5-Scn`u[U9o,0YCmJp)'6VK9,FDll=*3cM;>qqs7@aR7I)26nB%10qed0k)*467]U^(PlY=g0;Dh1/M?`P
%bMFan+hGm=/$Yp`_\]Q4C!9ba.ln6PBlWT,eC3RY:b7hD_`C,$H&,NI#):d_"[e(j`Ip<3#`HN$@T8FSlJhF7S9/`s1\De^Bh&W`
%\;Q:OeR^r.\dP99K?eXG(^[P1ju!D%iu7d=QKJ[,"89XT]');4'PFb-@pE'ZW-QICci3IrJ+&Gec[5.t2dfAdk8GGOfefi`@n;SK
%!M+7NbIsZV-P:Nq8*!qMfXhO.D"`VlgIRh?UP]<\J8)nE`9;f$*t9KEm>`Y1nSH$eB1`)JicCU.[Ts_)/KZUkRuSki5.c&)"^2MO
%LTp?Fg9%fU?]Ol!3g[Ph@iS<'e\r&_#NP-(6UU'g^(;o>mYe:7]40Ef'Qj\$*BB9___^=p"_<](1]o2%J^#7#Y&;3UEGN6<BK=]F
%G85/6q72b"\;B`j%"?*hHp#]mKXUh!LpPkPkePe1kJ^[D*1p=EdgnB)YT#\TQ6^,V>[70AiX&ds(Ud0t]Q6=t#1mR)rA9%7hd0p1
%JIl]V&8ne/ci?%b><!@fUui#;QKm"tq<Tdj_%:p0!uLC^n?'X=5K#-U/b*YI>)))'H1PT]5ZeHV&Aj#6'&kP6g3RopDW,\j>Gk;#
%EL@ZZ0QTB=A0ZbM(A,''dt=WRMk&)VmGKE-[1)*-#+qH[?.fd^:M[,8f;I=V1I4bW:!UusA=S^,rVDg@O#@OH\ZkgZ#(j&/KsN=Z
%.2X(1]GDNc)9]6kHS"qF>j1XqHDMs%cPA.9]G_%@bkEF]U'FtV("jr/Y!#!$_ljkBdPBU908$-D0>ht8j4(A`5Ik+iTuZr^T%rrL
%RMUsLKYrB#[j+**g^G?J2H_ke8JuLLSQkFc)VA*11qkE6T9c5/nF]X@h1Yt.@RceYoY;<:fn85TE1mMD6g/W7/p&3Me7*j?Z#Q%L
%[0pE@.dsf%KOrJ&1KFUfnf8ffU(rf8FD?",4"iKN']S;aSiO)4@xxxx<hUOm^*n*b%/T[*!tXci_p,o]j'>d7<!_7>nX9]0:n2qL
%03c\d"qu<"`H[dS-N=k-D@>T:_W,Sa`ZLLk]WEk*MO-\D:G9o]`4;nBeYQn+lr<;:H"pToWOA2(R"s/`^Xg7[[kWt-#1LhPMqc4;
%m#RdQGk>R:?bcV0?XJ94QQs;.?/`FT(kX!lqXnM-O4#gB=*uH:>IiAu7VHnd`A>D3n9"tB9\7IEI9Hcg\mR]RY.t#$X+g=haaUM-
%Xkg^qQY>+f"8H\IcTRgbS9,g>'A+\F(m$YY1X!'2lcdG_npk\=\>,M3n/$c&;Y7U&b@cA%4!I:/6::XjZ/#N6r"'bS:5eT+EW17d
%IF1*D5e9(2_lDn=EUYr,@;!n#Z)qSdb+8;6'C\%!VpH?Kh[COBLDo-gjWtmn#^uOF+KcJ5O,/<J5)XN4X?ic4jmD!e9(>h5&*]rk
%M&s^Lh2hme0&.Q"r!F[QW.s;!4@:n2.kHHJ2N.!_%5>b27%B_ZDmCdKJ,AG\@pJfqOTLjDpj9Em7pf*+;d!Jc:PaS20ok-LWAhM0
%;6Qi-$N?b;6?aZ#k?ABKr'T7LLYCIM[.52G'Ma=e,NomP:r=fI?<WPI[CcoX(or.3gc/&j8o&X9i%F/(Y;no(Td#d:_64[WM\j>*
%fjQJBYYrFqNlFA)*PBWuX=&>0U#<;:=-YeHY.#+Z<(ip]3abS@^g,3UfRjpYkH`H]`roRaM]9I47,f^L3.o0GWYhS+dBX_((aKd4
%"hij7J4XLm[epE:c6bA_=QtYi]f#qWPbnYZ?@dUnC2Tr<bG<0(A2A><<dc\q6W1sfo+\]R).c>)M^f0ObXtA8Ea6I0:ran^]FoV7
%i?+MJVTQg+V]VZdIR/un=r4@W#HkB\CqM8=$OXA4%FuNcJF9^3m#_[h#'pQSq4qt\Ks5`H?$=!hUKto5]+??jNsiTQRjY94QT!AF
%-],tW;pB=%[2@OA)pYeQFZ(@2_8U84BG,_u<lq,co@=hnBe(`%'ADjEj/4Q&rM%gqHLS5L0>Hi7(nbV;9KE(ITOPc8=Qqs?*kK^:
%`UE<pd4j6E[t?C,pT4nifO95\=.#iY0u56B"&flM%3l2pUqXD6O^i?>XtHl^C-D#*%8?$[-ls!f7MN:m""pI^]d'U!"-_g2P6Z8b
%.hVX4W+quJ)I*P[/OqkNBQeSQ4uR&dMVu-db\l9YMpp;\>S((EI>mOMi`V?%a0SSUNk<mNn]Y>Zn)HDQq3u_HpDL+O#&ZKY\/d,T
%C-]Aa1()-AY<4:as-n:Lm&W"`$Z%J@2Z7$aFB+PN6b=Ms\.h"\mf@O'&+5n+/*Ah_%!KW>f"l+Np9^#hA#,fH*%M$m&*l;MNu:!3
%5CLE#nac^SiV<q(Yh/o5E4A347h(0n?'RjurYc@Q58)0;*J<m"rU^Kf@`C9Xi7VS?L(0WDAK>2u"MRTAr:H$UK6nZ!?g^(!Tm',,
%4&@sukZs!p9Q(Lh$)(T%0'ps(9T$W:8Niio3''bQC_4#\>ne^m-EIC=csfM6lR-$:\46eJ.X/#F6*(ZY.#TfoK?`(()%E[_dC=FI
%B!^l-qQLBl'VUG?XEM?nq@)a:IW+F=5H0JLI0cn0-%<0=m:u"W=YjPk-JXaKq@FSP<!]70_*_1SG5WRhW"eL5&Viq:^D_Q;7YG\R
%j*ifhBG4QuL7^n_LWs?r6mQ$YRKXiU)\%J7iNgh`7ll'=1q*@3jNF04M=&L,hs)@pW%&.+5(nV5]kN>j_cOhH49[QLWU4]J%jrUq
%QaIfYOtQ+5K[=i=N[L6rq[hAX=R'AJSL2S0=,V'Y["s>o<NKuLAuC24`l/5Rg9Yd%cdj:g-sH:*_IW.%>-I)*&/qT"3m]&c,G'<#
%pNFP\#+b@ZqNJ(r4bUiE=S7"G*;Q?n0I@cjG]mN5*&Lkn#uB]?$d$=Mqe@-'%*T8l?!H;IerXJ@LO\1(@dg9#*ifsL'i=F6+Lr-W
%&43eq<u&2B*]#n?4:OQ2),<oTn-P]%i=h5ecG+/,dcq5g@qc@+6)\'/"e8k#X(r7K5l;2i.e1Ia@S%[0'lF(Wnn).c?")+P9d@Wg
%l=i:3S-97QMjkfTh+K;<]]$lr4*&Lf%(D>[2O\!0%="Ds`BERsl&<T$3%Ul#\Id=r2b3$+JDj$93ugS<Z#<(p`/"c;W>!H4G5#Bt
%5/\\IDhABE1f3FlmTjfk'8G\e1@d^6)-`uX^c[?rA$deY_?QMS/VL7r8\(Kfll<bmNq/&[7)7P-f'eUc]pBg%p8Y^8)Y!,-a0l'r
%UOfs0#/Rp)=)FJh*_p)Fc40)K#Q0!02EJ-C0J4)1nc(u3]<0em,["S`E;nh/#c*6@q#0d9^!VJN((u37%?1q<WR;5V5.%n8o_4ed
%2MQLY29g=\Q)>0^jj(/h'f3_E06S4C=@NBd2=#>Lk;"JX2(jfcW4?]99>,A8RbLnQ1\.m>EL+VN+3W;3I3"-JB#^+HO*]Zu:-#kg
%V>,2CqW<6C(_e^iaI/0EG[YOYKjB.3!34%MF).OjWYl7P+;<W+68\-elbnrZL7gEa[]4%1YA:c7,V6&ie)nZ(\2E^$o)RZe6bQQ\
%$IDj!2(S?i!SgBu<dsfd=/MGN<g?_*[I/eJ;**+RcQXH6#hTJ6F;Sh/W?R(g]\#0^=Lau=@tN)gj)B*U_Hos=g9=TXq(W2$S:d/:
%2mqj9S-1DgfS%9W,<Zu8L[T:Bj-k47olb]f;%ol3IMPsM:%jFf#jD_F/hW1(^e7u@J[,Puj-Zr4#t5(e2B=gn0COO*Me1E:.(6lj
%6;5>-)dbmPR!+*o+3EAU(_!Z-;b'Y/#Gug#e3T&T2gbdVF:0Z03ig;RC93p.R_q%m2!;n1JdYOH/"AE`(!$k@qI;*DH?uuNYM[,.
%>U"Lr-q>;Z+A';P-24jRm;U%=9TB-_UL';seaZ7Tb#I:CocmQB8u2)P/NsQK*L(U/[RFOZnKIJ-QCO(OTVQZ+V2"oR9J<3)HSLZD
%%s=5H?22U16$l\.c5sU'*nPdC\jCj=dJ.J;<`0eUcI*ee>rs(]df$X)KSV0e^u6N@LA<<;Z,KdaXT'ie?"q!KrOsS"8YVUqi9"kh
%;9s_C>^9PDT>+[`ENn:Q4%$N9K_s#*Dn>:F_2``m*Q+F)giMNS3S_g<>sCLqDJ)O_lGNp,E0c3UhW9D!:Xegg]q!L/H%%dL6SBU'
%-n_+3`CgM#R_\[.pdplR3AG`h<%0[u:!JXOG?)_a)D-$6o4%3\a;0Z<qd9*;h%D+CYmn^r._Dp(&rhL\@@De%?!BB8c>[P/\++FT
%^Dm`MK-WEs0#uH&-jpNub5iJ%VW"e,3MJ1Iq>8!XE=tTn,'5sL0BN)f=u67ZU`_&-R]5N]]-RJ7,i&=o&,+VaO8Jb-FWuK;jtaWE
%R2AZOBPtkK+C6Xd!$hhN/n*!N":E#B0X/+m@:?qeL3?uB(l!uXE#FD(@DEe9[b!2m%%5#k3XisETKN_Pj%R67Bb7'V/uaX\D%S*S
%Y/ubZE>#-N_K=!GaAc%r*Qb@!iZ2b:86(K/<o"k]h5Yu)1?1&-BTHapN`Hs\nqI_u;2s9/IVo&?P.QltTbt+Q_.j+-\2t3g32q2_
%'8gR>]:7lV/?;"C]hV#eNSAo;'!e@jh";B=Z>V#B:fEQn($K)PW_LP+8u3@K,K=ZS*GRN0d1p.=aF#ggra_9"$J1GbC\%agfhuZ"
%@n23^"r9G%^n5l^P4hSnF_X9*]n*Q,.I&C?`1I)LVTb4'eIM+I[]Ld"_c1%1/8.a$%c\MLBGr.'7NTQY(^)Q'_Mj.\TCE!#F6J6e
%?8]IjbmC.F<i0t(ad/n?KEaVk&Dle2PNOksJf''QdcP8PNjUMJSMug,ZQ&8ob7=F+,1DVhZDu&YHPr`F(Sma#1!,QE)>m5e1Pn=(
%cVs)mL8ju(/gS7:+4IJ4:D':*>b8"^BSg,P_/n]BL*E,helcm\$-.ndjk+IR5A"\+M1(A-79l_B9hkai>-T"tDT6EL$AB\2(U(eJ
%<"0nlegaW?K/alM-/Sn_:+E10f=Gr@1tpaE76&$r[EXOMm%!o-Af_sJH,3#_^k4=noh%rWgC<Z7[N-/gpI]Luf[!Fe=WfQ%9nP"o
%qek.7rnaN2Zp1ut:7c4T^hWUS4hRU!Pttpf8&Uoj&:7<Ml@bQ;P__1+#Qi%1)`DXf0Ib4.nRKc7<m?H#cT9N:*AF[aiG5D^5dDPp
%k#T.2_YRHjO,e<;6<b2iE9V0]*Fsd&gYWgo,ilkq`q_B9+>(P+cL>RWg$WT1#527/492>mAR%5=<2QH$PpN^,GC^LW/LF>)`ps[p
%98&kZ[4#Boe>DkAm>1D.>TSQh,?qhd7Xp#Tf-0p>bb-#m,(K"A3XpPW5pg)!R'4^Y\Z=OO1(,'(<f0g#V,Nln"3X4YIh_gD6Ddk+
%#JsCl-(2i">Q"qMi\d/5S-=T)+:5e9E^,G:n:t#aaY44TR)+3_lD,S*7VCcj\;iIb?p)1(CY/P!K4EOPR0D;r;?mRu<IkNlY_a4/
%B/^=7^`Yd<q!p<4"c/dobauN`q%i6?Si>cgCF.7Q-W0QeOKiQ-mZ3*]_JY_L7]?KO.iHO1'M5Z_YfC-e`!RomcJI&*+p&/A'r/el
%_$9gcE]+)$:jE/f\(L.bUF85?E[P>W"!gc_'W^(0Y3\ir-nHB=8YJmk]68H#2'3CKi[9iV15SoNkP35\nLLn.?usHG6,o*MHkqNm
%^-F+MT'/rf*4VA4V:bj^.?\V=)!P+DLFHIX-;\\/CO(4?E2o3Lq$[G)gDKs:R&mc"JJOGIIH%,@h&k,P/<(L;dnh<!=IXr;dFhE3
%G&FG_&.#j+)_a]rblm-pAU-t.^VLtfFY]O2Rf^@YJ<?.;AuT.]=uJ:FAMfala-M&lJ9@8WNuDQ.&DXAPX$qK\MRm7Jh03m$$,ibo
%H0kh6J7:[j_@V3[@[N_u_lOOPJ75@oR#(O>Q&I>2^,U(K0)c1%YubFZ0."qcK=*P:/cN2h^]Ku0s)$[o`7U%`"og4VBJ4Y"c8EfT
%7tdbD"@U,R<d*k(ZA@h0\--RH$\Oh`!BdD74#?'\56pc>p?/GV967Qg=Ht_`kRQcH`I;Q>.1WZ6P/hQg<9h)Q?p0OuiXe:F.F*q7
%P54m9;m]6_.*c=;![[5im7?T+>!Fo2fadQM9b,V<lcjU'#*aiH0q:P`UU2f3Z&TE*QCbf(@2(H%OpC<k"b;-5'`,[slPu_#04j$p
%C5.V\hH!\pk[5dX'A6%]Zg&!1N4Om&8E7^(^d&@d3fjf_.1/Pkn6ep]i'D9L^u$.W403(Y)2CR(CgQC7R.EBL"`k,;ZpcfD23l[I
%*/d"]m4Ha)dpM#U2IGT\WPWXW&S([c54!tH'TIs]%Q*`S1H;[MpeE7))681<J_$f8e/)(/j<Zu('Yfa)R#kdDiUNS-!PUha\W&Fs
%=CN$Pj1mJ`,U-JO"KJ#i<2ag#-5,!6\pp4S\1dG-OWV8;OYCBpmBm$c^h/iLAoi#W5c`%l[9\!d?j5MeB'ee[$IsZ6]:[/63=VRk
%+@D1UGoHhO":CUc#fZIJGlu>O_8YYt<HN:nP%>Sl5aiFjd^TjNKjQ+eA(._$.jP@\AU-TJ`kH@2LD>t`H7a2o)rePGA>W'*@l,#g
%:?^I0:?iJmBe@&B9)c2PSs2FqE+kL$DYZ(B+uoe4(s[$0_SAcM@xxxxxxxx,^_5=2c9qD8-7[CR9Na*LXS[)n@$MediTP#c^htjN
%^U(RXBq-rhG<A0.O3,AQC3&&VU1M+c\H7_n.,$`[NUo[X3GkH,U\$mb6+:L6igH(m`7Sf+r,.)f3Lrnh5WpJiWIj<Of[9kbe:E=/
%q@t]tX+LK*K?Z-o,@R![UeF>uBDCD5msu4f9Jo(%lrs2fg!Ui/@2jCmnAM[7oV?=[1Kdi.'6D;i9:9CBE/kKJBi`=]3hj:mW*QjU
%K:_>]!dE+GK)C>hJsH\.itEM(pNC(^c<fd];/3`,G3sQP;i]5L\8S2>P*9U7FJG@"]g.6=Ps['M#9\O##A7#^;,/i9%N0]-ogk=(
%&]FcFkk)kNb3H(6ia$@kY-n,>U)e4n<215^p`["DVlt1>$cu6)FA0:-$qs.alrCJfJK;'1?N&i68;rnH#7rlB2`DOoTj\$49G8<8
%r-e+2!N@oEWh^4mM<l8)6hA-m7OBqBn1kTuQYh&*F/*l[)RV5Z??d5^+%/_9A8ND]bN>4k=9/2E@q**S,9C<IY)7(TA2:iaB\P@;
%+%rbANQ,-5=nh2Cf),m\Yk!lWS*a[J/[g]a`a5S?<3<AeU/J4-,V4.J9aVA>Dj3Aak;EH"JWfk]<33WKQ'HgK)#@&qRNcZe<''cX
%Xs/\309i_J[V!7;%!Js?:lGCNm,O:Q%2#h&QYMroP4&(-$^Zt=oj_@a0$^Q\3OXE'gVmMhm@e1-7=sTDoY@cV^>31ZYqK]^nqjCT
%3p2o4D4!A<D>2<[P=j&,A3Q\neU.i#`>Y_eg6F+u<lh4QOS:RffIh2s_X/+2).G/7djU3t"bHREJMBh]n]/FCPVk3(Dt"Z?c>4lt
%$ECnsC7-d/G+@\/:ITGo@kY=rWsn36c[5o4mM$(2Rs*kKER5ZWLj6nKR$)$%FsX`JI7q;<C+l^36/78TZ6,.N1]A"*&b360+D\tT
%p^pgeeO!rWETWm1Zu1aLl.iT-IoLKuT;,CE/EWJV$#\@)(1r5#FaHQ$=n]Y6"Lbmo0$>3LrB.$(N?]*b#mAkD,'aO4iAN<u"F+WN
%,!f\e66ZDDU%K[&5oF'D]/"@LSk5#!GesI/*NS!lCk4FjS#Xa!]\@L)!c5Y^/Z@lJ*3\(`p'$fG(S#EtV_`9L_8+GbW`tFt`b8;Q
%c7qRs!h8]k?E!'k@bX7[efs4,A`QC(]ehN`5oP*pO4"0W8'/!2be2\<BI2?!;NXWr.CpiZF`5hu`M`qcH`E:g;(R;:nZG;L\_#I#
%X_b3+mfPe9'GEHk@Ks/>5]`eaVTEV@L_b7KiQAB:1iU0s@[iQokt:(FQ;1JlSFdkkQH$k8k*+&VPdF_=J(iIMOdLeTWkHo2+@CrY
%K'p1'1'1W$Y`H@X`L%:9Q'Z9Nm^p!jm/`30A[DT!.YstMaI>JT7QSbU&tuh+fq0X?5;d<kHQeUu`obu*e$A]@[b,T<=;e&6h*?q=
%85X<'*+lEQ2JpV;'jTfmOJlM]bSU3k,AqVe@PQ8hWj\uQkWVO8HB>eWYGe8("pfopPO&LH6K*`NRROWJc!h<5g0@2U'r,TaIj!8O
%L:Wc,TOcJ!DT$fKgu?URlQMoF\HI4#.WkT^on,D?J%Vp%qrA!cmM&8@n]!r=7>MF=Bq"1I?$XF4]2+XK@$hh.SaBrBOlZ^GG**Q9
%XfD.##okHW%bkU/"uO_V,[dG+;tpP,Jl#=Z`+U_gFL%;bAoD6AAu69Plg_\kDsE^Ee"UY7!WsU[E44so<M-M5qNTVAME;?P9n=4]
%`VMm!OjX91O"$rD+d`.Qp2[0.8%ha@a@%U'q5Mef!uD_0FYS/F+O']0);FSBF[uIh9V:jD[2UIYY'Z:%/gs.2?FHN@$B,bRMiDO9
%JaO'QZ\N0[L;T)HG^AJ^%iG1R>!-\!&F^28jG@!E`EG$se6hMmYf`_u_DeNegI)eH40$8[\&[GS("6mn9-#CfrG?,F8'Ok@PHmf$
%,7:uH>."@3naC8I*7P!T`(K+uH2*BX/'J1>OJ%06.HXbs<6_QZVi;hC\1%:[OFl+)jf0mkm*Hd`e<XkX++OokmI^j4Jb/hu9a7)'
%PjHSR<UXH+C+g`C@(+@DEAH[KR4TL17c^!1@1DA02A'.KWHKV/5dD+>?^4/?BglK"8:f#gZ:0b,hsa:pIMeh`JU<rAJ&""g)_B*+
%B=sLY2Z*A)=@R/\?ml2sAPuCVH*KF%3aC5/pF[uMOg6n/"RFEe?M;mM+[;9ZS->gqG/hT9c`,P)^+A&=1"N-t9lHrd./*np6m?9e
%7Z%dh3!$3$6r?f&$bV/WZCZ)@cr_gZm*uA]A\kMN`M<hm"kZfYic5=3;s6!$.,LV"T<%(P>eii8W9sD>+?.,ODD$m'X^EGr]dGMa
%`=rOO!hc(l-B0D_8a`"g2HI*0l['n#FJo5[bWN*$p%uZZI9K\//0FOO):eg4F='4YJMocYBBn*iVhP=A8*Q-l!4<Sf=KAjn[5chL
%mQqXN%-!D1["I:d\2>$,H&,9cR^`CGPQE]DGW8pWW]*cILlL@;N,,!bXItsfE(qUuBKkO=h[D/,LTi`T:f>54?'JEp$AuX$!/]sn
%dSG%=mX%D]\>1!>8Up53,jj@]))W0("#kbS*?.rp%Vugh$r8&^;jsB'*5MS*XF0>agQItVXQ"RQ+IsgDMIFocXtMIKXFuK9V5GR\
%[1)u8/Z8EnD=J#J:ne71b337;.Y##fIM7A5.#b*gRH&AqKp<oG-C:r7c-<jN"tf[J,igd/\%Ig/Rq;1[<*c"fY5@:u[?.[-cm8Z9
%b!Y_I:o4mq\jJ_af3'>2Bk>.a=_,TSRa`:`_lteCOu*u(l%M]M"jUSniqTl"/B\$^Grn6ZH3/d5JVnP=[\-_8`bs-0p6)=JeH!/)
%F=?OZQD%72phWbed'T:uTNPaQbiUl7&I"8n`Y+YJ]oc#(.MNtt]'IdL_,p1mL,K\i(6R+P+_T0On(&p9f$#_tMIg6!D-^s;8d3h<
%WZ+#i0L$C\epL_^MH@2QK/i$fkXM`dh-<Z,24>[=gg&H)N"9/X2Q-DuH&u?Pi&F`']p5+O_&;<]Y^2oYeM/bQ<.o?!WjKP'qB4cn
%1.b5<e(=Q.1BKr;@)t,4LbIXG(]PZg%S;PQ7#VTI'5#)k&OKo_)N%21eQ14gg4Gl,noN$2gL<uE/T!.W#7uZQRi3l]:BtH=<4dbW
%29.`feGDcI$j(jqaF_ts3f!\+121YWnltZl2Q^D@""B^PJ<,m-^UhsUD22)dV41E$[B*\WJO7b?RY2UDW(JYcP_9:OINJpIL4kd>
%24,Ms5dbBuGUtM`M"s/M+k!n]XGE[hd2Z+B/5OSD*Zh.?QIYBAfWERFkRS?u'-fVVrL6Q\H)FWLZ3Y8U$AtR>6NDqXe?<'V-TJA_
%*)N&jOq,3VPl$"d32.#fR0Ng8jDhup#aVkhB6.o0]oPXqTU_IlHc^h/Cn[48TbBC[6o`Q!guH>6@hBS-Kh!LJ$B?>EOFb1a@$9c'
%j+'7MJM'W6*.J@aTu/5<GMlrPM/I96_/bo!-VojEW5"a5(r1Qga0:(kfn9Y\T\[a\3oE-WAp#fJV#H^*+ptn:,O!0G_;6-N<&jni
%B.e4L>"4Ghp"A)'rDnnCln1q.faSi5UgkDe:QFfD1l+5MQ)SihV+;1?q0NPE[Y\D,`P$$@6!u;d@IF#'I4#u>W&`>CRXP?i7hc3^
%"#_@8FSEO?el%S[<\0aSp^%mj$Dd]2Y$jGu<U/[X?J>hH"EZV",>\O&B+mkA$kD3h>3EuP"]%?%6WRQp,b()4PCXRVND7\p!@Q9>
%i8bF#Fh?P);Nr,QFhB!9e@1;_5b10D"_&0=j9)(kTiM]"IcJg/M[7PbKag>-'na"7o>04Rm0:JVDfu3miq1hCQ94ri+FI@E<6bQC
%h^t,W_\ZAuhM7pT/3&tD!"h[5+dRMAM0s:1Q2*^#>C*)*7EL7j-"-pV;jg(u3D.;J_WdKRO4k/][]q:LBnd)_BKkHFq5nL3Zc0>N
%Unn0Hpp.MgK"^'+H$)B5VT5d&0-Q)k3mr!m=]_*QVb//:S*Y9C`1,1\U[nLEGhg^\aq?G83&t3S7mUXefP16gZ\DLF:pY^];IW?i
%N!AI-XCF,-AS;QUehUCo`0\"UP^V[6P4"ij6:_n;P67<)^l*[bCJ'$<9)bS&!=+a(&`nZ+AZ^gWdEL?sn07T1*_;aAg\7:Uj/C)X
%Ch8_85LFAq%<HD_!;1Et`,=Y'=flFI.;G(J<S'1%bVdI01S;U(B0Q8OMgB690>&J3>ku`%FQe>s*iZI`'V_pZd.brs"cXnX,B]Q:
%?=4]oLS1n]3)3D&_k.d%E&`SW*mN(Sg+@!S8amc[R869:(8h2uOGZ5VEarR9Ai'U*g?^0]V4K%Go7YI,".Qtp"s6?^6]@QE/M5KK
%#TWb=hb=#jld*#EgP=lmALk"^,aaG73\+2raVe"C0BN6@>0XPu?G/%0<uERIO$jZrLM,XuVL"R"+?Wqq</T(Wr[4U+R_n=P@WbHm
%3@DQ"38N[YcRCeT']88@^:*/@bd\>"dcKsjOc6]JJ2i-Mf2T^l!2V&g6rIeE.-uip^U$bV-G`8HCRM=tVoWj&&UC+YXVJZ%P>!c:
%,2[8<"V+[*,?ZHn%\<m",Gg+^!Slo4iKgJi<4`flA^r2`9IID!gC9J;>6ui>WK/7',3mI4W.<+YbokD;^n*F\3YZ1^_+/$k"E%5n
%+;eHqf#,2MNX(mMI;GEOoe`%k@!gQ4@kgb-^=ZmT5=<QK'\1[[j[[q,i?HCl$bfKQ?K7#0:esQsCSK%3HM"#;^/BiiTRDL5[qhfI
%Q)#/'CBCY.e.nI^iS'PZ%/ni<8[/n41YJA#i9XIuDQqCHHk#GgWud<ic,4(pX-_R/!sZ?]e^1g<7)5b@F9isZnuW#gY:>\;@jB9o
%nhaLqSZ#TT]OO"UTWO(MKOpPsnXKq0*@?<nCrgbsCLb=_M?sjQ'bqX>:8iVe,)HE\g,a0eA;"$n_QOgX7M$g?'8("J0fl7*A0?k"
%/STU^E3!d6MK9,HYR#ARa^%AHXFk.7f"XJha)(td"f8j'4:i8h9U)iS'T4[]M[=uJ#=BRGc#Nt*0nP'0)/i.6$X]f1)4B,ROlTWW
%P^@IGUiq[oY7'-O9mZVW\K*C+"?4qrZ?3Z-9]&3p=&Ge?!Mk1fG!C'CnK^FC##h/"EBP^?5ibJ6"B30:oM4dUmVJ:mS'17295nkh
%Ya8s7/1dE:>M;QPl]<g'!%?MIia`4DCDk9"4=Un3,fsYP@"CqVs+6>`(](K[mUo2L.2<-R%gAgRdlLd+Eja%PlU2Xj5GMW[d(cZF
%pEh*`(,*pkVTR&lTji,PbdorfZ>/=JC-CiL0o%0p8>cX.h5'2'q5BJtM;%SK'\+[J*t!>4q(`?$HO>(Ppi/24)r?*`Rglf>5DE_(
%b`5S>RYjIG;447Wi$95Y-/V5b#1cbq`F$To/WA/'V;Wr57A?dDAIN*"GYm0Q'<]h\(QL$P#,6c,OdkoGOG/ue!R@E-7].M0d:">h
%k@/pj%LkElou_1.E:#2n`!m7(cF+bnp=Fq;/+QTR2MqpH]>P_oho3SLl6[/ghp;+cS_k]C(Y_Jkr,!>;KaC\S-3orOG>Y/QUJ4#h
%[hr3LA?.++BjjOBo2Dth)nlI?*HLNq("8%J2p4N2L/SA_Y(<kBkmFfuhQ&V@L+/8g".Dt=^p#KZX=H"E6rldsGk>`=!--^%LiEqV
%X`A<@8V>DFZm@BCJapmCZ(6Tu3Vh7_'Pl:_ci?6TnZQs,1h&:#E=*,W@;S%X9/[,=crBK8CmE#iO$mt!I[<AD4>/.m'3Z`qP!/>>
%oUht0bk-])n2bCd],>TL`-*UKP`[LL6ns"Z:)qt.Kb:cq2Ybn>,ASV;cTd84Q/spV"=BPk+sZJCJ[n<Oek].6R7bO\8;5]dYm!i(
%>HEOLfqe$D;Sfef^DSCi@uqs=g5dF$nT@7rjUA:c-FJ]fcW"j*e(`eo;jiT3ip7iJ)1`ST$K6Vr.>fU!a*oOKapDtb!Q@"(<ZY]S
%h+.nDPPP(_A=h<GOYuEb`bo7WX:#R`XN#k(d`Ge/?YKS5gR+@fZS`YH)<qJRfSW8[ku0kLaE,>sr2"rX$;F$+j"nsbE.ltQ@A\8n
%J)F,EBpYu!P>;\/:$F"e8D`TGjMkc<Z*t6t`-q.c+9FU.lEED4q0L^s^=B2H@Kbr"3d'H-\-pr7&WQ8%p^>c++ce>:*/=C0R)sS]
%4baBeO@slX?%s?DONi&ZIKh(FOA1%2Sq\fHOO&77^'6^QOAU@9hhFh\JCAl(s+X5+J5L]&+,<POOOJU95=\uCOB$^=@#&RcOOkLo
%^dGh\bUefHkTO=3_JG9(n0).&@b/RFr0X[;@J5I+!23jeTIb'4+:.WI6=kdG"X-i=#dkDM3Xi9*6_s,].RA`f&[Au:/4:(b<Wq\'
%(F>#:2'^W&\8$#ra``@6*]G[4:cII00QL#8$'\(LNK[HS,udVG'NQhi/>6rS,k,j%JpCFW$.WU)8i35V9rMuOdD?34F$bSOM]0o1
%\L5o%$2&fml(CRVkc.)d-l7RU7oqjL83/3H=M!]NL"]8i)G_/,W)u&0e<mi2;2*_(TutnS&M$i,$?`d0RTtu&=/b_5d0'jM_ZH[>
%M^mCK_(=(s]BGuC)JYu"g-qD]<,i<=hQGROJW=!23#@M%`B&19in[TT03$@-2"rX!Hl"BL5kXT?&/_DRL:W!RNP\630[r7uBI&=Y
%MNRJh7A]OOkSS&!L,tG5:!$4[1/t7^<@pT:bDTD5W2gdcE*h$T0?Tl;#&((S)JY2M.\mm"dYk\NW.Q![VM=B9Takihfc$m&L,uOT
%c.Gj"2A2aD2/>R-gK4dVU7*#Nm"S]V(Z!q?"H>h@=GkfqK(2`%2gFu8@\S)s4F+cUc%V9-5h\s78P1)>@;4Ub\lJYHfrL!$U;*ST
%ra!ui^WZVf^\ju1FPh?dT.l%jOcWjh@A:D5<WZmVK`uO+bf&;*LkQN5F[B\9a8u\d6Qrr&_F'209*)Nd_Li1U;^&d<_Scda>9UcI
%_?Gj2@j/VR_F9ArCE^I[_M,Vkk!Ff.`5W1QHSNS0_?Z$uK-A;)b!ulMM`6r3`/'AoP9J+)A7U#W<nWtX03-K-\#7*]\8b,.ronWi
%l@mD"nm4\<m$19a12d8TmY/t+;1Crnn:aYci?#b=PV8!X$i;rY8V_]YOEhjeZnHgp$hl_nM+<6iOF&%2e1Z4COS^*)j=cJgOF85"
%oHQj*NVssa"@S[[Z2R"e<,b\l\0rI&=pZ!NKi!CF<,8ul4+o'pTjGZ+>N2AE&L^[be1GQ1(nkP2XKN4NEJ1>4Tu'<u"qp0T>VnoZ
%4d&XPjJ$Z-$)3*q.2S87:m!&eDRl^Y"F;bqDTkOZ-ISXqQ"t7U2h;lBW1.kYfEq4q!p-#cb"j,c'IX2l<JCQDU/8JcU2q#`,),;R
%(SrFWMstSO.M\_V;HV'W]Gi??:H48s&AV1+^p&]^7lCS%G*8l$0"e8dm<Je[/k6gRJ9Yd:f0T;,X4l&lR4?^j$MCP'AZUfA<iEHL
%;<A3C]L'<8M`+\9,5//u(+PNe)J680fgQc1e5-PGeo'2XTo*'Mp_KmIKfX5jc+/`r?)V:X;8!>Pnj4qAMsaoEd2/hY?'P@5Ohadf
%n=i$i;(2qH$mY/W:a[tu</ed4M`^Ti9eMc1q"Y+7Q>^f*p=GRhdcCi`MH$J+$U;)q=a/uM;!%7R%eHEbGuNCTof*'@c;<[[<!9n5
%LPAErOX00k^%>Uo1fQlVWi&<QX7(qITlt4Qnp8]9%CK\5S_8oFm7k:f?0O8s`4bBt?F4kX<SiXcmmZV&e-5h(*uq9hLO-nDG&aI%
%*"!ls[?EtGj\V!udV]P;SjPs1X*XE]_r3&'mjBQ)`/<#f:ndmuL*WUXW[%jA5;3(OFBVd:MTK2_'qf#?8OUWqa1Z6m?ot#pYsIWi
%qAG3)=,Hr5B?tT1oO5!cNQ`na&D4o\):a(S;9U=@X[$k#38,@)TJ2d2<a4.XWCMH,6f$Gj<G,iSa%)pO`(2&@G3IgEe"Q`pS4t,!
%,r:>G$M=q$BYgW5eldM@Gmu%=Q88+lP*8$f)B[BKM=Hhc^kCo/P?PL#0O)o&J07=S7]]<>@%FSZi*^;K"ptY!k^YL?_Q'60c%%J&
%KM]rjd1YBPOHj+4NiZtH'@/^O?iC0j7(X35?pnVMFUcj1OR>0_WMM#bNbMJ!DhHP;)&1l1dE7uKM*[8_f:Xe9,=dh\&<</k+)SrX
%Wj&d)A;O[-\meR397F<PD0@Wp>*^pa2din0Tq.m.ko'c.0[JRn6'c[@old,@m*fe.AqCi(K4\LMVB!F3r@EV>eOCUU$0b11dd(0D
%j[nrIA=a`c6mYJGi86\_jMa<n(>rF47)DO\P\MX;%*."%p[ANj/?5G(>Z<aFg/:K]Pf;o5>A8j`gImaJPIi&=],-(LBFP$]X7M.A
%lP["P9L=G(,['Y)HpuKh;.%UDc%b_IcJYoL]PT03_Soc/""Q$_O,=5o5K-g7\?fAd<&88plM;F_;iKX`3!6k]#N_u]aY0bZ$,Sc>
%-<\R`@2M,E]h/g]rda.)Z6s,f!(b;ibodm$fo4&oduU/)mQV8J1&G9>#]@b3:;$Z?de.!BdO@('[0R@@EWAV#mSYB-q7M;ZVZ--H
%OT\mDLuA%\[2Mh5NR!jm04)<Y[LY'pf7DO_80]"5deH`8XtM#m(NSX*9F`)6TZlPt$7sB5.hnd)N<G(Qm>X_G;/$QK0W5h%b/u$B
%1p?YI3Nq%:iaY!E6d3!T,X7Dan`4UL1bu3'@;.,tT7>/!+31BlO(XKB>$RUb.u6SrQh2(dAYC6@=>PI($(AuZ=PAEb?$##2A-XJ>
%]Q@>*(bVmgfo:%sT@bm!`es_CA"-YIqNQ9iCFrtfG-aR4A^#L29HLk,9'15>&>W^IOM])9kk&;?j%4+$;e?RHQsi+qN0?Xhc8]r%
%0e-Z!BN+KKm*ddM>b]0urj&*`LW7c241>>Z6hZaiqVF9XD)+nj#<oT)bsm>Y]<t-6AMK7/Y_aKK&aD=KCgcJN#TR_P-Q,r'!5WF)
%dB0DF8WqoWP*uZjCH;od`CuiPln%U)LbJ1a&/>p6W.j@$7Z=cTE$eAJMUPO8,\Fm:+E]bWYOuJU$fVW2``:,?(G"G>;ESHTSEnUS
%)I]mB!N^H868;1a>Kc?mfd-nr>40pPij,El\:i=m/XaNfaUNF&EoZXUFu@p/=8\.^W2I)X%?@9g!9U6&NqdVJR2Z\n6h:E>g<q@;
%o3h(mh3`pT3S$=c8hIC&o\';^8L7UhQcr2)ZaQLsm/^'`]j",db9>K:2G9qtO[-+HfuBpfFoX&$O<B_@DWnoIB$]QumYSN^^l>cm
%MG_UE/sL.FVip842[=[9?>a_)m62q3ZO)e[9<$FO=D/6fThHrWK'BAhr->=A#l<Wd3n-*DK/=54ScTiJ[_?l;-R<Cd<BrLL:&,ep
%\9'Z7P_FNa+T2d_8RmRh>`s4V6#<a>Vr&e1]%a]D%*bN#F@,P@xxxxxx`8U1#MAs)fSRP[?BrM6giP\!/?QGbGZ,TmZ9;]pd-44L
%^pi3NJ#B#SS0D[o,dY/JRr*`D$jl:8raYCCV&k.1L5iCN=#k]0jLZ:UWCR&q&buIPAn?+3h3aRQ0rNmdg(US82`Pa^L]WhTi3nE^
%@6(1YApOmZ[",cFE>['!S8b/B+g*T5?Ig-r;`^Dl9>Fu/@PJLCKL`EhFN;<.!7:D:7ORiD2SJhsr;L7k+D"]l_GWAH-d5Q/lJ.+o
%9XBqLUaM]N2eWuE6I7sh#'(CmP(fQ"g-G9c37iZtAZ*hQC9UTR9N^/(bTK/J,\^OTDR:HI@Y8?jA?K0UY>%eG*[ltnrfg&Db#jTn
%/uT7cipSP(5"u9A#b??>"OGUT4V]T25sd<emjm'h5$4#s9p3r':_TC[FR5kraZ&FC;Mq"i0Nf`bcNQ.^0]+7_G?t="d5pL'@>^1>
%Zes:+1VZ57g"BQ.*BdBOPa&Rg40tle>01#7KpKoG.nL8R`m!EOOCB9j=kaXhL01p5WF01lAn(kF9%eJS0F<k9<`J,?[H%QN\;nBN
%ro8F(X"\Mt4^Fud-HfPJ!uGXN;)ST$#Ua/7;/\qB-_fY^TJ90R'_$7UT84(-eSR;O1GZGOND./-&?kFH.Y1,KK4,#q2F6$FlW011
%bJ62q\Jkf?pkjN7`j]<>-CWb+q?($qIUHR)rE.;3:Mk;Ugped=gg#T]PKTs>Ck<(Y'j__EM/2mjZal__2?hSBq"Ltg`6g>dZp%K`
%Q2sk[Dr38$d0(!`/[oINgckA+YiDhJS'Hf)=W38DW72"b&M(-ejB?6@'fHFuZ.2Q'$R44<Oet4Ql:X,'FgsJ_'HcZnLQP0E,0psK
%5#OgUcCS4ZiO-qg)cI>K'iUA&[H'MG<Dagf<AZS\](!-2nb8fV=/f=6N+"QiP="%,?mZ@?WB=L.(4\.O0ac)FY\EHBo@AJsh(-ks
%iOLX`[]::;ocRt_6Es<L=S1g>P[Nf2cYPPeb"]m:BkIB4Z.O=T9QER&fF<^,'6Yr[Xjk/u)orYtXX-RW:4hQG]/%I*4r/fG)hEu(
%.`95;!K3+<OX4DMIu6MWB[usT)XHUD^WE>+%Gk)b,O*`\VDXNY%A[>a,-di7Cb._rOf?#bg4nUrThoVTWZ0+L?DMm#ZG*"4n3no'
%9ia6<+218\LU+pn!:iQ0q')m[8h`bUc(VLc/-:53N4t*@LGI@LXdXa/I0TS*/Gh!KDq2*#2kXQF)BSR-["6HM:RZ.o8Q,hoa+t=T
%<REoRO/*Vs777^b"iY/(R)jN&]Hr%;"X4)G]Ve?gXHN\6O5)(XfG#?WrQ*.=U+Tmn8G_E]NOjVo%C0b_DG(e5&K[8MP>YTZaP2lc
%,.UMf3,=N/eC9Wlks4hD*<AKohhNm&kI%j<>;neKj%u\?[r)8=An5BM2=6jq%)A-mLk%=&0dH;<\oYNmUo]Fm'630'Z8/1J2lkV(
%"5QonBhU4TGcO;TKGnrpGm!7R8l.nG?T#.NbK!ncm\WH`YUF$p;Q_mHk02"R=f,78>sfWi&c7.-r%+iBg4DH#TmUVP,tLG)Z/Ok;
%JpRFs_,o?]bH1l'nB!dn2Fnb?@)LVQC/CJSZ/J898=A-J%5_O2";m']<(E'F^ZNq\S6MAO]4CJaXC%>:]]KjE]]1;*).k[g3U`7[
%V'[jhd"gqX'(MQVcXi;X"kbOUS,b!:3'Nd$,RB7jS!n@ks$AGG%X`;f1,6(hQRL@a_eKLmSrOAZITWg*ZGC5E\PV$SI[9D1X]-hb
%ff@:f?8l"]fo4#*M31u^QV;"YoaLGef3BeFQ'mnJV/FMoA1[9_n#PApWE>!"@l5aQj:gZen4uojUV(@4SYNbQM:<1iRGOUp_9rAY
%NoK7oJb,?Y.5ud?X/N`B5(PXRO__cU'JoLe3K[:kg<iTBH\LZHVuLkJ(%mD%&Q>XaMUijrU>!?JH7!=0YnuYeWWfitI\<,QTt7r2
%gR*@"j#1YW)I5?hX12aEn%H6rSU`1elRu*)2P[<F$7['!AOm/t&L)uc83fmA.1dk+HYDpU/DZgU6$jLb7Z>-!l*XPU07uB%q0"A!
%>8f4!Xk9tQRV5Zrf<qG3lFLFpdE8[<i0,6f`DtM^@KBiA,C"pTRB>#m1T;J$$*@kj\Ga$f<a^.5!MCGUh\oG!)U7g`bRB:T8g1fY
%1)9l+Dl!3nKghPB4es,U#[h<<R.A"pE!I"tD;T!aHO>%Se==$%[5t.*=H5Me$\/+F;og:'X;aJFW]/(WNC%u5R\1.UOU/nX-mLj6
%Rb]"kAGH9Th6t-b9FIsLjsKmp4-?orMj%L1<@TJ_9K&;Lkfu"Siu0XIgq`aQD-6+o+.V)Tf7Lgh7\CCdBapi7._qM1OLkj9afF;7
%$cjjJdP//hB/ZQDD/KHtdiSM%PhP*Rb7d,VUF^G-g2Q"00j5JdmV5sfR/upo1MX%';lNZR5WO]3X%<UVW(mp*J5fL;p5U5l)Jc`Y
%dIJ8F&>[fqTs$$k9pj(rWdZ;H!A^=O)CH8(9:>V2dfC",P9<o+'+#c&-G^rd>fdGsB)K#$_eu-r^X*C$5c8Rg(f)5gJ1B)oW!TTt
%F&V=/BFI?qD$VQ7L]i.l%o@HjbSmLQC*`ucM'I#6;8X3S8ECY$0#(^/41;-!*%e*_,B\L&1#-.V'PL[/96:e4A9^=FTilhHB`rm]
%,0UM;PF-%sZahVr4KB58Ehsa`%#,d<G(WKA*uT]*bRV^OWq'?8(]Z6i'PU\W'$sFW)]RDQM+AbboH`EVMue`>WH7JuTPD>dG'I.(
%BK*.\W3I297cQ!WoL\h/2h3^9JBkJUj=s`,EZh!t<5P#S[uW52!GL"\XF^R1ikPIp+VG&eQi<5uI(W+,?L-n.Lp"]fQ)`")V$99C
%%3:u%<h7`@[;M!\7O^I.OO*A3*s'cqg4%*DPuoqQ\?-hBk!dFs(cU9MiWAQ8aMo!^fP+YB]cQg>;\6MN(KVi'90rmGip;>Y;<1&t
%cIU5l$QZa8ZhNStL@/Pjd!n<5Ik_t*J`[R,;oOnodu@^1oKT2'*)*K\hlbE^S?UnJp('jaAX[6%k7l*,_\7+!!5qrAq218!1W$d*
%!-t[bKn0cR=fg8UbM%2^o\UJSkAStk*c;@(>K@=m+ZRW%6QbV>#Y(.,eGmJG9";\\fVl?u-hW\A.Iui6(qr?+SfN5_bX7Z"q%I?s
%5A1:QD(RC!\JFO<MCGT[l]F#c?C5VH?B.u2mEQHgALdK__`'K-iSs;Hl"lTeKhH\pTSJXIkr:SBp$;nUiK%2+<?;LI)^<iCU8a*%
%Z1_@HHmhE@(/CFWrS#D=QJ0:G6hi#d7he8'8Krh>BaiNHkkHQsC(n?ISF,tBh@Z^Fj+;c:E"Z5C"f^&.'5GKj[Riapq'T`(:J)>2
%[Sq16F@!PAn0BXpPj7nd_XA]\TebIY&VeHtkq<bd9/@uD@'J/(@1o5"@:`&0_@B3%"CNp%WL[*@IV^,AIR?P/&/5/rie#@0+WTrI
%NrTpccd(oZFoi5S)OAMaF(sA-U9Q0QL!D!kq/Slp+D.S.iCo%r5S-u1PoiA%X-6I*Enk/q$6Y.).PPK1:uu$uUu@RXp5@os=G@(h
%(4S+rs)pAMrc[t]6=2@tF+:S^LHG=`?2kGjJB5]We4Da.W8`TYFS_[JE%kL#S0*-4Wi3+eM7aBE1_,c3qmXl&n19SqmB>^MgF0g`
%pn'6Y_`"mi$D`iE1I[FLpe49ok4s*e5c*TCeDg#c%Z3c:&qj#c4!69*XQX+P(rR##_T(gMh)$hI\NAFJ;V0[k+P5ciUe^*ii9&b]
%_lc./o.<MD">jQNo+i[dO0m7t3-q#o\+;aG*+ikYM6Z)_CG*+:SSl2'$,\PT3aY\ZTb,c2]OQoqE9J[BTN'cI&_fPF@[/YM:oe>!
%`iM4uqgAbL"C8D/U[@Z^?Q=^WJU,-`^1/*L']]]W8N_.mo(N^<BeD_"7LQedHZoto:$,\uVQO!h1E@E+4CTS<!.>+>#)<38l/Tmn
%'K#qskMdMp+7='lZThk.)f5g3\M*?^0<Ms@VVmdFig49;;-3=uIsKE+4D]n(l^o6*=q@+.?Q6K[c/-@Hn<Xp]@Cu?>1&[r*IG"%<
%Zd>jT6mE"[M,['_3=TGob\"!0Pf7.i>P==S)*nVal-<=+"KUqr2lHs7f-[l&7=[$WOQdkNH^0RWjRt@!R'#'oFHOGT:PmSm$<aUq
%9!O8oVZpFJJ9K[H=J)#nY,'i=`ijOB0#=7?<s4CIpJXcGk'K@fC5^@hCb3]4Un!4U:5ZT'acQA`;WtEr:2r![b$=sQPY;L7V'2Tc
%G>ZZ+f0X,CTSNIVr:t]Sqq%H-`)mnERu@0u7M+r&Dk?kSb\2=#B(tA+Wf%JF458ce;g@NuGs^0_B##\P%A/+f^Z"3SR*?3!)<!hJ
%bc#n-2KOTuJiu@dF9-q>H.$P#)3#-I:f'(#,fFBn[;[u,WO=AeP?.qK)=<Q3K3&IWF2Q;1*;;XabI@Ye6S*J4)S[K?K=L4[TtNm9
%+hi6+%u"o>"?;#C/iZ#XHA[*,iFduDqY6=ZCT-S<C;>RMZ,Q9hL8TYPUukB0E8YD*+]h]8>!F"5WLRJ,kWj,m?Pf.Tm@_S,2j3U,
%&?8jl9f<)8^%^jp,2JB=mt2I:FSA?.e[J>A($]BrDI?_)GAUL<M_mdeE4DXTlli3c6ej5=>U^5.&DOlFEHH-'[uWU=/dBdQ_qY^%
%mij7E:BS/(5YG>?h,U$/@8j2ZG%Yu\J^M<A%7Il'To6d6,Rc5B,!NJiooi7:TS^K437?(M!=VH`.lD)>D/ls_I]8h@T)7$.OpNEI
%kS,^Dd7tE=r.-44Q5>YD;[0JSET-JnYj9!;6M-l(FU#H4M*>@FHe06]V90blTKl!gL%(s6kGY9EO,5-sWXQD/2PN0N\</ik^>$`\
%/q/HGE9'SsdjM)5j1/[7^I%F];fP:rMD\-&#rAk4*S$GdeIAE`[&g7]LFS6]"*Yedr992#"BgTgp-i[!/7L?^?\PMWh*;#kWhhCF
%,Y]jrD&00s2P1K.E8pTcbr%Vm8VVY\oX_HL;nXj=<ht9o>RC`mWi%Sl?`;YTR1(klrCs!iV(#]F0U5:hM4*pVO.R%Nq2Dl!+F#FS
%;_+#f<YN*<M]&p#_;\r<T#Y!(%`"Z<0_VW/-N82GGl$)9bunoBb>&4*?4a@Gr`'D+_St\]IeU4*lU+\JdH=Ul(GKHjTOr:)?l^T(
%CWkq&5qmGcD2d88hVP#'PF*fpN::(Zef9E^*<c$u-_o4XrTP=r,I8J,p2dK\U>-1$^uZRmqIr5J?P(K!KsCa<pusBrHh.nT)U$!%
%DoU*&JJn*9KKr.Tbr4r0Va_XE,5pua-Q9sF$<-t9pe$m,AS#^:`sNW&[*lFE>W1rp-c['a0)DF8.l/k(_+25FPuH`hDQ^(3IHs*\
%5bs$<-fU<BE9fduj#Ng!]+F8'(@$_9fQoOR&P!Yh%LS0%UJ?h`Th6NUk"bnMdqNkTk!R$Vi`d&3`r&ciKIqJFP1c0t7[C95:"\E8
%^LKZ.SLZ9pB2ET1M0Q9s]kHQJZ5d95m:CA@Rq)@q/?kuc%:L!E><5gn[87^l8=tc5fVs%di*<+sUPk/b(.c]0!kiHAeI8q"e$Ru`
%)L]^Y5_<Dc<EsJ!D65]/,]PZ<q#dfcPt]$o%,[JG3H_o/]MISo9`5t;q[%'4WO=<6bQf*@.<QWog,C:[5%T],%Iq,5/F^%CV$\T=
%8$\KU:N>>m78m9f>NeQPj#fW$q6\p3JP>1tB7bsH[+J0qr3X,$RId/W!l@=LIs(n1ESegK@VT4Rq3Vf)bj;^8KML(pjPfL\7u/q?
%Djg,kR#r>O/G_VLIWDWT6j.$PKXYaQjBH7=M@UF=b.sTjQRn7Agp1U&KXcnM@.Ic9H^'`a`O7%:$D9+"??IZ7*L"LPN:3sU_dOTH
%auM-(QaWDKA<tt\KVIt(b-p&5Fl6:l#\sq-lP&0>eu^Ss:ff.s=7Q<T5U(`<f(57.2!i5obg\#bTd3Vd?53cPKq_\CI+C`$/!T/,
%#^D&4?]ctn76iC<)nQB>"VPEk\[-KoZq*UP,.JDHZNVOj(V.#51gDFQG7g>Q`9BT+];t!u/<:SSl!6^O6@ljIatK(Z$RGiV0u8e;
%i'jFqPV]sC+,2P-TqGjC^).27L6@Q5q8\CmA1/oFktac@Q(b#8<W4b>ap^]r"9$J8W\Y@^]]aj";PBe[kXBkU'IjP;9eZ(8eYVN]
%l+Ys.T3,FPT(7:HdNAEqC%Ye.>E$]'mi!5":12:21![d0gB1Gm$=>36mS0C1VuN+LdVAMhC6M^2@C$mmfpJ*D]o/_h]6B\g?sVc)
%f/bPFB8N%&c'qS$p8ZF)o)LKQC\CM;mZORE[ZV#TDsOlL`b>j)(!JSKKL?Ph?t;FQe0`u-6\>fTj\/;BjQni9SM/a,rB+2D<O5DG
%R690N-E`lD``X$$pu5aVjg9bT)/-Ol,K@-r7C'O_TP:'`":]h:J7<o^>B;H^g2t_0h,i=*%n=1"=5_slJQJi)-4'[^gXWt`l(`-$
%AI/_7j6nEmSW+D>)aI1`UZITiFIekufgrd&G#jQ0#e#q@SK>_/jTF]ZOa`h%9R)3b'UZ._-=Ts'I0(r8$l:u\88O7/'\[;iOX`jk
%fNG_rM%rO?+F!u8+fb!@o(-f`f]?N^/gPK/S:GFi;+\XVftOD8VMR+1Mb,rWERrV7WEM-e@pl#qMAjlI9%VeZJYDKAQf':)_8J($
%M%s*%!pW/*e!o7qeUug-!&fe'RfP@C9+-Of.&)"P_sP!m%/+D$q.Fs]h/Vr`m*VjqdtX@U@?m4ZqcQI:(1W)2HZ:$jm!"G:gu1H]
%*3R4]$jm>OAf:e]DbCb(<!#/iE-C^8P1e/UN8Q:g)Q+VFZ[3QL>7Y&P61^=TEErEXmaPk;D(fWJe\sAY1&NT(cmdbi5W1F)+X!I=
%AgF0.CYL-s$^4/f/1Y;l,Y/%_M:%X^E!h+FI'Od[fY0-eb$0\lcr@"..RFu3L$VCe`Snd(m:t#DpW0m;PQbU%V"&<4C;sr!0*0`p
%$1k+l^=YnG!!E9mNVWAJdu`QK6O%-@/kX`]"0oe01YL94,VZpZ3LE3,eg>F:^`.oS^gi\==(bX<!JB2NgEO&'V\K&;R<gC>28&O9
%7]u&F"R)>Ob(P$<j;ZiNY#PZ"KRAJTf<msGd_I7HS$Bas--O"DEk8DiTk7Pd1;9-S`0oF=cit':PSa(4qBWKtq"KsRKUAZL"-cK.
%h0U<G!X?%>#=r2?APk^TXd[afh"ZE"]u>d9_2kB5VD0sXeK$>!i?4`W-C&D>OA=<\'!K8NGAi<_5F*.b,'4HeGPBOV[pukOpNh$D
%=IFd)kUphL8T]a1K/0MTVa=8t)%ehg?^mL5TmZLi$ZQPZX&#*eamS(&Sq8c')9P^O8\L"&bdRaNFu35Q@k;9QX\(G]SN$$RWp9]3
%e)s2?aof?ue6jBD`h6_ieMFg^EIklKnI7.#ADhG3hWae'dS6Q9rjTW@:;4tXqL>nX^AVQo_fq2tQ..$D8.6NL8s=raAte/973$/*
%2OtR$fb<WT+@MK85%<`k`uSb'!YR-D"f-]KnrJS\1a!G+7<S52Ud>2s_7[Mm+b(uHYARf(=H'0iCUq=99D?oaE2jt*_/7jS?2(O]
%CT4Ud#MOj(S.NF+#5.f(1P>eUN<h#:\a3>9o;k(siP'dfXIbpu7R@k,"aJ4^]bT3dWen?#4e#FlUf#M+F@OLhP#pn`?,!mk-8J\;
%FPR[+?2E4ZZr''Q(tl<sZl:J`TTArQ#(erb]c6Y6e3p`eU)BkE;_,tNW0QGLjm^A$iSqQrO</_n1<qoi_,Z&DALZ\^7B>]uGls%e
%[<CtQr!bakeXQ.u07+]5mGWLL24(::\LOJ=Zh^MF1b1f9.5SR30GJ!8ag"^.A%kf7<rA@Xmu*W3EjdMk2$<KW,cf#W:"^LMn)YmQ
%r+T`]mZUbc5@a9Mmp#T_-@R,L9?`eFL!sKD$Z5;CLlF7-jc>F\AM[9iT#VIGmE!UVgJm\-]lp(ke,Ue8/ZP`&cF)\9E'\V5FW+OR
%5d_,"k?qe#RF.7'LYlQ6Joli\Kc\NgC/Z^Zhj>!*nFAjl7_`r:&_+rB*2I9Ql`2+8\Em"T:U"-HVhr/t2ipuoAa$PgCoa#M6o+&B
%)36b*.R`S0@W$IL$P[Pk[t#=7FocW?f1aXfI")sW3JUAa0!HS$/lNG=2'EY17-Zt.M73)@5UJR)TQ]2]&i/OUDLg[W>^Sg\Ig7P)
%rLV(,^_/OCI"_!1>s<*b%5&=V2S#Q=(eiW+oWGna/bVS00W&]hm/RJH;r]Wm_?orp3T!\tD`cV7DjS-ig(Q.:B=u]J4*%iXkJo[e
%"\c<j=9"H2;e`tk^Xi_<fme)DHZBCKe82_2WU3>V0WE8%C<&jArC4$$X<T]V#-#Rp+N[M$`C9ib7YLI8K=O#PZV9Uh,qt2KTR+;m
%H#=+bB(bKpMi:F(I>hPg'4H:r!!%\N4FngFf;rYZmD'>o+]=k%]W3C4@0C_$)s>RU*S$oo$+,3bXF?6^f<q04[U\s0q,;m4Wp`W3
%eqab:%bi\h0MXgIJNHCOUJ*d$_K%B*;se9ln?Tb*I_mBN/h'5IhD[Y.!,mM;T.DJeh3%fGn5584ISa:<Up5IOP['k=^9KR+b@7nc
%J*MU0TutYmN$&t)bSPMUdpd,hL][tq6Pjjl"c;l3=h<O\/l8JP13GlaFm/X;=-QtSnbZuIYF$og"IBjDG_9&tNI1slDC]6/9i`#c
%mWqr]WjWs(hXY'>)4O+Jj<f:JN0&hGW_pW/.4*W%cnM3Zbp5e7>3SmpNX/M<X@a/-_N0N8P:AN!p^ruQB,7kt.Lf<lUU/NrB_P,J
%Hr9`P;>PJL)D3tQ-HZ\,!chnE%)'Lqc"gAOi/^_NF5#S\`aV).gH:'K$D'\0W)MJW^pb-sa/2Ya9NP)giB%V`9!7%sJ7:@FBSW*1
%=_'lc4@Gm]W_=>t3=lMR4LQ0HQH_r0Y\D'=m\S/F!%Qj?.DEI!lV3Fp,eh555:r^Ha2(]iM)6T26!/]:H.-UjGWN2kVWHV5^j-,X
%p%)@*\1GY[j+$[`04',J*X&0)(j<gu8eB4Z$d)3[&7h?R-iBdNnV6[NQ=KDAZ#/F->JHN/2b_^ik0e5rCebX$Z+9S?6.*1C=("M"
%Mq_IPO4]l&=KRtoFY8R[$SFc8`(8nc+sU?=qf&<4-C\F&&C:](]*-E;dO%`UAY/4C$>$Z^&5Sd2faTu(^,IEhM1dC$eeZ6ZY3<S2
%$$a8p?LWXL(,83/?4i4<`?`c&i09L^@tJa7BX%>'E1]L.>]]"X;c-%W6Ajff-,(pA"'0n7ZDFT;SY9WBO;VD`UN0pK+Y62+RG3lS
%&nijD<D%2QGl]<qC@#6!Y0_i=6\fcS,?(%bE=Z<UH`'08XPVG&P,Cl3%?8O."gmq_-3<>E,$@NtRmfcR[$]7(k<FR/!f>u(9Gu>K
%<(_5nHYofqX;fu^.,cP:WE'<fLU5-riilSJTp]mJT'afrQe$,0d1NTsdOiaJ7E^8`>V#!X5^W3"HI)[d+?*tq]dbX!iJUo%gL[SX
%9\-Ok25+Bh(;8sR,LoS&J/)R#`_e]sr3U_IYqK8SEE.+edICeOm^sT:0T#,;bPRhXf-Vo&o25XdUH4hSqL*T)_o.QNb+$m2?NU;=
%`(af\'t8;Ba<_6fnk5l^j$X:*9':4M5C+7Q6COq8a[;9o+JKg0IUppCPVsr6Em0:A8Y58PeP9cN4<,b2Le#R>B[ZUiFli&D=`L5+
%!>PprkcS#>3B)-GOQ53<:M'UT,h"91\[':07\bIT]]-RF-NDC2J@tReI*@jm@[[t<j9[/nc#/\GG(YuhBF:,ZX]"kOTHnCM\>Xr;
%KraPL5.0()8RB+PQ4(.3[,eh7Z$h3p[l@>HITJo9"5?@Q'+ep$\]U5'W<G&.b"0GIaYp3WfF8&^:5ZSjcPu"e^h?0q1gJtG*Q#DS
%YG5"P"T9NTGAbZb<YZC0EC4kr!J-/&q91OZ^)bqBWC7>O<B]:F-/S=Ij'`.bY=Rd.Xt<,#l4&(S].<jGna$;?4G#IS:_FO0U,1!H
%JG^*jFijHjGkbfUX%eV`*rZ?K<@Q6h\3=S2m3"5cq]"C.F(V;VVK5nYGoWrU7R)&%.9&tJo!bBAlCA$kFW'rVIh*<G4I-_$e^9$+
%RWJeC9$3G$:Ob!Co.%5)n:sZH"D^P.@Ab^!ESn"a(!T@[oWcFS'gR_(@,$G;j(05G`G)W.5N!A#nQQc'eg1+$)5,Jqcmih(8Fl5-
%J+&f\Kf4=Q-=<mDp$S3^GM<c+8npQm0DPqG,7+OErmK#CZL\[4VU?MGOlQM*dN?a7=0$#7A\'HshDSjcSngppW-*\3UBh(m'"f.q
%$n><L@<.up9%T8Kncg!edW$31U++,+>uif^0YpV1nWksX</6]X$28(0/4GZ`>Z/s-72&8;c-^O1q2t7fZN&[e*%uRj6Q=PA_H4pT
%%_I:"2OOe#E&1K,\Ibr4l!Eg'`lo-80Kc^fke!/*;SiEkWO<%#D@F9GF673-B#h<K.ujsDF%rsY<l%si[i9FhRu6[On`l0g%g6:Y
%\/]PM#F?hZ-[LhE'!&gE6$K^R1+8[9D<TZg[r1c^1_Ecf?4<9h4MWcn7SAK%1o#F9]g4_dl"6ngoR$ZOe<EsB([ul?/'$1ulBt#e
%#\R-4@TEq'*n<I8p(b!(8_m)Qlq*.q[dA!+A`4N_U6ha7Fa:UZK*G5mSk1`V.pI?_6*Xst(giaM?/S%'RjahML3JVQd!aBt/qnc?
%`?)F(&,WuRon'ZfGJq6K;-UMH;b97pe*a:gi'c<^3[i//8hL5VG>G"$_+\*hl"H",9LLVK3SR3C!`1aiAsZiEomj:mrdM#."4/.c
%4\e?^_8:fi6a9?Q;L9q_"g4RkoN/Ssb(ng94NCanUL)[qOJl>q/C$Fk*#7n-]CF>/hE&9jb7=OVXtZX8WU;Ou*ZT:-kRt^11'[*0
%.BBUR^GbVbbG&,+mS$K(O81^\EkB.V[62ep^M'<r]'5p*qF-DBU>-f)]Z5'^TlPOZ0d#].LYDD;Q2=)`5Ldsh<VBogr]n%ZeG-fQ
%!sj2XKO"eb*=7>c"_"$U92C5FImVe%iN4WJ&,8V9!MGtjLFFgdKqLG_0f+7Fng)oj@dqimB8Vm9RZs)b.,C6QTmDt;H7i,W0dHW`
%:FWu(G<s7ZR:UsOepc3J8(&6r;K?.E!LkllN/!3&[@<T&?VG5C6Bn1^1;K"icPUm?0L_0DaIp(Gdo*+Z])k6Fid'-nH*]_S"(39p
%a0dm,8>)1*2pokJN6P4X&h=o]Glp;dd^ASCA+fQZmc!U0Z6!*Z8U#="`[6Ye9/_RgU-9S)<JQag(\qi41)J`3WNGS:D0[VHq6^FK
%8[#pQ*gMh!BS4R*oN4g-Xk-b9%K861g?"C'lib;"%o:+&]AB'3QTML?"[hN?LF#%]V.U:s[qYaf5ZN8!FUm?Y&^L4[ao7U8Inl<k
%U_lN>E]`.'9,"YPW$i5Bb/hf.&S?JtR_^`h(ORp:B%FlI4puc#K>pnnalF-5%8?Rf"MOhg3Ip@LJGqY*5MuhNKS#S<E1n]`FG>nP
%&5XVr.`I*bEMI3#A<%&f,I]IV(9^;2?_dD;=3d20Rl]4bK`(c^;tJ7;"NpL:);8j3Jfq.rUVGZHIkON6R1;KR;<YMra=Q$/'Q;KZ
%[n6-[%f1i9;9B#=oh5lMXWH"78o<PraTep!7hkP=pm;_?k(a]ZA.%5);>g<A7MQQ=0''*qa;%Ue0(c@UPq42OK`nfFb]]bp`>#kE
%:)=Q3/gNU<Ti;r]r#JYr)J!AZl`2K\6'@dsI5njTUe\T!(Odf4(G`UqWj**s[_*R!FCFhE8Q2q%24rJsI?8Znbk8E1@f2*sH`?PA
%D+_,q?=4GF/Ok8.jCk[VbKo/XmcLOtmc'3>Sg8@FSfs/`HjCD?#Ij(<ZC)aKE_U"2b:$J-e!"2!6ck)U$$/<F@D5Q]gpa5XnA.3:
%[*j3#'e$ZWnRmn-`_8-8[cls)1ca$PD&%,qA/MZ5U\&]<cq)o3E8X8u0'9-PN3I@Pd^2gaJ0I5.3siU8Il']7N7Ujm6[!:eUCB5m
%+[>_<jF-4hL@!ic7ss88L[=)``I)/X8*oH$7t'?$^QYuk%ek\G9e+.C2,uJlnkRu:KpIGfI6V15)(Jka7gn"7"?%,AaHm05cCCQ!
%/R-'[8*t#ASR@n'hfpi5D#s^g-H=?LJcH!2Gou,@c(cRf9\'_QYj`<r''27Hfp.?nZ!g?hGglb.qbJ@79Il>FdqYSgWL2(u>PLiK
%\b7Y#@Dh^F5(4[S)s@E[MS`Fm<(N[.Vcqnj=kIKm6gR_4I2`?lYm-l)C,-ZY62&%HmBgPF(-e/uDS'SmTO&m0e>*(`Stu@!>)aQe
%g#PQefPDtnfurLE)as2b_Q("7ZUfhoi8Krd`GtNU]>OZ',:=0YD`GS<+1P",QV#b!AeWB?nhc[1f>$e(X*p2/rOC&'`e(\)3%dJ>
%!rB8&>5D3a9,59K@xxxxxxxxxx[T#U:6fe5al'5lojn'g>[Y2m3!X3ETe>u._\hna6Y9lMU@^4(R";E*o<;'GR%hK:ZQR]@IDaK_
%_E94C8u!?#G3JI3&`a33T'`D<BfYEVMS/DP40tXN.*(fG)B@fAZU#>a5.a!%3_Z$0#==V6$Ch".+l;eu,lEKp;*e,+Ht#7Xr5i:G
%fjiBUKT;+Do[Q4kFt!S1]c0g9AG-UT!UL"&D]iR-gt2lKk!Hk'\F:Y.mR5.%#T+HJJu5(m%ZNs_H?BMQ5;CSQG=OB^&>G]PnOk=S
%MsP!tOEhGe%#$W-M9[X45GSNP4G&Z80H=rDO&5FmYj[ZLquu=.+@q/bMC\)Rja(<F\1aj5<M:6OL@FRT7W@BHh:GGiRgENqm&9iK
%Oo!_`oVBa1W7C"#2[ia7]Q$?ZcFJs1)MiQGF<(ll#UR0,ao#;/'3l)%,D<,9A*D`W)%k["#)s*Ye6d29G(\D!fb91p;uktoP(P9b
%opmrlB(@Z>mja9SfB4O.F+]s%!'A@]rU8O#JB)Y<I"^jJ:o?6OoF9<"hfW96X5VPOrIgSRLB:%tAnbgH+E?b-8\+0IP<;ZD<M#1W
%Q+68E?.-1)e*h0(b-q)YFj'1`)4P50!\mGKm-)R<i#eY+lGm1;2,n%ui49"!GQ\esi6"CqHAGV:+PT6tI#+-(@-]I*r"-,_62.^>
%hY'F#]/V-['4ha!U1gR?.K"Y3gmiH.#<F>eajM"JMCknn-`=#uV<"OE2Fb+m0mL!TR7ZJN\^<R5gR32fSe#Kj)jgpl0&Y-8VsZrs
%S#p[;k%9]sE>VPi:6j6uZ?>c4l@T0s4L.`<[8F92572';FKKD0oqD0-'8%g.g2=,9*7"h/Q?706M)$Vrq2tB(s.iAC40:/<r[@.=
%9P,GLS$q?X[t2Hi#5S(+J=_8DT['=C>!l$FPF4Zo_u;i(l35J1jbe(j"2<fH.]=BIM3(.*"#nlZ9[38Z*t$i#S:5X(eU4mRflHi\
%"I85lSm;g[HP'I?:u&ETMb$$_K?/'X867DIBHk'SOSi/%%R.><O3BPK"7u#]Om+JI-@A^lK47@tg"`na*VptaEn?m*gHmU]8BX$k
%4>S`,s'[qK+A7NLA2c5ZV2uQAcd-&^-%D**b3[HHV!0`miUbN"qrSpPI,Z=?X_<:R.K!'MRN)NB;0N*r`9sX`n29n9QhblQoJI:!
%"^BPi$H!-Y,B">U1r_Gp7eYmW?M[#4+2.6J%_H_F\3um)'>oU^m#SCa`(?h_-)EYmH_$3IWq<EbFT8/FpU_:T59:VE&U^?Pc#HZ]
%ZmC(:0A3nII8Ug&U^KL\!RPIWkn=>oa\-JSa87Oj*bl.@FD(j9AX=J&hV7Y#%O[TAPG7rr,smRY#(I#SEZqCL$G[%bH6KBY$3:Rn
%Jg%Af$:5.$M]oIt$A/a0P9IFk#%E=[bo#;_JV&W\d1B\(@o4n`eI^Yb!Q,,WfaqV>J`DL3h%8Xo"U'V=i;dJ;JL"U\b9>4m!_%kE
%l548aJRsTJmL\`5!JZ@PndF7N!_j26liH&C!fdeBoHE9Z!-!?kZ!IGZliJ<YRO^CLckVn"DA2_8"nE$I/7aeF/@-iKm@Cj)ZJ7'c
%\<&cgZKs3&]TBfCo)(,1^lUbt1(>n<`!_4fNTk]H6q7*rOD/uMAVLW=R-Js*Kt\3k6`0+%Po;D[,HC'`'cR`u6`07)PoDK'6a#m3
%(E@IO"1I`RR=&EtLOA882`g:>'D.LqqTlg>VNl<pp&*G/X>6?$f:.Q-YD9P67_fVb;/,LMi5`iO\iaUi1$E^F]Op+TN1Jdb94_1U
%1qh)"QlDZJ6CQ/C:n;?;D!]S;@]$m%;3"D(\91e?X^i*N?I8\grZGp"<jFg^8;riOl,X*!,8cEGGTQ3#Tdb^lQrdk6&GgTRr3&db
%"JDPNEBS(PC%Ed_\,1E<X7J,'[a`GFLBZ#B.;Z3G9Df4g`9%&3gEeg%bG46=Y7S?ZhQ02FdT[p!lq#*cfcUE-oZ-9&p*I<ZIm</i
%P$K!1q[TBpgr'V2!uEu,`l(r*Sm/>gdAN2")]D+$mUW/u^nLo(ec.ZRB3kO(R!Y]pMV*m7W%XAD?A4^+J+2+^IWZ<LMfJrCRQ#P<
%+2)'<MjFh5+_@u'F`3^ZMgSm[[=ufINZI=7/M>3INT_R\HR%a0YHQVbr868EWmP=\9g(<./Oc]k"+Epi2rIU_6JFg9H%SLqeoLS0
%0c+:mZkQ=1L:ELD')^Jq6sZXH?doPLprS%u:5gn>'<O6QU,dPkAYbW;2'=.hU'ulb)(1/&SVr]B4c+1*;li1CU$(_'$T/`_Q$igm
%JbKt:hQi9N,9,@pJs47h)J;Q5?[Jo]ffM8*$&j=Z>FD&no82MqIG$K"otG;0PbQF5pn$2>Q(_tP\IZ-L1#jtO[lcqu%#D[363R21
%Up\94$2'p%9"fIFD(98>g'9;`kS(/`jMjnk1Q)$rRe#1&Mq7`PC!j<`Zq&ocm9m>=fu&]U)-tBd6:sj:\kSh:kVDUF&-5k%mm-2i
%VNV?99%VhH2P[Ud=8-a>(nld4H9W)Oe93r)i<J/f8,s1ecpH6VFR1m8"Do,WcJKj61-M6j5g*!!G>IK7XmFNl5sQi.:#5jgr6;k9
%0$@[W6h'9#<ruAMp@E]6O:&Cmm]ofUoJY8gje`T$RRGC*%hQCALujMc7]e;)5%GImo7)d=s4E7C$]]YP]UYm%U!^>S/6Qs['Q#('
%9QaTCP[dND/^[rp3IL?T)/imJMI?rLXB&XWS+FH8K\Dg!i(8q63:RfDq1r8tZLBN+rNXF.R^Q@uEKUm^=srF(nA+"-D^bcuGr=+#
%C]M&)9McXTq/5$b.=t*u'*kq4TmErK'*Pp%IQl+=1I3ob"TeuS-t%.?f:#`^i1qb-E&]eu\PSkM'XA*7n,APOq_#q0ao*jJ(Q/.H
%"T_!\^d)N$;YIhhaFdsuAV#Mm.9q&T!Y&1N\E%RSKK&;88EK>8&M_^dqmM:hTFje,>f8HciJg[0,EhZ.8:SQ5+ebRMS+m8-5e<@F
%B4@[bD^T*]*Xg&);3:;`!V0i6@!Nt0<LpbGNI[atQ]:(7k<ur2gJ/OW`Vlh,_S3O2*)%b#EtOfH"_g<fRZ#Ba.#E!WcO#;KVC1B7
%Mph#ZIZ3'tU?P52junrWdrbFS=Z+QU$C.><W`#Ml<N&n4b?@=9=J8XD79(j;i/4nQ0"P@%bR]^^!U_8EDrW?Gi`T;WL37M5JL!N!
%>gf^U4"j?Fd##ogd=Tdj"hpqJ5cU=edj;plGrh'2@cVRn`]IWNR9b*M6i87@N0O4_/#<RM)3I'#m,jHG70fY>p;W>3[gRGcba#g+
%p3,J.rIGgd*f67]cB2glQ-sq/?Y.&?$*d<C/.a.TcR?F\k!)^_$/"no&-$!hZiB`dn)=hL0`V/*mLW\ChDBV1n6s5d$M5pEG1tiL
%8D$[!PV!1E:+c\:l#+:I`_?@QHLnF2+Ar]V;#Z,--X\ot@(i\!YFJ,DI9-Jsjg!3D]6b?%oq[sCeTcNt/d!P"ZSR<_#MQ'2g2=kM
%\q3shQaU7f(1CW-YtO,^O=;,GC.%^^FK4>rQMAnZ/UgNI*S.VbK["_j#Q:'-`eOjuRunWV"'m+h`aK`S9XhbQ-q'dsLWY./SJs^N
%n"&Xo3-B5RQZR76qVh6"0b-AI:K?Y*4no09=d;@Y=Zf[kZF!!3EB5$)Jm=gHh$q9=^L)_]H*i9lhqHR/jJaOj&N[(qkmRRdJ7a4N
%D6R"+=H/"Dd2.-5BqP)k"cV\WfOcr_Hrg;#S!/K41&%D^q]qbV(9&209Jn.\/X5F`5sK#c$5`:CZab@[6LBCpT1ntl1D5ht%mX0^
%$tp<F_1rk)8<P>Sd&AY-6=C:F7X0Pp82(4m?k>a8Eo@5PQ&sO%3A@Jr_4?,D1R^[H](\4'Ve1$Jn[JmSK[M!*N(>?WEY0[UFA,$C
%PD_Cm.&:kq>m]RpY'L\BZp^iYnYTCXkD7X#bq:J6KJP?MZ^:K9=UX2g$!5dK4fVY"lg*#oHMPb[*Nk*(eH@BRP1',K(jt=+_4>K#
%n3_@>PgC]1!T`36$R4#Y#Se]SC(rtWd]g:HV%IIp1c9*QqUUPs#86IL],DfV>cRElIo_np)..q*S9aeqliu"*n%*#CjKYfXRKP'!
%dXQ8.]H'/o)0Isc/n\O98mY9BpX;&`Vf-3oI/JbK6Kh@$r^Z1O"CB?FiGcM\>?57NGnA8gE-?q0J\QC=^,-Z:Rh:EmMrP;fkc/$?
%^UuohJR)p-Wj2Yt;K9mk[RAeW&M:nC-nV%(@7Gru`.UO<I95r<p]M_kaq4a"h1.DF)<&;#j6"V]5J'n@=O$u1nAB4#8k:7@xxxxx
%:;^"[IDO;J-e=mon1u:ND@BEgjJ+F'Vl^[3q[mg)a:Qg0(3$;0ALXD1iD2JphV[\k\*GGqj)lBsAl:*fB!:Udn>*lI/[qD[8+A@k
%Dr9]L.HD/"Q,KsT(C?=&/g\qG\Os)&p2>4&?2i^PU?&B]'6eC3<@A:uJ@icCk?HdC]e[P4+Q6lDh%j8*1o"V%0)=8a&FUiP;t[Bn
%qVP>9R>);-]Y_l,8=<GGHXOAGUd!f@gCVJ*I/H=R,1=,[j=r"OJgqXJlY3qfK#eBugZB\='M9$E7#WaM7oX.N:s,,RA>PQ00D.5T
%J'Jr,^&gK,#!H0SJ"pfp-#C'.->%VoLpa[*Vb"/lM(R\FO3e<OCJ-YYmm@g9cbuan)TL=<Mupcp(.1X=M1glM8K[a^TEcdp".eEO
%;:%`6Z&cL.e4hbL;O<8pW5;[ObdXWp9.9BE$Gp&d@h;]kUMt2rOZ&Gp@A@sQ[XV4>+)eBRf[+H<T:4QuNXHA9DHD-!3o3`KfotJ2
%DdY2dMKIZ'/blK`UQ[+WlFEkiKF0trjmoj'cp&ujRXYOl@0,h-`l=7A0[7GcOA45R^H-1T\W\Yaj\sa4X9D1*GsAI>XFqB\h@Ii&
%^N>OP*@/7[<A_tEF)2M;Udsq8(S"g==_J9o<d*jM?M;e7ENIkF#_C,Jg<4nNilPh_j=;:/Ei^f&mgl.UFF4(20t7`Z,s]aG\-=.a
%dHH7*Wde;Ld`\U/SBl+8g%WJls$C)ZI<g6MH3ZK+OlFhY*U9LI'l$KLoVp^!;Rl"p$T(u/dA"DD&)gh-mQ,8Je=U`,$/j0LCQcgP
%Lta<$m!h(L]N<8lR;OeMFAXXMj&Yo1$7&]XgG`9j:d4V'[2[9ZL'#)OfP`/H*(pQEjG*9$2QFkO1M._GAaPsa\)sOcMUpeoH=^8<
%-"rkka1efGjjMXT_\79EEd]`^9uM^s$mP=qS)K`NYZG.aAU&eoa^#8T)lkU^^%S66XD*OT9oVuu\paasC%TH=]c]+`bH"cte;PEu
%EHI#F)g(7?T&cSEH6F!NS.G6UO5JPZQ&S.e<CQX0>9L5HEj;/76uQp4&?3t>VP]]/>0%rj8M22e)6/A/'U(^[q?f)8'o!V;8ZbCO
%7?Hf3njqQl)/^_^>km+DCo$a:C-A'(e'U4*S$-VqNp2d#YKKp,^t?30<)e=NYDEdQ=PPah=>B_M6)$C(>J8=)G5<2A:]Y/M$j[H<
%C@pW\s-?s:r\EYCd,d)=R3f%93sDGjnQYZI5#_mpqi0CH2(k]2Z&a"LclVH_8Qm/!O'"C)j/T?tMXcA:4`P9!YQsbYR4B5-8.dA:
%c?b]-ZG4.2V[hH`LFo]n,>YcLPjIG0_PE2!W"=O.R,1)ieVcgap:M2e^I0u)#4V372`th0*qgemoIZ,-S;4f)htj59htPCFWNL4l
%+/mo7X((cqMKV)O]aau:Eh1clc!"p\,!-r\4J]Sg24FicVLuC/96Tu\kr2/9BRmTuG5t\O;;@2f?l3Y44<en/m@%\)[>:2L(N;(d
%JPM,kO0CETB"D>$([2,l:"9S$7?PR4Z5ZaR,?uaEC<^M/HfHXkeRRs4aje=Z?lK9%;S4rG&8&B+:hcqG?U9]=rfhImV^dI!LC0+k
%0nKM.:QXc.iC<eokh3!>TdsMaBBW-[c/D\=n"No,Q"Z>i<k]$ejkB4,hk&cPcl@JSo,:O":M;K^G9De#;e"WQ`'7Z>ou9@1nipF!
%r(fV#^V`9q$^j^o@2Y'W#])ifm48VV"dPOg9s7:I@=:__F:A^:\NoE;mAH9k;`E9pH.ACA1"&>894l\mGT!dI[:D2:DC1*:4IB1I
%"ri^%TU;NP:,C)nVXP?X]AsG#c=WE6W\KAjguM@#@TK'#:Xqug;lk'#"%Yb2FlNosl#]>A3ZF:kBq"gqDYU.Ppkfu'0#P@;2I;-Z
%jo_-A>^<qIMq2bgW^#[eJ4&0eham;\bq"bJ*S^@D@5Vl]V2oK?nb0R-Ju1,;U'[O+_PNSpd.c_O+m@?K.-s&1p*dNE1MT+N:mb3o
%V8H2ucOn^&b'_KMXr]HWf-/B70%=`+F_NOcB(Q]:M;R9_Dp?$\@1F3074lJ2mDn3eARSND9*;Q*=^'HYmF$S<CtBF\G.TS^$QI*>
%XlZ_MMBK;=-:*5KPLhPo-g"Rkq*ma]Zn'*$!VY(d_@Nb0ZDs+V,0&5FE8"3!Dn<>Z*nHi0^I!LMjtPGWIBf,7M_SVZ,rs%IJ5HKc
%VNr9*FQd.k&YsYGR5F1?&S!gp=[6n%pB/f9(mrNB^QoIZeAgpKNFi[Tg0GWTrV=_/hD%>5b\c!`.-snIp,$e-3Q[bc8tkV^W$=&O
%8T0F>&=jd"GV>HA&0Dl9M>nntm3;\M&XrVN#K-N"g4*/pVEY4bo=ak@7QUS?g@$[I%<)*VpAB<?J+m1D?+fU_PQ&nCs*oOIJ,\uI
%n\!e\iP54Js5!P/rnG3ej1kPRs7u]j5Q@X2peUqSTDmkXc1l5Wl2UOnrqaV3?iRaQrq.?ss61VT=6o</s5*aEf5:Q4l[Ss5IsI$T
%r(m/P5G-oLJ,P`6qdoUW^UN,#LYr-Ls-eE:8%JJGetfs+AYF[XULDr=l0$N[Xhsi(r8"u=J+crlN;rE,HOPCoIsBhR)G6&T$b&Ah
%Pbi!-T*D\urgQksIg1,lq>(LAb411(,*b!Og3l+_fp_YB`Ccmi@8=gIP$^UaJ<pl-I1*d'h,e/X-(_F'n.5G%2;!XGRmB%,JW5"&
%GI93))KDUL>omb,0BWqnMdoHLg,(.C)mnm+:cb2ujm^4dMU-QTWY.85Ein@"%[?sokI])*g[bX3TPNp,g=-1Aa=m\AU17u82(:^a
%Gj)u*o39;H=thoc1WjY+\nGT$1PSC`:ur?XZraD($1BdOUSHu&nJiLT4IL=j^!B]X!ua;<%tCr@oB$=B_n.r?#J#::EhNM!(A]fj
%Z+F!r^44F:%D?:%Vra-/gM_(Z`$6n(^BOuc2>]bJ>faf^KkN8G.&k563.5./%N`L9>-^U5'u4/d+9-etp3ZQ7*1fam+0YZs)&e;$
%Ia.]WQGm&U0E$e6Z^*g:&t</#AEjNuAt.N8:]f-$kl1=q`85(f+Q4`8=q?gNS@6*K,h-Ae/D'Q\\>$fUm=Ec!n[M=6X;,a3-M@i!
%:_iS8(!Ap:]0GgjflH[n#,,,>re$E.nAjAip;c'Z$S"YVB%).8QWpu+ZZh2(?lUD`(j\sR'\u:":b>of^RP_MpJ08IpEt<5b*Z"o
%48haW*KReAF*7*+HZ0:92bf]''(V0[h6rXEo^cYbMcGYjpA?cCota._`EB-U/gPB,#/tBcCjO^T>nN?MANas\4(i)]H!umd._PQj
%<eqC0r';6I/]0Et.jK]CraHjAnNSd(:.9,LdQD@ajeJn"DMQL29Z4:V>GH0tV0eD.,A,(XLl9\h*#f:Rm0W8qU1Kq_(?N&b67a3'
%iF?Q#n0cGqE6=us2C6AUHndP-huS\$Y=Y[KZK$/P4C]"BJ:,g4/]NaBnh+cG1]<SGYn4o7Qh(?65M"&@(F'I4HH7sQ/p23#YZJ_S
%BlsIK@E+EW`k\"k@YS9BScXadKkRl7pGjJ,2LCGjp]kpq\b"eg6ao^Idj1>^0q&i,DW0NsFM@DP3*u1As1O1`P)Z(p9gBKJDV>Oj
%WHUJ&2EGoSC(J.so8Wj>h(?"7RPg6>Plg;B`PdYOan1s3NN8.DA?g0m(4Go.+9(??@rc]!CuK#O%r<WA;.4HC8s>:sb?Q!I#UPr=
%KXn0jGT&Drs+<<_ZdL8=C<RF)_=mIob]VFU.:Yg^;7*<SVCWqTTBYLg,;;sHIn,eKlI%>\\;PUcJMgF*k^5PZU?%'9JFGM(S=Nti
%q-'j7mRl^]q'G>$MA_p70r'CM`lt@?N09kl]U0PL`#u02X=u#cLN3`r<OXq6\[%^$_!IO&pEA[?I&@E6Kr8!G/W84dGA8gtk-*-*
%nc_[M;1gu`Z'AlMTP2$>mFo!YS1jkYd[Z`:h;(q35A*p'^+IZJV_HZICH65EVp/b!/\/=e%>N1?FNm\WhV)bY562j#,(ot5Ql;B-
%c,H#<a&(2s.b;o9Qf"Ouc2D5*_A`pT4L7O+Dngdn.oi`uKspQg>3:.]L%=iEYI?tHi+BkLnq5lG`V8ZWO7DW#loA$LZ7`eHP+=dN
%:=TS_HGbNS`Egh#qdk.lh#4L3s1f)jn5a%tarA"+m/<<&Ad$lQ\R<Ab0SW8X1AtCoj.7-bcT:<O3=a""DHEZEOf=>0)Vlo/4B/M+
%db"+P[&TTBpBY!sCNj:4EGA+=h8rGQeKCP"KpfMS&k[jJSh&Ccf*P.6X@sF.'tsE8-Q"k>Qa%'N/./?`5-)NK4hXso8][W-lm9$W
%6FP)ACIPWSl"_*$`EcDW)$uZ#8:bf?rAe*05kbL"RK^C5F\1c\G6AXWrYk'<>6Md*LZT8YF51QmMLU\A'C+=UDnGBd%!mS9UZp9L
%P-7Ie(2_FIQZ%)%8i+#ccI64,(QbLAD7YqQWAcg&Mi1=enp$Cl6&HMiX&XeCE:\UCiZi9qh;Yg7N/ZgiJ#l_-eGTTT2o%3.)g$rU
%ko6ik:iW*M;=m3!+IHoaeVRY%P@"\;/iCLQcR*/?^XnX2RN'RN&`p3`.BQcm.GDk&CNra>ct&5d+-FCFM7)"F6fnr[4XiNL)m3hC
%m'O/pX8?^')]H?WZAa7TPc@_2rcHXU$j])</"i/).l9$#k-L_3Cm,3;mkj5O0-HP#_eR!V'B[p%TM*-l.+Zna7\$=2icDOjQsCna
%m;B5T"'b>qd/.fGlq6W':/:*2,fG8D!<e[W?X$4Y!kX@*N+HZ1$Ya'&oK%27gkhI)H267g*-d>Fi=/VdO_[7EP.MnQ-&2VAqA?<q
%?%j2D#]M8]&bRJ6H[L<Rbl7+HA;fPpEa$m^c$f1lBBNU6#P3U#Z)*<X&,[@pQ/j=dph,Jd\5]l>-9p\U,M"l_>WlXfUPAl;`#pf4
%3O3%Y@FeA/7XhFcQs5PJ,Y-1P?fP:C50O?M[!Q_;eHTr6=OF9B7)1TK_)8Td3JdB8HXsn-XGi?7C(b0Qorl)Li,-gMH$cnoRM4S\
%AUh*GE+<VlM_Q$\n)FBgr[f4_Z_e=!bt(Zc,fdEkBQ]ZFQEbD7'bkpFUJ(6g$O?EEH!(&'V_tY8j(<7S2#`72C%MLk#qN_dniR+e
%MWEL1YS0XUpHe91_<>L)U[q&u@8`YU!kOXfbsni*Mq?CZJH"*`k`:*4dVESS%aIBsZ6/UXrPSdshi"g@q*/9lA5\1(B12@`7V9m@
%Mqq*O<Lem#Rs=X=n+H;O!$"V)4tnk`$M0PcUGR>049^FS'2oD$*&F^;Hg6&"NF)-j%A9#?h$_PtGfY=1q6R6>@d![NjC;_dXb?P7
%0(\-VYI!h5HkUmg4:Lgpc<(+f5'N1.QV\!)I>Mp3eRt_m"$s3I9QaNu]?p)6Y%EM>6$@Fn^e3;Z$dN'r<'8aCa.rYPFM9("/hW*s
%8!_@Qo:j>(M9K-PS?4p,Z3u>#%-:bg1-&QBnA9fhGB>-$Cr?Rh61]Dj+O>=cf?qQ6"[IaBJ//?Q!4:hJ2^iiNhLH2F0t,F6>)RW>
%%"P/ObiBei<>JPQ_:fNop*Zph$`lT>q<ZkLEf#:u8\d]S9fe%H:Nd:g,l-bEreAU5X+*W."hgc0@Z8dEB*jHZFMp.%lLrd_Vi_&0
%*G/Q1%XAtLA!5X)BWc':8FY)$$Qn=%)rAIc)$4Gr?BR7ooT_Rim(+1dkt*P[$;;5Afe"?6,p1*i96sY8[i14!?0j7jI0r2nBeek/
%Bu^\.QK(hhg-DR@^DjdFAgG[ha!crs)\d(mY%8jV%23)Bj9'X.W+a<2b&1d&D:ZK2'c2=ECgpe:aRTJ7<^qXWG'2?,>V7lQl_?X4
%Z)(]"RemL&DkOlrRpaUX&S%])8-*l#&]Bl25L'eP!^oq./T*a<?/1K3eWbNCS'e2^>keH(E#=_91uV:I*u!4qa@#f;*P.EtOX=,j
%_+PMoacm1bc))1$TN3fN^-]et!Dj!e:DdkV4kk21/p\-$0bnPt5<0,$B^FH:>h7Ccn#LieolQ%ef@0G8%alD=?PY;7b<c(RH)>Ef
%hepG=kTZW7%q<O";-fAWA3W4oj<&>cNM&Hm?AF:=eJ1iU.*$`H]r(J%&o[%=215J7E7NLs`0aXVR0FLU4$7Lnk=h-Xq#ZJW`-j4Q
%*Xp6#E')Duc]%5!ola^Ai$,jh3Cit_9r,B*@ceEI[E4IU[d716q",j9-sEmiUJMX?rDM`E!iqn/&`'OLnuokmeA<J3m=(^!a=bc4
%ED8C!&%\HTX]L0UUr85:.r9$_X#Js'kgY%so;Q0)F^Nu>X*kD,FG+?:D@cS#Di=4'@*s7n,YoNufCG.Fi6#e.2hU@HY\mAR1'&\h
%DR.M+1fY7fo,0q,HGs-W/'i/M9/91u)'R;$3+(!_Nq<"i+Q5'Ym+rsj-XQ@NrW^"+XD3HlHkBZp+WY6DX[qQm3\\/N(!dDtPCU%6
%5;p4&Y1noZ2)WsI[21AD(,'/XJ'W%8II#6Qq6"O_+g$>CF1=*>&8q2@P5q3\PR_"L5J/::Gk:C37A[P]Op:lAJXu<+RY1S1VBDEH
%.7EN#>&o7]\G%Va1_DN/"_+To=.nFsU<As%<aW!`Xnm"[_'H[1?;.&,17n57^-X/jebM2o#M$'A,BL+0E1Wujk`7]XBKUY(T<)\9
%J]#6-W:sk?"slJ;(Xmfh4R@U#(-V%N01&ZtG_>8"):WQsWJj3C:>Y+K#HF`BCjrV$m?.m0-IqXP<>If-4VahCFet]a-dQo/iND27
%H^oGlbiu<n%W>)IY#8Y&IrGrs[J_W-_D7^kq=Lk1gjQ]f@a%4N:3qV4%tI$Bj9HSkru9&t.hD@g1?OWK%Zf'a+lh.nEY*SRSa&I-
%dHCJ+p^BJu[=+hg51nV(Xat-9R]@<%M2(+;+a<u@fq)tc3\;!g7tDW4ZlE/ea]chs.m+/jdd3/$&u`\rBnY#m1"]/-bp>1nAjB>V
%;u)`C]H,Yj^C@@?]j\"%W4eJ\n;96r^(C-ffL4?>k03]&Eb%V>\2(3>e6XQ?$fQr`^9pD@%sY17K=\]Bo[r&0@;;rMZ&#%6mi?3I
%^mu;Q/FE'rP&#u&m;5^d*7>":VP@)DoGl;S"tjM*OCuP!l"Q3Big21m!J1)r^>*:bm'-:iAPtBaOYCC2oGeGrMLadF0@(FJC0q)q
%7=WRoP:m.CeOOQQZCcrVcJIP1."*um1NINr<VcBi&L,/B#=[;)qqHt?4na4L&8H5bPo&r>kV,J(LSVJkf-3%U@Q/6AURn'e_)!f4
%5)OG7Fq5T^I5=)SF#:h8P(d>iM"A5jCNsYSE6hA)Kk3-ZfU8#/^(VjE@MLM"i0\I`&0BW]29B=:/It+3(;K7Noaq16j]>T0>TV*3
%fD[2^W+0JLmCl+5Lhoq[04&-rW`Y_&qeslgWPYR1&*-k(&]?VZC;'#mV<B0WB)m<kBbKl:&5B\7^]Q!fBg&5sg<HP'cN"2<H?8sW
%4JYc8e=U'?KjLJN=S8neY;NC-OF7:NJ14:@[N>nnU"&VRO0"A-h]d<d8n_X]^.o2<X&YF7_FuN&M-lOR6aRLTiF8mXQ/'C_SIa3u
%;^liP&!^iMOSfe+V67X=k6!W[h*=#hB.aa=Y^V"<QJs37aUci/Zu3(dmc)atRFNT!X7I"dbBh1)<hmXMM_o9%0fmn(4/#a%%(gjo
%k&_(kmLf-N8IqVNjT^X`g6X0pEhurd75LNKB]dONk/kY)ZodNVINFFUTmEg<R,*JM#kA+^_.tW/.=d&r9d4jh=1rV..?f88aro_D
%eZ-k]*^D978[Q*kJ1ZDU2-+j,\ieRGnM[4.DfE/X/q!f2)CJEFdeCC8iYHd,dN=S]5D8t5,[0>hUKfnE<Dk3B1lj-NRkT7n=ae*C
%-3g)'NIJ`+R@Z#(kY8uT*"tV5D)2;;gm`K"X0ZWA+"5InmeK%*GXYfk%\MS8=aG.2]bq%_0Y>fC+ikG0a5_pDW*hRV17U[..'E72
%8(#0<m'3ZcT=p`5N$:c5>pD(U-.BLnI/dLfDqo1$@76b8R^Rnlr7_nCdG?f>Z5]:F,Cmi!VH13X4Ee<R^GuAoFW"F'gCb!do`]Yq
%D(XC@h;SD!msYIQT9S4[ci<"Vp).*skMs91H@G:_EueTapp#VERs4kH@fgEMFEoRaf/Pt#6G0g7<56]?OR1.Tj-q0''OpE@:ogqs
%'BYK2<WL*7?L7a5!Smi4SnPfLP&nCo(U'SPj)j2o"idDs/(#eG+NR?Ih#V,q7XGZrF$<NJle?jXK;'?XLbW7QK;NDMR;UhE/O*;!
%#*qP+*TE,Tiq6R-F&^<LC'ob=@+<6;"j,!<Tpb?-EB^C4H8*TghmRjk;If!8TRqsjbjo`D%%.>:^!Ip0N,*Q^6i1jqQd%@j0K:EG
%^J64R7#AQ%^YFMV;>O2TBi+&#nEP]153tS0i"$@"=g2Eq35qh.VjSDu@=qI\,C.\K>'5W[?u4_+&lEu7qOD)t0(SUnO/8tKoEN`l
%[ec"u:$/el!cn(\%o1M+E\-;Oa54E\f9'>$Jkpo@^`Q"d*eC>mb"J!]k(a(B%SoofE6C:_9MBQ$2plB1!toI4Cl*W;a`[D[Y,i'h
%5jVOX8FAH-')`tt<aJk1qeE*4;_^12Mn5Eu<dJRmgKhsGUp5MKhC.V2H[j7UPoX7fM;eanTGDaD]q]>J1qB]_e3XpSKOjfA"tk+[
%"3Pm0d"1<]pDr&B/'/%iC)A0IQ&`,XC)ElDDmO#kH^1Td:H2YBeOf8'NkJ;RAo[(!d/nYk)/2G"?0ImApI+Li90&SA^g]TG;"dfl
%,0<>MG:C.;lZSHAV'cE_VhI5DP`KO`4d[@M:dQ14,:BSDkk8fA_T.n'B<q;*9DHW.&d+B`K9f1:0"M`D3m%n3TM(h,Igd\b2aS7d
%r(E,:]@dT#dLm-jUW`6o,8b8,Vi9k8VEG-e7$G"`RYt*K#O7U8+gR=rf)0BCqG^@WG;d'dbA7J$f#b"`S>:T&3\CGCNrHgd#I=U*
%7+<!C3?]%s5[>GR]<P&$K0ol_(Rq4@O?>Nl,UTARR[Q",8-]Mj<rPc+1U*)I,/a4q!(Rcq.)X!U`+!i27H!7F=H0JNj\_4uBs*EU
%r7c:,p!d2^ibUV?U;]^QS^<ZS@RB[[EOHMO\Ro'Xr-WN<GLD4?<<4P<_(J1b+.j`@Y!G\hNlt%$M:%0Dc(0V&A-NTO^3oc3P6)NA
%\0[P4E/?Op$c\f.=BaCQ?FFu5`FC.kdBXLmM,F1/ib6V;(>Z'r`mmf/fF`aiGr\050qX4,V`;t?A+'0TjAY$jgl+(5L40YNdV4(E
%G6U#b7lmU+MGRu$A0/!_d.`pb\hJ9(,=M%S&+FnahMFNe*1H7#6P+:+7nQ$)R>?[;7F]o,njQIcnT#N/RmtTA1I/EZEQt$GV80SC
%eOBs<`!?QK6*mnd!u?#@:WE#ZZgCjIFr=9B'?O(85W`VJm6&8k.A6SiSV6-B"bd+kZVbZ/+Ml$0RO8B-,a_ao:+.eRX1Q`"KC+i&
%GXJBV%++UF2g85]TP^*&?$#<Re[[WIoFE/jT]h\UQIgD(<QVc=)>n`IY7iTm.%-r!+E1KMqFA1*"If\?-&dM%2$(Oji8$\&$qg/P
%e*u/TH:QW/<ff)]E!4AX['L`\[RXk).cqpGH.^(Ac62mOjq>t)r3qJIk_kRe\S^!Ph%GM:S'2a%fqSW2?kdNH"X?JJ7XQWfBKqoo
%8#MQuFM!L-1kHm$ohPW9oB'_`%"a[cTX$N>eAB3bcpbR79pHdI&O,3Q."rk0b$=-FDnaAhb9BFE[5f3%<7[Ar!]Hd52.5)Y*!;@:
%=F;3AG-W[4FrAQk'Mq;O&u/\-#P]PX^G=_YK.eokkq''[_7,nL%%-k#(jD8s-F=1PD&k/Q+]s"#c9#7-If1[#jp^c<X&>EcQ<N(I
%fc_b*WJU,KG,FCW4GmXEEifGNcfX"JI,&1..-au+>]3P$l#i\A`9&8s]\>GfZV<>k6mu[n)D):U6u_22a[`[-0KVLO5NNFhL]_4)
%Z!0f!+]UHU8'Bhr7+nC?l(oSM-4_p6SJ&q7,-Z?uTYfc<Wt:E6+G:8kBHX@\KlT*A6[I9D0Cr_WU0O.*5ZBWeq37!ShFj`2DACMR
%NFS:>KFjB"<K/+E["+^U/Yc\_plD`7>$?q"[_,V>/1q&A`_qtdPo;TRd^2OL2-BtO"JiJC@3F+F8BKs^29hL9@"8QL&e#$7mVkB7
%.=?Y2!&GM#>in3"4I)EEVI)$6^F`+,YY;'t\q%%6AcO-%_Xkm-nQ[pXCq:?*V`o#Z+P@n'1(n[H/+o%iPplHR.)n>`!Y9mPC72c>
%Sc^mN:sA6l$OVO;=K0F)rB?[MBE*$i*35YcN\]U:@bF2rklC,/XD.1l3P5Y9gZQt)JT>&=ma]nifJD+BjW,$6"q%ZT'Q4-n8$8VC
%LO7G@O*O&L(@#'dJ#U*@JsUsQ*bTA+dMT"'F0Ats@:@q5_7:"LMe%GM?tbqc`6j`EoP"BGH#gI,pA<3^QY6fR,fuf,c`^F0Za]:B
%Kqh6J)JOZ?[990XV4^TB0rYqO3ScO(@*'/e*]9o.=$9GsHo0uT$GNIu,e9o_V(m3lZoD]'D?[s/+o)Ta,?'4qPX=ie!N!A`.KcrO
%-gS)UK,0H1U$Qc66quYEH,^Tai$K#ScV4&#!k;lKYQ]3E4Bi(Vi]$=b$dY(@8J&nt>g1MN3[Z;,(G$$cRa2]X3J<,:VUUOh5,][6
%-'sK%_hVPA?deC_7'abOaq@xxxxxxxxx+Ai$RgqY7m/e,kU=AM5ckYV7tdXLc%%7\MP`ngQJ3QTeDqM!3eSKPb:Oi=GHEAI*@*(i
%5[RE+6>geWdCdDrke`FcfSD3*'Snd5midg(qUM6/!3XFhZ8$V.,2G!H]UpGYMfdmP;T)^n=sc?h(4q[D1Dtb-Uesj%`C!BII8)J1
%bb'gU2>F`!8St<o)+l)NNMHU#0'[Anq[,3$5Vd`?K#&-n`O6m6Y8]U)kt;o-2O,%pltjP5?>uo'\cdB2PV<jb\qF7UP<QeuZcW&9
%]*IIW%OYR4p)(Rb+R9,pc6uNP]5!O(d[3FTTQdQ,B%8,Y5*b']bR,/.0NiEKgRTN`<AHAl`<]-kIl'qL.LQiN\-/=>/nS[R`f*n/
%WpJs/%#Mh0GQhI_]T:"<pVP'i8A>qT#,/eT4#Jm_5,er/QO4tcm,H,V7h/b#0$QJ-n*aJJ>"_"^iRu^oLp!H2-5g,9E"/P#o&^;+
%,-$IGgVj1h?Dt.cC^75t9@9>E99i%edko%BQ+_bWc,b.FJn.?<c!W+D"O#=0br_n`(5C3XRPMHEfFlgK$u]0d#CimiHNNf5:EYK2
%/N?*E)_EBi\j.<gj(uBoUpepMcUN8c"[qup1h@O>F%PT)3>^/nXI7)&W@1BG+K9$4M1(s_3?9Rn3K6'(VP#T-BkY-^Hd+cFlNC:1
%.o&\1%(!;*F3Tiq(JpjKM!@0i`-"kd&bTO)cu[Y9Crr1HHL^I&g1hLp'J#>Sn;_eYKP,d&)Rn!egB3fLeST<aZqWm;eJpIf2%_?3
%g,q-j"ee=<+[7:i=]<dgP+!TsN_us/&q<*5g0B?9TPa(nc'F).MJK8C1"g'*Ci*c`SQ*nt\Y?;^7C/f>eU\rR18@Vo@`asl41d'H
%^!qYc!mUmqd&bN_VjGDu&8J,un[3KP""`#nq[G6N!qjD74=<6GE%%HlEgd@jR3ng_W22KNFQR-h>tT=6.hcZ@6!.RY5rQ?E0id1*
%`i_WX,rC8+6=__#BXEPMBZm$UD0)76a_iR2\/5IK`/1Pi)9Zna3#*$fC,iS9l7PCD9G%qB7&NZM8n'MP!7["&-4=]K_C=WpES"64
%:m8i_]HCD&Sij"T'>=36S!(bXc]d`_&lZC>IPMjQ9.J7+"jgo#GXH*.)+I_2AHM.[`6V`9*G7a$J9YMDGWiM+Sc!uY[j:nq[iGQ'
%UqYYKeM;Rl1ehi,\nSUhBL2Lle>8:uqU4\hj4FX!*LMPEER5\V'('iPiJ5Ja=XK$.I`B_GA!k1;.3M$7jEr]U#PNP1E;Qefh3V#$
%&bsoFDdND4p?L1tX&jd63tmu;D>QPfr;JeS9,Q_c?iKlYIX?3C]/f\`rU]Yg:4E#*h`_#<c&9dAc_#^)i'3e3o#iu"O2%:cr9l;B
%?e)o^d=5$AmXI:r`Q?qcrVkgQ/cRi$rpnrR^$5Rlk1t7Z[pT."p@dM%qP0C,H@,P^g[!$a]??i)dpKJsn%QKHIW9`1MZ<[FX508G
%Ro^E8lg[OW5<,g<^NjJs2TG8W)l%1J:WMkQf5KPO^8>N8&([MFa6i!S\(>O>1Qu\"!TWQ[nb'lebMV/_rqG0Yf^BlM$mf38`ai,f
%mcX6-mE7`\hHYG(XabR^j#1N0#M`,:op`!@]5R^kFoCf7?JU"NNOLX=DW&;)Tr,S,;6TS\Qf$W3^3[+WicXqZTl'Sqk3_R(o&"=<
%^AIV=[uJ)2HF5q;=0M$Rq&:Sa4P5,\2r@ot?G*gok\7_[]7/`g[.->!(#JgQ5"r;4[Z)TcUXFYl=@W;aouR/Vp#=5EACa3lL96DA
%LYL/6gWQY4Iet8^ZCOQp]IQ&:ih77flJKAQeb+.D?@3Kr0b52m0CBAarq"[jRg5S\S$2kdjmLBsDr/3S;&fK1k.WA<'@3YI_%.0g
%?iK3YS's$N!n32_0R\"h;&RI@hqq\P5)N%g&t(XEG^^op.;iWR7u?IY1&W>(l(c1=PaFZ,&f`3p%lO?]`'b6e7\9IO`3_gel/+,M
%^4(KQn`n`XDh!Y*^Gh:)S>>]JrM/8'V"%RDM=9ag-F1rX]mfS42j`E/?-r%)''Z,4npBodJ,&/qf9[!g]FA5))]o"i>jII3@Vk4B
%n)&p;&$hiI\Hae]=O7ipnt92)qVU3%idU^ZjmMO/`U.a+Rd0*dngF*k2cm3>4F[Kpq*Ct"K1GX:Ek]GqNQls&alt?nB(1/ae,MNi
%pi/Ags$&`^_#Cj!lZKnUIs?<IZfA+Z,Of^AXrk#<>V#J0gYH,lh#>LS^:dl(q31Dl4T*a"hVN^&Z+KpSGOb1P2WFP^%s^#QIDc'W
%n))s6\pX/VA]7.$Zo@EbkB27FlLgX)8'GaQdqZf"FO^/Z&Q.E7,bAP7fV"Pgo.a'hEgQY!lHLD(Y3r.'+3CYa<32*!UJ=V!f,(nt
%Dn^XFq.;.HiU=7Jci:OO_9o?'gR%sMF>`^fpnH"B4mWW+qFGip)X(r"%pn4s%"3NL\*S=*[t"?*hQ]/V9)n&i?dOScSZO?nYMRmJ
%nWC$T[^_YoXT"pNpd_j8S;gbCEd329G;E`YU74j3b4lKePM+/*%WIX-p#Yq7f3`uRn`&\LgBoV/q#!^4GB<Z;[l;ntIsm.FCfi=H
%Li2;fFsVF8/G\;jqI1suL\p/RLFLGJ[UIM^me5YZe_:=7n%uDj6s!m.n&OO=!X*3^hWR`]86\+ST/deCa=6sJajA)r:AFKOpu3Y_
%A8GcNG?>%j^:,%aqYc?LYlEb:<kJ^q^#sf,7M9VgP5+@FOT$=HNd)diq2sZm2r[R)l,OCNkBj\'8)l$/hF;D(K0$O8U[ahSfABk@
%ln2XO^3]C_Msn+LE]fNAhIi\@"MOc4:]J=m+IbCjq`Z-`\@W\?3W%%c]CTqo?G3q_rpoXVEq]j5s&[sBaSrDFB!V0$ephLG>5Q3D
%^"SP;jPIs\HOUeZpNS15afYPd(U_XXG0\>>(b^APoH0--Yn7<8a\U_^0#<_g]oB,lraWbHGYh]`:@\?Zp\l&AIr8bfR+6O\Wh27<
%JH,D`X/hT]/)EK=Jc+ZqqYFV0biRsdCde"Aj6cTl)Z?6tr.'.b_pSKKnW[(l?_,s+S!P4R];?"E+9%b!O$rG'"'m@0+!_La:\R`;
%T3<cCG)u*nXPE5f2\5aQrquWXe`Fb>4?qSf=8.'NHi*C$&""u?ip5,ak`d1\C,R_O>eR]ErkZ/#?Et&Q,L`n`n+!8n/oDd)7(WBP
%`Oh+7()ug:q+W.l*b:Kn1'\idLC%esH6X^4acaYE\Flaj)B2iVI7`IIZ79^E@xxxxxx].""eVJ-`)`3'8T#+22TC2fK@msd4C)%!
%gPBG)=Foat[s92Z^7upk7\>[<4F%mVn"6d.`,6gNQ)F2")a=324$mcGpcl_0@OihhkQl1SZp#d+LlI3,7n8@G^'+`I(E66?4o))3
%$Gh,tUUQAns3Vf0_U/s)WuULr`9o![o;u8_Vd/hQXSq="KfJ5,H:#?BboGRfmInT4m[Gq:IV.o[WN68Yq^_TS*Y4;;r7stOW2J.,
%fZ;F3QrbhTAa)GR]OL%_2qPh$O;%,g!oG_Bg5l5.IMDUe5G_%<O%YhG&T-/FPNBIW\U4har=/5X<uY;"@nOcdJN=DlRn;JV,dot2
%2R4#e!d,bb#8=&ZgREOI4s(Mfg'H="60Zk5dUjQrV^$IJP,GFEViC0S)^%oq=c&3)4DioViI+DK)t=A^0@TPXk%aZsrG!S#EkEP;
%re?YS*/1NNOGtg7a*C$9nh`M=QS3:F9e3K"1d-n@_$m7#MfC]cWW)X2>6"1_rHJ4t0BsWS[kYGUFnt)L6up$Aj5/nM;@9-g,f0jl
%8W7XS-Ci]F;(eAU9]MKHV^H<$9K:'d3-W]b1?%kPn_N<GS)6>%\#s&N\GYLSec"%EJ+=VbJU`D,rEjK?#43dCZL/;bL,Q@IL\^[_
%6l%i!^]45oj``Yen#&o&_4BFk$@d<4OUB-):-#\PC[mW3oM&LRp>XIAC]:hf]0;nTj7Bt:)i:A:E[]f,B[d&AHrJ80POJ7bmF@\E
%?XCJ"$E:V_`qb,P1J'DhBc@_YJZa`VhlY_id)4_en+5Vm>&5PqF>`[qYOPYJ5/-3LFppig8hfQ(?I<Tol939(p;a5K?XEd&qVp=4
%>?T-F5>Z'DEq`cq>2oJ=1i;;rEFV19/:U(Ap\@oBq(S#WEZDgGd(qnL.JGg&XV`XMofA+6b(&o&N`O<OUQtBl[Ne9mjYlhkBVjM$
%kWa,=j_q<9q<%)1bNG*rUe]qu!nl"L2BpM[bNnJ`^O>Y(gWRcA?dtQjq*f_<Y5Wb=`V3Fmf9^Ei\@m:[`QdehX*YS7+.m@kXiLBV
%7u;`)0s-'3Ugl^.UO[G#OH'Cj;*at#!n)"il;#'>oDB2WjZWr;F*V'+n//#\DaXiq#/$[5s)[l(m3>L?c5W1-NVCI'0mfG7qa+E_
%D61](l+m%d]Xt-p\3o>*Hi$NcgqS51Q&gnM!q(iV@[:T5cYm,E7K,i*2YKVRa4o+%o;F7paFq,:pQKler3[/6[kXlTaPVnEq!u&?
%?0/qAO4ooG=50I\("'Igl@kKU7r?FHgN(fPllEI.[cN-;kGW5X4_e2]g6VJBBHEHGYCBsD+'^!P.Z6J-[Jd>PU=UlhCaPV9;cFUI
%O1lof":>qbRXb;5GEiJ]KZ7RRF4qT-h=Gs"->=\]A:NBiW*cPm\rCDEUjMn?U38a=g:XtQI.e_qa,p30ICZPbhYcp'lJ=J^,IuKs
%9N:P8]=feKh(]Un47VZ5#fY\W4mjbmpfgno-\UJtAa&S%MZ4!rAK*Z):OUHqocucd*SV^7I=03r6^j$LANl9dCb%k;VNpr`d`QCm
%p&$(5b1q3Y5.I<RQr<)=Qr<':Uj^9;m;9oS)cR<N-h0BOc5WIL#6[*fiL=al?Z+:ljDe8\L<!*AqY'L!L<e>IBV0eE:m&u(e9Ia>
%Y(hBI=0T6/s8=?=r8V@FX\t-K#Siu]5&Ae&p//tT?[d@lioY1"4JDeb3N[tGUE"B?K8t!!Fp_Otje0k<1nUZc1iHmf:Q^:<1A%=]
%FHhE<EmU\mhuh%d%oV8jOFFWt"l,ld&!Gf:N;`52Z2a4V`?TuRiinR8lYu_]I!b[FW5tTdBe,C_G^o6o9u'6B'1Yd4"uQF2H@,P^
%g[!$apP.-=e#hDN*k._Yjh4QRI!tP]o!c)ps8BBtKDV7k/S-(#k4[s!K<BIF2A/J.KC(&Uk2tX]D^9Zf%<WsZ5+G.%R/Z2;S]3D_
%92Bkpl!JnVoIlh&ns&n2&7i"0]H#ha?L6NR>lXfcC+GEef&M+XQ$4/Z+mrAU5DFU>*ac,iF[)^(DdWL;St>BmFq3>#<Wt_I[0>g[
%c0j=N?!TZWR9)=SEoV"1W>kX0=tXu&Z+o`47Qm\2fZJ=QNPTu*IlAAgpkU`4Q$#;<I+ZFQ*hDfZr=@q`oS7?;2A8l2e/j),g;ACG
%Qi?-@)148'3mD1SF8/VBo\n8.dl68^n`b,ZT+AE@SI9r.(I*1onR7=RZY_80qtjT6A`QYZ[MZG.r^4=M2D^0l]Ib$Xr7-5K2NBQA
%;.f\"AYr8FZEYDsl:6u*2A3b#,7.'`RE\TB3XSSOU$99o*/18bcu]tjN^D426ISC<^.4l2K0n$A@/Zu72Ep++[J(n.gY%BEb"]W@
%_#6_*Ugq4=k!E]F`IRi@n+Fp9SYcpHZ]Bsl2OH2V\(<Pt&"Ta1e"7'aNP:2/4R?prSLN@e)S^X/$K3pcL8=7k^O1HXZ26amS-jB0
%h8SgIc+AJYN+,hcoBBrd50m;V93:7)C<WgJa![b/Hp9[iR^30fDs1lJYP\?<Ub:>AXb?M6CFMH0ZJ/T?69*QP%b!n3U*$o5p8/0,
%I\*;,VRGCm55dX%L2Z-JrD:aX?0t.Kf&"E*p-sIs8'^/[\o2(Fh2(sM]O-rn^O<_^YkWk9KR]s9o8YBQ@4]tfNl$pr3c\=6rjGi7
%o2F_U4u"AfBBES$rnYi"b=?M#)ke/Hj1]kH*uXg\5O9W8nk!Mu58i1f\VV;SE&X`'rk'lX[`YOug4!H@hsG8p\W54u[o63'$.[rm
%_A>D4)Z3W:IG,Y:K3*:J6\"!.nAi"S,B)8DB(;[0CkI]?nL<3$AU;3l[[!ONi@3O(/,Y'uCb%l&hl#gCK^/r,akQKFHckc+]_eqP
%kPoLZd!P-:0gWpI&sPMg)k5cch^_FCVj?(W.sA$j5>TC"P`d-[;p*D<^UpG(*f@_d/1l>H6_jZpW:7RP&\S)DZi)5,nA@1oCQHTO
%Ee=Vd0Z?0qo`*b?0130&8PJB^DZ6Prn6gUkb[C^Y%8Gmnn"O=OJ</o/r*cA[r_kJkp1CU[6QQ`Q5MM!)nrsFXZ]/5TpC>%>">!n:
%"hF_ag.Zh/Vr$HnEOnq$Ir1IZI_LhGT*@CCDtukSA=n1m[n!Y4@q`b\auUTZddfIj%dAJS]m05HRh(Tmn$d4BmJ^URp[^,.VDf;u
%DroN\9@:\qqt$T4)rp0P1s4XAh_2*04\>Zs4@pXk,X!ZU_s'X&EmRtcp$jS]n?Wfm7^DXsA-N!2TBP0=h/6bI5:M0Po@"b:K)+Fk
%:><At#6]<h/>2*GeK,_/$(p.r[RHq]@sPDo5DeLHr71K52V+Q6f,o2g*k$!?Xji;Ss,nV])>b)*Nhie9s,`s"S!h1q77[@/c-;0]
%hHk$[<BO;%3W7suB>=<;0RWPsY?k>m&V:W=?iBudeK=+93![Bi^q[V]ld[NcLQgVFVg\',^3o\Gl^R4OgU@u+?bZO.3q\]qoN1]M
%J,.j@g\O-a3#S=,.E']o=UHJ,s-`2&VNMVk:Wc?/T<U;QrtC,u55i[D8TQW_bIdV#r'0irs1:UI4,p/Q48j[/^Z"egFoNO2B4YE?
%ZP;G?3p2(n<L2+#'jcXKos-u;QY5nHSe;g1c#LjWNRJRZSEa1R7,[to/9R?Cg20s?6u[HQQJ*pAe$G2FG>KYA:\3h#ESL&#:@bOZ
%Cm[\>XJ@Vp\E9d990P7hbUq#E<5QQq>O'PO1.5h\(P\F1!K8I!V`EAjO\VgE7KUVCH)br=l!S")C>6*HcdFd"*c,[jnk<F35gCU,
%iE9>R#0X?Cl>3;L\hui`GclCYdD7O"76XbHXME\-mnUTj*p3=20T<T%TmlC*G!(LEmDJ^8bV<T=0sAF`feQ@1"sM&;b<CSl9AM5V
%a-b#Kp,X`r7PU3&)`c5;*PoTEVe8AQY(M#HrJd"i/CmOV8No&O3M6;=gX_W"]Y%Zt<m!O5b%2%anmnPK@@BY'5o=48A#Su*L#DGO
%a,rSeQ\PO^Mp$m5^etCn.@?EIPdl@Vc=\,T^rsUXQG@fpP0@`I`m[$$)]LNj/Ch`$'DPJaEQXJt'qE0*3/t3L$D+#F\`bdWENp"N
%a9OZTI7i'VRWQ&ZN3.`CN'VWm?6EC?\e-qMrE,"E2I]GS4=3373TWi!+\'[lQuZ"We.%W][F"X8["D8C:sNrA>PM<ZFMqj4lZpUM
%I_>k876@HgAt%2KmI2[Y'<pbeW)jHG_5&;(osg;2aCpp'Ub1E[-1!5YC<(EHbP3UubG_>'W#9MbR;.4la;1IO"I<\/T!I]N)O#]X
%dC-<gN'_FEP3Pc1ZX/K7N_cM'\;^9hZIH;BSL@>^WcrUDqc>Q@?Nie7(EL=iL=2V`=e6cEa_Q[@;Yi52r@+q&?"05Q2kkJ"VKqHF
%:RsebLnVRrFh&hFn,?)Ej]NU4P(Pj\A1RHsUL*S<./<aU\^+h/E]o&uUf9G%oo-R`\-*sL'jbLD"bC1/!`fB;!2QqQi)l$TmmBim
%^d4TK0OeRXl7:7flKuu]e\."6maO*ld['3NUo832h0f$!IA=YAb;Sio_#'L5+,,G#Q'rET2qK!+"spGF"Z_k0R]"S4GW?"O&b-^6
%TY"&#PPS@U2Pa^Smn5fKAZ.iYhP0kCKtm%_Xh#iH89t0NA`=/V5-_UW\Ph0=ktkk\Vg%PD?)E+#HP0)'6QO^Cp#HnaBH_-9HWes8
%/7XhF<?H>N/'oRaZ5d/?P)qq"lN$aTnGpI3DtZ:CCChi\@&ts.0FKik"-5LmBnrdjQBtGd%_>tT.CqoiWm;Qb:F3b31u'D'dR11(
%-3dbc+jW3P;NdW6S;LXf:`l\<q_hGhcY`"6VO(p6A5iYjA^M$JF_Tt#oY/WArApr8o<G9!;!C3jTG!7",_6F5:GpDh:'\JGFKYE3
%9gf5DI"&0sUkP::,pZ-@!`iK*8eEc=UrtM/]haLK9:#H3VYX(P3HJK63KDh0Y]'j?;bXuO"B0P'UmX:eMThD<<d&-:LS,9NTubK:
%q,u[sO?e7dGQ=_'-;<33W)$,?H:p'mZ\%j\a'mJ]*uB6dWIkn:^*Ih^_b:RA9l*EVl.%56RBq2sL90I)T$*OJXZ*j'IgU3J/5ROr
%[:fefN.q"V3f(YFdKmb/;i%^r6A"MJ4#,2c];j<cb(,F3h(6_qN)crL7TR.X-%.J'=W,4NQ8V][=C9N'nqeMB+Nc=fIju&6%s+;L
%Hi'6-(p"jD56B"PjG2<--H^5a%Sp+8;r>"rOIUR,`4s;,</GBmF93JQ@_G6Y]5jJ'^jA_VZ^cY?5dRO-EIM'3;QBA?q$Ed2dkpBp
%'"pK81(U,i/(Ji3p5?*%+GV2hhG1C^\tL/M*3QA:rW!]qO#WYOjl]4t73]a9Pci:kSFj#o_?JMk4;Qe+<;/Qj-)!]^??lQ$]]]Xd
%=Hlmf",P)VnEV`,<?>CoJV`CRFKOi?36A)<qOHe5.*V_=Yj1bJEB.WV(.al#3nI79CFW3>N/*p0l@aHI)bO`c`PmCKN%;_NVH$h5
%acnq:odU>";0T@*K@80fQR:2'_XMI)/>BpH;J4K*,`[lFXB9rfdqT=-H9*F9LgjY-VE7Esd?OhbK9Ob.i+V\t-mVt!4aO#<m?]+&
%)*nqM`\`TQ8ODC!K"`XU(T$#_4s&AGqIF4:=Ga@J?M2DSp4D4*`<HrJB!e,l;9r[,!T9-flVJI>R;Ssi3Qqd7R;[=]2s]UbG3#(\
%/B%'5A)(?#&pNr1-eX8!2dt[CE15n:R?1G@E:O/a+?U[gfD54L-95q2<.LLYJOtOc_FgV;qh4H43/b+_!@4b.+>;nn/:?uDc^tu/
%V7`^"eE[2IM46,(8IDAK&JX@t(nBYF<0.EXJ0]6Zbj*X+LKrcJ5Up>k_bX9\F,HRNH4hS+Va\R_K`hst9pOq?&@7sg=ST/&e#JAA
%*#[`KRASTT(e/pRQ;I(NOBaXt@o$s>.-jc$<?EFi(ZPP]q\'4J$tDFb=\_KK/JH<K<Dob#!LK<0Ad'PCWjn),TJ(B"b!O3]F."ai
%lH@D_%f$n1huqWg:WtK=-5&hg^F+9JQiYH#5`q>\9_W2>mrQX'`Hp`Z"_+;P,P.oM<\@i)i`Wfu=Y1qVFcc9JNMGt^6W)6CWRSDK
%r)#J7M$:/<SshWLH#1NXcXskRok4ZP'85P4%d6b,ojt=#HfDK0=sAe]eZP'k\TK)G!>%5@lWd?)BIh+WP*A<V&HQ2>H8U@_TZIsP
%K*moQ$G$J#r#Z?J-AD/o%VQJO.<W=BQ,2L%9[(V/7BD83cYT1AHr>87/1u?eijXM2,3r)=M&jOH#a$!\/*"('kiS:W0k;6S.*ScS
%`.C?`iL".i8=-51dsf'`I`",L);$\sEk^j*ZaCh:3U$:AZlfYl(:t]S?(C^CA4QS6V5Xl\GXl.uHpJ#`U+A+<_a(h<QVQ%VTq3-6
%V<B0m52]/)6taMRjlej9eHAP3Z06h<</MO9U^FA(/dm;Ah(g93WhiNOK;.VC<a]&GJ>Pe=AEe=APA9"?D4-&m.\1/r-C.6gA=9>[
%=4WSEO/H2k#4%Zm+c5jP8uHfq7"n2[g#S3J'ZDkfMZcCm"F0t\1Lkg9KL6tQ:rK>7_,'"3nEP`_X:.Q0Nk,k.7?eF\<oNe=c4Rfa
%kKpXCRgXH_2"oaX0j4gmnAja?`Yl(#@]`0a`:[`##.)T%A6qWdCe:W<-EdbJ0kadI\YM1+6#KC[EAJ\_k/ZJS6dX"EN)pjJ?@A,n
%'J,/?Ne)*;:73s$5_REn;%lo*?d%1'1aIlBU?\O3XJ]#Xin@U;&S,X>IcVGLAu9&p5gg1CKd'r:Xs/h1`!`.Z;E6.`7-sZ`HUFj5
%o-3=B8pUs\PU_rKMh[\?227j,5&ol!#k\9LaB#%VcOhf3=OL;Yn\QIY&NZ(<\R0qE%VR"+/b_=q4EqUDI<-4RC_(g)%#]!uK^t2E
%4,MHj+1u;'fk_4.JP?ISMe[r[dL^P3qHWM7!7_S*,%Jqg)+(>KB*P&%.YC,n`HiEd8`/ciNHQ6JQBi$rYBLiLHLn'J1&97\:7Xop
%FHTeD0D)c3E(Mg<0Sr3.Lc7:p,nu^q<N<*9<Z6r0.T]=4;+=EXiHWX65"=>!Wm&K*i(Qa@b:j,(lgM(^7)Ns]lXE8M)!&b)epsjO
%P6D_9.>g(tL$N!:aVp-&+=i2j?k@<bp])TP<=0^f?0J7*oeP-IM)d(J33,4ic>"jRE"Z3/oF\*S-I#%D%5NH[#SJZ/=EuZYlB=1Y
%ej7cr`'qc6=<D'"h?n9.,AA<So5nj8cA#2?&_d3;_&S@"ii"dect/^Kh?qa3eB8nD%JWg58A`$DjE6[(TPI)e4]VN^`^AIW@8`dP
%"?H#Lg,d[E%AM!L8En6R'kX!%\JLH.'XiqY-&VUo(8F_XAG(X&9mA=(.L;%*W,cKc>:'sWZraM'i(]CI^mrH&jNR@?$#7aqmJ+mF
%@!ud`<?R$$*^YC%oR_rpXmJG)Dq9GXVt'E)'bH?^Z-i6sR2,rqd7BQBR9=Bgq!"sp"nZDbl*?*K/AbuJSu4T!kKbIeg2frXTh*P[
%_'I/DOq&fV>2B&OX;:220Pt!U2c@F6KUh*YOhaJm[5"R;7hK'q.ALf5&8##dTgD78gR7koL"(s"`[\GO5b1Gb]eTrXTgWauD\ei"
%7&Z[]]UCXUJV(2.">>t]+tPn`3(/labudZQWd9#hX\1t\W3*e<"Aer_&m,s].&b/BB`R`n+:3r]!g6@am6Gs&8fm9?UP"rWXMU49
%!<g7Na"g[H$<N[4JsV(S5)]O#l55@hMWUdsiN/+4980]i7-,f8^-7\L?TJ\$p!E5,*<8saBn8*-qXUS<1lXr"8%#<PaS$6,[)u7M
%c;R_2[7`0OanP*ZLfTfnQm0o-M2<[D`m4lqp;W+O*@*d>PA1B!D9B2&Y!,5g9QmiO>=]'iLmqG,%1BgH+s--TSh=fK?r3P`S/+Yu
%D$9AQAmeGd/eZL:!1]g9Cbl\8@O=5k;c"/p?6UFY`3I:!'#4=-$D`kWg5-5Y?iXi1)=aZ"(8/]O`LA@)lEqkV@6b(9!7"8$8P,LB
%(os=^M<Q#e=U7fX7@@IFVFK!b4`GKu,&9g:M!B1#4^,2Ij^aq-@],A(TY$S'3<[MVP'TfFg*4ThkmH(9.D&m#K.A090ikC>>Y0)S
%eRSRU+R4T*%gQMH$>D"bd4r^*,cs3cn9!0\j:e@5$`\5Ke1*^QjYA7/WTPQB?>974Q4E+uQ=kRdTn+Ca70V98PY!qZQutq&K5=UC
%A#<aIlh+p$_B4p:@p3iYl]\:1<Vc[+SBi\,dlrBiZ:(;G!_adTb1B.&_kcg(H8C^4P8.V>XV1RF'P)'u3?F/"FJ%r!_=:4a(dd+]
%_b`Kom-B<"X41HFLqL*Cd%)_bGhBc^qP&^:'se1OPq3U9Gc>a/&PUp)"`"rT%U;[07'E[S^!s<4r_*F4dm?MY\XI"`-FF>-&:u^t
%3FXmNhd]PSW.84\'m7G'!sY<j=`-,PD:-EI]lE58,n];U^-YH^fRKcsaXep*97#8/r%N19kGj;JWC>m]OMn&S$tt96Sp8QS=-,#?
%s*=1--U7LnQbU+[dlG)>m&Ro!ht=b`q/-)6Zb%3L?Lf0JFFB<)%WQr\d2h4_L1rcqh+UuojDZG55/cRLB4$'cs$IQE*mVJQPA\Z3
%hFuRk"8p38Mh=.5XG]UEO@ebj]ZBTY"8p5NHd;'MD8O:4jP@a[*9Q.3i>pj?AmIOT.h,cHc7_mq+68iE/e7AFZd%>#QdX,Ab[ZOB
%365`)#'#`gRWS(%2`5;tOJA7\bTX-(D-p<R:bQZO%WHu^?$X!pPV23//o/nS+\lh$_dhNRV"GmkCY4`H\us_`P%pSKVQ/eE_Rs]7
%-nJNj+4Q!R:QbZaY''%W=R3N*<h87,#L@NL_@bVga<lBraH_as36[db]%D4>'Dru.2X03$QSpDNe",3gLP+C9\;S6EgUN/o>hccD
%_joKBFrfZ##"!fiK:@tjK3[2jMg`1#S$<T%GB:)\n#;=bGe3WSh;f(O3P3CQ3Q0__#O^gdDt\iIb2l@3GC\-]<p]mr2qcW3*8fgb
%*T[&$$1e/[2j"sgEds9**pWe2+nYgO3:>c[-TLAM+?)9Ja?bi*OSSWUiRWL'JhnD-oE3n-A/#8/`(:c#\AZKE+64+`RsgB&*-ZCi
%@iT]4OD>j1E0,.2oPfn=*-ZCiK:I%'OGb*&EL;r[m)MD0EcSAoEg2b?*pY:'Qf53pEp3B#G<*n:!/ET!iZORJUEWKXRKG-'^hjPl
%p&U1p?tl8$3X=d2!R>b2)%LVX1JQ6F*U(j=/n2W?@TsF62i1$.\^4'gEkg6XIu%US+7tgDJ%0&diB<6S8D\]rF^WH)EioKpG^t,]
%ZmQ)<fEkK(Ll3;+l9-LVP7X>RB#e34j_-%$mNZ$)UmK+_gI^_O]%]gBV`W\Aom;Y@S[:Pukmf2M"5N<<L3^Aj*A6j_Y'7C,:NsO:
%`B;6?%d3E`#<^E4*9;\V(#8mcGbW,;a:1q0OTTEMG<+^**tE>3K0eMtLHOh\&=5LAVGDEYK-'h`a#s:Y!7s>q3t?;VP:d>bc]]C[
%ER9mj%W]r1G5WO24`k[oS"=_AOJ<jl`<!,fG3\L9f>A]%m]\(&4NM)0\i@K>:HEa3gR^"CP9'DOe\8qH:]><hqk!G!O9;*\_$@O?
%M(!h7';'AdJ/b,^`$(.g\5H+Fjb%=1l-=Z9D?m]C8J_UloLTipG3P3_+6:paO3Q/0qQLG73;2%U^!!qsZ[B?2+5W,-48>4EjlnCH
%d-Vh2j9Nrp!H*@ld,aB!SGrGY:B0n"lG*>o*k/mMF66>K\^MQFS::A#`Tc],0>>%\IE<@9Io0Eu;?'Sps'Pc/qHr#9r:/dkS'0Pf
%IsCkQqWcVmDf9O.r9j:<h;tbSD]cIdGETN)Na-bB^4(ESqR`6On%QL"ZIrq9),=pZ`A$QV]jK4!8t9#J4Qhi#\l#f\7+D8lS;ULM
%,!EHS^LpFqPKcXO&.tlJA3,bo[=PjgJshf90JL7,?reLj,l>5>,u;L/SgH@jf@.g-KYVn1``^&`a[T-hD8!'JFHD_q-$Ti-aKIG4
%*eVR_C^kEgk8L4q-750H*g2D*KuN9PigMX)4s`Q.cS&2/N7pQ-iY#)f5t6*]8b8a82Zd-jm_L/4"%]Cg+1580OqQIU'dYQ6&48%g
%O!mDie'c&8#FPp3nc0=WQ;QDR*lBYu`3+"=*)u;!bjdBUAlVH_C3aC"1FTjrOHc?(JU"q%>91MXc4CBgEMd3kT;4YLbT9keOTk`L
%=\g$^?qT]V2%*4#k2R$r$^6s0YU8-`lc7(Z#K%bQn2h(sAaPGLZ[@XD:K/,qQ<j]abhoWs^<#Y=iIEd&7o<*GP2>=YMHZQTcAR8t
%%4s^[RhaSL/0pE(QX&$a%k"L^=hf`*YAo+p0H75qN/YVb/5?-`@@JRtg5II7djgmQ/36`67<_tP6!`SC3`'_tnmOm$)"L7'QE4pH
%a<o:E1,pk,g]JeW%Wno`$fFUS:r,^Eo3#>q'MQBZOcRkB.:h*Em9kKC=aYF-\oC\.b`&H\Ctc.j4_,S2THq3U.m1)/1Vnu%,%4%H
%AbOtbK5=)qYh5]#?j12Jg^^1fV?+V(NMrV+`m-C$HZB*)1Rs`2<'';P8br0pZsD)_TmD<.SrGuDL8(!a)&=ne#KTb!WrnWYNehVQ
%:(Kia^j0&QhDt-\bHa8jM[FJ6Ao\9e&O]c>3ZZ2Z.\c1UC^B^[b;A4sVY5@ZENK14`F^6Af`VLBRu9>ZZ^QHp=Q^Us3/AXVrE`5M
%\WqkOXn&gPIqa!R1e`Ac;798jYm3Q7q*?200sU]Jm5:MVE]Q<QEX?@;RI2[OZj,NQ`.<"G^?1Aks/\uYVhZq,`)=ANRD[HT=(2U&
%3L`F2'p^P3D_^e*FPBu,TR_Zb*o[k)+MJR?^'U`60DQ@3[?;@C;Z$cR#Na!+neGM+H2.b?0rUF'S"Jg:d39,K]R']Tl6!lH!EJZo
%@>_]Q`ea)EZK:)`-VA"5k/E`-c40o]RRFeLkgl;?4rO.b.(fb0YL]@0r<2:-NY%-<6o$<:&n4])1B]>i"1G0(!5YM\0WU,UOJC&Y
%MM"'[BZI%l^r`U4!?Q#1MO[G%KnFeI<R.BXb]3o%=CQ_+"94HeW0Fg3Z:[$42MFU^MA@mr\@Qt1WZ'=r3`87Z1/DV(1uWde.S.c>
%!`nM=Wm7H^q_-m+6>V&UQP&6tXP4/s&IU'%ZuNsl&/`?"JOhWN:Nq+bpu!sP-gZdt03#3uH:BoG`8$25RbfZC%!I%Y(+Jk)SV!s-
%F&Z:dN[!Wh1+!81<OY-%XRJ/\q,R*^`8%?`a!<4Q]+]m0!skJfCWjO<$jr38#4i!"0^FkIFgN9-p#(dmb"5#ZW9!IkRZ*?Ih3R06
%3hKfd(",LSHGU>_`UfI]D"D&XV=rm0)0-i4WcC,!1=Z8Y`,C[1+eb@^,6>,BTpEogiFu>&;+r\'f,pt8P1a1Cd:p9f[b)$0+\%Y+
%J==90$BGR:"_KGuWttg;KaJbMP@EZT4?,fQ:,)D_b*k([#]hNS]SPIpRiO=FUk4f/"U3+I%%*4ajKa@L9!M(6X!k-<Po!5PTm:R\
%ooq^^M]!-%:<-0JJODO,d2Gj*ME(+2hG-GH(0K*bP/gQ8IarY,"X\h6Z'5j!LHDJ<?bg)^eP%/=2%kWi%EM(SZ3Q,3i^BkD'ANm0
%dViZDLkN%(5-IC;NDc(c09<_!jeVTP8AI5!+,)/E7mkD>K1V):C5!'/M^&(p?:-aWl98#AXL]+05`4&/m(%XFUi/!bilW^'^Q!d1
%/L\&0Os6_)'#Fi4W2O2^kt:N>[e`E4V$LVDY#qdIWtQK^&jf-+Mg@aLd(GS>71kZIn+cr;kWpO4\t^GjjC]HA_KT2=HIN=R?+jBk
%aR!Vs%f""C(Edm:;_W9[?(O:iB>3UC<D]SV5Vt!LGfqeb4S'FPUIsS`T@xxxxxxxxxxxxx+sgU<U4m&Y>US3m29Ct(k6]g110?/V
%PEKmKo(+,5n;OX\oU357AiYTC4OaKB=[#6R?KB5q@+@Y&+c\g:5m:5;r%q%0&sCVG^9YVn1GuM9"f@_&`@^A64X(+#n"Ru_bUk")
%/2(p6_Ysqa$j5As3#0p"`W&&_0AW^VR$'5)e<Y4d4_SXe?!hSr8G"*%QJa/er#-km^'+p".k(fThNJV]Yj(NGJpal26s84J'CQSk
%*(8`%TECk^0`DcsOF`ko0MA!MlkGRO;0591[kkIo0-Yqo&XecJ/1ttp`?AXupt.9(9SGN(N+S]V34.)I06+757@<%Q5,D,Aan6@4
%IT#ju[;<(CA.!^rl00h#d4/VLB9!$ZKBs/ZW2XW=AuN7R4.!q&BC%=fek5K4T#I3@ZT&1Kp(MbXqOi1;6+4oK>AGH[>GZX-cc?0P
%e0;iJ:(`0ofg/R?R)F>X5[j!2h;&_)8)dL*#/KfT&4dS[X:]Ymr&A2_+?Pd#+S3tN&@(CT_i(b!o<d^6YX3&cTGFj%Q)K9LZVTAm
%A=iJe*JK*>K&R>5R_#T#T1Rkm=:!B+^#)`K3-cSWT>X/ekUI+=L7gjXbVPE-377b"Un_BHk)g@c_PjH^"sVhqKe&3H$&hAt?eg!P
%i].0oUYJ5q'@;;]FZ2.'<C*j^$UsHagGX!bqUgF/"BS%!OoqKo>n>),%_loaG<4D46\B,j.3)MT28dt)fI$t2E>tQejiGi&JCeXZ
%8-$W3?m%L,YPl1P"5O5$36kG9\])+T)Ze?'=`2jWXO00610'&O,'iql(=lHg6'uZ!g"guhD6NZE*^PAJcEBOCZ4abpRd":U6.RH)
%%ZO=76Gjl4_,s6ZA.[E\82-\"*c)'+,F<pilO@MZgI`3b,C]>I9umL,*!"aAanI&)LpEPI?m.nUp_P;4COUl>i4eq.T>j*rG[;.G
%`i`\>1<Jho^g:\5CU`T%?+?#a_GL*B183Sj-j\1<Ib*"'bk1S!-?X)[K>[LVhc=se>%*9HpR=]368>;nRtYd[0lt^t?kJPM)uA6b
%-I5'N5p4no0JP+F6N!Y:L1hd:lQCMm79cu&S2#R=Tb5@#kO21B/k1]flURVV%'Pa9h>B%ka[V2VW?u!'5a,9&?ij@4UY_G9q<bKF
%6*NU$2_6`f1c5[*%p=I-Y#EDV\J\)EkLPPtUUWKZK35"T?C2W#ZfA(Q+MrIaWkf#6m8I:`4S0]Di@BZ1hpq;#*q/s6%D=&Lkshgf
%q!QaL%3&a&6eKD@jJuqFp5KcY6Ybes_:+XBUZ<B*#19E%k9k]4![F#Ce]lb,c7Z(p8R1-F(BnbBWt*(2W3p;];>Q>:!2dRaItMek
%q]g&f)_6R(rUiOmh1=u[$"Gn**AlD<lTq*pmQ(hc5u=[JIgUXSZ6"X6gH\ut#'O^P>/+34c1M/po3>4P)L/t7XnMVo^#HU7qjc*'
%/s+7m0Eps:+F6c!X.QRJG,<N+?I;7"5s(an'$$c`;_$qI,P7#e"c4t]pDP>``/6HnNfGlcY//IOSH)EZfNp_(6PQS/Iig%8l1DH)
%''hA*)>\SuP+hsIcEWB-2R\pX=P%`pHg3"O[X:i06M[-69X*XAUs^?[HSbkqkIc89juVt*VYVa#/RM_Rf8nlY!\=_"lkY]A:qC<u
%'7G)8K.3aUd[k^bF+e4+('G1$l;jRjRf'mkGuiOCVT?/^>ce*ns2"d*/VUAC(;ZF:;q)Q$[2fM9^Bb5sC!/VHANH2)lSZ1G\m,[i
%f@(VZ05\NpNE]Y?gfD3n*'qq%3e6bFI;D`ToKD,I":]N!^rJKTA`o9+@>BSNJ=+=3;/Dg_Nidrob_k.B^MAp$nGQZt/5:I\HVcA*
%2r/XsqmHsPF?@iDfD!H.m@upf8oinoNm_&XFu?g=?`<.(_;m(;`C9S+,:C-eRYG2mSNslWoWjR5TMc`[&<NW..H7`s8\QN#^.6UK
%;+#jp3,t1?KJGFH)l:=e@0[(JRPW!sQ>*2qN%0PoW:<9Gi$+JAM>#DnW[9"_Mn%`FRW+7kl;>8Z+jAN:*]Z,F+A2_JO=Pp!!2TOS
%T@<b2e?Y1d?GLi[=Na838n=6&>$;*]b1d2c$\<:0Kk_<",2b;76<.%&]9>)liZ)#A;baNIK=I/=-$PFeAE.X/Ar_RSo9L=]#;.=3
%.A1%u.\Eta&aLE`rGr_9U8W/k<LE!BZ_kr%=?mAi^E7!_Z?20>-^.$0>]\i`^cj%cN:?<(4,@?MDBG'W=Hc/*pL>&jfZt>-TQ-1\
%U<n#OdP&.9Z`tAE+K>,$P"R3pgE)5<'FcI)^=AH7-[hGX4*I@%oe<I@BiYE"$EVi23tNFffbWlOG4=g7=lal2jAV75Tu4%`.9h*f
%qPT]dlCU)J89FPuN71sCT/@u0TeJ5^o70p<j6(IKG:./?(8B)`J077@)*^Bj##HUd(+9G`SAY^^2a8\qY"T&b_uk5n_Wcsh`%j@5
%_X:qD(H%@9d+KC$fLhPoe2BjVSq-/lh`u8`@u0iZ<WfVg3(nu.-ZNcf#HdA;R3B3pAJE>@41.muOF_?)^e"S0f-!:60QF&MK7#,)
%+*bN*]ML/Xg7HN-!`NM<VJ#%YR=aM3@[+s,e]&0H1F?766VRR^L(oTKQIuu)Ru+55X[lM3i13,&blQlN%2(-=6-s?X8eh%:/-hEf
%!]#B]#T@#G,--@LoW\VZlPRb:`16_`cU2Ydf`[Hu*lI\^^'#Jk[tWY\9GN[M`1+-.q6n9H!BLogS)KLm#*9s#oq4?poUrb*\;?Je
%f%RQeV2-?q\([ZL;TE(X2oMMFLplU883+Q:;pi"C`@//VEB=Z7L[<'3ME&><R8"n,Ajh3\ZUT5Y1dn_l98]>jTiG01Y\J@:'e#!.
%Qo^<r5'D6X;A_5M9prD4NB7Pl6=o4Z,Qhur#'"qV80OgNY_T[7-ORL_?D3M6]>7@/O8BqKRc;SCUDWV"@4@!BPSh]@jjnHF0L:3B
%K8ni)qo&S$F6]q:"aNQHQmSHMQ>m+?^H:(aV&iTs.KVX(Z%;,3Y)J+-ipA!!XMg*^Z^S2Ic<<:SgjT^qE(AZ]E<<:EmiEJukKBsk
%f?Dn$^o>:F1m$q%l[XEP(oA`;JW.[(-Mb:'@U;X)KE->AE0iF6A@8)!ELDd$)GN_0<:pX<m.==l:2EV<3Tp6c$1-bAZt/QOY,5XQ
%&D>PgI9Y5;8^"3Ha<We$bdJK`m.=:g>@(niE)a;9T]@rpFIWK3:.NKnl+tf#MJjU@Tk&9kSLHkG@[:_"k0Ogl'LYkZ*Mq6[;n1)N
%eh=EUaKecj,YT+j&=$V!LfCd)2NWO!B*:hG+<#IN[:NXkF+lJ;2mc!T,)c)(%R&8b_/-2'@\+S<[^N8=P((NeSe7J:et5$?k5BO)
%"gl_b-T.8DipSL-0aSd:=suX-CkJKP$)<+WX'1:E>f'g<k(&)P&g&@eqqQCg$CJFqi"iT#1("`j,raR$JXjPl%:Tna>d(7IJnYgl
%UkENLj?($ecId2(;KhjQ,P#iA_S!@iR)18f/*A9q(f\%t&okVe0sB-<`AX1Add9@W8eEH`-d=KcTjuJ#8=qDieC]T>Z5>;k#Dc&&
%i_i2]Z+19d0]126BK+UsB!-,NB)SiMrpN;u)C\Jo*H5,%(WTHg$.9ZZSUj$4([`gU^9(;8kFOr,6,6F)Nog@A*BcHSe]a\tJ'd#;
%(E"A\Y,uEe4b6UM3p83;nHeRuhmU3'NPb#!Z$oIQ8W`-B5Ni"_a0GcY)L3An,1it"pS-L.(Y,+qD!mtiU.Lr>ADU?3,(A25C>FGf
%W`o]\Js(06E_n;7gGd_@H`AO)8#>4r[V$B&1,iEbc^BFu^1G*cKR8/tZA,,hj#YQ^V$<r@gA,%[`^\e5_**fpG<3Dp:uhI:(RF,R
%g*q)tpnVS<S0e\*T!8SBo-?@Tn<\+TT1g?YfQg(^&S<_q.q_%Z(/tA(=_+lKboP8cX<L":/*?kJ,rmNFTuRU86-/>8[V_UoGChW@
%!I?`g\DNTW+/)fHb=T!JOD()MV,G`V[Cu'?P!6\M=/)GsAS7R$l,:%s69EbmA!9i^n7_ASAAtlMbZ1&Di\TLSgGXns".Spu6,m5/
%^=2n"hbb-/>NHPPX3WEE(=I]CQI1n,]/H1u3inbS`&,l?,b-l7m=h(^.L;pSC"(3mB'7fR3q>7#8<VSkOD8j*q@02j=m1#IR%<Tl
%_4$"c#>=AJD`GP?HK\,k;W9CW2)_>ZN\""!RBl1[]S:^67=]grf/(W*4*V3<$G<6ARugpgLHB)(^(9kM^\!E#oX`4-]s(QZgX<p/
%hVEDPJ`#iMI^aCoSR1OSGcWj#p)TT>f7DKbBo;JPlG(f"5Sq[377q^E"`;tB!r&5QGA9LT_a0n]*3pIuiiE?B60g.c'nbCrS_>DM
%j)K"G5la'!O:&<@$?)5pSJk3^H!5oSA6D!($OoF>JgGHtk]9KYS:VTTV1XA)U&JQ.V"=#j]taf=Y3l^=ctmg\51<2,\hIpS='I=j
%cg&;X;/71o0JlRL#%[(ijNt^`JK=j&R,-V>W`P#u;+mU)J7/9"fJk'nW&mOLD*[[dE=to4RT"7M@J'%lB.\7<d>3I736JJ@MUSoH
%$hP"7k[jMNCh;lh>7Lh`%7()(OBLMeTU<@OB/8ae^oT(pMFh;u@,IYW3L]J-M2$DmL^'e6qbW#1M$*>bC]b>rpfdl`FTD3^?JfJO
%/-V"'+?@'[<p"F5"Jcht74!^iG]78D+D1q_6!0mC0UP*jXG8&9GD7Kr8&lA7-8$YND[Sl:)X?Ud^MBl'Kn*'sb2*h=n6(sdG4,r]
%C(aN?`n4/[!o+adKaufEfR\8JpO*gq!Fi50J;]C0j7.(\TpG$H;$QTAQp[FL\j!K,dj`%2=RFC_-&<"pN4,$ob(DU4*_o$CcD4uQ
%8BMtV8b^gi%kDh-PY$j9K:6j@IIa$CFeiVPJ]c-Vc[uu@j5A9MCG,Al/-:q8E)'JX/dETANW]Y#2gZ+.;=Ju+o`\[Y'G/@='?)#i
%r1*pIHkF7LecBgO0Sj,[;8r.X!C5mWe1u3s6#9&GeZt]M)thF,A5[!#"70n'/130>-<c"Sm+e*KYZk'Ka3/&W,QP.RdfIp*UEuU$
%eqc5:D?RmYN=(;\V>s<OYrf0\r^MG$-YjQuLa`d;(psGr3B*s)&2D?F!6/$RWd.7lTIc8:+/rHFi]FL?C;dn/29NLgF_rAj^CRkm
%1tkOU`@!oeQi2u94d4r=a_sG*UFM/cj)V1L/MGD!>>e1(]N_LE1PjJYdL?'aS<2\3+:`o9-K@(+I1J:;J(2^-aBm=V<@L]J0Yp/q
%`2FDF)-%qNM$OS!(<LK\X:Xt$#hFrtWQgSCLa%A5%*:+%+>4/Og'\]lZ150.eG<PEge3lc?TtmpU4WYGTN*&?WfA,?>)F0XCLUC_
%:8Epg0NsK:QAK@*$%SCm%T+`#fj.8AWq7O?>X\X:g4<jr@@sq.*@M_/5oW*&C=&h#*@,1Lp)imC@xxxx'<5eDg&(\X%C;mYh5^W^
%Y7.--^q&9E9-@1n!c`qY^LRP5Rm(N7+>2@^gcgN(L^mImg7/.E*GDi:@cip0@kajd4O%'tWc^!Wo2l6%#KbL0Rl*QWbP+DC\nSPY
%etdtI#K]kR0,_CCM7lu:,R8)b?,*V%3Cu))'im:`aFn+SX-NsJWgP$H5Wa_#KYf`E$-<RKS*E8K$ZmLe!$-%TrP!mj$2usZUm:Be
%FepFk.hF"tkMflt7RV>MRU<VcA:-gga/M)N'ZWJ=+3YX>^+K#in?-JS0LW`;^.a34[2^H$"N6rE`i5ZX=2IgU;km*/<]S*DX?nmE
%8$d:(JBMBodRci)S$WG/FOj#W/,.[#>@!')Ns;B5qb/IC"[CDfQdkjf$;@[eM`G*9Ua&YC\P"BhaD&]5"1YVrCi(#Ro@AelB3`JY
%eUL=hT^p&XSAUG*T`^^ST:`2nGcc*2X-j)iX^i6K:SisOe4ahD>?Z`KVL.=0k&@25Y()A7B9_JQ#]6Gb.c[>=K9k#81bUBpp8!>_
%1m!>XHp9huG6*hIR1L01gTS'_%LdO3./S:]7iX%)b8+*lG+Oji'NVEP!XfWQq85r6k1,19I&T-"qk=olna_$!l8,Fa!!Zd[7kP-2
%ZkZCf\NmiY%N9.@^KUp`3/pRMTWA.T4q+I7J6%YErf1d7>,kl/3F09UKeddBikVFOTsA3*bF,sp-&NSi'mXQ6(X=*IM4U2/M@5Q-
%:e@WUM9DU=:e>Y"FF^g"XaA?t<>,I^`YiR":7qh:1'[kC57r-t_sBS]>iBL6.Fj^r\1C5%LoT""F?*Ug@QiZqQM%rohq!tN-7%%B
%L^lD(Eo/dM0Mi9phQX]r[33c?=.OB`(%plO^NrWbP[eka6'd8r/rX,S.c;_c]mU-4T3>%,SXP5u4s"OPcum\ndZeu]]1l00[FbP1
%C(rcp=i3.OJ995Rf-%%=k0Ah@TA-N$#20?]kYDP4M`@)r\9;i)#MU)C(CoL]V%)3o#:b`/Jbc`l?ql!n54.Q!9,_f89+cn-V%`$0
%oa9-dlMH-YJ0m,*FmoCPWml+W+K2$IBilAV\d*&kJe!Mneq&k8[SJ?^SjM$E[*B7a8p>sH(Isl4gi^t/,OOQ9Ph0i+h_CUP56ibZ
%UH>,$jM;r#Xt:-^dJG!GXhb$T+1&D.Mf*LO_Ei3Xi")!QJT';78&#01EaH4Y:m8LS:c8(C-iNT-]jbd%AEDN*NAu3Vb]r^/)XB)t
%)mkr/62\I5i)q)QN,)C,;_:@XbKNHF4:LgfgO8CX"$P,f_)>I-7a2;,5,BA=!A:UjDVIG?kpn-4QjmsJBWR#&`f06QS6na*bFV?`
%AdI,bl][?O!k\`2^@+<fo^DMM2,;\Sb]^bMO%iO@bd4n#jZ-=*fB&NLfqDmsSYi"D(KhfeP*Fc]Q5"<U]9>*gU&buQ6-KQ!Z?on<
%ESB`Lo%HM6S^[_tZd3i*0sn,C<,Lo+O6Wh7)#_r^0KVJ5RHYMpMA!pY-[lcOKIe.Bk@Sd#&29!(fSQu*bS_];=nk-EkliS[JQRPd
%F.K\7;'b?j4eHcD9&'Y\=IS"@r1k:!q\UV5/n<S(_RM.#8Zq14V^/=,Q1C+QZnC,(I3>`0:'K#b7H``RfgXqj=[*qd)H<gpF@-M'
%<1AP4FL'L0(JCVb\J37.4<g=?q8l/b2034mhU[sHfqV`<[K!c>27jtrF>-5[bKP6$G&PXFfQVjAFW+jV!hS#T!s>$19RC'G#J7DE
%SW;HWlrJfMTGqrFfG'Q%lH"rmBW4=F(qLlgN-'4a>?N`KRrYLm#G'<TA`Zl='W85eW$r/D+EX7]"qb-]1f]NfCO^Moi^>>XJ^.Z0
%33qCpN/XZ6/;o^s/Tl$Z^+:\X#4J[\/(c;Zm5DP3.!KGf:%+$'J'QNd[4Nt9^TBj>_;o"U6+^Q#K0;<0\3#];@hEE.*:^QMC`P?)
%LGRM6blOq^3Ep+pLYB0c1dVLf79#i*U?T(5Y79hf&Bnb8[8jW!++_*`A4K`e<'&[_TG>(T2mNP=CkWJ.J[n5!kK8"q(<09!#9-N_
%^Md/fp,%A!6Oh]+'NKNqUJ_cg]D`\E_#!obb"9!X:ftM18iu_h:6L2GK-lEYZ0B9dhDY+i/%Aacs1UEuJm>"(YQC#u<UOoei(re#
%=dir!GSY6W%98D"A$$B$L[;?O5JW_U$ILk237,8LG&U@6S)[\AB4&\'QSLBuG3.I++<m0X'QLa;8I(=4@!M*%%'h2qEeY80l59@\
%OlD>=T,'-Kj:![k\[H^49iP#0/Lkm[S"p/TV64C7JfO/f?;NqILe_a@'F'I'#4,`]MG.I:(X[kQ&PXtPMeF@)EfLI"OBjOAFhI>j
%NGf1hVlj)KC\bF,@qaU+$_L<.]7@i_mUN[5?@$>kaZHkQYR+;NKR8d_]h<3@Z[8AqR87^a<D7NGTAm8Sep%dN6e-$dh3'dgokd_O
%*>g)eGW8a;d4!&^/\]jm>Gp);^,_-6d[R*$f=TSNQn;UIHYT!r]-I;iDVUeaiN1"0R_\!dTT,6%bc"5IEsBt1@C6r'#-&OWlqM9\
%El'aHKu>!]j9)b0J#")Ihh1Ca_G%DXIs-t7Nq7=M?js.*[E1o4%a9%q:m^MFP;Sk7N?8S1"\Q:5XmGlA-sbTIHb*N&\4DI824s1-
%ENb"=-iGN:")HiUB@^HYE-.jt+I5m@2$`R9jDAVb&U1jf*;FCt:q(6CmYGX_E),fcJ?sahP,VuCqZM)bZ29GY&FMTPfW]W-mSgVk
%9oq*__Ljc&4d"o!Ssh9j5s6,n.a7h"E)kSSTd,&D9,#a:V0"F**X8t"JKWZ!"\Y2sA9)eLJhEo^?3hA%TPk/*KhFhoi[ZS@iBGTl
%>t"FY=`t^ADfBl819)2gd/9EG[`iJK<u>?VNS3M\BQ.6.K\,p\Q<d6rEr`*N\5Mk6q2`.h7G^!i?]`,Zc5,G\/@>mVFkg.aX\6N"
%S>Q'(3X`2#RnuK*=dS<nVnhTOZE[6s7g5r@dZSsfr)#*(ed2;N0"Dc7</c+Q[Ul:MfqUUTCnj19_Zb]]=o:.5BF\\3oi\Y,L]q@!
%L+O9?%kdFJl[Xjt,IJ;]&M#iANQ4c0V[RW,Zom^/9'JYa+[M&[-pAnG7PId6Y@Z7mo(0b^<kZd^H?#2nc,6st*d#(>Gf?(p$)VBI
%#N#ot5aSX+(?j2SeH-9\FSV5M5g_m`f+,,/!J>mY)m/d[cP5f;DN!h#D;1Ag7;N:h])1+m_R5aH#J)@/Ydnb`Ibj.JkWQ,q5t`6M
%Fl;$Fa.Ap)>MC"KD<Sbp_B<dJllJ&Wdlq@jDZ;/&\_dE#%_><u^kd$uhAkr>i&);gY$/Cf.q71fO3d_nDp"#tM:Os;C<`47aIaj3
%<00#@m&3&Qh]kX.`T4Qkl%sZVBZ^GBD>O"(V:8F(HMq/lD%TRATZ$cR;BNJglTkgDj9mra]')??@='"X#ar<jPsLA;%F!P_"1EKc
%B=ju?lpdYNR82#T*aQk71'.tjXud.42aPt--82a$"1>H3[VZ-fW/1tqTVq\@2ULGP4if2Aq8mqjf%.\iS_B__2XJoc<N1;9]f0EX
%eo>%+m#pK+%[bdnhX`q&/[RWtT%V=cXG0$AE]LTsME^O](bHgRls$b:nGHhQ(=lU.lF@C`/Hifs^/E5@:i>u71RL/I<iq5BTYZrF
%Y-Gtu[`@phhRq>4n1n*4%2VdpN2J8s(bO-$K4.F<5c?k-YZY^FdR)jB&f*H<FN]ZJmQfkLke>Aj:q&6%3`+AndQpM8f<k!!l+oNU
%jfNKY&=QA7FkTLjme:JH5R0kTMCf:1lW(di[4N"B1^f,9b\L5o#ISd]Q\Ie9,H_b6(']>OM%544W<6@>6.`:iV>:L?+GR(/0a<C)
%%W)P*&OWn^\ss9D1ppQd^4(27o4kMtBXS<Nh?Dc!;<g#bhJ[4J<NBDWb8-ta00>@'Ic_rs=mJDgln:Ok+X)iIAQJKg9.IUdk5Zd`
%44at./>Z%P%TGm_4##+3k=RItk`W'Tf4L&_4gp-"%*q,"Y!*YPq[PY`?P%ag\$9l+5idjf^ucWh*WWtr:%fU7Kh5_\fU_XBhD3Zl
%Q#.sggbpVfieQlW/SC):,*SMoh9ru--6J=%TIh0m#J/gY!<]jt8XF@2jM^fHE\A32\pE43*_![kH4SS5T9aDnTVQnGFBkPe!&<Qh
%eR_'h8UO\k7JHCSUV,E#;KZ-B\IQnng2Cb1)$<Id2_8rCFma)3Ou>1t"-?%"'!8YR)VJT[kH[^d_KD1iE`?29PpJu+gqN1.P23O3
%UC.?O*ucej[KBe?!(3f!g\7`P!*f`]AJBluD`KgB2:q;-9T\Q_UAB1?6VUgB:"8M_aE#u&=11HcY%;d=e1KDbi-l!?.!N.)a?I&d
%`!V.KE"c(;?+4"?KQq9J))Zap3*sK,B(23]b]>Es(#8Qo[QL+p<sQ/G0R1=#K')MaF(pG89pV)4Fd8*<_j4I9\V[E5$F5gdW\@L?
%VW@r%F_Nt:3U_,=CH/9MNr)o`NbP(*LuZlj9<d$Fi:;Z3QEJ;ls-QIVk<TqKgfUsRdWu6QnK:`9qJ:sY!f*k6noN"+MP=Hj/e9"S
%=Yo]ZP^Or@-64A2%a8lm4_2_HLh^U95!L1\P"GtFcHml/N)\>PSm5IHZ^0R48mb>L>DqR-N]M5b43f/:['GA7E6+tDak6u2#?t-/
%9ClEIA<e$<;UWN61EsqQQhutFP+M,bi7bUL>d%gD>_&QlmAf4F!H>EoLl8f/FRYi<[0C"L>1Lk=%O6"r+tp!*/u*,2f]\NPqN_RX
%1iEV&c-\_/CfYGYA`*-XXX0S*EdG/>Pu_bHkEC!:3EnC6]pn14CY8'P#OQF*?EO-mcU@+*6.3si?2Dg32Rt&eaQD+e38`:8A-6+o
%/Di`-M<an.:CCF-:+?r,.9%>PDCm.^kILRuP"-0HBdfK!a6oK`NlUS`ZG_fKs3PUu$X((Dm87\l)I1RHQG[U>qiL22d"IRI>L7nG
%UW+g5a7=O$<TfcGJk%.oggoFQ4N#nj"(c"ibU!Ge@*;m-p]>!`I,8pA?>+"GUIlOI(BaJDc,dq+<MW2!V"c#S&?[;$o."MSo@oIJ
%qAV:885UPaj(?<5E+";#_/iREG6K:hnBd>`O;CTN3$_PoSu`Li7)a"#3=e.8ZK6s.(<o5nQ3EdLQo:b9[EBR`.etXan;)*YbpYh"
%4%2O6?=/g?LOW3=!8333JoddHRS(</Br8Ug`TWci^[!akY[^anXr.f;WliAJPXBrPo;"+.7P)j8UfbC.S.j=#OT)R;Rd:iGQSbPO
%akY<TDMm2?paI:g>Qq,'q3Vc(1_ZtCA\4ss"K-65/i3#9"H1c\;[UcSX)KBR+@.?End%QeK:80Pf87/K1hTS>kGbEE$]V!92h5-?
%=4-JCE3e!7>mHR)6,kgo&Wer<e\&p.oPjF@97LRA"4:o9!<jrG[D]Wpb6[cSZB)g\`8l!R[4[<3kV;l_"r$K[JomZ(kqnuKDjnIM
%l;[ljFY%\l:alMf1`-`pf7=%/hd-ZS?oQdE^tEN*<0f9)o4"N#ZDW'dq/M7Qgf<7@,gdfehX[Ee_WYOa9bqmU*1B&9/(U(XK)$`c
%\#l;4CQ=^6KL/CQ!_F.TTYW6pWp2coWE6JQBSl2]K].'WVOD>7C1W3dp;M7&7.b:%?CflDS_'VU6)usG71[?F%XWgPjWG2[2r.>r
%d.tB>2et;fE]4#ajk&C^RutR?a<9ZQ$2UWdp;_U*9t#3&<#fsd;b6L(dD/4M+,*9'Pib/"T9APrI>2bfjR9CB0D`uaBJk&GNF6:.
%lV]!!%Ea2Lfmg67IG8WHS<%EmL^n;ITIH,h+(4!3J!K9:bXontddRi.%?nNK.@X@RM9<J7JQ>p+;+]i#RKBlK>Hh3M!V(>1=*W1k
%TS!GEXbP7++>X#+#0I(Z!]9Qi`1Y<Upb=]20*BRI76EaO>$qjb'jB3THP:[A74".%Nq;1n*:>s,Q/>Ht#h1Cp@I@`30=j*4pO^1H
%4V/9.**j783JcCLeon=jg6)f.5k+FqW7--$?%K/"PgRe$XriUEcOrgI@xxxx*s'%bPD9=+]GE=,1Nl>V>4-NL"esZF;OZ;PZ5Q3:
%AEBXU&M>.Tme^]L%`\*EVEHVn@C`.cXJ071ChAp=2pAj?7\j"V@;op)5V"]jQTJA7G-3@4@*4e`*Y5B1e+Tg-#jP!"NtV%DZW'M7
%lY=CVQiY#XP)LacZ,t.qj_<.X3@MQ!p_!aMN9]rQBH'BV8&J:UFQjR+a-Ti^B[P&+I(k_-?`Vlg38=BEpH7l:jj,$eDT/glDpA[S
%mu\guW]7fW#JD-QT?u<#6P*tjYuJP[!j[&cf5$+M;@8ucn<HusO]Ake^BF(M.[V\Fkt&jBdK(J%'a`;;B\=,d`%cdC`O]SYG=n`!
%mQg@kd&5l^1XO:?bYXVQ.3,G5*W%U9F^JqgI)0Sgih1tS2biMHX-f+U'kFGb9\[CV>0KFY/_#hq-1W`noc<cU=#&IC<3A'@4c8uc
%9Wd\fB91J9hs&lJXZ/`g_,ALWe!A!&`b`>:#6deJha)mcEqM_;)KHdJA1B98c\?E;pOTE,5R2"^pmAe]F>an3/OhPA[6#$MT-KpQ
%R]bFVK%1W2+.K(q3TZb>o4h^tq&J0UN)@")aK?Et9hA.=4KLON<&f)gRG2>#P3@L<`ba3fCO?sJYa261kif(N8;_J?3AaOIU'9@G
%j4T;FZ^lQQ6_R/$(i0O[\%/YYgY/Mb2eis\)e.F>Y\AmIDE7+TU<,DrqJG-@eC+kKe@^3$CW']_&t.iRa*UX*iG6f>rpOQZa`bA+
%&ObV^N#_-I[Q=)1[9X#;@LA<k(Y#c8O]]@"Z9-/HP]/93-X[J(h3piAetX'9=K<?LcV1!>_6V,<L)Ke&8=[c"7A^73r?a"-%(bpc
%AGg+-0aBYY\$?b9'V?)?L:6EIiAe2r7n*sV"(NjI975rr(#_h9%I.Q<!l[m/Y6[Y`')&9q[G-Kl&d?'A@?q!4,Otd!$bE0+r<dCU
%"Y;]dFu3*]B]R\jP2A.1>+MXKI!EN,*Pcij,.'>:[<(rj)5M?kD'FjL9JG0udhWb;SqsFWkhpUr3Y;&7c.1]_;NPV_\0CnWZ<U$*
%/Ml-C791c<Qc<:1'f33`B067FWLHO&)?d'mmu*g3%8/sj"`@?Hf'.*nMXJn:31O%(Cg@F=IGhoif@3HhSrKs,U9kLY!)C*V<\5al
%\A%ZokC>\=o:l,!QR7SOLjVl<AKFmgrGEO3W%%N[7fD*FSZnk8DHP^5BW?CS==`3ue.>i>L"h_\RY&@1O0/*_bGPE:OArN+QECL3
%Z9.5$Q<&@O^I[JqN7Wh=3/uUT._hmjIaf_[X//QWJuMe@4Kn@LIBp55hb1guDED(i(Zt$$Zuq)K(kKDEH;Hf2)!.TMWgLT%5kgb-
%Pitfg5u*WHbE18\,sukC6#j,5Fc\F^LrO"TU#jt%$kRI5Rd56;9IIUR3-\QAGu1qa$kji!,]sNH;om?e&8Y@R\pgVA16F^1"I"Es
%`n/?$4e,C6r^!c.Q53cgfiSVUn>rUq2/'0I5tJq]B;@*bK"r7T+@232)BTG>MPSnsr4UYQ+UJ63(lQZ&CU0*@-94p"S;":d<TY^d
%6bbjs9J?m9kZ&ju/N/8JQ$dr*J"O]qraSg3Wj7GVFTolJ[@f!d9:\o<=^<dP;gf9<#r*MR<hYqj](2N=QKHsm3Y80<.S182q?&Q'
%cXQ$aIF/OH*Aikk/^]-fkcEJrd.ODn_gV`#jE#ofZT\$?U?l(8!M];!O50nifi`IE@'CqfI8*R%H]kDAX9oZA&At4l6$qHEW.E3u
%aMR_&Sa4UW&6/a=q6`^K'2KCNZYrb(o[mVkG'56U8pIlO,D!C()at.dEo?$D6a/9lWtlV-l%g'ZB%>G#MMjflZQCta:tD37STG#&
%4(k*FF)kE43Z,gJ#TRHa?s@cp?jcBabW.Rui3^:'4d\!$).?-/%/\K0nt"C?eW*XF`O`XI.hL79BV!@7c5@VaU%u*Hnk`Pub\'jC
%&NI\,lkGf[p#PJ*#3NR9<c"&4EUS!1&0oDmj<\1k<\26V;N4;OP/N_f)2p871m@ic:&-ciQV:]+DkMWH@rHircY`??h1Y1jjW9An
%X`Q0p6'tKfQkm)sj(#P!$bQX0[SW*;j'gWlYdC_pWNDoo/DCX_s$KMUWH]fHm)gGc2R`Pj\9"L$I3NjC&OCm")_j1Z9>H]!'EoL[
%2FaTpD]YR^.Jm7<,+ur^mZ6:2K-eUM+ZFt#*aTa%oHp7Q\?gfeE/JWGA.+S19Z3`8ZDq2XCP'-BTN2]]RT9bU>7_mIBFogGC//Bj
%[?%b/=Rt#:)r/S7b.3clR:2k[rjgi)(e#5IOM]8aHpS*.\\M`9FU9&BI0rif?l:Hhm\"B:=;Gt`:?^51a_"PLn<hi\%nt%OY=Epe
%W#73B2f)V.l^q#XOTC6bS$#ROHUR!e)]>k<0^3^re9_`c/dB3U@:4@eZmBKEd6V#&WCJ`gMkER:>F<t1gUs<`MtnmW=WYhI;3bd1
%,stu.EAYOi6UUj1V&B,!Fl"I=X3p4O$Bl!4$"&[bh1(^V?p_fYR*^bfW`B$m@8nb279B[eGLX6&o'6M/Kr05Ao@F7p$Aq66:Wa(b
%&,S!>pNZ.b=e31@,&QB>%,=Pp_X.&G].%4ZX"_]T&?*n&;lf1G^djBc"I'YX1fuPUs,JuI8R/JI=ZYB2@8_r7`=O9ke"RT]j(/F>
%!Ke@s4ERpUL?SS)#5HkK>>iW-BN7.Z.-'/&S@]#.\k&n]`nIXH6_m,p-(:9,EGEO9&FG(jK5klakTibKooIMt1JS:oNj^kH;#R88
%bS&EcOf>f1$d(rrVBr29]1b\"VEDXB5^[NT1Qc<J;i_A+:<+Iu%c\6b!s3DQa>:B;ZOA1DOg8DIJIIF;/EPKP@mEV'AtJ*dJZCYA
%[hWOWZtX\dQ_IZ>!-t'L%'[FQ:qd_8$nskSR^HuPD;-f&@[ZQ;aLjQPO=3iNGec!sJ--p2i*q]\M]-5aCM`tS#\qGH5a'X3_lW0@
%raY6tfO#JiFMm<CAlNIV!aGu!q9^&JhYcTrfuP"GnQ6'?IKV2T#T2=BU$`FCAsI`OJkD;g2<(:<rU3,Der<\e)*b1<oUH7,XYG'6
%e5#Dr"NG9T/HILJ1fgU6j7Z]Gd\pV%gdCh&hiSe)\ef?P[21u:F[Ik7JjCnK&nnP=K=LnPbFo5`ij-,i'&i60/G%`oGo`4ZHW"qZ
%98/]<%hJ0dK,2[@)g\7kGnq`VER@'?'bfSOTU'1CL8*Ro>;S.m;DS*Ekkq(B0n`1N,#&BpBZt2mmaY7,l6r78=E0WG7.l0ngOn&X
%-4i'3+L+opRtc]DiM^B1FX1Z5<)6'D5:1:tZc(eO3f#4OTa$6Z0Up*r/)r%Pf5`V-=VT0/S,joJ*RCa*]rMm@V>9<S["BU[K2IXc
%k_-Ou;c8)Sas,"p*&MEX*&*Rk6n#d3"ajDSGYAMnA0!(ubi^Y[8GMgP"N1dS!F+!VCQpPGD3KEU8iIEN,>:ut,mL-p+=GWr'V2!a
%K]WAq0SCX84?P-.EOK2@[uaePbV[.fO,(-a@mjS;>=ilb\0tGAlUb7L9GGJV"L/]q';@f^Y\I]D:^H3tid0-oem>NMOfRVpg)X@E
%?\;M5het6P:8DlXqNbi8c9a,PF\IeoB\VaMDZc?Q3%)uSl_@dFr=a!1VZ,0VD%X5D4(GQH^UaEfGEkIY==Y+biP^;BK?mXO(kmNP
%kB,\#b6WiTKNQ\R((KA%0j*a`O7IAuLhcBHQiuCr!C$ep2gP]pDatle8$C.kl&SE$^M6El7H[\#P8.'c*S[].TY^ASZl-ckf7A_9
%>44YPgNM_:\+^J4<kk1ggZOC$XJE?JFR*kQhH`6"-+N,.S3XUF[efH3Tp?0NCo&AY/A-n>VP9tsm2"Mm`V2Seb8HD,GmF*H5IWE:
%c<Is3PXd9mFPpT3mB2'Oe?Y-`#?K7.\^;5dEtmed%D=3K5(3?d=AaFGZDm&U0CjQ>-5V#QZ:55EG)?YPmeVEI6S81,02O1\Y%?LW
%VRUNo_@]G]j(sFWOV'iDX[;G(E7^8TRQKn%.f_XDmQPe)(b@P/KA.X151Y;[eDQiqmV@/^Y73%Ks17M=`aC[.V.@,``i.`R4%o57
%?n:X#GL/eeRsaN:Y:E)8rOR@iXk+WDHJnkM:Y%54nljFR8ti>h's/$j`sK8:\[Hso2?LXL_0h3sTlY!7m+YA15cnFPXZ9`/AR4fg
%-iLU-f$@F"oe8P\CWegZT5p==M=*q]5e83`>>YR[rn9j&??B8UOhqkF@ruo`2E]2IJnko0)@f_][Q@X0#i)Xc@Kjo$@UT60F>Oo>
%?UoI<3oTfOh$un,Xq%h:_h0P-7L.]&A+b7sE3Ru](1:s_%l!E:IOTsN:0OoW?WC)mPR1eZ7BrO'E]s2KNVc'S(Xnpu0Z9WC!NZ)#
%$k%)i+>pYD5.9+RF6u68)>fLU.t$-W)]iO5IEh+D.!BE0$W!R_CL!:WQngDT0(;^1iLCsrE)$qL4L&+5:sA[SZD2_!Gfu-4Pcj>\
%YWh3g+uJ]jIFprmF9SK6`J+mIgW?\LV.cK.4m+ZRMc=)en)?`LXsp&%V7@)+hg-i9Ea\',qiEYdPfen5JoOL<'ipZW$DS6GS)%J'
%ROre9m_d<s!\4Z>M*f-D.GHRm`_WnFZS*ANlu!*c[8'Lh"dJD=3c.FGhJno<8o#);UE/2?j"j4p7!e`gp]D'`,KXGlb.s_["i_J9
%CJ(GSjWu&W3o\s0s&%o!e=O#H`oALh&$K`Ik<\,u\1R!`2pf;Ao,q(JL/k'F"'?Zn,0/:6'>NZW7LPoh/$LE*/`q#ZcT>SB)k1O%
%g,#aQ0V9lX=.Ir)mPP=j.HEuVZU>PIW'EYa(89!KC/ACo*4-)NU85774sB<0l@%Bg/n?l2=pa\++_.arfb9a2g-s\jDT>R@E%3;:
%4$S]sgQ#krX>GpCEAj8ogEVSN=oo"S@Z^m9<K1V:%]5`Sf,<2+*Kfh$#.5tiXD!hcd"EG7[?=c<Bl^b+NSNX`H"Or&Sh]c7TNst6
%<$L9:.g]ie.Ti%!qgt@JC_t,\m?4+hPb)oM"]C&$-Z*Wm,)AfR0^@g&[3B2R/;"R#j<Ys',bH2nrto_0k6`Gu.Z5e:biPR2_Q!Wu
%%eSG9/9eS>4\>$+8J>u;bIMdMW;RA*5L-#PH@uJ$':/M8R!_%YD(X2ddtcAGg<r:9SQ_?NeaT&PP^Dk\FLulggRRmN4[3)er/UJL
%m6EX:FU8ao9j1(hERF-U<-_AXCG%&f)ci:nU'SLk9D0q8(`@cmp%P^Jf$/!3@i?g'&\h"s2H@aZ-d1q?c##"hl]<qKE\;,E`G(Le
%E)b(,--"P-9aeW^LI+Q9`5-7t3@=?@0o\8knVC?>"-!n"QW3hp\C`n[OZ/1\l-7P;'sh@>d!$k<$\qmelseKAPg#E<npSEpE0.EU
%JRjOL:5<8LJa")4F6F4s.Ik/WQ:Xdc1\_5K-UR6Ja9LLAN49j8/g\XAf.5$bINN013:q!+)^e"0)FAMN$UQu6KWcWjahiCWhe14*
%1mic8c=0OZd"mG4g+F`!3Dd0Z60E!^(*io<*R!/81.ZAfpSsb-\R9-^B-t*:1EoA1$Q37^1I\jMF+Bf4Lp"66DLkG,:7\8METu&c
%;rb[UJ]d+:)usL\$^QZ.lYdqlE7'kHQ\d5pi8a=;+3\Gk-9ogkWImu6kCD;\"mmY=<_j`_mfD+@(8I3/#X!F/SZs_-A:@dbK*Gp\
%c^Rf)ME=WL70Q19oQ_Nf<:_e?3^?#[[d`5/\'=2'N=/2\k;iZ=Vuo9HFg"?1S&s;>n(GT>(b'3u=)emb)r%U`obr2_>cj+n#'4>s
%nOPX_Ep&>*_`HC:$qpG1nNuT95-#F0W)o4)E:;T%K12_5@X9/9&4]uJA!)JMFSP"<+uUMR_t2_7"fsu-TD5os%THQ[UYjK.'Vc0.
%)3Vl^iF%m/;LVmjW`MbKT=]c\I@"3c7B%[`^X#Gk)-TXePi4&1SDRfar^c%XZodO2CfrN-$VO?`+/F+VD)'Y4jp+:k;piQR3WS#<
%FF]J&/p&8F@O-:4%;X="+'Rkp2ZhmfJgXaVBJP4*T]dVY*Sa(jE,i?E\-g?^;eRkJ/lN4:1?f&e-X.%<5-fDt/>NMT>R].d;ND[;
%0Kn>W)seChMese;o$pTN1:TjsQEoS^FT?YAVh)egs,mNn]+C@joM0*dEiobI!>R">$OMe-C%0k7ne4R#V/r^klY'^+XHB&"@O`N.
%WeG%fg>WSOZ^P4,ATKCS+aAT//B(7VO:eJMMr+8=\_p@B&t>B\eIlq;C`&,_%CNJFUDCc.VO1BT1[.$&/:eNu[KP*U<$#kJl=baF
%lbX)qF7sP,Y4\\rGWKL'JBsU.e-'1_KTr2$6EoCq":tMgn^C&]&Bci3B_'O&nn33>_Ss[Nctk!]LSqbZnW]6!g9])$8TPt]#,<m.
%";f64;@jaX0og+Q1c.f/&<OnbhBP[<L:<5.27<[O-,"ek.Jg@Rc2Z]O\.)sAd6?:4dRQ-s_MV^q&>8nc`0>S^VM"8G*]1@MBO5Z6
%'V\6/iAuLI@5if#Q0#ZlU/iaS(k/$`"8+2Q/P=$4b'A>&kRWJ06jif:W^6o&\6gT'g(kckR$>'!RYU9`X>@f!(Fq#1RAWUbTSF$?
%Y`)H4;[\4!+V@XWP]uX]@r[@M&Z,;i3KLYgaWY<Bh#l<p(3D-2D_D`8[Ubna##\)H%Pb6i/Jb85dd(!@PtUT/,bq1*7e1>>HVCq:
%,]4&lXUrrq(FVl].o4qEGGCIf1kDs'BL_@PMt<ULZ7O<I(aFhoaTFQ,&d?fK%nQXs;F93.Qko))68_S!_/`WGZie]4o>f?$U"rVl
%a:hVuhYj`!8T:)I>E$)<[a[&oG1i1M^;74Z1c^VsE3L2P(1?5]6"pC#,s<[saf$gOFB50IT]:]9Vei8D5tF-ffHTNY8qZDPXP2-6
%HJU&/`=B$R*E)r0,JP3'.(\$me2:pdg#Te6>N4.(Zal5l<e`VM[eCHE`[?l?W,j#,!-IHEmn#EoHS\j*MO$TXB5dE&*MF[#EI`\&
%gVUAk:,97)K250a#D>6HrOB[eH9IYh,C1%l#N?-/7S4mD=r!1,_k?)_*5h@#/B&S0OnJH>q:\H@/k^8aoAJ-8egrQF1,hB!LPNQg
%@dHmo=atYOrgDr1'tbD3(m%t[%.YZe3<G<ldT`BtRrs<sX'Hj^WpG$6=2U]:*.^i3P+]p,H[CZh=`ROsW2ds6/;jeD>KrfH5:hFu
%?WT.[:!ogA^Gr?"Yrh4/0#DL'X%qjC#@Bo,%td>Jd!!/N9Ej1?!,V:-aX/=pghjD<%7*UQ02no3QdeXM?YXCS7TCB_mR><Q$hpd.
%q(u=G0=XYa"O1B')#5ScWHqWJU'o47h0W`l34()(NHLkAW>"H"WaO00G9%fm?KX"W"`+1AcZa'e@7Sil171`7f_:)&BXGa9\>ZQ`
%[RS__"uF'Ye'=O8@;HIM(3Q.:1"^>&A[G[,>3ei99Q1()m^WXa`8lK6N&)LIkH6F76rclPLu*$.HIKB=4[ES-#qK%XJEW<om`[<.
%LRf4WI@Cnc]ZQMVp+(;i"treLJ"*Gai<7BiR__SD/L;_iGuuE<SY"=GS!8Q,f:i`tF1#JJaKf\aN\P8R<\CamWY8_oWmuMd7Ws#7
%U_s7j6`O`[iXruf`1/7P%LP$">mGKcQj`*).Vmml_<T1*1FiiH#+p`>^k.U^[E$1s&uE6KLDBcf-&U;WC!id!MBbsGJtXS0b`#//
%hhd8tPN,bqW^p%7&6@;@9A1?1iCY3tOmQ+B+nd"0"2_q`$J`rnij=DMTbs2LTO_2,HY@+^OuiIRBY"9rn3oNN;eh9ZPh?_6I)_gW
%84!ou!t-YqV8*;tq/MJ&p_p`Wo36!lPA"D*.)&/jEgWqA-Tu&f/es#UPO1]L/4T1%_3X$jkRs0-L1VrOBN]_s+jhJI(u(5;0Zj4!
%EU!.L'on;%(mR/rguQP]!eHP9Zb4N-4/dejOOf`/3$tDOMqIreNfI">E+r`!GCil(%3V5d^iPF?L`5U);eVChCUk2&kZQVL.+,R.
%a'_dS8m0GO4*"^pl@Y,6(RJHb?4pjK8neoaX2S4hdY:=GG9Nsq6#"caLpPcE>1HE-hfKj>IA5V'l7mXDfk5!<>HDu1MC(qQ<aUZ#
%EI!@13s<Z\O.^0aQDX"[4bB@bGPdP,')m&ZaCK1N,"WO11g79s',_*B414@<mIptU:=cZ"a0[V(^5f'*%n+Z:$p`;c"M<q#ZQ>(i
%Xr=3J1I&I1*A+/8._!jP9<U@]6DCoBH.8JT.96b6lE9Ef\nd9:;u4%hV6-dC,(>R%eg.-$/ILo@eo5M[+E.s%*l2+4bGlf&$8ra4
%_PD'5g_:!odEs*11AeaInh_u;aLBt4/[9p5LF*h]WpEEuZ*,#_&:C2,<iT6;h8pSD4Gl_D&Z@tY$oNd%VnQ,KKBHhhcnZXNg9>B&
%:gk&R+?$(!n7Y^@-ZrgK\AaTl=^8/8MkcC*>g2l:>n6EaRB;)Gnu(uMn2&p^+D[Ec/s;+HPslQ>T?8M8'KO_Q]5o7c5?'_pb]7P0
%'O:)nf=$70L$^`O>(UHiSN40DLTQSX#GU@%f7A]/#uI[bI1OC>i$:qof'[%S<l1$%R4JT7aOl`WWC0f'I6mtg[$^Lk`Oh$g!'*mU
%AKrn]W[uA%GH!/\c`Gb[\N#_Ll8e4HH>6[&!>PYXjTQ`B?>LTeoK)S2"*=HHB$c`NVJK!^,P4A[+d,@4PX+B"5<r2'.BW_7R)_r7
%s&[R=1["\_P=0G#@VmK8@#eV,ri_grCP$2`3l'/LXS+UCbZlHNM)(6<=TBmNW.klr%RF.(\kQU4(gcap;rVRq>7*5<DLDH`;t_h*
%[N*JRfGE%%E2(GX2O3`d!"FTrBXF[3k`,e>J-HqEC]TO`"7YcEmV_0)*buL92)pAe<@lJ;aEVt)_u-:Ga'F_T%D4Os'p.UC;&OdX
%FSI,?k]I83LqU\/0J8$p&&TpA@6KXANWQ(35K?a#+cMH.rP4F`7jp=S,Mg'Eka*+kPNe:)#78flHJMGtHnSZ%\lTmT?b5&jel_^Z
%j[NheJrHp6E+_Q@S+c$?J9sK;6RoHW/K0ac.kPqdDgoH4FLF;].r/(+^qtcmU1<6l!:K;Z-0VZZ<3K`&NcT[P7e;`Xa%(*G4$UCJ
%L.t`<<Y]qYhk&_)C/dXS6#L8+fE\j#hIM7rC$B'HhNkaLc+pPsfWJrGPT'p&3YoL:;slsJP251DY>#3.+RKS'D.g).`^XkgL%#S6
%pB->rM//jmaBQ*,2P%+rcUjdM^juB6)98=G4hJs71So'kTDRIt0OAOO[T@G&rK&E:"3X_D6VDY,8[mG>AYTYp+%'0:kQ-+;qQDQl
%;hfW`7=K7jR=2X#Zt3q2(?QKaIg-bB>kB!O"21L&oRDWDBD9='?l\*9;/u@4(tF99eZijOl4lT)(K-GP9\Lg.B7D7hjDOhu)pO,<
%7?rZ^Hd6UYO%H4PoXaQ1I\#s6dR;Ku8f4f4#Qd-;/'kOLgUI5_VeTTgVA?+Y/OrlO4\RkZr$cLV-%I*Am.%?VD'g75*^1]Fgik`0
%"n0[EqF@c7j(bq-\'b0bXHYFQE9*Dn?/S,:6(IDBT4u>Y=R7X6+\hs5KB0.k;->:4alMal3.%?j@13k4/8AQ&CP%>i&=R@>*d=5r
%p'U5+[s<?C)s;3/R.Nts@.6oN7ZEFGE9m80m4pQpqhU1))Zru'4bmFb7a,ZeS*%m(?.kK[:*P&g.d!.;i69-J5P'buJaEYRIT_5+
%O@R:174k&i$^2$BO+Q0mkh6,tGih+Fq>29qZ9;]-OK!40`DTs^)L7t_=r[YYDf&Y#dU5#Mr<++JHM30QKS25L*62=7*Qdhdi0!(:
%-5O2IS5GW]^P,D"ioq<<acL6>\'1)BM!-^&G:F)27SimkMsR8ApH'?ugidZY')nTIZCM0JLn,8I(16*^Q8?Tbr6+mFF[*2lCT4]9
%4dB*C=)_:CN%;4,M97=niiQc1Po@doUf\[a$u+&JnT4L(S`I7OhV4(=r.:et?)bEr`#q0o,*egt=0oD,9fTT[M$]++Tille/o@rI
%Vj>$`R1]5\m290)?P)_NFbT>uTfkHI4mJgu6Y/4RHUTm1;=$!36gT]h_-6hPcAP0o:=!F-3tO=aW&+^rf>sL;^_kdHb*.18N-N+J
%XISi8\XjI/Q?LZ/A+q8?W@u03Ssjq=4P&RZZ&@U^;(6[!A`!:robul2)]5.:cMJhAb$Zoo8BR$I(c9g_cO\@c:%3obRHaNFTET47
%jr3r0lRi^n*V<c[0j`NXjFs3IM3p<ef^=\@"]d+N0*r:GdaESXY'BDa_.fo32\>4r%#Nj)r[3/SA&M3@^i+7IkH[cRQ/;K,3S3*&
%j=[^9Qu!ii8p-^u(:U@:E>p=;^+CSWe*_UZ.bjZiejE=[Rj$C;.s76pr2Gq'YI?tD@m#T>oumYZG2@9@7q`tm3&3(8&2)!sOmG;F
%533iBl+_Y%e[qlM\2@RWpO(CJ@)`m<Yrhkmnt"CnZR\WKq_h$7/b<LOnf8)4#'<X'B<PMO$6Ftkl)9;=35mrA!!Y6a^MJ@tfR,F"
%i\La^&2AVr387W[mHC1+"@M4)pQ0B^UJ@gm93=\XPN+Q'>%)eSm[2XI>s>XG.DkL_Nl!+kg9R0R9Z9C)k)>e7m58!:grB#]fIp,7
%ppaJhp09HQ*=Ps!(=lNs7EF[5a=N7Q<(mEPc_fL<H/i(dZ.F*J*0ulf;A3mTes+)dH"OFo4#&,?k&-bc\-La16P)ZJgZBb7rAjT-
%/U^TA"UMCHS(UV%mDt^5bR&2'2>E!hFGC^mafPeh]`69a1]*K9hlZ/'b+/e9Wk)`L?#MHCZPK0@kE%Tn9rWGa[kE&=;'<YLPDqcn
%;B*nK*3f(CT-ma^h6.6!nR>4eZT(Fi$9$1S(qg=>YR@=no?)EmFo5pui\(Rn(i+aqamIC/%K>+Xa>fqs]n>pB=ka0K8ZXSLW*2Z?
%;"E!a)_I0phH[Gt:9oR*!kp>\1_uoZo/*%0T8?]ioD"2`U$@&j]bV`?mr\XNhRR)S`ooP`,PbuXKQU@q3E)WL*4:fM:cYsC./fjQ
%J^Mg#&AU+>T9;:u*5d>b.\XD2mGg[seQMmIilSK%M_e0a2rR73mbA,KIW@1BLr[9?KT'k#K:@if,&GDTnZ[fiZak^ZXE_>Q/?"=A
%&_Kc`/OW!@&!ChI!\>l'.XEcn][K5!OG@jNjBe!WN$;#3;'SP&2+:>A7F,<^;iA')Qs!j>RY/R?"K]F')$)aAm,gY+1oITa5kV;d
%qpU^:'?-5Z/]lsQ@pl#d0;75r"lpI5YWb%_cTVl@0=c(Qg!2:78E;li-ETsf[I:c`]>+G6't(O4/tJRe"*5Mi1`0OlZKN,cg3R14
%08*WS#cs0Wq1TE"UJ8RA)OZ*o(>NB%26M<H6EHtu9sOj7E%k7L)+)<>@P'66#IbkH:'a+&KM??C^`#d\nZM&hhL&3N'rV_!BC4LQ
%p\BPoUq(aiIg2[1_^o(uMsCG&p]ro<#=jl.[3]=<9Ip51'*.)S>2kQbD/#L6?"&]XP>;1?4Wo.5A_\%Y@O<V20RC*aYM0Q-Yi/6Z
%U7[eliZ`Fs:W>UDLqSuV`U'm%&^/Z#$tE!7<g&jr&(KoA)O+DCQMgIsB0QELcA&QP_$5JfN8Wm>#h(f\^l>eF!t=u3nr,U@)ghQj
%RZa:D&Q^tjRs5Y4?(0=Yp[5*;6T0Q@5fEe2ECZ8hF*aPLEE8XAL80WeJ^^uHHfojU^TY1k;Q5i`Gc'Fj)IDrPr2^<d]s@^.%9;uE
%ntH/=c6C8P#/iBd"LSG[XTo;2Y?Oa0:UcfjGg7`s^`o!eCSWYk+mb$:bVa8\7Zk=G4mC`f*(=&qj;5rK%(>T9G-I1<cQ/ejIu0-1
%.g[gWi!d6-;Ykrs!!2Y)?\2:jO5\#=PXYRm%AdBK[$rmX'W="nDE+'qJ^N5.Y.=:'#.f?@6eA:'isp&Nl11"_mWsS>qKj<("%s#)
%pe;(pE4_\(&I"L5\TP(95?+Z!A?8@xxxxx<6l5j;,jJ2-_5*O`M(/'U8&>YO.Ln4r>Ik6\"@+Er/^NF#H!i"d$0iiq%H[f6G07b:
%T$QTG@4di21\Q2mTG<$Ofi\h$\oEg4=dI!7V:brb?]g_>&^r/aehW-lNXDDE=bO3M>s4;$`/*0TralX<G;j2M;L@&#n=(IQF5ki+
%:huq65"Sm(3"'C:#9/6Aj+6sR]F>NWY*-C`HZ3T@FHam)/g7*S:m9nM5tgnO*&*Nq-Hn<3E)pL">5^qsGS\%Orrbrsa+\_Oqu+c#
%6/7?OG6f<3*[pC<`SZ[a<C"fu\X^-#91#X73m(<UH($Ng`OsqaGpW'iP,e_h`BXOPV+bsaLob=[9R(m?_;E96mfSpn,E(p!B=)7*
%qm#56>)EkB8Q[=$MD3J/*)XRZYs]=*][iOj2"0Of*`)i8+f@m2$?2Uida2uZcd6><r.G'QR^JNACcE3]f0WGGnQ`:6(ONA1DfL]H
%23<^<$u9S\8!Zq)DU)]D\:^jG;Kb0\/Qm]]D_'Q?j@+>Z0D[s8."?!Ng7VC];2+RjAXuaM+h'7Q0]RBdcEPub.b&FZM:!cr/2&<[
%_R>Y%(S7kr+:EKg[i2`GKbojpSoeVI#FTCir"i?BE.iKCBEAHO,ZB;e&?pdYmrZlM1^,=`;TgNQY%GBK7n+=j^B$@KVpt5Mpo<;Y
%'[i1^l+0O!P>4M)kJ@tV49[MhYs9<2V\<5g"=+;X]m#AcfJTt:oh<R=mIOh@C".,5DX\EZ))b@!;?XT>2KoHj<i&@A/*!Xr%lJ"o
%op^Hhc2R73V,#gWRI4TucXG&":Hu\NH7q(\L5jd*Xp]^\Ak<QgNpWBU.mOd`=QYV?We,TmipAliN#76YU<qD,[>oiXR,B=pq"k!(
%/M:eOj[Rs%K?<W1g9LqgG8b<)nFL.CO]hF>i:%)TXtHns0Hp<Tn0I[BIl!n7hd3hY*oCb"@U$!o:dDFBNmbQ4#2CE;FW?$n\skmb
%JL?>2DrKU[!IGH$D(L0ZHW@HOPdVf]O9WD9nur1XNS>O$YHT8#]"ROW&t1:m6g^!=fn4&**W,LAX]]eeGU(daM=pTk9t$3Ic_-rb
%%43P==hTe"/[W8QCBEBL;kfh-/@H&kTmb3ZeNCU+Kk*6\Ee8j"-B*kY0IVQs44iX*QB[(MLYJdg8=d2BH/bEqk]m9^XE,Zh:0]HC
%UEjlcDqe#?;MUo]ipEP3.l\ri^eY4qOAXuTUF4b:aVOCUkkS7d+!Za(CgCe-eUoXds3ZIi%"`Z87I=FcV$@dA43o+9!dM66d(bQ\
%(AtcRgq`3%L9E@]?>uc$F:dS.Q$QEGmbS`4b8oAi"Ob*I+E+63?P!3hWnt0LO]nFM^e1^MgE<0)SY<IrZEtHhm(XZN\QHN]26@=H
%Jf36b"HNZ,,QE>'.<Vn+56YBt]^5afHjXa_=JK=af\R#=o2rnTA)+A)?Uo=!T42R=U)D#b_#Rhl05V(")d<OpH<+paZ?h7[[F3C(
%TEnr2H\)qC?A4WugSWQO6,+jrI>mY8'p/s\/ljYBE!<R(5k]`t6Jb]WYXFM$J703'NYeXc\(<ZK?$*$E[r^,aMOVbp'irtn&4,U]
%7[8BtTO`VS?Nj+Sn7:H6+#)Jp63%0oabilWYm)sRdS)/!m07]e0pBkE`Xd$&2NW-U#.>ScD9MZg;QC%Oh4fFMSN%VgIP6>$_5>-i
%KQ3TbgEJ4:_"B)k$]/"O[j5go?rW2Q-VSAY(qM+<o_4#cgH.DqNCZ6"$OBW11@b=JlS>i\K!2Ae]HYqaolm_T?DMQ1[_E$WB,X5,
%P?AAbQQKtU'h=.s8GanteHA$+6I[^cmC])a=R_>)?1@UH&hqc]l7ADn1nljGW)E^@#fnR*=b>_kR43/pO[S\SOSeBM#fgh"R8teX
%=/ei(#2F:SU+JOghgtCcOe%^T!j(\27Vaj?)l2kiSlu/]0[9.4$>*P>86mFr-,:a7G0NK@Z"iTq8T08P:o"jT4XbR"8dP!l#1gsY
%a;uI?\@8SqaX\JF@=3c\V(JN%E0*Zm_pFA#!Y\H6Vc.oWLWpF#hRb)l8m79.?tF5Wnadl"V?qJT]%!pE&S?c_\NM,Zr15\dgjDNZ
%bKNfqKKZ9B//0;AI1$rN-$*0-I"J+a*nJ-*m?o)D:bYfDmtCd1pVco$KjD1.FiEAUAUNqKd]Zk#n-rVXmERnDA3sQ:Q?6>-K5X<4
%(%F^u^_Q!1$:%E:i=Qb)"]j?Jc%p?*B\Sq$._Z#`;)&7^Dt(Y'W<-*2QHU=bnCtDB?GdV-]aUXB/Pr5YfQqLD5tE9)RkmFHD9b(h
%gL2O7NO#**&K?d=[7a:-:sL)P)uZ"@k#U=,fZ%'!LPP!_1&&pfW8MGFp8U[\Z._A,"q1tmUI[I<;C/C-M?I/M%hhb94X)oT-*%)0
%TN@MA]kh;6KrGGOe4&e?"!b#%p2fX3VN6hPb9Os>TE^+`^pdg@NSX-5jaMZTEeUNHCRKcK6fa`=,RQD*r2VXA,8LBni2$#?$0ouJ
%>O\A&Tujj.I2m3[,/V4""N]**@?'9;N1.kNG7l-_?/XOlX2Vm4[L[+5A.RD%(eG:AYH56"]1!pJ\n`OE_N^ENIiWti"6!%#<eA_7
%+dh3sg7Ds=)]tZ'/mt*g8'p"bC6XE3KTk<;S>6TTKAZJ<ek]0k,o_Ac1Eq;O<2iWIo_HnnMm^"-!DBFDisoS@G7^62Q^XDC[0<Bn
%mD]LiM!-_?,E<BUJ$(@X.X@?$!-5W"iTEMl/dqYb(++TO_$B3(>$qW?<.dQ!\6f?.kGa"k-?4AL6+!HCJe:sji44u%%Z6!)8ed6p
%6`]GooH/K;d?X?4WE3fC!<+kJG%J&4]rYb5.&C.EK"QS\fM92dIYYQFkSH=\Cm;d\TK`2nT'O/fUo0#G/tAmji;B,X+?I9smdmL*
%7%bdu1:M0\9P4=j8\l"<?+Rm:h?W-nLQ95igKn;1mrJKefC/rI>CKWSf4R:LgPZ&co1%D%i2YQ/i8@raD2Hl`]Y9]a(2?3ZGIF?l
%ohk?bCY*S8UQ@E]lYTHR1t-uki3V!iXZ2TbjIouI6-5\^*j)\IUIt\B`ptXm"EBVXV#cMU:[msE!)5k>Oj;fb[kZ!<XcY\.%Up<_
%o$]G"UoK\1#<],$,=jncJ?[+CI>mYZ/]2P0A6Z(UeI?p^>\3+4:]r26%+RDGdb4K(!<;i+[Y*AE4o"lchXY(ajIB/dBPU8aC2;!I
%</_Qd3XQO>'3Q/Z<6W5H'3siYI$V'0bKjV1rYdhY[_IPlU%PTtIC@]GMgC1j]SW;p]a6+AI-\``9H[WVpTH;H\^lB7V$@14*kZ3f
%".<&&-(lPK6lb7PbE-9cmoA9X"baTR7Mo,&\eH)#gNS7A0*:>K8f^u]1pX$O;7rkYPNn<omHA)S-[jJ^N%c4RDFdJe*7s(?FY/(W
%:ej"gfo%D=qJ"G\.+@3#n#?k,3?(C:.S=lt/`GQgGMrCh<L1!Lm(Qe/DS#Z\Zg%p'd+JL^7Y`%@^[sUl*jt6u:`[`7jVRe(PTJo+
%Z,.?uEXt;]T5f8_[`hg/W6;3BiNqi\&Ii%S-IuLn_$\GF)2`97J[L;HEh*:Y;\g^d)Rphc[q7&rB7o5fmgeoER>_WogQpI(AgbED
%0cA\c>Zd_%#@"n0%=V.Uk01fqD[:;Y6[Ds3Ql1"Ag2KfA#MIAEl!N309S81161mT]d)&sZm*OWtA>`6\A"-Gn]MC.\X)52XDT.:L
%!>1Cq!q9u-6*2`T2<oCETLW(B!YC:;kP@f>Q4Ea\3ueHX]@;]@Ome@HQZ<!IQt1$VE#*_`L@iR).OI[h+:)`c/#Z"qX<O%m1CCW\
%V!np3<D%h\:b>]KF<88eKh$g$EZPpR9Y:j]S]8F!8U$KFUumUAW.?t(L=1$c;JnQ-fs,^Fnkh7*"@p4.l\[M/h-I2YTRCah+r,Se
%s6#;?-$:9%m0G=<Xls^fllSKsacAqnP0E[jH4-<UNV\F=k\Zs"!67ZTP#8E4>6-_pg+1\NP1Qh,:V'P6)aoC$^h_X_O?L+2Ro0FF
%T^V2bHe3PaBlH/3hri$>3C$3hVoDbl%%]rU"_cd1VHgMDWR]EEgujTGD7#`?;Rnmio'k`BOgYUoe5T3?/5TFO&<p=jMpB.$rq?[g
%Ci'J:W<K^OPQ7M=h"Em,IMrQ<^`^#1Q7bGV2?>@(p'k.$d<r9HP\b"WojH<.m/_A_$CIU.Og_[9>-@?@fW5Opk"@u^`;)aAoq?5R
%frY>GW6^MW\$je9#(<9GH4ds[[lmDM:V\#HOB9!Q^^)oYm+:-C"b*`M'aebaJYhP*[l,Z[UbXs_%!2q@5[uLS5ja'uT-*ZCs67E;
%chuN3l$86>%NC')ESnt2O4Aj59ojc<K*^2>Y+.eIGsjiY#Ar2r"bt*NTe[ZW]TK]='pT4rcF$*MZV6C7d!DfG'/51ZgFiO3W!%Bn
%bup)t\SDF0Eps.#!?MZbD;^:.<eoi?r-elE!u?"d`fhiGSH_P_NtNO<<9t#opaKkuU+JWgUkcqE<.3,uSoLff=&9`:J-oJ1c1MF8
%9HuARMCf08X%3&YT#t:0]*:GXCjZAOG>L+pOt>6&Q(<M:H2.1bHXqcFHL78,K;`o?,AT[dPE7[iC(*:HDP44tc[u$\gGp`%)Rr;c
%1Pp:M#9.G"3!3<;5tBdO;6kKVneJ6>6JlPIZCROUc_?M`gNZC08`%7?3k)\Hf+.R::'s8KX&IEk^du*Dnq6`98a7Ek\mdYWRCp*=
%8QcMXUWSMVN\KM@_k?`H%Enn#k#L5'cS^h8_EG,E/=AMss$OT=O)S]STuZXLiA4)rH"?C[TAZ=*^HI[FB*65%[Pb_=Pm]VopZg%7
%nuHP@#3@n\@-!!s;jM?B?Ls,T"fXopoI_P(m%eY>qRWjH(`QPr1bXfg1J54efXK(mE9]K31Eq"1GI5&&7rR=V4s(/s]aq>B:-lV[
%i(hQhYie'WcM2_"nUplZ2]P"2pbg1u46`Rr%L+nDi,T4UJHBH1a)7kR=F)$]SO'OpSN+d<ku+E"[%6Bmn`OHEhT,`XEN:4Lh^Xsr
%iLlG?2KQ:hPal39K<:4!oF=CBZSRQCfll>gE(2Ei#A<H4-b&W+@]<)_?SRkj?sX+X-(&!t&"Hoj9YI%a5:S>>*fL^l(34_bbs,.;
%4YC2V<<lj//PkZc60HB_mJ$99Ba#S\DIF<"Ej%%36'bQ06FfWm7fM2T#aU]6Y/;Y@Eh=Uc[s\39R%GARP;dA3!Eaom`eK)E*\htl
%;/=m<b3qO"'TDUs=kfkn.(jK\)N>jN,?k3s`I5%t>[sAk0]Vn&<ie(g"gKY,2$toQQuo"`EK(FZpqOTWFe9)lZW@.-5m-3`/n9]f
%!:lO]$,S:(^>=I7IN#sf<QPiW$)enEOW'-)RTS[k8RN+R)j)gD!X8Eaq$KX1gr)V7K-f/YZ4<:\5.5*:':CYdF'h2TjX-AY_%sTQ
%<p+-V)8UPD`=c<c%4mC8bc)T9V>sXg8>inK+KN,k%SQm.9"uWWRMC2QpXM]5578FB@VT4h3qDGV9ff>RXT^M2/a^\Q'c*P[XSi8h
%^a`l-j<+!/WYNHL)Zr0cYf"7%oedS6<dk\^[%-nO=X>VR$h^-VGKPP&r4T*cf^2n^()Rn1/B[$;4IU-tZBY.[6r!WK,MXj(DQ#*e
%1eJrk.@]Do`b)]n$@")/BWDOGMp%V:6uHULHYp9&@h3a%m\!r-"gDK:>g@xxx(3*q6@ha5AKc,g[MTepWq+kf%I.+!6&oe:g]s7;
%;Bt[%`R(KbA4NnMH*[u%3EnW$/`OT3]_.+M\AcZGIO;er(@/e&1)\Xg,\pA\@O,+nN2[h?G:li$)aV5_IIRc@q?5dI@C`qMX9$KG
%K,fIm0pi##<Z1*DHa&2)+W"V)o"+0g'gn4')9'R<^@VEp[fVL',"U7kFCTqpg=cZ8GQuJV_9\1WC&8*^H.:K!%GhbZ6CjF3fQIcJ
%Ia;_Y!cu5!AV#n>,46%^T;,H64)cH<due3X/[0!O^ucTc9L_\#A@;ZB<BGM/X:lu[9EE*G<JS-s9hF)M?]qR`IcL>G7c;3JZsuah
%C16^31B:D85^@BG8!d=2+4qBZ]cQD62'K/6,J3>cQ9):6bML%1Tt.L=O$3JG\HIq(a0X>A6i8qFp#QPbpJbLP=)oS.$Wu%rC/d8F
%n6T,SaclgB`Dr2SEbM0uR0?hC_7PtI%Pr\C!4.N1WT,="f9C"c'V\V0[jJ.Ub6?jKI=@+56u?FlJt"*?>gLNs?[@mb$T9RclAB]q
%[DM813AOIW#)'7IjDhOHXDH(#.1SBb.dJ4t/)28t82rli"7-Gj\p\5@q'$U,\su_GB">ucbk7.PL+$b$W[lpZE>,^XCKUNe;@?`4
%4-D6*_mr3.WqcP4Y@xxxxxxxxxxxxxxxxx%)-n,$4Y:FQ84S'6I3jPO9j(fJoM]'M&('Ga,o,eLYj%:c.R9ruX?I[Jf$'+_URs1@
%^fmKDCEV1e6&ksqmb0fM38+6kNed#d@CCO?:;X:g9pHK##Qh-&B<s#`Q&K>WEl*?^N>%HGZUfCQHHYBLoqBp;AM)$*\%nP]QF9o(
%#BM*WdS($dD6]L%7;i47,l!?[UQGV_k@H8T`%C?Zlq%Cn9l`J;o.Z!KK,1nC+jo`=/pE4_<P&8s$7ImSnB+Yn<EW6)G5)>Z>9%qZ
%A`P@J+=-6jGO:<PGu&ScZ[&D?@V0*0/S;F`<+%DgRG#FWAX@A!+RC4=n_@)8<?Ua:<[ruL5e8gU?!K,$m8gI3b=6?[>)Ai-]>8l*
%`/L%gQr--07196Z/5bJE]a%<m2D4)QNT4l(n+C"p(W]K4>KMSS_(8K==lC]KHAZE'A1_N8c"(2J2EO7,-`]2FN,AYf_>s'=k2PkV
%36ZI\1K5nJX^c$GK#o51"`s3]hi#9,68RI7V-M2Oh0@.iDo(.;i'7kg0=rbDG"l2!Nm(*I6j9[VcB1VJK8UN6W#Fkkr'BRa@$(cW
%+J'"dZM8,02'6o@A&H0![TgcaW4<TI_ANA3=#.mGI>m[0@F:I27k-GQ#0Dfm9?tGB?#@S$8c+gdGBGA^oaqAWZ3-M"Zt3!YG&%2.
%<9#utF87k.J]&EIJS=FI"3G-qQ(K..>LWZG>cO&lhP_M1VK=RaMLa,+:@_tRQ.sQ5fV;%r3NAUO)l\nN\dm/s7@)T7EKaT4;W.ZO
%3?5(]D>^Djm?p@G41CWfcau+-2065_qiA+IF)lg,rI&$A^J#pqn<>c(A_U*:FmORUDDD)[!P%p84_EeM)`L8[QTb'u2XpVH4G'OV
%.sOac==[:PoDmJGm6TUN]8j"4.Mh[a!nO+HIX[5c.fq[aU*A23[W?k`FDMh6cYs0Zc>SW!$8hgP4UXI>@CYQD&>e;(+g)(^*?]:8
%$C8[8rG]7qhclqiQHD\95]s,58eO(Majc2BC%nIF^s[OYPIEHX\6;@7g!0t)/m6rG(*:7-[utk!=N1e/BeJI9pfT[EDN_SH["D+>
%hp>:ZMMS;YSTAEcaS=g]iQ]El?.MAFFV8:gDZfU$;pa\U"Y^^?b=K[1Fc.g???@t6XLOG,OiePnKo<]CgEt6U#ENoB*iL^Z0_Wa9
%8*e55<&s,8V+1D!B?1/-,[fhU1W^0DfBM33`'RQ#Rs6EH3Uk7kG6:,XCWsX3O(tl%kMVpl7jdWU`Z?OaC(La+p$o\$FK7Q]dd1E>
%KQ0TX+J&5ZKC6o!qF/pEPEo+S4(6]>L$)jg!7_r+8DQlAbc!!/\Jh:+W?*>DVtP8"j>H1h*CMhnQe_]VBij<pNnW;Y?5qG_[W9Eh
%G3:@43!N4U7\,[7%#h3A1\ol*@6sB)@5/^IJ88%%/0BHsN8_JUF]9!T)An1M#4T39J=c#GO&.NQo_'tN"h$pH9+%VQV1<lo#"E.M
%+Fq9X3Xqm%D%RZ)PROZ.E#muaOjQ@0+u1o%kBmP#c&56):b=;35&O2WK!WtB%1L7fROs8+-ad4M5q89"L+9ucnFb2fK6;N%Qt*@p
%;TCHq>GOoG!7%>Km.\4?_B/CV#fksu%giLg]ftf9=jH[Y\n.^SBRI/V\n:;-b]g<H^_qB.DN9Z,Fu8oc?oUJ8BF:C0$9K6A(TouH
%poX</H.B4T"4iHW)&InW,NM_J!mY./no/%u,b%u?qKPA,3NWiQs"t['A'1sq/cnPFXcD>F0_"/.QoiLohF77,Ru&^hP4RcV2bt;;
%=LVRfgl2ZTmqEIiB0r(MC6$Gn'YoaR`Gh4!);C1E+6M>eYgZel:3b&p/_e;GD+6*\bP5HW'Di-q&N"aqf!T$fl'a^9),=hT)1K?]
%/Fk7OD0*RqVurQ,gH6h(Q#m.uhn7Q'4sGKp_>=5MmYSN((2B9R=GujbFs^k[Md&I8c<sZ7EX<#F+lEX,I"0]Z\!oo6=TRsL_h\S!
%>?rBP&OQ^,p^Hor!kP5ChN\-d+Kl6*K(HR6i"khs'JLc=G%38hS,YO$;1im#YQ_e!_l1mni4L]gG$Ro3aOm3mEZT4D(n8f.S-cV)
%CjFIeW1"MobnM"m0fI-f+_>I,heM347/k%BloR:Z/!2X=])C)j2iL&n&[n^Zj'ND/+`"1u.lY8&VJ4kQ@2`OX^+bV6P9Z:OI4"4G
%7Si:9;:V3-169^7[Q$r9K_^97g=mh.:K@O/kLZpPAC>o/7ZGXqfn66bk4"@\eWW\sF+q4DG]J+CVRN6?<TUuV]$2;B^6"M',=aK0
%>TuY.e`%V+:;jm<f1^9KkU&*)5E8IR:]1't<8I=l'GU2TpOcUPj>=-GG@X=_PS=1:l=&8o4gUQmpM/I.R2e3F1!!Y@qqp>U+YBoV
%Qj0/V+h9&4l;:@._!0naEtpU*\nsnA/7!@)L99N+3.*mtms;B),DRCM`o^Iks3)c6i,t2/g-H(u63/e2BR%i3S1Z@\e94gVb[R39
%#!;?GieasC'#6O%*luN6+aub.QQ0h2fj_mpa7^^B!jHH;^lF2P)*;b7NsdD#HY(f6$VsbeJ$TC,6It3!p6=BkD%Y"FHJlu9!nc6g
%_O$Z/TBXl3>[:skAF/&bUl$^gcb=KAJcG--YO*,Tq"aH#c<WA3lk_2DSl6)$()WB<A[,4DCYf6r.uNtEL+`Xm3rHGR#55,F[Ip2=
%Rkt2S`o]+2b:(XNRh]^T@xxxxxxxxxxxx/""QZr7S74s'gD\`\oH5$aC>M>HU]>Gb:R+Lm-cQ!_4T.3J$!m..8EnX^b\]mi@XTD&
%j/-DNk']aULnf@GL&06#c*,p6Z2%/hn*+q-ke!/LYW[L%55jH^;3\e)'*u\^j.YM7GECHP2gMQ8jN3[>'^1ACaa&h<YI?'<EFpW6
%'cQT.%f]kOGH)mGCE:/+k(/nlCA3oBTP[5+C,]@Gp<ETMJ8[\;_fE)=?1,j8A*5`7Z8@Z86OeD5Aoa*MW>gYiX#B'O=gZ/$W^!F,
%)dpVN\:k!;)DfP0ej]M;T3#L:WmcQ:`ub$K4u[hID4*cVFSu\C^1l72#lb@T*Xi,*(?XbW,-sYJhR""r<HUQarcmksFK;6pgUW^9
%/4oXal$SnoC-upS'eh_Q?s/\.lPI`CD:/dRG5f1*[h#6&9jU,FMO*QKjY$E!V9(jG^fglF.H\X`P&rjDfqtue3(T3&q0ohKHjqlF
%<Se4o/Z6(b<56+of*DWFfF4WmrQt$XIt!>1?+UQALSKE[gCEDB\4DoSR`-tmkPOQ4Pm5iY"_?CX""S9,"tHoYND^5()5bMgJ4(HU
%H#7:N#BbOJn,`dXTP7ef?.@`Vg22-?PeUN7)@76okhDtQ_=I?DWE*@uNlh-pZ3@7\9"$u&mFhUl*%!%57]:E_=oJ;uh@C`DQtp!F
%%Q![PFc/BoFTc(Z5Xi*f!O7+Fh8i9NEfi434^qhh&?pKfO8Q\Hdmqk=e"GaF9m:&2MEM@KhOQc8K9gs,0Z4'AIIr)mJ;7+K)ot`)
%_7kX]&2=]XN-ajJjc#2bF*N<ENf`^M<!k0pK0A-Yj;sTT>@9m5k!%K=`O36Ji2;N,7SuRMXo5>Ur;"#r>hKncMk]Hfk`.63qRM`q
%\uGZ[cmZ(d*])mc(aWL3J:ii^*!NQRAO=PQ;$-@]bDNK0hf^FeNZ,#.%BO-f"W4lnjPU9$Kl)0.M+YMAg^@>r61&V([]++"P-T8@
%(,8\;U=PY,H%otq[ai6`rPj@f4-;0T0/82)mA0/Y/agTmpr!a/R?koE(^E0Z42!5YS$^7SRI_0t:26R%#Sh<]TTi:HhSp2;R.[C9
%*G2ehFe+Y=?5$Y>oAc9(0kPp<]78n(H>n9r+2`Dq<LM[PR$5Vm$k4n0^,ATsn)4F"3a^HSFg]eJ-8rpbPQKKtU0@FkpACC7UR#n=
%j?A/9a''NuKY10Y/#o&9r<MTKQEC7G*;P,@o?7^^E@dE_!%u\(P&4;(a9SXg6Je!Z(EJ^0^lk.[^HTdZ:d<9BPMS&N;p)s0ks8n:
%p;6I'#0(&-9UH-aOG0uIBM3u[73r)Y]Og9AMO@n4q5Edu,o;+(+PfqYTN#g.QCZK5jO&(r6^UBC%Xt,Wi>IkRSr1a*!Z9.NO5_!q
%BVYllXH]f]%VClia$=)Gm@)d[R(R&CpD:brTJ;$39?L4oQip0"i`Lp_&[]S/][OV8oljG->o9<,iS;XTqtb!"hcIfHB\RW+GTOtM
%X9,[4aSB6?>eC,u&jGZ;L.Yce__a?5e#V-ZW1jO<K_,N)@W.FF1CpBM[c<hM/-E/@2Z_Mci>&e</cLB:=s,b6Y@4,`f*0-TX7Q';
%01u<L+0:!j+O-SpDq`5SUJi]!;;t]#A2EPJpH[Jj!!LP]&"XhKf.JXB5_e:`.r7MkcirdsFm-#:(6faKUM[J\;6GTjRhF7HO@sRr
%<j]R(j^3Y#iQ;kh!)^^d+:gk)7B]6%:(no%TsrOp">i$>WKd!nfGQ4Aegn'&jar^eOpSA^\.fL*q58@O9?15S736ZQVDH:,*/q2n
%s6%GpgOK'5_7.WGrY$t%RM88e;qnX1RFH#TNsu2]d4cUR]:[/g7NdA>^>a*+l4+>QNN2ORhIe.166!=KA&_WFY&q%a(oPQ1es;W7
%_X$=QOl_;J@",XAj?::7_5m,-B-c^n=`2kki5gVa,lblA5crd6%i2H)fbbndHHH(l8aWZa06>(KI,Xfse^E38hVdYb^*)J6AhBlP
%?%c1+"#-QVUh]GGPmQW-%<K<3#dPgDM1L>u57,B]BJ:Z:=(WeM2a[]FHQ<L"mW8=s#3W]s^rg1tm(rt0)2(0Fi:H!DI/M`K`d,e!
%FGgRH5B4t)ATLMe3qGpZO^5P0I?gOOdTgO>3Q*n(IX]4)&2>>KGUZ`V=iQ-e9hTYmg>Ekt!Xc#W2a\C'f?5S!-@ioOIFl[3%G`0`
%EZh4Xqa["-g4El">,!M-#\I9>2ZcU4PZP*:hfUmXqYkUF6p/d$*a*tMUH2Rs)/55k+!2^Y]k,5&=P]u59chm"/u=$gakQHDn01"q
%AL^7^'U73DC,0YLGY9'\@c6OLC8oj+!ahZVj]TiIio+,qAQT(G!h!d=9N,^&SYUCn0%`H%:gc%5r!1ree:7LCgP<&C$.aH3l&W$[
%jo*qWV40OU#W^aX<ORncs"EPAC[+1[r1AMqf\u=K0qJVcrE+s_ZG7c\?9Ve*M86LZRLAVPJgG9Wd"&Et(o\LG%<^ntp3]'k_Mors
%YFM._YC7",'^ul[WkL,'Gesu+N)4.mV"q5FCl1ILG5Zr_K@O7V#,aYP(*^3cTblbl3M@FEY[SPFZ`$Esr6`pt&,WhOFSQf%d4h(+
%NcRg.E>lZaB^XS)_M%D`[W)J=k#f'V#BYtaRV6)R+[!1Z03N)Ti*`ZE=tSJ+lP11K6&Mf4Z5?'hPd%N@rYcTt+)7ukbJ@LZVQ1g(
%"t5Y5%_=H90_V)b2#-ak*s[#ndiV_ccpW#Dlu_g&#-q_=a,Z_\Nr@_(l3cHd"%6#(r&.:uGd!t2'jc_/4OgK?n5X?$`>ZgYH\ks6
%HB>4%C2J9OB]TlI('FE0_1_\[9/u1Y!XrnL+A5?3_\u"a\r;4tnBNL,!meMQaKF44LmMpG;&+s<4AS9_WqqPnfV2(d+Y)I@`1Qc,
%.2CW4?QUNZ9)c"[lY(KKl8!WXl*%='J<+Ac1('ij-E35ET4!0IqWPMjOM]T$2NVG'"QVk6*+%b+m*hf.`\c5n!VF%B!:d,92o=tS
%q$u2d)H.YJ%m6VQ;$Lep0Kg9VLH4,D(:\r8Uk-X)-50Wc>`PM03PG;?jHn9Gc0N5N&4=W@;b\oE=ShI[QnJTq!N8*6G"^,oDnmpT
%WHXHff?]N/==27=N)R@'<V9?U5n.VDWd^:Kg1t;.DOsp`NM[%^Uj97/En;@[!Sl^*0U$uaK-<bdd#<;*[ii;*8q<*fbi55fEeq\3
%h%$FCki7M%#OoHtK+GF5eNDqO#u?\=-3'ek+9;H7U0(sAI'p@iS9o3,'-'foXZT$0#$ZeHf-$gL\/EBRf",cB(Ti^abV..7g\5.0
%Q3L3uC_opkY-fiXU_^IQM*@@$#?`Xn"hA@Q!<pZa$I!C)_Q#&gONXo<I1*ng3=<P.f%Ut-h,7'U+mf=,]&/#l&rZnEgJSr$Rr.bI
%+1t>FRN=5Lo)S,"2kMFi2P8E[j]EuY>>DskE[upW*d%.jc%%+LYE)NX\T?]#oJEtA5CqfpB&(#Ii(-!I#-,c@%#iB9Xr,]Pqa7uR
%PU5/S/c:%5,\.[a%HR*]Nll?IOp##>'i;^m)9LW89beMaOfk0PBe(o7_u9C9IV29:%\F0F2uPCs;(?D_?6YpQjJ:]:OLDR]e`Bdh
%]gh?qdh6lYT-%QY;Bj3+DBRP]?A_C:m!ZYn3pn8AW?.Gij@GbUp4.,JJR8&XV;1B:Y/BW_IKtaAT`eVcs&6oTYq2+WV[:FS6JEuW
%4]&B"\Gf&blP;u+()%0%H[Aa0=)L&>Uj]5-D,>I+>7ccXbs9354JG<a3/C(iY,KYpFWUs,4fC;$a[t8Rn(&TZYjQAcK)B)U7]gB/
%;Yi4(D-RFZ[tnB"7uFb*0=K__ps:4@cT%j2D#:Oh!GWr3USLSE4G*HFaFdKjSUr$ca!r/gpcrrcV+&(M\Co<'p4Wl-N9B@<KP:#G
%TJb[.iS@?b.rZ&qq>O)mQ+AZ&o\5B@S@ar9Dr8bDEUYXS[^aKS!O"eRNT+NjS'%Hpd/(>?L25@6BJYTGl)\huSY-IQ>LhJRqp!:R
%V>'YgEcRq"=f23;[e@xxxxxxx'QA_"J%22QM7^3r#1fs<"_,JW.8%PN[uHOYIG$pKE4]\jqJaV^PlU=;%N>#&oX_UPA[lNq?q2,?
%FS`ZbbR\%<V7EQ_B15'<;4Va<^,WUcoO@&*ffRW7X(u\b`fsYb?SJQ)LlJg&$mZib1PM$?A^Gi4(3N#28klmL?<4&BbsZh,[i>"9
%+6n#bOW`b@'(rBDkX6d5E#BK*+WrYeMI@1sZ'Zo4BZAA^:9q8$@Z,r3s21UTm];+>2i<LIOkWD']n:f^h_ob%4,=FkK(6&R.$FIg
%V:\09L):S]7Z\FbE;F.Y$a9Ln!@+C3X9$9Ogd/kHdE4bc.+KQ^%ftWbkWQ^-nd>L15:(Ns#1@YA5eh8e^'Ju4[e6</\mNX:eQ'3R
%<i!$4H\EB,\k:/eSsf:QO_OH9HpRgbd&clZS/dRq<tfYC#Z/uREBIEm$o2RG"7f:hUB_ZA-WXFZ"cPEVYmqO<U\Zth$H%#(b^8jr
%=u+5VI2Wakp`<)7\)l?!f3fT$VW,paQLGNlUS+R862<u8[4IA:1=3!nWn9#u"4ijVYfNLJ\iQ<48b/-$O5GLYAm%#OMal78O9o9%
%>;7uiABEB?BMsVR9`a#lg?R[N072(3Y/0qV\QtLmGqW<@2$_kde5q`eeQ6E,6;1O8LP&]JmTU%0*VHUsZ"(/Ob%GN55IoKF)k7kI
%K"b+^oeJAGR9O%"Jc&tl.VlXTrR%qDXfN#^_5n9G`sU,(3.QU>:i0dcA]W>`B2os\e[!K3GNYtgrnS/kkGKBOKr%YKpu9Jo<+5$k
%;e-^SFf"k]#2N*Wq>$bcLpDZSHAPOuBV_d_.85Y[#\[VF:r:>V!g4/m)g1I`&$i9FJ(P^>)/%L&M@J^MY^rN';DfG?&.DdfWg,'3
%#*=q!0?mSJ=UWNUU4RYj<)B`TWAU`6Sj$nskYr;=G&u#nR<a"UM_45MrFe-F2>ArIX,"VP't@5&f=D#:=sTF+D,!9<CFd8u.Kuh`
%pl^"ub4*q-K/GFe7,:g3;UM=JD;RHkc"oIe&r'f,qlEr4>em1lNTsf9#Se:Q%SJ@rhA0Z=J$drH5^l/q<WlB?Q`AP>F(:1XDbe4Y
%73^h<A-bR.3>(!_BNlR2T-%S/*#eCj%3UuH5V=eHeKcD85UlVuMijWo!g$R'if>>*ku%<aVoQ$h8c2ir\O$FXM)bJu6M:2M'Z7om
%m.4_'=X::k+-*IIGW9T@A]:UM?UX$*d2oGB=l;&Zk_<)mW^?+=JG.mP_NL4c'M=\;eCk\ZfcqSgPp5"cXj?^LR1oMM7j#O8m<):X
%*b9(:B,X:@gA8tUDcVcm5.0LgVB0!USYNPuJ$V/f8H7mdfAY\hl`c,@0[$jMfW+u&K&,nB-JH<LYbYGkgFQZ8X-iB)oaQ.7g;[N=
%frYtJ4q(N+JIF*dp$6+@cgt[O:ADB`X;1AYV.p-maiY6g@urITkQ#%EiE)fT,SKD7b"O1R#-#T7$FZoPl:.(cTIu_`/c-/R/_2D1
%cWT>m>*iNTqB($+C8T&"cGfG.5ai`5.&@>MC"J-:]qg:b5]d%a[)Lio@YU^*9TR*i5WiFs:D4Cd"3Xq%Y94?S:]qJ7?CE3"$VL=A
%kbe<pg`_!:%/?q^0mK1&b&lJ'6l3!FSZ).&Vc;u]gcru..KZ&<$@jo1.NfJp]'KKoab6N"H!$r_QE=4d?!Du'A]q*M29dq'V($B3
%+s^/c\s.<9V^qqQ?o`M.p2_\Ioa4[Hs6@;"#qBjo:*-C@Ush]2(R/oFgSRJGWc7JC69qF<f'>pDE.'Gi18i]KWC'Rm+tXcs<RKG#
%`AT>+XA6l)XP1]fB'**Q@G$K&nU$Q8:,@.`<L/Nf4D+82Fu[OH`[)FHrs7lJd#X:VP[5539'QlIZM>72`QKK*Q!e^7XU3I"b*mD5
%<0Na*UpB!j3m&@7T9r=+#4bUkBl&I);idF560XS:Z/&DZrZ67)<\^/kc_Qj"S1RGQ\S\\Y@>AR3/hE2r)Tl]j8[Mp>O+Wj#D[[qt
%DN4cbAc2HCgZDA*RjJ:Ip,UYaX0(T`\J_k<FkQ`Sr[h"Krpb2L#Itl)];#WCKdVokm;8D-9hR.iUpVd.FfPSul^$>;CR7%Z2=Kh]
%'!q[l"^:?J9`QisdKA]lj"!C4r&(#1U=#;;n."Sc39=&sYVJd/Pp:Nj*[MbjaVBJl:$nt7;B[\fN,&?!h+gQSTjbh5\_@U?&&qPH
%mU*m#ceke,cp\lX1[TfTSaYM2C/(B,ZKVXd$k@.W:u3LsL>)GC;ni2iM<*r!o4:P6A6B/)"4Y-ocL4r;<ph3?(X,0-2=<1CTXI1t
%Usr/<G,,<M.0fOQ#4bW.*E:'_gB-t9UnBB$E=?A(egiS=I9j6sXL?B57scaL(g`M@*01bY=<2%[q:<qDk!\/daV.+nW]VM++cm[7
%<A`/#.[lB4+/KX-0!AGUC>Goi1_:s3eLW;kZ79Bcb+N?cXq]ephgC24(2L)12\<o!"=X<c]ZOa5"g$l`^fhrp3fH=U%S?s3i^oaa
%Du93CGd.Z<d!hhWY00PS=+;r=M]1GX._igHZ%ClAI1(?P`;"2uEMbd<"$&B[S#-P,4=mD93lA6K0RQj;qPkZV\^)j2n;MQUgsJS]
%B>nr$[VnIBqir*>D1@"nI:29Ih#>HAQ:gYUYJnkXgbm#AVc]3fWV^?J5O:&fpQMY/\d2ln_:n\[d<;'-J=%mi]#h?k=J&c_Oa_eu
%fLXh+:5\Si-?DUAR;<&<6^RqbCWUmJ4'Q&mf'@X-,9T/"g/8p^.Q?2C]"6@oY'YoueTH4P!n]F0hgH`30usuaq?gAM;5Ile7eYaR
%!`77+n0fDd6!JZN61c:FAL\`l.U?)*L(N!NR[Fl*e@&NZZ:cL"DQsEMb:B58Aq,O1g5_N'TWe5^5T<i5B\Qi"BLbZ88R,ZrBdG],
%VbC9a3X>hWcFCDUB_@T$@u5eO^ejOfWSTH3/qnCU$V5%Donq051?)KgB\=G<4f`!:G6nJ1EgqX!V^rCbc'5%ibq4&m=$;Gd0NGUs
%UKsbsR`6+[=kIi`"#ah>'Um$bm8<]g[I[kEf,%.oS.:CgI>t3CA`U1^"^XEN.$6ME\m\3>R'1':WjPGbq1(K3e;0sWK!@nZ,u+Tn
%DDMBjK;gZY(gpak.9&?Pc*mJ)3nW[#l#;*id_iQOV7o)f8i=oX#>["ZIdk"-kVNq7(7hXSEU%CL5Yt9?pi777Me:Z.j@Yku%WCul
%BhePOW@N*&HIXEoD<:Jpi5lA6Jk%j)9=*C/0&*SPqjE,8ASp+[6T&YKVnHY+Zb0/g7<WaGSYH5$*,$2s=h">S\TQ'u_hWB6@4RuO
%U>$EoWC19_T``W=1Cc.aq];!&,KN3'@T3C'"a;(OIh,4.k40nf7rfB3kE,g0iK-H8QjQCIjhAcu$kU-KJeV%#^-_\.T,n9s.X\7E
%%+;hm!\ur)?_Q8i!#b8+a*)B*i/.S1%GZuEJd+hbp,64B*JA4!+<B5/GIP$QN40iB3*35j&l<'\md^u5^3RB.kJu6+Hgp?2Cn9A/
%)$)(tXXG8DV<D"c5j_%`I,'@)19i\;a*Rhh+Vd2k0SCKefmeI09p>Q9"4J_.5T7XC&l2;lQ*TmZjHFCV'miC='>KUNYdqX\KRt-7
%OO7,M6pf*"SlOMnP@k_@nacqXekLgPBI#_]_0FjpU6E$N*;3Vu\"+Z5^^q[Z#m!^CW^B5/QBe_+A_(a<`h6>?;?O`M5`e-:>DYWr
%WT>gqpO[_ap!JOa64muEOiGqcDW`jW3'><bWj\(^VP#2cAeL:SJQBSB2diXe*R6dKIfQ28N<4buXh#f=Ie=%]a['GcU%D@j1"1:r
%7T8q8SOf"g=.`M[/745'^5QIGf^sW^IuAe;L#-B?j[$/0'T#&*65=oFE1oK$FVIu@>R\NqB`Z4i$:0R`k.6R,&mUS,@\DU]YEfT*
%n@hSHaX\kC1.+AMKpM'+qH@-1#-K<q#,W7?Q[-<A#G6JnTH9C^W,<cNk4<*LD$mLpMrbf4bHa)Gmo[5S<QJM7Tsk2W6RP,@jJt!^
%)8$3tU(6rWi,PieV=XL;b0A82D369r_'CQefU9Z's5m1(;28HPM@A:C`m#2<:`,$U#"C2<U*_Y^RVj9*qng\XfPch#??"a##-1=c
%W'4J&m(J"m(M3)VPMI^DO-MNUn0rT-jmmQ7WS,#9rL>FfZ+Y\^\fEP-i^0M]dPD\a(2a"DRSG2kK`HhC@:\;FSZkj4"0I44Ooi('
%;t?CXUC+3#";r%VGZtY_LXS:qFP.IHKP@lAmPrr??bo?LF"o;4I8,Yc>?HK\Q=97+h8,_b/u(8!]a%ckOMY^!86]K@Rja)'CDn7&
%?fMI_o:oI@e@:WA::\3=H**Q@dV>Ygo`F4Z?A8cC2=GLm/YcALBuF]:rA%*S[^9nI<mnhV;K`)tp?,i'8Dg0F.@'L&N=up*XCd.X
%(9>Cs2*M<nU2i8]&KWpt.O^)i!#5JSR6;sCbK)ej2^D5/0O,.n7u1EDhu=\1,usFR=q?D+V.">o!2K-(c5s5T<(je#QNa5=+3L\4
%g=!&H7Yq1d&KBNo]ZpCOLNXKLXu6;pmnmR^JKd@q,muiYlUh]1/gF9;#h3bLg,<m,);rt0)KGE;>6,E7*r9<4>7_gM(5N=8BJtr-
%c0S$j0!QE+AA#u!*7J9!i\9A&/*cB)fEbTV)(UieH?3PcJ_D&D)!'7l&8Cq+f&oPAgIsd:i9i`n^*.jmC.Lqtosuoaos+R3aa2^-
%VC[)uk%E+W-5N*I3+;t="'qD(ouUcoI08&jEFU$neGMoX?WdlR!F$)Wb*Ygi5oMhRku$#+XbO:V\O\#gWg5I-!aL!*V:rZ,0[:*`
%dO7p`B':q3)&/TDTWWnb.G!n/a0a=J9Y5ISeJ4>,+[)",gg-6=9X`>Y:,8r_D4_%03gK<6Y&9%23)b87;,'Y9BRU@>(6Srrr]p"8
%Q0XQ-Hmr&^:G(Cm"fGj6_=W;FDV+gJ<l8Ml_mHj#257hE!eoQ1"c/YSoLj1J0@(3CEO73SP]HpKFn$27YnX%kIae#B7ot'o6!i<'
%NieuOMSB>rm7+<s)m61WYH#qHhD`!WnP3"2C]O/"L>eF"Cq*6iji].f0#NZ@D?tQ\Pfpj$D0[FnO/4d=H2Y=;25u&Pqs1#"XM#D;
%:;t+ei,VP:s!5_;+\7W/*NOne`,/>3=NKR*k#gYE=EN+@@%P]@KCW#qj'(OkRC-@Y76o\.d4O4i$O4e_hR+;);Nn!TgU;%:iDI8)
%_ZJ3>Y-Ds];0[$DPs%SU5ZUVD,E"#o3f$ZZ7P<Y*!(SptH`0oC_9l\)*%IUR^WE6SRCN+S=jTkj;G"R"0H0]&*4kLBAr09$&Wgd"
%/"t&G?=(+Dp/Rc^\'3P`ZG`aYM_%=4O?7+D6*=kfJI7KVnPK8k6UZE0[ZpoA2$Qr2:^'C$5R#ukpTKplCH_#+5juO)DmK`-2d`Z#
%XgdA]iUk2pPhJ#'0'XRRi8XORZauoLJ#J+TV4,97?24iomJ6Y&Bpf\sjTp;hf!q!L-sOKgXd4N@/-ajn&DqHQ(UK+0Xib0Uh8&][
%dRg=jGP/A47UQ%>8qC+c'u9eBhgjIq]G'4B#IEj#:)45<\4ZhbEGJe:H/=0c@n54_DrY7t\1O-;5c4hal94W\]_CAn=_Ch`L:rP*
%#.50o0ib/S4sJaATIA7rbJQs;)\@Fo/rG`Plf's(Qc7ak2qI5YaL9jIEDm%R_'!AfcU"5&D3#%haf%LW['CiWR[(Mf7!)\ar)OAo
%`$q?eM+]<p!h6]acLQ>H.l7:nf#b;Q0%F7uK;F_"#`8W;4ffS!EP@*,IFn0EfQr(K:/tVe92Pq&W\f@eRV-RX+B]>+PaWbBBbf1X
%nblltL%iE4fg4ENm^j*Y,nA,"PKPjp*d!KlI4h;l;$-Ns]8YVCYd4BIlVT:m'0"CMKH=_JA=+[HWs2n^_SEjhT,qUgRpUdF%^U(j
%h>V]0q17,6YWj1H^=XoP1+r<Vk6N++I=uEL>IChMb?"]q\t(01"-WeEk(U^9h,cZ.dhIp`(U/TLU@ZbMS>9T#D)RKq^15llJp+W#
%)!o4/e`<-8eSLC#?NhG$dBhL89L?5jbo]$6%5@.&#4JKudFtlY7Vd8us'W[k2BosA0FV4nFt7+GmGQ)YUh)_GE%PQVA'#-kEKRWD
%)0h7DO1)X;X4&Aa8@8X!2ddIm'-)AGg(lZC]L`5(E_6?YpE50ap0aNdqrJPt5W>J[<XX#J"+8=9'1Z1hL92Kf*!Xgc4bMN&<h&Ea
%i1\q?"^gm"g@du>VtR'Y\%piTBcHSahguXtZJQ!3\5_!h"kWRM$Hlj$[dgq*_'t3pCg]gf8^$6M%r#6B\1^[Hh6e3/PsD7%_+FN,
%>L+AVVseYq3`9ag[,dIq=Gb\a_i;ep_o'BpR(G;ds)=VWgs:Xl^agoP1Zk%fLrmsNoW$5E0@*GZ!M3X&Y34@2%'jG/!"GNe42;N:
%SR4KF%G\G)r0;8V-eo7+>8%?11WZ>SH44p;3Nc#=&hP<23`L"\$Drh33_sIRhghk$;3reXA%cE$R"0-/'-+[<p+jiI."unYR;K-B
%]S5'Q228)aUrh1[05&Dl_NoV\#B3\HF^>m/M8,srO)"YtY3aU#fA[B@G[XLb??JZ\YNq*LmFSq=([Qh<m1-"[P.[pi91deEDh\@o
%or5*K@O[3s-r!l%J(]"e(a;H'JE#dJ7cj-N*Ytjd!IEZ4m`JY(%O0V_+9fDpqc<"/K<L=Gn"FLqLHo52m(n+^P=-r>1+m.DBV:hR
%`\B=%hKHUqlj^IY.<0`h19ei$p]biX&P]$VK@72>`3]e6`.sTaZh9ucQ8Uc44.&n\/;mPm97rJ]@5iqDlY&k$nD73)Qu=OFC5"7?
%T$2-;6&f]K"l!uh&%(_(YJ?9K.f^pR;*Z!GAL`V[[jF7A`ZQ=*8R2bS):_9)HuGEajnft>g5lYR0i%*OS.FY#%cZj3fa?8/RG3/'
%oO"2SiKs1Mr6Ts`Jg!B(5i8p`cU5)Cpk^%SF)19/#Uk.b)V/N[=#dsg$4r<T;X8FWF2E;,;Q:Y%V$CR>Y?4Sk75_C.$D>(6`_3rY
%)6V\#6/h0I"mejj8h.X&O0NQ)U^WXXh;Y3ZADQ2!39jo]]T-KIfoBg_AacZ@aF70N6;.%1fs>VMlFR$V'^B61EX^g5/MN53(#\"0
%Lh.\.B2D@SHJ"p2f6lCm^p:O1!D)V)YE5W+RE;-jN,)9pEc,&W`]d)V_"\'nj3qPqY``+U55SX/rg^]4l*E1%>$BL;V\jVI<N-\o
%Zi:?4T%=9Un#aobLM>(kQD%Y"*!&\oJ5bNE3/5W'045I/o+mpLYE'8bL5^^YC4X\]^\WcfpYL?$\m'mjW#rC%;<rH7@LU7P+DpF`
%D^3G$#Xs*15GEYZoIGERbgWUZ5!)H!Q-<5/ohk8eDqf^cPosCVm"#STK(O];UY8do&b'QqS=3[mN?qf2YM_uE."TX.4l+jc+7^1H
%6N_9E)@H94!n.rc,3Xr"CQ'k@dA]0l2bYPhlWDE8K;i9"cI#VmDaFD8YOa[,lGV#RboM@F0\f%fFl*[&I`CO3CTr2VqW'X@04/oc
%1YN6f!P'8PV)g*\.W]j)ppkQjM9+CN=I*YA>NW!blXN?/l[E\Sk>n.,F\_-l>3Abr<ULj'j/>nc_9u73511g,P!5LQ6hU(77Q$k=
%RQ?)0/<"MCfU4JY%>OWSdE9agHWbfp/aQU"3OSh"X=jfFje'X!=&RG/!quR42n3e%(?fi1[0O8!'@b",rB?XsXJ-%g^nV*0)na*:
%&d'3%P;PgKS%1.iEa:2#^?5anfO6KT$06R(q!mqP\R.$GdILi"cIE_gH.IVUdD4kR!:C_)EEQ3("d@RCgXcN[;1$ZA0!7"-`>$/&
%%\E%"Jp/'R"FI!N<+a+,@Df7BPFE_5,JaojT7u&h^8]`u)jk2!%GpMeH"fpU4P:M+([7q&7ff`/JTPfhY^G\0Y.+?9G`EJJ0q^Fd
%B%[h=o5[QtE9]851n1>CC8BEcMrD>2@sEY6F:\'NqVn<$I>SnbO_X^_/AuDp9$<u;\u(!jHE+1%^b^A-,IgD\Cu8BXfO/pM\tpB_
%d0?bo[WY#b$8CtnLf@kInm]l./MQ\IB5N73?c.*.!1,RUOfM:k=Z!<`M\ZQeF`%f/0nN82f0E,j%fm$dZQ^Ms`IFRu<5)%=Z%6Zn
%H?TDUZc%nl>/nI[XVoq^2_Y`IHTT3Kr5Zh`9A="gLO0-(>AMZ9[>-L4:-_Id$]X0I\+SIo"\f"$_a.kliT2TpOKT&]<</QI$9guC
%*/rP]37$QQLLWCK4F?3*o*__g!2KOk\=fHGn@:6FQai;j^_MUecG7U2#)EMpK3.4*Sf[0EX8DQNT"Q:Pf^kV!\AoioZHH8E,Q7A&
%oG>u"?8B[N\U=*R4KSfO,8Xc!oQ#CI^p@*c=07&.FK;/n^akq6lMOU@]r/QQ/$)YNMZ;8cAN9ao0_$"kJCAQJ4kM!r6=%sheeu!o
%lPB8c/21?J[JT7ggW>&XYs^0:dt/kc4^pc6R]S`MiQXLE#<TL)rpsWQiGJ$+r:1'gQS3<J"4*9j\FTo&WhiC6%AFU@@.8?3EsiiK
%D%TsuV.LQr_:'7,n/cDLOF[s]jE:R0%]Wa2,U:J_A15I,i,Q]t$`OhZ/aMuuY[C)u(2Q,^31$q&LaMAIEq&ZhJ@$niU]:Hg5`BOl
%Zc0!>[L/n]B;*P.,A=\dE-;WkfX>X0gNi4mnVmT\msOhuPq`Nfka"q`QOFL@Ml<ABJ=ji>^p,9!6=$8jIA>Z!i2^b\E\8+%p1,/'
%@306*ACk7TiF1:mC/QkMCco]TM5G%'Hd$VjcU!PhVPS:Fa-Ps`-)=@\;^GJrlf#ri._fj^d(*CK]S%\&d&a069jSaZi:RF7hQi!H
%(adYIT$p4t!;Z5-<8do,TSV+I')]\/YB/T.1r)oq^JuG`Le)I-W/?h.i#b<jd;;ljAH`Pg8%>Hk<+A+n?j;3@E%S&_`$Y6c!S>$p
%;5^-X2l3.hH+O4p/=.1Wo+Ih-L8:LtfX%*&$d\_MXtX8Z)7oG*,9%[i[*oQj/%6T-aM&\6o$c@U'sBlU<r5hdHDU/_E^OVZ$!%U\
%]1l>=[:PZk@1HrPSdXrb>75Cai'IrJ6XT;gMUcbVj3unnHmc0`qt&p(NL#lE[kYDTgkQtA%*mMqDsRH1cGgs1s&Lj6Hog"_'TT_M
%pD@JB+0j6Z^_!+%:<oKpe6h#Ee6<]U1*<@O$kr(gc`bE]nPMLT.nJdHR]CmA2M!q<1)2oS5GQ+X%:o.9"s3B5i9//5p<d&5qi2MA
%l;8I&,QboKUnAZjrci.HQDfrSZe(7M9PVT=Zpq%NpDN+OhNbJ0VLbiE]q0/O9hVrbQ@VfdQYD@&38!5tD$b&%T0EU3/ZuQ/=M\!p
%/SXs6M,(^9mgot!s!:MKeuH4/#M1IQ6UlQtoI/mmU-n^2g@i+.>Ue4Rg5i%.[7d8n4:,C<P+UpB<aW1.5kUGoDQ[oM3u:!4Ag8>R
%S9UE^l4;3PU17Z5X!PE<1KU<klD$1TfjB27dm:hRl;L:H6FB5R_H33e'%11"bAn+X=)]Id`':\qBWug1(-,E*-#IG%7;>Ps-9u#%
%68m2#4beAS6U9pF&m/$`f-1i)\It>$%>_?Fi39=u+APW?M%?UPCe;_G?BR!J92L5+'_DC'EOf,u\3.MMZt`R)LFh=T)8l"Nes-,<
%ekGN3lj'SSc7-8hJ-,]+4K(Y7pf.].Giq_`-?[5!Z3irb.42o!<o8eVr1(%`Zlqk&WRPs3.m[Al3J,.-k\U^OO]AUo0Ur5;]15EU
%q/R/5CkOgP8.jKd!%HOrMdiVLqj&U:TU%;]fDZ]N99E<*r[RRj8hH?$pS(b_M8)rSX44i^*b>2],%94BEjY#I0Cr#u]Pb6]Q?cbV
%V%?d8cNc.AnspRjg(j]kg:3CJ/<'kU%8JGNJVqXiif^_QTlDXt7hWhg8eU7tW=,e*Ma8mg*6Csn*mF4@3\+*db-ikVaa(cFCn38m
%9L?_W<OSYl+BJ3:+qQ9"QnT5@xxxxxxxxxxxxxx\OVqtrqZ>GOP)(')*TV;HL"81*D7doPoI<+P^p_?]e-.+e;=>@c[L@OYH&st9
%&ulAfaZi53r<45tYY+j*_nC#.Q/On3-=1,12RmUO(bOeN3'=4qh$mrrW4YG!_ee1#]ZRsh]hK07YZg9B'WUI/KDhc#Mu"/,-khHd
%\>E[dJg?29ALOtMA8N(/[5P-e5a,ZPd[(]PX%7_i+GN7T,dk$k`=(e"4=j((oMKH?dtQE-.[X*ACd#iK:1#0Rbq9!cVUcRP0Gq;]
%.,?AP>K4)$^=rgq>7I\.b)1^t]X"Z"Q]liY@"m`#\L>t+4+FMeaa!rLY>B1Ug^<0Z?\]&MK?rLE.gE9Ao\66g)\*`hD2/4MG2%27
%V*S+B6s=G]qY<Y7A#kc,5t1fV(04=jd:N]cBi0bQW`K@xxx)hi`HH@<?<]Tl.<nc08kRRDD0?I/-,Dmp'V;W8VWskJ.t!!F:rprc
%bTbN1&[hJTA\dVKTg285kluJ'"pG^b.b4*o#-qG55<hW)21tlGbW>+(#8.U>[Te.4i>#`lPVUjbJJRFO>W>P3DQloI]f<uoa1'83
%W7Nq6Qr)&s8%UI?!\D+<idPnSWIe.PMHX<N\rmheC+o=P\upk'?ZueMjp_M!]s(M[]WUL9_a0`X?j"m$9#frV?"YF4GF&#:MgS9\
%.5!K=!am<.9FlAsoDE*HNo%m"`q).dGgDT[,5LU7J')mbc_-Y,cC*b&"7MDWJ^<k+>laWW;7O'tXaSb;kRfU7(n9@7=7^8\F1M@\
%jj?,U=kX(i\m`]aSp>hBStGiXnXS-!LA>%]dh4AM2fk*'Cc?k-K0>EDVHN\F=23o:]Yco*J?q=b$s[X)s7+N\`>igSZ:qI[ABNp[
%"<<c?.g`[$:iH_E])nb:3<m/K_)%H&7e"WP/s0pQD5`fLK4jK+b;"ql5e[;.EsdV47Ki)"!:r<f&*,RAN6e3tJ:!p^Ljg:IDUVe<
%j`%9;0gE\sb'6)@D=P="=gl)cI<=6(aS#$;B=`u`.nj]M#Me)e1OuVN'_mO\^)Re1<>]2UR30[:V"9i8`LD:K'C5`-COL;lG59Bp
%cAYkh'/?KrgbraiDDq/g`,@3W2Nk<M!N-1pHE^">B1Z<LX=\>o[H3sd9a+`-*r%JT]r\:F1mjHKJRK)9Ym7uZXNru:BHPq+N\,4"
%[NZ7\cJ]66cY;Jqg"Q-#QRU$&:epG(e?f/IgQ&K,>W;6JP6Y:7/?1n9i>3L2DgQJo5k;(d^Ma7'69BF)W9e]IPkJ6R2lI",e4JjN
%osNs7[f+O5Z)tnET'fmh-*ruR[^Y$<ZrB5UXOqi$"8T6`cBW.#Zj#5,ej,83&al92%$'teb=XhDIkMpf+po_X[k]HjirKkLpA1Q2
%Ooj8jg%K.lEP!:.l&`<3'rlUh%?*i[Bo!f=92T&i4q/Pkp7T)##@(S:"e6GLdGR,6$C'"4_)3Gt=s$X-I0C5PHr8L#ZK2mf"h0](
%dn;tCnAhc\U?sUMi3sXo#8,FuT>S4@THEOe"1r_(98H7Q&Q$rO.1A)p,+q-rZO>$OI`]_5q"<&/R;^fNYfaD?B+gcVY120G97.Gh
%m3$(D]huR_>2Q]2odG%17u]i`c'#V>K[;j\\eM:PgH@'F/HbT@aPkaW\N[IY;DHO22_=2Zp,O<_*M"BLoYK\M)#C#po[t9jg4'"a
%)4pCIn,6XL'.U4lr;&E&Nb.uRqf>`lrDPlkphe_th]F0+S;2C]J>]_HWqO!l+>iOCG=Q>hfTopI8[C0Ia#Y]2%H^Q*@&^a)@9aDJ
%*=Hi>Q^;8-Ye4i[Gig^8%(fXJejX3=f\;kA],`ErhgoRo&q588BR;bcGkT_(dr(kj"o3U[-;FAbrH4`,E8&@9T\st?7fC-KgtQ0W
%<hK_s*lo_\hFcN/LPAL6C>$U7M`?i-G0cc)C\K7(jOmGg4\76/@8sT@4qU6>^`@Xdg6;k@!4N]RalR-4;Y)I+pVUa($g,d<Id"I$
%cXR,c0!9@*rm)\dbQ%OUrZD1=J,H5EqXm)Pli6k>rh'5if5L]D"8uU,qt#=;p-52LZi<2'?Cr25I.1l])o\HBLP6+S?%Z>(5p")7
%$R'cS0O.la9*sb^Xi/I0!Bu:tcLi0@f"gUeoQn)Y@nRDB$F)f88Ae\N(bL-d+_+9_4"_0\@AJn3.=VWmNdQs!T)4@i#7=IgGZnUV
%h_;i_(@8R`C^n'c$@>9nLYEnVKO<@JmbuLIqC+C"T^rXtLP'r*B7W0^^a)l'pA7SM/O^W_f#+r.M.hBHpEm+*fcQ4f[m?M`':)/F
%n=DX'`U'0@[[".XR``s$>;pWZre$'o!>"t&2KRJZboCUuTR^[1k6aQbgiH2]Q4&,^)qIWV"C"cWR:am'K*obEduLK7K=I3$IE)XH
%%CG[A'X=,VC5Y;m(R3Jq[=Z/#O!3NMlMY=c%su0+MAZ&KTCmtT`IQf8l<MB@N.^bQ(Pi!MbeOcu?5$BFD21Lfo`K*\`bgosUOk,-
%7-l:6`cWB9@pY?LgBJkH`H82&_0#3P8r2-E?acXEXHR(Q^56p'&MUC9!_&ImPUA8$YT1<\>b.W%-dBT)h&S![E?Zdacas:JeB(BI
%gNVRqfi<lPIqso1@)Zdg;E+d1)uCL%ES__='N'?fUm['!W2&iWB&J'q*;+GH&^R@9(MrP80`$=^ra/`3P\)mOB=Vi)'K[Q[WG0Yt
%GSpU-4=`!]`?$`3ciokN[rs/M"Cl=`rrY:MN]"k+cRmdQT!;F:cNfkZq3gS?lER@mLfq'W$bY9gqg:i?oHWb*B"OF*Omq_:YZ*;5
%oQf;II'9pjL_bo8pGY!;Q&'Zg0+1HckDG5%--hAJk;clZ\RA/#!(\cg:q;niH<(\l^@Hj6#CF6rTdA%L[S"KPZF-#hrkW]d1Va;7
%'F$2e8hekaH&R=Vf5Lj]5N&fk&Bb&AbM>N%js]Od!G;snHJ=^%T/WSHCpG\dL3[MpCUZ$Zs1'-9"(mWH]8[g@hijntSJ/qnauCZ:
%iPp[<^qO:95,[&Wo\9/or4FKc*]G0j5VfC:oh?r`HtRiD]khrPAZg+1>&P3f0:WZ@nT;#.Z89R2SbX>5/5b`PFWH]0E?pis_9ajZ
%mX(.*8J09AF,[9KeK45467mP-l$FW\\narBN$=B-_Lfc)Ho$B,':q]ET"?05d)2K)S8ZhD+l^,0d^SJ=6`MV)]M33jRf`I6>rG*P
%TT66@OLrfT)jZCMZZHu;4qPBD7SC<5,2uI!fQs9-^(P_#j1J\`A.;JSgDo64fuS(eQUA\MH-U=aU5/+"'#CZsk:&L)I.*K##2c;/
%du9%I]'*oL48Q0\rg5@VaF=:XUA*UJBs3<T<$2#DN^(=NAYB@&4.?M1^q=3JQ\`E$:Ic&R+5-Kbk53mQq3QJT54EF_rS'I52`^g[
%iYr)P[p/qe]E/f;L5"P;?bm\!K+RP^'>du!KRmLh1I\rfA,'9bL9,e7,/,FWG\)hQX*jp9/H`t=Y)7e^U-oDP(dHpUi@SibpKS\F
%Da_6Hj7msb&;k^D%sc>So#aN*&cY+(nrDqPo;MHU\*PP^Gue62=X`8K#+%8R0*<^5"h`rXH-8!"E70u$[gY05\8GVtE@>9h]'(RW
%NW>D+fVYRN8HFdC`!_gj,so-#.f&8[GApt:]@%'O:l0G?-?PdpEfs6T_8qSDLa"Z2UJlKDZ[egY/k2YrD-HD(idB^0U540-q$4EV
%%:%5M,&W:JpDjdne'%c1bjl"?4!TZ@%Er@(^)l>XJ&YtbL8D.YD:(LN;fcj&:3UhgS234f8B*(4(pdIq-qk+W.`%HJ&<nb<cF'bZ
%,`ne;F--H.?4eam6kral!tuQ]Sf8pld\tk=2cqfAmFhXV;)R.[j\PgWIrO;sD^1X[4\*H,'WC&5U\2=`8/+_NHn6on(tGo*bG'Il
%n6A_?aZP;L@B3uiUWnL@DNo*/JQ;jb*+@d1P8EXJC/LHESud9LIm'p0/XYLeS30%ajhNWW7)H:i%Q;$lBDo1`(E[BG^@LTTLj;d:
%/K!(J>c.^gZImjn@ONFGLEa0Z,1^<K)r<IBX[VYCO[g#09"rWI'thU53R9MP(G?CS>D`%_/PipU=R1<$CKGZ]o\,fFc<#$lLQ0/0
%VgB-bi5<=RXR\^QI90\*)j8DZ&c!'jqHDSK3A]%DQ)Q?:jCQ$h7)scmIWM&7`qI!>=I:de^/0>X`8;2^^82T>*^GTB;#p-3;bf;.
%(<tJk1BlFB[Voumk]])^op.i7(V-i!Y(J0)cXWeHboBcBoj52Jmb'JIF1;d&/\Q,HPKQ.23)LRY@KCX^9<SKG7g1@KGA%Zb"-f07
%Y55>0bUWddQ^]0qmb:gd9mZLbcR(,8k/Q5mWOg2SBPVCpnC$W]_T*>f;na;U?2(2F!C_B7(u]<<Kq[9'7D(4tn4adUU#\RtGZ,aE
%D(1=.Z4drB%n.tTRROE,5lkn^A@sLlnPX[c,/,MUn[>769DK*UGZu`[D-<!f&gSX[D8DBR8t3JX5m\-AMl(l#?KJ!t$Uq][h"%nl
%b>8\G7%A&2^Wi0=@s=mEg^-_YC4"i@Au:M5G,IDbI_m_Flc,Y[cRoX2[,Y7_S1,uE*7l>Xf$4.T?34d"o9Mna,+*Lm?L%)X`1&5?
%DsI;6W=9Oc^8WCM[cYq0I3ORDVOGoe\jo,I,`6i4*23aLJ+U<F#l^5/8`s*JSF\WjIUDl`S)\5UM[57ABgQ*-VWl<ddR@fGrIKN%
%.jG:;1N(Mtj*G4YHd;R\IWC?2BUiAHCl15_IGhY\FsnS,F,,`\[bQd^0/j@;m`!;Mqd+."h;QTLr42m;Y`tV)0PhO0*XHYO)*ph+
%(F!*r``j@k,A?3Yd+,eo`L\52GO4/^^]n*_:?,aT,#kk44bD>pA&6l#Bh8p0#C2toB-_PAd.=D4KI=?"PX>SW)Ak$KmM(R0ZF#"n
%h,,YtrS`L7"Fp4BncrBR;$_"rZTe=Z9;k#-nr1MlQgS"D@$F/ckMZ2XpC:*QADk%SaSrEH@B88K&%:/6>Uu=#G@]Pp$IQ0t0Of0q
%CQ'#:-TL#b3D^0%1#(!*3*K@.>E5)d^*^<Nr?Crj/N+1KnXX-o/k6cV,=XX"eL_$>cdNnH5>$/qVdfqUSHo)raK<p/jO_EE[$,#1
%BhfB4BK`SZZf9jE5"@bLk27h:eD7JZ5<IOq,@U:t#um.<=9;a<F*dYu!1,4S_MDA>&<Pk#f[jrQ/d0K%Vj62KM?lm!@kM!T5Vjfq
%3/8%^A)O-T>W<&YZX./O]f+0]F(]:`YGWg%D#pdu5rXpjLh/^mgJ@bJT/#-RHB,.2>3<hjLJ4f4#e4NoF(M!2"IgRO:]1:2/39<o
%p'55I;U*"nN=#[6\f=u-?XN%D_UH'.(C2ti?<dl&(8uqra$,T^CbFV?^W:Sm2(L[N@(<2l6laDR#$rtl>`gpE,+^:b<$s>_'Z5e(
%mW[M_@c4SOm(+k;Msq78h&(V'+/&&n%fdgbHN;[X'_#$h>d2:Uf?Bg#2q\dl8Up+jlk;rBQ@j;91tD"6%MHN&2,-c&M`b5</ORGW
%h.&>Jk_@kHl%[HrK6t/a]uM0`iECN^eU6SY'1>fH=NqRc,4qUU6.u$#J._C?i#gW5'H6uRC<.;QT=hTp$3EKmf)YP<T!tJ0_.)h+
%2Kn\^K6(9c*F'E9[-i?G[*.WhS!NLgr<4:6@61P-d'$LCnb@lP-UGjWq]Ih74,AKF2l7Tt/Fkh9O,,fOfsA?.P['i!?RXM@F:j(4
%T&SXVefPCY4E5u\fiPW=Ep*n[X_>=))P6XB%G.)d35hBHR@VO#oc@"!1PaTu68g&j4oU]cc3*%6ImI^(E+8JQ'J$V:YDN2UiqMsp
%CVE?=FD'o&a9i?G$bS-Yc7t$Q6nJ'@&aQmf`d+aA(r.YIRr4K%o12-l$$0b*OI`<<K[\;aTR\fe6s[\T.Y3#F#S4`?5NJ!!&4GJb
%0_cLKO\!:tF`!sR5G.'bY8<A(D\)BO8U5I7"Qq<r\<]A+eFI5j6Nfr9%6UPmS6J0CbY1snYN27sp_C\\7R!3+l/9^nG$??0j'^%f
%bu;(t>[.NDUSuaH`6bk=oi0FD[To1GD!.Z0<@;rX-9<STe8MemagQcul.@nGbFT\HAOWsjpf*&6bb5GJ:(g6'CJIrhoEeluJQ(go
%_]Rm@f0T;.In8lo`=Q:82rL"[;%MHD;rC[!:c-mHUTSk/2%1<&qTe3\>0>3^7MWi$Jie>7!aaTe8HM#jR0I9%P!B[g;FVPfY,W\4
%qY+g>/Jh##,0%[>q.Ar<U58J+n8?]<f46m.c0ts-TTW`$,]JdCj2Q2I'big#QpjINf+r_VPkp,cdg#*:/LpHS\AT-aX'X*(^gQ`=
%ane[K4:AX_#6X9Xjq2[CK-I"s/M)^]3[T0F/>Hrqk#YVS.ZsO=Y^b&/e\2(7UNj'Q>f(pa*I+)i]nHAnXk)jX736&X$(@dG!2h^F
%bVSqH2o$^Pb!Fp<XYN!Gk7Q`*H`0H$jrY]i`lGn?_(b!hGfo,_iph:80`=%e9_Ft,)uWp5Jf,DZDmL*U4Dtb&.R\sgq5iDqT>e`n
%^V.^8i!#5ts7=JWAmUnf(`CZ<7l77g'&i@xxxxxx(j+)hOg6o_0EIooIYSFlJ2K7GRP1g8qB(aZi8fd/a5WA9XA3D5:_/?^i+@mW
%>;t._UXni.(:,c2eQYEZGbNi3E/@A"AGITK@J?LeF4gG6[On<:3Yp"ul#[Za(n[t$`?7`!pc;jH0TV29_J^-Y8Er;I`5Fni=cUH0
%+j5V))'o?BXGFgm`!/NM:$]-%'Ppp-^73'!Tq]_)3Y#s$BFos+PYL@H_30pa#)eU*7n1Fa(cY<?V)cgl"fkQdK#Vtp1rM]A"rC*q
%J8in?`c5H2PN;oR&KW4WZ';4I\3\?TI$#)q((Qp[lbtdB%qj\7/H76u:Q@#+MEDTZ5`lV,J#BQo[jHqNl!7ge#<>JK7n<&['^:R-
%:2o@V2!9>ZUr6\7_OHljfOBDuR:l43qPZjW66ETKht(IhI!!J'P_mHnp"&(J\33Xa"R%sY!BOYaKC_"#52tGCkT4UuVL#c>fKa\+
%rF&2-c-5-L-kSFnq$0#9\@'$QcX7*QM#)bYL7o?Q,a8C*S[JZ(;>"Cha^59f,6OR-9IHGgh<Y2I$paMqKpQFg4^Xj`6<Ui!f3Q2?
%-_G;c%_Fg.6QB>YOA&ri]XW\ek,EE):?_rS8c-E<;QE7YOF]*83#KkYG;Hf*+#]3Y*Ci827aDRIdK\!k/2?ADs'RQ85>10_DcMm7
%i=tj%05!&P_K'MOS=FH;)l)c_&,Qig[,lh\nUP7MWSJk0EYXT3C*d>LU2p,sk-j"a.p&rb4WpV[?-[%i*^rF&;t?G!OmF+H\t*M_
%*0fad;1XQUI`?(u*.C-D%njj]O9dPU8-BLH^tT:>'<1rcP""PnrdiWQ"2iDl?t=gJ\?6YT4o)0Cbabu6WlmO[\D'8-L'8EN'&L#=
%>RM,["6YUb0ALOOi\kDUI;<Y>dtPq,:)nKuil?rS!+Y%Nmr7+AB(&js`f>!`3[-jKp4r,bfH4^1#H*2c!r(74D1QOoYct5A86HQL
%'d`nL_gQNK"Dr98&eku>47!Q\1Uc.*/%MseGAl^gHgtpC@4\aLBj@dbr!m=1&b53sgOpC5ipS/pEFP6)D3+[aY"!VVefT@N@hR>m
%"eRr%M:Vr&flJE<f0b&M+8CbZ2;o#:OKE7<i,lD/kNGXIrRf^gd3g_J7qgnrAWcG'r[)\rH%j.ACm0dqbNUmN7:pH6Fh).fp9Pa^
%l-pLZbm-B)oC"s=BtfHQ!m$6A&->BYpTAt+@*=FR5fc9S5[&Sg0T?FG@g,e]fs)_Sp/$R!Z*D/#KN7NM/&J:(L_]kcIpa6p7=PS5
%CION\PLa2>So4";df)qn-&0(<Ad7*mS@20<f]$*Fg\33i[mFVY9$lqBZYorB91Y;l@<PG'ZC-=LWW"T'jNMH`-jj<MOJK*)K.O"f
%7Pr$tH;&![G@%^2O01U3VBB&idLoWkA$7<L%$E+B58RbE<I<('>?L^@R`hY9/%g=244j+I#qN3j^d<3GKnY66YA2\[6:2>&)eqr0
%bJI`\L_tTV*Q]91FH)#!p5#i193B_mLN2+4JED9qQBm==(..TU+Uuo\\dr,((dsZ%i6Qc:a/#EfW3p&P%3cs!b?T^":-]\$A'Vc2
%'`j)Y[3c!gGu/n7YmV9@Utj0O&X3P;$]t[bnsS1KAh/`Ufk7I,=]_!iZ,O\S+tNcLPric@PbQ?;(NFB#'\R"HFAGKP_5Sd4'UuYn
%a^kF%`sN,U!7quGTB3=#+sL!=A#g,Lp5IWY[Z!2W=@CE%3.otI,3C\aG8?ipOW;aX+gIWAKCmrt8n9lL]94T0%hX54XRljEil/Rh
%ro8)<!D^+.%?;_9\4ab&:Z0J]p,bq<6sQpHCQa>qhrIo!p_"0;qZ@nLo7?]]ca:7)M<^c>'N''to;:ncp8k=J\uas3I2#V9cm\/M
%@O/O'P!MHS>0mI>6i_Jsd!^M`F^'l!6p1@`NB_rYg;*N=Lb*@d=m\'4h]?<8+ssCGR5P6Sh3T,m]U8,/T*JPWS_!fPWg3Nk41"U.
%Z8H*]9eLUu3PqsmKX4t\*uO'f)F`/GXQP^-DRid1Kd06.k?\H&(]4T+$-0o)Gp(6<+S\?aC:l<eT0FG;`^DJ$-@)^D$$`YEEhPT5
%=`;8=)b'`m#n41!&//Ho&sStL`iJ[1WL,%WM-T\<XllKucT5R%^j;_fRcE^`aOUq3',bV+$r'$17drfqQO4p[ZS5C0AP%2TIcdUb
%,GB1P':#P5J%.F"0?ZhVe=?e_j%#PLEgmq]7OKMol<&&6l/Hi6c&-:,3*>OY^.9%#&R,M>J8'-o'Fhj93J,ngp*eds&oKU6Vegb*
%$RL=Q3QoE(=J<&KZ`CG*:\hmhb:aLXGPS-Q4AYH>?ZQuF36lmfB\EZVOeSd+S@&*HSUrsUV^9j>Qp?YTdO:HM`7`nF,+c+C,/E#F
%72O5WNL?hUi-qDoQZ=V`Za3gqKD;aV[C\@;4KC4\fVlEVD)cER=(USZg;t,WR`*g,.s9'96N2G/I?Ek,!H-AFb5uCHKKm+V=bHhr
%M]tF7YTLu9+I)7r2]tL&_0k:P-U%E7=hDY+hsXlSdaS0qQ[tGpW9]oe9#*lV,4lDU5BdYtiXTj'p6Qu#d.HTE)Wb86o*+2!kTUMc
%$79"h)>.mtM^)6BDT'bXY:9lP<5bJdWhZe3nR&(IFc`K(3<C3Mi^c/Q9TS:H)B14bF82)O"Js'LQ4p#uQqG;lO_iW-4E+mL"8i#6
%ff_HDH+`TQDF-JJ5'"7a/CW.aZq]il5[o]WMQj>F$+#H^[/CPG)q1nDZF+\(91G3F+\ku5")ah;c:?a5B4BhZi"GiX#ua"um!`Q`
%\n>9s-`gR^CTU^!c4@cUm*rZ&7N)*.J]j"8+jBF7m^A&3;5Qn]K.CbTSI1`%1:H!-^2a%JJ.5BS=mmKK3@nNX,Mt;a@CS1a+m.\d
%3PWS&g/67:ljGD8_l^KLiCF$XA_NfCo"_R\IBn<]-6V%b[cuor@Zr](dWAS/-U<UZ&?nQ-&Tm28-ug:IR+24\V##A[*PFGT3UD6_
%(]<5!qkSf+[c(g"];Li<7]rB>9S=2#f&jN;FYPhd*S.J'>]KnGGGsQfOlJ@?_/5Ng0!O,<]l_DsYON#Q>*EpKW$65>fn6"-i"7pB
%^!Ufc(1k4taYe!V#jmq+E!"h'fQd.IR6KG&k,cMQI``a%E(:Mg#&Y0dTmm'c8q=9#_-lfNq4WC_<ET0)7++bCeH+^bF3YQ/@Mk0i
%)/j`*enp5Q5_^b;?tXsXbWmrR91'QN9#;0a_K3o[B*Rc,=TZpbYf<%KYh-PY5;4'c3Kh8qqP39kaLj7aYDCo>W.QMB8J.n&@XknR
%C`O!#%pYLtEbG/X:@)U>iX5YLbfD@@2ckYqUuET^'e.->%N0UB$W(30_EaX_.r9nJ(b$'i#Hm\'ZFlQTLet(maXE!\^#Ojp8e0>j
%XEnn$&c?BIqon8/_u".,qs^,sP%M'r/_$GGe9V8+[6tc[_10dJQJl0Z,jH3`IZ0XON'%@_Wbo=dcGBe^($&_?>4]VrS?FKrk8*dl
%pM4C!ePQWjHNrMVl`f9ud;ieFMh6"`/73Z`eK;Gm?otZq=<Q7AUue<\'^mi`I?tj_:uXL&1i2<[\2+=`1`"8Y>OdIoK:>-hA0<'p
%AN-t-]rdIrCP.dZO'AIAQ8,Lb(=o/>Zp3f[2r9;L-NA+;cEe1WVZU4-*4/*VG"J]g2NX_?!^c>,IoHR:Xu=Xpk?^SfQ.H94^u6g0
%cskRE#KgR&_*i3ikNAn36i-1^\'W2LXWm6=3j56@K7JEp5ighKOl9@cgu8r\Z7nXjCDQbiNedZO:o#4(\jYIg.0\9+/979c[ZdYt
%7ZO6r2`!5OP)FqD[otPq['Q5DNE%6?PM_c^MA>]4@70aAd4"BL&U#$X)CS8h#!tT#bT2o%1I-((=4U:F;lo-"''V5G0M8)$m!4Bh
%\^L2AQl_Ze1f)L[HleTZ7#DXlfdXYD%4A8*314LCkK=s-)UH[OFI<)qVpcE80e:_Z":#B(k(]10rW7aa5Fa5<PsU/XCdWI9$ThOS
%PO]5)["AYVY=h\e3p;X$#lVZqed%5;#$tR<aAb;LJ<`Y@+?5gKZZV2X[6TlnT,I8XL@;uf91n(jGLI!=>FKi8>eD2`KAb:3m7<.+
%K$X*ZN_Y*D7@Z/LR7MY9M0;O#eA8ZA(2S#W&f<>c:)(>n+Qq3Ak1,^;*M'gZ1%/M3lcooo1fE<p;S'!=7TB<p#o@=*S5"#ij(k&J
%7gVN!eJKH#7HpA:J2:,E2o``rkdMm3RcH[(9&"/+r_$OY4(%cTDuPjbibs+`?T?6phWrp"r*d9`F["uZ,-ZI>6?(i'3)t8f^M'f]
%AEKG(\$A^>i=$7`DnPoeS3NYB,"PS.+3MD5Us:L!f[mD'XFW-.bO)3qB7W4hiQlPgC^14Lk$t.C_37)'Up>@lBf<d&&GH_i1Sjs8
%QugI1a4$$gUdb9Z;qb`X(NX0c:]82Q5>604D%Qbdi0lj77iP+jl?m2^>F4-UjL/BBIb29*eb@'5k.t&IefU49om6VASLf!iUU5Rp
%BJV>O69OJ)r&,lGU/NUl!LH_8D7rF0i0(f/02aq8/A#]5)qnndmta_MJ)@tnHlXG'fQ_:?24Y/"ROlKVHd+f/nEODd/@Y_;fV]'!
%:8/5F>0nTuGq.0*N*WCMH(Icuol(<71\"j7p7"TBi<ESe?"NGN8<Y`DSi!UYngA86qjD[W!WKn!T]Go4=L;pLO5Jf:X`k_(P]Zh(
%^S*O=FUO&((7)U>]S!<lU,Pj8"\BNb-,ItVfCTB40n]j/54ooN.0?sVIM3_#JEV=F`69hiDrp(Dj<Z)^*<q<alOWU45=dX/]HDo9
%^G77r^(2J.[&D9>6.o#GRE6Mr/cZKtBENore9OUrbsOe`h"guTpT?TH**7=I'D+B9:Ju@5EPELRr*]8D$lLpg+aMdX(kt9jgCfLK
%-:*dDiS1![H`sh%^.XUE<M#<X&2Y"[O]h3c7`K"Hem?PUSL`%ak2`R?8JG'gl`2&pcM1B4Y6MY,1q#,e%V@V:jlnOS\tu\O8O[b/
%=Wq#@F&L25]&ch0E,AlGTA!diq[Z`1djm)WXnWX-+E7@s0;'A+'+pR#,U4,OSMZWrfXT9/deBCEH0U$+&'LS:C86"HgKVIaXe-01
%&#5<;]<d8s/4#s-qP0Up#iAOE,j*?!TAFtchiE8F2uiAVjbF'S\]7kKYdLZf1=P-Yak8USn(eVeHU@SL?atAE`3m%&EdTq$.[>+b
%Vk,\^(XUe?pX\Vna1AbRQj_YAAp0_k[));a=!(nD:`"$9_n$E$ETsaW]oa"*d[3Sk[rYfG>YosR259_2$D*S'Hc;E8,7=.^e:U$>
%o&(=c3`(*!i7UWL%h`c5g=Tr:=.)tGf\Hq^;97Qalq=7F8PiiPke3QN_Y/AD6*1C,:r^9oUR2KI)Wk3AOdfQh&N8LL0$GY%]t6b"
%'Jc;*4g_ZD_\:tJRYM/M.8V9dWjl$bm>B^a"(=Lo>RNY5[#6mL5d<q>8)PWX/"c'cXKN&e>>)$qPF<ar>/A1Mqp$oV"]+Y@i-oCL
%Phj!HH*WBQn2aC0qVg.^%K0fs!(in"7o_^(,W[QFS@jH9U3G!7m`lBbpc2;Rn@G"rW<[,?W$XRWqrN`PDoojEFZ-XsLFX/Rk\[0)
%.Lc*Vbdoo3?E_kJ]K;4o+)2hUFH8^'s2SXMVN]nIqiqX`#H9n01,%Nos,\$ZljrDKFk68>`K6X9`L4H+`4@l[3(4>a(LZ-'^H&X*
%;:YXQ)a%Dm$ZaPu^L1ke7XtidTb7#`(P(gaWD]i*I"k(`fi\ojNJ0Km="$Q"&V'J0gf(`Yol&]:J+LeF^PUq3rgS[]^\Qje=#YX)
%o9\@K]m9D8X1+_Xr;5NWs)@o1pqJK]h=3^UDu?eGIfKB$n)"*<L[X,KrVl1KIe2Ca^]!TDTAG%+h<u\Ao_jRFq#7>Os7Gg$Dr0IQ
%J,/e6?b]+S-SKsopuAuq2_X(&rU`Ogq>C$V(Opl'_sre;3<&g0(\K-3"T?X_59145q=p<VI5LoqVVM*uc2[R2iT;ZdMr-fihD4pG
%!>CAu7@FD#&gPJ;W&l6cZ;)(Wn@J&,l>\<Z0EnMRNhrC(Sdb4S_@t'(@4^o3b]QD9@_=ErDk[E3`jBY\-RmHign7,X8CfGJ#1MR5
%h9p-5";>``4j]YHGTWh3KXCem\eotp(GGg`,%(CXrqT!qq;e1*^]3l`m8l5rqX2P1^4(EVs"Q^&bFd=S)/^^rIk3k<:usB27.6*>
%mV_)bPUW+pR>1@Xno%eJ94%V^`N;rE#VWEDHO6rr;UbI:I_lo^j(iUL*T)&3nj+P3DdL/j5!_CFpi/>QO\]nErVQ&uqtg8`DE`@A
%o(2bU+!,n*c1bSfXZ#?k^&R'9YQ)d)huE-3rAWV^FhFSVrn+^Up$^adq<jlh4FZi#dn0T)oABHnN7NLU?f-8*@$`S'O#?IX2h-5P
%LX1H+s)>Wfn%\neh:k/qkLgV>39KTE?_)V-oRUAf<e:5<1"n[%%BD&JCZOpliQ2HNl`f:%`h=XUPVjS'?l9%Yf?l:KG`'PnPDJIB
%MIGO:9.I.;pGHo<%@hm+T:>iEI/6J9`K'Vg[-A0('Ko@I@SkfI._?>'Rs[Ok7'W"??Qt+\q3p7jN11$-'@B66;AWkn(1or)IWgA9
%g[pg\,4enfBU6kI1_o,K?Qu:SR@K-1;u-XVK/M+-)Co?diM%b_,#D\a6gu8j^Z^d:b._pYAcHK?fZrS#i[0IYEW#EMjrA!QiQ4WE
%7-YL0`8gHF.3^iFPj/_b#74Q)c)jC//:MsAK)]T/i$7.ADnQX`J!?Qi%6je-^&#>8njU&n,Vudn7.Vh89"O!L%HL2sRd!hOeNm\C
%>7t(o4#-q3[1^;@c6>3sLu:3D*<h1!W8i,r\s<tPRA9fWaN$MO5F#'_07J>.m4eTCgrAt1TQ)uGpkh<j.7?9/IiBU*ZRiC(?dL+*
%_,)WBdlX%1&9oQnd5=#:=KMZd+_a?+Y!^fQ=D;o95'"1HdE7+:neHV:3HK'1`qlZ.P9`4T\B1IZE4?L3AN>55Cq`I4iAd[0G3@MT
%<3]TPXMa^BHA2"tP%XRLiIt`TgPql9O!hR1(BY;aqGNL=IsM(!5P+H4In"Hf0s]k1lB>T3F5MfKliQ9%%1"hj"b/LKPp/9i3!GU]
%P^/0f6&Pe@:l@ftr[We5pNpOb%V+gI2<"XQoCc36X$e:WFXk&i/B.,a@&%nL*d5/>^"1d#`<^k4mN9=O(nLJ)eAi&ZIft8TfXGj'
%>C!`i'h/(dPKcW@"Vl,?MPks>RaUpeUa^F?RXlP42U@9F@&gGc*L3A'=#_n?'s[3J$rTej&L@STKPrP%i/(GXeNS<Qq%f:;<.jVC
%7`MGO#G_pH+?T`&/[SU`DkAfM?WdeD*@E.U/PJu:.lB.I[)`\V6GpWjB2IPp:esdt-8[$e<!p/3!0stS"LX!ZR;i3:8RMZJK.'0.
%q%7.O4a%_Oo4U\0ZlaccL]OQgG6/rL>p&PJRai,Y)AZtCb5PLh$/ln/A'n]U^"<nN1e>R5oehI[Z+NNhTaIaf,?4*=>ZnEQk]_PG
%;a5?#R:t[$H7so*PlYA\_4'J.X7[\G![fYl<`!l`%4=C-1`^+$2%RTBgfbSS&gj[C(.5IVF``:2"r0^d1JTbJ/:i>TMgg;",=nMj
%;$;f9<*l5Oe$&7^oAJ97;N(P[kCIO2k8s$Jp[kBNl07B$W*AeY"oP=$q"Ksm*C$qioQ+),l7B%78L,)uh>VBIXK&'Sfc!gVmHj9>
%FBHn%T-YAMeUFDGL"3L^=!N3dJI45pA=BbNSZ:C@c_nP(7P7b)l?;WBWNFdq!I0X&-2s_=V;XBDX'"R_O&I2k<R>U9cJ_u91mL>8
%6l`MJJBlGL55-_?<PR`LIE3*#gN/M&SKW":/JBb<)3WUUK?($_qt--:Yu!$AV-o'U-mit^NGM6Wl#+c++-s4;Jqe)0g[`=0"A:A)
%<.kSck(=e3KK>59)!@(_G*)>qC7\rZ,gdkkA`C6FB=0S]*j79'@7[`Z.a!NTJ\XkYN[nW/<3&kOFN4Aq"a;_ojKQ9"JUG+Ql<PPH
%a.eU6$'KF+2qe2MN@6alX,/5I#]0-6dk0Cr3:CAT9/-PIl/Q0Cc]=WFj9tpgQc'+Ho03mSrqh:ll@LGI1$"C&$F6Qg;>NkM5fm&i
%/_#QDRSV#"b[<@/hcI[iLVo=naJ*>Q1rliSbQmp-e`a]b!<>AWke0m0F@W30B[3u$hWimnZHaC6*9,$P8cgAK=Q5+dl;!<R0,RcO
%kUBX4,^AH&F>kQnr8bo"2H4h5.DR:l`?nEHXicN@jMTPcQ@gS6!>>rk<01)R7P;a>=b5W_Ypk7nch"[lfb,GDPb<"G;P\cOXKiV[
%C(nP#ZG9+I`=uG5Z($/rU0i19.$!=.s7I/Fa1fpXHndb@;JII@<mek(K4,UG66/YR29e3,Cc>8:5r*f#2jEon)B.a[E)hM\)5PM$
%.EP[FBD4]a>\0-ST-q/V7D7DG0U:.*-GZX</ecHu#$FW_^%5&3hY@I0+dY5AjOFf"4^`@ahuE\\J8Ee]C_Z$3A'@B.7G^Ml54Kg>
%HRiY]&j[(;,_=D#$Ea$lGQJ#"3-@R]<@*h3,5B-0r1-.(Z7pMoDWUHX"C*P%,8Z8s]tAjKcb97\T9F@rBD&?>3NNMRUWYA6e)ZjJ
%#ajpjd6sH<%%Ri;Cj7pTY"/tZ*auAl=YfTaG*$H`/iMQ2C=KAsGJ?(%"`3LG2<!/taVNL%aWLgjIEM3+q=NjtAq05El?@,![(<p@
%nhT(bLRD%M>"UOh4j*qVV.,8g%A?EeQ561HO\NJVbpd.ZQ'0^@PU*R)C6T4B3pIhFJAJNpd;PS>?mmbBmX7I-2-(o$S3c)Q0sK&!
%h#\nOC@(`ei5D28&XPi"$.r7%[J%cEG]_n:-:Md+8Jo5t/kTG]-BGt+K<TCOj=-%O+rG_IRkPaQ'Mt+%JFTJ%<)U#slPUfZ$Y%:R
%nB!+X@6i(5o(<uVLL!TbgYA(=9o(mVs13@#g8I`]2-CPmU2;:DqFSI!nq2GD2YtF.CdjM9aRVM)`*E9P!#Rob48b!Y[T=KQPI^:+
%-``eBTHG)mk<H3(8;sod)RHmjmAFD($B7f""A.EoDUjB&e.l,V,1A'0"=G$`A;'>T=+;(;f2OHp@"ifK7b2o[.#_'`:4%M/1tWJA
%<qk6^@,T>k<Ii+_+i0lYFnfVd"7X-bZ6^A+WH8^[/;VEM#`cf<RRKrURo0ACOcGQgYnnQIGnknfMtmGf0VP[#grK;nHpoL54VhRj
%^q(d-%bk0p*j>P,bf+,9NWWT[C?O)FmjUKsncOA>/K(=2P'F;Anh2R_;)8V4L$)[R+#EQhQ`n9l)9Ob9=,Gmq**%#/13qEcO<CXT
%4jE?iY9NaMb3Qps/1XHa!@jpH=^D,L7+(S3>$i#+Qh7$.>GsP9J5rhn#]bVC3,V?k"jg.(X7'))>!uneJsgDck[GU&`k0;rJ7hL:
%PGBT!mmSJ=aM=%>\PW]$WI@]5H+9D'2O0cQF;eK5=9'GTF<HF*+#./3<[>.Zo-BDL9nWKmdJ(_L^H:Ser?+f')6E931m]oscVgK+
%<-T9:Z5e2m]=-nd`]C6"(`W_p39_tW9T\fZq2QHJ#S186\r9L"KLP$qa_<(Kn472/eV[u-?^s$`<K*4qi<[c('cR@V`30L=VDto2
%.[+Oc.9kB4')$n9;llC3LbS-63RE_<TP,/pEQH,kL(cJ=7&ljlWcaZGr=cntCO_/l,oQ0,(]T:E2tM^%V0&X/JXV\4qJ&S9l%oti
%/65(7,:9Xo$0tg-"tR[6VK%LJXVpI5ZA**dP`hm.fN@-rR3nR0!G/.bUP!*1p0r:Of7bd+*89h7U*<Zu"*[k/`]g;^VC,aO)rt<o
%EMp$-=d^C]_TW+;RoU/'b/$IZCmrJsK!,q?.FDU8P8fLD$@+G^gAgF6R(rM%TMU`&jObY&T-Fc/@Sg>7"!f]Rb<r4-"?mtS.,l9e
%2Z_eMPiQ;BbP9c$=_26XeTr6'`*WA<#em7kOd+a!9lAcOm2',Yi%IPb7b%35M"<YbD-a)NMCfUCPIHsLaC.&pe?DIYk($!UngOHm
%D2:f3eR]ahlcrV3A/dQnqN"_iN;9:rQO'0'1U)k[7HG-e4]M)fma2%NO(9LZk94S+c)T6UaiiFB*Ms(7\q,ecb+:C+FY$?2O2V3k
%ZM+LI>WBQSFR=eA.+<8<ARkq4nKTt*;h#HiT!df>Ceoi\.Q5^Nf>mfG1KVKqV:\lIm\UP.qhMSVj)hUWjUu*@[TREqV]],\W&ih9
%IS8*Le(\gFVlHhfEY&OSOj*9eRO<,2*_3l9dbC$O5'EMs/93h`.!A7d=m,PnIeDfXri1G!=T^RS+kY@Q2@]o?R-V)<_iOa#Il$uk
%K=AW0Ha00]<U)=&-%bA53<2B*;JV"h+uu>F&YYo'A7g4ip(SDi<I##46B6b)Z&8S`d0b`7k:4ppn15.;8S+Ibmm[8pj@1D4"+O23
%lJQMi,C@,SddB52!@lMk4"-X\>8"f0NV&*-rJZYko3qio??DEcaYXi)iN4Nr%9_9DfPr1`;(CY)&)11hj,SD,HleDD;^L^=/KM#?
%""2s-BN"NVI#Qh<(tT9hQ`5f1SBpqp55L9<egZ46efOd<5s0-QS/381AM)\L@=f@U;E].I;4-BUiDB]<E]6[RNhK>crd>gb9@P&?
%XI2qr8;9*g[05!s2@<<&:kcHLS1<"[SSVW1C24q@dAJRIC?51+!'l*cYTFh3Y=9'gXu.Y"Xi(`P!L441nKpq<:K@JN%L2s6"&6b&
%8]X@,Td:]@[[9'D"G?'/=uq-*je%_kc;BMM>-J.qagB0F+*;`m!nqI"AVi,oCI%V1a\do*.:G%V9p^!A]Kl3mm+X&i.kZI8I%S1H
%.erdlnV)Oi1XH[A&u)h2+C;9<N/L=E#ShHPn9eL$,u^=QoI[VNH9T.i'bI3$Q;o*Y,]cgGJXmnp^L3sr"]_@[/r`DV3"q$`<1_*7
%BuV,@3`J(u8hl2^m?UW[63CAMgbDpEe!8O7\o#qB^TJ*E;s/+i,rK6]<U*$lE1;WEUE!$_qDL[<4/ZKOP*FcLd2`dlSZ"piD2n!B
%]H7-FBSS)uT:aF)a;=\W084$X7XnbN+2&62D5*(u"1Jo:OL2>^,\"NFU>gA*UJPVN6e4mEWdkU]GZt-]!r`?sU238L$8,8*-Cb"`
%[.Gos!Ij")dc$5`Bs(:mLjY3Mg[oEVeQQA1,Z\2O$]=9J;p>9De^[?g1@F9)gnRbU7"r0B385.AQ(1giX%a62:*Qj'/A5!H3,JgU
%(3Re-kg#^%6"aJRUiO'eKBH?+<Mldh5C5P_40ti8]%3Z^^QJo?;Gd3`UUHH#jRJo7VV-R^/'e).s7Os[8&!=,H7aNW@Isg3cPQWM
%nNXeb6#3:qoYT5c0+q_)Ic2h([KO*),SBk+mf)-DUtu!NA0b;-T:V(M(]:Ljj;ZnQTd`PChM3@&a^43OLSD'%1QGdIjCFDep6:RC
%"D#^+=]."nI3ro!>onku."6/d?9N&,SB@Wm^-'99*qkq4_4nqI=pdhdP+YK(!tg4I<4`mYZOm2Ohtb]s'N3JhAB-:OdAmIg[k9qV
%IZ:MLfWQp,?*7)@>bd5)D_%(RWoYVg"15i.Be*FfM982lS>r7KltQ'oTrD0p'a%GUWGAk.DbgX&OR'SXYeX8nCF7,4h7_HrTgl$7
%PX+I7("%<7VJ,8)&6Li1OdKG's2-VNcBJ.T>e"qGS8:/lmmH[)Hp(HURepuEqjJ9hRC&b&F5^^I"oOkZ+OGA^Deam\K$6.W`2b17
%cEE`NlAq4t("angHpgR37YX5;Xb7TZA#*d%\H)#JXeo'JraVHUZHdOa^imsV>%9&3o:]!7(.%7;dN[m$<NI"ZIY!J1Z-d`PCN\.-
%$RZ<OiOLclFX!+8f>YahK>-'BZ1Yol;Q6cWTQhY$Y';rL\W\G,!QAW.lALL(/jQ$V\TiX)F$h6W=._A$3[lF.HrI)(C.\%=S]tM"
%@66>-kc<'D@`LuKh5"QA!Z7)q';]B17R0[n"n4@:4L)=D:H*WVcC,^]JRFH`l-!qf^sdK=@5mD./77<W/Pr2M[4'19?j`jLD\.`=
%^#1hOjFn$ED%.t`JqkusZKA;]hYbD>Y`SfP%MKsOMHP[#mhKDq#gHDHID#f&IY(t*QJ$1mQo.1%0.gpaYd@@kgi'B:c8[QD$tPnH
%XLLH[]\X%1:-6:hJ[2-1].ZlO@72fI6TH/"Pn$lD3V7d(e7%*g]@sl.\'\l.!tcH+EhQ$@fn(0OO==DlZFhq6KDL,OFfq[+H7cru
%6KcO6`++X^M^6@&KN@<F!r2'/EO.4rP'ao"J,X<S9ce2hnU%IrrU?/KdhBmG?S0jNT19%`!Y&^qI]V0b<Fd*kctl<ADWFop+h:QF
%A^l%[W)`t7-hlc'@;DA-0i?Jq"pu<n34:`_fb`,=4h7n-6&Is!fhatZ-Y&!M$93A9#)m@j-#1[$G%Ym1$&0p?U@2*BB/PkMbga54
%H`*%+:&oh6!.1I\-Z)ksYuqK"\(Ze570XKQU%2,S_64qGWE<J@#K_W\:$nhtV!I6[83DQh%K('iYD'XYp&mesP0j$(`8X3>XUPXa
%R*h$gNE[Xt3X1L&\T_pU2Mo7QNPPU)7%/[e7c@!sbl1k'U2q6O;Lgns$7h'Cg,q+>Bo*(/b+"!*K;u/YA@!m7(Lb0_K!lnE;4KpF
%<t.^p=X.TNZmNdDaJ1Jf$%!>+T$f0IQ=`K".Lj_RWNJ=?XVbal"t<o=q?/gb9Q@['GB4,A"LT)jegBfR*;K-U.WdWGWjsejeV4Z-
%94KeU5i)=lN(,,"hqM7F\TQU+7QbB!JSY'^B+H+'YHV?b98Q.ugXuS2O`8:B51+iJRM]84>N>\cX*K%q_)k!?FM1bU-JEi*#,tEb
%YRTV4[`9k-6BAGlc(FW3F+j0N:B_+tI]QYd<V.fspQ)[*<%6LjJ2'`(!K@RgSY_t8HS!JWmBM2>4DgTh&'2uuc+SMEC>/dV-`p+`
%1.h\T*TsV\ia2_'M%U1&[C]4*/\s\%H7eFl&_Tu`MqCV4'd#ap"K5WED&Ncr/.(!@6(2]fp@fbBB#5gYH9V3f#rF3pZc6\4JS4F)
%^^BEG,5[ZV9L4O<:T;YY@r&FiO/"YW;/Gt:f=bM(DN4N,m*4(E*+Fl*d[-Ca0p-d;haOmf7s7cXU)>-u^@GC-MFbTiEo+=n,^XTV
%V($C[9[uH,8E`ssC3X6pIp+5%'SKGmRAR;%Jsu&JN2@D0]tstP]_.6_$HZ3:&p'hE5"UkZp0+W['["40U616-1_QnghW(k7J:9?<
%.@$pe5u++O-<Qs2ZUhG5blIS-TM_CVAFL8A`aJ^ur/><TR>@5nHJ8)/=f^&-m6I_72N?u=TA1rDL$`h`T<%MCpUB9oG/m1X)TrP%
%:V]GHK&Lj3gV)&Ci%3X08:nt+?NG1hctX#]ZO3##r2BZV08\Ss:'4&E";<:-q\:k'?sSs/-tm&`9L/lNRWP/I3ZcGpkcbV_L95eK
%Vq!#s[NM!q)F^]]a<kiVF:"%/lr5PZW*B'"GU'tscCE@1)nq5r%p')fUgR'+W?Mfl6$'XqfK%a7K@ZTX\,$>+nNTsYPZ_f"G#Fj4
%G.#tVTt+]Ic4JBu(nrGX.GL7_7N+Y.1adP"C)<m6eZGfD9N<k_7!EHXjt]_6)S9!O>d=$1Bn:pMNLD]9KPVnT:)\"po@rp*M;[T[
%XdJ)WVRK^qE_^2/(/OPpD5.W`DS>tU4*qB)'4H.)mP]g&DHhaB$Ou1PiRodM-f<@oKH!_WWKJ+n]jq(:$$)I:&`WE>H@q?YVDVhc
%MhLrJn#2<oD,u'_I0cr+<CUrTO<U`/2do\aU2!Kh;i#Fm[E:'-L?[jcO5VN5>,!`Q28;5Q/]T[oCm4NCc?iEGM+\OXhZ7/,'.keg
%Se2[\NIR\RaJ[R-K!NUf8SKFVjqVF%gned$'sOW)2'bEtTN.>V!o-WS7TJ9HcttPN_E"JAIEQH4>WYbb;Ii+hZXfX;J5&ut1/')e
%>X".^Z4>D!@%'pfa$PO!N,OI!SMrM9NQ=k"8bLC$;]ZTA$^&s)Wt?XL(I.WucVaX>+;XX#$3?p6d;bB!o*tp1]dCB$82)o?*Gc',
%4n&Z0%W-B"BbUH`Mk@xxx/FkoL<-(YJEC8*5^"n=n>,b*:UER6b"R[lW[4PK<E@xxxxx&t.^jrP?&o_AhOm-9E]oOckCDP`<O\UW
%,B0bo+#XpMe!%]ofq[QQ-U]dKEb/[*afJYLM*)E`o#oY*4@p"H)"ek`2aZUT>f0#TE1$Va`+PB4Gl`\m(7FBAaO(EF,8nIF#uJ`3
%N?pP5)9t1mJ*ub&3BH<\flLuDja%CS9DN=8cQPc@R@i5TW21Bsq/c&gn/O_VW=DQkXaA@F<Z<r6NT'/M%?4MN2GD9\G-CEK0Jg0q
%krDmTNel^@f^]hCL\[sV42Y.On=>grFVEdkbVPf4JM'[<DC8<#I"St@l<L>]>2al5#k'ggqT\]*j*5YOq%uY4-6EcXR9\6G)Ng)D
%kVaA-A%#iDRfotg$RmP[qGEq&._2s`^ogeh5pA8@b3O^1(,gb$B+q\B:6$Ui+G:pArS=!(^RP.i-8>"2\9,Wr*$5#nSem]XMja7(
%B4CpW5a,2)FdnTL8tpY8\?_FE&5!I$B8'!gA'QP1JAHQN]olrI#;79j*3DWuBs(h@R`q%(rNkN&UAd[Y;m'rn%kk)'ollH;$Wm&o
%f8o>!=+9Qpb_-@NJBA=6#Q!7$8,oEJnG6"7ipt,r@s>Ic+cih(bGF_)`RTZ`pZNg5r&Hm[jg"Q!rK+[=oRsh=%:;>GEaJ_bT&Xhr
%I=/N;gaZ[G\@Ss%4h:r,rnPJ6n3hR"oXR(FcCTXnc.R/SLXP;1@?t5gc4AONm(5cIj9p>2oqSDYj_o.<>ke[kj',c5#53]4DT(Ak
%*ll7'i@uso,Vh$DD.%RKlucAfWn3;LC6u^/g(2!*;tT%r'DM'>IXV/G^O,Sq^AL!:NaDp6?1er!Rb]d*6gWg3q&uVTT:@(1%\Aq1
%,$sFM=X*1k=a;4Wi`VZn5/f<u7>>&m<jp)'R@g'(,'NG>)']@t5!<Oh>s'WQUg6)1De'kN-Z`f]4=bVtp(1$A*naXZ.t;Y!Xe(\A
%ihUfg%`u;,<YieXl*KqO>j+u/,S;*moNW"@MGMPF=V&j$-_677;_grJ6p2cm6o<@KZ:Y7C4X7/K(O8J^agu^tDM^%;N9h0OJnO/2
%-t)q2%$O'.Ssj/0WSj[eR1(22X?7.nDGSP7Z%H]MR]ME[AXeL?HUb`k\p-uiamJ;ik+"Ds:X;)T90=`nUg76I4Lp:EdrS=7V7m??
%5HOQ+#D-Y(5!9P(JrZbL_V)hjUZ"C)f-6N(iE7m.pAKrKV02=0\0[40B1+A=`q`'kMAk[(a^4MEI!YdLcg^Q@*fl\$,k:kN^g>p4
%I=Lka\)4n]f3/.@APDkDd&p8U!nmBZ+_7V?MTW31YA;qC9GO&-9kSi$MlfusW2El+m$ON?XS&#Z!83d;UC-^/SPO,M>];O*0QS/[
%]6-rP;Ga,#XR)HDS#jF,jmnlt"]Z(Xh+8Ym%5qm@lBV;9lBl>QK*A/NVlF_cg%A3T?mZ6#i&Dm?:@-hJCMUWOBqsV?=kp\J-fYb+
%@qqg[7^9nn=('U1;/T5G/X(0@=c?Bq,lXAt]*7C$m;L8&Sce#2/rFdkX+C5UIYmXW]n?&o/0nn;Ks7+Ylse"5C]iO`5/BB[4m9AW
%%O@ccN?'6lg,QMg=O#hOn]0_Wn(?@H_>5V65<.l4@A6o5m?T^9dpD"#6(%gR[RP`Mj!89.n)S]s^@'RN`.9:[;JcuKYhrZuKAoZ\
%MJYY[On7`+?7EcX@p=qL+'_j$5=,$0S<tA,=t7dp%K9JM(JSesXq$o8mT?Yh-_IhCmo;[^ena/g%AZ)g?aoAdL3o!'6+6NRIE"O!
%R'<OIo8Be&bR1l3-\mSm@F!0c/+e6>EumlGQM"GQ)FT)+ReG(k:FfVsk[8hY@kk5inWCJ(lbJiXXo>[o7uG=#3k/:OZM]D24\sW`
%I&?g762jsH5bX]E>i0+]p[E]EN;>1N,b<%;aNY0X&0Z8dj*L$I)pVD3W%jgi[(>nME:Ki_>$N#C3/djGDR'7O='@RLec71],Vku?
%;+$?)2D"!!<O@V*!6805V*WdBi2D`fN]I&9b=if!@c]nnPRU_Kd3Q_7&T2"d^M'^[/]hH?TeZ02Oh0ZK8-hLGA=J-Jb>n[:SM5fa
%?)=QX(hFSQgb]pqbdA#+a,rl.%>@f<]W/=?1hr4Fgf&\(/F8iuXVAp$IK$"f$HkR8@i%'MDNYupDY0ck&<X&omFie,#fkrsdQ<*3
%s%P"*\nB_]<[u_P5b4Z`#F,W\_#D$7Kf4@ce-E&0P0+:NAS@$"QiX3d7>j1)s+iE2/=.sVq5C5ldL\MuA8.lAd].'<YpH-*=&?%[
%CK0R$K\ZrZ(2^Bi3E*+B<DjS_e<V<9>RL5T@E$<$jF1S1?2M;J9Pe=O*kda&,$76<T0R0p\LE._=%m)Ec";;jFY-7;W+CN'0@kf_
%458M%ZGIk**]d_P8VRQc2cDo(aW$[)e*:g2ZF6BfBWNfAS?jkV?SgAI,aslBlb<iSF]%9Us*,kI0+PLH&I?c_\iMVoiG+R95[R#[
%]OobLV'D580'.,Dl-6pk"rrAqP4GW>NNni*^01l4gPWoKhDf8hmSoCorr*bmMKDqiinI9RE`GrD\&DHq8*Tsh#,RNch""OffBY_a
%D2q0VY&Pg;:he>4IRPDBS3QuE/3&lZL(%#;=AEE#$TYC.OpO0")&o(SG%"qSiX=tj4"lBLpfdn`@Y8iG,V,hEk(.'6(3l=l)XWcn
%Lj2rH4u(t8:+Z4F;0;ZUKLb:;qU1r]JJ?TgG@R_]2-l>V.$^oOE@kSU4(`]b^%aRFh<H%^`ekDX7SLH2T%E!>Zma9,g^K7YpUiQB
%AGr>M0CT<ookG(!fjgpo@7`H+K&1f,,,n)9Olgh-5d_;EVTEF<H=Wl+G$_$#HJ*c`LCl>6>Eu;3VPWO42*fE+@GW^7$Rn\B`T>pU
%Y2@r,/)$$o,a9d(V8pM2e_ee\%r21*JiiE%$d^)AD+:U2G'V?]>+)USMcShAMI+#?Fe)&XW?P$TBsAoi[+O7HiHdA)q>cO3Mgc2:
%6j?:d=GS4KV?+[L\ANVo)=^k=7Y5sPTF&p-1q>rBYq93d",)+FVrR")[We<0P1DB(U[8XMYXcBlL=$cnGiOXIbbWm7AeoTcGHkZq
%"RX1.SMoHh%bZ@V+[6!g0r%#i>GHHPfaJ_&C)KaL%!GY3ZFs^71\>.lP\&MuH^!PWiKK-0&5?\a=Q8oe>Q`(U_DORa\qpobaid(a
%rW^V>2;.csH?,I^=^dLeLl'Nc)$:8[cT],p#D(2B_(MPrk6KYnW7':B?fc1*4:mgLYqVRsg51K-g'U\V28(`i[ZL*B+],)`%PF$&
%DkMkWI_<h&>s"q"dG<k\NnlNE"@tEC!c&K+gSs,TMGiA=TYI`GFp:]5$/Ei0EJ%8M1J!X>?cJ:B+=%fIk.Vg'L)[.d2Uik*1/As1
%J9Agj.!@4hP/>Rb$GTt6S+!5_O*o/Q05-THDU$:4SsIT63:)&G9-h3t!iTEfh$j=VVknkafgdS(EQn=0Qnbh<\"8lW#%S'21XtEY
%eE\H4V74mnfH-\f/sY"SD)<UNOJ0fB6NDY")O1T!+Wbq?`##(+OpE\A)?E'_ClTX3&0+M'>9QVYS[0h]eAtHR1`fB*8`EYS:eR/;
%?T.$>cblm:j4FP4:bS-JPV"u+;p:plR[UG6=u*%`?:3YG13@a,(-6rQdHTBe^h30:EfP.s;/R6l^RAE'ctksk*cHT;j^+ZDLcj8A
%*#=c1Gc[9seRedCqD>qXq5qlQ)J=+448#8.9j/W?+?('O']L+P)B2FV0cIH47QYs)>`osHV3nO-jE+%4aXI2:TQf?BOk?4])sB,e
%&2bgupNh5Fd`ILsJQ7#c*6PfC,XIgOkrO5g;I_I,,F7.T5+5t%aE$OC[RPkGVKi>'LdUj[%&M^j`sbWq;9"Ol`o9<AHRl7<0uhb#
%QQbuf4?\r]0Io+@gV>,K?;)2^g.m$2<&*4I4p?(4],Nmf1,f2$P$1S^_"1C[HCk=T3"H4`28=!@ehhcV2<Jcl_XK\JjXb`NJb[&S
%Z[eQUf8PNdk/Ofmd8H]bf&5u6`8t-SgcNL3coAQ%eDFAm?a`U.C=?U\Xs;BfY)\&j=F`5_m[4muL=FL$+PWn03UfJA;i.GhY3<@E
%OL?bs,eenJ!4K)I><BP[0[J@Z)U%M3Z7fMO@+TQ`H\e_Lj4.H-b)YelKiES5%&;2o#g#!li%%DTpoWPrZIm@dRt_f#+b7*lXXMr+
%VMOV%(A6T59lo;ZmKSg%_b?b*H5<?s/p*-,)4_T>Q!?i^GF.P>SS^2O1R)hIOjfp*59WuGP]-t@![JB1ZZJ@*&"*DO&V_@[LI/3r
%4i.%D+-<WnC02okb&"m+,(_"Rl`D_3AWNVppAos5P<W0L#@mju3*RQc=?mb%>.u!T##3/pf<Xl/Rr:T7l8(P=P+k+qa*(4bVgI)T
%'[Q<U*=rl_3H^R_1$-JGcjjf@SF3l=O$!#67Gg:m]B/psEK[l:M'<d!Vc)O.2]MEF`A':M4'd*A_ZNYLV-j".[bk?]i3)p&fDNKA
%?HR%A$87(`E#+T$9hqg"KMTMV41I(I(^!C'\JET_W\=_"=XG4G;O^amRau_"N*)U$a;!>7)<+r()q&"gFZ/6"G'[cY_GIK<^M;>)
%1OuVG9/_4%RT<LLYU]pIF`GC5]5@m\ILpt7s19EV^NoVJ]=3:cbOJhEs5i2J1a"VX^O)Y`]Jlk;VrYNsRHcXJ0*&#JNNL;eN`jkM
%^A.V9TESfH,fV%+KMP`*(Mu6q);@7=h)+P-=L2ncXe9b;Z0N;.p@),)!785@DQp(,!GEm#)_BBJrk#M6b7c.aGLE$&?;;a>f#A+O
%1d=O]85iSM<KY?0/?9VM[6?jJM$N))1YnX)nuXbQef9K8?#?DRDZkYWXJJ0d<t+iI^Ft5S<HCnON=GBKBSVi$^N:6W.0U_1;6CP`
%2n8X=pXd1I],,sJUH(^3"-Sd&0p4fMH^oi44_6%l$!O,pg:%q.G&iW+mLCq4LrY70i[i3eG-oh`]G3j3ZLk!BGP'e_>htk9h?Ggg
%Zl2BFZQ^q4%"uV+KH\+3(2ok'd8(8nLr,n3%d6TL&`<c\7ep%(8eK-f7?^!f\II%>aX3fh1*<JTB*1PQe\#HDiRFLg`W`K(USDWn
%aUkS,e_L'/KHN$+J#g5f\!B*E0WZ1gO%^c,E>=,>^-a]AB`uai#&08-@\kT#oda,g8r-56G7e[gC<!sC8$$m0NE#Hh5\4A'bg_$_
%SV2k$o;EM;bCZk<l?k-i4[=?BS>(QMUWG"r:%6J#_f5R"WuM8T6-VOA'f0;L?_X\J+k\F\dJgkKa([gq;GnR%Jj7`"j%J2nKHm;Q
%a3iK5%tZ#S6^PWpPbB#:@^+bKme$uL48<YLXoeXLG,7\J0sFciYKf=LZe90dK,jqGMaf81P?A,r$en\*Ci:^mcl#U*Es&#V_L\[>
%*(RfXLTf-r,6XjfJf)`$U)MN82*j9J>kH;[An;7.(n%KdQkP$?oD6C;8Y)LdgLkVfL#Mo[!Sf52E"(a<b@[j(P=G$7UsY"-Z(YR'
%*3<)i5dZS(Vk%X'(Y`IhM4-9),q>CFDnf'%>sR/H!<ZjT`OW@-8SRh#.#D]Z1f`euh.:ZtS2PPI8(o5Cn-XY_ha![963UiWck3EB
%.E!6Kh;\:>M.ntaNej^TmDm_#Z,ZHCH&Yn\IuMFbRe'b=jl0ZX#A;:@#UN(YN8;5&dEPMa!&sgaH]1Me3?#=kT`GS*lT(rlK:K8D
%B&"i6FVmo3C2/:)41)XFN!u.arctrhc'VbR9YfB8l9Wm>_`FDgmYjgk8kLCQAE$O2LKc"r(4'K-ZSD!cpEqA(2:K7&%U@SO`nP/2
%KO0Y^Np=`+HLF&MhWr,s\A/#OBY$l7nj5B'K1uki[XDC*:EsmU0\r=tLmYK"D$;X+Q#63<&3qFp_4(ZfEXg\)`*9*L.qub#admT!
%$.!gU?U;'<Uni-1!T/h[#AYmik?=@noui]SSi9f6B&/C,2\TMl#/ZKJrmi;Z/Y*cLFmiR&F%h^"n6!grcR5s./;;6JV_u9)Aioci
%`JXHBSXqr[S9fY"D1ap@a*eoEBk)t&j5$`3c5gtK:uprT6c(8Jqm$E"4P(0a7&=Ai\3L.tmTQKI=R.li"K.T:4t!DBFPp(Ko>.;b
%@bq1W!j]a\b"KT[qWH,sZr\XCrUp!1Xf6jY6Vgkd`d83G!7R+Uapts@4[I9^<N`D`bS9I0^\Gsin+Fqae)lI(HY_J*l0+hel%/Y6
%;.?cTT$^5>A51NsE5M6m1_&CPrY8EZR[\gD2l@P[(.G@dP1AR\0c<lL#,[;ZlD1>`_ObZtLgXeuEdS)F_g:lS7bj[D,//m$O;<Qm
%ll`3['R!_[F%92s*AYSfU1NQ-.q0P'E(.+h.jl3O%"6hI)=oXM#fW$N>Ld1U%*Li[c&nPFBX4`^ebt*!(`)r`=1TP;@k8Y3.nGVT
%T>n`N)LrVqL-%<2@d8+ZZ+6W%UR@&=Nd"-hf;9Bfn=,'gNh7qp]_5T[h)nX`cP67grT<dkU#PD3>1gZ)'i1LuGeQYf<nrW=`u5]N
%BT7/?nSIIF?XH[9e?3R>-/J9)qBa60%JSMQ90FLHeLN-M#*^+'2'U@%46"-B@qH!$FK6h:`eDAC,<[>h>8fhULLtEm.(YON(6s=$
%pckk-8m/ii':R79<R8\]bau(4,-<X4S$=*<]!EZJ#Uj96q3:Kf_CEdG2MP+dCoC+>Tf<$fm$$U;i#])%.m<Iq)oNY0agcMo)Z^j;
%DomEF;4Ns:OB\kTYa$AaaeA:gMlH6"@LNqj'Vd#F47COtWA&2?f=QBL3o&6u"oL"=H`%@ENt+Rd2F7ChG47Kdb]q);ldJBR+fpgd
%>n*cBNLbp74JGW<Ja"A="_N;cO!<.L8nJdYbesmr]q._D%>jf:-Q&/b[@[\Cl!hBa?X3hYQDlKs"V/MiOj1erSdJ?V^%$&<M'%qI
%(2U`+T$#)ad6o_]8rnE\YSd2'M;@D_O;@+m<U.WNWZFq_FQ3)]Lf;J29p0@:)IZ+MaY^N/OnkNcgm0d#Z'7.9!\#C6O2>VEr!rT`
%A:u6PKIp0_H+Fbj5,FXc-0ZDrk9N\EE!t4d\)us1Gsa,Uj$6d8)D0IrOU:Lee9IoqNnj//!Det^_IE!_Pjk;9Lj;P?d.5U:F_lqN
%Y9XpeO?#B,hnVY"Cq/,f/[]SRk(lg!c)A1jf)a!K6kMkrj5"9f+ur`o`(pX3!Tu"SF-WB!3!mthP?o>*P.EQj7OJ%8AuL:4AV0^d
%m0kOe`2nSd0bqqIkK/&[jt/6&5(PPRjWlM>>FO*RhFCY5Nd;r993tn"pXb`LCrqNs#9=_:C-Jj>T<n*F[1T%Fg,NTc`%72$@skfe
%=]H1G+#qU@k$G]%r)BrsJ6l/ATgKjRHd.#?o"*53"L"*5VR]?FCnmXiUMhqj;lFG1.5PRgCq"u^?u(RJ#@XbZ)&>2*!*G2eqaQF\
%EWbX"lsnf+nqGb5gdG&nU9<-16mBjt<JD._$^+4BZ),YFPMd=ElFsMO%^TPY;$.AIO?J3^2fq0;dJ2D5kl_"N-k-%)>THcPA+?*]
%H:8']6f9B?=T[!=DOG_4=5iOm[r00/\=5QTh56!Yq@"c(OYlo?S_o#^gC(3WbHe-.%R!d5i1=<If4\q>et(XH&D7(+XBWI5"FT<K
%<+37a5q)EO`bL.LAfCo,/\7.Dh5Z[:,\S;&TKegZ,):d)+*">^6(bmD,E9s*\n%u=F,<P*r$C)i)ZdH'q<GOMo#E*6+o1(Ad/$F%
%03s)$@XM?>T:)G-"uiXJ=:I`3N=Iu1']%_QZGLID86+80E$K=qb&TbY7(We&FOD]O,C=^'Wa2oqAW:q=.8M6j4$"EA=cFF`W1ZXS
%Nae>Eqd*/4+KP-)g^?"CBnd8UogXdk)U]KH"<Xe@7tc-7,Q[.1Ni:K35u=[JE^@73PSP+l.N4'_i8.\Us%T7Dad_YhW&uEIOp@3K
%-`2;JE\Oi?_c-gCae.\/&t$Rm&L9,k`1&$%.aA'XmM%n8X0#Uoj(HWfBGR<a)6[CPD*C*QE,+oLSf2b%*D#!RO'CY*4A5T+g[8@,
%gQ**I=JJub24OR5c$0:Pm7H>!A$oB]E-Ck[D>X^fc,%Oi?*QCC%X2,h.b<i'r:G?F9d0>'-W)3mNXGd-Ls*nH&TciuYua1=&m\W"
%l?@kj#&[-*Ddn(+6NEQ^DKmUsKQJBDVBh%d\k4)VN*j<2CM0HO"FZ^[e]+X97A&,?#'sYt:i"f?.2C<$$R->RfY\u:k<a1,eHe\o
%RFtZN\=OB:CLg_epBe@&L(M'O?c;VP6[>Ca%PK#?Us[]RCY0ma!9t]f@l-jt-T;2d;QYR[fTosI0(sRe[bm,FA%ZKVX#H`c$H1'<
%T3>u!l;]87\b:3o1;ptc]nFi\Ql1.0,REP,$:Ye38F\\-bC#[XfVqnRF)OE]Zmp<le?ZbLSW!&_/(-W[lpW]t]MqW8`ncM^[[Rii
%h!Gj)Z;._kB^gP[6(]O9`o25QHsX)!3ZlRo6p:BSQ:sNULRXZ>`RHOVn,;o:]ol/V^^WhuP1@IsXt'==*BAa2*b"G=PsV0bc?ZX!
%Jk"n$dNZB4."Kk19(a>Oq]5p>)YNF>NT\F2rTs`HfF#d4>sEGX0,SYckl1.hqKd`b]3Z_8!09qM]%WH>R$6</o!J2WgQ/2m5KaR>
%A$fO'0iK,W/%Hdi+kr<k\Kk`EG,IT24VomY%hsT95rVi4>&@g%@nEtFP,`AW\e_m8Ho!T[j"9kYLS4fe\=9UBG/4')I>(N9)&V1N
%0p`R<rqcPe4"+ju'9u#6F(gobek"Z'ArWSr5&7SrILBt1]_AM\)K?$uk+L_L(+bfcT6qGo)TX(,.ES`OQ?KbOb[IofMV5Bp6L%cO
%T]D%U\"7&9hEF:!_DPFd+3A/a7\jUT>eZrQc+M!Bbg!7eUfS\RSB]UE%Dk8D!'0^Qj5NlY;dEg<6A&X"%+'%U@kR`$V_r?dfp')V
%#6;$041,[$9('Waq%bCE-FR\_a)YY3->A0_1+hVCp^qK[ZFfrNToh5@RV9>_;.G:PI)oAE.^tj<J)HI#JP=m\\.sr'ZJPF'$1QKb
%R3rnSe4)dgQ(LaXS#m9bTGdGFCVHoRDXq=aN6+JL&hqtqO1A<`BlffA\#juC):J[,NV7\p#4*I8YY^c=MK:;c;.FR?O[_SS3F(-$
%"o5J_7tsJdgPV9Bl.=ADmF@,qbnr"4W8U6orShQJBR>t#_0;+c?X.G;UD_0W'qH!6XhLu>(Hki7k_WHC4,!8W,n>d0J3c;^+3lQ>
%!u)0Qi,YAjGd0S\9kdtN?<i?IO@CA'A<@3QKlR5(B9ih7f8P(P'$V&W5B?:(ef;`e>.Z&2$hbb2-)QsJkY?d$3LL2M)cEOMc)`KZ
%pi/pX`MuNjp'0i2oN8Ng'2FY+CI.p\NCr?KUMO`&Eg<&T1YKQX%qN\38)4W3^"JVG(TmC0E,:c3@NqbUrE/a&MVO--['%M]P2tC7
%h>CEZ:`S+1!onNUZ5J$_$XE+ra-D`V3pV<.$@[jQ>Wi><)W+Y76P>`o^!e8S/\[[o(=F8ZCp7%K?ESH,+\+>2Fr*\@^2,PQ-U-0>
%)Ikk2S$umF3c'[3[QpHc;b*(1Vd>`cZQ,Mmf$se;-)kIV/"_RD'cnc*qP;'[L\1d8i^=><p#S5=P#>l))3+A"n?`f'FUfNQ9/]ia
%/8,:=RSmQ%U[H^Q5K3nTE[O*$8V^qcn,E/RI<XYC:Fk.omPL\0_gU[uh/t`*6pudJmkQOsC>=6_[>)7FFh/0m3uYFo'/pG/rEPi6
%_>G2:TF0tH*^39HVV&Ut[OhRr%@C77>W-pB9&U-#dNd5oj&hM>*N*DO]S7/?B(LjXG1scI/3X7cc!Gn6pDTBrG4lZr4Y8MNWsP#u
%0`KcgX<P#bLqEQC09%;qhuSC5"$^:7VU:4RQpjJ%V=G`tdO_V_136fel#*Z#;?3sA<`UR"98gQTY"ZlCK1T8c_*FN-*8(@EO7E:7
%aRmo[)h:L=(_E6P_n=*]YlWJD&W`RZWbUQA@_t3%ir,&Kqo%EtlOu*7`G':H>BoQ%TmC'8YgS+4Aq26a:a_7po<o._(1V$GE>fR>
%ETAlephAdA*4WaI2<^TD+N>\^Umnc;kE,mAc&#jT?3S3NL30Bu1]U5dm]uN.dn5jigB6Dfj53>o%+R&9KXr\pgc!*_Bb9MeL4`]=
%n/VNu1BrLZceqX5DXhTnbtBsTEbZ7+%k\i9.to,BofG&#FKNG&[C]p#W:6d-7bH)q_qHfN>2H\*8VK,Y4^V3t6=]<mJY0fXe1g[/
%EkH6?9C&po>:ft8H<)#F*.J9Q)iDBFS&jprN:$1?">]?b\6FA9""p32RlOt*8OI%o'j=Sg^-q0s>,(0qWI0j24.C-Jeha"!j+7+f
%8\fjMPD&d`YW_=Tn9[e2!u3+d!,S+.M.5"F!J5\!n8J)*,[Qf5<\rTLcWX:/gI0eucRZ8I5RrK[)V#P]"0rD.P(7%M8(9!2,TuE)
%U%Mn+7^+iZ7W(/TVep-r$gjW/+&;_q]Pp238CFlNbqS.Adm?S0qXF>c1gD<CQFYU:'\LSCXXnP:,SsBkFmdD+]CH4;pcGp^SqoYn
%rm,7UT[u!9qSqt-:.,hL.:bu)g4::P%-F]BS*?`-Orrul?UiL&9[F]2ep]44Q+$oR^0&(h4)Z/GS(+a(>s)7ErY7?>Q-nsI.t7*4
%OsOb`+MP.,?>jBd"I#7DC85_UT64^"]?fR%ahD7^JY#MENVN)OYb?fn$k"C?_8pSJ=R7;1"3Y\D^?#mDmmghTSCc[K=pWDq03Pei
%o_6u3!neiJOaZ3oX\8Vpr9q[,I=CEKh^Nf,V$u=8?\gEHg&T6IT98d1/6NRR_)c!iB_[3*idjB<os%>S*fMPm)LLD@N"Tel<9JXj
%ENK\)#ad(6)m!.Hol$*lCo6@_VEIg[e6-',.tJ[J/ps0?@KXkD>qh0BrRdgD_&W-p\m#U-,CmL(2kG-mS<@p/,]G:n>#<7"Z%%WU
%'\V,m'4m@hBn99V1GT$3(gh.@NZsHCTFbmcDeV^U5k&N6kr*,f6BQ/'!_0&H<<t2-6\J^8ae;^a5q/2d3$8FJ5%iNJa1P//3Y<@K
%ESIFpm7C:?f&.]s1:-:d8E9'H]B&+6V\>C#h"ERuPE'#/dLYZ\(uEeRZ6VmpdkUGGNL>P5bQ2l!1#909hkICM`5^(_V-uT11$5nu
%;PD4I4[lB-O%+5V1bt;$XA[Z^B\p`#Q'bam1/Om!?"A>9>2mXk,WqW`DlrJd0Uc5XbPKLc@k!$V<#5&1SZ@rJ-[-'@d>1AjjHrRT
%J1%[*'SWU^0]6(J\HrD0IR8KjfbM20IShZ[Ho4$*[+YD^>mMjF-EDt[VHDO8+f;RL\X&GN_RRCC=pU+).(Ibrn$[*1aMlWaiH<3c
%j=+bG9b6Ok.X\97%G"Wn@[."24L+2;A3n)r<.!'q=)a?g4%mb$@qV&.MNl)amgXL+Sqa-Z[R'DS*+&ujotiRGioCd-F:^Y+cKJco
%`-UL]`]+)S9b%8+p"?>%*$IBq9Lrla!,;ae2K=TB[L4\X_J"Ba92k?slH`XDbVUd^\<Bm*N$FQG<XU(i">c"$(7=h>(":.QqC8IA
%mW'tFc0MVZb";7'TZ^)N%Y[G0B$boMmRBsYLlZ.C"M2(Zd`2@@L1)rA[i0]U$oK0p%@9H%+dVgYVl:>-npn"I3`Z<(W!.sF0VWe&
%*F=h6+E)FY)llEt16ukVm_5]B\"i!UK$:gL$c3276CE#DkQup1YKCPm\r'Z"[-3=+DiD<9#^>rI)jQD)AatAJr<enn'Ks2`J.>M.
%fd)Fe[jL+eRp`1V`b<b\@K,`/G@?23VXdh;L/]mG@a:e:U4L`djCAiZC"8+Z\i$\C3L3HRdAn>UlN2RAR5qnX7HS4@R'gZ`1L%O\
%_C5\B4)p=$T0[F/WoY"ud5F'\5_sR&n"7;!):Xgn(Dh`bTp>"3L]MT"'/Hpu1`XRf)Pa>XJ1(QBE=Q*FoVB&@G('cRcZnN90%qc?
%1TX;Z5H9Xh.baa)0nC=7BF]8NKb-3i%Sq%2'EYb8,.:,CMWsUo+;)QfNep)6C0&tF@LVWDMdmPm/Sf$`9:H5-.P#58BW#s[Q>aG,
%*bGhj=XB9_0[H.KGH'^oWrOZ0DI*Z=nfVT@iSR-FetJ13K-MjrZ>G157h6Jj8>RbA))Y6i(XoE$h?;"_XVjpob\2m5el]`-)9jm^
%]k1e_WD`fkUf+BlctS_]`oNLh3tn0(8A8mo;U8A.-Wu^&)?X"O&J\o#2Jk'E\fr[A%<YclLfANNiXE_aI;)sa*A-HVMrY9fXDZg,
%4eu7%Ebp=:m9%E?Hh*7q=<)&)7ORm[,r0<G&TbhSCrmtFZC>i.ifo!`?OK!\ZsF+ufM]DH$dc23Xh)g5iuDHuZ&\45Y"%ZPS3&%f
%Jl7tIO$;<u'm!l,\:ZKE`4-ZoZ<Je!8_YN,[F,FsD)T6<!Xl:b'1Xp]EAti\`5G9D_QC^OhO9gIRq:RIUbUfV`+>"#=`794$FETO
%"]sD,D:(c:Kg_uB's;E%6oG."Za#LlE@lG+*1bkJ4FTU((YplLSJmHoJR+43noeI!)FC.:PkI6b2`IRFg=hT4&Png(?sPkZ;KTfu
%/a]kffmGcQ<,W?j>a_Z8eqG!W$tBGTCeo%Kp;C'[BYB-lH5Ms=MUY.kF#G.Q-E8&<ZU7g?^!C%#GJo2//O^mCdCCM7b?IfGAB))V
%hq*ek:@/+((D<)ZH$7jXFhg^PN14hQ@Q=0X_BM^g(;U4O`chU5h2,,>%_S+:h.HGrZ>E<YnP"i$lfdhM:s[rsIMA8`2B$g7(aW3g
%QP>`>V'%!sH'3\NT_3#l@$d%U4o'Pe&s)Ejl/k!+4)/1^J`8KSoc0es*$@]F()IotCCTa+W1RYbOTIuP.B?H7)J4rJD(-U^@cs/t
%!I*"N;IA4u`9`)ganuS?XjWLd2D4OM[FJq3VVjcd>.LqBJKMnO"1]B4``iqd>c;2N=4l82O=$Z82TaSn>PA<-1eqo30F)3C*Z"'n
%DL$E!`r/5@AG]cU8qmLLn!dQ\,o<A3O&FhhJ=G1rqaU6QCg,d3^-g/L.hqfb54nAekX*PWogqMGn1Sm9ge@Z/aVZ9ngifAJr.ZG_
%`<Sr<7au$[@mbW04k!Ke4DLOC;&o6e?,31:bc&@$>$T7BjK"-Mb-J6P?rUlIS<b<:R8$%?S$dh+V@!%+O]]/L\?G9fd<_'`[CtX?
%TkN4U$]V/Ogu<ja95QPSX(E"T!H+TcK"9Za\VbN,a`!,;PInkf<'>C#h8>ZU1raHn9Kii\lQUjrLq_LFdE>Y#Lusr[T'Yhp"!KIC
%M\i`#/"g+CRR\3`o6Y?/LQHlmp8#eA?KfmEf4ro/Q89-u/P]2([":MQ?e_0BE__W_3:CG=Rrrp&X0f]u[&oDi9sr3t=P/6cM6Bqj
%M67r*68a+sAFYFj@mp_1]GKEn@?+,pNR1cP:[>ak4[%P6/j0j&l\g$`Qo(i7VlCum4"k-JZ&4KMq2t3Gb8*B<UDF1RM%]Yq4<'5I
%4aO-0SJ^:OO*;AqgN\c)0Tb;6s/LIIl[gtqa>9=/P&H>Q3-s[lj;<,h$VH<Hg1%E\H:Y'FGAB4r3^EQ#Cq^nnLIubBM7i6:1l2Be
%-%fK+6V"``#\PlD\5kqqHrWai899]B+Kd$;kjD,DZ*U\]:FE3CYdX3c[bt(_+VM?$]L>m2ilo#9i`G;Y;oiP(H&XBiY<503>I93;
%ZE\MW,h]XTY"X))T9'kXcYc=jf,;muho3X5=hC2T@:3+\!Y`'bk<j@eMJ:q+IE54m4P3@sjKKg?@oqi(nH!Eg`!e!6e.:!"Btld&
%0:q2"1AkQfMNX?%'^.NbEf[QMKpm3/?YcIU7U?E4P(]?mR*honfL<ZNS(8D]o*m8Ek[59jm6Y%16Cj=(-ob%15pU/"<\Oe!Qn=EM
%Up_"m(k0It9KEfWOqNJ3.m.W*T1E"'b,l]ll.IqO[M`Ok,*JF0&f+j[[1R.-@e<]9X.WSHSZC^n6Nsbo0uFnkh7mIUJa>u2,b(^`
%N+fZSfWF@6)p\-+HJ:&k7Wfs!Yf9d,8>H`:`nAC?`Ck/p/`C3!QL$/!/r.BDatR-RCXa5>mimPSMQABfI--$W&Wu^j]+VL.V^]-W
%V`6k=[0qg%bV8haXD18EY;V8ibBeg_.gVKQh^`q:gH*5!pC\['Oqg3h`V*3Hh'taB09oIGUJ&K?;[/I=_VD6j1(&=uqp_XVTasl8
%XUBlEf$9a(d$UO'M]NEN"!TUXH^;,)S.e=(*P0^iO9QmQDg_@_+eu<rFk2bCdbro[>klj/jBBc\=qK/+NtjIuNR]Y_G\A*,c]l4O
%YCn/7GA?'peMc/R*Toh9a4c'c51f$IhoFnND#6iY6lX9V(JR_)Gik<0Y.ht1(d'i=,bXJGk-it_BGm)VKoOCIjB/0-UO.!SLFYN0
%hg"lW=01WFiQeMFYsZBk*#T,`dTQLJ9Y8$TB`'nGn3-o-`?Bo4aTr]2mXb;53h;\5'g+5t+'eURI&ZTE1'M@R.'SV\FL3[="X2\S
%P7Z/uBRFk^l01OC'A+G)H%e@0d=Ecu9L*,[9M?9q@u@9(,5J^VF<KWG,XpH;eX4(N3anCs3!\*?C6^Xj4a3uF`M2.&9a.=QA+\E9
%K)Tn)a%.+'l[nU-2$e7Goa_NYfa'iE24!+MYe%LO]r>BS*QJ(qNJG9,PD!>OTct:8?J7/NKt+VPTE7Uh00k;!;PeH20iZ7>,DXE@
%pE4a;L7=::OtJduY*@"D4a%-s*qq(1aTPmF+oU_+I1FnIRVfUY;J\=f71IN+<:RMgW<-448>OR0cf15aT]$a"+Q*F;TM3RaDTIqk
%NIg(\<3R7)$IlPf.hStJETG);(0PEh2>Frj2V-H@:/6)6CCD>5on%($lgYCL+;`O<fIjO1pkd&H0@U'?2A_L<`C^>W5iN5-?9!",
%E,RFNVAC"#@"9ZQg,FtQ4FJSs>aFI:G%$Kt23/IiO:*k^TMqDs49&&en2R>_P?'D!ruuE?eD`?6N3Fnb%&gfM1[;-#I<'LQ;5&%_
%BJi^mMnt?WmMIIG3m='_FdOmt.bA-?>9^a$C58mGADoNX@3Lf/)\Fj[ToaurCgXq:Yn\YF:^Rf9H<;![oF(=cqO3DI\%>5Waj"<N
%N4T>%8Y(\h`:?"_8a+a#eFUiC]m8QS#P%:UiSkKRr*`l]8ole.!A&_jNm2O^BEYGOA,.gfPrLOc@rs`)'GL=s5`dmU\$BrLJVB*V
%7`ds"#tTK#[^=g()2i?cR/>>oNLB^,\%Z'6U64b2];<'1.[*61.!<g$qGrO$'":H*e?s9XkWCes(IA,!U]S@j!Q-b-%A.eYM2Z=k
%P#qX)N!YATesn[pHctmY+Za+/`]UBG=`"[HHfg&tN,A-+Pm^30>H\OUF[4Z;ZRin%W+8Qo5c>V5Z!bn\%SdWRCupL?>CB1Q1<fPt
%Yo1*6\>LfoCZ4oE:e@4[JF\HZ!dV)CYpUR[/NJ(I8rP9[B?.^+f&G2LTogq83a_&YU!P5-$SWdobYk[e3c!ub\P21k#,es\P]W?P
%'$4E%;$5V;Kt*0C:"/1Q/s$IG_>D`)BT7e:S9^c?,5ng.1aip:$_bnL#bE``V1i%eN1*A!.?-rJ2E@sB\4SB(&[s<'<(UuGat==G
%NM*F&NIJNtrJ&Et:Hkjb-q#i?[K=it&aNK8D:u3$KA$\F&MaZ-V9I<ur!@k[K/CCR,+,]jdd<SoTu3#=_KNN=Ki33O)E,>sZD[fF
%\Des1boq:?O/mHf/c4497oZN<kOiPMkqrhR[8cjJ(a!G8la<De,ojF3XV\MJD08]8i'H+]'7*<qlAa[pU>YBo7m$a*29'F5\N:-g
%;eNp"/>/;Da#/OA'X"]H(_[K<<PZ1M;[O-Qa`;hg<C[mbU,a_"CqmLd4j&qiM0-DiWBOS#d%,M"Ld3fr[,##42k3Y!%_+8c\u9h9
%i)pf/?9S!-qoMcr6<rD9MesO5Jgg`cKp_R"R[N,>'dL?^^S")^59md6FmgU)B"IQ&*tf))?;Xt/(?rXgA.ViX@joAUCirj;<It7'
%*=49Afu!W2-'K!>U/U4V-M:KL[/2@<P=$t4]9P_K>H):1IS$8(P##0r%dt,K'Y_WrOa1\AAJmU5LI!8u@trO2N![.M1Pae`Zu&W1
%^#8Dd/Op`!&LW\u*6n^k(!6k1feR^O)bitd<PQW]*HX!Cd/qufRP7&tNH4\;V^O5?P8CX'a;t`VBq>W9OI9:3*D'LG4S8!%>_#Y@
%7$=j\MaT#7MdU')A97"Z"`u/SXY((c#i(s2nVE14Djo\i*D6L)9F2L#HAG&81MN12J@fqIAanj-3PA^]HPsfgWY,CPMI;BE6Z9Dq
%ZQOiT>K+)\,MD0/)3G9%-cHT;pj<u1@HG2bT;6'MYL/]-H;oumL-[_'npWJ(_^ejt`ji%k)EZ"k:%!]ZV)#4S"ICMeW-Dif>%O8C
%GfTZ.>&I7mU8j9cAiQ%.79ZR8,ZQE_PGOMFSfO:mr/?e?0LK>Qg%=V:WN:fP'F_JO)Y$Cf/\rG7OUbHAZ[A22WNfJORm;mO5<,X/
%`E\\;2(!NiUbK\/=t5^<msUR0K/S#gEKH>YJ?#m8bs*)37-r$HN"S,gNM?i99*-B,,bS?6[^o"aRdM\#V_O]rC$liZ!8Km-(Xpq=
%^f)^-2uNuP)P_Z#8<6&@Y&fi0LL\jnm`'Wg?uf7n[ka=n[V]A5.F[LJ4)2:r#a4]V`1'X-G_.MQa.&/9@5^anGA]9+dg<)h,Lu(%
%,Tg,kW,FS$X(GZ<4[gJOo?,mTL"?^_mr%!k7K8U2*,M_/QW=C?Je`UJa9^>"6DMn%Vs6J`I5E'k]<A#e&#YfP4$OV`/)]"]O&W;b
%m!;.T%\UUXh(DN&c)m[jr46+6`\nVsiipQjjUZ*Yb^JJIY-S9Nd=>n]m;EQ]P7[K4!s]=s_?[FM\]fd&,*G<g3)ra('jX(0>Y/.Y
%HV=(WT(9<Y*^c:(GOh:jjs1*A.?ZcNFGGs^fT+XT^jAracH'N.%irhS_1X(9pjisSWR8+DL@!*g3hfO8_&T,P<u/Vp!ReXgD3%nJ
%#nbXfKp+`ol>\S=NYVAnf[H"W1:@REHd=UNoKqbD%A7d?rHG>X;ICkb(kRXKAfD,+iBB&h7KpYq95TjC7W?#Z$n"]9Hh."In["5H
%8jre.9Ae#QN=Q:.L_X?`'Ea+&o3@-JS3qi[$Y11cT;<3Vl=,VHcb5Dn8:c%D@^sPbWXrL(J]47E6eRK:!q2b5bNB$9#*cWm12:FA
%?>n5R<S)3lUgECPe+An$O1hQ,(gb2TJJOW?5P?HCX/dpG;t2ol[BfIj5=K@``ml`UWd^B;SJ4LQp2V9Pk6U3*Xlt=BE!#X[![=2Y
%G!WE)l[krjFm\.XmiE_h@jWHZ`YLj%UjMDG7BM3i$gRTBB2IhVD59jRZRh]U8T8o?FD;,,;9G`9[bq/I0[gIO@ZT5f3Y_YndW23V
%iPh07)-Gse7h=6n'j7o[/tK+u3FDS<KAZDT]AL_ZY>"EFUjB'gF>7rPm3')nN4)<bqLpqTTgg4h:gg(Um=Sf/(>+>8k4k^'"Z"ZT
%Akq:?\cB^'AiALh@8ug<:u$#q=Ml!;F`.P?"1+sM\X\pH9pAJ1SuKs@jAE'Zi3F\mIGXPpH3R7)6",q#l[hED[7m6Sm/kQd`@joJ
%6-Msm2_IctNRin2jMJhLWs_!A`%?Dd273ZUG7A'M\CqGT0/)OP6rdeCfK'fSR<L9Z_lNlLcc`dp'MXS^c+W&aapIS4jJ<HX3[FK=
%h9Phi5>OY?ju!V06HGP$c+O9r0A]I:m:#Ep=;ui@,6U>LLBrdiP.#'N3-1joQ",Zs2aRNe498=]n!so(ZMGmUBF%mjiO]CHgEd[,
%">@H,V%E\RBiHQdCK/3$#lXW-3bn&OnOa.IZe)<l&E"s(cJ3o4,`::(_2gG`/%Q<qqHWb:"k/B7OSIgY]NMedaHlMY"Z_3W>mVp^
%q/1Cml.SAch+itS8UZ9)!/Z>F+QSNJ3ACS667O_lKDK+)//P-\CKP7SRKqG1\Kfi=UP2T%dU9[fP5t;1[Ip["8`Ws30`LBqY%Nnf
%af2Q(9r2C>&H,Qh6t80VAts#j(1G_4/;Xm\;97lL:D[&ki!Hagf`f94q#tOjosU((l@Ln<dK'2BJO"EqT:1jE+hGQOS6%B-;qm%0
%=,jBJ-hE:-WLl(hf2^lP)gQf]g3u1ZEPVXop"WhX.(e;^HGPfQ&mjYuSZol/0q+bc'>nieXcsR_NOno9==])k1ai<8I>gb^+%=(`
%?cf=)'^)rA&g`(qe8ZZ.Z`oTn[]3dPKnRd@mj6`<:bj+%.LdNcIFk;`"Y,9[mFFo9<sN,1O4)Aq/ul>AY.arWOtNA`'=i`i69VtL
%Ji?!q/>FB?^gjrmehL4!?0JG^l_h***PC&HKK:k<.^F@d"f7)`e@f$Kc@dLLl#O_f7]iqjh:MHF-LB\se,b"ZK\+SlYl\<;]1?$[
%OO3\R)B[;+ME?YcFLW^'dV%Hf5)F^T&HZ9GnX'i96)TTGJEEXIItKshVFq.;^="RlYU39>\).Ia.XWeP>c/g/-Zq5PS8EDb'b.p%
%=WY`=XV^]::BgHP5soo88?)a,fqN1k1a_W]).Z"!6h4t2Y@xxxxxxxxxxxxxx^g8nm@YF5+Nl/jP^g)7\(2Y2"T%XB#R/N1p=a2o
%e8YL,fa_1:CRkCjTeTGj;W][8^-jWQ\@=D^P`SND@#RtR0W$%Y;fHl!]E2D-(GE?R!m&+J.6I$\[Y+;0O?Bs-gN#6B3l/:hMTP3*
%)#]hR/3AP1:lhYQS,28<*iB7u:9D(dS>mE7=#]QeP<N4_CH4\o0mq#Xl)Hqr>&cK';#m[rU$hU7V(j]'OQt?aQ!ksgV_H>aB)J%D
%G*^[tC_`flZHjH6TT0&PQ))e7Xi6Ok@?%L1f[+_>Z12BcU!cIG$8u'0\Y*LXHGQC.rPHVeL/<-K\hF]jg1H>EI_a%J<)HPNJc[_X
%Y,Z?L]1j7mV)[GOY_=8Z-s*?HNE!R;g^-2u@[SM7bZLojr#C+H5dlCRD'VX^0)K_`V:s;9c"5oiK3iI<a2A\?8_*_3e^CHe'k4:?
%WN!88#EeA<"'G<JNTF@:j%hk_[C3C^B]#Bckp@.A=6Fb`!o9lt\Aj%p/XBhG`f"IC*//G`+0_m(/m](uK2nL/rp8oh2]4VK7>a.c
%-p.8B),5Z%k/,prgd(_[h&B-sA37.D*Z$'pnfWFeP--4=;g+KnSE8_C@LWe_Tuai#!'Ia"']^P;jlsu%>8!Z/=7OF3HpGDJ*)`7B
%Xd\:28!eNj46kO-9rH&6ou_Lc2E%7!:cu=Lp]_D4eYQZhTRaY6g-^soLf2f=BH?bko^ofj/p`@nL/RUb7'KPd.hGn6B)@TGp/NVM
%`R5XfU;B?_MT?@M+-37(?1h,CK;e5-77>pX\r,AjK*J7u7*Gr0Xh)1mnB4/)QmX6Ee6;J'2cWZ*RGA":$r!t.7inG=/Ktu#]l!/Y
%M2<]Wg$s)Pb`YY<Z2opp^B;]Qm"43ZAWFm4XUHQ?c<u]VlrHZZVL>A,]PKkX<^#tqDDJLZNHohU.(qCXDMh#uTK&1:(D(GH.[Wi_
%J@R1eW_r-/,fB:`,eL;kp0iE"T8VSm1oUP>020$875l[""PG#COc\%]*dgug&ta^i;r&!Mg:3o5A<#Z)Y']*OI8]X"F`.n%,^XhO
%JGfAS_$/a#2J^Z):mr)mAH?YE%?IDTWYlb5]'#PO>,X*QR?f_sTdF*-1sL3;:h1tJ2i5>I-kg8?i3X?H>[a1+E=WA-,>g,(?CR7-
%9-Y[@Y2?+4NI1\@.U3+^Y\4tE!m)+OOiNJEQpru?q<U%40)ZiW$^6"*OjOmp('h6X#3G_Oi$h[0oSbp:]p/MjfCs$M`\cK5Sfq%`
%h,L$Wf77_ifXss1@:`3a73bU;k)5c!aKCb4c('.M$]"6Y-^F4BM1HE<SE'qiD]:<!5G<dq]*!I3NB^XBnq,eY8^tRlB!UZ"XBeVR
%@\'J\Y8#7L-Ud,VQd%*!&0i#RmCgiCBg:7=fubuTb]dgP8768D^j7.R"_hhD6KqgU;*ibbg$B="%'I$B)kB8TZ-llI=lX:59gPEn
%?E(m_UGlA.J9Pm:Ue68pjlhSJKXIQ@s(i*[ge>rG=^<XQhMd_c!39(mMqJuemAXUB'OeD0+gmtbi$-r=brB>E>btK!KP2l@]NA3l
%8CS7;+L#5hY+fGPgH@W2k2k[:SpQE#E/)Z[Zm+.Xm=L$>jsmh+e5W.pi76(sgInYr9.nR_3,'XD[mXtN.*\m^nD`CZbKN473Xd7>
%&;$?jZ%E0!O-?u@\ejJ4d#AA/IG["#`url+$E%#Pf9ouG;YWM]I=RPPYnaYMMD;Br"=\RQqOt0.#0E45eHD;/"mjfD5"sL%"3UmF
%)Bl384sQ;gfVDO<BUr8/]E]"X.5kfB:ZTCRKtK.qa?*L9>U5qN@Hl%a/+f96NI2PCp9"L?qu"i2I#r$mJ_WX*57oOd#50>T81UoS
%GM5d5Tj*YOm!](M-5uE;$D3HgHm'6C0\,^.pUQF_J<Rt%]Y5#-%s^3i4VqW3ZpK5Z6[($C!TGJd_l0JEgeb&R+DGVkFXuf%3*@QS
%OH#^H!K#VWI):N".D2SV+ra3(2UI?QW74_#cECYWnBlD]ZtNBVHM,WhjU>O5>&Xiak59=Cg*kJ&4%V;'L/qi8((+EL)P`30Jd5#;
%HNqA#FTGN=fBFU0l55(-0WW0,He@%4D7&*cDS*\cd"(35Q(C%R/_^7a'A5XG8K+OF?/E;"kNn3-Kak\5NK`:A%P8T+XU[+M9J4:@
%8/++H;7=J&IIbWD[qBBF\Z60`Y;3Q;\0f_q.G9E.dFM5=Trs-t<l!6(\$a@9P]F[YapYt`U5]FX":O)=g/Mu_^G&A\8NNZ%SDk%K
%*n/_h1*IY'_CBXaG/\p$K3+B5$'Y1P['mLY:QL^>oP\:u`G@B"F`"8.jGM&SKJTOn6c1eBY0Fjkp?+lJ;/9"8,E6P&X:'laapfU2
%SXi6X`LtKn_38<eA<Z]YWY*oA1+ifceK7F/BXifd$Y=L$CmnIfBbf'PdbKN<?npO2425/S)L<QENsOcP7r0dY8W`I8:3HV9/9%N0
%eF%p_U\*B&b#f*Df3JD0BlY42iDf:Pb1a)Yg.K9j=/X.Y>76ZpaISTVUJ[4@itSO%"ENS!ac9FE1I?DG6>O^65/Y;H6hAo3qK0VC
%L<f5t!p4iXj_hS4f%;FrB^l.X2'Qsn7Elp=PWUVkZB0;4#Bnckfkf5nA3?!KF.%P\I&+#*45-U'q<Ku!@n\Q"X_[tG"2f8j[L:aH
%-Hk]99,a;"8p="f2aof6%ga[,b8]S?6N'@t"_&YK>r_s92A+A\!QcUdV):nLd$CAn#,:m1PB**0SBBKc(?SQ)0tlLSP)\>/f#%Xm
%6+KEY9,?r_:JJ"uLbN`hiq*:Y^Ur,FPX43.]2RVnf!4u/P-W.=>@Zof/Wi"kj1nUDe0Q00$DW@S<;S/K^?&b+SWc(Pm=HN>m)%0g
%SAst\"q0"XYoD2:5`FlTI@O%9kLfj(Y9$j1YZ8(?Ribmd=5F&3=r"n;fRqVtRUm2GMk&T'&k?YY@HCXhJ3:k1Fm+.[cVS]2;"8A1
%+R3$nScXmsgIMMV3%,SXNQjkmL<D,B-!*\I>0Gj]qhAdljXQOP*F$ZeX?oJO\;j1G5W#)-"0$+KGaso`QL<,e[o,!n'pZ3T%k-%C
%1iIMfSDsU9`S0c<)J\Ea;E6I#<#S?tjRq00dM9#uN,D/s)2!a%Bfr//jDlfJLcGPdE]]EcVHbK@>#\%P%Q9]UaVqg^-If6YoE?pP
%,Fr/??M+dWV*YnPR^#,dap%9T.tN!N>;8d\Ke1kAcRK/SQ6h^Y<iR\tCmdtj:mFHeVeo(.Ps+U<C:L@-&W(+]If*5;pt1J#fcHkU
%T/)D]*aCeW^`\$[M94O3,mCtI8_q)mqOV"aZ[+P:F'm=ODuB$4@0uUG(\CKPTd*fL"h13\<1NP2;%[LnGhM0](FB77#OYVfgXS5J
%,78.Aqm/do\(248qhl/6JT\)85XlSjA?OF^NY:$a<Xp^3\;Ue1KmY($A/.C>\1GUDi3LjX&%ePH\G=+lg0sEk/a%/S09f`>\Yus#
%fuV5&i^$O(g_u4gMm60q3I`hG%'_4!g8^=e\$PP0$rb-A=\)@OI_#rMU1j_'`n,\6nBFjVkZ9\F)Hh237qlBEmiGdG4q&a1NFadA
%*e=u.GF5N$^qR4bH<l%RR6"W=p%1kJU+;NNWY!&a:f#(JG?6elL6ke17+Nji@j>R!/>a",P%"^VTATNX3=L$UP69?T6MD'BC_!Dp
%8L"ng?qt;Mfb'^F^/UYK$`E8D_=3I]"ju@C76]eLa?4/:A<97de;BH!iRBBLb;jlA$Wfr0TL^9B%t5\GaU9uXh0q_[\Z]jQC$Bn&
%A3\iOEfb^ij^%]0<>Va&R=S:I%9+\lfkP>Fc^:d>!].Q\r3]A<4M0d[=f_55CAuir00l1:aH[PWW'ZJMb:\Xn;:=$u)*)QcSSe6+
%/!ndg:TE0'&e_'pB%GN:'Z.qF]fN&&!&&!KS5b*$&<[u]g'/(DMEapAgs!4`r5*Q.Qk<'=J#eQBkW.29MdnP%F"jY80(W6!>Th9a
%>=BJ9Cu-a;BdH^E)sA;"cqGX"bVbIN<!lFVhI-n]bhru[2hjUSM:8qZ2:86uAM7\Lqs#GT^4)/]94h!X76b-0B[jo!eHN":"gM)X
%G)t;imT,8U)K?BV\S(_Hb>Zo23B#=0GFk)44.<drRQZ/R5N@^DKY>Kdl[5p6W->0bEUOoiPHGan9Tn[$p&KHcGK+Ad5B_qNQ>ZFq
%,a4p"/@_8rcL"*9B"Fm<b^EU@K41E[`mjIc$Q_@&"#l(K;k(Q/n7=foQ@9g-d4R;OiU%CBAC-.S<_c;s`TUoY68J["\hdXsn5$Ho
%'DkduS(.\K#*gqPAlfe-*`0GraFI,N&)_-0$[:(@cRfQcIs9)NL!8Em]CV*kO*8Lhh/-Y$h,qSE(CcVeDsa]%$OiCOA_"*3@ph!j
%Y]*O^4"!BgTt=BS\p#euNt/QZ=UG1Z=<B\K2]ZMbAcmp1#.O[%*p[PgQ:T'5XZQpo8$d<s?nI=X;Z*HHPC+/rCeJ99WAj[L-60$`
%25n#U(GC:1oSGVL'u_@Ll\T5A%'``K;lXat:#N6lf>p%=7=R*U$\ON[ft"J&Xs=WMWKkWp1SE>ENE4dVNEaMj8q86`LbUk?4VkN^
%'8P]9"n,7D5+>0F3(6.9Yhjir[7Z3EZaaH0)l9,bSiL%'(M;\PU'sdJZImoHUmY8lG7:2'+EM`W;719mXbP$NGdYf`83n1TNgeE^
%WNg'/.`D3lfbl5o7U@Qs]-s55NHp*Jo`Eo&'gUg(ppj/LOZ"CGNdA?L0Z"3`1QBt[Q"e<DS'8^6GPD0BS(QP,!jbnl.W!WR(df07
%"4;.r,9\&&]h>^BUl/RQ2$H+$>hJrbWL:t$cmt0elkP\/;Y-U@-05Ol=$i)EZ0\_H6m.b,+aYc`6uAa$U:=LJ8o:P-X1MZV$^FCV
%)Gr:f!%n)A.mXpPCKlqDiIrhq<siqW3pUlFSfTu02:_qo-CM@Y@anr"@\k#UN7,idclnLk>f1/SCS`++Y'?<Yh:q)9+cW4h##CC2
%0tn-E\%pG[S/NfRgFfoS3>Ci'KbYGj$c1iSXaAVSJE4"6TaNd\&d\<8op[r,Nq[Ns[n%W1",cO3Zoq2fb2=BMd%e;-nj<\/M?Y\c
%l"R`,=rc1.9X^6A"#Z^WN(GGaG,3:-BNPEec4#QZ3QAY6NOb?l#&5ldIF)Q32:K%`C;7PS4+!*,j3fSD0pW_MkPB>bRX>QbI<d7>
%B_8SeOaUp<7LFY'jt&O=JhOg6>/t<D(GsGjTAho7jV2>hh+C'.io/n6E(UbZkZOn@(m_;4`aZe,Ctt\4Ofk%&j9XPA+OjCM!&Ze-
%d"&M_MQo+>/W'PVNO!5sj[*M+Fg(8!$])J$bu_+BR%1M"651mr)@=MaarY>'35&GR_J;$O?4#54oXg+><Z=oh-gTTcPp.Rlr_if<
%K-V>Q]/21];inL@\4/A/A^/lsT*gYeGS)Lr<a!-rimQY_<mn.1)a1g?2o6SZrmk,DJ#XB=hH;9]/<(c"r_c-4Q;pe-jK7',k!tfn
%L%?`O80378mk3N.:$OMb.'++WpTQ9c%uH$a\Q]kXEl=1:TjI4l!9:947c6b1/)N4?Rg_Ym/<"Ube8p`[QA)Ojl0+IkEmj.RXHhD@
%]F3$08B0\J[Q!O/aGP`1^QsC2O/>O%`ld;Xi4b/W.uX#'a=&<]VaH3-gRV72%X?Sb$-12kSf(r\LnQ]PK,1=AY'd5[Y^/]oWDi1\
%M4,L`_K#!3]:a+5gc_UV(es`r:G1\,:$T+W>6tq]nt"&E-B6(Qbd<Vr,iW382/+KPg3s(f,dj^)b1jKV%r,Tb^Q"LaWg:>U"IeCP
%#3)YeYZ-C\&#MjQfb]0/L!ciJs+6%JHU!/3a9RNc'4UW2lEq]i"Y55KY4CCLbT,+?+F;R.X/s5DDjIaf0,*/@D=p3ui3pI`f5?Gu
%e[$>.J`B^3L:>-#r*[R&\Q*LKl/`;eGd:Ba5j"27ACf]._C[#r>Is#W>,]2gl^0Y3M.bWm8p,_?^.PE8,7IM%'Wfd-<87"bh*2.e
%5*RFdHZ-='Z^"p^M)(5#hNS[[$^k%_Diikio-q;I'/dpbq/$CTWC*;1C\V`!>je+Kj_Zqi7K(,=2Fj2#V<`)j&2)Sqee/3PSg@sd
%lA=U:AMD:@duh[E"ho5Q^kuYV)[gG;phhj,#ok7^K<,,.A;pbUOaEL$NR$!(P3A/Kj:72T&L];rcd::[XgE9UCDk:?+t+C_mh*oG
%P8q?NXZEh)mt^G2KQDBk-1%3Tj^VX+85%(YokbQVVC^fFnF%<hPU/W2_+bB[C!?jB?/_<:Wks1P>Z5[lQj*82cpj,:)>5[V%p_CV
%.eB--7:n@d^>-g=]"X`=Xdg#k>)<rZ&4^dj2I24nljh3,)r&$>C=g>CLQW&'q2n.N$++9SAJ5ob`f25=o't!ZdT(JPK"oetr2-4R
%7GGt\@#]T=jI7k'>.j./RSG1G^p&oVH:bn/W%An;b`M&u/K59?d)3EU':bgKLShg6)f0``Rppr+[PG9pj_BnQH6W/5n6XUflkM?L
%@Zjit5[Aq7f2kpFHRI941L,VR#?'?!mp-dJXZbHMjTU`ch"f?OED=R#5?:5B!3%YY]^Tee,e!&%]>J4N>.2euHG;Qi0'k]$_K9Nl
%0JWrBe;?h7F028b;EsQBZr&?\3<>]NW:mo&:LR?$L.A_;9h$^'57,m+KhB(u[`E\^-+P_^6(Sih8M1$D50AJ"FbZK#+]Te-,Xaii
%U)Ud2*Yad)S__!#2!dQd0!I(.CQ3\UpKJG8mp>t$CJW@3k#Ue:!u/qtYejj^(Js'7NMQ?u*9ZYTBa1;%3X+sLJo1d9@7*CQ6-GWD
%QV?)A8K\+(NI)E?on_:tgV`1MQ@ug:.]qOdin?qWA[0C(_6h\<cuSccDW^`-l*T8M+A-N"bpQcp^9@8!E94uAR/*hg22mYA;7B?3
%(!F*@jZ`[qg,>+XT4<S8/=9<uhb^aB0b^-UIDITdGQJS]'&c5Z/^HgVG3*N#Y(@!k3s;7U35!%-:@^j3Wot4>,>QBcPZ,fQQ]0>t
%)VX2\2K+P2"X.SM&a^D*%f_W2ZA.^,_+:SB&.#@l7BD>N@b6liCjS9tWghUi88oIaK'(4)dYKsU1PqR:i`I5'YUWm="LJk4g/q-A
%*HG]2DG`MfWK7cZl=luZ:]YDYSkBVJY0=Ks7:!]Aom4JZ&<(_p@-L;F@5uWtKR#n*@ZN%5^:'@30=BLhpYt(HH#hFW+"-0eZ2"R,
%.0]CQ2Qfs=f&P>khH\IHFs4GU)ra9>aC>L[6ttEJ7.krmm"+FoO_hPe%%u`fCD#bFX4dGdXfP-);'Yj[gBH=-RVu@G:qJC#-nCH)
%)/!JoN(b_8R3p^,4dsuDUD?K[-CdFV6>#pNmGKUYqo)8"bu9i7`b1sDU;X[oQn^7"I#g]geEoqle01V=KK[^R_W:5`5:4#QQ:b3M
%=^R[R*AXb*pfF_E[q[[65@[Enl4A(B<qJs'@>h(bS8kIbCGlS%24^iWUfg[nFKb'9/4C<%S<ji?#-D>@S.'$LkCjSJ.^.VE[H@Kt
%^G*,)[j]gNhln`p;lmBCTTOB0E@5(!LU%m(GR[D*.?0Nd90&sR#<l;(RHZh$<hi@pj!rog#,IDun#QpKd[sg`I7*=Bn]Z=+m?<ak
%9okO@r]:iYikj-5Uh\p73b?WjG'`l$/R&7o[Ia2pTZV<@Ji+<R.FQ5Tj:gc"mNoTYAS*$^fX@?.$!Ibq.\q"&U3btabM!m&.upoV
%5%PB3O;ZH`$#sPH=@5l2=!:E,>=IH#l9Gn`0BAZFG.Q<bBSX"?+G+103d.B8V6On`=)rL-PW=J^he_(<o9Kg3Y$=W43qq7uAI>qW
%GACNGM8"&/JHGH0r9,ERS.8Ut_?>B+X3&<8P-4n%I95s(K.LS=(go^1;CU@k4*+Tjl5=>XJn1/_5\(@+`Gbn%S&66D6,Sph5qF>0
%(&lNZ+[.\.`;BiRnN<7glI89-ab3WQL9d/_GFT89XIm(`gJG6lo+tpP9`e&Bhtq(6,:/G7[HJmXVN[bg-Ji"`d]V>l^QSWkf:RQe
%rBG[Xs8CR,]`7Q7T5OWMh&CkBS+kgtI.I)O@^ruKk2G'5IX(