From cbc83ad1f93be2f0f7764a25a609fd24f0684e7c Mon Sep 17 00:00:00 2001 From: Brian Rosenberger Date: Thu, 21 Aug 2014 07:00:57 +0000 Subject: [PATCH] Updated documentation git-svn-id: https://brutex.net/svn/xservices/trunk@166 e7e49efb-446e-492e-b9ec-fcafc1997a86 --- doc/ArchiveServices/ArchiveServices.xml | 15 + doc/ArchiveServices/bunzip2.xml | 20 + doc/ArchiveServices/bunzip2FromURL.xml | 21 + doc/ArchiveServices/bzip2.xml | 20 + doc/ArchiveServices/bzip2FromArchive.xml | 20 + doc/ArchiveServices/gunzip.xml | 20 + doc/ArchiveServices/gunzipFromURL.xml | 21 + doc/ArchiveServices/gzip.xml | 20 + doc/ArchiveServices/gzipFromArchive.xml | 20 + doc/ArchiveServices/unrar.xml | 20 + doc/ArchiveServices/untar.xml | 20 + doc/ArchiveServices/unzip.xml | 20 + doc/ArchiveServices/zip.xml | 20 + doc/ArchiveServices/zipFromArchive.xml | 20 + doc/BruteXServices_User_Guide.dbk | 355 +++- doc/BruteXServices_User_Guide.xml | 12 +- doc/CVSInfoService/CVSInfoService.xml | 17 + doc/DateServices/DateServices.xml | 6 + doc/DateServices/dateAdd.xml | 20 + doc/DateServices/dateTimeDiff.xml | 20 + doc/DateServices/dateTimeDiff2.xml | 20 + doc/DateServices/formatDateAdvanced.xml | 37 + doc/DateServices/parseDate.xml | 26 + doc/DateServices/parseDateAdvanced.xml | 13 + doc/ExecuteServices/ExecuteServices.xml | 5 + doc/ExecuteServices/runCommandAsync.xml | 13 + .../runCommandAsyncWithArgs.xml | 13 + doc/ExecuteServices/runCommandWithArgs.xml | 12 + .../runCommandWithSSHKeyAuth.xml | 11 + doc/ExecuteServices/runJavaScript.xml | 10 + doc/FileInfoService/FileInfoService.xml | 13 + doc/_template/_template.xml | 20 + doc/common/installation.xml | 6 +- doc/html/BruteXServices_User_Guide.fo | 1821 +++++++++-------- doc/html/BruteXServices_User_Guide.pdf | Bin 0 -> 232764 bytes 35 files changed, 1870 insertions(+), 857 deletions(-) create mode 100644 doc/ArchiveServices/bunzip2.xml create mode 100644 doc/ArchiveServices/bunzip2FromURL.xml create mode 100644 doc/ArchiveServices/bzip2.xml create mode 100644 doc/ArchiveServices/bzip2FromArchive.xml create mode 100644 doc/ArchiveServices/gunzip.xml create mode 100644 doc/ArchiveServices/gunzipFromURL.xml create mode 100644 doc/ArchiveServices/gzip.xml create mode 100644 doc/ArchiveServices/gzipFromArchive.xml create mode 100644 doc/ArchiveServices/unrar.xml create mode 100644 doc/ArchiveServices/untar.xml create mode 100644 doc/ArchiveServices/unzip.xml create mode 100644 doc/ArchiveServices/zip.xml create mode 100644 doc/ArchiveServices/zipFromArchive.xml create mode 100644 doc/CVSInfoService/CVSInfoService.xml create mode 100644 doc/DateServices/dateAdd.xml create mode 100644 doc/DateServices/dateTimeDiff.xml create mode 100644 doc/DateServices/dateTimeDiff2.xml create mode 100644 doc/DateServices/formatDateAdvanced.xml create mode 100644 doc/DateServices/parseDate.xml create mode 100644 doc/DateServices/parseDateAdvanced.xml create mode 100644 doc/ExecuteServices/runCommandAsync.xml create mode 100644 doc/ExecuteServices/runCommandAsyncWithArgs.xml create mode 100644 doc/ExecuteServices/runCommandWithArgs.xml create mode 100644 doc/ExecuteServices/runCommandWithSSHKeyAuth.xml create mode 100644 doc/ExecuteServices/runJavaScript.xml create mode 100644 doc/FileInfoService/FileInfoService.xml create mode 100644 doc/_template/_template.xml create mode 100644 doc/html/BruteXServices_User_Guide.pdf diff --git a/doc/ArchiveServices/ArchiveServices.xml b/doc/ArchiveServices/ArchiveServices.xml index 1c65bbe..4e7c905 100644 --- a/doc/ArchiveServices/ArchiveServices.xml +++ b/doc/ArchiveServices/ArchiveServices.xml @@ -5,4 +5,19 @@ The ArchiveService bundles file packing operations. Its WSDL is located at http://server:port/XServices/ArchiveService?wsdl + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/ArchiveServices/bunzip2.xml b/doc/ArchiveServices/bunzip2.xml new file mode 100644 index 0000000..bd5942d --- /dev/null +++ b/doc/ArchiveServices/bunzip2.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ bunzip2 + Extract files from a bzip2 archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/bunzip2FromURL.xml b/doc/ArchiveServices/bunzip2FromURL.xml new file mode 100644 index 0000000..822f3cd --- /dev/null +++ b/doc/ArchiveServices/bunzip2FromURL.xml @@ -0,0 +1,21 @@ + + +%myent; +]> +
+ bunzip2FromURL + Extract files from a bzip2 archive. The archive is located on the web (http/ https) + and will be downloaded automatically. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/bzip2.xml b/doc/ArchiveServices/bzip2.xml new file mode 100644 index 0000000..7c6620c --- /dev/null +++ b/doc/ArchiveServices/bzip2.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ gzip + Create a GNU zip archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/bzip2FromArchive.xml b/doc/ArchiveServices/bzip2FromArchive.xml new file mode 100644 index 0000000..1f994ee --- /dev/null +++ b/doc/ArchiveServices/bzip2FromArchive.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ bzip2FromArchive + Create a new bzip2 archive from files located within another archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/gunzip.xml b/doc/ArchiveServices/gunzip.xml new file mode 100644 index 0000000..bc4fbea --- /dev/null +++ b/doc/ArchiveServices/gunzip.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ gunzip + Extract files from a GNU zip archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/gunzipFromURL.xml b/doc/ArchiveServices/gunzipFromURL.xml new file mode 100644 index 0000000..2edb189 --- /dev/null +++ b/doc/ArchiveServices/gunzipFromURL.xml @@ -0,0 +1,21 @@ + + +%myent; +]> +
+ gunzipFromURL + Extract files from a GNU zip archive. The archive is located on the web (http/ https) + and will be downloaded automatically. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/gzip.xml b/doc/ArchiveServices/gzip.xml new file mode 100644 index 0000000..7f23295 --- /dev/null +++ b/doc/ArchiveServices/gzip.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ bzip2 + Create a bzip2 archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/gzipFromArchive.xml b/doc/ArchiveServices/gzipFromArchive.xml new file mode 100644 index 0000000..4ef4f5d --- /dev/null +++ b/doc/ArchiveServices/gzipFromArchive.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ gzipFromArchive + Create a new GNU zip archive from files located within another archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/unrar.xml b/doc/ArchiveServices/unrar.xml new file mode 100644 index 0000000..21d9c7f --- /dev/null +++ b/doc/ArchiveServices/unrar.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ untar + Extract files from a tarball archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/untar.xml b/doc/ArchiveServices/untar.xml new file mode 100644 index 0000000..9bc8a03 --- /dev/null +++ b/doc/ArchiveServices/untar.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ unrar + Extract files from a RAR archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/unzip.xml b/doc/ArchiveServices/unzip.xml new file mode 100644 index 0000000..c789b29 --- /dev/null +++ b/doc/ArchiveServices/unzip.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ unzip + Extract files from a zip archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/zip.xml b/doc/ArchiveServices/zip.xml new file mode 100644 index 0000000..7f77979 --- /dev/null +++ b/doc/ArchiveServices/zip.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ zip + Compress files and store them in a ZIP archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/ArchiveServices/zipFromArchive.xml b/doc/ArchiveServices/zipFromArchive.xml new file mode 100644 index 0000000..bde2c9a --- /dev/null +++ b/doc/ArchiveServices/zipFromArchive.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ zipFromArchive + Create a new ZIP archive from files located within another archive. + Sample request: + + Sample response: + + + +
\ No newline at end of file diff --git a/doc/BruteXServices_User_Guide.dbk b/doc/BruteXServices_User_Guide.dbk index 9220712..e5967a6 100644 --- a/doc/BruteXServices_User_Guide.dbk +++ b/doc/BruteXServices_User_Guide.dbk @@ -67,7 +67,7 @@ This chapter describes the installation process.
-
+ Installation As of February 2013, XServices require Java 7. Older builds run against Java 5. Apache Tomcat 7 @@ -119,18 +119,204 @@ server.xml file (into <engine><host>).
-
+ - + - Available Services + Available SOAP Services List of available web services and their operations.
ArchiveServices The ArchiveService bundles file packing operations. Its WSDL is located at http://server:port/XServices/ArchiveService?wsdl + +
+ gzip + Create a GNU zip archive. + Sample request: + + Sample response: + + + +
+
+ bzip2FromArchive + Create a new bzip2 archive from files located within another archive. + Sample request: + + Sample response: + + + +
+
+ bzip2 + Create a bzip2 archive. + Sample request: + + Sample response: + + + +
+
+ gzipFromArchive + Create a new GNU zip archive from files located within another archive. + Sample request: + + Sample response: + + + +
+
+ gunzip + Extract files from a GNU zip archive. + Sample request: + + Sample response: + + + +
+
+ bunzip2 + Extract files from a bzip2 archive. + Sample request: + + Sample response: + + + +
+
+ gunzipFromURL + Extract files from a GNU zip archive. The archive is located on the web (http/ https) + and will be downloaded automatically. + Sample request: + + Sample response: + + + +
+
+ bunzip2FromURL + Extract files from a bzip2 archive. The archive is located on the web (http/ https) + and will be downloaded automatically. + Sample request: + + Sample response: + + + +
+
+ zip + Compress files and store them in a ZIP archive. + Sample request: + + Sample response: + + + +
+
+ zipFromArchive + Create a new ZIP archive from files located within another archive. + Sample request: + + Sample response: + + + +
+
+ unzip + Extract files from a zip archive. + Sample request: + + Sample response: + + + +
+
+ untar + Extract files from a tarball archive. + Sample request: + + Sample response: + + + +
+
+ unrar + Extract files from a RAR archive. + Sample request: + + Sample response: + + + +
+
DateServices @@ -150,6 +336,48 @@ +
+ dateAdd + Add or substract a time span from/ to a date. + Sample request: + + Sample response: + + +Hints here +
+
+ dateTimeDiff + Calculate elapsed time between two dates. Returns the elapsed time in milliseconds. + Sample request: + + Sample response: + + +Hints here +
+
+ dateTimeDiff + Calculate Fully elapsed units between two dates. Example: 4:15:10-4:15:55 in minutes = 0 and in seconds = 45. + Sample request: + + Sample response: + + +Hints here +
getDate Get current time and date. @@ -227,6 +455,37 @@ +
+
+ formatDateAdvanced + + Transform Time/ Date representation. Formats a date with a free form pattern. Uses SimpleDateFormat patterns. + + + The following pattern letters are defined (all other characters from 'A' to 'Z' and from 'a' to 'z' are reserved): + +
getInTimezone @@ -3336,6 +3595,33 @@ ]]> +
+
+ parseDate + + Converts a string into date using pre-defined date formats + + + ISO8601 (example: "2012-01-17T23:50:00+01:00") + + + RFC822 (example: "2012-01-17T23:50:00+0100") + + + YYYYMMDD (example: "2012/01/17") + + + DDMMYYYY (example: "17.01.2012") + + + +
+
+ parseDateAdvanced + + Converts a string into date using any format. + +
@@ -3610,6 +3896,26 @@ Sample request: Start notepad.exe and close it after 15 seconds. ]]>
+ +
+ runCommandAsync + Run an executable with arguments on the server providing the web + service and don't wait for the executable to finish. + The command is run within the environment and under the user + privileges of the user who is running the Tomcat Server. +
+
+ runCommandAsyncWithArgs + Run an executable with arguments on the server providing the web + service and don't wait for the executable to finish. + The command is run within the environment and under the user + privileges of the user who is running the Tomcat Server. +
+
+ runCommandWithArgs + Run an executable with arguments on the server providing the web + service. The command is run within the environment and under the user + privileges of the user who is running the Tomcat Server.
runCommandWithSSH @@ -3732,6 +4038,15 @@ Sample request: Start notepad.exe and close it after 15 seconds. ]]>
+
+ runCommandWithSSHKeyAuth + Executes a command through a SSH session. + +
+
+ runJavaScript + Execute a JavaScript and or Java program using Mozilla Rhino JIT-Compiler. +
telnet Runs a telnet session with an "expect shell" like behaviour. @@ -4527,6 +4842,38 @@ xmlns:ws="http://ws.xservices.brutex.net">
+ + + Available RESTful Services + List of available web services and their operations. +
+ CVSInfoService + RESTful service to query a CVS repository, search files and content. Includes caching mechanism. + + Endpoint address: http://localhost:8080/XServices/cvsinfo +WADL : http://localhost:8080/XServices/cvsinfo?_wadl + + + + + +
+
+ FileInfoService + The FileInfoService allows listing/ searching/ browsing and download of files and directories. Includes caching mechanism. + + Endpoint address: http://localhost:8080/XServices/fileinfo +WADL : http://localhost:8080/XServices/fileinfo?_wadl + +
+ +
XML Types diff --git a/doc/BruteXServices_User_Guide.xml b/doc/BruteXServices_User_Guide.xml index c4394d2..eccc91a 100644 --- a/doc/BruteXServices_User_Guide.xml +++ b/doc/BruteXServices_User_Guide.xml @@ -51,9 +51,9 @@ This chapter describes the installation process. - + - Available Services + Available SOAP Services List of available web services and their operations. @@ -67,6 +67,14 @@ + + + Available RESTful Services + List of available web services and their operations. + + + + XML Types diff --git a/doc/CVSInfoService/CVSInfoService.xml b/doc/CVSInfoService/CVSInfoService.xml new file mode 100644 index 0000000..d8496fb --- /dev/null +++ b/doc/CVSInfoService/CVSInfoService.xml @@ -0,0 +1,17 @@ + +
+ CVSInfoService + RESTful service to query a CVS repository, search files and content. Includes caching mechanism. + + Endpoint address: http://localhost:8080/XServices/cvsinfo +WADL : http://localhost:8080/XServices/cvsinfo?_wadl + + + + + +
\ No newline at end of file diff --git a/doc/DateServices/DateServices.xml b/doc/DateServices/DateServices.xml index 7662a1a..bb6d90f 100644 --- a/doc/DateServices/DateServices.xml +++ b/doc/DateServices/DateServices.xml @@ -18,11 +18,17 @@ + + + + + + \ No newline at end of file diff --git a/doc/DateServices/dateAdd.xml b/doc/DateServices/dateAdd.xml new file mode 100644 index 0000000..8d83d25 --- /dev/null +++ b/doc/DateServices/dateAdd.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ dateAdd + Add or substract a time span from/ to a date. + Sample request: + + Sample response: + + +Hints here +
\ No newline at end of file diff --git a/doc/DateServices/dateTimeDiff.xml b/doc/DateServices/dateTimeDiff.xml new file mode 100644 index 0000000..98dae94 --- /dev/null +++ b/doc/DateServices/dateTimeDiff.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ dateTimeDiff + Calculate elapsed time between two dates. Returns the elapsed time in milliseconds. + Sample request: + + Sample response: + + +Hints here +
\ No newline at end of file diff --git a/doc/DateServices/dateTimeDiff2.xml b/doc/DateServices/dateTimeDiff2.xml new file mode 100644 index 0000000..e344108 --- /dev/null +++ b/doc/DateServices/dateTimeDiff2.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ dateTimeDiff + Calculate Fully elapsed units between two dates. Example: 4:15:10-4:15:55 in minutes = 0 and in seconds = 45. + Sample request: + + Sample response: + + +Hints here +
\ No newline at end of file diff --git a/doc/DateServices/formatDateAdvanced.xml b/doc/DateServices/formatDateAdvanced.xml new file mode 100644 index 0000000..72f7f4d --- /dev/null +++ b/doc/DateServices/formatDateAdvanced.xml @@ -0,0 +1,37 @@ + + +%myent; +]> +
+ formatDateAdvanced + + Transform Time/ Date representation. Formats a date with a free form pattern. Uses SimpleDateFormat patterns. + + + The following pattern letters are defined (all other characters from 'A' to 'Z' and from 'a' to 'z' are reserved): + + +
\ No newline at end of file diff --git a/doc/DateServices/parseDate.xml b/doc/DateServices/parseDate.xml new file mode 100644 index 0000000..3186b07 --- /dev/null +++ b/doc/DateServices/parseDate.xml @@ -0,0 +1,26 @@ + + +%myent; +]> +
+ parseDate + + Converts a string into date using pre-defined date formats + + + ISO8601 (example: "2012-01-17T23:50:00+01:00") + + + RFC822 (example: "2012-01-17T23:50:00+0100") + + + YYYYMMDD (example: "2012/01/17") + + + DDMMYYYY (example: "17.01.2012") + + + +
\ No newline at end of file diff --git a/doc/DateServices/parseDateAdvanced.xml b/doc/DateServices/parseDateAdvanced.xml new file mode 100644 index 0000000..3394ecd --- /dev/null +++ b/doc/DateServices/parseDateAdvanced.xml @@ -0,0 +1,13 @@ + + +%myent; +]> +
+ parseDateAdvanced + + Converts a string into date using any format. + + +
\ No newline at end of file diff --git a/doc/ExecuteServices/ExecuteServices.xml b/doc/ExecuteServices/ExecuteServices.xml index 07c9f25..fc47b18 100644 --- a/doc/ExecuteServices/ExecuteServices.xml +++ b/doc/ExecuteServices/ExecuteServices.xml @@ -8,6 +8,11 @@ http://server:port/XServices/ExecuteService?wsdl + + + + + \ No newline at end of file diff --git a/doc/ExecuteServices/runCommandAsync.xml b/doc/ExecuteServices/runCommandAsync.xml new file mode 100644 index 0000000..69790c4 --- /dev/null +++ b/doc/ExecuteServices/runCommandAsync.xml @@ -0,0 +1,13 @@ + + +%myent; +]> +
+ runCommandAsync + Run an executable with arguments on the server providing the web + service and don't wait for the executable to finish. + The command is run within the environment and under the user + privileges of the user who is running the Tomcat Server. +
\ No newline at end of file diff --git a/doc/ExecuteServices/runCommandAsyncWithArgs.xml b/doc/ExecuteServices/runCommandAsyncWithArgs.xml new file mode 100644 index 0000000..818bba9 --- /dev/null +++ b/doc/ExecuteServices/runCommandAsyncWithArgs.xml @@ -0,0 +1,13 @@ + + +%myent; +]> +
+ runCommandAsyncWithArgs + Run an executable with arguments on the server providing the web + service and don't wait for the executable to finish. + The command is run within the environment and under the user + privileges of the user who is running the Tomcat Server. +
\ No newline at end of file diff --git a/doc/ExecuteServices/runCommandWithArgs.xml b/doc/ExecuteServices/runCommandWithArgs.xml new file mode 100644 index 0000000..c38a61f --- /dev/null +++ b/doc/ExecuteServices/runCommandWithArgs.xml @@ -0,0 +1,12 @@ + + +%myent; +]> +
+ runCommandWithArgs + Run an executable with arguments on the server providing the web + service. The command is run within the environment and under the user + privileges of the user who is running the Tomcat Server. +
\ No newline at end of file diff --git a/doc/ExecuteServices/runCommandWithSSHKeyAuth.xml b/doc/ExecuteServices/runCommandWithSSHKeyAuth.xml new file mode 100644 index 0000000..d4d5ea8 --- /dev/null +++ b/doc/ExecuteServices/runCommandWithSSHKeyAuth.xml @@ -0,0 +1,11 @@ + + +%myent; +]> +
+ runCommandWithSSHKeyAuth + Executes a command through a SSH session. + +
\ No newline at end of file diff --git a/doc/ExecuteServices/runJavaScript.xml b/doc/ExecuteServices/runJavaScript.xml new file mode 100644 index 0000000..e7de3de --- /dev/null +++ b/doc/ExecuteServices/runJavaScript.xml @@ -0,0 +1,10 @@ + + +%myent; +]> +
+ runJavaScript + Execute a JavaScript and or Java program using Mozilla Rhino JIT-Compiler. +
\ No newline at end of file diff --git a/doc/FileInfoService/FileInfoService.xml b/doc/FileInfoService/FileInfoService.xml new file mode 100644 index 0000000..96dfb77 --- /dev/null +++ b/doc/FileInfoService/FileInfoService.xml @@ -0,0 +1,13 @@ + +
+ FileInfoService + The FileInfoService allows listing/ searching/ browsing and download of files and directories. Includes caching mechanism. + + Endpoint address: http://localhost:8080/XServices/fileinfo +WADL : http://localhost:8080/XServices/fileinfo?_wadl + +
\ No newline at end of file diff --git a/doc/_template/_template.xml b/doc/_template/_template.xml new file mode 100644 index 0000000..a47150f --- /dev/null +++ b/doc/_template/_template.xml @@ -0,0 +1,20 @@ + + +%myent; +]> +
+ _template + Description here + Sample request: + + Sample response: + + +Hints here +
\ No newline at end of file diff --git a/doc/common/installation.xml b/doc/common/installation.xml index bc11ffe..87e0359 100644 --- a/doc/common/installation.xml +++ b/doc/common/installation.xml @@ -3,7 +3,7 @@ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink"> -
+ Installation As of February 2013, XServices require Java 7. Older builds run against Java 5. Apache Tomcat 7 @@ -20,7 +20,7 @@
- Limit access to + Limit access by IP address Sometimes you'll only want to restrict access to to only specified host names or IP addresses. This way, only @@ -56,5 +56,5 @@ server.xml file (into <engine><host>).
- + \ No newline at end of file diff --git a/doc/html/BruteXServices_User_Guide.fo b/doc/html/BruteXServices_User_Guide.fo index 1879145..63be065 100644 --- a/doc/html/BruteXServices_User_Guide.fo +++ b/doc/html/BruteXServices_User_Guide.fo @@ -1,27 +1,30 @@ - - Brutex XServices Documentation - - June 2014 - - Brian - Rosenberger - bru@brutex.de - - Brutex Network - - 2014 - - - +Brutex XServices DocumentationBrian RosenbergerDocBook XSL Stylesheets with Apache FOPBrutex XServices DocumentationTable of ContentsChapter 1. Getting started1.1. Installation1.1.1. Securing with Basic Authentication1.1.2. Limit access toChapter 2. Available SOAP Services2.1. ArchiveServices2.1.1. gzip2.1.2. bzip2FromArchive2.1.3. bzip22.1.4. gzipFromArchive2.1.5. gunzip2.1.6. bunzip22.1.7. gunzipFromURL2.1.8. bunzip2FromURL2.1.9. zip2.1.10. zipFromArchive2.1.11. unzip2.1.12. untar2.1.13. unrar2.2. DateServices2.2.1. dateAdd2.2.2. dateTimeDiff2.2.3. dateTimeDiff2.2.4. getDate2.2.5. getDateExtended2.2.6. formatDate2.2.7. formatDateAdvanced2.2.8. getInTimezone2.2.9. getTimestamp2.2.10. getTimestamp22.2.11. getTimezones2.2.12. parseDate2.2.13. parseDateAdvanced2.3. ExecuteServices2.3.1. rExec2.3.1.1. Input parameters2.3.1.2. Output parameters2.3.1.2.1. ReturnCode type2.3.2. runCommand2.3.2.1. Input parameters2.3.2.2. Output parameters2.3.2.2.1. ReturnCode type2.3.2.3. 2.3.2.4. 2.3.3. runCommandAsync2.3.4. runCommandAsyncWithArgs2.3.5. runCommandWithArgs2.3.6. runCommandWithSSH2.3.6.1. Input parameters2.3.6.2. Output parameters2.3.6.2.1. ReturnCode type2.3.6.3. Sample Request:2.3.7. runCommandWithSSHKeyAuth2.3.8. runJavaScript2.3.9. telnet2.3.9.1. Input parameters2.3.9.2. Output parameters2.3.9.2.1. ReturnCode type2.3.9.3. Sample Request:2.4. FileServices2.4.1. downloadFile2.4.2. encodeFile2.5. JobServices2.6. MailServices2.6.1. sendMailSimple2.7. MiscServices2.7.1. generateUUID2.7.2. getHostinfo2.7.3. sleep2.8. StorageServices2.8.1.  ...2.8.1.1. Input parameters2.8.1.2. Output parameters2.8.1.2.1. ReturnCode type2.9. StringServices2.9.1. replaceRegEx2.10. XmlServices2.10.1. insertNodes2.10.2. insertNodes22.10.3. replaceNodes2.10.4. replaceNodes22.10.5. selectXPath2.10.6. setAttribute2.10.7. wrapInCDATAChapter 3. Available RESTful Services3.1. CVSInfoService3.2. FileInfoServiceChapter 4. XML Types4.1. 4.1.1. AntProperty type4.1.2. DateInfoType type4.1.3. FileResource type4.1.4. HostConnection type4.1.5. PatternElement type4.1.6. PatternSetType type4.1.7. ReturnCode type4.1.8. SelectorType typeBrutex XServices DocumentationBrian RosenbergerBrutex XServices DocumentationBrian RosenbergerCopyright © 2014 AbstractIn complex IT environments it is often necessary to integrate + different information systems with each other, exchange data between + software tools and automate actions based on events arising from user + interaction. Web Services is a popular way to make remote functions + available to a broad range of clients. A WebService is independent + from platforms and programming languages. XML Messages are exchanged + through common protocols like TCP/IP or SMTP, processed and returned + (request/ response paradigm).Because of their nature, WebServices are a great technology to + overcome system boundaries and to "orchestrate" your IT environment. + They make up the basis for SOA and are the pieces that assemble + automated business processes.XServices is a collection of pre-build WebServices with the + intention to avoid duplicate work and "re-inventing the wheel". The + historical base for XServices is the 'XBridgeNG' software, which + provided a set of Apache Ant Tasks with quite the same intention. The + available WebService operations are most likely the "most wanted" + ones, some of them for sure are "must have". This collection may + overlap with other libraries. In summary the current version contains + 8 WebServices with over 50 operations. + The copyright holders make no representation about the suitability of this document for any purpose. It is provided - as is + as is without expressed or implied warranty. - - - - - + + + + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -33,58 +36,41 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - - Apache Tomcat and Apache Ant are trademarks of the Apache - Software Foundation. + + Apache Tomcat and Apache Ant are trademarks of the Apache + Software Foundation. + Brutex XServices DocumentationBrutex XServices DocumentationTable of Contents1. Getting started 1.1. Installation 1.1.1. Securing with Basic Authentication 1.1.2. Limit access to 2. Available SOAP Services 2.1. ArchiveServices 2.1.1. gzip 2.1.2. bzip2FromArchive 2.1.3. bzip2 2.1.4. gzipFromArchive 2.1.5. gunzip 2.1.6. bunzip2 2.1.7. gunzipFromURL 2.1.8. bunzip2FromURL 2.1.9. zip 2.1.10. zipFromArchive 2.1.11. unzip 2.1.12. untar 2.1.13. unrar 2.2. DateServices 2.2.1. dateAdd 2.2.2. dateTimeDiff 2.2.3. dateTimeDiff 2.2.4. getDate 2.2.5. getDateExtended 2.2.6. formatDate 2.2.7. formatDateAdvanced 2.2.8. getInTimezone 2.2.9. getTimestamp 2.2.10. getTimestamp2 2.2.11. getTimezones 2.2.12. parseDate 2.2.13. parseDateAdvanced 2.3. ExecuteServices 2.3.1. rExec + 2.3.2. runCommand 2.3.3. runCommandAsync 2.3.4. runCommandAsyncWithArgs 2.3.5. runCommandWithArgs 2.3.6. runCommandWithSSH 2.3.7. runCommandWithSSHKeyAuth 2.3.8. runJavaScript 2.3.9. telnet 2.4. FileServices 2.4.1. downloadFile 2.4.2. encodeFile 2.5. JobServices 2.6. MailServices 2.6.1. sendMailSimple 2.7. MiscServices 2.7.1. generateUUID 2.7.2. getHostinfo 2.7.3. sleep 2.8. StorageServices 2.8.1. ... + 2.9. StringServices 2.9.1. replaceRegEx 2.10. XmlServices 2.10.1. insertNodes 2.10.2. insertNodes2 2.10.3. replaceNodes 2.10.4. replaceNodes2 2.10.5. selectXPath 2.10.6. setAttribute 2.10.7. wrapInCDATA 3. Available RESTful Services 3.1. CVSInfoService 3.2. FileInfoService 4. XML Types 4.1. 4.1.1. AntProperty type 4.1.2. DateInfoType type 4.1.3. FileResource type 4.1.4. HostConnection type 4.1.5. PatternElement type 4.1.6. PatternSetType type 4.1.7. ReturnCode type 4.1.8. SelectorType type Brutex XServices DocumentationBrutex XServices DocumentationList of Tables2.1. rExec + input parameters + 2.2. runCommand input parameters 2.3. runCommandWithSSH input parameters 2.4. telnet input parameters 2.5. Input parameters + + + + Getting startedGetting startedChapter 1. Getting started - Abstract - In complex IT environments it is often necessary to integrate - different information systems with each other, exchange data between - software tools and automate actions based on events arising from user - interaction. Web Services is a popular way to make remote functions - available to a broad range of clients. A WebService is independent - from platforms and programming languages. XML Messages are exchanged - through common protocols like TCP/IP or SMTP, processed and returned - (request/ response paradigm). - Because of their nature, WebServices are a great technology to - overcome system boundaries and to "orchestrate" your IT environment. - They make up the basis for SOA and are the pieces that assemble - automated business processes. - XServices is a collection of pre-build WebServices with the - intention to avoid duplicate work and "re-inventing the wheel". The - historical base for XServices is the 'XBridgeNG' software, which - provided a set of Apache Ant Tasks with quite the same intention. The - available WebService operations are most likely the "most wanted" - ones, some of them for sure are "must have". This collection may - overlap with other libraries. In summary the current version contains - 8 WebServices with over 50 operations. + This chapter describes the installation process. + Installation1.1. Installation - - - - Getting started - This chapter describes the installation process. - - - Installation - As of February 2013, XServices require Java 7. Older builds run against Java 5. - Apache Tomcat 7 - tbd. - In short: Deploy .WAR file to Apache Tomcat - Securing with Basic Authentication - There is a quick guide explaining Basic Authentication for Tomcat here: - http://oreilly.com/pub/a/java/archive/tomcat-tips.html?page=1 - + As of February 2013, XServices require Java 7. Older builds run against Java 5. + Apache Tomcat 7 + tbd. + In short: Deploy .WAR file to Apache Tomcat + Securing with Basic Authentication1.1.1. Securing with Basic Authentication + There is a quick guide explaining Basic Authentication for Tomcat here: + http://oreilly.com/pub/a/java/archive/tomcat-tips.html?page=1 [http://oreilly.com/pub/a/java/archive/tomcat-tips.html?page=1] + + + + + Limit access to1.1.2. Limit access to - - - Limit access to - Sometimes you'll only want to restrict access to to + Sometimes you'll only want to restrict access to to only specified host names or IP addresses. This way, only clients at @@ -92,21 +78,21 @@ Tomcat provides two configuration values for that: RemoteHostValve and - RemoteAddrValve. - These Valves allow you to filter requests by host name or + RemoteAddrValve. + These Valves allow you to filter requests by host name or by IP address, and to allow or deny hosts that match. The example below restricts access to the ArchiveService from any machine that is not - the local host. -
<Context
+				the local host.
+			<Context
 				path="/XService/ArchiveService"
 				...> <Valve
 				className="org.apache.catalina.valves.RemoteAddrValve"
 				allow="127.0.0.1" deny=""/> </Context>
-			
- If no allow pattern is given, then patterns that match +
+ If no allow pattern is given, then patterns that match the deny attribute patterns will be rejected, and all others will be allowed. @@ -114,47 +100,272 @@ patterns that match the allow attribute will be allowed, and all others will be denied. - - The <context> element must be placed into the + + The <context> element must be placed into the server.xml - file (into <engine><host>). - - + file (into <engine><host>). +
- - +
+
+ Available SOAP ServicesAvailable SOAP ServicesChapter 2. Available SOAP Services - Available Services - List of available web services and their operations. - ArchiveServices - The ArchiveService bundles file packing operations. Its + List of available web services and their operations. + ArchiveServices2.1. ArchiveServices + + The ArchiveService bundles file packing operations. Its WSDL is located at - http://server:port/XServices/ArchiveService?wsdl - + http://server:port/XServices/ArchiveService?wsdl - DateServices - The DateService bundles various date and time related operations. - - Its WSDL is located at http://server:port/XServices/DateService?wsdl + gzip2.1.1. gzip - XServices uses a date/time format as suggested by http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#dateTime, which is basically a subset of ISO8601. Most input parameters for date/time have to be provided as such. + Create a GNU zip archive. + Sample request: + +... + + Sample response: + +... + + + + + bzip2FromArchive2.1.2. bzip2FromArchive + + Create a new bzip2 archive from files located within another archive. + Sample request: + +... + + Sample response: + +... + + + + + bzip22.1.3. bzip2 + + Create a bzip2 archive. + Sample request: + +... + + Sample response: + +... + + + + + gzipFromArchive2.1.4. gzipFromArchive + + Create a new GNU zip archive from files located within another archive. + Sample request: + +... + + Sample response: + +... + + + + + gunzip2.1.5. gunzip + + Extract files from a GNU zip archive. + Sample request: + +... + + Sample response: + +... + + + + + bunzip22.1.6. bunzip2 + + Extract files from a bzip2 archive. + Sample request: + +... + + Sample response: + +... + + + + + gunzipFromURL2.1.7. gunzipFromURL + + Extract files from a GNU zip archive. The archive is located on the web (http/ https) + and will be downloaded automatically. + Sample request: + +... + + Sample response: + +... + + + + + bunzip2FromURL2.1.8. bunzip2FromURL + + Extract files from a bzip2 archive. The archive is located on the web (http/ https) + and will be downloaded automatically. + Sample request: + +... + + Sample response: + +... + + + + + zip2.1.9. zip + + Compress files and store them in a ZIP archive. + Sample request: + +... + + Sample response: + +... + + + + + zipFromArchive2.1.10. zipFromArchive + + Create a new ZIP archive from files located within another archive. + Sample request: + +... + + Sample response: + +... + + + + + unzip2.1.11. unzip + + Extract files from a zip archive. + Sample request: + +... + + Sample response: + +... + + + + + untar2.1.12. untar + + Extract files from a tarball archive. + Sample request: + +... + + Sample response: + +... + + + + + unrar2.1.13. unrar + + Extract files from a RAR archive. + Sample request: + +... + + Sample response: + +... + + + + + + + DateServices2.2. DateServices + + The DateService bundles various date and time related operations. + + Its WSDL is located at http://server:port/XServices/DateService?wsdl + + XServices uses a date/time format as suggested by http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#dateTime, which is basically a subset of ISO8601. Most input parameters for date/time have to be provided as such. Another date/time format, that is often used is defined by RFC822. The major difference to ISO8601 and the Xmlschema datetime format, is in the way how the time zone is specified. ISO8601 specifies a colon to be used to separate hour and minutes time shift. RFC822 does not use a separator. + • + ISO8601 (example: "2012-01-17T23:50:00+01:00") + • + RFC822 (example: "2012-01-17T23:50:00+0100") + + + dateAdd2.2.1. dateAdd - - ISO8601 (example: "2012-01-17T23:50:00+01:00") - - - RFC822 (example: "2012-01-17T23:50:00+0100") - - - - - getDate - Get current time and date. + Add or substract a time span from/ to a date. Sample request: -
+
+...
+
+	Sample response:
+	
+...
+
+
+Hints here
+
+	dateTimeDiff2.2.2. dateTimeDiff
+	
+	Calculate elapsed time between two dates. Returns the elapsed time in milliseconds.
+	Sample request:
+
+...
+
+	Sample response:
+	
+...
+
+
+Hints here
+
+	dateTimeDiff2.2.3. dateTimeDiff
+	
+	Calculate Fully elapsed units between two dates. Example: 4:15:10-4:15:55 in minutes = 0 and in seconds = 45.
+	Sample request:
+
+...
+
+	Sample response:
+	
+...
+
+
+Hints here
+
+	getDate2.2.4. getDate
+	
+	Get current time and date.
+	Sample request:
+
 <soapenv:Envelope 
 	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
 	xmlns:ws="http://ws.xservices.brutex.net">
@@ -163,9 +374,9 @@
       <ws:getDate/>
    </soapenv:Body>
 </soapenv:Envelop
-
+
Sample response: -
+	
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns1:getDateResponse xmlns:ns1="http://ws.xservices.brutex.net">
@@ -180,14 +391,14 @@
          </ns1:return>
       </ns1:getDateResponse>
    </soap:Body>
-</soap:Envelope>
- - +</soap:Envelope>
+
+
+ getDateExtended2.2.5. getDateExtended - getDateExtended - Get current time and date (extended Version). + Get current time and date (extended Version). Sample response: -
+		
 
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
@@ -204,43 +415,69 @@
    </soap:Body>
 </soap:Envelope>
 
-
- - +
+
+
+ formatDate2.2.6. formatDate - formatDate - + Transform date/time representation from ISO8601 or RFC822 format to - - - ISO8601 (example: "2012-01-17T23:50:00+01:00") - - - RFC822 (example: "2012-01-17T23:50:00+0100") - - - YYYYMMDD (example: "2012/01/17") - - - DDMMYYYY (example: "17.01.2012") - - + • + ISO8601 (example: "2012-01-17T23:50:00+01:00") + • + RFC822 (example: "2012-01-17T23:50:00+0100") + • + YYYYMMDD (example: "2012/01/17") + • + DDMMYYYY (example: "17.01.2012") + + + + formatDateAdvanced2.2.7. formatDateAdvanced - - - getInTimezone + + Transform Time/ Date representation. Formats a date with a free form pattern. Uses SimpleDateFormat patterns. + + + The following pattern letters are defined (all other characters from 'A' to 'Z' and from 'a' to 'z' are reserved): + + Letter Date or Time Component Presentation Examples + G Era designator Text AD + y Year Year 1996; 96 + M Month in year Month July; Jul; 07 + w Week in year Number 27 + W Week in month Number 2 + D Day in year Number 189 + d Day in month Number 10 + F Day of week in month Number 2 + E Day in week Text Tuesday; Tue + a Am/pm marker Text PM + H Hour in day (0-23) Number 0 + k Hour in day (1-24) Number 24 + K Hour in am/pm (0-11) Number 0 + h Hour in am/pm (1-12) Number 12 + m Minute in hour Number 30 + s Second in minute Number 55 + S Millisecond Number 978 + z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 + Z Time zone RFC 822 time zone -0800 + + + + getInTimezone2.2.8. getInTimezone + Changes the date/time presentation to another time zone. The date/time object itself is not changed. For example '2012-01-05T22:45:11-06:30' is presented as '2012-01-06T07:15:11+02:00' from Helsinki time zone perspective. + + The web service operation "getTimezones" returns a full list of all supported time zones. + + getTimestamp2.2.9. getTimestamp - The web service operation "getTimezones" returns a full list of all supported time zones. - - - getTimestamp - Get current timestamp in milliseconds (epoch). + Get current timestamp in milliseconds (epoch). Sample request: -
+
 
 <soapenv:Envelope 
 	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
@@ -251,25 +488,25 @@
    </soapenv:Body>
 </soapenv:Envelop
 
-
+
Sample response: -
+
 
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns1:getTimestampResponse xmlns:ns1="http://ws.xservices.brutex.net">
-         <ns1:return>1325488875703</ns1:return>
+         <ns1:return>1325488875703</ns1:return>
       </ns1:getTimestampResponse>
    </soap:Body>
 </soap:Envelope>
-
- - +
+
+
+ getTimestamp22.2.10. getTimestamp2 - getTimestamp2 - Get current timestamp in seconds (unix timestamp). + Get current timestamp in seconds (unix timestamp). Sample request: -
+
 
 <soapenv:Envelope 
 	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
@@ -280,32 +517,32 @@
    </soapenv:Body>
 </soapenv:Envelop
 
-
+
Sample response: -
+
 
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns1:getTimestamp2Response xmlns:ns1="http://ws.xservices.brutex.net">
-         <ns1:return>1325488876</ns1:return>
+         <ns1:return>1325488876</ns1:return>
       </ns1:getTimestamp2Response>
    </soap:Body>
 </soap:Envelope>
-
- - - - getTimezones +
+
+
+ getTimezones2.2.11. getTimezones + Returns all time zones this implementation (more precisely your JVM) is aware of. You have to use the id to refer to a time zone, the display name is specific to the localisation of your JVM. - - The offset shows the time difference to Greenwich Time (GMT), also known as UTC. - The daylight saving time is not taken into account for the offset. - Sample response -
+	
+	The offset shows the time difference to Greenwich Time (GMT), also known as UTC. 
+	The daylight saving time is not taken into account for the offset.
+	Sample response
+	
 	<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns1:getTimezonesResponse xmlns:ns1="http://ws.xservices.brutex.net">
@@ -3334,111 +3571,98 @@
       </ns1:getTimezonesResponse>
    </soap:Body>
 </soap:Envelope>
-
- - - +
+
+
+ parseDate2.2.12. parseDate + + + Converts a string into date using pre-defined date formats + • + ISO8601 (example: "2012-01-17T23:50:00+01:00") + • + RFC822 (example: "2012-01-17T23:50:00+0100") + • + YYYYMMDD (example: "2012/01/17") + • + DDMMYYYY (example: "17.01.2012") + + + + parseDateAdvanced2.2.13. parseDateAdvanced + + + Converts a string into date using any format. - ExecuteServices - The ExecuteService bundles local and remote command + + +
+ ExecuteServices2.3. ExecuteServices + + The ExecuteService bundles local and remote command execution operations. Its WSDL is located at - http://server:port/XServices/ExecuteService?wsdl - - rExec + http://server:port/XServices/ExecuteService?wsdl + rExec + 2.3.1. rExec + - provides remote execution facilities with authentication based on - user names and passwords. - - Input parameters + provides remote execution facilities with authentication based on + user names and passwords. + 2.3.1.1. Input parameters + - - - rExec + + Table 2.1. rExec input parameters - - - - - - - - - parameter - type - required - description - - - - - host - HostConnection - Yes - + parametertyperequireddescriptionhostHostConnectionYes Host where to execute the command. See - HostConnection + HostConnection . - - - - command - String - No - Any command including arguments - - - timeout - Long - Yes - Timeout in milliseconds. The command is forcefully terminated when timeout is reached. - - - - + commandStringNoAny command including argumentstimeoutLongYesTimeout in milliseconds. The command is forcefully terminated when timeout is reached. + + + 2.3.1.2. Output parameters + + 2.3.1.2.1. ReturnCode type - - Output parameters - - - ReturnCode type - + The ReturnCode type is used as the generic answer type for most of the BruteXservices operations. - - + + The defining Java class is - - net.brutex.xservices.types.ReturnCode - + + net.brutex.xservices.types.ReturnCode + [javadoc/net/brutex/xservices/types/ReturnCode.html] . - - Schema definition -
+	
+	Schema definition
+	
 <xs:complexType name="ReturnCodeType">
     <xs:sequence>
         <xs:element name="returnCode" type="xs:int"/>
         <xs:element minOccurs="0" name="stdOut" type="xs:string"/>
         <xs:element minOccurs="0" name="stdErr" type="xs:string"/>
-        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
+        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
     </xs:sequence>
 </xs:complexType>
-	
+
- Example XML -
+	Example XML
+	
 		<ReturnCode
 		xmlns:ns2="http://ws.xservices.brutex.net">
 		<returnCode>0</returnCode>
 		<stdOut/>
 		<stdErr/>
 		<propertyList>
-		
+		
 			See
-			tns:antProperty
+			tns:antProperty
 			for details about the <propertyList> elements.
-		
+		
 		<name>key1</name>
 		<value>value1</value>
 		</propertyList>
@@ -3447,102 +3671,66 @@
 		<value>value2</value>
 		</propertyList>
 		</ReturnCode>
-	
- +
+
+
+
+ runCommand2.3.2. runCommand - - - runCommand - Run an executable with arguments on the server providing the web + Run an executable with arguments on the server providing the web service. The command is run within the environment and under the user - privileges of the user who is running the Tomcat Server. - - Input parameters - - - - runCommand input parameters - - - - - - - - parameter - type - required - description - - - - - executable - String - Yes - Command to be run. The command may be specified with full - path using forward slash "/" as path separator. - - - argline - String - No - Any command line arguments - - - timeout - Long - Yes - Timeout in milliseconds. The command is forcefully terminated when timeout is reached. - - - - - - - - Output parameters - - - ReturnCode type + privileges of the user who is running the Tomcat Server. + 2.3.2.1. Input parameters + + + + Table 2.2. runCommand input parametersparametertyperequireddescriptionexecutableStringYesCommand to be run. The command may be specified with full + path using forward slash "/" as path separator.arglineStringNoAny command line argumentstimeoutLongYesTimeout in milliseconds. The command is forcefully terminated when timeout is reached. + + + 2.3.2.2. Output parameters + + + 2.3.2.2.1. ReturnCode type + The ReturnCode type is used as the generic answer type for most of the BruteXservices operations. - - + + The defining Java class is - - net.brutex.xservices.types.ReturnCode - + + net.brutex.xservices.types.ReturnCode + [javadoc/net/brutex/xservices/types/ReturnCode.html] . - - Schema definition -
+	
+	Schema definition
+	
 <xs:complexType name="ReturnCodeType">
     <xs:sequence>
         <xs:element name="returnCode" type="xs:int"/>
         <xs:element minOccurs="0" name="stdOut" type="xs:string"/>
         <xs:element minOccurs="0" name="stdErr" type="xs:string"/>
-        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
+        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
     </xs:sequence>
 </xs:complexType>
-	
+
- Example XML -
+	Example XML
+	
 		<ReturnCode
 		xmlns:ns2="http://ws.xservices.brutex.net">
 		<returnCode>0</returnCode>
 		<stdOut/>
 		<stdErr/>
 		<propertyList>
-		
+		
 			See
-			tns:antProperty
+			tns:antProperty
 			for details about the <propertyList> elements.
-		
+		
 		<name>key1</name>
 		<value>value1</value>
 		</propertyList>
@@ -3551,14 +3739,14 @@
 		<value>value2</value>
 		</propertyList>
 		</ReturnCode>
-	
+
- - - - +
+
+ + Sample request: Start Windows Command Interpreter and print "Hello World" to STDOUT. -
+	
 	<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
    <soapenv:Header/>
    <soapenv:Body>
@@ -3569,10 +3757,10 @@
       </ws:runCommand>
    </soapenv:Body>
 </soapenv:Envelope>
-	
+
Sample response: -
+	
 	<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns2:runCommandResponse xmlns:ns2="http://ws.xservices.brutex.net">
@@ -3595,11 +3783,11 @@
          </return>
       </ns2:runCommandResponse>
    </soap:Body>
-</soap:Envelope>
- - +</soap:Envelope>
+ + Sample request: Start notepad.exe and close it after 15 seconds. -
+
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
    <soapenv:Header/>
    <soapenv:Body>
@@ -3609,100 +3797,84 @@ Sample request: Start notepad.exe and close it after 15 seconds.
          <timeout>15000</timeout>
       </ws:runCommand>
    </soapenv:Body>
-</soapenv:Envelope>
- - - runCommandWithSSH - Executes a command through a SSH session. +</soapenv:Envelope>
+
+ runCommandAsync2.3.3. runCommandAsync - Input parameters + Run an executable with arguments on the server providing the web + service and don't wait for the executable to finish. + The command is run within the environment and under the user + privileges of the user who is running the Tomcat Server. + + runCommandAsyncWithArgs2.3.4. runCommandAsyncWithArgs + + Run an executable with arguments on the server providing the web + service and don't wait for the executable to finish. + The command is run within the environment and under the user + privileges of the user who is running the Tomcat Server. + + runCommandWithArgs2.3.5. runCommandWithArgs + + Run an executable with arguments on the server providing the web + service. The command is run within the environment and under the user + privileges of the user who is running the Tomcat Server. + + runCommandWithSSH2.3.6. runCommandWithSSH + + Executes a command through a SSH session. + 2.3.6.1. Input parameters + - - - runCommandWithSSH input parameters - - - - - - - - parameter - type - required - description - - - - - host - HostConnection - Yes - + + Table 2.3. runCommandWithSSH input parametersparametertyperequireddescriptionhostHostConnectionYes Host to connect to (see: - tns:HostConnection + tns:HostConnection ) - - - - command - String - No - The command to execute. - - - timeout - Long - Yes - Timeout in milliseconds. The command is forcefully terminated when timeout is reached. - - - - + commandStringNoThe command to execute.timeoutLongYesTimeout in milliseconds. The command is forcefully terminated when timeout is reached. + + + 2.3.6.2. Output parameters + + 2.3.6.2.1. ReturnCode type - - Output parameters - - - ReturnCode type - + The ReturnCode type is used as the generic answer type for most of the BruteXservices operations. - - + + The defining Java class is - - net.brutex.xservices.types.ReturnCode - + + net.brutex.xservices.types.ReturnCode + [javadoc/net/brutex/xservices/types/ReturnCode.html] . - - Schema definition -
+	
+	Schema definition
+	
 <xs:complexType name="ReturnCodeType">
     <xs:sequence>
         <xs:element name="returnCode" type="xs:int"/>
         <xs:element minOccurs="0" name="stdOut" type="xs:string"/>
         <xs:element minOccurs="0" name="stdErr" type="xs:string"/>
-        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
+        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
     </xs:sequence>
 </xs:complexType>
-	
+
- Example XML -
+	Example XML
+	
 		<ReturnCode
 		xmlns:ns2="http://ws.xservices.brutex.net">
 		<returnCode>0</returnCode>
 		<stdOut/>
 		<stdErr/>
 		<propertyList>
-		
+		
 			See
-			tns:antProperty
+			tns:antProperty
 			for details about the <propertyList> elements.
-		
+		
 		<name>key1</name>
 		<value>value1</value>
 		</propertyList>
@@ -3711,13 +3883,13 @@ Sample request: Start notepad.exe and close it after 15 seconds.
 		<value>value2</value>
 		</propertyList>
 		</ReturnCode>
-	
+
- - - - Sample Request: -
+
+	
+	2.3.6.3. Sample Request:
+		
+		
 	
       <ws:runCommandWithSSH>
          <host>
@@ -3729,109 +3901,70 @@ Sample request: Start notepad.exe and close it after 15 seconds.
          <command>ls /etc/</command>
          <timeout>30000</timeout>
       </ws:runCommandWithSSH>
-	
+
+
+
+ runCommandWithSSHKeyAuth2.3.7. runCommandWithSSHKeyAuth - - - telnet - Runs a telnet session with an "expect shell" like behaviour. + Executes a command through a SSH session. - Input parameters - - - - telnet input parameters - - - - - - - - parameter - type - required - description - - - - - host - HostConnection - Yes - Host to connect to (see: tns:HostConnection) - - - prompt - String - No - The prompt string to expect after login. This is used to recognize when - the session is open. - - - command - String - No - The command to execute. - - - expect - String - No - The prompt to expect after the command has been executed successfully. - - - timeout - Long - Yes - Timeout in milliseconds. The command is forcefully terminated when timeout is reached. - - - - - + + runJavaScript2.3.8. runJavaScript + Execute a JavaScript and or Java program using Mozilla Rhino JIT-Compiler. + + telnet2.3.9. telnet - Output parameters + Runs a telnet session with an "expect shell" like behaviour. + 2.3.9.1. Input parameters + - ReturnCode type + + Table 2.4. telnet input parametersparametertyperequireddescriptionhostHostConnectionYesHost to connect to (see: tns:HostConnection)promptStringNoThe prompt string to expect after login. This is used to recognize when + the session is open.commandStringNoThe command to execute.expectStringNoThe prompt to expect after the command has been executed successfully.timeoutLongYesTimeout in milliseconds. The command is forcefully terminated when timeout is reached. + + + 2.3.9.2. Output parameters + + 2.3.9.2.1. ReturnCode type + The ReturnCode type is used as the generic answer type for most of the BruteXservices operations. - - + + The defining Java class is - - net.brutex.xservices.types.ReturnCode - + + net.brutex.xservices.types.ReturnCode + [javadoc/net/brutex/xservices/types/ReturnCode.html] . - - Schema definition -
+	
+	Schema definition
+	
 <xs:complexType name="ReturnCodeType">
     <xs:sequence>
         <xs:element name="returnCode" type="xs:int"/>
         <xs:element minOccurs="0" name="stdOut" type="xs:string"/>
         <xs:element minOccurs="0" name="stdErr" type="xs:string"/>
-        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
+        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
     </xs:sequence>
 </xs:complexType>
-	
+
- Example XML -
+	Example XML
+	
 		<ReturnCode
 		xmlns:ns2="http://ws.xservices.brutex.net">
 		<returnCode>0</returnCode>
 		<stdOut/>
 		<stdErr/>
 		<propertyList>
-		
+		
 			See
-			tns:antProperty
+			tns:antProperty
 			for details about the <propertyList> elements.
-		
+		
 		<name>key1</name>
 		<value>value1</value>
 		</propertyList>
@@ -3840,13 +3973,13 @@ Sample request: Start notepad.exe and close it after 15 seconds.
 		<value>value2</value>
 		</propertyList>
 		</ReturnCode>
-	
- +
+
+
+ 2.3.9.3. Sample Request: - - Sample Request: -
+	
 	
 	 <ws:telnet>
          <host>
@@ -3860,19 +3993,19 @@ Sample request: Start notepad.exe and close it after 15 seconds.
          <expect>enberger&gt;</expect>
          <timeout>60000</timeout>
       </ws:telnet>
-	
+
+
+
+
+ FileServices2.4. FileServices + The FileServces bundles various file operations. Its WSDL is located at + http://server:port/XServices/FileService?wsdl + downloadFile2.4.1. downloadFile - - - FileServices - The FileServces bundles various file operations. Its WSDL is located at - http://server:port/XServices/FileService?wsdl - - downloadFile - Downloads a file as base64 encoded. + Downloads a file as base64 encoded. Sample request: -
+
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
    <soapenv:Header/>
    <soapenv:Body>
@@ -3885,9 +4018,9 @@ Sample request: Start notepad.exe and close it after 15 seconds.
       </ws:downloadFile>
    </soapenv:Body>
 </soapenv:Envelope>
-
+
Sample response: -
+	
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns2:downloadFileResponse xmlns:ns2="http://ws.xservices.brutex.net">
@@ -3897,15 +4030,15 @@ Sample request: Start notepad.exe and close it after 15 seconds.
          </return>
       </ns2:downloadFileResponse>
    </soap:Body>
-</soap:Envelope>
- -Encoding files as base64 is very memory consuming! +</soap:Envelope>
+
+Encoding files as base64 is very memory consuming! +
+ encodeFile2.4.2. encodeFile - - encodeFile - Encodes a file as base64. + Encodes a file as base64. Sample request: - + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net"> <soapenv:Header/> <soapenv:Body> @@ -3917,9 +4050,9 @@ Encoding files as base64 is very memory consuming! </ws:encodeFile> </soapenv:Body> </soapenv:Envelope> - + Sample response: -
+	
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns2:encodeFileResponse xmlns:ns2="http://ws.xservices.brutex.net">
@@ -3929,206 +4062,171 @@ Encoding files as base64 is very memory consuming!
          </return>
       </ns2:encodeFileResponse>
    </soap:Body>
-</soap:Envelope>
- -DEPRECATED: Encoding files as base64 is very memory consuming! +</soap:Envelope>
+
+DEPRECATED: Encoding files as base64 is very memory consuming! +
+
+ JobServices2.5. JobServices - + The JobService bundles re-occuring or scheduled operations. Its WSDL is located at + http://server:port/XServices/JobService?wsdl - JobServices - The JobService bundles re-occuring or scheduled operations. Its WSDL is located at - http://server:port/XServices/JobService?wsdl - - - - MailServices - The MailService contains mail send and receive operations. Its WSDL is located at - http://server:port/XServices/MailService?wsdl - - sendMailSimple - Send email. - - - - MiscServices - The MiscService bundles various operations. Its WSDL is located at - http://server:port/XServices/MiscService?wsdl - - generateUUID - Generates a UUID that represents a 128-bit value. This operation does not require any + + MailServices2.6. MailServices + + The MailService contains mail send and receive operations. Its WSDL is located at + http://server:port/XServices/MailService?wsdl + sendMailSimple2.6.1. sendMailSimple + + Send email. + + + MiscServices2.7. MiscServices + + The MiscService bundles various operations. Its WSDL is located at + http://server:port/XServices/MiscService?wsdl + generateUUID2.7.1. generateUUID + + Generates a UUID that represents a 128-bit value. This operation does not require any input parameters. The output has the format: - + 0xFFFFFFFF00000000 time_low 0x00000000FFFF0000 time_mid 0x000000000000F000 version 0x0000000000000FFF time_hi - + The least significant long consists of the following unsigned fields: - + 0xC000000000000000 variant 0x3FFF000000000000 clock_seq 0x0000FFFFFFFFFFFF node - + Sample response: - + <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns1:generateUUIDResponse xmlns:ns1="http://ws.xservices.brutex.net"> - <ns1:return>33b9e5c8-9102-423b-88af-bbee479ebea8</ns1:return> + <ns1:return>33b9e5c8-9102-423b-88af-bbee479ebea8</ns1:return> </ns1:generateUUIDResponse> </soap:Body> </soap:Envelope> - - - - - getHostinfo - Collect information about a host address. + + + + getHostinfo2.7.2. getHostinfo + + Collect information about a host address. Sample request: - + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net"> <soapenv:Header/> <soapenv:Body> <ws:getHostinfo> - <ws:hostname>google.com</ws:hostname> + <ws:hostname>google.com</ws:hostname> </ws:getHostinfo> </soapenv:Body> </soapenv:Envelope> - + Sample response: - + <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns1:getHostinfoResponse xmlns:ns1="http://ws.xservices.brutex.net"> <ns1:return> - <ns1:domain>1e100.net</ns1:domain> - <ns1:ip4>173.194.66.105</ns1:ip4> - <ns1:ip6>::</ns1:ip6> - <ns1:name>we-in-f105</ns1:name> + <ns1:domain>1e100.net</ns1:domain> + <ns1:ip4>173.194.66.105</ns1:ip4> + <ns1:ip6>::</ns1:ip6> + <ns1:name>we-in-f105</ns1:name> </ns1:return> </ns1:getHostinfoResponse> </soap:Body> </soap:Envelope> - - - - - sleep - Delays the response by the given minutes/ seconds. Please note, + + + + sleep2.7.3. sleep + + Delays the response by the given minutes/ seconds. Please note, that it may take more time to perform the server roundtrip (network delays, parsing, etc.). Also you may have a network timeout set up in Tomcat or your client that prevents this web service to respond correctly. - - - - - StorageServices - The StorageService will provide get/ push operations to store and retrieve data from various backends. + + + + StorageServices2.8. StorageServices + + The StorageService will provide get/ push operations to store and retrieve data from various backends. This is currently under development and not yet released. Its WSDL is located at - http://server:port/XServices/StorageService?wsdl - - ... + http://server:port/XServices/StorageService?wsdl + ... + 2.8.1.  ... + - Description here - - Input parameters + Description here + 2.8.1.1. Input parameters + - - - Input parameters - - - - - - - - - parameter - type - required - description - - - - - host - HostConnection - Yes - + + Table 2.5. Input parameters + parametertyperequireddescriptionhostHostConnectionYes Host where to execute the command. See - HostConnection + HostConnection . - - - - command - String - No - Any command including arguments - - - timeout - Long - Yes - Timeout in milliseconds. The command is forcefully terminated when timeout is reached. - - - - + commandStringNoAny command including argumentstimeoutLongYesTimeout in milliseconds. The command is forcefully terminated when timeout is reached. + + + 2.8.1.2. Output parameters + + 2.8.1.2.1. ReturnCode type - - Output parameters - - - ReturnCode type - + The ReturnCode type is used as the generic answer type for most of the BruteXservices operations. - - + + The defining Java class is - - net.brutex.xservices.types.ReturnCode - + + net.brutex.xservices.types.ReturnCode + [javadoc/net/brutex/xservices/types/ReturnCode.html] . - - Schema definition -
+	
+	Schema definition
+	
 <xs:complexType name="ReturnCodeType">
     <xs:sequence>
         <xs:element name="returnCode" type="xs:int"/>
         <xs:element minOccurs="0" name="stdOut" type="xs:string"/>
         <xs:element minOccurs="0" name="stdErr" type="xs:string"/>
-        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
+        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
     </xs:sequence>
 </xs:complexType>
-	
+
- Example XML -
+	Example XML
+	
 		<ReturnCode
 		xmlns:ns2="http://ws.xservices.brutex.net">
 		<returnCode>0</returnCode>
 		<stdOut/>
 		<stdErr/>
 		<propertyList>
-		
+		
 			See
-			tns:antProperty
+			tns:antProperty
 			for details about the <propertyList> elements.
-		
+		
 		<name>key1</name>
 		<value>value1</value>
 		</propertyList>
@@ -4137,23 +4235,23 @@ DEPRECATED: Encoding files as base64 is very memory consuming!
 		<value>value2</value>
 		</propertyList>
 		</ReturnCode>
-	
- +
+
+
+
- +
+ StringServices2.9. StringServices - - - StringServices - The StringService provides String manipulation capabilities. + The StringService provides String manipulation capabilities. Its WSDL is located at - http://server:port/XServices/StringService?wsdl - - replaceRegEx - Search and Replace using regular expression. + http://server:port/XServices/StringService?wsdl + replaceRegEx2.9.1. replaceRegEx + + Search and Replace using regular expression. Sample request: - + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net"> <soapenv:Header/> @@ -4166,9 +4264,9 @@ xmlns:ws="http://ws.xservices.brutex.net"> </ws:replaceRegEx> </soapenv:Body> </soapenv:Envelope> - + Sample response: -
+	
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns2:replaceRegExResponse xmlns:ns2="http://ws.xservices.brutex.net">
@@ -4178,24 +4276,24 @@ xmlns:ws="http://ws.xservices.brutex.net">
          </return>
       </ns2:replaceRegExResponse>
    </soap:Body>
-</soap:Envelope>
- -Allowed regexflags are case-insensitive (i) and global search (g). - +</soap:Envelope>
+
+Allowed regexflags are case-insensitive (i) and global search (g). +
- - - XmlServices - The XmlService provides operations to manipulate XML structures. +
+ XmlServices2.10. XmlServices + + The XmlService provides operations to manipulate XML structures. Its WSDL is located at - http://server:port/XServices/XmlService?wsdl - - insertNodes - Insert an xml fragment into other elements specified by an XPath expression. + http://server:port/XServices/XmlService?wsdl + insertNodes2.10.1. insertNodes + + Insert an xml fragment into other elements specified by an XPath expression. This operation is namespace aware. Sample request: -
+
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
    <soapenv:Header/>
    <soapenv:Body>
@@ -4230,9 +4328,9 @@ Allowed regexflags are case-insensitive (i) and global search (g).
       </ws:insertNodes>
    </soapenv:Body>
 </soapenv:Envelope>
-
+
Sample response: -
+	
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns2:insertNodesResponse xmlns:ns2="http://ws.xservices.brutex.net">
@@ -4254,28 +4352,28 @@ Allowed regexflags are case-insensitive (i) and global search (g).
       </ns2:insertNodesResponse>
    </soap:Body>
 </soap:Envelope>
-
- - - - insertNodes2 - Insert an xml fragment into xml resource (i.e. file, URL) specified by an XPath expression. +
+
+
+ insertNodes22.10.2. insertNodes2 + + Insert an xml fragment into xml resource (i.e. file, URL) specified by an XPath expression. This operation is namespace aware. Sample request: -
-...
+ +... Sample response: -
-...
- - - - replaceNodes - Replace an xml fragment with another xml fragment. This operation is namespace aware. + +... +
+
+ replaceNodes2.10.3. replaceNodes + + Replace an xml fragment with another xml fragment. This operation is namespace aware. Sample request: -
+
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:ws="http://ws.xservices.brutex.net">
    <soapenv:Header/>
@@ -4312,9 +4410,9 @@ xmlns:ws="http://ws.xservices.brutex.net">
       </ws:replaceNodes>
    </soapenv:Body>
 </soapenv:Envelope>
-
+
Sample response: -
+	
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns2:replaceNodesResponse xmlns:ns2="http://ws.xservices.brutex.net">
@@ -4335,29 +4433,29 @@ xmlns:ws="http://ws.xservices.brutex.net">
          </books>]]></return>
       </ns2:replaceNodesResponse>
    </soap:Body>
-</soap:Envelope>
- - - - replaceNodes2 - Replace an xml fragment with another xml fragment read from a resource (i.e. file, URL). This operation is namespace aware. +</soap:Envelope>
+
+
+ replaceNodes22.10.4. replaceNodes2 + + Replace an xml fragment with another xml fragment read from a resource (i.e. file, URL). This operation is namespace aware. Sample request: -
+
 ...
-
+
Sample response: -
-...
- - - - selectXPath - Selects xmlfragements, nodes, attribute or text from xml data using an XPath expression. - This function requires namespaces to be declared correctly. + +... +
+
+ selectXPath2.10.5. selectXPath + Selects xmlfragements, nodes, attribute or text from xml data using an XPath expression. + This function requires namespaces to be declared correctly. + Sample request: -
+
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:ws="http://ws.xservices.brutex.net">
    <soapenv:Header/>
@@ -4401,9 +4499,9 @@ xmlns:ws="http://ws.xservices.brutex.net">
       </ws:selectXPath>
    </soapenv:Body>
 </soapenv:Envelope>
-
+
Sample response: -
+	
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns2:selectXPathResponse xmlns:ns2="http://ws.xservices.brutex.net">
@@ -4415,15 +4513,15 @@ xmlns:ws="http://ws.xservices.brutex.net">
       </ns2:selectXPathResponse>
    </soap:Body>
 </soap:Envelope>
-
- - - - setAttribute - Set an attribute into elements matched by an XPath expression. +
+ + + setAttribute2.10.6. setAttribute + Set an attribute into elements matched by an XPath expression. + Sample request: -
+
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
    <soapenv:Header/>
    <soapenv:Body>
@@ -4462,9 +4560,9 @@ xmlns:ws="http://ws.xservices.brutex.net">
       </ws:setAttribute>
    </soapenv:Body>
 </soapenv:Envelope>
-
+
Sample response: -
+	
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns2:setAttributeResponse xmlns:ns2="http://ws.xservices.brutex.net">
@@ -4486,17 +4584,17 @@ xmlns:ws="http://ws.xservices.brutex.net">
       </ns2:setAttributeResponse>
    </soap:Body>
 </soap:Envelope>
-
- - - - wrapInCDATA - Simply wraps any data fragment into <![CDATA[ ... ]]> section. This can be useful if you +
+ + + wrapInCDATA2.10.7. wrapInCDATA + + Simply wraps any data fragment into <![CDATA[ ... ]]> section. This can be useful if you want to preserve indentation or line breaks. - - + + Sample request: -
+
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:ws="http://ws.xservices.brutex.net">
    <soapenv:Header/>
@@ -4506,9 +4604,9 @@ xmlns:ws="http://ws.xservices.brutex.net">
       </ws:wrapInCDATA>
    </soapenv:Body>
 </soapenv:Envelope>
-
+
Sample response: -
+	
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
       <ns2:wrapInCDATAResponse xmlns:ns2="http://ws.xservices.brutex.net">
@@ -4516,102 +4614,128 @@ xmlns:ws="http://ws.xservices.brutex.net">
       </ns2:wrapInCDATAResponse>
    </soap:Body>
 </soap:Envelope>
-
- - +
+ + + +
- - - + Available RESTful ServicesAvailable RESTful ServicesChapter 3. Available RESTful Services - XML Types - This chapter bundles the documentation for common XML types used - by XServices web service. + List of available web services and their operations. + CVSInfoService3.1. CVSInfoService + + RESTful service to query a CVS repository, search files and content. Includes caching mechanism. + + Endpoint address: http://localhost:8080/XServices/cvsinfo +WADL : http://localhost:8080/XServices/cvsinfo?_wadl + + + -AntProperty type - The AntProperty type defines a list of key/value pairs. - + + FileInfoService3.2. FileInfoService + + The FileInfoService allows listing/ searching/ browsing and download of files and directories. Includes caching mechanism. + + Endpoint address: http://localhost:8080/XServices/fileinfo +WADL : http://localhost:8080/XServices/fileinfo?_wadl + + + + + XML TypesXML TypesChapter 4. XML Types + + + This chapter bundles the documentation for common XML types used + by XServices web service. + + + AntProperty type4.1.1. AntProperty type + + The AntProperty type defines a list of key/value pairs. + The defining Java class is - - net.brutex.xservices.types.AntProperty - + + net.brutex.xservices.types.AntProperty + [javadoc/net/brutex/xservices/types/AntProperty.html] . - + -
+			
 <xs:complexType name="antProperty">
    <xs:sequence>
       <xs:element name="name" type="xs:string"/>
       <xs:element name="value" type="xs:string"/>
    </xs:sequence>
 </xs:complexType>
-			
+
-
+			
 <AntProperty>
     <name>key2</name>
     <value>value2</value>
 </AntProperty>
-			
- - - DateInfoType type - Different presentation of a date time value. +
+
+ DateInfoType type4.1.2. DateInfoType type + Different presentation of a date time value. + The defining Java class is - - net.brutex.xservices.types.DateInfoType - + + net.brutex.xservices.types.DateInfoType + [javadoc/net/brutex/xservices/types/DateInfoType.html] . + - + + FileResource type4.1.3. FileResource type - -FileResource type - The FileResource type defines an URI to a file with optional on-the-fly decompression. - + The FileResource type defines an URI to a file with optional on-the-fly decompression. + The defining Java class is - - net.brutex.xservices.types.FileResource - + + net.brutex.xservices.types.FileResource + [javadoc/net/brutex/xservices/types/FileResource.html] . - + -
+			
 <xs:complexType name="FileResourceType">
 	<xs:sequence>
     	<xs:element default="FILE" name="type" type="tns:type"/>
         <xs:element name="uri" type="xs:string"/>
    </xs:sequence>
 </xs:complexType>
-			
- Available types: - FILE: URI points to a local file resource. Examples: c:\temp\something.txt, c:/dir/another.file, /home/brian/file - URL: File from URL (http, https, ftp, ...). Example: http://brutex.net/file.pdf - GZIP and BZIP2: File from a local file system with on-the-fly decompression. -
+			
+			Available types:
+			FILE: URI points to a local file resource. Examples: c:\temp\something.txt, c:/dir/another.file, /home/brian/file		
+			URL: File from URL (http, https, ftp, ...). Example: http://brutex.net/file.pdf
+			GZIP and BZIP2: File from a local file system with on-the-fly decompression.
+			
 <resource>
 	<type>FILE</type>
     <uri>c:\temp\xservices.war</uri>
 </resource>
-			
- - - HostConnection type - The HostConnection type identifies a server resource and login - credentials. +
+ + HostConnection type4.1.4. HostConnection type + The HostConnection type identifies a server resource and login + credentials. + The defining Java class is - - net.brutex.xservices.types.HostConnection - + + net.brutex.xservices.types.HostConnection + [javadoc/net/brutex/xservices/types/HostConnection.html] . - - Schema definition -
+	
+	Schema definition
+	
 <xs:complexType name="connection">
    <xs:sequence>
       <xs:element name="hostname" type="xs:string"/>
@@ -4621,9 +4745,9 @@ FileResource type
    </xs:sequence>
 </xs:complexType>
 
-	
- Example XML -
+	
+	Example XML
+	
 <host>
    <hostname>server.brutex.net</hostname>
    <port>512</port> <!-- default rExec port -->
@@ -4632,123 +4756,123 @@ FileResource type
    <password>somepass</password>
 </host>
 
-	
- - - PatternElement type - The PatternElement type defines single string pattern for file/ - directory matching. +
+
+ PatternElement type4.1.5. PatternElement type + The PatternElement type defines single string pattern for file/ + directory matching. + The defining Java class is - - net.brutex.xservices.types.PatternElement - + + net.brutex.xservices.types.PatternElement + [javadoc/net/brutex/xservices/types/PatternElement.html] . - - + + These patterns look exactly like those used in Apache Ant - Patterns. + Patterns [http://ant.apache.org/manual/dirtasks.html#patterns]. The '*' matches zero or more characters and the '?' will match a single character. Both symbols can be combined in one pattern. The '**' symbol can be used to match any directory deepth. - - Some example patterns: - - **/mydir/** - - Match all file that are located in any directory that has + + Some example patterns: + + **/mydir/** + + Match all file that are located in any directory that has "mydir" string in its pathname. Also applies to files with - "mydir" in their name. - - /mydir/ - - The + "mydir" in their name. + + /mydir/ + + The parser will automatically append an '**' symbol, thus the resulting pattern is - /mydir/**. + /mydir/**. All files below the "/mydir/" directory (including its sub-directories will be chosen. - - - The pattern is OS independent. You should always use + + Note + The pattern is OS independent. You should always use "/" as path separator, even on windows based systems. - - - Schema definition -
<xs:simpleType name="patternElement">
+		
+	
+	Schema definition
+	<xs:simpleType name="patternElement">
     <xs:restriction base="xs:string"/>
-</xs:simpleType>
- - Example XML -
<PatternElement>**/*</PatternElement>
+</xs:simpleType>
+ Example XML + <PatternElement>**/*</PatternElement> +
+ PatternSetType type4.1.6. PatternSetType type - PatternSetType type - The PatternSetType exposes various filters/ selectors for the - selection of resources (files). - + The PatternSetType exposes various filters/ selectors for the + selection of resources (files). + The defining Java class is - - net.brutex.xservices.types.PatternSetType - + + net.brutex.xservices.types.PatternSetType + [javadoc/net/brutex/xservices/types/PatternSetType.html] . - - Schema definition -
+	
+	Schema definition
+	
 <xs:complexType name="patternSetType">
     <xs:sequence>
-        <xs:element default="**/*" maxOccurs="unbounded" minOccurs="0" name="include" type="tns:patternElement"/>
-        <xs:element maxOccurs="unbounded" minOccurs="0" name="exclude" type="tns:patternElement"/>
-        <xs:element minOccurs="0" name="selector" nillable="true" type="tns:selectorType"/>
+        <xs:element default="**/*" maxOccurs="unbounded" minOccurs="0" name="include" type="tns:patternElement"/>
+        <xs:element maxOccurs="unbounded" minOccurs="0" name="exclude" type="tns:patternElement"/>
+        <xs:element minOccurs="0" name="selector" nillable="true" type="tns:selectorType"/>
     </xs:sequence>
 </xs:complexType>
-	
- Example XML -
+	
+	Example XML
+	
             tbd.
-	
- - - ReturnCode type +
+
+ ReturnCode type4.1.7. ReturnCode type + The ReturnCode type is used as the generic answer type for most of the BruteXservices operations. - - + + The defining Java class is - - net.brutex.xservices.types.ReturnCode - + + net.brutex.xservices.types.ReturnCode + [javadoc/net/brutex/xservices/types/ReturnCode.html] . - - Schema definition -
+	
+	Schema definition
+	
 <xs:complexType name="ReturnCodeType">
     <xs:sequence>
         <xs:element name="returnCode" type="xs:int"/>
         <xs:element minOccurs="0" name="stdOut" type="xs:string"/>
         <xs:element minOccurs="0" name="stdErr" type="xs:string"/>
-        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
+        <xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="tns:antProperty"/>
     </xs:sequence>
 </xs:complexType>
-	
+
- Example XML -
+	Example XML
+	
 		<ReturnCode
 		xmlns:ns2="http://ws.xservices.brutex.net">
 		<returnCode>0</returnCode>
 		<stdOut/>
 		<stdErr/>
 		<propertyList>
-		
+		
 			See
-			tns:antProperty
+			tns:antProperty
 			for details about the <propertyList> elements.
-		
+		
 		<name>key1</name>
 		<value>value1</value>
 		</propertyList>
@@ -4757,27 +4881,28 @@ FileResource type
 		<value>value2</value>
 		</propertyList>
 		</ReturnCode>
-	
+
- - - SelectorType type - The SelectorType exposes various selectors for the selection of resources (files). - The defining Java class is - - net.brutex.xservices.types.SelectorType. -Schema definition -
+
+	SelectorType type4.1.8. SelectorType type
+    
+    The SelectorType exposes various selectors for the selection of resources (files).
+    The defining Java class is
+        
+    net.brutex.xservices.types.SelectorType [javadoc/net/brutex/xservices/types/SelectorType.html].
+Schema definition
+        
          <xs:complexType abstract="true" name="selectorType">
             <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="contains" nillable="true" type="tns:containsSelectorType"/>
             </xs:sequence>
          </xs:complexType>
-
-Example XML -
+
+Example XML
+    
             tbd.
-        
- - - +
+
+ +
+
\ No newline at end of file diff --git a/doc/html/BruteXServices_User_Guide.pdf b/doc/html/BruteXServices_User_Guide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cb647a59cced62e02f800c1faf24d98f15d6b393 GIT binary patch literal 232764 zcmdqJWmsLy)-{N`I|SLd1b25QxCPgZ1$PMU?iL`py9Afu5`w#Ha3^>OA8<}`&VBFg zw@*LafBOCbR;^jJX3e#0%rR!whFn2ZoQ{c}6^^{5w5%MC6~G9vF|>f=<%MHVF?X~C z0;q)Tog9I#fVav(duMYapaVeE#>mMEXzgg=Xl`Ro4aXqlV(U=2{RaR6Ey z0_{zK_D}aj?12W3&o`es3ESAbdm82qK-tmF66jzC1UfnZT+AKK07A9~MrJ^OxV*ws z7X^D8V<#ivQ=h+@0ct>dho`3jnCO{)jrw#cYT)?fpeQ#pBNHnl=hIIPW)@bi*Nn`R zjEt1jaQysmKx^aY>9GAZEdYQ)4!{EU^y>}K+Vtt+OiWKVm7W{K%`F|Dp35L^`82L5 z(8$IZ_&kP#UOVS+`G?uY>) zVHZ`g6;+HafMKRu^T`#7ttJTz1XZj)fWQ@{Vh?iisi%`S$PcE}v&xPzN{^6e z_%W-+JDk&Md0c$}B6D3Z2k_z!IgD%oPq&sRHzT>w+9P81aj|z`Zkm|eDUAFbrGf=LysN$CBw;hy?E$NKnsF?leHr+thBnS0QCm7y-9Yr5P?j8B6NsmTW7=lZo ztsE2?j~>20Ix4#p-usmii6fG9gK6#qt_J?PJ&4KZ4-E`AE8H3qo;gk~PDU#_t9Gg> zZ=D}$ao5gCx&hwDxS~Wi-B;>f9}q#R3V?O@a_pb9My!Nd9tAYnD_PDq}1 zgv}nhN-Bh5Cc6J%k}aOmwK=4d6{uoz?()2;>LhAii5%Az46V@0W31_ zC?g3`=0-Hdk;Bv3D40sY zjsTGX{F=bGF|W43Aw^IX@DpIjMT8~6Fa-~?l#1|6g7&jbcC~h?9Pye#5JeiY6wT1? zFx{a^8DR@LHLFl9A#3&JIbos#usa7&nK_B*{TezFZNWWIjsxVolh;t+!U^~mqWYkq za_59IqGEN43&*;W!J-nE#-QbanF}t&5atmzg-OO14rpOOiHR{Oyh(unLWCK(k&~3I zmd&19q6n?mJoLOYL-iyqUU_`-c5+2Y6Eb#cUov7V;v>qB zB+DdifcQaiV`O_?jW;X8))bkby9Y3YUmmt$p}8T0pysHdHyFGGyhN2m|>&fw1Jjz^VFRbI7ypJJMQ`gKX=^mdV3(b=^0)WWp*)JieSl;_msR70^# z@#>_Yd5U?!yDf{uan8~+MVOCOBb+hA1{IT?ziJ9}sFB2sb z+_{%3X%$D=A4}Rq?gOs!kW~9+C9-NocJfAyg5bL2V@HaNzcUp$vN=6CkvCs9`!}<= z_qi*&2f81*Uw?J0Q-CkI zQ#PA4x+pFGKsQ_8ceS8>uD#k+y5l_RX>DrV->_)pGMQmPWcazWefFonf3E*P_OQXk zcn8yX^~@PmcpsdRmB~jJVIDWGa%b-C?=$nA8iyWpx7gSPGO04*L%D8!7dIDpJCRNM zP4?OcI{DTJ4WbQg)=DlqE>Z9O@4=BhkuxOX`vVG#O-pu!Moo2RbV(|aDrYTCucWW2 zZF&|*TYBD)1#h5#Q$BK7RUhS;Zj z)6&a2KRV^pBU+=&oVuB$9DhNwk1tqdXGOpy7qSX^o#pi-wFWguE4tZ8$AHj)^OO6EyEY*jE&S8NEclBto=#MPeH0V>qh?Rz>& zUrI)*%f2r+IVxC~ZE0zb2w^vm@btLSZ-UI=X9>$)j724>OHyKXIW}f*pN&J7EBgQ z=$&?RblEKw{64xW>XWDGjgA#`U2Y!wzV-^&bm9d0QPcq;Kc4HShW`A*&G$nm*F=+i zY7W}pT<2lCLUYhF<+d}^`4gS?_x83XjoM_~PtrsA9LgD5ZB8x6<}Y?UMnCRd9}2jw zT>hwrAHj~&HP$(7-m)!r=l(DA7;hNy#9fd*k{;Y9{_eVXwgJNA3Hs zTk|fTU4Jk$V)C&4)c*csvNBDt==0p;#4+&1aqjzrI&P(jZgQ)lx5FCUfz@M6iVHeR z(@FKoYk?H6-CLaRXUByR@|j-X*8vyz&wTSwy7(vaWdDD# z7d7Sh7iy~FW(x!`$O0V=j13$Oo=K^)lcD2F<6GG`e`l@CFRb-1dde%{`oyB&0UZH` zKvQ#TK9ZA`&m;hIV?GjfHd#hlTM?j{xum;2P}yBh#mN1g5tlKE06(uQx2u({)zjku zu2z=T4&1JMBnD568OZ(g_j5A?2|pqnuf4Gex00y%pEgfdd?aR$j<(zk3@$D%^e!y) zHuk0rOk7-C42;YS%*=F87IY47PYS`6&f0h?eM&Wq)* zyMNd|y+t7Zvpk_=7Pj|SVl-{2*ivLOQ@jhGsz3s_`mzF=}7yo}&Uw?M{ zW%U2Z@28L2fA-te!1l>+#{b~=Qy1{V=REcyST1m$J; zpB?`k>({FMC!YL^?f*rPUS9aqvU+~e48Ip5|6dFF2}1Zt?4On?BHX_N3lrmS;P^|* zvOI&re-yHSzmUQ;-7}^Isf!Uo?Ajwx0tY5Co^>$H$G1EN6qYH0CJV`G8hhiy&JE^^ zATL?-_1%EoFodW|?Rt&0?K=Wv$Wpy#5P!g?khG)+1az>95khpvUTnUiJ?q`<n5;eyhA=T?(X^p{SZv-Bz?8bAdiH+SGX=DmKm;Nmbk_8%@8wlID0<@mP$;QP- z&&VGv*FtC4uJHYQkgour`<1_vN zUS6`&a}nZKx_GHpJeM?>*|^w$H$EqW=SD6r#@}tvGk!5-Wcl6pR~_W9&&+d%`Ujtx zVVuFZMfR(TO2Iv}mXhJ^oWQT?TXeY*%SUg&%oTG&hxm~tNcll^CS6`%2!iyWQ;*J< zmtd`cpI#x}v4={+WMbdF{wOAtYC^_9xk}4VGL%9FAD$ZANt+RDAe^ItGAboiq3EEr z%VUPxg6X025%NZqU$#U_(kt!919JL&Jj(G$%5~%rmpt}(ff&mxkTP$I+o}L59H_lf z$}FsEhvp=7-d1gT|1sB}7Viitg<8{*uN5t`2%=BOBoUAp#c|r4^1D%3!E_BG&bRM_ z7lKHE-HRi(>*vaFrlj8}4P z{U&v2SGopY+l_obe5*g6#J{$d3v zkkX7sj6`-<|1oU?kdqL9!xXRH4s*mr>;Pr3)d~zA=@Oi-qucckveQ;>7nGXA)~KrC ze8sXJu=FNw14y$dp=`M~E0MgJ7V#`=>tOs?rsJE|02g z@JNT`2r-sl;aDV6m2V>@zJokVB(TD1Cu5Yk+QQ#FmRUL74`GC+mWHTDjE9+;Ne(h+ ztdYh*a@a**+#52-5#7?rjN=Q+WxE{GoU#(imq_311*gFK+MK8NA(-rSpzvvSd8-?3 zGUXTe=GSvp?vf!NF&v}Kcuw#X@PBYKG}c?JF}?l_0spqGe>*JbgB1%YQeF0SnaSxW zR9zp}tfQcgLO$t|UUjFTbG{E5wamdHlDZEZ9Un8PdGOtjpE{qtDld))Q25YOmlt{) zcCzG@KJ_ajix^Pp__ooE%?nDQ$cAe7yLEQHUsNYLo+S#2F~0D+UytgjuK?+gIw1XE z0fg+pK0R(oV%sOQl|_^T<`u*p-&X%P{~=C05)3>fAEFjzfhpt3IMZ+N!`PVs#e@tx z9PwT8j1_1l~hqG(_jx+AyX^2KUt;~2iAjC7S_Fht|r|e?SXFz4( zM~@@1x+V9F2NSIv_PF$B;aj~1$VHGMeQ20AzG`?doeYhta#WCQ5tIZX>|O!{;;^jY zO*kRXj=q(OhT@s@Z)Hsj1#qi@KGarfJPCA3DZLeehR~gC_4D>`o3wG*IfP%o+CDPX zUf7tzWN*u{21V7YTB;+BWMUJov>4Pq)YLsB*x)|oPB>6@w~Cy!^Yha-C@DyHD$9g8 zp*~)0UTbTF+OLT*cxj6{07&ujCCXX(o~^~c{&f~;z;-1Z8JGu2v~?fI@u3q>#F)Hc@P zMnvZjl3SRqR!}aypRh^JQRK@Sagz?OQ+e|(V$uZQuBy}|Lfs&gKxe{I%5l@cT(e) z2ZLk&kgJ0g_M|}vaN#;h)+J6fBnFzr{j=4>Cf&^t!fcw`+8yyh{;!n%!o?_alkhW8 zdU$wFFTA)tt_52LOjy1L)JVbGBsH-sKjzsL#Zz4Y0wo%c^|PdJ>Wmc@@UHL9UEw|= zDXOFxfzJ!Nw65)M#8PlBnMb9Z9Nmu?SvJ0v!^}}?s0q5(USoRah^*Y3*r}fmi46`< zF~*&=hqj_6<=&n0sT09#D~QaW(w^JjMJII`upwpksQV$xa~3Pe&K#ddhBIrBHm->n z+3w-Nmu$***R1@|i@iq?W&J>0@ao^!odDRwAb zRR!{Ij#j=8U3f>%iyFj$q*-FQu`?E-eDqIL5RJC@Scr@-jrTRPOfBG`W0qzNE=&{q z@C&@1$Oo!dsc|u%X|by(aYd=dndAUnDAdCJgDHYdpV_HUUS&$x0Q{6ux2(PQ^Hd%V z9v*HzkjzXQ1P3-f4P4o-Pi87tcr902K^7zTh9{~8`UKPg?Xwa$ z-L1DJa1cD}5^z=_ya++ee`6CM)r@~{**%wt*IZ`SSgbLE%u9L9Cl=Mbrgm2h3E8kE zJ9(*&Q_>ev(>wP8lA)cjd^h;AS zaj~-frZ#^OKLCTOk`#dIPlak@4>Y&5bo)aeITpC)`&3z-EyhLrY z)y{qm_S{qFt3CMRP~V&tJMqs(+G*}7Z6^jSuVTF9Zth?Rq@_-OfY5|+@4-=;%w2m5 zAAChl;$0-JKZ%@uUpKC`w}t1cJfxuHuP6gf)Mtrk3n>0r`RF~X<-Se(QBGW$eiRBn z@aS;bqTba%g{q8w8Tj35LrV?k&LBjFtV-n4sGBBG9(yL7p~{`(-ib}sVzjU6+BDzr zwRZU^(j0yLt8eoiPH^>NhaH6p^vQMIl`fVHZlGAc4cgMNR@n(nD!rX8%4Toi7c#ud${H40`23Y2>-Fk-NSo=_^$=m&rG)eQkBwH1T z>r$ssdR$jot}q0{-2?7ah`(E0wxFFOwyq!K81}+O*QLwc?D%3s`-Wt#t zcz}6RFuB)Mh@x#8CW0<9f0JtKWI;lR`t)!X`yR^xM9mG43HE0|*sCa&E$$5FBduJ| zYutpE))~{Hc^q6QDB7IUcB|nwrMo$I2+hL#}Kx@n3FMO`Hb-6pXnOPMVF{g z`#t@n6nyX$Ba7FA<}}YJ7&I5iat$!ElIb|YS~ur<9GK{3`qNGeSV+G8{AL)7txYx< zD(coer+xsb<34TVn>B z0RsQWqkcN1V?FNUo}Y#5j{;^Dn`oA025a~0J&Jl>+7b29n~tII*(WZ&X6QFMdBR}f zDvuo`-Zkf4An1h)nO2s(Thz%U-%7TU=ry`}sVlvtF_#dR9k+#c0k%rr^%o%_>duK zi^%FH%beFd6+Fxl53=vy2S#@L!I!^v=0&RbF<1T8mmv3`cWkb28pq0wEv@R@J!z&e ziv7}vQ&o^48GDkuITcUE>5l$=9Bl>^yM2}o-}XF=G8Zb74Odu7*k`2+-i>atFUFrp z2|iC;8shvMnDCrHFKZG~t{whH%cJ<74^i*laJT)arFrnftRUqohT8&*ddr-?SYpIA z;*}0+n^CQ{T#q5wu_ByeoCJbiAWr*LD25y>CuPsjVXnR4u>abfQ-;(}PP-VHqjBAi zOuqP*wA&mv5V|1L6!{dzOgU2%7~%%oa(GYSUR}8&QP|f*0#$Epw%w}9-+WeuS#eGZ ziHP-YXEkDGIPRKjeteF3?lodQ^vdwbD`DrO|l@B3h<)wEia zu(%J8uDmjSR9>tR!Mk!?hCY?AG^zDf$a(&3pU;)P|0R zdYl082i12U)}`i#hBZC6fK?d2yg62i9J~lEvPlX8wj~r@MZ7-zd`ZtJ62~RiHwgDW z7Xk)i_RXwd)l30M^&}C|VTU<>Zdf}I$=l0dA)Y=wB>XjcA`5p`;u$%@Ia<&tf+hS!Adr(SnW{U+8 z$git|Ct+_f$?n?(jAFa*rJ8CT8Z^w7tS@C>-2O6tEW^GyF*n*aZ4E$M}#H~?N|{c_6XcX5gNkDA!uic2r~@|jgIu`x3J zrW(KK*54EBb7=laVpY?ySrA0=x~@#=-y$Abk(Du-z`r zPg_um9D9|jx^~oU(E7-DEJK(e?qhJ0F5yWR&tR?}7^Eh*gUGGz(+!K8yKH4YJnTb% z@;pnr{86T492_&Tkx7O9r8?isWxgz64`f2Myy>LNQUh*6is(!BC|t^RyX251_lMX! z(2!I#(iqxBK`TXwAd1r%jX6=A4LbMk!(k%-ctzR9_z?}061b1q!48dUapT9&vd!#6?4Z=;seJ(IV99}bzq>NPs2std&2ZFW|h zNm5>1nU{4+ftBbs-bagc_y2Mndc;Cy&<4ZMYHbS zy$&gem^&Hw8fWeP7Gu~qx4TSJ+R0xdQpX4Zj1I7I-0e$$EF_#>7bE?|5=M|;?|d^K zH1v8lcv{y3Zi&(xG$O3=$A5sLzv{974b^Jqms0ZIr5f`u2<71XU4&--yNvpisIxp{ z@;||oBpI7UMuh&8pBTLL!PV}X6V?P{NH{@O8p?-bS8HU}MjdXfc4=0bUMj|v_PSE=0p&zTla_f-pa<`hU92mijHCtFk$XSih8ilhBAgq#uCZa=i zMK8po)%0qDPhaCwBJfkXAWxZsMD)?2)l=RuPsvV%+L!W--BW+-U!%UAlBKU;vxQpj zuj>)cneiK!_ZOp1e}vtQT01^GXM6pnOnuw-;^7>6X{&ZNCv$X^DC?fQX}^9yDI%M% zu7+m_BiZSWH}sVeLQRKqsZ=~t*Y5CDNMjN3NY4b|AI(dQyE;{3Fo^(L&zpU7x}-(7 zNR!lCXD#B&Jb1J-3d5StW15~z@re%P8}XD}LE{J(P1jCc$-LD}87)i@^JNSDw`>(r zgkD{3^lqrYeDM{$KEStu^fSadK`<_hfWqXnRl|jd)rpktT51a^(m=WHfzs7!+5`2| zw+XlSgr@PR#;3Q7bP9k0lLv#dRMI8mTxzRFjh{c_MoXiI5n5F0f{`S zyq4UZMj|rFs4+gS>gySj6S0|x`Kpov?AZRri~9@LD?5C5#RQ=7)j7aWhFdeS-qC;1 zP+P7Bl>9@RO1z>P=0h3nBR(WyIVJOgH2d_n>>9O*mhY|qz`*9NCBNqjChN9%E&JYVgz3Q#B`abcjs}~S=P}MnzojfB+DbgqDbkB`v|cpIIXvO zAkjgg4^zqszj$%Vx0A*apC;+Iwpw_%T_<`1PJ6yv@Gf}`CgCVGLQqy522zO>cferI z7*M+NozU#Qr=jz$mtL2~r!WYQ=n)3jub40yE<~Z&{3{+7ShDXInn8bfNZvvG2yGw9 z9qot8^SQkwHB>S~fNe)`Rl(Q~*U#v_4Ib1Njnw|w9rA$;EG2YyugYF zKah3R-f3ieL&XI6A;VFAVd`U!Orx)F+$l3FcV9okA*PgM`_V)S_G};Si-iuE0$n`* z1ZL0aeLrkZui=Lka+q4q)zb?4xU|K*vUbaNfur6G47ZynaCpK4;QMche>zS0L){rfU!`Ku!M->}SI7Vy6=^Iru%b`H+p%lt0_^}FcD@=rIk)t8@( ze%{x5LXHfuYLjH-N;$rU0~5{%RoOCzS&$3-16Ty_#)4l<+tq&dl29Z{D9_u=hy%M^ zj=er>;UO%pWC?@$k(QP@R>+A!zF=HiS)QKbLoEM^M6PO-lbA4v-vl3MM!P}9#*Ng; z4d*5P-gh+{xzw9Z=73ocl)7tbyqymWl((Yg2C*v|8UqMV38Ce zcogwU72VK(vIo`^9Rif1K2ux<|GWdttM%A1y_R_(4TkqMcqn2YZ6qUpEqh07k6*)Q zNK6dD7Oc6s6dEwaoTMYi`%Y&l5s16 zlZgsPtSMKGl`wr}bSF@?;Dsq5Eg*z$QFyE8s^(dzT*0n6>y}Ovd7Q&cZ4qhsRz#67 zmu3*52IB??^S!FLDi~lfMMBOsB#;u|N?#uDk|<7Ot@{{?7CB)!nG!8;M6^`MoON;>;#1kPoIi=e%k8*f|OT&D1dComGmdLB= zd=ux;G&E<^2ngrGTZ^3c?HcO07zjpr7D1C_@DFmA-&SZ*V-*S0{mDB9Z?&)Knz z*d{)Onnpr*zM?#?c(5X)zIN8ER&Y}4HCs_MwBo$-+E_|g-Cy0`7_8Nsx928AeJzJTx^Z}Msx)-& z!p<-^8M&l@A8)9BJZ@av2AnWH3r4!mNb85V^%i)gl(ddlxLnZT`*wuAac3U-Z7>O5rpZj1lHv9 z3Qaej`1A+xLz|$=BcALs2l+!im?u zH)=Ef%=3x%t8H+)C#kknPt{e}k;;dzFSTS~BtQO8Kg0J}kVe?nqo>rKXT0*mo}ZR1 zO4d|dtFzRX418YhQtr|5C+uGISp#2?Zl{!c)_5v%QR%$*whXMte@H+7UAvAf|F-M+ zl2%@7V=S!9zw^&u-1@Kl^FmPn0nJn&vR>rGSUz|iQl^O@tkX_SY?RfTN7uY(Z1|OS zfnGaJ3Sq8>lsfvSCjlCiWkJOT>P;KLTzwbL=sgNO<2#^qR`%y?=c;Op$TXYEMH zy6CQn6lkJ0C`=dGx3DrP7pd69{!h9$$A|*lrf2sAw+vrM04KSldS_q#KsGW+Z~&D> z6}hEJHp8GE-cmn7n<7`_a&JD8APjupjxnS!Qo=t~>{04Of3#)Ri64F1cOOYAoo`4a zoy}bNAzPvIvoXD8<5HdZ0Y^uU#||FELQiu}JuzH0eMNpMk|{{Iyl^C`i`O>y?w+o< z&Kc<-5jsb=J8=Q`^K@wTW1VwVtrE1JH$TgfP|~AG#mgl#ahXMPs^s7$wA$c zLt}k{fYbOZ*_4l%(bt~|Oi+Gs-@-}oI)Z^}SX(3Ctb@D7SrXLq2sjG_VQ6Iiq@+{l zIKQbV*&lrQY?A+~t_+RF(=acI?W*nd;1A+a9kn?7CTHU$x&bhAs`v|e5EN66^!y>DgJn}s}?p17w22Yjo6Z|z;+^S%pRyN|5*f6 z6%KbRZ_iNoCCphE>|Da2N*7TF$iftfC><2MLfx1vNj|SeAh5a`FNLUFwP&Ye#8)0% zu3jGMO>uRqYQYbD2I<32Saj`m19M`<0uupCsK#OaWsB1+gnWYC1kN!UVh=P)Z@$2w zRAnK7o#ET%t(5e3nZz*_4Mc|xK<@XVC3s2>2nKR@{7{x!1%uUU? z5QneqW~rT};(@to7b!NKM$!O!y(0rr=E{msX3pfM3-n5&KK?MV<`OXI(=sPOz^V47 zA&77k_eBL%!N=T^5WWKEhMlcmUmEuOA@xM6nq7o0{WoatKxJZ93H}3K{;G^Uebe^8 z;FJc-ALkVQwwJ*2tIWs5$oTu9D(hb&-Tt%b2kf>08yxJ#P zSCD}r+CEz|<&*0)(r>v$p-k%LBxYCWH^evGMYaq1BwN@yL-%8^y!R&>KXM$X?@(vM zNh1Y_pK~;L4R~unDpCbc^)!6dL;41(EsrbTs|b2d1+ZE%8Kzpg5!}vT|0>JvgQsJy zK{mmK$jlL2(UP6tH}^2#s9vFrsCs=TFgbzVsnuO!Cr)y;HrGogPIBAlROHCm(a4)n zwh1Fe{<@iVLD1`DvT()>)`Hg^OM}BVJ!DX;1v&SsIIhym#YCn)j(l0WLF~rTZ?Rk; zT7xjZ{p6NkP9uj>&?a*#L)Ly)OUZz{g2L3B#Z+QfJ@PEbT~`8y8s8IEv;UyNMGiCoVP8 z*HFS4AISZvT12MMNtswVL8cCcb8Ow69&xTx(N{USHmJWIh8XUC>vo=%<5=g++}y#^ zS)0<4_^AQ0QLBhEdQ-en7qXMqqzOv}V{c#HjC3iT`Vhph!1uulY- z24w){(l_5|sEwb#?nPU}8sst=-PLP0fxxfRiW)IZm@V0Gkw;(c(a96K!q~?#V>j7c zmzE}SDbrUf8Mz)fGZiyNd};EP(19*AIbh=vn?nL>wX51A>V#s`qw=KO$w}ASxviUp zwCmi;uQFuk_@cG#7@j|VaDG0?=7C0W^bj%s1Rc8g;`;rfri(NC2eW8C8x{EO3I10$ z_r?R-Ev;^WLpQXyT~FI^!rsvz)36ykCV3S-mc^orD2 zycD5gIXve-`BmH+y`@EbhxNf?_PemgV2*-D|F}StMcW&Z;e4d3a~sa`m<_LHHbd(V zQS4DpQKxnnqQk>V{cPWL!uLCJs5}wk7oCfs-a(V(L!Ubfnh*pC(shYK9(4?7N95F} zVaX)cE#E4c*st`zjt(ktv2`DF4*SG%R>wjduTSZ-1bKR&l^ozp$2)&#X$~|-rfKBD zt0XsTp0UKf?h#v8u59n>^f{hS3qQRr&BKsiyVw^SLLBpZ zmBp~m8;?@N+bV0E-8o$eCO3+3)oxnl?Z+T(GA+P+ylix;(=8_H;eP}{VeV%mp3)It zU+I2wl3Qr>@Q4#)>SL(Ix^V%Mnb`a;=4X4fH^AVlu}vDz&!xG3Aj&(C$&c1KX9yfS z=97Gw?VTBEW(YG^eAfv$hdStq*!iB#KK+krL5$TUo#i7Er1Gg(V% z&Pa(;9K#RG#hOa$=pqIpZ?xM38}>X4as@xTy2KFI+Chmm z&N@kY_oogAZ4;rU8=Q)QTBFAFuR(7=p^G%rGbujSZNil@jD1r-fUAyBa16f}n0;Mg zWKg*gr_5bf1TC)vlh+zqA&hQ(i@6eki=NNe_ipGJe+#=-q&4I zI*&JD_)TG~NvyGuh?74AyH#3&X*>Vy9Is_^b||w_T3~py)A7X(4k0NNhJbeh$7|f` znNDL|zL|Rj1nBGoIAr zPPapn?O}&8lUF>N#&DU;hGV$cuhdu=$z@Mn_k}#5VECqDHBe*9C6DC=O^Zq^gIF4?wqJX?Nhi&dN_1 zr*>a+cqPi2tgfOpit&WK*(REGb!~*-2J6Jx3}6l)tl?fP932viLw93(!7G#$$Z{o!@0;?&5E>#=csNK`%~TF!vU?-0kH+z%WO%tt|8SIrAs-9}Il;0tnE zs5qJ7y9>+Qg8R4`Ij^uI%o0Fo%FEZ@-))t$4n9czwB3a9`xrlif3_o-0nR{AESB}= z`0eWnYdp_LR24^5a;iZMBP_iG=>y~OAFo-_-#~UBk*G;Kv>i}f)lAEo7gSSF5js9sM3I4)Exs6(km9-L`Hpr==V>Opc5?cLY}*Oy))le5U# zF%7S<+qk55g1e-5#>@n&J6hH^8l)$WDpbmm>TW=a|wkSpH^T%2lJi zu?kPU^!U0#b3iT6!M-&Am_*oq$UAz)0_cB6Ke1R5-?p;vRgFo!hFd)y6tp;rs^ukY zRcD31R<>XLcs^JmNIw#X|`#$SG0Nk${^?wP#y_}!@`-c7tZao7W7c<9ieEUnv z{6*?t^uRyBx3_Z!!LFxbEd)I5HK#uzktZY5h zI$gy}_5$Y+gK2)M!CUDXMk&u0-}TwyhlF`q&@%Oc+s$pemv36Ue&?+VO6T!K86!6t z4~JbZ9PCvFn8(>tD3+D4m{ZxJ?2TpE;<7iAFH&E|j%$XdpLH&1n`ilzWyi909o)E6 zIb&&tBfxGNvm0^O?Shkh1B}rZ!VsbJt+5v;=4YU`P6O6HEw%!(lF8np7R3#q#tp4- z4I>@(Rr)Da$=5gEN)LHYEDX>p4sE%^dsKRGM}=|KSMKAB->7xgib5FBdT!5gM#D>C(|QIwy*|( zE{ko4aQDP1s10Ed`kJVvnlyqDp@_3P?9LYl8r}5?gkAz5k-ye)bU^@TC39I8SHZcO zxs|V6z^&BzDxXB_b0K<@(Ym6h%qeM7cw_zB*9WLZV-Yx?HstDmkNoP|QC? zdH@l16heRU;+6XPUDL zTGvEr{#V+4$Ru$rpkA`MoCId8nG6&f?5|Qx@ZR(!6e`e}3nUEAO$AYZc}gvAG9SJ! zaKa{-wk34~wS25>Aa_$Zd;RYc9~HW2WmJbsrLju}KH>MAzGoioVZaG5tK;pr;wk55 z9Q;hPu)+I@v;uDUi?Eg-?1J&<+riDDmZHjyru{jVH&8Hb%pA#@HJes_4K=~t7elm+ zsv81~)HO8fGRzYt;w&2DxjUv<#c!91Dc9g73eUwLcXL(7=YIIx6b8 zT>VM7U+iSLPkkWKHW}`I{g}0KAo+ke`k2GWU_!i_>l+wV?i={tTz{M&@9j)B9>(|2 z@q-BxpLxRctHH$@k%Hmdmni)`9dXmWm|Z=M^>-C;R{|ZzZ_yY%0FT`Fgjcv+?Dr8@ zhMCp6heW*Inf9=6XPLA^ZM*x=^&Z}3qDf@-m94VYzn3+-Uo-!KL4H`V*{DP!U>ps1 zH4a_7Y{R(N236~Ms_zvCr$c$s-=YS3?oGRl_Xz3`pn&ur@cFN^jQNSpn5*nZ~QR$}&jX8?) zedy>IsK9l9!d>;+LxYCURuSFoz+fu#oKQ{RNNb|Ji2eb zOwHj(;bd~=~Ye7&n&Ulo~<)bm5(GYIQP-HvTs$h ztBW^FxybmT<<7dj?*O zSS|?a)bzrLD2HY#ruN+>#;0p$Gny}LeP1NGDup43-w6zl>#~2`Hn3v^5C+?>7KfI6 znmRHtL)W!7ikd-GYZglgxYodH&ylT?d+*PjkM~XDK`P-f{F@F<{OOwL$`>j;giTuw zQ8z~TPK|m=V-F&6v2PZhS9g994R0A!@e$%}Q6VRA<+fUDN&^nI8_f)kL&dlpz~K#g zx>yW+*WPyv7QK!%eEKF5%JD1c9C2P07O<`sFs`55$S6zi5#EVhEho(j(1J;5{0zvV zzs@;XDvb}6I%Z-XuaaDO}WbOKvLHcXY8t%Y7ckXPx}NpZT30I zLm(}f-ne>vfTK<`5uN+}D9@hdIpz4+#U|WTUue_^`f|`%twn`ui1x(7g#wgCOwAO+a99XSL%%(@p-06 zlx9g>Pli*|*xs!?9Xk1Gh^O%gDv8WH_#e>ZSBdk#gYCV*#J|Yd7m#>ndmNm<|E~bs zUljK*FnQsL{{&1{FlT! z9NE!6x4jCRr=)xRsLSeT)9lr_5J<_at{XZ=lQ0BeB)vb70F(&43!4H;Ck!_L0Q?P1?Y6dX9#M)!k#Xv{CoVdWTgJ0|aaQ9VVQK$dgG(!&|jDRqN zh=6o=cS?(NcS(c9&}GnF(k-1bbc3{jbV&$;bodVJ>$3a*?ZF=J*&NSxJ@<9z=Sya< z_R@H*Lr+53D&^w@G*+yXG=6akzLvq|@Yu(;*5R@C%%DpRz>TK<_;|Be8-VOjj%3yQ zpcFw|TGN^@=Bq=lhQq^YuQ908m|CoPR9upiUOxKlG?ZHEvd;3xjX|G=RSw&?*E}h2 z$%c1e?TkYv0@2<>wp862A5*t|playzh3?o~N5p9H^|WG~=_C;pr8O@{C7mF|YjSY* zOMCV9+viaop0@AI`gUF&ewqMHmo8K!VnALdkEQp2S>^9D#l8W_GGXQlB{=fR8t?m{ zVg+R4BZPBN3Xg`vi*f>i-(?M%2ufiFT;SA?gFTk<3&CPmW|LH+iuIIS*#S zAeqE(Qh1PF)_HeWAq0uQ?*0M3_b%Hce^W%H@KFU%gd-Sg5S+QvhDH-Gu6H!Q4Z;>5 z#+ZuYm{OumqPQG09Kl>IilD< zG_^SHyNUk=5^@I!e}|3Vh8GvdpG_@}d**cy8+Y{O-@t~g{rD|xY^t6;20S}Q>cY`@rvV>CZ=`)ViP|l-dF8=`~G5VsTLwd%DmZq@I>St zeIQQ2%z0%k)sms`*=%Q~91G+voVf0wFy=N5N_Km`lRtUc&q7YkMW(jG7;YdbkNKwO zFsAUH+h&`2K)I+ws^jCjVC?5(CY5aVZ(0GM4I7<)&WQ4wUG+>T` zeu?;8ib>`1@G0{-KQBCfO*0l^Tnj(yIL`2LbzX|_R=94AfL?C>nD$!XPWKT%QT(wQ ziIFFHMNfLPCS4ipp@qJwuxv_gY#)Ib2bPlk0Frh5b8nB=8qel|7{xERA{@-$d$r#1 z3t&(zo_g!!G-PY|0aC1N%_pL`tdNO3u5tH-9wNgu;lx= zIM#qb0k82Eo*sV{>2;S^1RE4(6ZMyNqR*SPa`A2}cgp<^k3?h)WWn44Ey+{5!2#0Z zaZb(bYN+h84R`n?E9Tl#Y4gC?hsctl6!?esK<2a&wm6*A3Lr2ZI+Zu%_cD>wi3G(E z0^P?#40y&vN|PkJCQmF4p5QOQmd^%<@R34=NXD^|I^ ziP1%CyP!SrBNiq?kR?|g6g-21LeT;RS3izqVnrKE(Wzly0+%?G&SQsEv@f3qL)zoH z6^RVX2*0taqL2}|3_*@GE0QWnkn9JeRR(yPVE(DB1qJ7PpblIFo3EJq006Q zAiJKGoguEH5v(x|G|4?_Ef3)ed#wvKdlmNl-4@CkbelFb_L6@sy0%=@S?yk-6by_q6IysNnp!1Chk9_Omd#a>p>dEDqdK3yUV+*p7X0 zVV*frR*xf*uateykyW~-uOBkX`Lu)DIS?T2INW;l^?H~Gnic}bo&i~*p*;)&h!A+W z(eog{qXd?VV_p!j0nmgedN4aP8I24yw$xD0Oik=+YBoI3Z`{LBp_=MBs>h!PwLUne)B1;A=70+V@(eTdjI zm*=uw>ShaTayZgY+1`&O85I$BT=tAXlRsd#HrwCHmEv2uvcO%}aDz~Vp2dvWJ}Q3> zgNo1@D_i?)l9EYu#w$-OUT<>t2VL665+70%vH~t#64$n3$jFaFayk~QUT$PtA&F%i ztn4~ff05-)TC;ln$}h;Tg1r{6l!SW5sA3{*M@t|#>>`9Smviq~e%7l<2;NHjF%1(k3wVGo zEPv7-y770rX&-ns3CUt>S5&UFzP3YHxya_jq$-TbvLC-ueW-8l>77%ixYpht1TAY| zUh51pBw~!*jmOBbZID0ysh3Kzoh;$_6EryQN!2}Q+)9;yvnor}fq5JRJ&WfAujkq0&Y}y8 zq`ywNq{P-}zs)P$h9tb5qEFz=`nEnk68I`8lNU@ya0o|wNt&^`=r7ct27#OS1i7N7 zbqYFwvb%ogbVcIF1S}?kUOhDf;`tRsJPZ|?>=cf@jAc9+h!a%b*uJzr7?2?aD5gco z37Df~o_IMdkwB-jXol-!=gb0H7xJ&b^-h8)!%G-2Sz>V0*p*lxX;^@R5-3-ZK@LJ< zsdsm4eoyz_HybEF96bW1epxcX{<8HG64Y&zx?n;9{Hm)pPCzfezKm@|^)zbJgOTB) zkhSxtpurp4HwnCD?1xtR=ECSHwFG@@VsXT^_7O<*@!4l9S7tR88Vn56FYMb}WWMj+ z9Q|Yn^jd%5!g>RDu-JyBZdYqG9EV^uu%17~#r0|YS zcC?T#!dM@cS7;;T+R@v?OgC&b%~5Nrl&cPBY-tPp{wkgsCeI(kj9cAKR!?koSN557 z9sTGfl!3x82i(|1R&=OOs<;(CvOhK2@%NOLB?*+@JTgth!g08HO&4G*f9w}YfP(Zol%b`s)0%YJ(?w#RVchrSI}Fj zeg!`zJXe$Pn&u}$-*z&0gy@H*Taf73*YbTQhXY?A7sTak*84!ED4UvP-d_0rZG;mg*NN@!4y>aOdC8OrQ z6K(xqTt|f_afP-lpu$ARkDuRgjaS%$vsytwL8zgNAuxYwP5svk8n$!iJmH@WzDSfD zpA@@`+2{p=W(^yHEf z@%dbJu3}!Y)nvt0m12cyVMO`cU;lYo4$Xr#GH}uw!qA&Du!>U0L%mhIT+zKRtP&ZF#|t-aHK6? zm$1w9JIG@JZ+F78JOO$SfDzSycurf-$xqMvLLAHUc}dsOTT`1S z;libXD!2_#Oi2C6gux4uL+*QQSm2g8!Ve-D<}L963L-pA`!FP`M>5TEU(Whp(SW{k zqjABTDuk6YWNR@vu%3(D9Zh z96%%!z1QJ!M0zAS?}21^#6zp}9$&v7sDQU`hx>#!Gc-&BP%-k)st7 zBynb9-A{r>{oZilL-5iUk-_UCpJ_!B>@RTW!YAKo)uIe5F@tnOECUzs!qs?5z11Uhtp{xHiV~d)@(hn_ z=_&{dJ2f|>tbQbGHJ7-wpq=K`4_y-_Y6k`y0)x$Z6KYVX+o!C(a_lOm=&MV1%C{WU z*%Q|FAkPbdacXKp*y9g9xT4HH86BqOdcgFNU*$(cba=gEJG_ZD3hY+Iy5>F`I8%(XZub!pw+H@IMJLGTh1Q=NV7F4MP*uNe^C!j zWu$bSSR@oak*8ceXS?mel$m@VYyw4{Kf!BzDGj$DF0Q&MIIZ-VdhUc0xwMI^zJZIop>C_c zMZ)-WcuaJ&p%w}(y{vOMvR__X%%=ZEsBk^^fyu6id}5?Txy4xbeWjsgSKp?u8&>mT zeW#1tKOnqH`V&NY-OaN|!=6dxs*5j*!~-AT<7i>|hKs`PkYSY_HZ=9eDZVYasG^cq zZ0^)V7nkz)apAs|HKSH%UVly%vRSU~hb0r|?c&R#Qy;@nve`Hnh>AZya7_ey7TC@V z5UW~?kVMRGo3ciY`Rbmp35z~5K6Gr#sH&uMXqfeT#L*S#?xTJ|Z=ruxL>8Y!tie%0 zVhrOA>DtjZM%UpiP{LKI%Ot(8)Q5sGg~T_?+VA9!o*lR(<+FMyHx^Kq(C=MjRR@s^ zkdWomO{?-SHxX&Z;Cr+%3`V?AqFiMw<$qYCiyB$yP?0*KSp*_8G*K%as?Gk2)ld<4 z%t70ZEIWfwfOPu7iN?iMh-ci5t}au!z?u-i2Nj+OLNW4LUh-P)Epy>KPkmfe@dLoS zNs;QFs1L&CXWkA&?Y=xz#z>RFK$C|#7KJ2e*jzbM%Y2W8r-lZMf|^4lmOu2Rb1Ly`H_Be6E=X#mJYY>B;8TYo&cCT)r;sV|8%l8%cLFYS%xch0%NI!Zv)al?91_q&f9>L?va>{k#fx(H3%oqg@TfN z)P(tLXOkV7xUmr}x+o7vX5`MjY|V4SMo{+U?Sg3xbX-4`-T9$)z!^*q5V34M9|Tjw zsSvRNAw{A71*6*TZ6it-8cD^U^db6+E5Z(2srp+y#&9(Y5JXK-MiMdiHS*#H{?8-M zb5v+tmC&nZCQL9OIA)sQF6e-13`VGkqakx7^gQHy%O61p_qX%_|Kx=bsyLr!xQ_B+ zXaycjV?3B6boJd>VHj>#(&cL1Z>lKC?+1>1v1`33rUmbk!J%vwSTq{ZGWgl5 z_?yZ5Lho|OyYv^tDG~8lcs9&h+Z%=@>0{#8QYp`4PKZsrtvgw}3ZoHqQ>jHu1v7%Rd0kc2k0_9>DE0k9hCr>u${($j&x z#y6sp1P^{0(D6Sxd|*};FY6)^Li2o&2tU-7dVE;&q@AyJh)#uVh# zdih2~Ip%_Q&uPheIysIW!H)K)Q=2}YnI$!@doL6_>|p0IaJ6JgBf>PN~swj0`Quw6T4y~wUu1dIt#GMBd>zK* zvKOo^^5KNf_qo*)Z0`z{vmL+Sm`cYx7;04TVr>Nrq zJ|mJ&R)qPUmM^5|46Rbt706RbFH=)j7iDf#_61Yh3zvzLexsiU(giK-2;cu^<-g_n@u?o4KblIt+bcg6jLEyC;7=B?%4-5RHL0(Gpn)R100_7HpN~vGqJn)AEjF7}! z$}P+g_I|F2&0%1AqnC846J2ujfEfs2KI|a z@p=kVd)1N!OAO{1Xq}8iDlsr*>rRWZ2l2Y|Uwt5N>-oVLk<%U+To+B_AV&3al(}Aj z9kT^*NHeMUCk>mjVZAL~B)5v;L|8vzP1+Z$%YgnQ;^Jmd?0FQL{0{NRJbOByC4b%2 z*)(LimhKbWk(k2TL|b58+0S`}Zw)bH&epkZ21fM9Z{)LI6^yBs$`0%Txv-yGJP>Ln=~oEkN)(H7_zSz|w($!>7XeByInY@ACZu5PAo?B7< z0wD)KxmIOXtI8!SzPd&RJwnNlyiHrPW@;)>>4`L9Y3porST=2-so-RAq7OE=kx~!+ zL(PXCvE}^W+(B7c^YE+}m`e6?sMhaU&p!IFyr{=zDCurY3glazA2=uaq7CSBB^skOl2SS<6PjU>63UQ^ou{bqDUJQ8i^6UXC_aH1Mofu0<(i_fv|(ud$+MS5Ep z%s;}CCm!RjeiCQ>-M^{z=jDT73;)KVyKBm1*50h*ikL~`xxe7l32 zFvt?{fjiGkmKYUVQm1EGb0$gC(EJgh>r{0G`2c?c#x#-PPEG3Nq|qtyU^RIE{6XtHd(hbqNL4*<_E~YYrS3=YUUo4}@+d*r8$#*) zlWAD8iq*H`7pdHf>|jGaytA1}wEmeAP`sGQFQaJlRF^%Xw8teC970JmMbXBY@5dq* zI7gryxlJLg(qOh4(5hFcYFpO$NlK`+vwdr>k{3=UMWv3P_R#3n_4lhj9I9WO=%YU`&p`^1-KVL@ z=a(dFK9!Ps3S1pC@jWzNAL$%(t4dUlqgJ^&%PtBzk*vrI5a(7&9@ViN66&kB6(xqN zb;ZJpTXS{l{x#B%TY2}@BiuSy6iS;E+}XSK_JyQ|C_7yqO{oFi= zeEFo=s)I8_ymCnVJOJb4FO}u1U4HD34jVY-?I8~DXwb^N2HwW zr2E2Ko$}UMq20{eX99mh9cTS9LH%$uQL=Xu@LleCe z6LI$tLP>c^l`Sap0#ByOXo(4Rl|kOj9|irfu2|Lt0Ns>E znRXvHyp2BPeOo4OEV)R!{(kgF?8PRL5R2N{=KvH%k`O(wCjvUV1g>;$!k< z$GZ$7k-W>X^-&&7LzE7d0E)Txv&QD*7-sts1P4{ZZ8Ty8;YJ#`iBLFZe1x`3uSc1M zUT^Z!qlGtvvCM+8B!i!MvfF%~sCWPm@)=VBrlnLfvsoINjAhrz=)XQf0V(R4KAJhp zYvrdi6N@`X+^TKGm(sfq;i$YpV0*0#|Gz4P`@V_rUmy{8@Bi;8@!R0wx;H(z@0rs* zO5D+pf1^V5Z|j{f)8pwC07vdx2wOA`ouC>GMZNtk2%oidTATWz^;p*4_$vF?__D#M z%_6G{;O1`A{MY^62+s##xS{>bRTo6da%8F z=6SW?Vrkv$PUk+;b=5x<%vv8wjevJ~o%s2Nru&>tAU|R~(Az=)QQ_V+1DGpEi$e^^i34||QL^mVCrT>(z&1PJdUC)r zGUdV}0D2ST%w%_`u=-u5#T+&538hFO4qE?9nbZQ&ufysz7`jvJt#0dWd`_S>E3?*g zPy2QGXj4mLT%O7$cQ%aWt^g5oLd=GbAT<=RTwgvrwBSc7nBm`GwrZ(5^GavC+8zyI z;lli2cb;kQu24E`fT#~GI~>y@ds4gkWO;-g)y0iW)FI4&7z^x8W~w4>^h@^ z*u?9V;7tpx5n`tVOX08i#_EP&TwfDiEU%MEitQiDmM2k`T;I66iycT5RB~CZ*S^f` z35g|_bX)k+$#;VpYQWy$BXF0x9wXnTuE!Fesl^iZQQpwWOezrP{HTK>6Zfne<8@75 z(zBnhq$%;bz*1Ka3)44*PZ_sMjwWu?l{YD`x8?l>QHk5Oy^B|0u$7-kpp;Zv%EibF zOcoj*TgMpmj1er(b7@3Ohj;D4Zbcp#yq}x*_1BY-2B8=hXy6z-RAab=#2n(_>q z^0=nwefcbT;6fYH_?#m7xymVTAN?UkQabj>dU;A0e%ej0?KO8xTgBW*(MB0z7f%UI zoSRopYQxR*r2?HJQw-$BJ%uH);7Jy>-*=5jkp1dOagKr6qCmb0R)wNVHGy@y2qh-9 z!tWc~XxEW3+A%s_o<67)ZZlav7nA&N-cxeHz4bu^q`?7qMg4#}ND%F!L+wKnpJ)B@ zxg&f5;EDI0Np$uT)diT;fPE5VcrL>BFo_B#!m;?E1sY!B9U`RFm@Iup&kd0mO_ zcV)97DplV2A_fm-yMY|#>BSf;vk5eRqIN2O5hZ2>tI+yK!D}?9whLJ^S*c_O%nWWb z1<0#8{of;Y3=0n}ZI+-Gi~Jzx6=*#M4$9>Ug^kA`zNt6F=%X867Cu_EuC#-Z!iw!j zXdy?~bBQA6%%x^~0@8V9z!L&!tFp8lK}I-3-*H1^X)PXK`l<7aDz*o za3Zp2(R18>5T2~GoF!PTwZPSgXm$SsPW%@0{}G(H>sb61C+^<=AL+`UUk~89XIJ+) zaVt^&l^oHrzOy^8pZ=^Dn3()}Nb65f8(k?Uh5(7fs}}#(>1}D7uXFkBNzXT{Cu&iY z_$&M~f@3_qQbK*c@0#G?EnYu4R!}BD$AxGU&zJ52#6iGTP8QHzyz&{y_BNm_%>ToQ zrNC1D6X%_u9Q&WzPQe)9dO%s3LI#gt_r4OGKA;ty16#6me(KTS5euxsrQjflrYHn! zhbJpY+z1Y(1cYTVi?z3GWH2N-7IZ-Sn$flwegFk z7ioYSNNNPNL+ybljS>@jTwjBYD9NR(xU5@fA`@Y55z3R$=YSLg>v31%?q~2M`UB!l zhDWcvv`IrncV!KqZqoH7)b%4EKwD+NYe5Kx?{xIh8RXKGttaZA~ z3qi^~#PJ2S;J~+B?`nVGtB_Ddu#sKZ865y2Xy}^5eiz*+Q5Ih=zRXC0RK}ZSG0)VJ zLd0T`8gN7fZIK3;<9U@6Y*wf51^HK3hD1yC{(5L{+v{uHLAb(T{3CcpU1Hsnda zS3d6fXP_WEh#!a*{L*smOG!T)272(NBs7!=U9v@)d*Gy%_NB{QW`V3a!PrTXQHwR# z(YW3B+^_SxO{Y0f-I_~QrXtJM#Ay56T3eijra)&Qv`sy{;jfRqKXnke#T^h!3qBeS zSNN)R?Q+X5a>b1={}(lQ?n?~+1$lCZ2Y-_%JiiSKE{;D>lG)Ju{v3?~#hSXejp(tOEF83pK#sW>v2 z>;2G*Sf01xD--joZ9h)Hz!Ec>>n&(VGm??B&`=nIk|FT8c%)pYC^GPh z`j6(N(*`mc5XS9Mr3{KTxOmkgrp>|U1kFmGx1ce@`6b3QTn_f>pFF#4T69AlrIx2= z>4?!Y+ur#rylihyOi@16Jd{h3XPX?a@ccqEQ&qh(cNAl_oUAo7*{Bz&6Ei=4Oq8U4 z=W&|R5wsw54r*BISf?=4cQ+2>XI^8yR)ME4stWq@ zf?dyqV7whaOrxaO4u1A*o2r`%YAlvLCbti;T^Qk3wQ_uYAT%AZ*wFmUH0uNh-BPp< z`Rv6IM$+O_-MWXaM5T)%Kd`>%j3~HsOc%}z6m7V0@Tquc)GQCpd#W*VhHi_By1xtc zkp^!?W)GWc@90O<0-a19ONl`}yfu}=?iQd>&(Fex7^viy=9#^?J(XoXL@l3yCcA+TLKP7_5XE&F%_$SR(p=TLN>xJRyeyywE}cbMqNT zgcB>*i?%;L))7RXqj0@2R2f=O4`M781`v=Sxx$N95CKKK{eZl9!1kB^6IEh7BO z7u%m-kL9_iQup|9$4CARJ}llgyI|`PShLHL?(FtLMy|S!?O3guNNIHu4w<8l8koL9 zVNYKOe~g2=*w{!dh#$^;(NW)bn6w`f0$Y!?Y*51{XQ9IHy>Kx25GYUrndI*$XKR_( zMqq32c*cXHI6)WKdW6s6+XFHr^M%QpbT(w=%j+LY^w7;Lng#c#bzT2|ox1a=OV6Pn zE&$x>p=~7Z-OW6KirD^y+X@?Vh4f_$$#uLXjjsv1d~5VDR6Op}xVZX$xyV%?Ul`wA zhRX3})g#;)h7XN)?aV)6_>e}CHw_Y9`79F-2*JD#}T<(^$W}?2qX*%zESAELI*mlmhMG1{&-QkL{sjYoumF)jomAX z14b!w1HL;dt6BIaYY4HOYxTZ-6um7^=;DdfI@tfxOo^@(Cty-$&+3^F3T%aD=H~qK z!g=i5GOea*axXYN?wBFQ*1}f*jdX=X=a(Uc-0cnl@uz{d6+xB);M`!pQv0-xZA%T9 z!MRGak2U;K%i^J5z?RH1QzyowIG z#Iu19cEYIx@>DE-!Zr?g^HJhk;-bx;qet~gO4W4=5rSddmi~;mGm(|6Zl^sPijTyKR=>O>f%4eL8+#)OdU<(UO z0$#(+US!0s78aXn8rqsp2L=qDIOq{ZzhA&dsEPv@K^8vxXQD37MMcb6CyM~o9yY8j zI^?+iMFkaB!vQhlON!C!sjYvBEDV+0Fhgr#nT73756-OTL1Ch@qK zFMQ&&KNVc5{d#_-W25z2&|P!GPB)3q#dP5ly?w(~t**zR)+F60fMm=}HP#u}*5hV> zV&)RVHTU`HKcLEQ$^RcgmAit)-?Yka|ALGA&%P)N>>JC!^W;Bag@yTFH%9-0E3n2W zmsv99XS?Ew5F71m*y2Rp&f!HZ9Q|9hJ6wrpFGXaDfHg*8t9LhYzD3%)+cH>me@bTW zgLc%InFif2xChK&Z&Rbu+`DoHqZt@w2R1m#Roa6W68ttd`||oV;%nY8L};P&>#WT{ z*x-Z@we^;GtYKO=l+tW%iouA7^``so&$}(FQie`s*Z?T_!brFt>2f^?%8jzQ9}pC2 zc4(E?wq<>Q6{%JmN<-)C3*T)%y!qqBS0qtQ(idMkOv49w2l$U$fAEh4O}>6XV$_H; zW6acJ%~!?=Q!8e|bSbrJeX(NJ9L?UPcrUBex-?I@ii1eH+C58CZfy-OuU{UpHW=*W zaVwcq*DOkBx@Gwzd6$l;mVklg^zajXLInwrDJ|`%o9cy`u0Feuc`lU2D?O$0C(AvR z-MU8~H^YYSEh{ZuNd}Ok9AD77ulb?iyUK0UE_oV>pQxB)4DnT{4<4uoAIqfdD9;+C z(eA$aek9r@Qz2L*|tkAi~q|GzK}Hlw-yl>hoo7b3eRL(7DEDW zJ%$ANHAgOm1;nMlJYV&;UuO^8D7;j**%S0{pJ=uH`eY{WGO&8@#*ya8g0L@s?@6`g zrRFx!tUM{d(icfW4~CD^=e`Nl zjd|UWAHP1=pBg# zU)M|ja(~AQe7w(%FG^iFUjrR>NaOw8A&v4~*gR!nr0q=`5-=5+D8Y4@ zKzPTEsO=e4GbYsA7MLASOo!&uNBc8ro?hQ3{@=Vk`wF0JVP z(%2TiQ6vDp{^pA;7WZ{Ktbb8I;IqepquTgg)Y3;*^8DpDhQsPR|6{_XZF4h`D%=2-OYo~*vlr~(4p`E=v>Uv|u=`x&a= zwJ14VDUAH;?O5=XZ4jTF0R;yVm9tCDK}O2UoNBmvg_VW1P;^o_5%G2bS{ID40{ez! z%aTIjz~uw;Znsg^$@4|=1(KwqoSwL`bCbL_rCcJ@fJvT|H_JvLJ}o*!a*;Zkq?VjAHI;kX+Uy@A>H@ zC!hU~QzSe`)@y^s@2aASdF*Fn~t&$6fx7uF<_Mhu&@3IBbcKe0#nq=dxl^Q*+AlQDD_Okkq;N zqf$S`zq)v=@X(T8K8kJPC*^SE$Pb>^yUi;5{744JbH%XJfBK<7dDxcCQVQJWcaR$< zl3|2G0Uvsi=#NyA3<|Z*&_EQbDVpn_**-^k>0XEmt#tFyjS7P+xw>&b2wI9z7PBAi zx8=#S+JF8UIN03ruFkg;F2I1@NAFJ9l>D(-(FaB1Ih0Mx(l}c+AgAi>>|6PwUWLJCy0HPxjiw>tR9`ttlok`hT+--W`4QgHV%C~Z^{at# z`4VrruSCcWtR9-dp`qFDp-N|=i)!gFn82&@M!U#!2(Q|Qao{m0_peTNQdNd{e9Z%<<}3a2e%`l)~LS zWDHGYR!nZZZVZTYUa=SZ;n)?X+L0>DUU~ds2!;sxt#G#S>OQ(Uw@&u z3!u~lkPi|L>wb;)3xQvD!G|#3nW-);h!~@GMqoN4VjTD55B8;%7nh`0jz*{f_?uVH z-=M)wIR1Kcrg+FY+4+!bN&{zfq^VjEV3(Ft$i{63C&Jv~@eYKa04tn#`8lASL|{O^ zA*A{~6zpYwKm86NW_n;ZJRn?!KX5>pz ztX-z>?=WgsbAtVKy>4gp<$Diamh3cG{BrrMMqnQG0CsF64t4}kBsJ@LZG%Sje3>i& zp&cTUQ}{kN2}dm9U)DiT8rqYutd8up*3mWT+RK5aXz9j1F(PErfR-vnc zokJist7<^-RZrBUx50jq5#k8(XkT)uSGMGifrQDI4X^pcs`a^ycq%etI-M+oOSsQC zNrAf1#4D@5tN0`6`P9*VCTCiD=zwelba5_a)&gW{m*Oj*C z$0KMY=PV!Jk*_MfC&yPkS8c$|fl8ZsprXjvMf-P*nZPc3QGxj9AGAJwF&e#9$DDeV z`d#GXCpv4$nIM;Rc@WupmH+Tn)GKMFOlIjRDbIk?4^KKJJw-2NeM`o)x_&e`t~wa zWa%@HjWaof97fvdc<|+$X($eP@*P{oFXj;i9&tC0n&G1gEUwD8T%JqV#ebk{dOi4k zHFHO|EFp^MQw^uVvMb|o>C4np*B{Hz2M9=vm%6)KoWh*~N+N`rRyipQ%;%fy920)A zN2NW%gb3RI6XN{#82%%ObB82Up|f#jy*%iM=$NTe z+te*Xz^*q8y8w4s=*#@qO;rEu#F354^t?MTc!akKAw_ zVvouZDsY^FPLV-BO!G|6(X}P#;_0Vx6$M!vEq|Okrkqb&;+)RNH~#}~C^RR~--7S# zSt!h&Wi9i~zJ}Sev0hPevOMJ<0xlfiu37jJY>eM6;X*Rj39gjCNc(5dF<^TZuRbVP ze_{YTCTM39%_&4l`sgG=nnnWjGkRT3cO*llVcK{{56y0gXC+{Nl?b%kz~6b$bDK!FBwNkob)eeV~hfXD1}t>DL#%JmQmuonF#-F?W&v3%-) z7^3h4!^)xd(WeoGfw~eJWp-twkc_3;vzR$;6RVaFVpoALmY)ow3;7~mWk0@Q9$6m@ zT-*l=1!7>xYCaQ2ZynlRJF)KREK+CgI}x^ZE}9%ROWJ3y$2;o_`~U=Im00 zfx-J8;Vm{y;irSo)#Jy+DAg5I2c+L6OHOv{_0Xc=wMD{tW^e8hD5y3P{N69xjNV^Mtetet;bbbG0#UN)BJqHI~Rt)yxf;{b2|+-|``o+-3=ztk@R$ z`tX*qq^)m}FYu+JadHctD|PI;Qji-xEL@f;Qu8KP+*ry-KcZ{6xHzGrwfzz5z{{VU zyDW~~`uJT@yVaa4d$*3boLQCpx|mj%_M&aiO8Z2Et`8BX&*|x+8&VU;4SU$Q$pcxj zBi!xEOMp%dxk}0n)d@PBI~UwyOm1`1U<^MO#leL*xCFRmk4^|+o)tofY@*=S>9^)l zh@b8oYlDj+duU+QDUZ7-AOvwUH`DbOLSA{Dcj+ml)xY z=HS34zu*9SC}2QN@w$SYCn8`6AFd7&TmpA?i7ITU1NV*&%{$(adOXF3QM1w?K|#3(5fK@i1rK z8f-m~VV;lctW>i!y7CeBq=pteLZi1eORM=3EN=a7;q453wo=rFEAdb%d$QY<1qQIW zMoY+_J5KdMUS5W6vr^55tJP5HMDo5&>Awc1bHPeR5>=f_UVfLC zgC%kB4L0J(YfN^>Rvjmj*_}U5U(~&jZoy_oIQqh<^nO{nAB5EdJ$8DO6AGq-ed=3O zk{eDUF(@#H#fs4}HjbqR7t+qmCDnNyn!UD^B3n4gQ}n&*e1@5J~j&e!vv=_Nlw`( zR{9SmJ1VcPUb4rmH+9S9imE+VIhq+Vcb9r|auUHXgdwo&qwc2pX{@1jcJEmo9s6-A zk|uGP>GPV;7;mN&W1HRT7_ogAy1IsRS<5a@{<5 zHN2!$a}RX{n#J>FiPRmBuP4iaAGHuYiDb zC?(w>-QC?GAPrK|El7%hl(ckrr*wCBhjdAw4gP#^=9(9CotN`R?6uct-75lk&RW8n z{dw987r-Rd9TsI}qWsv6@c27s!)gvv@!1vbzM6yo04sx_nSr4Fz!fod$v8q}>s=p% zw*39;po*b%49+oiksM}G5n>m`c_#i-iIV7S2_pm#3JwhF$ZJM>_!6N@vh5j`?MOS( z1bN!+$P3xbYx`^j)@|j@5{b=XOgk9v!RHPi_RQ0Rt3G*%S~U--`u}`>{++h&K&0R& zj}+-hcz<~u27JP*GcX~@RBJT@zcm;b0U6)*ZnNkKt_!mlS`w-CrAK^ItOVL;NDZ`_ z6V1Ji>e(LK>e7u%X1=PJ0|N(%SAx;PRM)|(@1GZ2v*-^fSFs&$NjVto@JIJk%_cY< zipcW(goG_34EZNG_$>$gSK#2m;qezZc=*U4-dyM(WmJYozVrti+#enQbD5@ivYwi%+7v&8pMCl&pBiH5NV|!|Ip8`qG3XF14%b?4C~_N4*mu7} z!@S(og}U6Qsuug8Md8Mz#uldWS{R>C(Oe2w^8pU3ebb=3R6lCz~WhTnWn*F?H1H1TGaPq-Rb?i?J3WW)h_BZ^6pI#K6r{3J8#!B{M%TPWerhaBv5JcX- zv7?)EOHDE+{q&97lPbj*BFc-Y$MJVe0R$~WW=!f?4p!-kC#aI^o0ah6nE5xS%Vgvf zhaYvP_qg-FpyZ6nEt#WRk(k-i6B@jPpfN60&7b+yKGpEdz(y}1>JoeNiOCW7GF80D zzKX!zsR=GjxEJRK>>&g5HheUkpE1lb1jnX7U1Ut3wQY~R@XS&G8;}MwA@RIT7_0(= zQbAjE!Ogi^`*G|1h6BoXGz&aM85?Aj?&aCH`RVIXJJW&aN2?!9Rr0TnpAvqKf>Xt4 zq(y8FUCtzw+UuwjQ@UoQ)Xw!CA?Q{G$*kvGqi2lS{e0TGlD>r{tDJ@$IkQEWXZNX( z0CHQUwJ|tD_!`l)6*v^!h0PBb$2r~GC6@Q?C3}SudbwV&4}W0yUyrrbjJr@{Ri%J@ zFKr4nkp1j^e_oSEQ|FqYh~>WXTW{@+MsmwJuL z5veZiMZyy{a-GzXX6 zU)9a}Zt$w$OTfHK7uU!0oX#3_`9ARm)NZ_iu$(_#m(M&h&S`2ppJ%UwZUxVpImZD8S4 z=Ib?6zAg`KV2_^Ce3%!#KuutTmPeY3^|OhEZ!7n0V7tu9hTTpHly3?A)x5Z+Mbh}A zL=Fy;ZB$ggZNY#4bYKc=Teg*3L47Jnoe_KK&)m$iqY_L}j#aqpUsENswl66?I;2*h zc$Nk0xTwBWf?UAfcmdarho9mvk_1Z`HC5zbvd7A0v$WV%yxx+#UM$o1^oRP%E2T)& zFEaZcAaQ&8Duw>eJT0%GJhL#tTkAjv1#k`0nHRFg>TBr`(XolS zb)U9cqWD)umyTW(gM(f}={7L_1Z(Pq1#7oL07Fv&>-q={mQf4Uv?MP8MPiNv_Ov3l z(TF;$?UDy9p!)kUC79U&1|k$ZtZ^t7+*u26016C$t^UCvL<{b7&4lTBe&79)%a+2+ zVwqD4*BL3^a1zfQHI7nH@_T62oSWNKws3umeFO+ldU)gicyVr~8~D@| zrGW5c6^9SukznfI(ya>kELqG8507p~_tu2#e#7}_5F27V4dFe6=X0Q7yq?~lSIS|9 z(xMbILHMp(wX<4U!SE`3Tqp(atu;^hx;Am&>!7j;iNMR|`Dr{2uB^3zN!M;$PcWv& z2vah0c)x(=w-}s-D-S6aEfqVGqAgyh@Pu1s)oZJUy^RBY#TYKG_p3dL{@DUOo z{WAwbzC-dGO$N5<+ez+x1am>t!&CP{^(qn!OVc@vmNW`Wk2@hF41OEjw&LgTLTTVn zDo>|}vUc`?BI4~!GLCt`6?U3eEKadet~fX=Jpy$0>?~7+_bB#{PUTaIvv-}QN!ruL zQ66Y*9hFsbhA9~4WaqN6j#glX5NqdWBSGI6A1 z(~J$*^~HlSpcyINUGpVz<>iM3d8;4QBNMMztQ7)EB`#scGZ0j*R~3^qSFgFY)HF0- z7A9Ov9q+*&FB~gKWhIGJ&h!Qt7Zu`5!GsTVm6e@+4lj-;_cp@V1e{N;2guU~bRzg} zB0~9C5*C!!^-33%`0YZs$=1?goq0D0pdbos>1l44D1MCFm>NMjwzP*@emmn+O=M{> zRAR=+Ghw7%&{u0~v9~#0$$=-sc>0#FS>w!NZ)0Y*r?R@#%7qK#T6e!+Bpv^hrsPB~ z`wh2d&gh44(0AH5A!8`FV9zW~D*p*1ejn)n6^yw5_WyfenhE*ncS3yJ3x$fv&z@@6v8Vs>h_2=^@GWwcLfAbs)bMJ@uP01+)A z;7Px`!eftwy%#IV{_oMlaGBG5_ux4bBgEh{pm(D|%qFe0_t&67-eq=is~uiZ z$JvA#o{EN3u@%F^o5!2(^ba3y3YEN(B!J$H#vBa%06+VDf1r1xtA5@iao+FKzDq-4 zwC2!T-sM>5-M6ECD9+H)_k&6MK^dv8s(#bh$lq=BC^t0de31}6WU=5X zzS%h7V|9ngHlB)1!h@xDz^y(mUiStx?L7A?;!oBgqyp)VK5K5H`Uy6)CH;w*o(;2 zcZJz2vDdEe!jAep6m2)2hx@5V{R1{IK3Wm}6W7PXH~&{`c=+NU1PO-!ZJp3FKJunN zu;E{uK>zG0r~1`VzMWApT$V!zbd>M-fk$U_i^TI*?oA93nZGcs5)38w7W{0G6mfiM z^Zq41mv_-c-K$?E<$b98HfRqeCtER+bTm&>p0gR*s#ywNK=;FhdwCgX)l>)LhrNO25K&H_ug#fbd{Rwx2W ztC8JBUM?@ASa>D3ln8t0nj&s%c^4_p^{k%^X%5jq2S5JDP)%ETe~C<~l{evmO?eWw zfbO^#%)z_5iWO6mnV&U~%59S0Oo2()x9^=am?r}iftL*J^7kTC1!i+|z9J*Dw|{n& zhah!+vna$1sTt}AT6uKt1pR4+Y}FdfWGSDeeh!T55L5qjK6HKJ8fA>)d@$si?r54a z647k*O+D6GEYOX#n^o=84Rh(t3_q<*&qt+fDcwrkv@h?J_87!Z_Nm71y4GjE+=w#- zKt}eaEfXmZWQ(6{8J1~ot40T%`ql;e zzaJPvo4($9k%@IHeMObxSz8He@aQGPH>bIXK_?E-9vaF=UD8b_)(!(B`oYY02E zN|n6iHW2*T2%v6fXnv>HgwdvnBDOe)UK83cy!gm~e0=sf2V$4SR-vK)G8lbAv#u)s zK@|t00WJncutSeGJsC!DZISLEEyB=ep)WaVMm|KZKRo4VUYvx6A**j$EW-=VC9X(W ztkd|vP&{8F`J3110#PD76pkK1%wuzV1H( z!S5UWKSB~7KJdQ*!EeQZmF`i7V0m=Sgs24=E1*LW1GduKZmKtl@qzZw3%73C2ZLuY=KM7 z+G8g(85hO-i%AV?<4-V%TQZ{mb^eSg^O(+MHEnKRJN0w8(ceRCMQ= zkpxhV^UZk%xykpx0K9fMJq-kPg_Aq-?49p%WJVUAt z6Y_p0LDW#Sr-Wdpucu~K4<|!feRGN#^Q-&Qs2ej1;zdgSxU}$Gvhpjo0U+3Ft-|!| zqPG2A`d3VOK9jE@dq~i z&ujH1&5P9E;bwK=FtOItQYEmkn0>=vuK24l=%~KeouxsM{Q6#ZyVd8r{Q!`Fr+E+c zGhnxZlQ^M!^6Z^1Ul`mZm~bccA#w|$?Bpzp(~7hnXc)1bmfgv@yoj(&3&Xd%cu|^4 zu#&1JgNlLcOYyE5e1(J$F&Q>`?O<}50(KeOB^<{$tIB_8l_4WENWKk_3@@^1;~v#7VG&UudqaUu0%E6 zgD zybL>u{LJ;Tz<`{^tF1>}?yJx4RKj8Jb^C=#^&!af@;IC0NuVncKb=@zJnZZHVJg5BUG@iG;!+k}^InM>F{h@&WrsiJ9Z5BW_LLE)DZBRqfpoZn5Cm7Sr-%3eZouvsDndf@62QxVb`<@B$)&onNE-~v9YQLo8Bid(G`Cy z{#h#89;AtFtvk(#j2x{FSiSd~pXx?jY0P_L*Xgtz-qMoc9w84ndmjo3I{}v2D*J0|`f;9|H}tHBi(EnMj%c=fFVHSJrM<^XXY-b-~%N^*;>lmO!Jkt@wss4VnAa$$fufPFHUp&+D zpjZ(MMTPz_abu;Mb!5n?+;-&x(sE8p`*P1BLID;LwJdHNm09q>A|@2f0=EF%nE84? z>b~CA(Cs-27^5PxGt{wJXm_AAzNou$?I|Kuwzg!9?-FyytvXETB&!gif8fK~rqC&a z|3s{i4_p(?%K3|wK>Yo?)R3a$0CsNVJ8b|pR$jas>=4uJMZ1XXQcRf7%Ih^G&UCt# zFtVX{mt7QYTNAUgHLN%6bGaW%<66euZBXN6-`!a>n7X3e2zsXsJ3hYq9%}!o6-xp} z4kyw{Z8~x}i@AT=D5&6!dPR|IpyckO!R+cyAS0#=xryc8K`4~naH=(Pk3uZxei#2_ z3AtheT@hTZp;s~*qOay#LRV|t0QDoRuJB%=Oac^8h0+K3Rdf z33}hz)!RT;FMSmHIbC3;`Fm{Ov5<-B%r^~WUk)3>-j9$xgs^(wmm(w$>9x^GQS~Zc zklPXSg(Ex(L=o|p$3fjVQo|;f9jAxh6DG1wB}5kS;=_T*6rv~{BBuYOo2Bu;Y!)0{|N!&0SNvE7{9d! zR;I_hgXxiB{Q(#cH09si9TxWnsfRiDwTzFW+&ry(3hCZhE`zO<#8Tde#AP()qL54! zXjdn;aSW&&k_^UjBbYV=XBT^SwX37^_bX{Y3gq+C`;|0|`MGv!S+Ib>kdFpQ;2kl< zEv}1iy|zh1KkLgFf`yUT=H@dmY;4v70tBAR2BuLTx?bsiroWDLgM~3 zHvge0N05^b3hvY3)TxM8UblYm_#l!k1-Kvt*)rY@E8+8E>E#|l;LIOlwafW(?wndu ziAjF>15c>Dj-tI`w!Exk2Q=Y?Ve>H3+;KnBTr~s^aqHS3ZxaP9DRMxlPY0(XX2j&I z9bB6|*X@%h)tT4n#jtuAlv{0yxzrDJ{_Y0a=oyh7mTyYzkzqdAb6}*|xCF;)3?AL) zMvTKXktw3Bv^_}Dk6b}0YUhTquhYE%b9+K6=R-QoSf8gGWuUS0r^X-dhK$fX>m4@= z33H@}0@$>p2a@R*4ARR}@;V*a{iL>j{gM4Wbh)o8Q4I2$^_)34afQ-fGtQs22tm@a zma1hO>FH`4rRRp|%_MwcxzI+_sRe_R5E0T-w1iRVqk zoP(Bru}z*~u3%s0=Du)?jxXkU^DpTj314WY$A$=!W3!n{d+VD-95JJ! zYl_NF6Fljj4rf!9T0fLGtT=zVhW8z0N%svcxQGV}vC_weZ6a2BCCU$)WUfSavDKR% z6C?P%lfTU1Q10c2w(^Q%I1VGC1Xb%FE#48gs@88imKDBqY^_li-{>dLl`Qs#_$lnH zb5&T*m)LuJL`&E{F?}v$!N#$-(306Z z;LX{zsby_%G2RPeac_jIBLS2NHZ10QWnu-WzDSE-?0doHi~tmR#`0Lw8xn!FtwX#J z5MH@Vefv2j7c;XFHGz~z-me`qGigvYs_{foiMDWPRlu6XWXlN4|7h?{*f>SOeNkTx z;Gt}-NK{wQJ@XPiuxpS5wpK;1I3SHI+Vvx{Gu5#Z-OHa;P$}2d?<)pXwk|(#ikN#& z@kaS6Dv(o;&z7x#|HP=0j~84sq?|tp#7#tJ zpoyzr3uxl;QeSF&bwviC)7^1lf1r7$%8#Ko&`I%{~ddC7x!0T{=3OV{t-PZVr zY-eB^E0DA;aA3@5QVnJrBrW^0RjKhKeLiefJ0djBQ`b3HZqC*&s2HZo_bk~_%=;%)_yYLr<;^ABW^>FcMd|-a$ zOMjrk{q^y$4vjx26oW5u7?r{qb_J$YFkcRTvsYSsA^jbjAK{x4aA@$>@XO-HJcoB` z0!n^suM*fJUG9Tig(biGa7qWO7rGt-7-WA0Frbv4Lgq?lGBwGNxaH=J4M-f!sl5id zTGJGs#Ibv-?+hb06g5silkY zT|8<#;DdR^u0=uDfaMNp@QeqFF{-W(A|kB6R_rBkXuOi9{vo%gk8ix5S%5Qetoa~U zZgJ{{?G8j!7BC%C4R8_qNlL&Qmt>10UWNJjJQI8BYQuv?od=E3Q#>AY@aF4lO^-zF zUyquZnsOAp;!@=f3_~HN<=%{qw=lc=uu?(}`NF+R zXg<&^O@*&z6y6*wfH&DRgc zA_9|xgKfiTNWtpEqWsU}d39&$;Ux2TbxonYzt^S12~T>!EG@yjR^laRgyX}(GKXy0 zfbkLG1CdK^ca+)a5W<^rE8c z5Ms&RjqcJTp}yW9Z4{ZEM4f?Aq6UJ@iIaXlupHaM8n{4BB3HV&*N(4VL*T>s7D^)4 zpfkcf;T>&5?B$zjZOS_`nO!_hs3}{|8BnlZ`i2Ze*1r}NhX$T?je+b+@{?h-n$di< zA})E)k%9+~v|nx$v4O#p5UyhY^}}qwc|p7 zAuwn_h46Y0*FXP0sRfLh`S+kl1EXd+ZYxfS2s<~U*!to?;xl?B1aAV%se+b~uv|)Q z`%O-YG7>G%IKUq44^L0~OqYaf-LJ?xJNc@r zd>wwkI_^3m98f>UPos?3F-m#aZcLRX~pb6tpj_&xds7^ykPxUTd3T{Vk*Rt_JDx zPYQ_@mAWV6PK_&)+3ild1TWimCAl-+;S<1A*GUHsF~RVZy3!cS*vOAluozp=w7&QE z`@Bg-;~%9ig#*<(aS!_mqxsH3{IKeHLOSOH|G_!mW`Gs1(JK%l)?h*V`PQ0a10 zWqUK@3SFOJsteYq%~+pHF1_#IBsj=eRzZ-Yq`2<0w5uF@xma|&IFSB5G=N@7(7dRZ zaOE=ZZCdBjws?&EDxV(Fkir%T8bZkbEetwbMJjIq5;T9MkQW^qd}D;jb18eQ_X}9Q zcrXhvkbW6h{ekkK$E(5_%)yO#^s=K*zuSOJS2L@OFDS}CCo#ObsLsA7%Ur?~J)1DB zPph6#I)29_8-5-j?KD(+gs4t2@G0a7F`m*R?iuS5cfXVlvZxBoxswA9$|yscdCF4L z+XdVoHT0$1?Y&hvI&VtFSh@_q$=cl<>1n+_gl|bY#jas3Z@8kb-07IjA+TL>zaA29 zsy$n=GKuW81AR-E9E&AGiA5G!aEqNeHME?Kj`ko$O7Os-Wo!8-^!R3Q&UU>V@MAjo6W zzF}zhYWd7@%~Lm+g0G`qi?h|hWD!5uSWP4H?58?uW}Ei=1^28SfgBWXoqn}NL~cd^ zJu(V^O|bqCJzgwc&K-mWZyY(`dv&cH;KT@CB>kkJoL}%<3_7NGyF?1ASsv64+d(z^ zs+5ppb)WMbk;x~@c;AGtfv2-wl^#CvUJKkrpK=&o0jZoW&)ovvTnPK1&xu663I>D5 zK+CGdhr-hK&dKyw=N|Sup7Xo5Az9wZRdvDfW4WBJi9G6+7tZ~|m4oyJ8ufVl zx-XJSN`je)e{uzRCP%@;O?7%&tKbQ%+0YWC;kx!63HB!;8S;+G`sb!~p&(raoJ#Rj zrY)4F>e!{CeJB3nvws+YXxuVV6efpx_O#s&;mY&_(pAi4QP`II z)JD-6kQ8S$(%GCmFXC&V`GJrlR+ZqEwDZMEO)8m=x0LY;YQL$WkWput@yb`dSSIG# zm22Y<1c5UV8?3HWrYYBeg;Fqd^(VaHAz z905whV%eU8?gTa%Rl)cRI)G=1n@J>Irw|R|0M(7>wSWajGyPgM%xWn7e6r$z0wn%P13Vig}3J zB%{UGaId$*vJk*p^PY4Xx~Bzh@q6o7Jh8@sI23%DLx%^3ZWlsm2beE0aY4Fof^EkEN6a>!7eUKXCCr9Xn5L5ddjgvNV~ z!53G|{XF7ip;)jdShsYGd3~y9Ip+_19Pc+cT=Lut6pl07mitapzo(#tI5UU|Ig`5rfj{mO4KFef;DIeGgV zRsc+?B6kD_URUSGer3hh)vPN^A1XWh|ETPQsUd|KFPGVYxT_z|?AN|=d(r^w1lGK< zxUIgg29|Y$5AmMxJsL1SpkBSpvbkdbv;fa63ZMpa(*yGZmWeOgU%WvSaHAvS_g=Yd zBJ64!i$AQFoOoBEtm{nQ0HvTbn`x`mP!H4PbU?o~dSBUD9K~fKZ~klA2$(F9;<5h{ zGY&5D;{xcDQGX?KMhdBKKCS;bJDP);^Uf6YhpOb^x@(bomCAhu--545#O%^-&~pH4M=G@*XmZPs*Atl0MlFnu&t~Q@dTN&jv{%nzR#hbmHey-{kTsPV= zDdHxnIVMxlMycSW-XDGQ9B^tSYtDDa=9#0jnZpF?`XUJswS4iURRE2y-+p%Nbx~ZA z^5Pv@VWEc4O>ZwM(j|Pai|G4aj}T~k*Xzex zZ6@$VWwrSy@c1ng{6`4M11S6rJbsHFtjv#96fBQK><{pGU^D;XmWi2>20UFK_HWQ# zrgB=QN+;li#9#473VcK@m-h;Ksn!&T0(z}@aH7>A*2QP;Q2R8{R?m2xG4Z0&roCUm z6Kpi8-uYKlj1VEw$N`EN5iThf3-Q6z^)}#nXH&^Xud*{Wwx(l}dJPU04-c?LZ%)re zwyK(;4Mgx!cMpi4(g!A4+Jjo177pIr^XWio4NAkA&-hayDt0>;-x}i^te3?KBPeRE zX@zydXnmS}OckLxp86Ot6+Mai?^d3(NC)TnqL6{}TtaEx0n>*tV}dq|pY zWv0K(0FtH}S~{Cmeo?GfOpwEqW$9uW+Uhy?%V>+A(MJu((FPKVH7M#o<%*+eUGQQ}xxHInkoc zAYhu=tp^x*=R7AMT{EE6c^8{~cIb46@a77HU#1*Ao`z=rl}Z5QK_%%OTbE!U^AF1`1e|WJf7tj#A^T*MO4VKlz2RNzT#^s{T=KaZ2QHY3Pc!ipY1yF8 z@R0rxl|X^^ko_w%W;0wVTBGGi_8w*%TSWHmz|+v8Hovmv1cvZ@D+WBt9Pv0dIMb)r z{X`h??5(pPYZ6!pzb>~3)>}ekUp5=^Vd7e9L@c;D2AGy>I%`_Q*`K|Lw*=qSAkph^OB=Q>`%M6qhmud3eh8hj&3#=YPO=YEo|;hfIS{a%?k`K zznyg^oUrotp?uz{Z2JTfa*rX3ei`Svbz^pKeFlSLVs`>lM6!aI3%vAk6|zo!-X_n@ zN;b|lv_`LR{Xe13Z+YRrf;tZtjlY~hEWgDPHu}ea3F{+Odqf@9f9)jwtNseiF~Ska zg%DX_=b3&J6X5h^0p&_TNP#!&gpHt!Zqm_*%09G=180zpvq>S4FS-4pNcOPCNE+){ zUx9`$+uAw}HMxOKXB1$a1ko)!1NBxLaFTA008Ub15C#3_^c_kX$^MDt!2KHI9_O|2 zfztgN<0>%vTv$oL6HHUDw~FKrMvNtdNsFqm4k??5!aHotl!qLcikRTeUKKLN$(=;@ z*7e;1Y)C{~e%y<-2}bmr6XZ1I`+SL|##EY8U@k{4uv_rNyQ$;U-4w~|K40QoSGvZ z1UFeWQISzI)UKVPq&*C~i z^0U~iM14M%m9YkisFx^0iPs(RauMgR`@iCRO}fs^sf+74cl!GBs&RB#J}T$yw=>a!F@aI73DpX>nMe7feA26{iH`GW2zT%c#%?85Pv*~K}MKv_H0 z%#Zr@AH1Nxmk3BApaye<>-PFVtyH{_E_pZp91Ic%OzCaJQL5Eidi+sJ&=KwoB~Oh< zRT5^9$*h{YwE3z>sFiM$$p9joqkdEKN3SA7I!UW9HkRk=-Hf`==I>5-_gJ`%J)AmjhnL)xXNWSVPXk(o_5NC^zMqG)y!_Q%oPdq~A5 zNvK1QhJpSfq%GF^X9M%06S8I zC*K7mTx36}uB)|XPuzEn=Z!0*eKf(dZep1+dsQ%gWKR2kEuDcG!pQN3N}fm(QLgq2 zvDCBT7~{5c+P<)8vwNqQo7!+fav-6aE)*PuPedc?uVa3|XqZ7`+T2KSOiRXnXwxIM(SvfM{Od>!%|mc%YZO)jyNCQ&1`I?2+X#t;qN@0~_xaOK2Q zlF)##ihizbnal8d`Tm!R`{tw>Cfe-d;}#xJl?T!D3mfm8g2VUJF4Q$DZsbf4R6?}c zKe~#KHI^96GC2?E;#Y{K7wlz|;}`N>AqF+&Pcv+~jhfkWtPDJ)u|Ly*CzP(xEIa3r>gtGYr?nfoZz zBdu@E@`91zK(w(Nqksn|!09gYgNXy{{gN??)X~i(4-U~D(MyjEF1U(U_oS^MI!4K9FVi#|C8wo~ zKy{)mw)&azy5iSrdz*>{l-V496d_LLTg4TviMM;oY1IlL>*LHo>4)mG4ccNVM=vJ& z%~a0lJAS0P1?G53`G3F|)<+w~e?m!lz>dFR%x}?zmHqKqnDvp4{edwLoaWygLw~iM z4%iGTJ^?{~m{ew-{zk+U%TlHsVfTW1o*VA8?tL384UPA#fLNof(^Qz;;Rr zDL++~E}rq#boAibI7;`s{4)o^SVZvIoAbQP#wjXJFYq{l3C8>ENjM-HA6a{tU$8 zQEm;CuBBHOBr|O8R*5gceB9u2>$Vl*hbSzbYK2^N1j)(3&LiX`PnSFoI>abmXJr+t z+gv$%sobWn!Lnkb_t_$Tvqk7+Q28Xyq##g;62V&e1p|&xQn7j&xTmfJgz=PWSKfKm zCvYf!ya?XOC(x-hRG?D7l=Qf;49bXIii0oc4JafL2YeGP2xLpA5XdbCZ(d#NHT3F_ zsoMu@WFvI1RTxpQze`UpBJy*XB!-7Z!L0=z6_tCP0IZXx6Zl~WyIANI=FJ*a4AbA7WyK> zJTr`0V3|PwX#*Yt{H`ihX;*KrcWS7b?2lG&c}$GRdLjhN@5_qo6Wu4?seBWJzG!eT zTD){`5SA4iS&c4dYQ*Tw(;Ja*c3dqv5rXZ40eu!qIw4NYal6#DLKD683@UH>gri36 zuE2%Kac5{YTjZGa$Ixt!NK%hJM|iat)P9YCZ6$JF0tZv&-XNxY*!T;{Ouf_S;ifCt zsIAv${{$w#WrzO?VYvs1zk$hb5rviYG4#UvNYoy|gzaBDRCVq>>`e1BfzU{Fq>=9LuP$E#;if6X@D0NlL%>#Lx!sY+PY3 zyRNm7BCdCzVYxoxM#i>5gA*vW(mNN&>|sOTk(v{fLvP7R#1`mXz1L;m=P#R*m^p2M zXTK4aXIDUE)_;Fn{;r59+q-a2Bh3$|xy3mzUZ{$--vU^Y?)|kSEs*jSosgtLeI|a> z8K>MEp)t`rGzoB{6;G%>1*X}ulAZ9jaqCsm(pEIPdY+F4nloc2lf!`ShfVhra-fJLboW zS6~a7$C4Rg)bxZuT9y=%*GBolheGKI*E_siYyz~yeXQ4t%J7BpY@0fRAltct6_hpW z@Xa>O4DqlG8O~{Z$(Wk(pVY^i>aQXF4Qqi&t);Huq`oyPBA>-}ZJEJ5ah!AD04b$X zY3#5iE*v^FhPv(Gy2TW~*J3CIXj#ZhmH^(jTK@gTkYE);z^&l+p&%s={19{CBm%S_ zH#zw`p&`~nhT%G?ig|eS*H6j&WHvrRgQw$>B=@3#pYwz2=Pi?4{MvYP)bwW%5FHS` ziD*HHSDw19&wOPvjYgr{E(+7}b&|xmK9B35=IuE2T~9L~n@;prYb9mMZ{tv4mfV21 zB{%$o5t?>y_~Gl9shRsDJ1o(KRU^K-eaF_Xc1)%*Xj~pzCt)ENgT>o#rSiq zB5AN$+>;Hp#7jA>7p(pqyqa2s5{>STpl=t7;Ly!@3VfY#2rZ|fjUbM78ndBYYyQ#TmdGm_imr3S7G-@rli7o z_c0Zc;`Xst?tV-*t>mb2QU0Y0pZpIQj@Q$e^xwMH?RD%p2t*pZLEow2o?i4l*GlO(QE=DH^?ROVA>E%F;27ZsNV=fM_HXhx5#2zD88%jZ=)I z5p6lYWBGDTd5y329&KQ`>?!8~3$z9-6zi+W*(}}TaphD|nU(>dBXZ&HR>M zG29J~6>qti%WlEqmsDl{0eRRS9UK3NTj&8%{z_lieoHHC43AcNwny6b2l6~{pMQ4? zr2%1ofWDliuM^K1H(^CMAJ)B<-i>Pgic)R8dnPW<=Vf{_QXA>)J!W4yqZ#g>o zm!$Sh_%5~cKmloYu3I8tR2lxitiQ|etUpSwpTvFEzeftl`n%0~B+mNDg5L8HMr$^X zc?M@YTNvc*Py;Tvqe~ULgNnD?D!{Yy|2bq`OuQUQhq6Fx+|B4M_0r$vbB7WAQzYJ> z0uEVrz#-eNa2T1sjA!MoG@rz#kYnwBNYLJ9fy$LJr1&H0O?AL<6;?1bTi=mMB4R`bv?65%pt2yFO4!7{W&m1{S)UYcJ!gP>O4bQxrV8FdI5JS^u#z2H`S_ped z!(zR`Tg*OqW<7&$&7-rnMT}5WlWa;axJ>+b*|@z)d2_?OL+c?nxfvE7a*Gwe?QueK z4dF8vT{60CkV3;4wQ z$kFR60?HGz!3j8nWS(Z_OEmp7o|HQ&j~2Vr!o+0arU|L0N)pf{D0wil$thBhao5T{ zkjaoI4Cas=-)?>B*^xq>(I4j7+&lR6MAE<{V=_vx+c&nLXOn9%!|8Lzd+Sh|h%<0`(U|Pq&*+XSf%i|4^IMzvkC2@Q zDES-Y{8n1n{^&txdn9>(K+XeG`ZtjCSX-*$BDZX%n?spS5MLHlAXlPfHiE#KfXY!jv6cy`YdI!XoCwo%*Va{=ry{H?!Us&TF>QHWVfE4-Oju#VMDAhwEr=LK>zBl< z50jCs4HS$_=5a1olG*2$EA69M?~1~D7xwQam@>l1PW9ncwK;9&?4Ky>YcR%cBhmB$bdqy48(F}gPxO`7%T3J0ys8Q?qu@}* zl)BN+FXpG%h*Feo3^n|~9hUY(hD!Te%m*^olwO6DFUy9XrG>7sh1s$2fr=8;3{=Dx zrjVl-ZqM=Y9mg$l`80R&0N=j;kZoE0)mzu$1Vf?1@XfD5cKBW0l{u4kVntp(t4l-( z$7uXxp$Zr3k>;0aiYtXBeQ72?<2pT_ywNnS{~mJ%BhQT-x_~7;74bo8kO2oOf06Kw z0PK>(!HIusnn5vEt882|Um1OZJHyB@U!Dc$EOMB!U&kF5XF`uPa(4>UM2?M7%@A|@ zsYIt->KO+GQ!kxq?DKZzUbhsG;G~qzC`Y^+hlAxiKKzyAjfC1 zK88sjtVIZvVMcZocv98x>d)-e;1xIK#g!!W|G2yIc&NJnUr&2!dsHfgO0?K!#$c>% z+Jv%XUkV9D$iB6!R0@rq77@aO>{}(ogr{uDR@Uqx#F+6r=gu8eQ$O>({Plf}GH1*^ z_j5n@bKalzeh#ZY=WQ9v(FKF*{7>2QUK@@r64~hH?{VJez!n>>Z4wfo$X8vNd5})yc!Jr(u@MkL-;SfEn z@xOvYNLkB|P8U5$BQ~WqDq+&(o5Uf)w2O2n_k&v)aL`5ZQuyIBCy$hU(M($ZewMs> z=bkWabpb9I1-9ir@3*$?Aqd}^Nwji~7J#RNN{`tLY`1cendR|eBr$%=rxUxr z=f8d+hq-)r);^uLyI4N*%zsoA(RU$5v7<5|I=kW05?)I#F>8UiilD6*ih5sOjGL?H z9w6?$-#lY&~CZ?XDGXkC$p8wok`N#P(ToS%XDjxk8WZ+8YksFTWKO zu03L8%PC;!YQOYULr|GUG?)c4Rx@+Vq9na#UluA04b~lZR9ke>HeI?%cFe~BN@PqbS!0xd* zMHuxQW-pm*7L-CI3FUaaHrRZUkh$5fO?H)l`PQ{hH25Czu3Ph|L!YN#o%`XD*kzqQ zfw~z>ls}&Me2yTwePA=|v2FA9%F^E46i;6NVQHbg``vca`=pbpA?gJm)oq(B^-_R) z*?0DzxmhRteUx|{xV?--1s1NqJi@^v7x}^LU#@Z-`xO98rh6B}*MA*jVUrEG`e@4r zbCx#k{R7Y6{vG+aX;8i(<+GsENtWV^X!Dz}-^7GvH{Mb^tFSF)l?$w^NYwl?JM%N`PUW!~; z*uM1NjFROK^L@fSN&BQt7p|-n-DG~?P0Hp~-}b-x7PEAHV)ZjF;q%)%{Fmh&Kff*M z;a&}k^Ka{yZ4?@qw7@Wqfk%?vGfn#A0REc${0kW5tu}Hfu+TcILdjwTJ7| z;xj$-bhh8wpOCpdci-Z#(OVYOtG-FukZ*E)Oj;4=Uutu*guKSuoVT_1@Y}R_KlTkC zgBC`tZGuPCu6rUNcMzZ%w?^B7D>8new220&Crdo8#6bZs-i6qcxiG*xi z`3sO|i3n4mW^wvn7Ve6W%6Ymvk;=v~qpnM{#r@~Jyk~70S$Sl(3b|)v>L&Y*rj56> z()ih)cKU(_i)tk`FVEvVgnZN#$IMu*TI*0(U&FG@%9`4eX+3Z zvbE5SRy)hJtK$TBe|<+_5eGYH>-4=Z;;7nQ37Kbtd#k)Ag zCY$+T>y)?1V=Gi5uC?g}&Xw3A-&gElkaR9a{X?ux)*`(lR)OSF<>(dtE~Ud2K0C#i zzPS=xrF+DtDG5T2+s&a+Hsom{05yS1yN6-IiCuBH)M#yK<2m7beKBu`_LDyEC)!G~ z=)8(9@OxZ5d!YK+^&*Pn305;g0*9x*eC8>ObrJ6jLS)^l$k5=EDO;x=^d<~a)&Cuv~=aXnCKi*)ckJMWue#S{@GTPcH|^MoIrixGWc!w=NmCx zLJ5Cej9-qb`eK)G zonzO7JpsG8j;?(j$7T2=$lYi|(J_|=OJ`pqulPD*i{m*ycVW_|UFv#&Mf4w5Fj~X* z*~YMI*_FUc+sZHhlX-R7rM2rXS%aug~0l+D?_I>wI%*o(x~^y_=br z@9uXzynq;jm1s}9|4mn~J?G7tO{A-qoysSkQajw=eLg}IU!s3be-?|zZ2b@OXKitr zeZ7l5_HxB7MQ9b{FOWssfUU%V^Ez9{A$#zGC?$zJ=V133Z)^?98AR#q8zA^pZ0}Ezv z8!zbyRJ_+oo_!tLW_k9&i`)xelWy$xJvo2V?Ca@%7g?UmvxFs;R?exHEYvcK8zylHnn0e037$V5Xrh*{II z&g1r9))4Iq6HQ;m+(}6OyKmil+Dan+r&AnTE8I3MY((L zy)_#5cpcV7q={VG#kza#omJ^u>7O5URY>e^M2rXu>GrgKF${e4dM z#pQhqzp3`PXU1>8rz?&t-^DZ3QIe*;Z2(Av}@_6j?i#t+2{&h!NkMH$oU*2NZS!z=-P#m+z)wL_~ZFe{} zC7`I*en*a;Yu)b5k=a#R`w~ZkHm;3!6I&WALkQa6#RzZcv5x;0yg>?LesH4*^vI1E zW+H-&6`Hi^Ch!I;H0>f^9gqNDb**<`r*oQ#X-6-p@x|<`cGp+gx92a*6Ccmx<;vc1 z%Qk_6y`qELQZcdN;cSQQxG0o3aAribXSst%3v?a+UNy4kioWnbkDBe=zgQOP`A@cs z^}CpS<6_u16YWnCJ6%kRD~6TNwS#uCy!C^(LqIf#EM@=o_9xY+ODsOTIg8(|*Q?~Z zV(gpr0bREjuy?ei+^rj>Yp;zWy`x($?iQX?#ktH^X=}g8jhA_zxz^`a3KC6M8FO0f z`c^D~z>Q11nbGp-Rng)k$-#6`=GiMp_qVjK=-IA<{23}Md@S?1s7gZzv zlK4a*TRKOBUwh{o5i=dVD-zzdHJyV0Cen&&?h0xyxx2Sa6BN^2Gc$vGOzaeQ)(~FZ zqHAFEB&h1irJ?xHQ>QJY{S7T$cipHDB~#EQ3!z`F*sPy(#0?c!@VN#>^zE#l8<;67 zrfho7wVyM(%Wm^{nAI9imU1z6`PHd6RdpjOH|V&{YTC&0Ab&xdRTz(HIp;F2?#Cy$dp}D2wy@e%FU(4*nTN8n9y@Da@ItQED;H`ui{1A) zv%`De6OEv-x?^*R+p=ZeNcg|rfsbFIb?TvU>OU{uT%DIceq$aFkx!vT2Y3v-^wZC- z*l>K~exXZY=d`}CJSa`swu^#gYC{NSTP&6h5n&{}ms*zQ-Mpy1ABb?)>hPVY=@{WfL@|sFYcEYpGfS)ALQOZ9!Lun zlq7I${@U&z_)Ut>==!Pn0hK~2@Z7+@t&MZZKCG|qwiy&1yA`nc4spJ+(}Nn`RQ%AZ z-UHu!y~XBI8f$A`g%CDhs1XZm`r7!^%vdQg=Hsl=-a_e196=tDO}duND}}Qf-2Jd` z30u!ua$_DpOxqTa|E1L(L{-)I+sR#x9pB)xziNk*?pq&f-x_&0yZo|i4YyYCH3Zgp zzk2;j(SWxc)ByYW43?`mu2``C>yRTTsoCk|aANjOBd+bYF>*^eKg!6>VfT7J(qG@s zPdG;`cah?IWoMvmN168zY2cO6!oBLR5{_NiEP33lH$S6rcg#_Ps*?79x}OWm$5}Q- zu6PoCd3hE`Kt!OS|9vY9*g@r7dJ2QI=1uuh2HLk4ZVBT9;K!$|0TqhZz&sVlk$~=~=Iidz(_yCmEc@qMdlo-tTU3YsSVQ(jE1*h|8-rFX7MGtdCLY zugy8w7Psc^fseCm_U0ERYKCVBX{;~Uuxrj+*@X*^=16`Lzo~Xq#Q%M?@VlrS*_s{y zvaXVw@51(dwWI#?UX{nb_Wob8?@_+>VM^6pswxr>tUjTiqbxRrmT zrIRl{iMUS9_U_B#_uOiSq&Mg&2uR;H7s@}#>rt`zWm)$rVND8--QVn!xt*rUzqU8m z?>MrN_t>**N#-94`64iK>yz>I-Qf-Q7N_iFOWvEh=pXK*@iEjdQM1BfR z_7Zi;z@k%!UL9&>bv>|I+llAQfpc>9o~)q@KfaW5ADJt}Ie2A6LUpjB<@?5@2 zG&~%XEldbB@VQ*LvdyS9Ym<9=AYoUZg}LjMwiTQ9T(?Wi$nV+p;>934Ys71VASJd9 zoXwK-bm370VR+b}=u5H99vhr2}G`&(eC~Tj1Z^4?ceNNGh&qT8*YcFcm z{HwIUKzFItTE)&;3y9()qr+#Czj14rwmE8EQRGP-7-ajjqhJvzcJ5of^73CSU!G_> zVXJjQ%NOG;Z4PC;*tSUfy!HIFrjA+Ne~E@J?6|e=^IYkc&d<7_`6ufqOxUvBk-27V z6~|v$f4aU%O=`cfrkaLVQ9>Y_RY-xQ>eH^|#1>gmzNVNXQ7SwXQWoFlnEq$n!QGF0 zX6MvrQflQ@EEEUC-mg&z%lLe}lVTOW4WpvLH|+3`&8EoqQ7!w{Q46`!M~VZ(Wb7fW z^b(waWFzj**493vW$24g`+udbS-D?({ZRdJ_PMhq8~4xE*4P%zUxM2h`K*gYLc3i4 zu>aON?u7iSx1NZ96WZHhrX}wpW&SjdH!5YgTy%V|UG9Nny+X!5=Ss8g_gr`8GdmSE z8dfWHv5x1pE~~v1dD-mT+?5L5Ly?(JcU@rnt8^hLU~gmoxot~hnydP8Hv{MIT}Uy{ zowqG#M^nL@Qa{gs?8o$1C68Gbbj?ikJPYUg0)zTnTO?1J++O+sUr`fq>6GRhmrd~{-w1Z@H%2t81>CpAaL2Pm$0TG) zyyMgITHZ+NKfz*me@EEHT|;F7k!SSUl?mD%EdC!3$UgVhT%*n({@1|a$6L-k{##f< z)FIyETf$b+Ag(H#z7E;=_Wm`j7o;;SI6g`~s8FCD93bEDlXUy*fz6rSrWb+_^UO+3 zopo+5W|n%~R;=V_Pf>RgmFK4Tg_wY^Y-hUM;;WT>?Jr&1{ONd#ypf9Owu-aiB0KJ2 zmzvzETeX~`bYIx0s-OE*gEFJm1m zjacW{`dq5dj^D+TiV4{`PTAH{H}{ev?+VR}H4DHl39Kcv*(LP2#f0aQKlnR5E|512 znEffXZcAwYX0;89rv}zFeX>+`%Gow>I>*^}qv1{RDjxII_HUNzd^+KKs^z^Hb?BKC zwr|aIkHeSZZUr~zb-!X+ldxM?(ur{K_VDYKBD*%e>y#WJw0urfUf$$$zvR6%cHHEP zU(vR&JeYvY6_IkC9Jn2U^LJIsK53a#7#8wY_EzN8A;NsMgF36LNyj&qpW^nsTufc{ z+NSDZbG)CseU6{gTbfH4h6eY|-4`_^i?VATO65pF-n0?!QA8>Kez374*%$ z-g{(wMk;qqY5seW&YDK&kxugtr%f++nr+h_o7$a`cMAc221nHo-ZlOe}uRF`?|iz^%YwenM-vE)k$YY8&)UZZ{n>U>~f>j>|jv+ zjuoOu;{I1mb)*99N8Lh?D`Id$7^q&M*^U*O^ijA3RUFP4aS84=IB#NMzF1J1OYne& zip65VeOy`?RNJU)XmW{S1%$XnMF;|7VgxR8n=@y0;Cbj1Vy1=@& zPH@D;+-$L+l99oAE-fw$RtQdq1OH=iTo?jI04qWOV*)bPSuD60dEUXNT ztfqdln~Qc0N{a;#atR(<`~xkM7Q@8F{fQPlpalmi3F*|}v3PVmBh*ZFi!c>u+yo*V})tsnW5%C;s+uC80@dC#xjc^2&+X1K(?V&<3$97!T#H# zLO3Q^4X=TbRAZ-Bm`nr9;6-7?M7ikHK&gh~8KQ;(nlXTC+V10Ag8x5MV;KO_pWu-O z)god5{~@b!K)S&e<{|*H;dok5jYZ0H7yt;CNic(~781pC(W!x~M#eKk4Ffov7OOF$ z0wUlVf5B=j14Q~Gs}Zag5v6HGELKba4=Tb%M48Y-=q~iX0tl8#FoUed;(=77)Ie6# z#xp_<12~%wt3`xG1qeWDeq}WSMEWDEX#j#p)glHXfWr%OiHICZ4uh z#Dl%LL{MrVtC8`{P{RPuro(Ds0#-nj0jDQ6C7z}x!q7M^Ow)>3C{7^YA%bT@E23K? z|0>itCb0~`4`AwvpwuAv0mm~#4Ffcr4ySQAV3grSeidpQ13;RFP~%Xoh!GLMfhk0U znb3;p=Cce~%_NpVR^x#ID}qvk2sIqf3^feUY&xvQ05ygK9Ta}SkBL1snUiWPsue|m zGy_-?!7-r~k^Ora86Y?&u?(^r1FROHgAknzS&fWmgqj~V7X7_hO+&+}1_-$EU{j!9 zSv|1}A#<$8(6u6fY7CHSVBk*M073Uc{8g%_?BOwu_6Lkf(Vxga2lu2>fbqw!c2l0lxk?y)2TsN z4aPG>4Ffov4y%QM|AYgrNPcBC14NnztHn^YD1sFb1C}}TMW@f|-#LrGnHA!Kfu3ou zFa$sV>fljo5CDPWnW2UOoK1(-SfD9HK=H~ite)6iXquNtvq12os9FS8l^9S&crhl_ zBC?|yBdngXNz1eWM2G-bi&6twjf`i8n&~-!vM}0NcAtQhDurtJk(;lp4rtWIQv}OwU>TMXGVYM8E*5ev#^lrs&K8 z2(Ua5Rs$nX1ONga$Anr$TeJTv)qp;x0Yq3-lnakigRmNoXNDREa5f#O#t0JxaEvko zA`B2|8d8lx)gp8vpkl%@p%&3b)(lw9B$y$_9%wCzN2#H)8jNR#8U}F2h}H0pfMT_Y z7^;XEK>!18_^(pU0FnO4Y9z3S7edt{v?0NzGNBZaPT&mTgGnfZjK%@2PNxMj8X37dHSnNPiee3 zeWb=AIxJT72g zF~Mng35+-mToLBY4-nxNMu|c21CD2gnrXUOZpW*#F)e~DAX7b@DN6+fviTxGeZpnG-Dvtv>@dattcXfXIyO~#sH9} z!D_VH1`Dce@W65tW~SN(Z4<+Q)l6a;Vt@eGP#C2KvKohsnb3;Ar-lKVO^4NZ91e*p z|0>lC0BIVmrkC4*)GYzjfCw{F;DU78VFVykp2MHE0U`uy+=NkTAght_%uvGs&Zfg^ z3?3^W0?H$PVfDl__{>2yT5f{{D2YcdmIM+n7%rZ+ zj{ZG04B(6rt0B=-wIbNukTHM|7$DOBFV(n-avKbA6@gl0rrZX75Sjt2nFKS0)mQ=- zof?GIU_3+AFo3h^uv!>6t^`I!WD`$cG9}eGdby1VU^O0IEE8%Gd6t|ZfG`PWh*|^& zES(z2Y789D1U0xH9zp%Rvk2hxC#n8T5h^HfWzN8&G}b%4ItKVL1YmREn5ajA5h{jeFm6iG_4GIc zAQTG>I^2}%7-T#%)G%1@)8NcRH4BKvfpS_L6ZIoFGQ+@l`4cTLSVn+npQvU* z$1_3=(vIE352*8KO zF;Uq8D?xt4873Dttu^F~5a0}*8n~F?c!sE95Qq2^=%JiJD;01UoB*h^2DDAz&W7IRZ#cu`!iE40 zD-^I3bra}#W~lj3Mmm;W<{%~pLZE;%OcWO2ka}!J0L*M9GvtgI-!$gi9htwuB zh|EQS|0~iaC53U_7NT?FvT4ExDjYBGb8OaQ@HM5X2IB*c18mP08 z@yt-eq@F}&hMxXL?L5e#X`>8MsLPNuOs?#S)r3-mxCU@F%?vdR);5Fi5v{Am)KHx; zc)k|HpfDZycFe5_8m}?*3^;hS06eb?A`48g`gbO^Fq2S$uo^^l>BJzcM#eKj4Fj-X z$ZF(rrleJVSL}#GiaeQsAKIg}7`6&IpaXwlCjkf*u=Ef!2xd!GbIC# zjAw=#26#3tUW*8W;4DzZzw(*^CjC*5A%z_ndI}uaU!bT1TdK}`v3LfJ_X@O<& za5yuxOkLDRjLePCp9Z;5M9`#-xSx~<>mB~;-LS0EYF62^~OsDVdcFV{6B9?PDxP1Rk zDw~sPZ)GI8&#gZq#))tfh=B{;%qz8*_nKH_+!rZ`0@c8&xmv-sjxfuJNDT4rt_&RsJPv+-DWH4 zF!4SgyM{=@8N=$r1aBi=k^=EE-vW(g2|;XNaFY%Zz4;>4^EVUYuN(25Tom&ZnRD9?Vx@SQ8YOBlQVzN(DhD%`L9gopYoVn5XcA5P2XPsx*yxrnDvZZ_+0=UK` zWmCsT?Cl4JIbA{bJa^7|SLg9E_p(eimuE4h>&zq?+Nz}#s)`Hn2{8lCbq+++$B>)# z1^blPqB6?Keg``qq#u)Ke97h>>gZ3jx;gD9P~9B)>2Z5^aHHWm@X~mbaMx%Pay!g4 zD+!vfgB=goiA3$J*xQk)yuA+8us_-r->64ud;WXyw(iij;8ONaJ+^-${)%@qE$hL{&c0 z4x$k&DdC1u^&2exW&ENjo$r{ysmN^U3?H1n(K_p7ae-4Qx)q61T@AZSar%nZ`XeX$ za|10JT!te;W%#|FMtR5ksZE^OV-e$DhkS<{Tt+-|M#>6gGRa^2D0XVrr$%lJC=D6k zC5n($>SlCSzw&P+CXMIYIec?B+7wME2C9Hr4cII}MWr^{4{{ zp}KWAnI}$;1E(U}GThR>p4V{OU{E92+2mZ^8R5-Yb!elCXcTYxh-Gm3{f#d_|QSRkwS5_h{@)g>% zQN_E3zBpP7Y#?{E7r=`{C)^D$PMde~;!q*^e_;R~1-Oh(NqY-+MV?CIZX&sKNNPym zpLKr2h)JFFEWJwn@N2Q+g_*Ghxm3Y#q}H-qFZ)xaGe?R;8?whgf8c1Ua{JajP6-@u zt9El79tdr48}9L~+S^WH?@k!3HE3>B`))PToHwA-ms`Fw+Qx$PEnkJp% zwVpTsHJ4wfU{Ar$g{>V+uJ0DA(yjFrUGerl+X@f;>&R>6OG=Ude(M}mhr3T?*RRwkKY#Bq?qKX>KM)w2L(V13fn z61wyZHHhiD+P3T6du8s+)jbVS>Xq@6(~0B&zXRnUkSLWiybE4z{Oi@oy^xf#AiuUUXz7fsg-#u%U!` zfJG3k2X3r3<*z}Wsf4j4fRn@sn3=2&-)}`dHQqOBa--P6yj4}ICO19P^`Q%S&}a~E zJe#wAjH=f#-Z!Z3FrKxq&P|Y<^PDZk-nOrE327+R&64!KBQy1@FppqG|855zenFyL zQO!vQ^?JTgA3Npl@Q?B~ejP#;C!)$!A|e%(gTn%pwSBxz6|4?rdzmU&A5(}TypttF zwyLnTgs(?lnn#lSOfeOvQ57oDk;j$KhJQSglgiYC!rc$t| zPS-6yrBfVmHZJ9Hb@my2VzXdh>G&wsv!;PER^}Ocd{^+b#wLt$=_yV&QL4B~|+#LJU{#aF$=yaTx!LCVLGu*)3H*gVl%{i@$Z7?=t#==m(&xFu}`c zD=;i>BNj^+VzB_c+YKxhUUW88i+Rws*lI+Jy-qlD5@gj(5BmvhO|3 zXT3ioy~lJRM_P)UOL}9~CVOYi)CB2DMT4(Zb9yODZapQvA9b|!G*$~0=<-Z_OVFa0 zD6nO_t}t`;+eQZd*sSJmCo`y$$(ugIe%xPMIOSpPqn8q(WKm$L#^2LkyqiSkyl z*7UGaD!##AbO;}jyp6XasMgDQOGQxqqgv!nOt~9yT09V*VwJ#15k#<)0ujN^r3rSp z_#r%RHk@MA%Xw=>(Ac9O73)zr`y!ztdHfOh8WcNi$VXD*k!Rm%CPzG5^29>T`Zyb_ z))U<$XYNNNZLMizOQ61g?`5w&^s+R8zp3$*p1E~;tQ7Hm+XlI;)E>!Cpq0QHETlUp`zrALW0% zeB>yFDEgE~;oBR{>~PA7#pq`$VCa9AGo@7E@t3CW56{*eXsD?;NIjXVN6tH!BOPN< zJpEB_CL^Qe<9swEl>e|U zU$0M_u?Jv5asQzah%@Nz2n*od30AQ~^55VRBapY*UXY$ea#QG`!2^Vu7#hq>!UF;` zeu$VL@Nn!1kUEY6?vcY$4&1C@(gG};Uzqhj;Fg0QoM3@C#6XUYeSq;V6(Hl?C8mh8 zwb5aAQaVv#U>8AIRgFpMQEfDSX5VS7H~jN^-xf`k)tN23q zkyEPJ_O-lrbIZvAFG^eq#i=HUtZ2h#XK&lx{)*CBGfEx2ZE5+rv*4c|gB^&na5*AN zQ%b$ygXk6n>;PF1T%ZMl++4777r~`+Zx_5B2mXR!zsZ~;vVvj8Okvlh`XYs#c6CWQ~5 z(*037_!hsiZo#5Gp`Q6*7Y>2&=E`XPtHUe1eRVu~L%GgpS7)(aDX9u>TM*tXsIVg4 z8%jv2B6tHY1bG8g&}ie_hwKhh%`O^^Kbc)9uF}n}Y_Z*66cnQ1wD;nWIV1>?@WcJt z_c}aSuk3jvp1SPU+kEhK*gxy0o~p@0{>(7;9BEGGrFc=yv}0vNVH{}1LZ+GA&>y&&*y-U>F}g>`R4X&+7s>l9msu2p|yR7{!lHn1z;bcH{hi9YEMQ<^feQ{15e z{v(|~PAS@dn@0BJdIy*8KqW+;TaQ) z6OET@XsXVOhzzT}$lKbbRu#+}vbaL0!(d4f+2$zpp*U+4>*Juq32jX@1_PsG@$M_j zPdaqzpU=_F>;I6m&@^7sR`8N0pJ$fG10E6=@`91EB}ilpF<@b2>^2e^>!L-*paJU* z4cK_e4m1 z?hn?G42Cy71tdCsam~8X5G^r`Av!LY8|7{4M2ccV-c_~4gFcfk({ORW>Bs};pIoNI z!(bhk?1bh*2_FC&LJCBluD>Uj@$_A$Zg}WxZ|E|WLzU{S2rZ8?MaG!*XO}5+6_^00 z42hG6WJzp=E|ZMxq{~D!c6TF5{#&L}kS{R$SxR zo9#jmU6g67O6GelN$r=}az2Xu2KF!V z8`vKcz9CIvICpviEs;V6N|OE-S`H1PkLk;0!p)kFVGoWAQW=Pmfm-~BNq;hGrllFt z2^67bjFADFv0>C3Xhulqq#AeI_^f8bmbRDXrI;2z^>T{)Lt>eJ1gRrhlI_gkfO&bE zVQ0JAX+qf$1@O;xfHKU6JDBLK8*h_NO6*i*D=A37LwWTDn1IGkBBbb+%l(uZnHHeY zN2uMQ&=E4HIpj*kiN%0Nk~K#lHD_>unon&#sJz8}74Zv?; zI};)~*iGaVq6+qZylWBWcqWX0Qo5(O>9q%)+O6M4Te!A4+yqf(XhxPuJ%5PAU+0{C zx}<^@DCQ<@Cl-`cAN6R7w-};0t|l2&oq?EwV~4Q!_F4cVZ~ZVMZ=D{+?*FhB9-Ew( ztrvIF;mpmYN$MP0CmZ5K<0VC2PnoZ^a^=}NkAxzY-3o?XGFgIhrL1L&RXRruH}n>U z@?aas3-;xYC=BypOR6Y&H*QJ5MMibr+@t_pEUz5DH>uvh#{$X?bI%fLHP&^AvN&Q` zTZlThcv{?srl6$*-=rRs0sko@Ns_@tFr&>A$AgqJU`Cy%JV^Ed;C?f@M?lBg#|exDEIVCblz0&hohaH8Sxe zi={)~Tv&GrTuNJKEDyGF!1Zm7!N@nqQjo(S+i_Y)2UgALp$J|~DkY?d2=w%IRz#3K z8Z_i;bU0d8o2ZA94fceP4Gu%Ms*URB1#O`;negTlX_F>mHew^PZR4CZ$=qXv(m9 z_H|~KHBfs!d!?Pnd!DBq>ETc9(mUPU+j%}wFomF_#*y-&%;m#*%Q^?!2XY~uhquuT zD9Iv4sPZHg2fTq_q;sR07S1_=gzbKE5(AO2-H%Qp3@MV1KxgRmX6SR4Lmw%R2k0aL z(T8-fpT2E`uX+e#7ioXX0z9eqsV()yO?+`KMftd`0{-tsLbPT24}s zmXjR(01`jmNWM^+&-(T?5Cq;S41>U-n_z^Q<*8`=+oW|$^lT4InoT$N*t(bnM7gW< zc4gf(ip{8MM0Z=91kgMl$9+7V9f>bJ#=UzEu+0ROXcG zey1~~ysAKJg*Lc;?|I&{xgaC4E5*+&E49H_A~-*w)8JWWP>il+rL0bjG zGA&5(ix%udLb~A{$Sy|@SC=1YW0+@l%$5Lt^iGK;3m%yf+u_= z91=SJ!AF9jPtR_Vt-KWmx$>-KbWmO9-#V9A+UN+2TII@Ryf=`?<=b(F^Rfqk+-KS`^Rpr#J0 zdO#Bo0ACJEfeF)w2Y3)vbypI-AwOKlS%%jE6ADN`Sobo(4~L}?3a8HX;6FeKoeUTb zu6h8_O?NMFu&luuChfd|^*JFNR&K98`Bi;z!)l$3WvjaF;c(kBiPA(h{#wTI_dv_* zeA|G%ex7C@tsYL$Mt$F)6IPw zK1Re1oUb$4tbe4)T44{w(lI~c-AwiR?WO*U3Uk4F;o;>10_hiW_osVFOSI50qMN}* z92)eCybDCye=+dA>2HBoFLi1MH{BE!Vw7s42R5gqnm`&1IS#Cr@V@}c|2QdqDJS`L z^fm6MoUhNLth-c|ELE7bh z8@p6SZs(F=&R3*b;*-}fF(>-Z_zDG>W6FlV5zh(yj?a_}5ex=*V&pxN1E9S{0`_ve z6Rsdr!6tB=w`ulysDyu*^uI(p=@T4;nThi-f-1+0WF~@9i6MV^FdYBPhF_TT*kMWY zEg`yPVtOAcJsiBdP0dO+Qa?}=n@PMm3V~x+x9oT{NKvax_8_~Yy)zL`lN?Iom-C74 zEV*2YeFt&s0)@jHD-j^MUa_t2G7%lS=gX1p1V{P;Qwnzj-Aw;BI zgr2$89DrgI(<5k6Tvu61FxD}7rfwxM;&O{HYK1=~b^8q2HYlmj(U3h<)C!g~4Y}oz zdlW(O6S=2NCTF~7tY^gW&vbzA6Wk9|qEJrj)}TMd28Td6SCXg#0Bk^A2~g*`^*#+=e*o7%D~X9C0U}Bg zeE{DK4#7CC=hi38FG+Y5uv$@KXm1Ne;gs9yOLA=CgKtLuHLBE#NFM`yZn6OBx(7*s z4d*i;;MbSrVlu{6QU38a6SSOt~zqzuzV_A-_Q~DX*@`!lHI&;;*PKnxi+1jSF+Ec64wbpT{sWLG%C4`bW*wq$noWpMyLP@T57^<;qtF|D4 z4`Sd4_22`?w(8!7?dGa*T<17s*;!o>W6YTn;sWMqsRZ_Mh)ddFS7(f|o`n?Iv9mfw zt27&Y&$nT?v?9j10etA%Sv@>)PH-f0&KP62k(8md^nosev?>3xz@MYBc*=|%N0bo_?HOoU z7V-Igf2zziqex0e`oNbRNbG!Ia1(Hf_5yFo3o-h(Ryd!4>YEKQne{&WthDJFbxfPr z<4-vuDTt{knG${v^|8#>PxZ0Tsi2R=cvhxDNPrq3tydAlf=y(~q^OTI_SJQKZ_a+# zHO_AHKYjm7wRX&o&C8RNm9Y4{HdMEIZCvYi*8$S_$k)-!W7=P`Gk^o{nXG`+71#{M zkEffxYEK_{;BYiVkmnGR74}r{EK>dS{|HCp>%Txv^*%%D&%j#Z$lCkzM52W3vKrO_fh}F z9(YN5PqfL}(2(qiSP=#KvHFKE1_*9A&(MD zwsub<8vpCr(vePjSd{tkM2xhH{;=uO{-k3?ROJ`cz0`yTBkkH=QZOu+{5bUdjGA6S zd%-`F8?|Y!@&aGPtSNhmxC5}TCBQUfS^ZFa+grQTamSE|%W{Yaw0}ZHAY_@qWR}S> zXqfi;7rE^t*aBcjJP0iX>^nm?m(?{Vq%#6YQmyT2R0BEoXatiI|foPR`TGsqH;!FI1#X%+}Gi#fz_f()+keqoI)F#Nz(E{ij zHUis*AbuBU>WQ~o;9Hu6j8yM7A!){T#8Dr(JkuO=4(S?6uN0WSpr%4(OH+&OQ&6m0 zYLP?fX&ZJM``$6X;Lg(|L9*wNrDb$Z=9Z2j2X4#sp1~$D+kG_iBXR+P;|2#*5c2~V z#T$K8#l?$bRCyr3B_g4kgRIjmMBy*Bp!jtoG4n{#Q{d(e&2Zt zBp@DqCCstw`eKl)fS=G8Iy1)Z#C&(-;8Z)na+){;GGE8Q#$zYuf6BY_w5?M!$1iG| zn$yd-rEUJw$?l>c6#eycor%{Yp8`t6)dW@+k@i>4-Zomq7+oFv_34}$X}f4e z1qJ2;cVW5}{$>OI87(tJFLFue4?}-q!qO*x&W5GKA4Z8&j*PUf@%&avie8*&v35_@ z)eeEdcyAI#{HeK$Vx*@I_~^bVy|@unn0uhb=FjNG<~LxmIXha}JD*ll_6DgbqerRF z(5v8o%<~y3NFCxQ68h$XT3SLkH;6-pd4s@_vH~p()ncje)z5(MYOB>9?@L<#iFp-Q zBSyltqjXEz9q%h9%HNB&p!QIfPo|0n6?Dz0G2c3CW<>y}r_iKiJ4fgHwr6LvfX_3( zl>Z5Ls81VF2`MQ{d*Xu>GnjARn)YkqpZSu=$seHbhE@QL(6e|qSUIsPyxh^+zaO+G ztp@BT?K$D?W)H)HMkhV!?e@AH13p$g8_)^hEgfB_gs&!x%4k(pKiy#Z1inxeJLv(+ zvWH=k4Ni&N-+(eLIX$AtVtMwKZ=(;^n!wsFNfjmK&I~fU+)Eo24)TAeyq;$u;fENwE z#9Pq>zH(^LzHbTeDBve_o1G~)nm!+w9-K-J`1tfs(D~Q|UF$+;+mAF>wWpK(Z@SjM zNRTuSB{n`=Zc*>@y(gl#K}TM>*;U7&XPkAQQ6#7S)A?%WTXDKJ>(hE0Sf9Z3&A|6X zAbq3LLCJUsV=J0`DYAUSG6gCg^anY>;~cbSIi@_$F*Tt2=K}g)9_9c`jnTs#6Y1}% z4~9&nziAJKOg_v3o<^WQ%n_(gl;;Bpb6O1(VL3M0sLsl`p+=ddK=@7Vf`}T&!RY5B zQKiH8@*SeGq^Z4V7s#pqJZO|w=&VEB>KhvrD}FoC z+SB1_MtNGUBrW6=oI%8;n1Hp95BZTGs(kV=gNLi{Is3 zr^Jn?R9F2mC;#@o6s(T!gr(Q2o&ZG593Rxb#;ScgNH6yPp;C)J7dv>8W(sLYy+A_H zN&ik;NLms?+9^odY6&=f)je9KXdr`S z`2M6)X=(5ugJ5WVE8SS0ICko68{qoQE!|36zuL#}oeBFFf!fB_=t_|TTKRbZ#-q~Q z@SP5xZ9@*MLHv4p#@5Uo+Pw`2ZE9#gjKaHrjzAb}s!%_OUxOq7wpOSg!XH<PX$)+Ho=;4w0MaYDkklTGTKx@O9wm)(>#u(18%F3_D31vkV3}|Uj?1A&I;cw z>7%BD7?ehwt3PRQdyPX`4b@?be?i~Z)|{;ImW;Sq#lqogE5Qbj8p#Y$@!(v3cAO%c z1N7K>nQQEKY3U(M?FEDf;DcYyfYI|e#hSyw|KBO#K1V3O-oy+4?`>m`ln&m!j2^Q^ zb(kNhV>XQ{IQO{ZSk<6{D~l)>glx~x^J$h7{9v*`I<#b!dyq<~!fN<`3G%$R1=ekl0nQSsB>m=u-`B|;)6gS?f zW;bf(S!UB>IeyGp!?BwU6d|#Sw~$ko0EZArlB8NTtq8V304y)<5u|vsA3AOK1yM!+ zgPQ+;oMdNM$l2lnHFFUgbds}Sj6BwPVx=+>N(7VvCmE#$I?2xWpp!hZhkox`YjcTC ztb&0o?VeY$E{deoQ6qr}jv|M|&(!v}Ph84ttvfz9xl!AFJ$q%wdLpWFJCesgYsqX} z=92x+S1U6+wl`nVMM*VE5{x;0Y5TT9ww31>hl@PcLoU2VJdscmzq6!ErRTJ=Uh z2l8l`aSwR%0zBS1^TA>b`t7^d8d|1Xq7p8($1z>i8m z$RcB4kt&#y=J;?pyh|Z;Y!lA&PCWX=O?SXL{hzqF(c0$lP|>7~iaYJ{!PAH`)Ncbd z4d7uZ9?^oG57IX6GGh}Rb@uic38FN7iNKYWs_DpoIXX3+#0e_I(JE+Av(^JeDQ7RZ z5|-uQ(yS$6U?fp;BF6HA>y^72*s}A}K<>}P{m?eJ&HRd8tAQZgL6XNj0 zV?TecR7MYlAs{dTkl3$q?SV7UG^BOKF^-Td?UFanMw?sItyjg5?{LXV?GUcP5bGeXL?@z1vZh7^J`!;u^d`=@5AOWYc}b z23QtJvjGkQkK~s)+@vQl{~+L**#&s>;%0-JH?p1!@DIHG51s@%!2^g_W*49*F@GEM zB*2u6JjLTbK6&*+`uNZ!A(J#62H=-H{~(mnkF`qiX-^V7mk}{Un@-^-RjZV{O8wV+ zyBlAXDqFdcYb>ai;|=4>t2{RsEjBVYv_5ZTbmA<02OFq>-e+jz2rckl2x%99MSBi| z4sz%i>7xbyPU|;=Mf=NQk#@35i($KE*k%CqyF-7Y$04ml;pgaapuGt4J+yBm7HJa+ z{*Lxb1ikyvztg&0fUbw=7(EVYg$KTmc7($sdmO_tdK}WF435#`kXBk?jP`$mJyDVK zqdkhSVB>Y#7^M$%+egM|uNTm#6CI<+A=~VM`Oq#LSfuF&9HYk}%_hJYZMy(Epwf;P zMd<_k$szM28!v(HAv+Yo-zfjU-k`|ekv(kS=O}%k2NUgc^gPIJAmH!Fwi)m@dK|L1 z1018rAsZ0DG3_{7mwctgv<~&~H;q18Uv@aAod@g_hMW)dLq>no=mQ;h(J^`)XgLMx zf*r7EztQucasfI`(>_P#0tdEmM!tv21&+3H_+lI?7oaaT?eC~ufEM297(EW%Hl5Zi z5}X&^+Z%Q_MCKJn=|km$)<6$_52X*?$`^;q1+5hs_&X{Wpp`pq9#k$s+j(@1UKhH( zBo37e9J&W04wVbgB%k(uR4zb6f7%$83mm%X8EhW~>D8H7gb2fF{friKaS19JSzFjx z85mh}(JlylMB60c=m}#Z_yu_*Lz5GGEbO_o;2Gdv%~&8~VxZTKm>59^eq*nd#koIz zVb2*OBf~#_L&eJE>>s~y^n{g>`FSoH^T9cH!(JxVu$>}ud5{VV^Yh><;5yJHAT7O^ ze$liRAMm0vA{bGT$&Vqknd$8WHgFQ+5~cTc!eIpn05?RL>FtEB$6q!m!7;sW7wnz` zq=8NiY#&1#Gtt}W_tZdXV4gGdPD~=gpmQGJ3^Totez(mQj_GZ-U{`2>!=e+Nn9%Xe zPy>O8dCs7{j{qKme%XLDCK@sQZW}5bg4Ilr0$U&B0f386G-5)>GegaPT1+DJPE25H z05JfXpw0U9TQU7^4=WtgdssmZ0O+JsgDfU6o*`RRcqJi=D#W0K@JO0K|JG3D=;e*YrgwlZMU(&)_ZY_JEym#ZkIRY{-uZI zvo7Dulb)o`cB1=bx2g(m^?JOGFZS1Fv{Zv18;|82SMIsKkPr3~^#-%phbpm>+3{67 z4qwa1M^|p`dAGK@)TDfGxLw;UQ9dl>t`kpI7By)WAUNluGMHv0-Rj9WmQSnWTkiyY zxct)DeYPFGwRwG9D*qfm>^=-@_*TE%uc}<~&_A;w&f(hFWzNoG(EHo-?`}8ibyr`$ zANB@stS{~yfBcxLo6^$yxjPpjp7QNNUV+NW(R!ViY`LBu2V&NI&0K>dw4{G}RffIr z9{FAgwT@y#v^{2wSezuiNG+Abyd@+l$uYGi2@{d_5UmB?%oY2i3OdISxg z3VXx7z6#R8Ao~3(dl~^tjr-?I5ZMUXcv4i7{+afodvX)a=~Y>P3K_%1KGsMhRB1GQ zQz3fUfNTtXQ(tvWlDM3%i5T@HRB2^H)4qua;K<@}Ve|wVs)iboMxt>T8XSi65k|ss zUi9D^P!$J#6=Z{9^t?ZY3*73<0F>L4#OVfPW9jets=JcJm2^$SsyC26$=BQL@s?(y z=mR3GlUBA0$_4KYi)KB+aqv#gbJ1^iG#ebu@zBT5(}0v*2M5>JgBuO57~vE zWPjAkKS}@0a6ZyVJdQwv@=^XSTf~G2KskUUjIHOUiKdqOjlvv zS3xr9M~_$W%n+xKHR5R~#~*qn9VCxq?3(aZZ$Or2>Y9Kr|0+bU6PQg`Zch?&{O`V>PosTY zSUakKr;$Zp5h%x9tyN3+zJ5DnkFK%$$<7m zS5fq6SdX`B{&=&*gD-%ZbNr#gKzcL{%BSzi((j~GNMJpVDw(7{A}Af9`t%<6X*BNR z!(p*3s*7MeyvppC%63(KM{}Zui*ZVGIoX?PuRw_y%7Z6ocXF|MxAs>+9}cXyoO2JC z*_7=Y!#AKTvG6$OvS?T`jkLa8(!K1tV~3%F32%IhTtfa?(D}2bcUiQx=Sf{Dlpbk< z2(wo@9P&%h540~7;E|`mAgVzGRfzN8AXL24X;A>AZ$!od($NH|KFC4Pp%jUf$+h?C zHolkSk!+xmQj0kvCxFZ*$oBr!2y{dM(8__H^7uqI(qOU!vtfVQ2Hm5X04N?k2L0*o zfDQxH)sw^gleWBoe)8lnB5{HA(T|n^bP}Lh{IjzlXpEHl^nULLfgO8Z{vhRyPV=r; zK-0WYt%t(3(JlL^QO)?{+SzJ+;ZaQI`rQ)EhBs4hyHR|@(zXqFvc5raz64%rf6iQv z7r*$k7Ym9!60Tv`o^QYnBA73hJUFss(V_m;f z5N7Qhs8QFxUv0nl2M`_JgWG?8qxhJ;{JpTk_Q&zVT5!N~<$zNvFwy*(=(GJy^nak} z$IpKz(mxY@HXv{N)8GG0^x1wU`agieUlK>Qr;5Ulx%z*9;`l>lN>AzQABp47!z2Hi zIR0^jC6Mx*{g1ry>FC3Mfh|uN{BOV(HAO2RYCIxPqzv1Bw;{Hq* z6e{r^I0IXaf`+ZgyxhZ`9Hx;p>sB@%l!yzn%jUP!qYZ+7zHii|Cr%pQAqcw#i52P& z`0;o}1%xeE61dt4H+<>>ToY`nL}by#ZM^c?)u%sv?9tw38q;CgL;0$8yaqp%NCH-8 z5pExGoY&KwoMdGTR<#oK9%9&SHahK`PCO>Pe^O9?TYm({D?AINQ3jnzIGVzht97A| zI&M-u+nh6m))M5b{(RA@UF$Y93JV`N%8#{!P#*)uJMc$o@qX$mgAC&Mxokg>!-V6Hx}I=C|OreCq_6XCuMY75Rz!}+McMhx5< zJg6|&8}jtyw1H|)w54IilCq9ckFkgt0b|f9Y>TdzLBbUuZLy)UHuNl+Vtt$fE%x^h zN>Z;QN8lsq%EZA*z*eX^R9WG%Bq-VJwQSR?!=kvEM`p{1B3w0$r1q(0nQ;fV;DUIS zN8e_j3sy&z(Qh_#5nIbBv=93F@x;=_nnN8&hXzf?3Na0Gje{H9@0myL6nbs!T4%&5 z8DKN`StkvrX0B0t+l?sHTYJ=d*2dBG*Sd~2LP}X6lJgDE)VsC^4vdQR8g^JklK5O6 zy;rc!VeJLW5=m*($*r{FK+ft-2dka-zR6igx70Ft=^>nIQWltn#2Th-pS$k9iyiIT z`!-l@V?Mig7x4iG!e~*bjo||h7+U8pPp~1YeL;!uCo4rOc~&(h`SO%~MF5k;r4GFO z7)jnaoT#tpc*Z%BR-c4cEBGg=%klh7L;AKDoP(C0ue7pNJQ{{Yqs&y+sAmGjDv8Bi zEx9e`EH}DuvuSI2RbX#=1HfY5%*^>~q2=3P`aQ@Fv!bZS(@j#nG6{s-?0}pA<)I~w zZcA0!thm$#)OFaWZj$lX5BNbIYoeDZ)$)Rs3LE808{@&&zERt@o;_-Kr^U_opaOdg z=La4Svvw&v^UAABi(S}%LX1_JI!04RY}Fw%i*JGYt1}_L?tx{YONyLP$bc~H!Feyd zcJZE&tp3VY@3-9E7e?(c6ip4!NubB>SSfDNU+F{$B7Suj&h?{fO(RJ@#op4Nfg`psEg;+Y? z@wI8C1M|3t#1Xl{5gPn54=LpJu$gKh3xeY`W)1-5gNU_;M}* zUgZ_dsFl-#G#F3NVTj2q=I55nwmNWIKWJd-L?@`t&u&-RmZItZ|ox>npJ)9`qGLw}O&hmG1Y4a`Bg`J0VUf4jej+SZ0 zX-1TxsT$Vr^1x#RFyr2zoD4P=_D_5JdR9BFzF?M}ES(Y6N#?LkWtte`SgMo&<7C+! z-c`1#$$7QbLG6l3UrWO_WleT-Q0jF zS;f+GKhEY>(Dial$$yxSo{GZ%>!*r8D~dmly8YY4@EGkMZ;^$S4e)DX0Q~K+*`N6= z;OW3v;3+I(rsnoWw!l|&J$oY&BLgc#BVyo?Kj(7ilwmb3yJRl(cROm-E|RR3m_kC@ ztX-*wi$@1?PK)G62O~KyZ8fND-7i3Tk6KsA+OT_}DHn6cOhdv(E+*>(s5(iX-G_b+ zH_@6pcW2eYl}A`2Wu)pbm55SImhOQlHy@zTi1LUcFOS=6IyuDqesJ31DtOO<>K(Zf z(&)AdwQ68`f>?(mS6=J%K5$YJ%{x(f$No+6pw>-r}g?a7X+8 z(fv`MQ*{OW74hW^L@l4cdPh=A`##LLfUA)z`gsUabaNe~!Iaxuy;o|Csy1fNNvyPI zvx`P@n;BratkqgR9~)|$n24A1A+sY;SF^dkW%7$3TxjQ)B5=Q3#AD!viE}XEm+9c# z(0+ek-)5xIa(p9Tu4u&ss^dmIyDVcr3tit){mNqOelXoael}?;l1Gk!){BZ-)diJt z`pUSPzC-1;ecw0ucZUZQQL-z+d-SO%0@56 zOqEi?#S#P>u{!vjm=))P4ariszK|?{*hz#7=1LNT#R9+TgiM8bTOK3ZSlVWtlR$=AIPC>baV?S^gLn(RN<;thar9sq~nM zD&9%(Do+A$w)-@bzS3?oB`(>(PTS~S6@rD_ItAQLCq-Nm^lr7(zNE}-gF|y%6xW#6 zMW9t`=Q%TtzslWsw9t$aZzNKGWzeL#TTY+MI2>OvPX~Bq%`3V(gm{f2_{_d^?5S&2 z+_xiOV!_8eL#T1H39~a=lMv}2K1@_$_UYFs43?#rW$yuoiRj`pP^N^oSr!sfvEm9W z^FuFQkoh=KE5@3&H=5W?LM&XtH5M1XJ*jxZXlI{PDpj2kNUQkpdR1?xs$DyFtd|$( z5>Y17Bo-^85{nAch{|vgl1Z*bP9Ur)+9?6S|J%au+w~3)7a_wpnXpJ+^*E;Q3n1|C zmwCs0!ad?q(x6n4zIJcJ~dkKU^jgDoy)s;{Mf=e)0vg3cy$&S4bV;&z-h!wyOyN!vfN9# zU)W=hSh0Li4Yi~bU;mB&?xYmP*6K5dPibuv-|)xta$*qEqTykoW)+R+N5=X}1fWVo zA3*X*g}44Gr2kpn{a=j!{|M=@<&L2T2=dYebaBCV9?9YY(Y;f5d9iSo&r*Ak$H@Mtp|qYY+gN5p*fhmb_i zIq#^oI@vAuJ*K$s?RzFBfWui^W-N%k$^kWrT`H@C7f-OV0C{pB_uXK#o$Djcwl6Uz zS>-KOV7;vG>a%wcr}@L+7oGj|6r8;#@`@=UPJ!gJuSV`kXDgh8b}IPlDJoY&!z&4` zl3BjAvMQFVpxxWurZP9>wJgMaI~cc)tCVPo2;hIV9wA`4{$Zbs94sI)2L zoQSYW)2uo0q~EvYe+CTdDFXL=>P8xZtB{~Fimh0lY1l#4oSjE!#Hw{?Z^e1$s1C1a zXMOa)G$5!*nRZS$d17Bue`#R5Kq)jgZ`c z&-xj%^RwAAZT1(oVDJg+uJ}f&;X8mm_a&@xVcN<9wyMBFBcv2HX^kc`FUKC^!MX$Y zZ8{ARl@zC?U538QmvM#sxtxk5jbf!)_OX3pK_wuBKF^?+baK~T_4QWM7xt?H4nEOu zPqwKQlwTHgu!gI$x+S>}r5S<|qNOLsMmt`8eWRgL7-$-Io-LCV)lrm`>2mtI086=s z>pTGe=8a8F?JENh<)dd-ZN~Gb$#aB6T7!39F zxq5NhQg?!nu_fyKiG3GiqAf%86=uaVhD-MK83lb!ua357kxVKp@wz-mtDug~zT-8R zdIq8u7aHjj4{{3wNHT)@_Dm9EZSENW`%DmT^(K6_8uCDQSS8QKKEES%4%9YdG2Id+9i=)rW`ujQ_1qn?3ejxlZAyCwnE-e9-{(B7# zM7J6Bw_-zA>Rk~_)LHYK-{@8$_`_Z0_+6nY-xp07^0|*OJB_C z&aW7aQ@+FI@5?76W?Rd5j1I1gf(Kg)@wp=oZ9ASBTH6L=cqY|13;!_>-g}S>No2>* zIeP-`=r}`{c(KHgX9^BZPccLLQgjiXogd9mrv8I@q&I)$iOv84inBruFF(o*@?E?o z3>of~8*gL{(zxV?ki5HRo?ZQBb7!4dV$Dd$*9X%w?UC`rsW9K7bXNQIqvkLE9}Pi^ zg&cV*sPQ5X`CWK!+#Fdh#gEJR&BYu2OQ`Ec?olE$X!qbmc0K}|s*sew@3`U3ij(70 zM_GFIjpwR9^g5e<2N4>OiT>Ak4q*OsP3k`*p8wds@V9vWYjFv9UKz`u5dE*~w|~U* zr`;646VIisfbqQLR;{er93Fr!su+X*rdi@(LZ@e*v z8Wq&gZo%%z+$lIC?&mht4=Hs4ZO21RLfh-iA!DS;-_17};i%7?$MGw89S%M zalQn*$KWQ9cpizLd;xY3`QE2)qJ6ke`Ml&kf{IeMDAyNoJ}`Z_*?^{%1+uY&P9%sF zJviTWy-F6JKK~88YpSzF9+po4u3Vh#TmdjRwp17_9{EW>P0IfETQ^2S?3O`A#Fq>H zB#)$~j~8c`Fzsu0(zgw8j z#N@wWO7L1y7X5F9sd5r~^pVJM_XmL7#V5n?x^Nc+yRE zO;ZvOPz?*&&A3O?>^Ky_q;X*-ro4-6HN@ea=E6j>9r!-Sa(vZ2pQuf#$v7?*cXnW| znKkJk4SQL~J^cCbN+r3%)~T{TX0B`Goj}#M-7!MPm0cA@%_*G9yl}JI&zRa6{f(ru z(e?BW(N|*${#0ye!PEIoLhy`KXF>Ep6n`)jyzZa0ydrOq8-wduHP_e$CS#OJ=c+s4 zK#O@+s!uZ=`f{ICttLTd_5&8VM!?0jQTcZxwv1kC_M78#@kGr1JB|_PH!+|&BySq{ z&A_}p-q;HSl43$tBL%G)vW7I+Og3k=2Xg57FmC%K@n+jvE8}I(mL0iq36+X0CmvK( zvEAwh`O9oKkS$QUPO~urQam3vGGg@SC#fq+I@5A!IgFU*tV&VoZD#o-w~|M`e@q@- z(RIQwE)>xyKy%?&PbbVClZ?y~AraQD=AaHNrq*lJiY#9H!mu?O`trs-ytX(|0e5xG z9*wDh-ylSO8kz^&kzd(;2D>VG+MKUhtB;wD-XH~`25%>J$8|0n)FyF|x9N;Ui8U7f z?m}vJIzNw}sf`b07Nu&1=gWWs=*j2arcAH=W@nVqwTa;^$&eUC6DT;-QnxvPH^Q*c|E&tifTdoJA6C zOI{psdtk#9nggP6-!(Et72`bRZs4`>p%}xk{WZ(7Zl23>h;ii%1$RUMddf{%Sl^pB zJ_9SVbyyB~|Gs|0)#HfEtUM}F0b6w#m2tqofS0?X+)kHtkYK}4{C0Y|w!onY@?*g@ zPxm>hRAXoT6q5yKoOoE1%B)0moA?{F3i~2X0)9QtiLk^`Kd~N5_*HxftIEw@Vj|1* zhUcI#9F42kMczxnjkU*&##l})Rr2Z5zWVTMO2(pC4LLsNI)yAN{E!v^PmZ+Xkzvc4 za8OnVz)bho$|2E%wl;nJmO~se%iY`JK<=zbc~W`(TwKi|YNDj#^a*S8TuxSL+dS@u zI(Ix?xBTuvEX33y+4&WWYb#t2XjbV^*1#(6NiCZ9eeTyC?u_dBYqy(oM7v>G-Fq)Q zWZ28nA)MdQs$OH4Wk6=Y4L9H#w25KLTq3t%mm!W%!bnKCEQ~%o7HF6&~Xg zb~-j5m28m2#0#^0NYTmC(&fvQW?Wgxx{kdtT@GCAoHH(EI7pu8W|cdn+LXoi<0v`H zpA_{1hc#_&jkPIGi@%%zFE#Uy8^Bqb4$OF{v@M%df_&91p4ILB+J<*V548n%r{|o> zN3jG?R1aM+ewYUq+b`Gla9YHPtq&vfjt7e1!uv9@guQ?a;REf|97_GVttRAWLdmj2 z$c7i-wYaYDt+2Num#Ka9#kU*v`;q2*h)?dk(%@!GUc&u(M~kc`Lb^=|GB?dCP`UIq)w#Vtds>+SmnBg zB~wu9I<%HG25*Dan~Cl$nQFnEmog>1QfK&x@hPP9>*ZW2t7|tqc{QH&h!0TE{JvMu z!d~<7r`jcM`E6*p%u$;0-{FuZ?0&HGNhxy4tX%Z6o~m_PS?-l%?|Yq)DA_xrD@VR^ zl6~W95!Zpj8}kKDwnm#zp7CrNDSF_L4A?P(I_e&6h3D$mtb%uvhoIZ(Cwe!~W)Wqv zCc@iTF&ch5s3m#<3qP3}5S(tH_Px=#rPQ%hjaPNfC zoG5MN`3yQWS#u&F&9;IC5c&LNOg5>c8$-*K*G!Ah@%S{qGtIuVEZs-hdlxR|ksK=e zx&@35a@+ZYybw8z2uHls&R5QHK^RP92kWS+SJ|Dfr}j(xHL_kMCoghOw& z)hO`8nPx^e5`V$whbz!adzwk@IX`6qn0E01wog@R5AwW>)BR_;33FZFKu|BWwpNzi zHF-e*5Am|;sz+N7G~xwT*Dc{XGd|PiSPS(ldcr%t1{0C1K9=NadA)w5#dMr^@v$6| zYb|f0R4X~+D-DwO-ieAKG}SkL=Sm(uT0h%XKjrH<(9sA%?gRyHK{2Jqvkg`exEm5h zLvqnV z(4QmJ9~A!V#iBjENG5t<%jQaWjG=TKwaKD#ihqPZU+wYdyq!qci0^oX@4GliNCec$ zvv!g!!H~cQizN|1a5y4Yc$x|yctWH^;Um+f&43Z9o~`uj)W7m>6?6A#E6uuvb}@mC z*jx-9^E^?STH38K((({2S&8z1;R`D}{90$A6LT>v7TfI?nSJ zX_6sSpC=rr?pELq^hmuW6tn2+3dEQ*i>VT=mBEMD<*nsP9A(@)T3(}N=QL==Sa~Y( zur5$Hxo=ItARg_ftNB_5AekScC{86{UmNR16*F-C)_xm%rFi%hd&#k2;?En1joX>gdTh_zPw5DaP< zd2dzK3X^@e3w(LihzL8{s3&AwUf+_>SkF27gX6yg-3YeFIqkJ3Q#C-v?)7*Tw1Ft) z!b$jkR3ye0SH8ypp;Q{mgxxA83c z6PCHj2NnD@2(w+tb!pY?h59shb!E-DUyhzynKtRI@wjS3i&f7AF#8JvMnFBw3G3SC zFrq&M?s4l%gQtBV1sJ&V)=R}R@h~<9t9G9GT4|&hLmMU00D&MSAaDomgCxaj7^Ozh zmzqAq;fj7QtywvSO`%QhsKs-$3#nU0_J~9IndVHLmQv|F^&$-+cRFi>qE8>Y0ybS>Jrcmelw+)=4 zGXSg=bvRg-wwV~imtG2WHqDW#kMx08QCqKF9SE?Y3&aBEdwCNIn{HFi;6YVc0~0}D z!Sx9+UiZ$SZ45ejvCQt|gx4p_glJ4LZauHaPQ_!fC|a4_%w=3m z)NjjVsdf%y(V`%O-@I|b;?s#?^kOyTWm7!m+fS2_JNvSq89)aFQ+uN~kU#}?R8f9) zp!An3{=VGN9IJudq8XfBqyZjR*X#?8IV(L}tP!lGOuQ4{h1A*85K4aw5B`DV#?G9@ z0oee3&|lCKAGg3?D5him&>rhK<*9Io-o4!o{C3l4{*pT9TAy8i2P_ABUhJ&Z3Byr< zXtDBXOv|YU(b|H1Dtfd>y1@R9R@hskFq`4Fd;?acXvO?6zk3teGPL~e*^P8fcT&vS z>a?U2{XT@-(RdXfp9~^DR^Ja{pm!(lbsMoAD$z<6y7!5B4uT!QFG^Xmr_RmtL6|XJ zv`@@A8-{1!Q&pdF_~>ssf04iF1I>Ev#O%A?{K?9%8ZVc|hkav!0NY#fkUknaypgDIzIal?QSwUIv0%BEQ0t zbX;crmvP~1?Nh9n(}BKGHZ3I!^|LSaLzDx8R+z4%-5MWdtNP=lw`$9mieAsnaN@a| zBjo{#QLyo~8sC)F>OBCGZql~CTCi8%g9_h*4E~dM{;Gujr+DX&=DELl=dZFZJ2&^A zIPXt@`xobYLW#fQoQm>`%-HUurB{T43)+jOUlQU2SrQVQy~GSqg`y?3^=U$-QS+|8 z-D*>1z#8o@FQ^9D)s#B5NT-28p|^fqqDW&!?M0n1I+02Eoc+l+(=$)s#FgsF7ZB;eAwY$Vk4TfJ# z)YS|1MzIBO^L$qhG&cMv=M zB_#wQjr&eIYjSEKF;PxeKaU~s=MFs;$8K5pWLR#}#OeU<2wIS6lG7jjc8F z=@uMaE)Zs%2@e)4N@N1o#Ns819>mDI5vD<33x|7I$}E(O4?L-nRJ$@Y1L@@_UyBOW z6v8lRn=7hK%`a|XOq|n z7&-0X+9AxnaPh!zgXxInJ31HOF`8)~vnV^?L|y9rJkE&VALrU%rK$fEZ+_Z1`?u;F z%da{c2Y~AjZ+>e1{*|?DxNk8#yyM+Zow9ngaV-ne1Jx zf&U6x+A9G2Q;lrxT^QfkTbR?pF)0%>J$@S)J$^Q(1D=|Pe~tX3{q?EA6!^Ce`j6uP zqlc;GTR331tbskT7BMTZS&fsJ0{}dk9@w7_;NS%I#BvaGu(Lm1>%cJy1OMo;U6z>` zcp+qEYY5!;^_Ncsi2*r|APVib<+9`mH#q;U()%Sq*4+8+Utv_jkm5ZAZ$n3zz$?|Vd%oCNvFE9OF{|9cmH2T%!{$Crw z6C1#{11frWdOgV`DFnACTV`9 zJ^v#EVCCd|(gZ6PJ0q~M8%Qtl?@-KNL*uX2mmfqPzX9jeH6EAlfn_`FO&Un0pmmZ! zF}(Dp9MK^3-8KDSi?j4O`(hmpTMF*p)|CwM#VV1(`FK(DwsjUx6M?YrZkyoU$I|Bk zKJu9o?e^R^OC`6+tgC{J9`K-uP5=w?#xXq%BDkT zeyP^Bb78)C7W2dyK@HbnXeJG5$<$zVS!%=moNt%mkXw4mzg#lj!~oy-RaR|uf?D9~ry-!jAAWd=La>EI0*0fm_J3+jOWOk#z_p6d+=Ngme<4o?#~T9Wl}&PV6TE z3H|Q<*G2Vb{-200L+An(aIkIF6c~CwE(xcHSX1PU`p{9nH>hHf=C>cR!zbF2I93k2 zULNBdanssqUT_(;O`|U`T0rSWHu4b~R-*PFOD5!|q9iiyOZ3L?Yu{kwfCi16K!>pK zaKBIpD?d`rf5%*npwTo{D!-oEPql+M+nGlO1rqW}=|Okjyg-L9=+Z@#Bh}0sqS*G_ zO(}kQAC0V%whTs&&tJxG=Nll=fkHqr&lJpc#HDkYgvTCy|4@9UyNf{2KEgL-tj!Px zt=OC{TicdwTrbaCpVTI-tV`GBVyrz649kF^>HG%EC0XNR;$+_298Pm8ld94qt^zx+ zAb0vp&vSwzHn8J$saMA5O>&zCbtA&&^&UAVxaQJ3I;&{x+y3=Q|>6XPBFE%>qwZ;eacfj_F=FvIC=&btx1+h$!M!Ct#JVv zMXdQQKy(ppt+G$)F!OTQgnJN7P2%)wO(J@- z%u0ziUsunAZLTFxOH0XDTL%xFZD}2b6J&`Cg;WiQWqO(>u0a%1czyH(j%G+!ZZnpM zcfI|Kq=9Us*1UPAp2FZLir5@eE3LYrZ@K(kBAHMcOIL5~6;%q^m|M4ShK3W6ZSOw3 z*q^Rj#&gq!w}qk%5voWUCXk9H9{O%1q?Jl^-|#&ItNYpVy660t)4MuETY}GL8a#255qa{XVt=Jk{Q2Jn;Z=&$rQfS*i8e=UwY&5@5c%>q=& zA6d^6#nCUE@w<3R$;jTp)>0VQyYkX$UX(A2+4nn%8(|A90=;50ihpL)~;ki83t zqk)P7rg;DFiurQ~=pV@5z~0o#@+m_Ww|Z#>$0S0m^}}O;?Mvz!nm|IINB$!quMRu# z=Pez~&2=8r_FrlA6DQXH;O01)fpD1^z|76a&J1Lwc?8eI02WS0HV(Gmd+0yO+5X|7 z{}n0z#zSXed;D!6866`lFv761K3zSsumHJte#`v+Yf1i^K>xz5fZtpnIMn>L)J*)n zO2CJbCMq+C`~`0nxSyp3F8IE}SHbc`k!1SDhRw5Mr#xwT#i|%1*e{@tp6Yx&PVaVh z6E45OibC9n4JEIm(_y4{o1Hc1C~vZD_9v0UY|9|8lMJw+z42`z_tGbuY<7)@TqPNJSy_XnDGsyP7EJ-*a{^xW_+7n zhMb+{)geSHl-FD!1KOU&-d+?wS2i2FJRl~oFn;b56;8YCOz14%bAFg0=t1v$3 zgMBiijchz>D?3MU<^A2VQKy7eLo50stm-m9_PAKw8!I+G6bA7MtBKZA zHo=cBb$?0&`lW)*CtNU0HyXoo@Tz;rs(bK&1+8mC{HlNTkZ>f$tV;{~0V+YZ za8*~GO>eX*Q1x&SOg90;a;g{m^)I?U&aDd+iBlGW2OtvTf{%Y}Y_Tu$FKO-^E6I>{ zq$-K;nuBRuKx`&&L%(|tVy?@7IK)he4apz~a;_c|60ToJ9hN1-G}F)8DV7E+HpI-? zI>T=oZm@;Y=YPhtgPxtD#08S9@z$nZ4(p~OVBKBGjVh?E;Vp&&GC3!M%2o)10zA)klEJ;vd@!;<K+;b~nkGU47X3On>3B_|9TBTRVZb%!5U%#NjVl(!@&yGo?{ z$>%IaAlSGrjHa0^ycI|L5I-KbckC;NxjCOn((e^p^DQD+V+T7rEUU{hL$e;wI@yaZQv}O}OfDlb7(_}RUYhQ zr?AEGAZ2k0ulXi+4pohZ5>0m>Cb9c`F|mRPCEYbSngjSuwqEe_r^Uv5utjkZ+oSdP z3NSo)8&=x}C_%d#li|@Pf(sk4eg^$S38>)(to2FI0XUG8>>f4q6VtPCa{W6L^ADK*zf;T)1kTD1#J#|Ej2{S` zm4g{rv*-MO#Jx{Ex4$0IFWmcs4Eg`RR(q)VtIY~oAlrWookGem68%lEV|nmVjp;LU zEK#JO;V#X&s4Vf6@3#bB^c2yH>%xh3+eS#X15&VBGyFE{3Ah8=R`PFp`JwF?$IRIq ziuVxVsBQ0(x?nD;$+|?t{Aq;grYKmdUcRkjs=9`H;IY$ddhtGd9YwG;wB?;Qx1GrA zC1VjsW+n}tFh;=A7ub`#h_7V3#$SzjlA28VNZzn}AkO@O<8&9#?=zCE} zk--S{mO;~x5%msV7d7tc`O-Gmh=Egs%W!ukOqMr`$SWjkYsj#yB4S^m1Hs?p^FRTh&b?V$M&pF-!~jd$Q$GHfa_#l8s!i zstQ@TKn)uRN+vfMlf+L$9nQpb9WXn_y=r~(Ic!ul8VJOT3GWF-tX$3_^d%@ z`-B{40s>=IBu*LExv5Li(9_{HbH{b6VmMia`yHg0=}{pj1kH+yl)jo)B>B3yT=t`L zHYyUbl`K?^I6@Kn*}a5$KISypzWdEtXY&m~&YILV>oBeWsBK<-AtI=qP6_jxih0h~ z%s3;ng5efy#)MF0EU^QKN7%kfhOHDvz8~8&bsW+U2HSSN@&+%x@L@`n(Wb6q5PPM& zYoo>uRGXO)Dg;JPZN_5Z(35d_KOMI(Ol4%oBPt>mns_Dh_p|HOt}R|PZaJF7j+lwg z@Ma!HZy&2>2|`MYqEpoI1%sXAlWdg_@_FJFp4N27Tzqv%@D3dH*Ax8+r}h=5=on;1 z{)NQK0FjX5eOa6;h+>Yd>jO+WnI{xz%)lb4)Yj)TaMmF3^+R~lBR+xv+~shuyh3m% z8HqdB2m%z2kh1zAW7DdUEb^KUMI#@zu~1p@y3%g>&iK)2TfPO4WcgL+3yWGcEf0b5 zx<$S1NZ&%J)v;}?9N5gm2xQ+p@EjN5v48z3xb~I0Ct@SP-;qepF~4K zh42JpaPbRqmuVd8H78Y1aR+GK$HdesddDxAom5m}8Zmm!8BE3<$fX$(5!ygyvnz0P zu?Dj_wEeF$duPuPT0~VbXym60vF+>SCS(&v*rjToRr+!e%J=Zsgy5NXKBKv&jxNxT zqLTF(OA`f?I>3tE5tyLi+(4#or9{M=$w9R)JdxGW|@AHARq+P{z?H0@pH3!WD|V zIc(5f&f09#jXm4L4Z$dMktiA3mO|=IxN(N>AyqWXoGpHPaa7m%T@h-n6WGNaXUZ{@ z31P9J(x&(PB#NqAd(b_P_T36&KT(u;MFE*l81hYh)DkG^86u z!8{d0;-;KwH@R$`kb+A=5-y&-i*60nQk5!gvBVULQ@&0ky)ea9-OF`;-K5Duw`QSq z%Y0ZN7dXJ3L3V`Qy9SYqjpy2xyz4HO>?ute0Z(k~1p_EKIzRd@xy{hto82kjbId$S8i4Uun{a?9|OHep1s+et(`DCz0-6F2CL9{5|V_&j6dSwFiv?v&JNKVw<3NT4G= z%SU3y;P_|;-c>@2JliA=$ujD;z-+|ag3izAR;7~Z zoW)DQ@y#T@o8!l3pH9=}m~YA$$Se@2*LBqzD7~fh7M%i|TqIZ2mWfRahJ4XAqABW_ z?C@JkaR|M!aC@r0HaG=41_`L$*UtI|^t*&1YjePk5DZgC0m=}OnVI6c?7NgvB8(`(or;c05sojGuzkj?|j3$!!5W@`czm8Zy1dccU> z1n|WzE7zAi@8>cTY&q&tYSW$PVh^TKhWG``uAJBR;c=uT{5tixnbF-zO+H*_K|=>3faTLIW~h?#FzsBE*CA5gx-z?jGT-gLfB z?Wq0uoKJj_yg{10sN}i3S1f&6EuO~x8NtkZ&G>z`WkwRmljS!nFG*DS98wa1bcc(d zMsh1@ym**j+3#rK%qF?um6BTTv*71@k1LztH-tNQnvk(y-|+OseeH|ln0<%ZlDz77 zJ}OQp)j5VFoKoRk3Gwwxy`&k>krTK$&r^bC`suUYFu0Dnkn%-S5*^5tp}ZK^B)gIZ zcR1@scAry)LMZ`=t5KIDzs@ire|_^Pd_Z=GCL>A1;5WFbET8TYo3q)Pm(me|GDbO4 zjmMKl{2!|$&uIY28%-uHK$;WAhsaX86h#U#nKUfKSIk zj6YlsL3geab5tgderC!f&F&u?1P58WNI!x^p}lE}YsBI{5<~Ck+x2Q}v{65qCPAm4 zynl^@Dasj&)_?lu+kWfprTPb!shBH>!4DiLZJ9$^sY7Wy@$;233M9^wXhpHcSGDt5 zN{#g!G0EbIV%edUt^*^%(Bdmx746)WP%hN+>EH|Tvd5LjLCsN2j+E0w=@gyp`#w-s z?K=I`alQr}YZV9^0^6sBus-m!;HIB5Qm}4|P?jOkhhV1EuSq%GvXk#^*_;qBNO`v2 z<{N%tHHq%wNTN@POI?FZ(spTIUh|nF<{0;#tfW{`plwrLr}Ka}BdJRE=@e~;C_4ca$pEU!Ti9e;`(Yp5 ztdt{JJ~9=extc7I??gLnTCUz#^hk|!`v-g!k7ysucjGUVKVM<%(tE>mXTUPlhO;VX6aLe_ z`D+I9ttU54BJbV^zb4@tj$9^&A3V?2cNZ2<-WsvJ_~nhuNOSJku+i|W+2cB)t>p3j zD#dnPT8=PVg7M<5#9j>B*N4b?$evLLXgPXOv{TWDVG`Ce=#e*kZ%&G8(q>K0Q060f zG}0$VtNJ+D));3(ldzt>yKlh6=)3GGcnKBatSnvb@@~5H@M5N}_EnL7s9hVze znAvDq0D9u%asvyvG6Yl$|DA&ZZVXSOh98%izbbqjU-*Go7-&Jj)#I_N1OXKp#(#bF z2odTz#pKjg9;^2J--VBM#WC|#ph;~e|MjZPp2e3$52~A)_Vc52W|E&-LN{Obad*Bq z?SvIBFzh)xyaG@2mMnKOQ|@Zx3v>ONl{QWMyI%DB2SX#;68mgXk0PB>{T#h+2Piqj zU<}U4X||z_b7S5SYLdNddaF&7cMp9eSa;mLR!K;RA<8psW#>1dQ}j=K}!GBVZE73RU#Dg1N*4u@6A zF~OWm^D}On%}3A!A>77i36F)C@OHj&f53XEyAqO};7!n2KDQsp8-PYZOriDR*)t4! zWXY)^KP`LHDMZtKC!)_}q|jdc6NI9!f*xg09fj-*hBEF77~4i;#(ro?(IIe&n#@?a zVL9hV?OQQb$WQLzB@hh z$qEgk?DXi?nojXUS*n=RUwAhr>X30P#$B%5R@Tz@J-kKD zrKUREiLqI32#d{uXzF35x6(Te47F|YW#i4u|5;o3nsrId>5oUKQk?vJX0N=GR5*S(Pd1cak0o^@8ijqrvE=ba}Ag)By zr=JpF--d5)?S4O8H_sl*sMfeMnI+WnX6dalX1gT@@(WxC{GshUZq;F70ptn3Mz4@$ zHr)!@yY;2p^z3ReF)A@`sG4xNafIct9+Q5=yU2c}U*Dkc`3=r7J_23iq@B&nN#eT2 zhGiJRSAA2L#ppc&UckdWl(e?s(M%KFkzmzskoS)Jd@RX5PMa8XyZx{xn}^wsdq~aS zK0sYv@*sPA>sH%sA(U#L(BS*?nO!1AxSY2clLTL7T2A=4JnUt&ZJ3;vgR;^Wm<%#& zAeyy=Su5t*sq3mk9Veiv$g}OSku&`$K^j;$LLSCHF6*YdCG77__+Ix8F^dZwspM`> zmZ!{%R}H%l^;rTN5>c$Y8YNs(wPiW@@36h_TFl@&b5Ye zVee|2hs?{!ehcm`xJ2@S(IZNVC_%H%o04am<<_cYu&W8?qr>R15bDOTVz?%36_FwoPo0FLipI^EMS18m8u zt2-8=yNIh(24{spKQ`g2)FL-^13w0-qI`i+H#CJ^_?tmkmOa9UV%lcna>JW2WC+I*en;mbU{Y=P<8Of096jlwy|yA75uUy<-v}$@vf6vXl$%%jHH!1)&S$Pi`x~&!@EB<$dD`EXO z)u4cJiy;oSu;RC6%c)%$#7c}$`^4%MCr4KHuO$f>-Uy)gCdGY<(TOTCHI)72TT3%$ z`oRz^9{!c3E4z7)95Q3(`~s#gKMI7u#T~qH8Ga(9-;=->io_6_&0TaAQ?=dPU2Rip znA^>t3yO2ctPC|EFHJ?Up@}h)#^Ng$mz;Y`QOXM}=Dn%KdzpQ`mZi*YS(PdtGkq!_ z$W?`HvErur%of#`?4F5yMb;;Kj?v*UKzUH55G)>t7`N#tuUryK)=2)|r)aTHQNBDZ z(y2zZzs1)w({rvIZd!abv+3%k2x+9{-Yv0qXl7wdS@E~yBtE;{j%Eea-iAAQIZ~9E z5nDG&*Q|0woI>DMh+{vfVr4aArFwoC&7{_SuS-iArrLPaY;cpky>rA@I=uE#xUMk{ zt2@-EkJM877&qDJaOo$>6zND|t!bY0`ZWgoO_#CKzF{Lg1r>zKZn|_m-io9Jw|&+?V)D zUwSq5;5GOKf@kEFTeWGkos|V7hzoB_kXiHdgjI}2$=`fTe$c7?p6g?}wYS6or|7F1 z-5t>ef>&i_?vIBzmX_$F62J9zi2EAj1!^7LDe6jTTYD)yX``GBtE9-NAs|6lGKe8$ z82q(IlveKUX4W+oY9ArT;9kaPDO(*4*3r-&NpWI}xE#UTGje&(y_!z$);Mn(l6{il zq6e&9#T?NP?^PYHR@_jdW@7)gPoow;D$9Eh>CqkdR2r8ni4kS934#3U>1CG%?Fx4) zgp1y~gadQw)rn(J`m9|IG}5hw87mT-enV95)jKxjanxH@uB?$__G|Z-eAPHpAL1yB zZ`nkJNib1;RVVL449qe#gIS?awJ zznW`CjJB2hyS+r?{J}RH!)~^RtMFly1j5Q~+9*thI9G+N}NB|aMy_oflneI3)IEtEfVI(=zInTfY;Ha&265+Oj`9%OPwb((RD z7NN{dctKD>Zb8tp&W^tyZOOcYT`51-c%H93z2OG?%HwX*|D=(S1OI==M}i;qZ)xO- zu;!X7B6JUKh}=V=muTLl9OIsNUQNlCoU_{=5j$m{@IMv*ZVKQ$^}c< zXB%-NxV>*vgx-Ek!e3ePE&$o^CiD`}h#MLMG~#lG#kWF+$1ntjm7_IrLazHaq*@EFK`mtDq!!&Pct+QVzK{gyLjd&P|yS|t2wd0+Nhbryt867iMx znMR`zNlM+hw!-z;;UoHoK1l+ZGRZO)NUiu#{G~z0bmM>4WK{~I`R)U(o3Z64 z3H4qBPbi<1hj>dl_jzCTlzix^yj--T%<2|*1KOZHQ}0QoliZir1ehdwAeQ^?-o~7M zg6h!P&BI3bVjnl>YFdv|?X_F(sW2-oge(QyY-T>*;z-R!2)Rd5tpLBIKxhm7{nB>F z<8-KLX>@VhG$aE8DG3I2t6K$w)(nBwG7AJ!3mPFAm61Gcsqnp+7u@u`SPz1 z-Am>hqweM-|3=Pez((?R@)610TGyjFXY8O|c44FN`8mVQmV(c?4{UI-=c+^v%ER^B zabdqDknH7mkf0ChqQAYCAo5_q4kf7SRrzy`D8(;EhA5YiWsG2l^@W8ZG@Db?6zClM zq;3tCFx9lv7VM>YA#0Fk*<=|68ZF>%h~@~P1#;mP4WdddWC~wr3(jczKC2t0VVdw# zU1VJ}MU7-vrziT+(v6J?wqAnl{>xni(J#VvIN|%nXW0?R=8ily!>0}XMw47W-f@r? zO{p$U$l{24svOk=YVDS3D!NNiP+$=6Xdb15(xDH!q=d!jQH!aCQdrV?mxVqPK;H_-FZ zk1qLGsVzO1ueX=R{k+{4J@!N8d#pOLCm}johir8MKZ5*Tfh-S zHpwEUOlsj~%NHRJ#kCNevQO}AwdM{!b^|%k2b+3-tMyLczIJKzwS=b$1v5VE4OxES z#oip&4iT}n>i9v~+67+yEqvScp@NaoaMJ3oMhD6)MAo0)P`#A+<}myLI!N1kU?F@! z?>e%7LFzjfA`3Jx)zHm*TZi0?M4ba;lBF98yk8Iu@lCy9TeDD>9v2y0sy4YbBFV(d zPWP#6yCQ2E?uEUgoy6p(gYUKWzHlfcU!0u1*%(}>gvfWJ*!+9x_f&^(z;tJ#h}mZ$ z!EviuRhZNh-EZYedS8NI1rNnBK)c@eT1j`y(;~yv9Qu3P2efFXPGK9&H038LNKAgQ zmZ=&%MsdT;CNZAZe61aJ{c3`|1A|5kpbz-132~3o2xgNNH8|>F-gYjsv|#PNIlLOx z-lEmg(Ahg&@b>#hM$nKRv7c0qs7~AiS(N)6X$9?R2ot<|iiTbl-?yuBp#Tz zTuSa}cUCy6!=RsI5{yKCsr0cIF?DShq339s;+vL=us$wYp^NOJMx`5=e8mISMPYn% zWrisa9+;MRZzb5&G|zWAl0Hp!vuBLlNEZXkX!A-el(?9B0R8af>pMBx1A$P zA$p0zP(oM@x6Q!Exc?fx_9o?i#ruYZzO5d$Slxu^l%lS&YD?ie=ftuQ^>=Vs1jMqC zcnuhxJ5hoMoyenu0LBW)NFBsKpRET$B;=1{s{es269^Q4i*-+A&;JtZp4KuLSlE9E z{ek`>%6`!iIbm~a8$f8p4B!d@rm6mUOzylU-Cu=hjEq1S1dJ!KFtR{CLEs7z&_}@n zjL(7p{6b;ci7e#LJ+;59vJL{mR0!|Li8VhW=|5x5e-%lyfR*0?B$yZg5pgh3On(BH zvyt>g_kfg^4WRX9CSamxs%K{Ni#_n0#k|u!zzEFX0XYld=^g+RQh?VN+XKgM{yBT# zY>a$?{N;2HoLY0b2mX*Xr?2Ei3!M4*`M(F|FM9HjJ@ClJ z#)5;6P7C;PwJfxB9_i7VTN%)qYMI$;nb7GPTG?n>8(TwucVdgtp(T7YFz>6HjY*GaYBM4gDf z-n!VT_(l2lWh;B8LLtZ0`L)H7)m$Bq4eQlsNpYWs17o)&2t_*^Y!kJ=pt@vzK?r@% z%|zAEDd1aEwZAqAXS4FUzb`v~cH&@hQ5!8&5afsApIoRAcmUrYt&YB02`f;BOi1mvz zk})L54mQV4#+h3)(Pngr9I)aT*@Gl$>5LO{>FAcJ)Z8Ss)y69`R2`-*vV>uD6sw_Y zu2>nBPOXmKv-OP;VSD-51?}Z!F>g81ZixV$0CvGzEcpZL&>4=r@Y_OUy}5-55p`^Y z2yoY5Uw@6lhfTF4;}w?nap5aR7iK`n2QS(#7Ru{W4?}Sf5I(j2q@eK%+&X z&ZcFtZXx1PA$Gcy_YR1>_{w_lac|bSSJv{Tyu2h?zmslY0GjAyepOMnoZu{h$h?R)G07t= z6(tV6PXu)xM(E27bun3s4o93 zjjy-6ad*_`u6-|?j!VXS8>~**x#6IX38tPqZ|}bh@6P;~)X33FCHzLYJ&wbbi`8fW zBkR$(@?NVQP{~3{4o#$pdgTV}R|Z$*F!z8-apme4;f}9dp)(v)-VyE5UFq+n_!eNb zbDy|-#jQ$6J>+I}l3*R5@0$8eg9Y^OyQ-R`m1JGQ@t=hnFMG|cqM0OXzYdXFRJHR$ zg1#Ot84$!K{{5j`LTRqs@Iume?9p#+mVOxDr1W3gP~Lgy(2hvs#>UMug>Bk>Gtyv- zLvZ>M9zmsCcU^M#rP=i?u@qc0ts*;k#yK>Yp2YriiPZJ?rq7-+4S08s&lOWLn!@|* zRZevhHL{x)O>18zALnx0LlS0s+$CARR9bleD_ARJo7=jdL-n-D%>C_`sIR?kVTHB9 zc%nn<2#W5om@r?AA0XsDl(12YnB@>D@rx2cP9PB%%DiqDVl=zCDoj@Q@Qr8DoV-PPLbSa`We(bVrl% z`!;v|5irrVQSnvExF_&G#l+IR^+Q^bftOnM=-Ysd>SEwxf ztL+NX{K~_i^^`P$`uii-%=@LQ3S-B39XEQ}v>TwRJdm$^lhm1GR1JFRa>p*{SzV}+^H{(ZHI!_VjsgRX?aV@`THi^G^jhA8?IG2GfL`R)9Ctp!$ci69|71}vQ z{Vk3Lm3)* z>;tFhoT#U(a6(p>maY-n+4ssU*j8H=quhbUg|VPw>~mFj_cbP%Gus^U+R`2FPtKGy zAGjo_)8G?!xT(*>v04a6zl?{6R}lq$hr2N&Ox12_X_7^1b^!6RDNzr`^u$u86J{Tl zjv-!}0B)Zt<#5m@mtFi0zvMd3P^vwqJQstx_VcY|PnGms=zr|P=`bH*T zFpmxB-uQb*01)Z^mo_qi+W-J@3( zwh@RZ^968(Z057S4DiI~{xTr;b8P%oLJqJJ(X!Hm2w4H%Phi*=oDG4OY`~ua%L}Dq zC(6=4MdHloDM>S5R7rYCW!Mbhx^vx9L~|9DiXo$rNqL$QSSnKa$+YtUvQ4Ea!S%o= zu!CWgT_QyqwfrJcwnZkab7uI9mkQW!ew_O5A1}S?%8Txqn7k7fuT7x_QbVr6whF-Y zrLIIn@M6E_t>kaj2BVTxA)HhmD_gFaO|_jhSMT7^M)=!OS75xkUO{K;Qi~JV`-=>YCQ0LSBtv^$~}+BbD(~ zHY?v6oNbcB;xx0mC(R$NHhr;?X&t@|)7liZ=|}yZTJjqC_eM)xF)QvqGlV)%_7un3 z`Zp~JC3gesTJ#7%JZ2~}Vh8y-dN7N;a5=1Ic-So(C1-6K{=EyPEY=<6k@S2;@IpNe zwJ}VwA;AE?xE+Ctsuo!uqhVPrD0*7?8ky|yM_GZ5jw1Rr9UkGya(iqiq>cRpY8kEX z&tNM3YCxU&7VSA|2c*z$s-0Eq4&v>RdY3njy1lO&Gtm1#o9E5hd zw{17Ow0CcL1j(tKZr%K`)Kcxy;tu>i4hhu#rMV;n(i^T{A~hG)sov%UQH6GhN2rr& z4Tz0aBkmL%r;+;%tfz`j!q+V`YKJd^LhCWoLJd+us}n1&&9w{9Ctf#3@Ew7wq}T4K zm*Z6X2DH3I-bCj!Hn?%mLQV$-uIzf)49gAu8&Ovp)Wfo_NoGfe_7^1L5hJJbf6HN8 z(h&H<*+sD`l@(4{C3r7``0Hc5VzG8MiQY~{#X5c-Yz+YfDbgjjRJLC0h!~i_!5T)g zn@%YYmKP@yiirmDh35Ur{AY}wzM$v(6w*m#OV)N1>GE)gEZ_K6czzRJjVV$ka@|z- z+{Wkbz3tsd7*J{D=vQSc6YFMQ#-WAsv@IO&nHh3&nlWNNq29Um#wV9h5EME1)*X!( z65`_%Z#`o+=Vjt6SW$Lb&>`?+gvqi~914>kG>{+Ms;^zC&s^P8YWBIr^jciG_fw>= zx`QG;YW}3RXlucJp?H}~{UedI$=Pf~%{>H06}?%bvbKJA`~%Y(5T-iabg{^oe1g#* zH+M;YmZGRp^*vNgn{vPxuXbc#<*Tid=)K*&@TBKaLB^;;>;WO-1B6ACCk7-Gw0Z_k zOY=PqABL^adigtzOh5JD_2E8t8}pK%ifXe?FvNQ%lzM$t_5)im2G_2!&rrsTee<$R zp0SU(Z`F`1QND;QZ3IX?#n8#KCynQB^cuk9CmQJRxG#g?* z95MR-$q(pYVZLZ1AP`wUy4-PTY4AbM@ST+feNXfO#G@E*Yk2;~G@w^|+V_ z_xHbJf|H{P9t@LB_{@cQ{o2FLo`3^N^#bUEO~QVzJ926*iQ1txf%4>@G4#t%m!LgS zVCG4sQflZP>&oM^j4|*PEu+;?Js~-;B~ke_DwyJg9L7Si@tuT|J||I2ibx`ykR?)s z{6oO52wRMu%;M4LGmpKiSr)6jdtEIyOunk>JukB>^lV|%6?&jN6og%zmj=guij|AI zv)J=H4WY|Qcg?M+nA9+``y4_x2?X_}v-SdCLBFyazwXQ?Q;?|H$G_qS+Duowv(70s zD}UYBsKU~j5-Afp7DacSv}Z>A2=jGT3O>Q(dHFt-5SnrKcl1M&`9{38Vd`Prc22R? zhjv{rrv0Kv)8zKPR|5 zk74|r0Q8)1qzA}5fXdoW;Ua{M@&69Re*Q*)HU^*@IVYrrq%i-@H!=ZS7VPJ=&4L-` ze)?rD65KHY-8rm4#>7kyqGbT)G{G#(;Pt-@?|$=sr$LXcpMu>-Pi$zoa3jjM0^8o{Mp{(PkO)c zcZ#tr7BWQ_;!M-Qdp!@&t>T(oE#OWa27B*Fsp{yGYrnt8sNp@qr_t$VSj*I7VsLCV zBuDT=)ao?YAL($Vy`sv*17ZW&4PXx0Fb4IKcXb|>3oR$sR0U3`ty_|JwVTr&JvP&| z!_L<|T!dCRtZ*nYX;{MWYDn`r$g?SUD!YR)0&~yf$#kY|06)G`UF8hTL=IC>)p}hY zW5^?e-b@AL&*^rrNxR-IbaXuup;OXs8uI(D9e-ft!kP;Kcx>IX?2=EXDe@yFI(b+X=?-J?kalp$3msPZUJYypqA%_mv479B zLne~j+f)!Vj%9~7qK%Vsj?7zzv$>m}pV}+2BX1|B{%X%PA_s2$4NnH3V`fm!fo1f; zsi4A2!m?08vOIij#%H9mO{AL-KZV)XY#_L=jK`Nwu*tu$omS#&pz$k?`RqVX>YE$4 zM_bpGsxC#qm)m9Oj|sAc$mrFvM-zx%!Ej!RkG(2dX=o}(Nfz{c4T-u4O8+uP57wX& zmrX&(TNG?x6L{!D>B-gBeQss>C?_N@tA?!tsX(t~oLjX7*Vd6gVi5Sv8tSq>H!Svk z^=5Dg@zeC1Xpzu|g}p2?CZ?vgnayn&xP|Mq>P;W?<)%n@?2zk9`mG#IOZp90Wwnfj z3O-kf7j5!F7h(EK1gJPBAJ5^Ef7bt~RTqe&r#gp(_&Sh6O#QjPk)(RiRDv#E%zl{45c0 z$m6Ncz5I2&%fpxMIze7Uh;09*cGDz+`oah7D3><`&=KSGcp`AmDgf z)Z}Z5bMTv!t$P*^B&y#!8Uh$sd*G>EgIw;#~M) z_`d0L?4Go4vCamxb>e%DNJ&)^;rH_dqvI>so`=SULg^mf+!LwDa;JS3ZpYONPi>(e z;nq2y`a+Jsp{;FF-@2;XxcmEu+QexYbz6K4jQ2`SE}>r)`H@uDj2-;B6U!!;J-+uLB}t1VOT_hf1J^IWo+6$ z^q8z(A}Frtr<(K8A3de3xc%kx`@hUAyegWsUs5ib%qFLZcb;Dn~Ixbj9@1FBz# z=&Nf3;#U5;m^3pnhE;ciW^w@DxtCj?bzsdExmi7Y8DEd)3LB7#Q z`X|v*eEZ717Ze@KF_gNc&%!f8hE!$|ry2~Y_U>79^)ZiUe|BJ0F`XL9BW|S*HnCWv zXd+5WhF5iVzx8gmOoyTBZTpg$1vC}@Tkrafg-Sf8>#1XUmTh4Jb1EtNlg-}+xyN1& zZop{e3}NL4ECfSgPBHj_1RTp}EQqhgHc(wB-4R(*kyGpa__^BYj?pGnjSSthedX#0 zUfqw|Zg1c+HSsS?UGjU1A)_~Nef#MfBf)-|rSZOpAwjbPv$TcJv(+MI6gW$7C9GsD zvpkb#<#2>zZ#fn%z_B~hnoB_lo4f08H&Y5N6&|5M@h|1eYk6CdIkvdJGk=;x(8 zKYt_8-2`M{KV>|SE0zDoL>49>JOwhazkegR#Qk68CtzN3CZJw_nx8PU02O#(eW9e_ zAIr}SznLwadd4jr6U5?s6~jrU&!2jlhECrjwr(7XBo&I* z?baCMmoCi6j?}$uT(Ej~@b2vnpIu?R(C#V?9Dwk#WM4bV6KArSCucO;3cCDytOP|N zLTQG${}W^+*;{y0vbw2KrCmVKfbGIO&*%8;usT2i=D>Pm6R-CZ(d8xXyk?J8zP|SP zlIe%aP;MO`c)Y$T@|Y;b5t!SzD2{9gjsKX4YimOB-gzBk42`ZQASruIhZJ;ecxnd(5p{gqxeU49;^0W*RD z|DNF9)p}^z54Z_%VwQUPzzR)i%i?6p(ny?D$-n1GmvkS(;6En=Sl)cu$_?XbW!0H&`)tW^lD)9V@ zr8oDLPxvlE#w!-rxtq6cBM;m`KBVf*9dst}Vl&@H;B5{zv14Fv+{cxqPt=8c2v zcx%XbT(c;lPe^h><((Nz1>B~FGuPJ)}Io=@I27Nm>?P*r$r;ApzS^6h5s-wr606zW1kE76NuqP|3P zDd=*9|CVEjznZ&(zU(4~G3EWXZ96piijI4|>z+8KFYyTqeO_DE+uf#-Q4l_IBBEL& zZ!Gv6IG8p=+%lBm@zruVRn&GEjx^t?It$j)jyl?_tC`A_-!85s;A;lU6K1O`^v@^w zp@~1c9MO=>jk0~41l^L1#PZVT?^yUIV`I2aqDqaGLoRRce={?apWR;-H()d8?dtS6e}L7JXgA#!Wu;x>&sAfD^`XOPP`{aoB-j? z@ee4W`gdqPNdwSifdFWp0ML+RJq+p+Gt_#-jjV zn=rF2LM*VgFV)F0_j-nWc43l6YvXFV6LSz-aOop?%v-H+Itzx*bn?a)wDFg0Y^i!> zl;mmGitqfIucsIGArPu89+XXEfnBnaEvY>E^Z}}* zgtH}PXrdR<-f|-Fc0Ok!ET4iC{B1hfy~2n%F(;tT)v+8K73~Pqcx`;gxu9pQd46fU zW=n+zjuEqm@V$P}mI{Sn{%X!qgF?}PHdThFgW4Q=nxJfuXVKeQkZSz+0+*oI1zoC3fe;x6?2rZo1pb?aXpZctGcF!ebD(pHWzo+ zC+Z%weofD0xLQwwZybSR=BsjjoQBc0fTny@3TOyQ-}c%r2@eniJ-UcYG=uQELRm-3L_`LpG9$>JqA*N)g}y`hKp1yN||*LrHXd=K%; zb(=4pS?BLWY4h*(!q+LyeSS1a%ZQEqt9OezXqO^sGi^Frv zJfs|*xxFf&K^$|VGAPUU_H{UPy)>i`AAD>X#ICd$MG16XSY_N%;{R(s5VLxzoomH?h@-(FPeO;dpG?3It|F7 zwue?fU(p?Uw39{ooCNDfdkTg0p@KxL;7@R{2>v`txEPL`-G7X7Gecth|CvM! z0>$4FEl4!>*F@{by%f+D{hvhZ%vAfY(;{%1cJ{Ukd~ZV!h)?}JivdW@e-72pO|<_0 zjZ9!FuJbaj^Ty3D^o`()8x~;t=O-J_Yq`JBH!^_9>w&wjzkeh18BwtxIR5eq<)m?l z0k~6Q1UP3-JBJv6xfSsGLRrB-=5BvcGd>N*kCnpyZ(0_Bdfgi6Rj*l4)U>kF*M`4@ zfU*8^i9~$&xx{eq3qwvrR1j=yy#LF~GBW$im4w@5!t9wn+k`uWix_+F%N|@>-Gc>s z)jw`TTTo!#=9MmV&{&~Z#j&aiXh5*TA%B0bx8Z3j%!V?qX|b3=-8{O>#`I;^z(b{% zNM1D>RR?g>IcQMj@4UnS#UVA?Q5%sfS1K-W!0!)KbTmw6Daj+Piua}@kAB6 z%t_rz;G2iBzPZ@I{giclLolUPLu22UHf^XWv@P-Qah{t>Rn2_E5}H?o4$_|ZoHov@ z&1)8ud)#DKB&&sRSLwk49?2aK50Ge|D2-o#@lc9RbqazVP9cL3QeAM;oee`lj!4JoT|EbQ_u! zRG(YPv6fJZjCsBWO+e4KWz%}(_vM8USWpI%Ydk9{|0Z?IB0~8keM27jWrW)#!{hCj(7^c;^R)gYw`)cD)}2?jO>oi z{imeGQqOz71stgBy;E3`T4lkMS4x_dH40~c*H+p*P(z`-C}(udMrdcrMf8(=l(!{^ zB8ZTqpP$qx9p&&NR=d)-9V^}98Tx_1Y4mw1hH;B3+nK5jwLpw{&X_B-n|H+!676D# z@6ywj={p}fO}wccWpEb~rA;SR-6Mxc*6Mv9um=3#5KAN4%mQ>lHMimMo>SICrIg{05 z*_IfuIzw0W1g05Vy5)nZR?C8rZ;2Z!G#dmJzRvKqoJa9TEB!*JBb7LH9WfBI-ij(lu^0gcYBth*8e zc)`@S_qSw67}e`4Gt#~lsy&GDpqgMAvEN4;9&biU@H0`gc|3D2;M`S>N3g8{8|iFw4r9NemS-_RzN)%bVNN=qNvhTcAZ`I?Ld>5>_md2=LnoJ7h% zh1PRI%FFX5q~CP?qzZEuFwK;Cu<#b#Rcm%XeH$Qy&iD`<`Z~3Av@x>8v7lY9pjh|b z_j_1}Ia)=F`G>52E+y=vGVHb%Uw9vEcn|Z1X?xQ*S_^-Djg+2881XtibsBvgE$D^~ zRpjCgzo3fEGV@Q?3`$q4l1!(E7zYm-KJ)qTJ9|cJ5XsA;bElZh!YzKaN+|v+eWId4t{q0ez>ux;HhJ+Q@_h4hw4hd&q%b3nEo7AE0|jG>0I5d9mC24 zWxYa`@V)?>{><>@{#0eS<~!F--&75J_j^P>g^6OHJnbM)a`j~nD|>|O)g@)Qf(}?J zyZSz%FY`Qv8I=)~NwE_QN^fy6ToZAhgsJ%f(ef$K-wGvKT zNE5iqcFX9Fxuz{_l@&8~Co6P4SnQZ0tI> z6!9vmwsH`5?g>`%q0r92Ynvn$S6IL59cSY;kd7kJGRnJZJer2PV5v&Ip5H3R))Q0^ zi@J@EKzO%IZSC@&=a&at5_kHcCOp^Z{qyC)D37)!jo$4emXZ(Tzbr^A|FqngI}np0 z&)Z3%V|#^bM0)St?j3n|IZL^^gt2!CQnsja1%8h)_h3}Hu6w;Fw;62ZYnXF#Q?#$| zMBul+u}c~^_Kk~UU(9r?1$N*4J7(MC?1j!5nCPTuc&c>Wt25e7uW*ri-RIhuRwqD1 ziwd2?QW^c62Z2^wQYlA=uy*tM-_MDGfAj?bF)$?lIMb2E3=n>wR!sl@@5o|?JnG+K zTu6}f*BBQP;(!BtVEXU}i8?dTuXGBX`r&?dDeCI`cmcG&4hlcu&9j z0wrli;PHSQh6%u%2`EYf%v-boHxnTfaFGCBUnCMfejJ&fwO;|~e($$GWrsSo=Jev= z4_Wh@H$2A|2TTlr<|}{%BO43w2>?a^CxAJt6Lp#*9BU>2-zh@7qKNr0+jSsCK;tI$ zlTp1-;~D-Axf?0~We9X7o%i|U+e|_Fx*yOpdv~_hGDxEYS`3{7px_Hchz z`u>;Ygq;BBfJwG{pBkMP2Pgt=OlZ}Tz@x+vdK2H&BswF3D#`Dec7P_5(N9@XOT0t*!~#B6=QxkKKjLz zeSaeLl$}Wufj|3d1^dqKmQbpdC zJZ#li=`0i2(D@z~RCT6tJa}+WuE>i1B!>Szf}}T!!-KK+_qkaL+g|eDc}mWg%d22o z>N65Mv>5V)M$pD!f6FxYYlyv$(dEYoZv=Hh{KF(BtfFrs!E@9RE~J2bzTsLC-ynfb zpNhub9Lke^OXK-D-2*;4Ab}3Qc=W~2A*zqPXuqT*8D>rPEgJhb5l-WEqWoIUuR9Wv z3fG0qQ5-W?qFkbJ@;F~wPTWPowVz2R=GIZK(9OV08ArKesd`z*4!*O*=6<5(E$Zj# zyt8a}cVVAS*99Y0(mn` zN*|-2HG+zG=dr1xP}c#CX;qdRAva5ryOt#_yb+g0T9#~G7N$s=^-Y>azOPrRq_Zr1 zuPS7IIP>v<=Nxv_XW4a>!S|gXR7Ph=*P9Po{MIQx*Xjvm^&T=4a7mg-qw6pkl6o=v z^<~BrXWx05B+Toh>B$d$eJYuI8L1SZvVM~Oqxxk@m<&Hkk@wO^X6g4xEUZO%?;xpq z9r0E5%TGUct|8t}M<$emRw!0+eJ;~;l zCIZKxIo$>_92HSDK(z`_38wS)Y6?iD?}rsn5r(0|bmCDDB16pRqkowei!Yew7IsVE zUEdSf2h+&wEWuCN>ya^v>T9_!>&qi7y^^z@Oq?@*7rSCwIm60S*#_;R7jjKsD)vdO z^UFBB%OoTyB4O{n0yS<9@L^57-yhM|G9m7?2YS@JhVBwG?Iznz9iZ9^GU1&U{G48V zf`gxvLLbDv0)@X5Dfr{VA6TDA!vCiLc&7jPe<3(Ju5X^@J7#7&7S%b!Z^Qhfrvj)k z{ZO7{{viy1hGOHKQWywA33Rpq$iT!3TpRyf2|KUR;+HWFFfRxwiUTu#On{Ch_>!Cr zFrJl#4YIzF_lG>gx!(V55AOv+5ujvD%LuR`omvCztmE~cvF1M^`HwjC9H^Oo8mVOc zho%8e{PmlI9N764(kmFqq&L4nhVg#{3 zhHqKH`NM^gKK39#58m1}2?AuM;Or6nuS1Xqum6lS=bUHfBK`Nf6-FS1 zU_9q0g!zX++wWlw&Pc#m1DyA)jKDh#PDw6|^>Gv6&shJirZ40K0T>ThPppBQAmH_% zvF4my?HsH@Kh1HmGM_(O&I}Q{`;E8u__SsL=$($S26hy1xdyIITo~&UjlFZQ{>|<_ z2-d8Gr^Y~_2K?lovE`iRzH^a=yrgF&7XWdDbI16BhREN``cIH%JN1hI!T@(1`)|0# zV_oBO+~V&l_(6aM0w9(XV<1R_*MG*Evt4@s>=r@Cy~<~x26zyG`qw$(-d}V9FA!p# zKn+YLLN@iuVa)=QukL>*H3DGgyQ3jq|ZS=TQ39UOK@VaEOq74fHaw0Eq+(K-h9|tica)UK;a5 zspdDZW&nmd0cudlzYaM=!0SI_%{k%OxmZJ9(=%BAV;Td|TKFBu2>fXD0O{$8V*~-@ zrvQ~L3+Oi-+@;7u-t6SquxnEehGzjKJLkz#`1T^c$`b(hzjswm!o${NsT9HPk>h4%`HtT626{ zgV}HYh&30>7(vIaRcE#}3j-@H1HixeGuG!EO22x(6Rd%}_!w&tz|6!3Jne6|#uKLJ zpIzhcs$@WpYalsbIk5(UHF*7JtT`t>J8xSb-)f%0`X7%F2$l8kA0a>j3dWiNh;EpG z*M)`QH(VodBXj<74WZNi4O_rigMem5fOPD~aSd7j8Eby?Ks(-r%l~z)&RXBWS|key}{cW zyao?6{(EbF_aHppg`kt{33%1Oz8|RKT-X-SKQ`zB5A$0sDUc`=2&9-#tbs(C;PoG| z<}cjlzo-iQ#G?pi!eIfjlb?3sc@5UT`sGh{A<$%V{Kf<42;h!^`;7}@&HPV{=HOnE z-^UuD0tK!OA^$oAYw-HdSo2@yl|Vb!Uy%U<@e98ZC*-a_zn?$&PA_;aLv|q;i4$vn zAoFLe`OVYfWY5r_cnLtaj17pqm>GVYAe7{|H+;?S^pVp z&N(g4373JN100c_373JZM1TPQ=izlAg8IGZJH{Fy$UWYLfR_L(5P%2HFTM-G4{=T! z2$p8}eXN1Tyi;o+UIJMEA#2W_7AJjCV4YkDu!4prfTjn~A7!Ftqjz6V$6QyB5V&Hu zwz1OFGDUQVZ~y$(3b!fLW1KTlJ9u5oAe)kjis@M)$+DAW(<95EdO=Z8P({ScunqGaO zqw0cFv$Hc$)9c2RIP(9xd++$FispY@0YOo^iXi0*C{Y9C_Iv4p5b&Xgpok(*2mwP$ zAPF5oP()OkLIA1Kgedh91!)h`geXdlN{J5`kkB4LKt%BSo;|xa=j_}Y0*{|Rem`F? z%sF%R&Y7K^wzIQ)rp>G~wSCpB6~p%&Zq)z8^qpHTqz|e+_pq=2$o?a*oxHmK+Q>iK zY<_TarDN_1Ph4r9m5@5WdCeh1r;lIocKGQdRR$i}7JdAli)U**U$)-c8z*;aQUAGF zwvyEzi;8&rpJlhy82vzzX^rlwQFQczd$;U;{pVjB_e-<+>Xxol`2Gp^7TIYV-K5Bv z`-_)(xZ0AacH`!ijjTR8y2!F3YifoxW8zbhYWm$wmezgUiv`MB5Mjqo@?B$ zUg-lRiww9YvU1~g#XwqERKFn!=amWqu=o1IGe@njx~zBaq)iR_ z)SL5c#_R)`4>pc@Fr#KhxdZV-%CzX!bikx9%Vq8zm-Fkkl!v|8lMyCm*!tZ;r z`09tdFa0`Z@}g=jo2I`NUgE`yt7mbS6N}KRSR1Ee69QpPfv#oq^a%pt zLk7ZXnNjJ_g-hUN~AM=hDLEkMtVQaq*+ikJ+$!*2)b%29MlWt>kx`Z{0dqY}&xzSG8Sn z`Nq}y6Wd(;ZEZrQ=}9vx*4x>)=(&VWwkuHs-XB`w(H4D|l#Hpfwb0T>4z|f{oIWbN z@QX!Px9UFQYsa{pSGT3Oy7?=vsx-UPgf`*LYo;$KmuY`H=P~fC`_l$d&C=fqe*~R$ zbx-_y-=v(V^l~q@>3;g_eUleeM<>nL5^5ED$}JfNE(wMulx|r837hrji0T>s%~_a~oPdG7n{_RE$GjH#2I z)}q#uIZN8K%i8^L%;Op35|*`k!oBL#sZYCogoLM=6dqT1 z|75`x5}wmact(-%tZvoq#b-OTXdT`=q4<(|glyqc>1!PK9e9I~#Zd87r! zb||OVl|v~-9y^=$NvQ=rUp@PBryth;vGQ2S-+i4|G<-T2J# zA-iVJi66H3^3$HCn=1_q-(23AHtdJ1Ww(&z4B1Os^!k_2hfV6-{@lXlpR}C^>YI!@ z0DgoKKZ@UH<;OchnKXXvn=F(`@nhYFatHH%A5$)~^GEmOMuztuQ)uaAp#gaswQtfQ z(kK!)!C|IP7WtXRMEpzXZVyixFR)j|4?RyRo@x`s?phQseZ7>Id z{Az`W{HS|!L4KKgF}Ag;-E+kTWUn7kHo;K8SfPH4o`9V)Y0Lzn%ny+=Lt}ubaj$MK zfDF#gXJ|9_Joz3;%S&pxkI z9~R|8+m-&spI`aroB#e$<+Ir{i)EBJcyI0>OB)C~vVH7<(YfRBvPNrag57g}dZV*p z!R~Z?YZa1OG6E#Vb(QisA~#Mvr1O?8QWHm=+#zG zRBS*^4euO-o0)$kWe;6Erb~k=D++H2UywMxPpM1mD*v21XyeP(Oe$UQ>i>Ixb^3`jn)}HG)dPhp! z_3lIF4}WcSp|8j1L|)pz^^wNQ!<%P(eCpZPD=nQfXXQO93x^KfQRwT*xu>6gFzeJ; zv167N@6d5^Myrl9G8`S_Gj_ygovO9%QiF}>Ui;UPR~r8s{z7`a-B~?rzy5NkhA++u z>pFM+Jt^`24y_k|*vdUQ!v$o23S{>_ly$1|(m7SOh!@;nm|kE9%y_{g<`;}#+GcUx z8M)mvK3H0}!+^!Pt=!XlMI8KR#;({8mOj;?HBdGbKYyTvKsjfxK=}^=^Ovyo%pjbH z29$VdN4s;wvZ^#3yyc%8SFYO7UuH7EN@&HE?!1D1xI=j^X$H85( zvxD#?X4#kr!#HX(mTI&2OzVfgt+M#$ zxBaWMz2W=qV%opn+`oM6nxd!w`{xI9yKWqEBeza+@}A^Baxa&!v-#%fbJt7MNjg7b z#O0x<){RejXzsEhhi`P;vom?ZCsS*V_~~;0VMls=)^*y^(NX}W9UFb5QDkQ5xxcm;khZXH-I&UimrfWJyR&gdd_>1MF+|TOxv~qnswukIv1i5}(a92vE7HI_ z4tCEN7rW?*j)^TgR*aeYR_vnc9Z$FDST|faP#WXtA3)VF}^7$(N{_Ejw zC%&{P(mVdpXNULnpSkO`>qW<3+I1=F`lS*Tb9P*6EdK6JX+DIywJWyV(&a5*ZZRP? z>&e=-3oQn8Io>2?;g_}hKjDw*GHvaoST+n8i60bzM=ZT0plLr zH97aoZTJ0BSiI*h1dGV1lt*NZ<{4+omY-D0AkrXidhUtwb^pC+%GlX;5AA%TPpQKj zkH@#YcDd7@eqSChx6@buudOq`@NOQst7oO2LwmRm`ww1s)tmOt&~I|Sh|dL!E*>qL zle!WT6LxJ+O2WDY^($tM$;lh|-VI9cp4@9$v1&sg-&O91d><-2dARLh=TdKKYWGYq zwSzR7)h_o^n{=owehW<-)owy8(C;c1v+PRaFvDsP!%e2{c9tj)Nj-rikH(LT!R!3O z+dVR;SNmmm=Fl-Ms;B;PZ2R1ApPc{Y1HBp^eJtmSj*OnQ$q8@$daaB`~$to7IV_rAw00`067VjV8V+PK$1m zDskPE%A|BN7&b9P_m91cAp%)VVHwBtgF*Xga>l@g8I_mjHqNL!DWl}#-OFn|z5esq ztXfU8FI*{7yXc`Ynaw_0vvOnM1&vPk?mM&5(G$;2ym`9V!<+UmtGeUTpx*|TTRODv z&FM30uSz|#|AVakrz0D*pS|$>mBB;bCqsVa&7tp;Aul}n>Zn#X8ZX&6r$eI+2UB)W z+<9gCA7|pL_kX=py>U~wmF(8L#-nB1mMxd>oVxSG;@xbWdbeLOv0mv<2Q0A_9lfUL zl|KgGv!(OM;@vQ-Zb!59C(X0;HY<9!dFj>R_29kHLdeohieU*aQN|kk*~zp-Axji(5d;lmBUxpZ@+2yc9ON9+oS~X0?%h$UD^HC ziR))YSg~=HA=(om+A5^zRpK%v!~M+y;E0$A?rg138XQ;U?l{tWdUHry+?-!32hf4d zc!yyRmVdXW_l(oS_FpZw^Z183FGWR9*m&Y_n>yD%a(o62>D`JTt z;nlL(1@4I>S~sjmiky-hUOv5Tdd=POFp+ztk?(xM0~*I4CO#w)AJ(?MG%B|Dk!ZiP z$XX~O;s$bu6o^f>@inhU*Sk8y^kWe=5Ofy_Gtp`oW5O zo@+R%SBX=1X~4JoX}C{O7$(sXGw=?<$~Cv@PM#kYrOP)&YzU_yZ69;{KdDYP- z>#DXr9F}!*!PrxOT|d9`M%(P8$Bu2-H1hKKtAAddeSJgp;hcBpxnDT!zkL0N*%h)r zu040fFMIkAbJpHX3O-=$y}QQejJot?$C+fs*O6~mabst1a@*crP92;3!Nv;Z$t(=P z!RtoIz9H$@Q|ngEq6m2Lhb`9hcp06)afM8E3vdOz!>L!xV{Z95VA4^Z$*o=)?YJMtvVYseSw2UG}}VzxM3IC%T<|Z|&+Y zeq1~|`pAoq4;^ta_tveG=dWJ=!ke9aQNc>|D-HwqV?2 zcWDc%MMJd4O($C*(Lp%y4mqQU3eRkL(*D7F>1SHZ`Y`de3yZFvZ}I7{^)tRb*W%CP zCvQy~HgCn_Drm<7auVU-Uxfyu9L~%lqb;YSt3joK?X@XfIBb0JNfr_ zUVia>*yhK^t@wIO&IdW;E)ghC<%jx#qx!*204pthWx}=>era(frN*tn4JYO1v>4t@ zMRr=OD5nfH#U$$B3^9q4ks?G02sTw~o-vIGm=Ig1`SE8l^~-yY5x@)u@r^p;jWbU) z85n*1r)K>tbc_FRZu4%9`u_Lm#FW9e4t{&H?VvB_Zn|;u7o$%$8)|i;^BQIjCdG-TMT$8n8Xeka@wyfrX|5@6x&UIUr2X~7#edzF)a`?1WXGi&%mr7l#HQ-inU)Sw>C5@>3GS%NSM1CAbB@7XvcQrI5K51 zGQq`;i>PhGD_tkk_^-%%p$7HTY8SU2HuuNAvllLZ;e~mg*kVi1EP7-K zrHzMnxvy8Gd$me5Q9it)$n=VQc(6<_B}ge3WXbeWf|PQ-$gWf37zt9OZDc~c4CQ-~ z5N|`d@ybZ@t~#L7_3O@8=uzQNy$T((?me7-@A|~EmC6szZ8Y-w+02~3{wnm~QyJxh z?8Fs^HdDD9cH)Z7pS0ta)=%+QY*3`Xw8lq&jS^?K*uX~j#@1E0*k(od#v-9xYz4x- z*fK+Zt{^@8tW8iiqNFQNV@g@$ddQ;Ah^BW@lbm!T%3-Gz*ck9{1ug_E{A-?PxZZWl8cp zK40E(FQVK*E58h~TJ8~N^qW`9-BiLIteAxc@oo^(>Ek|>iR$Gs9zRDVhv zWg=`&6s5Ug<-9oB5_c#mA~QL*u^X;!Ilf6i$1SVP@WieoRvm-?(*vgR4#4DZaww&1FD;$`+^LROIp1k z#N-+G0*Q(`#7I%2bm(uQCP>X{zO{W~w~if$4iG2g*AMKFp1*-HX3MOKb<_rp+ZO9| z>YI#nPH&y>8u@$64hueN(Z0r_`A@GbdGz&eFHPJ2@4BDev}LyXG_uapu9U7WN2M1$B(--cED@1VXThEMF4U8>!bJ)72~ytDA#>901M_0R8e z-i(N9a5iPi{EyyVu~^wyzUUcIO4xZ&Tt>@5EBXRY?0`lRjV zzuro}(R@+Y5zR77{p(uhy)n`EU!D8-_lJMlUJ>UQJ=5$TNJ#Fy`6i7th>Z(KfN&uv@q?7q@aq>C#Pn z$!Y12k9lQ&@9%aN>eAq?G0!*iX76}z-?v|7e6xS$dkZ3-yV~I5i3Ph4Z5(oFeAnwG!m*vFsLA9C=4-K`hh_}83g$L#AEv*X96+3Q!wHv4Yqkq!-CpHuXmUH6nLw0+Bc zvyUgof8J@}qceJ~lL>`G1$qchtH1 zYi7q;&7NE1`R|FC>RpyCFV!~w`{kEc$Ata#OXq~&fBw?7Z25&ROSkxadPIl55zDXr zRlUx^=RRE-Ht+k*Pd+ha@Xg|7x=kP5nA8hI(#cWCB@ ze;nG01G})pFX|haOozObHifVW~4eUy!BGQTG_enKfK5N zWS=6#9_h6vdgzLlQ*-0r?w#__?_d3+{TuJ677i~wvGkUoT-nVYpZeCT%g&z&uYIC^ zy-xRsfBb&RypmOizF+fj_{JYkXVq;}wOqpQWfS5ul1}#hExYD3W4_;$-R6_=#Tz=_ z{5k%;EkmAp*XNjHD}1g;(!hJ#UyT^lC;jzLqHFsL&pr0a{o@`ib0zF_$746TygH@K zkwSa!+dAOBtKUxUKQ8`l~thcBK9=eL{odmG)G-cm6*=v!9I% z8~9%5mV+`reWS})S?j9gHfj1m{a-h{_s;pZ-+OP#(dx5WkDv2ZwLKqYZdo;U=TDKH zpSKzU`N5_g|XwLbDtRQo0yhrRjb zoLW!))nrN5kY75jE?O*M^s&V6>oxza&G=&#=I@;8sQj;YvCz9?>*|!gpk;#zL;7_s6IuAi&S8~4sMPY=O2;(Y+pAlWAV7h!k&1!Ued|M+rMdF@qEMR_8otnIb`axOU1+bme}X3 z*J9U(D_{Pnw|m9Ro!<^`74c@LN@32MLx0%Uyx03b{Q3Fky(jLw@cOlzgAbgqRK@2` zuUzMNnFA-6R4%ol)oaD7ynAZwt>UR`pB(c^k?slYXOBL9ecS38qf#OcxaXE^)bDug zu99z#&)ih>KeJXm|J~!$1~1!Nua@V@hEHF7u=!7y{a0UGTe)b=tPi(FHy%B8-Nh}n_D{O>#_orYOlvp&bgd0#54LE_t+Zbc zhmDNwS7MB3Nv&V+yJ+{7{klxt%--)e>VEe5w0UO-4*liqz$({j#vgjL-?c*fmcKY` z_2sDVcK=ki*oc-Hc1?+B)x~hIQT7{#m5UptZ|lTNmoHJZ#(LT2Iw%)%xg!A8LM5r|g>l7D=!2?^5nD@vN=CL_Wzys4TV@_ejm;c|Nh8e8VreX3h zee*O-I9%$q9VhD($LZP=IB(umTpnZ^COB^@Sq`e0d}J8y z*x!vKNrPZib|ioK=3l&a;$#m$CQh8jAXDWaz2+G0IKKk1eGrU6rn?2hh;NZcK(85% z!Ol|+g3)E18(|t5Cv73e5p*15!F0y>Xoopn3IRz$+F3c!{ebd4t4#B&A zF_Nby8a+r(AR!P0W5INWA2#T58&iBvqea3K)A}UX!kVNENJ|)O>(n73Wnf}_LaHq) zIetLjgru~%w8Z43r;FR_w2Mo@Ee;Ma{JyPDn}or*m04h=|0!6L3c};~GxDc!oBjogepj z<^dedBfP*R;DieRh0Eh=7>w^mKLUK0!(c>ZbPRDyDh-Q~l(*Gs6=%6^nmho5Sj!2- zkv4~n-ON3ZMEe#M}cOTf4FM14Ul_i^$Z>K?BKn!V6i0CNeFA+z? z6JgX5@sB!zYx+meL3DPynX%Qs9uICSXo;#{zauc1#%tF(7ncpCO-0zl=pDDX(5>`2zCl z^&0}4ciw(r>@4Qo%o3bYF2>3%sMHlQ31VzWut2`(2KuLjSeOiAPspyx6+>n7_qf$fI7n$of z(;d=3t1(xC=Oi0prW^OdLgz1t#@Gg!Cuve95H#_aK`gr$Oer9D0h&lI8BHXg`HZn# z=~wz9&r=j*Ed9TkSD`&6-c57_ctvqZzP#dNjp_p&iwt~$OZFI>@_Z>MDC9h=Hx$fl0OT|3NOJypFCWAgRO$GNe z#7ilg7Mdt36plPUniOLUngUK3G)aGLqDee0n2jNtOg<#QC(wC&noNw5RY7JVZtpZq z%y20t&|fkZAgW-2Ss;3mj@CMO@rSC9z;e7B!i>b9-MRyJMC+kJc^H z5dpKz-2xGp99(4wF}Sjt%1j77&3|weAtwIngrJNpFWLvc1^+2Rq)5?Y7Q_H?27dz# zl(Z`QN3{Ilpe<%KG!rGmct^Zd%#<`LyGb-Mhazeg3#Lovpr=4Ig3nUf z1Cvt(A!-(#Kc5w2Wgkp-R#rQj`Fwi^r1)$Ogv@eFdJo!kn;-%Yk($ACcYgA$m~7B1 zZI%c$Wi_UWUh8qG`O32?2r}y#qZ776WFm;)kQuLK)~MSr#Y{;nc_~UPK|W-qsF~IR z`!GFFx-)tyFvy3$0ftJNO_Ls3&1$CkjvST6S(#*l@t7t;0a*Z#Ey)p$$FlTS1$ELd z5RWlZg5PF(3+~S_zLo%rChTM%Am5acBKuWf8!V4?4bZ4eGSSHVnDwaFd}WqsH2E^H z^fom94|c-BSmw|~=##&3GZCtsf^Y(W2lAC*>Rkt80l5%@>y;(efnZEJVHJ$Yqr(Eh zn8Pjf5+$NcW~j3T>Y7=;NlvWYH0xX-QZ$rImZ9g-s%)~61(Q|l0a}eDm{V3Yn8o|{ zZcvVbB31pRIYJ=RZsvFe!C<(%AQ~)R>0Fq##h5{-X zR2e~^MM6|`CmC%O7`g2tz<0SlL+P%JtpfTWRaaK?nDoJVE^k44W9IkYrw;-Bmg=78 zQ$0K@FQVIm35y(p|2usM5N-@pU>syWlpm7|5pwrTV3^d5NK+5y@vP?y7igGN&tZ;~ z5dJ;tA?FqpKj5r%U6HM)4;P5ifZH>Rzs^@B5R$J-Ifw=}j}X#-XYv7KU~nlv8q{FY zOPPNc8d*Q0v9RB z%0W^exH1*oE1D+lciRVwE9sxhXI27z3>4E1`sE}o;D_WH#md0RgLwmf$Yq3(@-wC; zKV&_iIbX9Od-{Lmhtzn;?&Zx#@l6ih)>+ShE)dbCkl^o)%jAAbRQ`y{8!H{ilF!<;!I&8nl1iAk75m7yiB6q-~pf=5Z^F~QTUD(froIKE*OU}fvprGeLdiwJ$NXqgOjBB^e1n)g zVUz_Qb>k^_pqt4p_@q{nYu3iUFNhCh3?z@0t3bTOt17GqkmqYW7194^#xp>;G@fc4 zL_hMzK@F1cW_ivO>V}FFVs#Hv=|N3W}N_7=q%J8~UY}^~ywMK%b2= zNvEuF%@Y*kcLnN=S&v0>gK|9>K9NqK-cizn{1|#~?X}4)7~q>$YZJn7gHvt07MC$%;O~yrO)`h;-rK8Ifn67PSd5b=NRw19ec(!Wy^^^ zJ#O+^jzfqIYV2ebBGQa1DFnku&gAZCR01gnR@pTrpUMeJf1_?KhRiAJsmvlk4fE%= zim4!bitB1kz({pL9)tCgdJH&3SQd*~h@j`XcaZ$?RcA@3dZa1d8~*s zcq}*6sRqS|eYjJY@TyZm`9dtll%YT-Mp+M@2ugq{ z;3XLp%pfZc#tF+UNA&LHQz^YAJmp(&#eN_qWBu-T)&d+ZFv33p4j6 zcH8E!>^jjVz4}`d33-GY`X)DV1nikyLI}uHN2}Xn#U(F_lC*1 z>jfUK+}tcO2dqpP+e&XsDU6l!BT8r0L{u0t=hlq(4V=j;{PN;i*z#S(4)%rud2W~lOWDi{(|4hXZ0e4i;U zw&cO{Hmn#jA(u}DZ+R?i-Si#Q=a`8z8Ipn%N0lFz(N1nodsm5L2rPel3tY#1-(4_wQg9yExj0AWh?U2CQk2dcq~^uRKVs?{*q`m zoQ=u)il+q^SZH;CW~uFJ>lSH0#VBs*BbpgWIox~9iw1cDEBUJ!D*2n|4Bb5P70Vz6 zr`0rX3MdsR6l9#}6#qz0D8R&D;Wda}^O8TKS20u4tDGEo%Y$L-R{q<{1B5leTU-m7 zAX>po6@5^-0#!~?AE@%nWzR>~y$y6dD}gGCPfp>q{tiu2}V+MOxMI% z87bq^*i!g)(?AeD8WaVytZ3@{`&85_2SnKyX~*T#j0#HR z_OpN;HxeywW2d<(Bj**r3(6f;G-kHl#4(J&=$#rWW4>a*g7?fkbb)<|vKz{3l3Xz# zDSDAVabTm8C2JxjPnPbIK&iJXx&VPZ)W%5}Awr7V$`*uL5l)7LCgUz8BY2iqmxJqk z#Y;je7wJHUu@mcS*mp-;i5Y3h%X^bzw2sI{naiC8xTA1*Rfo zzliCQ;mV%f8U0oVDbBhz%Ann>Ox|lc2^Z%C2uvRFd-9`Zdw6I4Py-Set;k`21F)IuM|n=rhZU z)C-{_=+pnkcQd1zXBYEfgJ3#C%{Z(n8mFPqU55eP(s25*0Y<&7txl7;)C77e;+d4h zgp^usyY)%zKOlh~HcP@cdJ~g++UmTJm=u|mny3KgbEKgs0T$ia8)FmuCZyJiN$wk$ zbO&$C^JaJUwiXF}1}3B>#>dralH8~J9lS8lBi-2x;g^Y_ckm`MaCb9w1|y$Ki|dmZ ze+RE4J9PK2yF)IT?QyHbzKLn6wwJ=%kilv4v`t-f!HhEwLScF&j}q!aUy4>W6kf4Z zsY+i*87aBHtBu`Dz zu$kjv3${qbH(Y4g=n>AP!tlmeu~|-=uwZMVXv2kujUG9SAV|ZOr-}$l&0`v6mwdy8 zhK(LMj2J}2mZxVLwq`Dg4Hp_VdL&PS(6Hs{l7=nXE3x51!$yzfISv}OJXNt`vqwZ4 z*yzHFO+0cKr!Q#OLg|9t9wo8iLc>On97c(NhRqxym`B0xjF8xHp<$y(^3(ziTPR(y zyPOgmE;MZPNS-~QVGE@TIKWzB!-a;89?25{G;E=C!S3-(Y`D;{(IdH+--^w$bKb%? zue2d{Txi(nk=%u^VGE@Tc3-rl4Hp_VdgL&+(`(p5>4LqfLt?{)hK(M{P2?K3P`Y4` zQlo$i4I4d@+q^YwA$6gd(gj>-*yxemh^=7@sSDB4BH3}FVWUS5WBas*EtD=e>{1u# z!ir5ilAD?}Y@u|)VVAVgg^rDAGv-wqwotkN8)1woU1->ZW*HlSHEf}D!QoceaG_zN zM-HR3)r!rsQP->s4v*p+E;MZPNN%Lnu!YhEoK`A(iVF=JJ#rXZTs3T=biv`1@|_mFC|z(wN&7|@ z8a8?)_abW8Lh3>@X+s>i(6G@Xxk*sN7D^YKE~yK2VZ|mM$^Cd5wotm@RMJZq8a8_5 zF;*rtY@u|)>GK)#Mi&}3dgL?~oUPa_d+^M<;PlI=hAuR0^hjy{rqenOsnAy{rqeq@# zvk%Lb7ArPsdtFhw?Ij4Xk%nt?8L`bISWn${=>h4&N}G6uL}U)Bmd_7(0*uXcr zBf&bRmi-pyp1K{7glWIk*ssJ(B>28BLv0fkbVI|uVbS}vOrnG7RoPp+;SA?LZgiy zIgRCf4O=K(@Ob1X(1nJL9?5D>4O=L`fbE%*Z@AE~(IZ)NsbLGH3mz4}(S?Rh#Bat5 zt%fa>E_j-#F~x<3jUG9T6-y0UC|&S0k@I@G(6Ql>tlHDCh0+DDk`TJEViS*Kft-dd zlrDH35O~VJ(S?pp=mPf(K1=PZ*}i#|m!S&{8$FWcT2|UDg{&5AKFK#PE;MZP$ZZrT zY1l&Pf>%ihU1-?okt`q5u!YhEZxb0g(1nJL9?9Y!4O=K(@HUk`i!L;5^hlQ7XxKvO zf;UQPJzZ$n=#eap(XfTm1+SXd(}jkO9?7y54O=K(@J35tPZt_CdgM0hOf+nvbit?Q z3v^+{CLYNZW(`{?UBK5S4PBrM4I4d@>%CTNmXbKL^!j|#lGBBTjULI>R}EXJ`GQ|X zs&rw+CLYPPD-ByvU5HCc>z9(;FCisu2)b*&GvPIZ)k3|7Jg92KrNqCQI4~hqem#I* zph3(p(Hx29KE z;7IEQF`JfxsX#{(1}DVhlMAMf=n&Ie^hd}f@YvXAsXYq3s7GR-1dU}3WO@~Qrs{Mw zrUlha`mw1;mRs!|dClZ@H4T4IZGAO4H7!0lDJemGLjqE!0Zi}Ep4eoyfb}hwBAo!o z5|dJ~sMg2$@`WwTa%*~n1+KoOpy3ay*S(Uv<@G+yd}qRL2CMyF8uFlO-Zw6>j|scw z)`Z>yM?gq~Y6@s6Y6&o>Z(?e^8Nd0~jNc3g{vdi`DLM(@?`M3mH=$1geSHK&tN~2# z(4MG53XMxawOjr)H6e{w#`E5y0Q@cL3En~$Q0G-pH=2@=nr7ma<<|5D3mi6zaOwDi zI@VNhDLyS37G3nga%;kGfrI`arb84*vWZD*a$G+X{gzuZeoHflak`Q=3PII56|~3o zG+PWEVt$L>*l83vT3=);OE9h3rKY8zpuyY~E5Py^Yg4)LL3>M3y&l}xta;`;6Mi!o z!6)gkHr4{h#sa^iVNQjt1}?2=J;Gn1CHPChFWSqGgn5ngz;Q3}83%6TUg9&Vp>1B{WI_Cu z_>2G%_Y$A+b$Z+jZNXoO&-h9`?j=6sXib|}esIZaOyO`Z=`#+9#=QtZ@K@q9j-kW7 z?60x#MBk7$`ePi+g?mY#aSj*mC4I(X5bh;DZb^|-N|`kDlkP%6m zQCxt}Wg9?)uTt%#mPw_OIwVy_X^0d!DgOo*Dcw?-rR+*km69n1QOX_agvIOaQm*V$ zj_guy>{3qbQZDRL4(xK=?Q)#$a$HfiVBnMEW|!k+m*ZkL#=&NncF8X75I&!2{7%{# zyR<8IX-DkRZrG)rK+%BFUfKbC22kG1!IFAymwIfMdTW<@YL|LxmwITIdZ#|2>5_C~ zokHMssS%NSh?-vkS0B>DN6*E*Lq2y%y;Pr^Q=fHn%J(_d`xHLe-X-=#loz`08qm%`L}4xC?n$4QZs|fAUJ-n#Lg{PVPwnA?!B6cDij9hf=|?1o}pt ztxoHNv^Y$O;%uV#s&%WlZV7!-ZG!UzYdavVPht`Zz5*YUGqAQ!?v5(Oj;RT%0W~&C z!+b7b7tAGyB*1xOigL#K_30PUNK|>{4newg!&`~oi-%6!1&ELK<4#y0@yvrep%>!L zi@UtH0#mz`v`eoDPKFKK^`o+a3*y!Vj zQ3*Zb2J}gbY2L(U3^oD0vve&32_D> z1C8If6hPj))jiTwgwvz$v1CB^UUiSe6W#mNJrbXE?^pLoiO@ZmEQvzRhyVnr#Dbgv z1gOLshX4eKL?T200z^`!hJfUeDd~hmk?*lfN+Hq;B58$jQ4mQj+>L@rdZ7RcA_;~m zQV>ZooRNY^lHryVMA8g}kr0QZ8Kzr7B+YPI3Lb}x&2W|qB58)2DTt&Q zs-_^4W~iHjNSdK?3L387@mfB+c;O3LoOnTz<0FiSxs&6q4G zh@=_ehk{6&5tS*3L9=D1XLwZQO^nTqdEY#ho6-$O3=*WnH=L{bQ50n@5C9tiB3h|t zgHsZE6pz3YcX1SO%l{xPG)3-V6EKI};iE{2{<9@1m{S~XtHHb!Ntt1EP0^wTb5LYx zg`t`aK3j)TWN3w9!wCGh8HP%5KLxU87&ewfQ1q?AuvX7uH0#ydQABBld9agJhq>G| zzsctT4MM0k^^;#A37+h9IB4*WsXbhEmoKVjMiaJA4Si4 zJDS;BVJ~0s64LkNU>AXif%1Bu8dAW?+eGZz@=V}=`yOrD)~FQdij5LqTGKBtE=b5@wcN3%mK z%;~2Yv=!zOSx+m>>1TeyiM1ux53CyNa)5S}-LvBJ;LHmK^HCN;Z^!J0(<`zr)^=Vf zwfM$gMcsm$l)()F1 zb(lkBJgo1qyP0i*N>irK+72Iu)nyIsnD22p#Rh5XZ(ZW}0xQfZvfNe}%(E_QF1LrW zG+H~68MVUPB0Fh?c|6Q7z~gb6JzR#Mz08igurZtQ87_eF#V0b$R$7pJW;_Kt_FKP? z(v#NT`f(_{2BWRMINtrxXfwx@;QVD3pTo}d61md^%qkdHupmm%WMhS zF@NOobDN0saasI_b}T-{X{t>AyijwUX0&5^i4czIj2FAW^uD1Ti~n#u0kaWc3yc5I zj>TrkShLs+>#!`gKszS8SeIq7GS*a?tf3wA6LU#$t=%yJLUn5&ptPkajd_xc*E-xtHEY`_*|-=`DCokvN+r8w{xEQ zVGykJfhjz02aM?qTrI6cT50inIZq)PdVk@O8K1H4%XAfMz|0R~J(yO;EbqmdFq`85 z#$*yh&f-a|8`H|WhL77TtS2*jfHh^7E2OGxv;c_w`iqs_286+T?9YPv} z*=(OHh|a)=GPy#K$zefs20F-61so8t{ zR%}qU(t=_g)(jxBs!(1%3z$}H22N=WphK6j6z*5!^e+1Vz zKll4Szu1gz<%{2?>l-FG4lcWXH;eUresNl{86W+Y`vA=8Sl|49eJt@?Bw)1h^}|Q$ zJixS3&%@!jIDL!#*2Q9exM^JuFp0t}oBdXNFvHxp2xNWq90jrmqS{GohYsubFy+)> z^joGMSgm05X+Kz?={bJuXYr{Y31eLs{7`)jhU^+Xg2(6+RZ-S{*fGG?cA$jkR3U0C z#>8@f9uMI}4^h`-eTM@XBI`S7i9nxs({I^4zz6IJLGrr+>#$V;8=g1qOQcs7o=Wwo8w1e52FRAFlzmcz*LC& z1*kdm(|#8+I(pw+Jl}+sB0fegQ8j0!8Saay8zg9g`Q>P9%-2{Y5(_Lx6epcpP>} zRP34ihIY&*qAU>SeQWQ)CNO53P~WG=^7yS&kL8K?x=%(s<^uo|Tc)h^xxKuM#cmWYJ-K{mqV*O2z{RVsyP9 zFym}Kjj4-no8a8UR&oo?NVhXN#j#EL+yx$w^AGKG{YB=VkFNt0bWI1Tot~>gsR7Fa z1BRJ^&MU-vy4=I_FuB62hMrrpqn*Bf4w#+w14l-%I09>J%r+rf)9n!O!8qwOL#$Xo z{A@h{zlG7!e(Q{|>vL0-*J9C?wG;b(EaQtAj_w!mTd{55+77a&^Ay-vTmla0zR^zW zdAjc7x4NA~J8`hC_FlHejD$V{O1*FJ`#MjZ@bSEz*wk%(2NLtF9rBpEpK(&~qrVr4 z0p2$@Pl1hPb95T3h(JmN1C$mjRaWnluT&L%=p;&G`FMt@%uFpTHot_6lJ7|~27nhT*Wx>61 zT|hg1u7P$eX2pAv#M9rwV>q~4R(}8(Uc!D0r>DcPEXn%e_v^VT&?k=0w2qNSd<)46 z^NXS{D~yus?7ez{=*Gtru%b*AbJjpsw0?>g1gjnrD(_U zwt!)VuG8%FFk9kA4v*0Sana=p8CB*Rv1Z6*1MT!VBIa~%CNFNJme@NyK0Swrts4i`0Dp+Oaqr?U;Vx@GR!{ zvDBu|^YC6)e+3xVa~x;H#u8py&w-*SgRS|)q2QQmji+eG_~&u)+z6Eh=wpd>Nqvpk zjx|VT+dVkoUbkyVMY4Det9eXkP-V*emIol+mUs|i>NX4_$;TXvy{sLCgYgB-XEb|I z5u)=C#4wrkz!%L( zpXGcJy|A1wV0>=n!SWFsb3Y1hb^4Gx=~V&{vu1wVkz{3<#M5IdfpZ*t*ZCU>>WN2aMGc1IE@^ z0ORoxsxkTaBHhmV3zcE=f)4X`V#mH!_kC$Qtv#~zN z{D%)q{<^)w8lPUji!IcwwhS;a0x)VS*Q52Zn(aNk|M++FA3n9YfGLGdB?H%}941xUsnii`xNXYm0y(8Kl#Ky$_mxpq)>juL8#E4^WuGYLfvICxe)E z0WdaKBbc6h01R1koj&AbG(AE)mS-iHZl3{TwNZct>95PD=Yr4<3r&m`R!f48VX~&T za|e-0xGmNXDjZ?I#egsv%i-a@ERF@tqt9UprpJ?jA#uyz!E#1uhiVemj;(WIrp9Wb z0SlrZI3=I)3bk+S9VoVEyz;R1H@rg}DQlHAs5E~EX6Sl9kTBuzU~8^;2fVWWTbl55 zm|m}kq?tIi#!4UdYp^l*vh_y%784})4z_lOcF0PzcC0oT?cm^8JGPe_?btdKU?_mr ze~bJ*>jx&R>>Y3wtRFZWij4=4sWI6Xr{GxmhshOx2PP_vK4dZ(3@0u#7>md8Ubc4$ zupmAFK`?sFjR)Sk0`PyndYhair>gVg~bvSs@w0AsbQfQgfGtUN`TC4UEI z2aFa>A~YC6dFJDhwqSij*@M0wiiK^b9zWBzV?F-|7~6vn7#6)4Ef8J?^D+6uPI&%a zJKK+gN;+1n3z+z5lZAh%xYKhtXy?-NSAbzPMyC%kh#n)+REYHr%RQ`bh)dXS;knp5 zXmKa+y=f^pY7}2OG!9*gNls3)AzNm{M`m#(63*zg;rH?`%Jx$ICN6JeR5O2MlV(jK z?Vd=8MPxK>j%?zKh;C|c64}sp`zGRar4ETh6T~4DIGO?nwWg$rb15im;rA7P^2ugx Hql^DPmV%sj literal 0 HcmV?d00001