尝试Spring Data Jpa--告别CRUD
前言
说到我们的web开发架构分层中,持久层是相对底层也是相对稳定的一层,奠定好根基后,我们才能专注于业务逻辑和视图开发。而自从ORM思想蔓延开来后,全自动ORM的Hibernate和半自动ORM的MyBatis几乎垄断了持久层(当然还有很多公司或者大牛自己封装的框架,不过相对占小部分),是发展过程中比较主流的两款持久层框架。前段时间也关注了很多有关领域驱动设计的内容,感觉对前面的传统架构分层冲击较大,尤其是业务逻辑层、持久层、实体ORM那块,引入了许多新概练,一时间也遇到了很多困惑,网上搜索资料发现领域驱动其实由来已久,目前也应用很多,但是想要完全掌握,并不是一件容易事。当然本文跟领域驱动并无直接关联,现在的问题是在面试题“Hibernate和MyBatis的区别”背景下,我们在持久层还有第三种典型选择吗,其实是有的,那就是本文的主角,Spring Data Jpa。
介绍
说起Jpa,其实它并不是一个新概念,更不是说有了Spring Data Jpa才出现,它是Java Persistence API的简称,中文名Java持久层API,它是一种规范,例如Hibernate框架即实现了这种规范,Spring Data Jpa中便集成了Hibernate的模块。Spring Data,看名字很容易知道又是Spring系列的,除了Spring MVC在web层的成功,在持久层这块Spring也想拿下,大有想一统江湖的势头。另外去深入关注Spring Data内容,还会发现,不仅仅是RDBMS,还有Spring Data Redis、Spring Data Mongodb等等...本文内容主要是针对关系型数据库,本人在使用过程中,最看好的还是其在通用持久化方面的简易封装,基于层层的泛型继承,我们可以省略大量的简单增删改查方法的编码,另外提供的通过特定格式方法命名简化方法定义过程也很特别和好用。下面就基于Spring Data编写一个单独的简单持久层实例来展现其使用过程。
准备环境
Eclipse + MySql + Maven
基于传统几大框架的开发目前已经相对成熟很多了,但是就实际工作开发环境中,笔者最强烈的感受有一点,配置!配置文件实在太多了!特别是多工程组合集成的时候,漫天飞的XML和properties真是让人头大。所以建议现在学习过程中一定要尽量搞懂配置中每段配置语句的含义,哪个参数有什么作用,这样进入实际开发中才不会一时间无章可循。本文中配置尽量给出注释来阐述含义。
在eclipse新建一个普通maven项目,quickstart类型,项目结构大致如下
aaarticlea/png;base64,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" alt="" />
pom.xml依赖如下
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency> <!-- Spring 系列 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.9.1.RELEASE</version>
</dependency> <!-- Hibernate系列 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.11.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.11.Final</version>
</dependency> <!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
Spring Data Jpa 告别CRUD
第一步、配置文件(当然实际开发中,我们不会将配置这样集中在一个文件中,同时数据源配置等关键参数往往会通过properties文件去设置然后引入)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- Spring的bean扫描机制,会根据bean注解例如@Service等去实例化相应bean -->
<context:component-scan base-package="com.sdj"></context:component-scan> <!-- 这句代码是告诉jpa我们的持久层接口都在哪些包下面 -->
<jpa:repositories base-package="com.sdj.repository"/> <!-- 这里使用dbcp配置数据源,能实现连接池功能 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.0.100:3306/sdj"/>
<property name="username" value="root"/>
<property name="password" value="abc123"/>
</bean> <!-- 实体管理器工厂配置,关联数据源,指定实体类所在包等等 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.sdj.domain"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="MYSQL"/>
<property name="generateDdl" value="false"/>
<property name="showSql" value="true"/>
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">none</prop> <!-- 如果想要自动生成数据表,这里的配置是关键 -->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<!-- <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> -->
<prop key="hibernate.connection.charSet">UTF-8</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean> <!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean> <!--启用事务注解来管理事务-->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
上面Spring配置文件中,实体管理器工厂配置是比较复杂的部分,下面具体到参数逐个介绍
dataSource,指定数据源
packagesToScan,与前面的component-scan类似,这里也是一种扫描机制,不过前面是扫描bean,这里既然是实体管理器,不难理解是扫描实体类,即指定实体类所在的包,这里为com.sdj.domain
jpaVendorAdapter,这里对应Jpa持久化实现厂商Hibernate,同时指定其专用特性,包括如下
database,指定数据库,这里为MYSQL
generateDdl,是否自动生成DDL,这里为false
showSql,是否在控制台打印SQL语句,这点在调试时比较有用,能看到具体发送了哪些SQL
jpaProperties,jpa属性设置,有如下
hibernate.hbm2ddl.auto,根据需要可以设置为validate | update | create | create-drop,当然也可以设置为none,设置的时候要小心,使用不到会有丢失数据的危险,例如这里如果我们想要根据实体类自动生成数据表,可以设置为update,不用的话这里设置为none
hibernate.dialect,指定数据库方言,这里为MySql数据库类型的
hibernate.connection.charSet,指定链接字符编码,解决乱码问题
hibernate.format_sql,前面指定控制台会打印SQL,这里是指定将其格式化打印,更加清晰美观一点
第二步、实体类Person
package com.sdj.domain; import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table(name="TB_PERSON")
public class Person {
private Integer id; //主键
private String name; //姓名
private String gender; //性别
private String addr; //地址 @Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Integer getId() {
return id;
}
@Column(name="NAME")
public String getName() {
return name;
}
public String getGender() {
return gender;
}
public String getAddr() {
return addr;
}
public void setId(Integer id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setGender(String gender) {
this.gender = gender;
}
public void setAddr(String addr) {
this.addr = addr;
} }
如果仔细观察实体中系列注解,会发现其来源是hibernate-jpa,这也是前面提到的hibernate实现jpa规范内容。常用注解解释如下
@Entity,指定该类为一个数据库映射实体类、
@Table,指定与该实体类对应的数据表
@Id和@Column,都是为实体类属性关联数据表字段,区别是Id是对应主键字段,另外还可以指定其对应字段名(不指定默认与属性名一致)、长度等等...如果不加这两个注解也是会以属性名默认关联到数据库,如果不想关联可以加上下面的@Transient
@GeneratedValue,指定主键生成策略
@Transient,表名该属性并非数据库表的字段映射
@OneToMany、@ManyToOne、@ManyToMany等,均为关联映射注解系列,用于指定关联关系,一对多、多对一等等
另外,@Id、@Column、@Transient等注解往往是加在属性的get方法上。
第三步、持久层接口PersonRepository
package com.sdj.repository; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import com.sdj.domain.Person; public interface PersonRepository extends JpaRepository<Person, Integer> {
List<Person> findByName(String name);
}
我们发现这里持久层代码反而是最简洁的,我们的注意点如下:
1.在这个针对Person实体的dao接口中我们并未定义常规通用的那些增删改查等方法,只定义了一个特定的根据姓名查找人的方法,同时继承了一个JpaRepository接口。
2.不管继承接口也好,自定义方法也好,终究是接口,但是这里我们连实现类也没有。
暂时先不走到业务逻辑Service层,一二三步走完,我们这个持久层程序已经可以运行了,下面我们编写测试方法来看看。
package com.test; import java.util.List; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sdj.domain.Person;
import com.sdj.repository.PersonRepository; public class TestSDJ { @Test
public void testDB() {
@SuppressWarnings("resource")
ApplicationContext context = new ClassPathXmlApplicationContext("application-root.xml");
PersonRepository bean = (PersonRepository) context.getBean("personRepository");
List<Person> list = bean.findAll();
System.out.println(list);
}
}
运行测试类可以看到控制台输出如下结果
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABdkAAAD1CAIAAAAj5WsuAAAgAElEQVR4Ae3dP4hdR3/w8Xv96HmwIC/ENgqBgIuwK4wQeQt3V0UCSZGVGlXqgkhztwnsNqoiSLNV1OxiTLzbGBlijCpBrN0uTdDtUgSECu1WL/bj4CKPbELY53li7/ubmTNzZub8mXPuOff/9yK058+c+fOZc/fq/jQzZ/A2fP3www8//vjj999/f2Vf//TP//Li33/9r6//6z/+88r/Iwf/5u/+3qZyP8+vRoOrgfwZZ4fOD/Xu4Gp0qI6cjtXuqUtvNw5H6vjheXkac9XYXKaLMLmZq6MibJZSWFB0frzBlstTtcX9sY2SDEyF/YaYSpomqBJ06VmdS0t0Vi5/vVHMM6+AJBhdaSSdo21gkKBQyeCs5FBIUCzRtcI0Ks7B9pRUohzKSyDVzW6JimYWcxhX3CSlivlBAy7Xeg00Z01nFVvhGp5spruXokwcVLKZeT3rt2pum1R3p2+5+qIbnE3e9knJ0r4I3iapGybZzGQlS+sgPevuByNRbEvb7s7v7Yp70i/RFOeKKK2kgzI5m8T+hWbbZFuagzTT/fLMq2ffm9FbL5mgSGTeIK4VRjLPp8IhelsFfVF62/u/YXQZxZrkdSjNoVCT9O1v83GA6UtsiuQ9Wf4bxqtkOofkG8dWhp8IIIAAAggggAACSyDwzqDn19bgts5xdCvLeOveYKQ3b99UP56fDAbjwU52Mv9x74Hafn2eH/G3dh6pTE4OBhf+Ubu9tSdZlr12suMP7pWdrT0meV6dBinGp4Or4+BI152twUuJG9TmsnM8OD8MUhw+HWy5AzuDq/OM1xyLKrn3NDibXXcyGO66LLpunL9O5ZBqplCfegryfeeRvXlSWYfndXefnAzG98Pjg8Hey8GhuQv1GVGKVOMLivs7wSWH5/HtIb2S7M1iru2OpLq7XW4LSr33OC5YMI/93wizl2x4P8i7z78zg3o3q6T77Ve8J4PcynbSUGVXtTqWfOslEzQsrsYh3RfJt56uRF1n9fXG6fCBkobqXslm92S6JqRAAAEEEEAAAQQQmIfAUIbF+OUM9evy8vLGjRvm+Gdffv3hRx9fv/7uB++/56f85tvvvvr80y8+OfAPsr1MAheDO9uDyTgOIe0OBxIQk5CH//13mepNXRBAAAEEEEAAAQQQQAABBBBYY4Hex8WssdXKNe18MCnW+UwFYmS0zHbxFEcQQAABBBBAAAEEEEAAAQQQQGDmAsRiZk68uAK29QQlmZE09P7cVfUZP/YmOi2ugpSMAAIIIIAAAggggAACCCCAwOYJEItZ4z4vXT5gNDi/CpfnWGMBmoYAAggggAACCCCAAAIIIIDA0glcW7oaUaF+BY4l8tJvjuSGAAIIIIAAAggggAACCCCAAALTCzAuZno7rkQAAQQQQAABBBBAAAEEEEAAAQTaChCLaStGegQQQAABBBBAAAEEEEAAAQQQQGB6AWIx09txJQIIIIAAAggggAACCCCAAAIIINBWYJGxmIujO0N57Z61rTTpEUAAAQQQQAABBBBAAAEEEEAAgRUVWGAs5uLFs4lSO3keBWNMjIYQzYreUlQbAQQQQAABBBBAAAEEEEAAAQRqBHqPxZztylCXO0cXQZml0ZWtew9GKtX4/k6QeJV2dGuJGq1Sl1FXBBBAAAEEEEAAAQQQQAABBBYrsMhnWm/tvbzaW2zzKR0BBBBAAAEEEEAAAQQQQAABBBCYq0Dv42LmWnsKQwABBBBAAAEEEEAAAQQQQAABBFZLYCGxGD2zRy3bq1/lU3xGt7YH2eK+KlU860mUvbPFBYBVEfoaL5WXhz6q9stPZ33onVR18CpqW3D3RJKe3FVns5dXiMolyMLLICtB/zCZVZz0E7KNAAIIIIAAAggggAACCCCAAAIrL7CQWEwjtWcPh9v7enFflXyyvx1EOSR+4Z3V8ZDgvCniRZBK8ggCHrLvZxKdlihKUIIuI7g+2YxmlTx7rgI6g5ODaJGdZPYkQAABBBBAAAEEEEAAAQQQQACB1ROYTSxGRTn8VxTU2Dm+Mq/TcaXYZCJxmPGpSXd+KKv8Tp69sCsCn+2qASn2rKRRGU32n4QPZJrs758MRofnXlmFZza5THRVotPuWpVDkMC2QB/06nF19XJvK2tTs0oOBjv3tcLowT17ZSUKJxBAAAEEEEAAAQQQQAABBBBAYNUFZhOL6UNFBUKOsycsbe09VsEWG4zRI0nGp/aslLZzrKIiUShFR2tcbCQLeQRVkyiKzcScfvXGhnsGsrKwu1ZdVHZ9kFm007iSUnkV6wkKi/JiFwEEEEAAAQQQQAABBBBAAAEE1kVgNrGYYECJxBn0uJaWZLdv+sNEtm/JyJjsdfHmlWwFq7QMh3rlFi+UotKGT8vWIQ8betFZhef1oeAvuyqMGeKjSwjO1+00rmRdJpxDAAEEEEAAAQQQQAABBBBAAIF1E5hNLGYNlNSiu+2iL2vQaJqAAAIIIIAAAggggAACCCCAAAKzFliRWMzFi2eTwSAbKrN18/YgXwdGze+xr/7m+Zw9UesGB+N79NowZf0RjcYxSeZRybLKcAwBBBBAAAEEEEAAAQQQQAABBJZaYCViMRdHD1VkxE0pUhOWoqcezQY5nyclw2TKRsnoqVOFRYN1ZZpXkmdaz6b3yBUBBBBAAAEEEEAAAQQQQACBZRRYRCwmX4ZFhzfswi/RM6ntYVmsRT+GyVurd2vvqXqwkpfCrOjS7onTtd1h1qfJS4ieBGWv1aNfgpq4VjSuJM+0tpr8RAABBBBAAAEEEEAAAQQQQGADBBYRi0mxmqcm+an8Zyrp4/KQI/OQaT9Vn9tSQLDgsDxxKdi3ZcmCwJVzlxpWkmdaW0x+IoAAAggggAACCCCAAAIIILABAsO3b9/6zTQDTC4vL2/cuGGOf/bl1x9+9PH16+9+8P57fspvvv3uq88//eKTA/8g2wgggAACCCCAAAIIIIAAAggggAACNQLLOC6mprqcQgABBBBAAAEEEEAAAQQQQAABBFZagFjMSncflUcAAQQQQAABBBBAAAEEEEAAgRUTIBazYh1GdRFAAAEEEEAAAQQQQAABBBBAYKUFiMWsdPdReQQQQAABBBBAAAEEEEAAAQQQWDEBYjEr1mFUFwEEEEAAAQQQQAABBBBAAAEEVlqAWMxKdx+VRwABBBBAAAEEEEAAAQQQQACBFRMgFrNiHUZ1EUAAAQQQQAABBBBAAAEEEEBgpQWIxax091F5BBBAAAEEEEAAAQQQQAABBBBYMQFiMVUddrY79F67Z1XpOI4AAggggAACCCCAAAIIIIAAAgg0FyAW09xqJil1yIdIz0xsyRQBBBBAAAEEEEAAAQQQQACBJRQgFlPVKTvHV+Z1Oq5KwnEEEEAAAQQQQAABBBBAAAEEEECgpQCxmJZgJEcAAQQQQAABBBBAAAEEEEAAAQQ6CKxzLObi6E6+4sudo4sCU5BgqnlCDXIIkuS1sMvR3D2Rap3czSs6zNMUKswBBBBAAAEEEEAAAQQQQAABBBBYdYG1jcVIrGN7f5J3z2R/O4y2xAkkHtIyCpLOQcVholo8LIkJ5bVkCwEEEEAAAQQQQAABBBBAAAEE1lxgXWMxZ89lvMn4NFvyRX6cH478rjzbVQNSvARqVZjJ/pPmj0tK53Bx9FBHg7xSzg9vZ7Wwy9Ho1Wi8FFdXL/e2/JqyjQACCCCAAAIIIIAAAggggAAC6ySwrrEY3UcnB/kglK29l8c7rueyUI13ZOdYRUVOnjcNxqRzuHjxTMblSJjFK2Vr75hIi+sFNhBAAAEEEEAAAQQQQAABBBDYQIF1jcWY0IpMTNILsYSzkwaDizevpK+DVVqGQ71yy6s3xWVlym6LBjmcv1ahmPt5AKgsH44hgAACCCCAAAIIIIAAAggggMBmCaxrLGYwMJOAzAOpTdQljsjMtqdNtGa2ZZA7AggggAACCCCAAAIIIIAAAgismsD6xmJMT2TLsujVYvIpS1s3ZdmW0eF5vpyM3Wq6WEs6B51i0GycTbNUq3ZvUV8EEEAAAQQQQAABBBBAAAEEECgKrGksRh5gFDwUaeveA1m6d/L6PBPYvjWSlXqjJysVdWqOpHPYua+XA972K3JxtJsvYaNzV/m0WzS4plKcQgABBBBAAAEEEEAAAQQQQACBZRdY01iMsNu1YvSCMebJ0vniLVt7T9VzlaIVY4bDfBqTPLA6e+l1ZGxKF1hJ5yCzpPQMKb8i2/tqoRr/ZYbP+DVxRfjJ2EYAAQQQQAABBBBAAAEEEEAAgfUQWNNYjDw1yawU43pJPTbae6DRQFJcRUlc2mYbDXKQGVLhs7RHh0/j5yhJmm71aFZbUiGAAAIIIIAAAggggAACCCCAwFIIDN++fetXxIwFuby8vHHjhjn+2Zdff/jRx9evv/vB++/5Kb/59ruvPv/0i08O/INsI4AAAggggAACCCCAAAIIIIAAAgjUCKzpuJiaFnMKAQQQQAABBBBAAAEEEEAAAQQQWJwAsZjF2VMyAggggAACCCCAAAIIIIAAAghsngCxmM3rc1qMAAIIIIAAAggggAACCCCAAAKLEyAWszh7SkYAAQQQQAABBBBAAAEEEEAAgc0TIBazeX1OixFAAAEEEEAAAQQQQAABBBBAYHECxGIWZ0/JCCCAAAIIIIAAAggggAACCCCweQLEYjavz2kxAggggAACCCCAAAIIIIAAAggsToBYzOLsKTkUuDi6M5TX7ll4eMX21qMVK4ZOdRFAAAEEEEAAAQQQQACBlRIgFrNS3bXOlb148Wyi2nfyPB2MOdtd1qDNerRine8z2oYAAggggAACCCCAAAIILFyAWMzCu2AFKpCN9VCjVmY3bmXr3oORshjf31kBkqoq9tAKHWgaDu8cXVQVUnt8Lp1VWwNOIoAAAggggAACCCCAAAII1AoQi6nl4eRgIKGB7X09YsVonNydOkxQz7m19/JKXserHIoZDLq0wkRh7p7UO9WdnVtn1VWCcwgggAACCCCAAAIIIIAAArUCxGJqeTh5tqtDA+NTFSaR1+lYTCb7D6cctAFopYCEUTT16PBcI1cmrD5BZ1XbcAYBBBBAAAEEEEAAAQQQWB4BYjGz6gs9VUTNM/HmjJRMO/HOFqf/qHES+hovVSEP71z5xBYz2sJMMIrK0NfWVfLsuQzSkOiAG6yyc3x+KFOJJs9eTDeDpoy7poJ58qCZ0wwdCTKIHEwxQYqCc16V8q2urdi5Px6okNfLva3yApJH59JZyVqQAAEEEEAAAQQQQAABBBBAICFALCYB1PH0s4f+BJ/J/nbwFV++vjeY/vMiSCV5eE8ainMIzw50ICgMXBSnGMk1fjX8LMy3+wf38ujAxdFDPWFp8vq8I02Ly1WQJIBqca1JKjlEGYiD51iciuUztC6u9IJUK3aOu83PWpLOKm07BxFAAAEEEEAAAQQQQAABBHIBYjG5xQy2JhNZaMXO74kHlJgZJfZsNv9nsv8kfIzQZH//RI1M0TOEzBSh/ElD+uu3l8OVLsM1JAucuKvdFKOoDLnAZqKnx9gCLt68klO3b5pQjB744SIar970NjBGghBe61zt3cbZExX+8VphGNz5Zhv+9bGjhGLUACCLoGoTSjYoYj6tqK7InDqrugKcQQABBBBAAAEEEEAAAQQQaCZALKaZ07SpVADAzu/Z2nssi6242T3Zt397VkrYOVaREBsIcUVKhMDNW1ETWeLXyUG+eIusHJtnaJ6vPD51V6sidIwhKkNKsFeZAvxAy+jWtpm8Y8bXSItahyniGrfavzg60GESrxWtrteJxSW4vsxR6Ksk2xcYX9FLK+JMi/uL7qxijTiCAAIIIIAAAggggAACCCAQCxCLiUX63bdjSkyu27dkqZXsZYYxyEwZ/6XDHX4gRBKHz3jWoy9s4CSL3qhJRuoVzLmRK89fy3CS8HJ5zs/N23IqKCNOktUw+yG5Z4Nh9LARCWnofMNEs96TGEPXIsL1XMKJWzYOViXZtezs+h5akajJUnRWoo6cRgABBBBAAAEEEEAAAQQ2XYBYzIrfAWZmjHnwjgnsxBGZDg00cRvJwMzvyUJA4WSYDtk3u7SPyI8a2BNHX+LSZypp4mJxkb3uL0Vn9doiMkMAAQQQQAABBBBAAAEE1lSAWMwcO9bMGcqGyuivzsEaJtmiKfmEpOZVy9YqMfOPvIk2kkM0HWnQKpJiBvKMDp96z/YxrZj9EA/bel2HcKlgPb3Lnm/ws7jgTOWKMzWSDQqqTtJDK6ozN2eWobNSdeQ8AggggAACCCCAAAIIIIDAYEAsZm53wdmunurjJgSpr84ypaTLMBYZ7hE8l2nr3gP1vGn7iCOzKMrJXa+IuBKJ1mcZerW0GTz2ojOJTMxps+ZMcSJV8mIz3sMt5dJkiEt5nvl8MckjGiWTkCzPsM3R3lpRXWiPnTXIJnR5d051uZxBAAEEEEAAAQQQQAABBBBoJ0Aspp1X29TeejD62//41K31srX39FAiJ14Ks3JMu++/doUTc20Y7cmWk/GLiCuRak9WyTyLthnYAsxoGtmLx+nop0mb2ptpRBbERZl2Hikn21DVxNF4nC+8Y0uo+WlGjNiMh+XPx7YFlErWZJ6dypej0US2sBatiHJw9XFZpCrRW2eZp0pJcS4Cliqa8wgggAACCCCAAAIIIIAAAs0FiMU0t+qa0n+mks5LHu5TOVemUWGSgVkpxqVWy+u6aI8clSk34VOP4gTuyqqNuJKFVlRdGB43gzbkmBsXFJ6v2wubKS14+ehWXfrCOckgUJAsgn1Z0TgpWci07YGwiCla0aBAKSO4o6bsLBvEa1AiSRBAAAEEEEAAAQQQQAABBFoLDN++fetfZAYFXF5e3rhxwxz/7MuvP/zo4+vX3/3g/ff8lN98+91Xn3/6xScH/kG2nYDMepEhHPKV2w+NuLNsILDUAub2HXD/LnUvUTkEEEAAAQQQQAABBBBYUYFrK1pvqo0AArMQkJlSepKVytubUTeLosgTAQQQQAABBBBAAAEEENhQAeYobWjH99HsfIGTbL2X+Ee7pW/6qNK65tGdum0OMiKGIV3rejvRLgQQQAABBBBAAAEEEFiwAONiFtwBFI/AUgmoh3ofL1WNqAwCCCCAAAIIIIAAAgggsG4CxGJm1aNqGdW9WWW+HPnytX1u/dCdunsOc2ssBSGAAAIIIIAAAggggAACay7AHKU172CahwACCCCAAAIIIIAAAggggAACSyVALGapuoPKIIAAAggggAACCCCAAAIIIIDAmgsQi1nzDqZ5CCCAAAIIIIAAAggggAACCCCwVALEYpaqO6gMAggggAACCCCAAAIIIIAAAgisuQCxmDXv4PVsnn5Ac90Ts5MJ1sMl2cxkgvVwoBUIIIAAAggggAACCCCAwEoJEItZqe5aUGUvju4M3asuBLKg+lFsnwJBb985upgi7yALbpgpBLkEAQQQQAABBBBAAAEE1lqAWMxad28fjZOhFdv7kzynk7vD6b6g51mwtawCahxN0NuT/e1hy2AKN8yy9i71QgABBBBAAAEEEEAAgWURIBazLD2xpPU42717IlUbn16Z1+lY9ib7D6caLrGkbaRaTmDn/ngwOjzPOvtK9/bg5PmZS5Dc4IZJEpEAAQQQQAABBBBAAAEENl6AWMysbgE9TUMNIPHma5SMJ/HODgsDENQoBX2Nl6qQh3cuSx01SeWSv4JBDvraukqePZdIjHw5P97JMt05Pj8cSTTm2Ytp5q5ENct3g0YUISRhkELHh/Kr9VZtgkaSUYaF3aCEdCULPVXIsHigZRH9O+wcX73c27IV2znW0ZhXbxp39rxuGFtDfiKAAAIIIIAAAggggAACKyhALGa2nfbsoT/lQyZ8BF/Qm83meBFMEpI8vHBKnEN41kQwwi/sxSlGahqKNy/Fz8J8s35wz305l5DIQz1hafL6vDc5CUB45atspZJeI3UcJkoRFq5CGLUJTPI6yTDD4l6ykoNUXxTzjI4ki0g2M5nAlNjFIapztDufGyYqlF0EEEAAAQQQQAABBBBAYMUEiMXMtMMmE1loxc7viQeUmNkc9qxMC1FjECb7T8IJIZP9/ZN82ogeppDPGdFffb0crnQZrklZ4CSedFIoQy6wmQQFXLx5Jadu3zShGDW2JI94tBgr4epTveFV0Tj4E2POnqjwj59E1zLPLZlAJ62VzDOr3vJrYKbv5D0xGCT6ojpb/0xtEclmJhPooto4FGMrfm0L2/O7YQpFcwABBBBAAAEEEEAAAQQQWB0BYjGz7Sv13drO79nae6yCLXZ2T/bd3Z6VepgZIf73e105CZO4aSNqPY/4dXKQL96ytfcyz/DixTOJYYxP3dWqCB2ticqQEuxVpgA/0DK6ta2GWwyHZnyNtCgM+MTVab8vlfaqKJUMGnlxdCDzpIJWhEUkE7jkKUmXsGSjvpL2gsq+sAnqftYXkWxmMoEru6mDjhaODp/mk5ZcFjUbs79hagrnFAIIIIAAAggggAACCCCwAgLEYmbbSXZMiSll+5YstZK9zBACmYzjv3S4ww+ESOLxfbtWi7pS1vO4coGTLHqjJhmplz+tR6U9f61CMcHlg8HWzdtyKigjTqKuzV+Sezb9R77CX6mwkM43T9DHlh5z4yTCWVUqf/l+X19MMoFcHrYzlKzP3Zytr6SJpFX1RZP8JU19EXN1kKpIP9TEwKqaNJcbpqpwjiOAAAIIIIAAAggggAACKyBALGYFOqmuijqiYJ93owM7cUSm7urEORO3kURm6kw2diaciJLIosFpNeqmGH1xFyYjP8kELqsOG4lK6pw79kWiiGQzkwlaNN8GYvKwX6OL53PDNKoKiRBAAAEEEEAAAQQQQACB5RUgFjPHvjFzhrKhMvpra7A8iH2QcDBfp1n1TBTArBbjT5ORq6PpSINWkRQzkCecpWJa0WQcSrO6Fxc5yUJL2eW6DuFSwXp6l8s9mcClnH4jVUkv55q+8FIVN1NFJJuZTFAss/RIFhPyJq6VJis9qOsgoTt/WlPfN0xpwRxEAAEEEEAAAQQQQAABBFZIgFjM3DrrbFdP9XETZdTXVpnO0WUYi3xrDp7LtHXvgXretH3EkVl35eSuV0RciUTrswy9WtoMHrdbQyR/JrVXGb/wfDKXNCoYJWPGWrgIU3H0SDKBX06n7epK6vbV9UXTcquLSDYzmaBJHYRX3aZTBWIk/x5vGDtfq+KGadIY0iCAAAIIIIAAAggggAACyylALGa2/eKtB6MDDONTu0juYGvv6aFETrwUZr2Udt897fok5tow2pMtJ+MXEVci1fqsknkWbTOwBZjBEbIXj9MZmKEUOUO2OI29UJbIeaScbEPV6dF4nC+80yBBnte0W8lKqoxtFUv7Illysog5ONgnluf9na3hE4SZ6prS2w1jnkslRbkoXF2xnEMAAQQQQAABBBBAAAEEVkmAWMz8est/ppIuVZ6bE07HaVsXySB6urNaXtdFeyQ7mTATPvUoTpAsMq5koRXJHHQCM2BCNt24IHudFBBUUWoY7Mtgi6CZcv7lo1v2apN5KkGQepqdtpVUZbSkblvEQhwa2Ek7grt6yhvGBhIblEgSBBBAAAEEEEAAAQQQQGDFBIZv3771q2z+G/zy8vLGjRvm+Gdffv3hRx9fv/7uB++/56f85tvvvvr80y8+OfAPsu0EzGQP+cLsh0bcWTYQQCAh0HG+VCJ3TiOAAAIIIIAAAggggAACCxO4trCSKRgBBBAoEzBPcTJnvFl9ZUk5hgACCCCAAAIIIIAAAgisoABzlFaw05alyvKVuf7VbumbZWkW9SgX6N7dbXNoOcurvNocRQABBBBAAAEEEEAAAQSWToBxMUvXJVQIgQ0XUI8FP95wA5qPAAIIIIAAAggggAAC6yxALGZWvauWMN2bVebLkS9fmZejH+ZUi+7d3T2HOTWVYhBAAAEEEEAAAQQQQACBmQowR2mmvGSOAAIIIIAAAggggAACCCCAAAIIBALEYgIOdhBAAAEEEEAAAQQQQAABBBBAAIGZChCLmSkvmSOAAAIIIIAAAggggAACCCCAAAKBALGYgIMdBBBAAAEEEEAAAQQQQAABBBBAYKYCxGJmykvmyyqgH6/MM7d76B4ke0AkCwQQQAABBBBAAAEEENgsAWIxm9Xf07X24ujO0L0IYEyHyFXNBYIbbnjn6KL5pS5lkAc3rXNhAwEEEEAAAQQQQAABBJZAgFjMEnTCcldBxj1s70/yOp7cnfLLcZ4FWwjUCJztBjfcYLK/PWwZTOGmrfHlFAIIIIAAAggggAACCCxcgFjMwrtguStwtnv3RGo4Pr0yr9Ox7E32H041VGG5m0rtlkZgdHie3W9XV+eHI6nXyfOz5rXjpm1uRUoEEEAAAQQQQAABBBBYhACxmFmp6ykSanaFN1eiZLKFd3ZY+M9/tRSHvsZLVcjDO5eljpqkF/Qon2Kkr62r5NlzicTIN+PjnSzTnWP93Xjy7MU080aimnm7YSVNbYOmBs0MR0kkW2HKCXLQESavfLUZJAiLGAwa9UWUYWE3KKHY33EdAoBCZhUHVl9y5/jl3pZr3dbeYxX/a/Ga203bok4kRQABBBBAAAEEEEAAAQR8gbfh64cffvjxxx+///5799/S//TP//Li33/9r6//6z/+88r/Iwf/5u/+3iVjIxLQIYvRSP2fvv/y/8f/Sg8y8c/quEeekTo/OjyMv4q6QSpXZTl4Z+2ggrAIFVvJyjBjDqLT8SiYPLlc5a4IismrPM2WyzOqSF5wPVTF9X4Ny5P4KeqLMNL1fZFqemkd/CokezNVQt47aySpOya/FZIGRjG4wMkH2umcSIEAAggggAACCCCAAAIIzEaAcTHRt9Z+dyeTSR7Z0N8IvQElZiaF9/VQfeuc7D8JJ2NM9vdP8uiJ/mKaz9fQIwC8HOa2PlgAACAASURBVKIv4xdHD9VKL973Un19oQxptM0kKODizSs5dfumGaSgB1y4lTxevelrYMzZk7CSugqqQnZ0RDMo1XOlrZDjcRGFIFazImr7QpWfenk9kVUh70uppRqEZJug3u8uhpDKNzsfN3N1Jb0BRHdPvFuhAcR8btoGFSEJAggggAACCCCAAAIIIFAlQCymSqaf4+rLt53fYyZbuGBM9s3bnpXydo7Vl2f/27muhP9VdOe+pIheJwf54i1bey/zDC9ePJNIzPjUxjTkumyKUVSGlGCvMgX4gZbRrW3zzdhM65EWtQ0RRPWNds135/FjNy1l55FaISSvQlOoylZcHB3oIIfnENWhaRF+hGhQ1hdRvsGu9E1Qg/LrK3szyKt0Z10lp1gtetY3bak/BxFAAAEEEEAAAQQQQACBhgLEYhpCTZnMjikxl2/fyqcsmS/O8jXTf+lwRx6F0FeN79u1WtTuzrGMl7CBkyx6o54zo17xEifnr1UoJrh8MNi6eVuyCcqIk+hi3V+SezYYRoIdV2qwis7Xne+6YSrkhSDM6A4n1xSqvhUD+XZeWdOmRUSYYV9U5u6dCNdyidesMbG4qt70sqnYXCNJiVupgUH6pQKUghLf3RUI5vCsb9rawjmJAAIIIIAAAggggAACCCQEiMUkgJb9tI4HZAuNmMBOq++s9c0zX+4ljZlbk4WATOTCxUrqs2hw1oyDsSGI4VCHKBKRlQbZ5kn6jR3l+bbbUoOL4uhLnEPH3lxPyWwsVxA+jOG8/fnctF6BbCKAAAIIIIAAAggggAACbQWIxbQV65DezBnKghj6K2OwfogdBxBMZGlWnPkOb9YX8UaYqIuj6UiDVpEUM5BndPjUTSCSpw3pmU91w0ya1dmlMuNg3K6J/LihP2YgTyco3YrJ63OvCD0pye332hcu13AjXstFetss5xImU3s1vVlM7B/ZDEm/xWXbc7lpywrmGAIIIIAAAggggAACCCDQUIBYTEOo7snOdvVUHzfgQ31lbDv1IqqFDLUIHnu8de+BTIJyUQezIMnJXW+kTFyJKMN4N8vQmyBiM8iXd4mvqdi3q7F6lTEps7VabCRKfkbBqM5QZqSEi1GVDFDpXERFowuH89FEUotolEyiNwt5FQ6sqaS55UYP7uXPuS403T/Q402rn2ReMvvPL45tBBBAAAEEEEAAAQQQQKC1ALGY1mStLvDWgzFTb07dgI+tvadqjVovhV70pbDqS315+dQedXUY7cmWk/GLiCtRn7msLmMqmWfRNgNbgBlNI3vxOJ2BHsZQUPAYukOFc3cU0mg8zpfucc0s1KIQOLLNaf9TNzN3NF0VZ1Pbm3Hiwv6aSIaL6pg5a+HQrELLwwO93bTmyVaSuYvjhQWxhwACCCCAAAIIIIAAAghMJ0AsZjq3aa5S82xcJEZloBYorZqn0qgAySC6Xi2v65ch013Cpx7FCZLlxJUstCKZg05gBivIphsXZK+z35ztfvZT4iIuEhLXIUqa3g2hxODlo1vhVZ2LCLMr7kkBQU9IJYJ9fTskerOYa3BkTSXVLRsNlQqaXbIT9+aUN60NZpaUwCEEEEAAAQQQQAABBBBAoIPA8O3bt/7lZmjG5eXljRs3zPHPvvz6w48+vn793Q/ef89P+c233331+adffHLgH2TbCciMExmAId8j/dCIO8uGFSh3krERMgIHPavU5CeSTZRapjGo3Ikt2UiOAAIIIIAAAggggAAC9QLX6k9zFoEZC5Q+5Mgsrdvj+sAzbsRSZI9kn91gooEmx3E+s7DPIsgLAQQQQAABBBBAAAEENlaAOUob2/XdGx4v7GEGVXl/u0lGNWXF66joy82qNK3XB64pZgNObYJk91uubQ5qhhRD2zbg7UMTEUAAAQQQQAABBBCYqwCxmLlyU1hBIF7aQyfQj7DmG3ABq/YAkrU8LU9mDxYnDtPSjeQIIIAAAggggAACCCDQRID1YpookQYBBBBAAAEEEEAAAQQQQAABBBDoR4BxMf04kgsCCCCAAAIIIIAAAggggAACCCDQRIBYTBMl0iCAAAIIIIAAAggggAACCCCAAAL9CBCL6ceRXBBAAAEEEEAAAQQQQAABBBBAAIEmAsRimiiRBgEEEEAAAQQQQAABBBBAAAEEEOhHgFhMP47kggACCCCAAAIIIIAAAggggAACCDQRIBbTRGnT01wc3Rm61+5Zrxw27yBbffDO0UVQkk1ZcTzI4GxX19cdy/ZdI8yGOx2Us5gd27qgTot0sBUaBjVqhuOuVc5TXN+sFFIhgAACCCCAAAIIIIAAAisqQCxmRTtuftWWMMb2/iQv7+TuMI6G5Cen3zo5iEIvcVYXL55NBuPxeDB59iII0py/1rU7eZ4Hic6en8SXr8r+kjhcHD30O72N3pxumDZVIi0CCCCAAAIIIIAAAgggsFQCxGKWqjuWrzJnu3dVWGN8emVep2PZm+w/TAROWjZkNB6P4hBLlIUJxdw/vl8Mxqj6SYwmD8ZIKEblGOWQNyJry9XxTpxkwfvL4mAiMePDw4JhEmg+N0yyGiRAAAEEEEAAAQQQQAABBJZYgFjMrDrHTS/x5muUjCfxzhZnc6iZNfoaL1UhD+9cljpqUjg/J5gxoq9VOXqZBAXoASajw3MXtdg5Pldf0BOBk6gG6d1b9x+MJvtP8pEt8SVZKGZnsH1rVFb6fYnR2GCMCsU8uH8rzqLzvodUMfcmSBFANix8KRyySMzp8b2GtfaSzeuG8YpkEwEEEEAAAQQQQAABBBBYNQFiMbPtsWcP/Qk+k/3t4At6s9kcL4JJQpKHF06JcwjPDnSMRQ9scc0sTjGSa6JKugLMN+sH97bc5XbuyuT1uTvWx8b2vQejQfX8HB2KGd3aHgy2VEI/FHTx5pWqwI4LxuhQzL2dm7cHg1dvgtlMXSoqYZZgqtZgIJIOSuWc6otGpS/eQfewH35rVO8s0fxumDa1Ii0CCCCAAAIIIIAAAgggsFwCxGJm2h+TiSxlYuf3xANKzGwOe1bmzaj5P4XBIZP9/ZOBfDX2pgjZ8R/y9V+ti+LlcKXLcE3KAifualNEsQy5wGai5yDZAkyY4/ZNE4rR42tcPKLHMIeu79be49LZR/qkCcWYmFAhGJM1VwVjVKVMKCaPHmWn5YcET4JXEEnJk1VueY6ZpIVSlyT6ojLX6MSCHbJIzNO9MsCoqsXded4wxdI5ggACCCCAAAIIIIAAAgisiACxmNl2lPr6buf36G/Z+ZCO7Lu7PSv12DlWkRD/+72unIRJXtqvxirgEL/80SRbey/zDHUEQ6Is7mpVhI7WRGVICfYqU4AfaJHRKGbqjRlfIy0KAz5xdabeV0UXQlE6Nz8UUzIyJitRrpfxMkdqgpI3kGfq6kQXiqznaMbhRElkt7IvikkrjyzQoVskJmvR3G6YSkFOIIAAAggggAACCCCAAALLLUAsZrb9Y8eUmFLUWif2ZYYQREM1dLjDD4RI6vF9f4XZnWMZIGMDJ1n0Rk0yKlvARD9gKLxcIhlq7k44eSdOYqtofkru2WAYPXZGAhLZg4vCZD3s7TySpWiiMJHKNgzFZE3wpyllZatgjIwi8kIx4UwqO/Zn2qV79cAgN7ImnPplI2lVfdGGZ1EOvURi1NCued0wbVBJiwACCCCAAAIIIIAAAggsjwCxmOXpi6lqomMzenaTnYPTduZNTbEmbiMJzOycLAQUTkSpubz1KT1yyB9aonMww3tskEPFQnQYxAZjVGRIrySTjVXxQjGtK1B9gRoaFEdf4tS99cViHIrOJgZn4oXBQkdxy+3+vG8YWy4/EUAAAQQQQAABBBBAAIGVEiAWM8fuMl92s6Ey+mtrsAKJHa4RTIVpVj0TBTCrxUSxjHicSatIihnIMzr0lw8xrciiH82q1zyVnp/z7IW/LrApryQLG4zxTimHKfi8HCo2z57sy8o/QXfplXVKktf0RUnqikPL6lBRXXd47jeMK5kNBBBAAAEEEEAAAQQQQGB1BIjFzK2vznb1MAM3IUg/nDl4KFLrqshgjWC4gl7WduAm5qgv9Gq0jDdSJq5EosgsQ6+WNoPHdgWbRA7utFlzpvjcbpfAbKj5OZP9g2fusAnFxNOLzDrHz1709pgkV17dRj7jTFoTjZJJ9EVdtmXnFuAgK+LYcGD20ywMZOybhbh6vGHKVDiGAAIIIIAAAggggAACCKyFALGY2Xajtx6M/u4+PnVrvWztPZXlUQoP9wmfk5ysnT91Z2geTe2iPdlyMn4RcSVS+WeVzLNom4EtwI1uicfp2AT2p3lMknr+lHmVLnozGOgBGGpkjBnnY1N7P3WKYO0drzPMqi9ekMq7sGzTjPfIM3CPk/IT1/aFn7DJ9nI6JGve2w2TLIkECCCAAAIIIIAAAggggMDKChCLmV/XqRkuLhKjilUDEapmujSqlmQQXa/GMPhlyISZ8KlHcYJkOXElC61I5qATmAETsplHiiouNI+bsifN06aC5Yu9/NwQIJt8Vj9FIXAUxmBfd2aiL1rWbSkdGrShpxumQUkkQQABBBBAAAEEEEAAAQRWVGD49u1bv+pmvMDl5eWNGzfM8c++/PrDjz6+fv3dD95/z0/5zbffffX5p198cuAfZNsJyJwVGTwh39n90Ig7ywYCCCCAAAIIIIAAAggggAACCGymAONiNrPfaTUCCCCAAAIIIIAAAggggAACCCxGgFjMYtzXotSzXTOMqvLv5uuxrIXHmjeie3d3z2HNiWkeAggggAACCCCAAAIIbIgAsZgN6WiaiQACCCCAAAIIIIAAAggggAACSyFwbSlqsY6VUEuY7q1jw/I2ycLAV8f5LlvrLdC9u7vnsN7CtA4BBBBAAAEEEEAAAQQ2RYBxMZvS07QTAQQQQAABBBBAAAEEEEAAAQSWQYBYzDL0AnVAAAEEEEAAAQQQQAABBBBAAIFNESAWsyk9TTsRQAABBBBAAAEEEEAAAQQQQGAZBIjFLEMvUAcEEEAAAQQQQAABBBBAAAEEENgUgQ2IxYQP0uUxy5tya9NOBBBAAAEEEEAAAQQQQAABBJZSYM1jMRdHd4Z3T5ZSnkohgAACCCCAAAIIIIAAAggggMAmCqx3LObixbPJYDA6PL9yr+OdTexm2owAAggggAACCCCAAAIIIIAAAksisN6xmPPXEooZP97bWhJtqoEAAggggAACCCCAAAIIIIAAApsusN6xmJreVavI3Dm6GAzUNKbspff9ayqXmtEXydIzWQJ1oc2HBWl8QbYRQAABBBBAAAEEEEAAAQQQQCAUWMdYjI2KDM1SMSd3bawli754Ai92h9v7MnbGvCb723kkReUSLjUjGQXRmlcHd7IEk2dPdh9m+ZwcqAgPLwQQQAABBBBAAAEEEEAAAQQQQKBMYB1jMWXtLD022d8/yVeTOR1LopPnZzrpxZGOrXhLzejTk/0n5rxKNJlM1Hl1YnJyMhmfXp0fjmT79bnOgr8QQAABBBBAAAEEEEAAAQQQQACBgsA6xmK29l5mS/Xq+InESNzrZbR0jJxzh3buq2CMeZlFf8en7uRgsHOsIy02WKPSjQ6fuvxGh492Bls3b2cZ8AMBBBBAAAEEEEAAAQQQQAABBBAoE1jHWExZO8uPje/7T1XaOZaYjXnOkln0Nzg7yCItr97YKUijB/fcosD+dnlZHEUAAQQQQAABBBBAAAEEEEAAAQQGg82OxXAHIIAAAggggAACCCCAAAIIIIAAAvMVIBZT7e1PR1KpLt68kr9v33SDYaov5QwCCCCAAAIIIIAAAggggAACCCBQKkAsppTFrB1zcjd/rJI8vlo/cSmc1lR6MQcRQAABBBBAAAEEEEAAAQQQQACBKgFiMeUyO8fmsUr587D146vHp2Y9mfKLOIoAAggggAACCCCAAAIIIIAAAggkBIjFVAHJSr76wUnuvHoeE5EYx8EGAggggAACCCCAAAIIIIAAAghMIzB8+/atf91Qvy4vL2/cuGGOf/bl1x9+9PH16+9+8P57fspvvv3uq88//eKTA/8g2wgggAACCCCAAAIIIIAAAggggAACNQKMi6nB4RQCCCCAAAIIIIAAAggggAACCCDQswCxmJ5ByQ4BBBBAAAEEEEAAAQQQQAABBBCoESAWU4PDKQQQQAABBBBAAAEEEEAAAQQQQKBnAWIxPYOSHQIIIIAAAggggAACCCCAAAIIIFAjQCymBodTCCCAAAIIIIAAAggggAACCCCAQM8CxGJ6BiU7BBBAAAEEEEAAAQQQQAABBBBAoEaAWEwNDqcQQAABBBBAAAEEEEAAAQQQQACBngWIxfQMSnYIIIAAAggggAACCCCAAAIIIIBAjQCxmBocTiGAAAIIIIAAAggggAACCCCAAAI9CxCL6Rk0y+7i6M6w6nXn6EKlKkmSnWlapQY5nO2W1WL3zBZRPJ+fs2kGgzBVSYogQdAKW8fgIn0wSJaXtd5blkP3SmCy3u2mdQgggAACCCCAAAIIIIAAArkAsZjcYvFbk/3tYbcv6CqHblmc3B0GURIVZrl74ttICr+SKrwQJChtxcmBiUD5GW3atlBu70/yVsfU+Rm2EEAAAQQQQAABBBBAAAEE1liAWMxsOndr7+WVfZ2OpYzxqd29erm3lRfqHb/SCU+eu0Ereaq6rUIOgzju4afQtTjeCTLMz58fjuTM5NkLPXJHNs92dZglTyHXm0RZDhdHD1V4YXR4bttnWnHXD9eMxuORl2lQ+MbsxJTaabL/kBjVxtwCNBQBBBBAAAEEEEAAAQQQMALEYpboTti5r6I2XV47x+Yb/uvz6XLZ2nuqojGT8PrR4SM/eCNxJhfMOXuiIjHjUy++tHOsgzVBTOnW/Qejyf6TllGmrA1uRpM3wScYumPSeWeLQ4PU6B59jZeqkId3LksdKQZTsYLBQWbGmcrRyyQo4Oy5DC6SkJWjy5w2PkYVGbOLAAIIIIAAAggggAACCKy/ALGY5enji6MD+bo+vu/HPRZdu+1bKjRTGUXJAgxBqGYw2Lr3QK4KgjHb6lA8XqdV45499Cf4yDyoMNLRaPrPiyCV5OEN3oknEIVnzfI+wVSsQXGKkZqd5c1C8rMwUg/u5UOishFFceCrFQqJEUAAAQQQQAABBBBAAAEEVlCAWMyCO02+0NvX9v5AZvq4cRPTVMzOgwnjOV4ZiTVjz3Z1KCGPB23tPVZjdXQOQfDDq93tm3mAwRzeunnbO683dUYdxoBMJnr8jZkIpQfeeJmZZnsTqdTooEIEabK/f5JPpjJTqdyEMB0r8XIIZ2LJaJfSqViFMqStNpOggIs3r+SUldLja1zQ5tUbOyMsRmMfAQQQQAABBBBAAAEEEEBgHQWIxSxTr8pAiqqAR3U1/UhLtrhLy3hOnkPJ9TvHdoUYNepDXl4NTYShqmpRjEHNwCqLXVRdHh1XK9LYdpkIkQvGZHEUe1YuNHO1gpE5KjsJk7jJVGUTwvyBO/5MrMHFi2dNpmLpEmw1TAE+wujWtpnBZMbXSIuCpXeiBrOLAAIIIIAAAggggAACCCCwpgLEYhbcsXYUhRrwYUZzdFnMVS+ha4MBrmV+GaqcQgKXsvz6gV2JWA/1UCGZLB5TMv7FZZWPArGHdh7JWjSF+Ig9m/ppx5SYdHruVHaJiQjlASU99keHO/xAiCTOh/uoK1WQKacw0Zss3BQuBSNpz1+rUEw42mhgWh+UESdR5eQvyT0bDKN7RMJCOt88AVsIIIAAAggggAACCCCAAAKbIEAsZol6OYsH5E8xalQ3P9LiRn00utImynKQQRoqFuGtoWIT2J9ujEwwviWIRuikFeNl9HAWf+yJzXcpfurYjHmWlZmTVSfRtsYuaqWjXTYEFM5capsn6RFAAAEEEEAAAQQQQAABBFZTgFjMavbbLGqdPUQpESzJVpAxARiztG8cPMoerhQNI1FV1vOUnr2Y8ilPeaPNnKFsqIyOc5gYhxr1472mCE2ZiIxZLSaSiIf0tIqkmIE8o8On3gPNTStk5lLeMLYQQAABBBBAAAEEEEAAAQTWX4BYzBL1sVmCduQ/bGe+tcvWYdl306Rkkdl4mEy2PLCJg9gLvAcSyYooan5Q9Bxs2w41T2myf/DM7k/1M15hWMU5ZERPXNM2eUutvXVw7KOg3LO9zdovJ3e9IuJKJEozz5bya2kzeOxFZxKZcBoBBBBAAAEEEEAAAQQQQGAdBIjFLLgX/WVOzMq5/X8398tIPEjJLpvy5My6xBfrSuaRFr0ITPagJZ23XhElHP9hs1I/dUxCPxTJP9pg26uHcTp1y97YAT35I6l0TQphpPpS1Pys/BU9T8q4ZHOXdKq4EvWZS8P3nspyOZ5U2wxSBXAeAQQQQAABBBBAAAEEEEBgRQSIxSxRR1WsnDvfGprgSjY9R2bsFB71o1aX8Sb/qHV9gzSqFd75uPbZHKf4cKt9VYSLxKgrVSX0wsKtsvESSwbR9aqZfhkFijiBl1v5ZlzJQivKL+MoAggggAACCCCAAAIIIIDAmgkM37596zfJDAy4vLy8ceOGOf7Zl19/+NHH16+/+8H77/kpv/n2u68+//SLTw78g2wj0LuAzB+SUSoS+vBDI72XQoYIIIAAAggggAACCCCAAAIIzEeAcTHzcaYUBBBAAAEEEEAAAQQQQAABBBBAQAkQi1nO+0AWza1/eavILmcLqFULAbq7BRZJEUAAAQQQQAABBBBAAIFVFyAWs+o9SP0RQAABBBBAAAEEEEAAAQQQQGCVBK6tUmU3qK6yUuzV8Qa1t66pas3bvboEq3+O7l79PqQFCCCAAAIIIIAAAggggEBjAcbFNKYiIQIIIIAAAggggAACCCCAAAIIINBZgFhMZ0IyQAABBBBAAAEEEEAAAQQQQAABBBoLEItpTEVCBBBAAAEEEEAAAQQQQAABBBBAoLMAsZjOhJ0zuDi6o56ZxJOROkuSAQIIILCxAnyUbGzX03AEEECgLwE+SvqSJB8EmgjMKhaTvZOz5zLfObpoUpk1TNPA4eLFs4lq+cnzsySAfvYxQZukEwlWQICbudhJSZNkgmKeCzwS/voj3NylK0LL0o9UPkq6AHPtygqs1m/F+TAnTZIJ5lPPhqWEv/74KGnIVpostOSjpBSJgxspsLjfirOKxdR0Y/iLQEdrSn8b1GSxVqe27j0YqQaN7+/MrF36BhsOK5yDHimL9HRPIC2rr8PMmr68Gcut36pyWWDT+9HqchKLgIdXvrnJSiLimu9vu4PRRpM00SX97ga/l0x/VvyK67fcZc1tEz5Kgj7f6N727sIm78RimuIRL0s2WwggWYrViqVV4tLiuhwMfq1IVeS10b9cNuCjJOzyje5t750jN763V7KZTFByDYcaCMw0FjM+vTKvl3tbtXWZ7G+v8xydhIN6ZrO8jmcSijERkLsnlf6SYHtfD8wxSU7uRh9CvSSQN3BNHSort6knhMt/OYbs/aR/uINstBKIDKPdVllteGKhk7u0DiH71SYJT8d16fo7x0eJYK/rR4n6MAs+rFRvl/3nQX/308rn5D5HpCVu22z4R1a+nTRg1QQSnx1Rc/goiUC67m74t5Kz3eCTZMBHSdcbiuu7Ccw0FlNXNfebwP07/eRgY2cy1UF1OSf/dtURkNHhecV3obNdncD1hk422X/ouqJzgnQdurRwfa+V94V5rW8TadmKCUTf5cw/pksPzrNh7peXvF/Mrzk+Snr3T/8a7/xJISMnEx9GO/fHA/kss78Zs85uMLe3d47VydBiXUmV3bbZ8I+sToOo6ZoIyE0YhWP4KFmTrq1txlJ8lEgNvU+Sq/NDNTehyTIRtU1b+5PyDpW3rTTTvHMX/oZdJ/CFxWJ8xJ1jEwJ4fe4dDUaQxf/3JW9nM3rDS1UYZOadKx9wqHLJX0EZ+lqVo5dJoQCvtlNt1pSf5+dVoPXYEvVvV/VNpXJc0tlzGTAjv5Pcf6TuHOvfSpNnL8wKP90TJOuQN3XarWadFUAGw7D0Gen+rD/8bg9uCv9mCDKYtuLLdV14O5o3RnDPB4IlMj6cXB5ca5oa5FA2UCpIEBZhZrnpTL1UJYUkVPN3vB7TEe0mLm592quqKilukuQXpEiaxAlUp3U3qW+W1NskiL7LVe3W5zbTs3yUVNxlSj15p9V0TfLXePdPimQOg8HOsf9ZlnX2qzf9rUanidT7ybMq/orxTkbc+oy8yZfwo8T/N7TpaHOkptOnPrUhHyVT+0x1YfVdZ7MLUsSfFCpRbYJ5fJTYmmY/3R0ob6PST5Mo/Tx3+SiJfrf5+LU3kp+wZHtZPkr8b0Vbe4/7Hriridbzo8R1qnnPyq5787pTfW1s0EfJ2/D1ww8//Pjjj99//73D/ad//pcX//7rf339X//xn1f+Hzn4N3/39y5ZtKG/0fv/YZmfNyHI8Jz5H678mNkPutOPYur//hwdHsZvnzyDsjHx3tmrLBAalOBHSk0lo9OypouddZU3p36rxsH+J64tpCTv8lqUJKyvhDqrRQPD0oOuRFNI8aq2CfyaFXPzz06/7epkKc1P36k0iU2gT45GetUedeloPM633X/Dpu7JpvWXAkzS4obLwp2SI25bNqKXS995o9RHSsvvmPrmV1xvhVX9ypP4KeqLMPdw/bs+6SBN8tPU7/opp9oubbLf4tIE/m+ZZAJl1sWk6o5yMm7DCUSX+LsuTWFD963f9EKKKQ4YnTBXcxPlx7rfVCU55NlLrUv7KH/jlJ7mo8RzM5qaOWfzYQNu/z4pXuOfnWK7QWeVJrE11CeX6qOkiFB8RxfTdDhS6iNl5l1b8obKT5a/ncL3S3kRtg9U3euL6P5R4v/Sq9nuwBhdWtpkv8WlCeb6URLVWHZr7jT/lNkuMhYz1Ed03/pNr0jX6rDhC3M1N1F+rPtNVZJDnr3Ut7QT8/dG6enwrdGo0TqfoGDvpTBeHAAAE7pJREFUsrCOJanKa1GS0Mu0YlOXlbfPpCoedCWaQronKFSnmGUhSdsDrtLhje07lSaxCfTJpfoo8Rvia5j3r3+kp+1SHyktv2N0v/n18k+Wv53C90t5EbYPVDvqi+jzoyQMxbxdSCwma60DMPtu13IUDvi9El2jd70LVLd4u1kP5H1qxW2avIvskaiAhnebzsdmUXlNobYmpSnSq6SppcvOnA/vRL3nX5IVqtNGx00jbXZhbjpp9wRBk8vqECSYcqdBZ0mSoPGmsVnT7fUqhVWQU0HrgwtUPaMD9rpCbwTFqgslhfrhbUTbZtfPSKUO0xd3dZJp/zK1z6saNa7Q2sIBS5j/oouziIvIsrB3XyHHygMC4yoaFGJ2fLds2yVPGUr6aQVLr6u96+SKhiZe/aPfADaLTiau6n7zzbZ/pDSZOygbpYltAt3UvLPt4W4/g3eoziq7B1xBZt/tWq/CAam7U46uKdRcSvWuz+58d7Utwn0NyhJICfaqqICGBjofm0XlNYXampSmSK+S0Y1kzksd45d/SVaoThsdN420tQtz00m7JyhpcllNSpK1ONSgsyRJ0HjT2Kzp9nqVwirIqaD1wQWqbtEBe13cFfkdahskKcym25Bdf9vsFjIqOWCz7PzT1D4XihpXaG3hgCWsfr/ERWRZ2LuvkGPlAXFwFQ3qaXZKmFxyz0mSeXuxv3+qw3btXSf5NjTx668vydHc/dqHiWlpEdAXKHVzB92Gf4nejutdSDDNgeAdmheT34Txu9SSNwfMrvAu4FuJ+t90/54U+bAnwneiTto9QXaDmIykBurld8s0N1Dhmjx3m7Vpi90zTQ0aHySw16sUVkGuDVofXKBqEB2w15kmen8HxaoL5Zz64W1E2/pk9pdLbPajXT9lp21T+7yqUeMKrS0csIR578ZZxEUU3qPxBbGwLVMMXEWDa8yOnI5fLrk1WtgcJVki1r30aMrxqZ0oo8cq57vSBjNcsDCbT+5MN85MDXyLX/6yAbL0l81fhmrqx0iPT93VqgjdcVEZUoK9yhTQ53jouLrR/sXRgUwgCioZpehld3Rr2ww4NGNa5Q7J72BdQPcEvdQznUldZ0n3e50t3V28XUaHT90S06PDRzuDrZu3XaGN70l3RfmGGYtbPCfvRznlH7fvUPVbctavizevpIjxY9f+nUdq/mx+szdtfmUXpG/mpkWoD03XlSXdmLRyv3YMeLSbvLxNgvq7LmmSTODq0tXEZeRviIzchP6R5dzmoyTVL81vpFROtee7f1Ikc/DL18vL+L+1/ZPdtit/j0m29W9qXa5fqUV/lLjPEfNe9nf97W5e+dUb9VGSN3vmW/V3XfINnkzgGtDzR4l/j5k70JUU7ZrjctB8Lrtk89zgoySl3fxGSuVUez75QdA9QVR+4Zkl0flpd9foo8QQzO2fhZv2UbKwWIx/a+sIkY15DEwX+L8Vpfd1oCD/bqivDh8CLVPJvQdImOiNfqiGXB2v0nD+eiJfPaNnSJuv3kEZcRK/0vPZll851QXpJkurCy/3XbX6WndGjLIFxeW3hl5aRuu482qB8Y4J8rxmuZXqrHDiYWE29ejBPfewL39bVzl9Tzbpi/rfYoIvCWYpVJm3ufW90OXZE/Vords3M5F0803WiS6ou5mbFhG9bf13fZMu8N8qUmd/12xXGk15InHXDepMdJHJBJIqdG9rUtUyAak6tbTH+Sip7JraG6nJe6cyZ3ui+ydFMgdblFqQRX6Fz+h/KsL3kyvTbSTe1P7Hh7+tr0//omvSF3yUVP+7KC2cdWTYzdP92ow6Itp1d0wfG4m7bpk/Sqqab/7BI38XN+QSc7Dq2lkf56OkUnhNPkokvun+AaiGL8inT/xNsZKg6Ynwd0zxqsSb2v/48Ld1RulfdL1/lMhbcm7/LNycbyXmtlhYLEZ/8c/eCW1CB8W7ueKIuQ3NCCET2On9fVZRck+Ho5BIT7n62biBH/pjx44AMu9w/T28ewK/uAVuq5E/hejLfOvTy28xycS9+qy+GQcjn0VZ7toq9THSpgKzv5nb1GZOaRN3XdIkmWBO7SgW425Cf6OYbD5H+ChJOc/+Rur+SZHMwWukDcTYjyzv1Mw3E2/qmZcvBcibbup/EPtvWLPdc4036aNEAHvWq8oucdcl3+DJBFUFz+O4+RogJWXfB/QPszuP4r0y+CjxMEo3Z38jJT8IuicoaVk2LyL4r/iSZL0eSrypey2rIrNWHyXm15351JjHr74N+yhZWCym4t6Qw/qtZqID/u9m2Z4iZpMFBs38o/Ch2dF0pGw8jhsLUF3BOZ3ZviXTRCbBs6X0PI68+DCm6t4jpU+wya/ytnQRMs8tn5xj529lke/uCbzSFrdphnkE91TlNL7SWqbvyWRfyP1bmrV/0E/jujNK4N4T/vGu2wbIy0VZuZFqPbwlkzdzWtirXflmsgscqdmQXKIjslue9VRHU3dd0iSZIF2tpInLonnb3R1obtdo12W4BBs93FR5K/goyS2KW90/KZI5mEKzf8DKt6b891OxOjM7knpTJwtO35PJ96x539WXVEwjb3D/rWq26zOZ5uxmfJQYGWNoPkTkiBGeBi11TequS35SJBOkamCeYmiaGv1dfM5YOjOVwudy27LR7Oo5p0q/bVtUiI+SOqzkB0H3BHXFz+1c6k2drEj6nuz3oyT6+EjWr2uCDfsoWcJYzEC91ToOF5N/sAWfEFv3HviBDbPMxMldb6TM2a6eiNPnWICOt6J+pw3cxJFZBFEzFm9onmXIlg7pnqAFQvaLw+uUFhc3SJqH2cSy5SiZHu7JBjX0k/i/+OS4+8eKnybanhowW6vFKzIKe3Zufvpm7lxEhFGy67VPxcX8XbNdco37N+i0t2X1XZc0SSYore80B5vcXX6+xX8xF4/46eu3p75v67OVsz3cVHyUJJVVgu6fFMkcpBTpDPUxnQzEzO6OMhjVb2pzvu7vHu7Juuz7OTc14IZ8lPjK5rOjyS/AqVVNcdV3XfKTIpnAb9AitwWziWRVFTsKV2Urx3t42/JRUuObn0p+EHRPkBdmt8wXn8I0oM7//LP5V/6sflNXXuJO9HBPurxmtjH1W3LjPkqW4TlKhS9F0eqx2W3iDSDUoxq8/TiHZAZuZergFsxzNBnk+1KALjMYWxGXWrKv8wmyyRNVDM3Iiyi0wjxsuSK7PON8q6KIfMnnbFnuQEH9Uzd/FSohaVslSNfBFObS5QB5LWq3kp1V1gbV5Kwd+nRWqq6Fv23bWp6HPVtbv4qTUoGKMyWHi4kLR7oCSobhy29covnmtH9B/H4pZFC4mQspdG28PHUDvf0SpmaHJOPShGXHe1e1d53UoNDi2CSZwCh3MDE9bjT85ldtS8qqU/7xAm9N33UVrm19QVBq6d74qpY1FdONSGZgctDZen/llTIZ5Pu2zLa/5nQ+QTa6fvovR+jVQDbzIgqtiO+0PK+KrYoi6sqQGgT1LVSiZYKy63WD83aayru6xicq2pYfNkUEtdaZuYyq6pBdok9nif0L9bbNtjwPezavTPMtUahPXJWg4nhXQN0r/l9+4xLNN6f9C5b5o8SwO0bT5oq+6F3Ve3sVUOM3eDJB8jdhRatqDjuWYprolHEr/l28sPY3dlfh4K6Lyy4I6up6lwRv8vhq2U9mwEdJplYm5UGXU7ZK4O4U755zv+S9vnPpyk566Yqbpg1BpXRmLqOyRqraZJfo00v4USItNWauybLrtgsbXQFNWd7fvmg5oUuR7ILiWzL+tVlMoaviiqj9dVTAqD2wjONi9KMKyn8teV1SuymrMrl7wCRUeP6gZhkmGHZknKA2//mcDFshFXz56FbfJav1q3wq9eb3ndRjIzomaFhls9xyw8Ttkkkbgs4WymC/SW6xQ5Nr+koj/1Mk7+JUbtMDbu09Vc9Nil+yzJIbDdK5+ZKBd5+V3cydi4jrX77fDNNd20U1ddclTZIJXDWn3TCfDs2vrtGTrKb6L83phRtUu/NNFXaBKjH+pOCjxPRDTM1HScX9GUNVJOvtcM17tqKM6d+SG/VRInpi6/OaX6dypAy2i+oKfJSUNbnpMePm/y1Xym7T67N00ws3KKjz25aPkgbKOklMPfuPEvWhHg0G1zWZ4R0ljQy+hSz9txL9qy77ddf4vTk94KZ9lAzmPy7G/4W79tv6zabe57zSAtlvpvXnch9JaZNwGIJJX3n5lIDmspjdRE7io01qvKxpjFtp7WpO2bDdOkmUGgQDXiSFu81ko3iBO1s8VXZE301VhFPet2XlrO8xjVQluL7Nnq5lG3NHJd+GpW9eQTUXVupOCWgui+/Sdf0oqbI1vCW2U6qW5LSEh9ytWL+RrHnizjT/MxjfYjbXtRa2jez6UyNVCXbNfN2u35g7yr1tG/agSx9txJdPCWgui+/SNf4ouRY5sovA/AVkSqFbv2V8GgzLmX9l5lCi/LZqXkoxcfFIN8DStfHNOtG1Ty9s3oblSFl0c/UqPdVN1eW9MhsRQrQbNaP+bJS4anfThKscON6XwKbdUcm3YVWCquPdAPkoyW7kiLebal9vjtnmEzV56sKmy2cThKcm5cIpBDbtjmr7vkum7wa4cR8l7yRBp7iJ7SXmUdIyqClYR9ee3ZyfODTsaxUEXf9ITEOMaZJNB6iWABsM3F1qhiKax1pnazhPU5f1uWY61fVp//QtkdUKs4GtLtZamhnCpSzFg+5NuuEfqUWZ6Ah3VATSdnc6QD5K6p2nU63PczPO8lHScz/zUdIQlPdsQ6iqZNMBbtxHCeNiqm4gjs9PQD3j73h+xa1fSd0A1ezcm97QJO0jU3TL5s+un111i7qpVufLGSuAsJXgZz8C3FEdHbsB8lFSzt9NtTxPjvoCCPsabHcX4I7qaNgNcOM+Soa/+c1v5H8uHbr5X8zLy8sbN26Yg599+fWHH318/fq7H7z/nksmG998+91Xn3/6xScH/kG2EUAAAQQQQAABBBBAAAEEEEAAAQRqBJbzOUo1FeYUAggggAACCCCAAAIIIIAAAgggsMICxGJWuPOoOgIIIIAAAggggAACCCCAAAIIrJwAsZiV6zIqjAACCCCAAAIIIIAAAggggAACKyxALGaFO4+qI4AAAggggAACCCCAAAIIIIDAygkQi1m5LqPCCCCAAAIIIIAAAggggAACCCCwwgLEYla486g6AggggAACCCCAAAIIIIAAAgisnMC1X/3qV1Lpq6urn376Sf5euQZQYQQQQAABBBBAAAEEEEAAAQQQQGCFBLJxMcPh8Be/+MUK1ZuqIoAAAggggAACCCCAAAIIIIAAAqso8M7Dhw8PDg6k6hKOWcUGUGcEEEAAAQQQQAABBBBAAAEEEEBghQSu/e3f/u1f/MVfSI2ZoLRC3UZVEUAAAQQQQAABBBBAAAEEEEBgRQXecYEYWS9mRdtAtRFAAAEEEEAAAQQQQAABBBBAAIFVEVDrxbBw76r0FvVEAAEEEEAAAQQQQAABBBBAAIFVF7j2s34xQWnVO5L6I4AAAggggAACCCCAAAIIIIDASghcY2rSSvQTlUQAAQQQQAABBBBAAAEEEEAAgfUQeIcRMevRkbQCAQQQQAABBBBAAAEEEEAAAQRWQkCtF8MLAQQQQAABBBBAAAEEEEAAAQQQQGA+Au8Mh8P5lEQpCCCAAAIIIIAAAggggAACCCCAAALXoliM7EZHMEIAAQQQQAABBBBAAAEEEEAAAQQQ6EugJBbTV9bkgwACCCCAAAIIIIAAAggggAACCCAQCVyTfQbCRCjsIoAAAggggAACCCCAAAIIIIAAAjMSUONiiMXMCJdsEUAAAQQQQAABBBBAAAEEEEAAgUiAtXsjEHYRQAABBBBAAAEEEEAAAQQQQACBGQpc+5//+Z8ZZk/WCCCAAAIIIIAAAggggAACCCCAAAKewLVf/epX3u70m7/97W+nv5grEUAAAQQQQAABBBBAAAEEEEAAgc0QUGv39vL69a9/3T2fq6srk8m1a9f+n3795je/kSP+ijYmjX+ke7nkgAACCCCAAAIIIIAAAggggMCmCbjv4Kbh77333of6tWkOc2uvC2X0FouR6EmPtf/FL34hoZg///M//8M//MPo5uixFLJCAAEEEEAAAQQQQAABBBBAAAEjIIMh/u3f/u1P//RPAZmRQP+xmF/+8pfd6+rCLhLZ+eGHHyQm9/PPaqSMHS6jSmBcTHdnckAAAQQQQAABBBBAAAEEEEDAfQeXjZ9//ukP/uD//Pd//3cv3+6xNQIu+OKDyMHeBrO88847UdauU/3jDbdlXIxUTodg5Ib4uZiVH51pmCfJEEAAAQQQQAABBBBAAAEEEECgKCBfu//3f39+552hfLWX7+PFBBzpRcCFZnqLxfRSrSgTCcH89JOEYtQrOsUuAggggAACCCCAAAIIIIAAAgj0IiCxmJ9+/kkWa+0lNzJJCsw1FiMRIBnsJGE2ia38/ve/L452KVT3SobE6FAMsZiCDQcQQAABBBBYtMC7v/ql/N+Zq8XPP/1Uv3v5u9+7xGwggAACCCCAwPIImK/ev3gn/1hfnrqtZU3mF4txgRhxlHCMBGV+97vf1ZvKRKQsEsO4mHopziKAAAIIILAIgcvf/vYv/+qv5CP+j/7oj/7kT/7kyT/+41//9V//708/Rbt//Md//H//7M/+4R/+4eeff7uIalImAggggAACCCQEZAyEfPu+ugrWHklcw+kOAv8fUq644rMAQ3EAAAAASUVORK5CYIIA" alt="" width="981" height="160" />
首先是格式化打印出了SQL语句,可以清楚看出来是查询数据表所有记录,下面则是输出集合内容,这样一来我们成功查出了表中数据。
疑问点如下:
1.首先前面我们定义PersonRepository是一个接口,并且没有实现类,更没有bean注解,那么通过Spring我们为什么能拿到这样一个(接口名首字母小写)名字的bean,这个bean又具体是什么?
2.我们的PersonRepository是一个接口,明没有这样的findAll()方法来查询表中所有记录,有人可能会很快想到其继承了CrudRepository接口,那么这个方法又是怎么实现的?
JpaRepository这个接口是Spring Data提供的核心接口系列继承链中的一环,主要有如下四个
Repository
public interface Repository<T, ID extends Serializable> { }
这是顶层接口,也是一个空接口,后面定义的泛型T对应我们的实体类,ID对应实体类中主键字段对应属性的类型,比如本文是数字主键类型Integer,这里即对应Integer。
@NoRepositoryBean
public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
<S extends T> S save(S entity); T findOne(ID id); Iterable<T> findAll(); ...
}
CrudRepository继承Repository接口,CRUD大家应该都不陌生,增加(Create)、读取查询(Read)、更新(Update)和删除(Delete),这里即新增了增删改查等通用方法的定义。
public interface PagingAndSortingRepository<T, ID extends Serializable> extends CrudRepository<T, ID> {
...
}
public interface JpaRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID> {
......
}
然后PagingAndSortingRepository继承CrudRepository,同时新增分页和排序等相关方法
最后就是文中的JpaRepository继承PagingAndSortingRepository,同时定义了系列常用方法。
不知不觉,我们可以看到JpaRepository这里已经基本涵盖了我们基础操作的相关方法集合了,例如测试类中的查找所有记录方法。但是问题没完,方法再多,终究是接口,既然是接口,你这些方法没有实现的话我们还是无法使用,但是我们在测试中已经发现成功了,那么它是怎么实现的呢。
我们来关注一下JpaRepository的实现类SimpleJpaRepository,源代码类声明段落如下
@Repository
@Transactional(readOnly = true)
public class SimpleJpaRepository<T, ID extends Serializable> implements JpaRepository<T, ID>,
JpaSpecificationExecutor<T> { ......
}
可以发现,这个类中已经实现了前面四环的定义方法,终于齐集五环。
@Repository,Spring系列bean注解之一,告诉系统这是一个持久层的bean示例;
@NoRepositoryBean,与之相反,使用该注解标明,此接口不是一个Repository Bean,例如前面的JpaRepository等,都用上了该注解,但是我们自定义的PersonRepository并没有加,同时前面配置文件中 <jpa:repositories base-package="com.sdj.repository"/> ,随后Spring Data会自动帮我们实现该接口,并实例出bean,bean名字为接口名首字母小写后的字符串。
下面我们在原先的测试类中加入如下代码
ApplicationContext context = new ClassPathXmlApplicationContext("application-root.xml");
String[] beanNames = context.getBeanDefinitionNames();
for(String beanName:beanNames) {
System.out.println(beanName);
}
...
重新运行测试类,我们除了能看到先前的输出信息,在前面还会看到如下输出
aaarticlea/png;base64,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" alt="" />
这一行行的都是Spring容器中现有的bean示例名称,其中就有刚刚说到的"personRepository",所以我们才能根据这个名称拿到该bean示例。
然后我们在Service层就可以注入持久层bean去组合业务逻辑操作了,通过@Autowired注入,同时不要忘记Service类上的@Service注解。
@Service
public class PersonServiceImpl implements PersonService { @Autowired
PersonRepository personRepository; .....
}
这样一来,我们发现在常规的基础操作范围内,包括增删改查、分页查询、排序等等,我们不用编写一个方法,也不用写一条SQL语句,Spring Data Jpa都帮我们封装好了。但这只是一部分内容,例如前面接口中我们不是定义了一个findByName(),有人可能会说了,难不成这也能帮我们自动实现?就算能,那我再findByGenger()?到底能不能,这也引出了下面要说的内容。
Query creation 让方法见名知意
在前面的测试类查询方法改成如下:
List<Person> list = bean.findByName("小明");
运行测试方法,控制台输出如下
aaarticlea/png;base64,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" alt="" />
看SQL语句发现的确是根据name姓名去查的,也成功查到了结果。
大家都知道增删改查,一个查字一片天,简单查也好,花样查也好,它都是我们持久层不可缺少的部分。
除了前面提到了Spring Data对常规持久层操作的封装,它另外还提供了一种通过格式化命名创建查询的途径,使得我们在创建查询方法的时候有更多简单的实现方式和选择。
这里的格式具体体现示例如下:
查询方法命名都是findBy****这样的开头,后面跟字段或者字段加关键字的组合
比如findByName等,相当于SQL:where name= ?都是规范的驼峰式命名。
比如findByNameAndGender,相当于SQL:where name= ? and gender = ?
这里的and就是一个keyword关键字,类似的还有许多,可以参考官方文档链接点击查看如下相关内容
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABg8AAALHCAIAAAA2JUWuAAAgAElEQVR4Aezdf3DU1b34/73f6YSMhjGEz9SEfgeWfiRdFTsBR1k+U2BbQRdBWayQdMSY64+6HxEatNC0FbvV1kaLJRXwxo8/7io4DcTKqqA7BHs3wfmw0BGjoncF73VxvlfWzgDpwJ0u/MP3nPfv/f3ekIRs9rnDkN33nvd5n/M4Z9/7fr/2vM/7n86fP+/ggQACCCCAAAIIIIAAAggggAACCCCAgCLw/+CAAAIIIIAAAggggAACCCCAAAIIIICAIUC0yKDgCQIIIIAAAggggAACCCCAAAIIIICAg2gRnQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGgRfQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGgRfQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGgRfQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGgRfQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGgRfQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGgRfQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGgRfQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGgRfQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGgRfQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGgRfQABBBBAAAEEEEAAAQQQQAABBBBAwBQgWmRa8AwBBBBAAAEEEEAAAQQQQAABBBBAgGhR/j7w0aMzLq2quWtf/lTau0UltpUjiUpC4KP1M6ourbmrL29hP1o/89JLJxZIlDeHsfWmLbRSq/JYrNRF2K2NRcZS68qUFwEEEEAAAQQQQKDsBcZQtOizzd+fdGnVpYX/FXHG3r3+D0ccjssuG2enoxSV2E6G6Wk+etozVVaw5q6e9Lfsvx74qHtdk/vKb9UYUDXfmjTj+3ete+2jAfu5kNIi0P2o0kuqKy3LMp6+pnWlvIky1hq7C2yhFa7+R+tny57s2fJ14bSDSVFc/kNUqcEUdNjWGfbdWmbJxyJjZi1ZggACCCCAAAIIIIDA6BYYO9Gir3u2/fXvdrAvW3D7d+2kE2l6dslBRWKF622sUFRiG/mlJhnou//K2b/6699Slxb3Knnw6e9P+tb/atmy6+Mv/37WWPfs3/9+5K+vbWmZff9bxrIx+OTYW9v6hiUeZqvhe94qoiuNQf30KtlCS18p8/VnPbs+Fj25/pb5l2e+OQRList/iCo1BOUeVBbiE7Iv4xNyEep0ETY5KC9WQgABBBBAAAEEEEBgTAuMnWjR5Q9Gz/z3f1v+hX4oRwSN+2HIulA8/6rrlmp7bdqz7S1xJjpu/rK5NtIXldhGftYkX29rumrhq1+Omzz5Mrl4zuIF1nftPR/obvyf339UBNQuq7/916H9//Gf/yWtTvzXf/zn/p1PrpxfP/m6x355i72sSi/V12/dNfWqH3V/bbPhi6qg1vALls3Js1rPtl2yKy243U5XypPPWHnLFpqNyn7n4Q9kN/7g4e/YSDyIJEXlP1SVGkQ5L3gV+Qm5uinzEzKcu7UchS5lxhxVYjECCCCAAAIIIIAAAiUo8I0SLLO9Ivd175Xn57esGERkRd1CUTkUldheDbRUHz092/Pox2cn3/HOy/U/+f6vHI7rbim+SgPbfnT/rr+LyNdz/x5aYRmGUVl9eWX1ggefEv+KKlQJJR7oW/2DhS+KCwrnr1g2DMXue61HjQPla5R93UqiC+iMw1Dyi5ilLbSLWL5BbbpkKzXQ95Pva5+Q29NqPny7tbQNmS9LltGsAs8QQAABBBBAAAEEEBgLAmNnbFFaaxx8rUdel5ZtGE5y4KPX1t31/RmTjLl7Jl7pWdeTPvGJmUPys9fWLZk5qUadFGnijMZtnyVtbu7rg5vvcl85UZtNqebb7ru2HUtbNd/Lgb4fXzX70Y8d1/x6/78/9519r4mYh+O6O24veojMwUfX7xMxjTlPBa2hohxb/myz51uXXtqU5bK0gdcaJ1Vd6rbMEWMuSX7WvW7JDJ20ZmYWpKISa4VLHuvbcpf7KgN/0gzf0xlN5TAn4k1+tu0u91QJLucmF9feuf+nciIsstvbok3V9O11H1mqLpto9pVa41bVTJ2dq4kGPtq22qN3A6UpRTfQe8nt+cZl6YlSx4QpFwZeWtWYCp3a2apqRH2tF9AN9Pz4StEET2ftRcrUXeq0XMo8wVPXHbRUVD5VoC71bku74Gigu0nM+ZWyWMDLrms06LdmLMkCn1Ne3659tK8PWhu6qmbSVe7GlKrrWZp/MycOtyxReoL+0auZ0ZT5wUujvrTmWzM8P7Ems+RmblQ8s18pkThtK+kNmpKx+cLctKyH0T+/7Xla77spyyfOuOuttDZV8kr9VF46UTSitTeJ0h18eva3zU+INu/bVO0TYu24X/c87ZsxSd2VTZzqWZeaj15ym91GSV4Uo74BdU3LjkiUy9g513zbsy7jYjqxv+9ed5f45GqFFxPSX5Vlf2/unRwyS31XVnOlKZuyfOr3jaZIKZu9/ckgenvKVniBAAIIIIAAAggggMDwC5wfm4/YWtcll15yiff5U+n1622uuUS+lfFvQvMea1otB/fy5iuzJK7Lmjh1c/Hnb6rL2IrY7qwNceuGcj5PbF0+SWza2fxmQqY59fw8mdusDcqrnGtleyO2XtGYuvbDbO+mLdvTPEEUsu7HvWnLz5+PrVUobu023tGWzGpsdmWpaQaSsrq9xHITiTezZnvJJTW37khp1x23yq277tu8qsEoxqTlO96+L6t/XeOb+trx5711mT1BIqc1kWhL2Rbp/1yNtyoVvymznxlGhps10T8ObJil9kP3JnNTp3pXzUjfhNxojdnbdixREizZYclfe/qh2uevfCR2/nz2ZH33OZUquNaKJObj1NabJojlU1cd0JZJ+MzKiiUTlqTCn88hr/raR8tV8fy9vftWWcgrLZXRl+zJ1nOcq/X6yWrmanrLbkDPLQXLfqXERnLVy9KgGnnaH23Tq7ZumCWbxvpPrnuqd3VDykKZwNq/ZHan+iwfB0sOlhr23petV18yabn6CdH3opv2bJiX+VFK357yec0olSx8RreR/Bf+gbp164ENnszPb2q5+prTATUKC4PU0nZlN23e0Tw1FVzdY2crcGqPEpnk6lSp+5NcvSJ/b5eF5IEAAggggAACCCCAwAgKOEZwWyO4qcQGtzzin5flJD72fPPyVRv2fJhInPqHKNE/TsV6N3hlfOSSS5e/aRZRy0EunzRv1dbemEz9j1Mf7tCDRw2WgEKWzWmn7jUNzZt7Ywlx9nwqYaxb8FxRbOnAWiXw0bD2gCyleIhgkSzMDMtm1Tds/K9Fiy6dMGvDAT1Qkms19QQy7VRKSSzOHaWS5WQssWGWXCL/1XlWbe3Tkbr1KI+1tEUlPn/+Q/082dUoW0sUW+r/WDtJTinfm8uNE0LXkrU7lMRG9TQ3d2aQ7UM1+DVhRvOmPr2J9JKn5C/aUq+jzFw0iGjMrcvNAJknSz8zCnBeq7jRGWWkSC2wSwsEKmlP7bhViR85vUoV/qF2TSWOI89XtRhh9jCQyEArpEuNCGrJGi09Wj8fFo2VGi3ao8RPjRp/uMGtfhxcyy3w92lhLCOZUuY88kWgxdVP6wT3Ko1X+CY+3LNh7YY9+SKjbzamhzXVJWqHdDVuUj+0p+J77lMDvpa4khoSvWTqcq3pBXYi1rt17dqtMe3zdv58Zv46suzthXuCvQY1+4nlmaUiruViByL6nOj9m+cp3WaC80oRInHetGGP8nk7Fd96q9qdLGHc86e61YXOm6y9SdvRGb1J2WTOMLRlH3hp3bzV6gdLlGPTTWqgMyVkWUy3KaJvWFCMp/ENlqDwvFXd+t5hs/ZhsTqcF/v7xtT9fd8GrfzWT4clT61xxafc6DlTXeLDLnYUW7VN9aq7jpRIpegcSjcrtD8ZZG83as8TBBBAAAEEEEAAAQRGSGBsRou08/PUk6I8oh+uVcZc3GoO2NBymDBrbcYJq3ZyZQlFZWzulHoWfaUR6tG3fWqTMj4o9Wxdf9P4e+rNZlmeSTc9bw470UaLFFjTyCLtiX7iqpxIT2jwrNrQ3RvPGjfqU8bj1FgDZ1peopZydUtkRFtSkx1J2ZYRIpExE7nEXuLz4mxeBmhc9/Wll1I7kc4888+WWAbZPDKYleF2Ss3HldlEm5WonJG/RjchpTFUEv2kN38/0yquhqtEpEgbDdGwKqVnxR6Rp5oTbt2aHh/p/bEyekI/M9eGexjF0xpHO1N1rdfGwbzZmF7ruOovVVM0en/sFEsm6OOttDDKlff1ZsAvV2IEVkktcaZ8UWj6hyVlCE9aB87yMi3IJVKoS5Q+ltpttIihgaaGBtJHqKVtIyP/oip13m6Dpm1VealXZKo1mije2XqT0nyX1KR1RnWE1yVmlCT2iAxl1mTpTepgIjOlEYY2cIwCiY6rbm7q8q2WHZF4P61PiiVFdJviGI3SmE+0D9Sllzgb08uVWTtzNcszsb+X+yL9MyXe0fOU8XQjXCiWaynFR+bHKR+IjI+h7f3JIHu7pfQ8RQABBBBAAAEEEEBgZATG5LxFA2+99bG4hu+aZTYm6VGu9fv6aznH0bhqYz4gPYdfvvHUAsuc0Eri6jnXT5ZPvj6izXSkJzY217fuJ+IOWJNX7nzq+kplFeO/6u/WK3c1MxZkPjn2gvfbP3rtb2JS60/C904x3n/rNeUO7HNuGdTNn6qXvfFpaOV131SyO3vkry8+2rLwqv9XzN+xZN1bKTPgfPbWPmW6p8xpeL7e9pqCuti4o9zAW7uUJb+wh1RE4r4f3//aWce4OZ37/88co000ilsWXy+fJZOynPKhTcS7+E//npnY4eh5668izeRb7kl127dutdJEoQJNNPDC0hYxW/rkByLWxlC2K3KtV/pG/bLb0/uIlkD+0ZVuX3HZwac96m3p6u8J/ccHz1h61sAL9//hSzkH+csZXfa719Vbcsv+tO/+JVu+FB3+sfBjWjXrJyt91Eg+sO3+Jz52jLv9sQdSlx97et2rfxPSz3Qqzbrvxz/+s4R/7v/+n7kZ8Leo8Gd1+JzyxaF9tO+gmFLLcfnk9A0ahc/6JHPicG3JnOc+jT6V2m20j+rlans5HPt65ARgldXVaR9P64bS8y+uUhfUoEZFDr18i7VnffTRZ7KE9Q8dSu2MA39XmuSaudpd+QZe8OfsTddn9KaeXconZHHaJ0R0XGUvOvmef/t0+wpzRyRLoO4vL7tcL1wR3aY4Rrmx9If2gRLl+veuAuVKX1V/re3vLzN6nJ7nA5Howyn77I8+/ptY6bLFXfufS/lAfK2Qj7tugfZ5s7s/cQyyt+sl5y8CCCCAAAIIIIAAAiMoMDJBqRHdyqnnvekDKMzt/yO2Y+3yWVfWqdduyF+Y9X9ieIWeLG8O+hU9+u/z6YlPPX+TkWeOJ1lG7iibltefiVUmuDekTzCkjrWZdF/mZEJ6me39PRUXl9ssdzut1dcuXpIZxDcoFxyZI4KMXLURVZbr70Q9JZ11rImRWk4DolyopQ/XKiaxBmi9is2SsT5ORM7OIx8HVqWPC1OXq/+rv+Snu2lNlqN1lC6hdgY18xyDULRyZg7KsBZAq7jzpkZ95pcs47YOrMqYKiWtbMagofPqjDaX6rBiW2rfuDSl0dSxD0bbKEM/Jty09VTqcm3glb6mxmJp49SaqKO09OFLOeWLRNMvkxRjYZyzGtdu7cs+6M1aFPH8wOr04SGZS/RVtCuqzCFgby7XeZVxdns+VC5K1ZMrf9NzK65SxTRoymbli/RN6wlSBqnpC+XftPmVtE+EuWfTK2sscekfHrHym8qQsbr7+qw5iufpuzXL22mjrorpNsUxWrZpPM2zJ1E/CKnX+cr9feMs1yT14kpDQDyZYO6Fc+aZVlOjEGkzuNnen4j9ojqFnNhzFtPbjQ3zBAEEEEAAAQQQQACBkRMYi2OLet6Sw3C+ueD21OEkcpjHXVf+j5ktz+76+Mu/y+EMqY855nianDnINQb2HRTjOBzGL/lpiQdee1VuPs/jm/eszH4DrZ77vc/KQQ9nP350tnZzIu1mapcuFWNtHI6/v7pQLpd3+xrko3rK3BVPbd//xckz//XpzpXXjJPZfPnsb99Ss/v6tW7lrmsrMu+6tlcdo7NgsTHKYG8uZpmXgTRXzbmIxBpg/R23G5tS81D/37dX3hTqsjnar/qfvdYjf/2fc0vWG9j3KLe3v2zxCq0YahYDr20rAKg1Ud+Lr4nMxy24d5kxCkHNQfm/Z1eOfmZJ41Ar7vjbvl1/1cbknN215YUBaxLHvhfkZvI8xl33sDHyY1zqeJiBtxqb1HFYoXuzFVLmqg79uO6prhUpKQbeun+dGFZyzWMvq2tqLPUrcsD3pMA7cskXi/adx7Y/dp0y4u7s3z7eteX+hVd9q2qqeeuv7Cz6xs27zGUu0dfMGPvnuOW5rh+qY6yUcXZLZ3/rf1hvfSVWTM+tuEoV1aB6MfW/6ZvWl5uD1PQhPdo76rBDY3+nFlVfK8tf0ZvuNXaNxidEG5dkpE/brRnLRXfq7hE7o3G3rFA/csV0m+IYLds0n+bek/QpH/Zxi7Vyqfv7ide2bCm4v8+VZ1pNjUIc29UjvwLm3DJfWWR7fyJSD6q3GxvmCQIIIIAAAggggAACIykwcoGpkdpS9uEkxhCMuoZmMf2tOsW1UiRtFIxl8ua8A3nEnCfyt3rj9mfpid9cLkfcZP5Wb6P6alZy9bz/9DsW2cixUBLVSh+oog3byTIhtDZrkvUeQKKwopzZbp0mNqqNUTJMi0mcF1AfqqPfvivL/OKWOueYsVsdWpI+4MiynvZUnXrGMkFVShJ13EGBhlYrLqDEeLED/9BY0qYq14YbWCaEStlO2gutu6rDQ07tWCJbIfOeU5YxRGottOEkluW998kBTZZhJnlZBLzslpb7puWYSH6QaGLQ26bVN82aaowBmdCcPtrFAqFNqaMPihLvZC7Rk2slzxgCJidNX9s8b4axxUtmbdYnjUrPrbhKFdegejm1v+mb1t8uMP7F6If5i6rnpv9VZyBKnbpceU/dF2X7jKQPfSqi2+QvWxEfqGy7HW08lz7kU59KaZJ2nwFjNiL1I2DuwPVJlzLzTK+pjiaaSH4WjA9sXgF9pZS/xfX2lFV5gQACCCCAAAIIIIDASAmMvbFF6o/l4+YvSxlO4jj29M/k8JzrOj794OUH537ncmPKkq939cnfia+73RhP07PtLfnbeXoOSgxvoHv1E2L4zbjbH9JGcqQn/myfHIHhGFddaH4iJbvU/xa8fPLMf/935r/3VyoDIeYH1bf+a7sxdVDq+kW/Gvjyazlk6Zq5qtWuP8sZTL45xzKhjprlwLYX5TCayxbcrkxdIxf2bBPz/ohhN7enMivpB15b/VsF6WEDyX7ir48oEyldVq1OsqRkaPzX97PfyoJc98vH1IJ8va1bmTrplqwi+7btEuN5RBlTxx0ZTZQy0sbYhvlEnd7EcZk5n5X5ngBQesmCZemDMixpdKVrHvq3r/aLCVGm3POAkvrIZqUaWsqPPpId0FFZWag8Svrqy9WeJfQHXrvrfjGpkpjuKJh18JNMr06gM/mB7Y8bw0mUbD5bd7+YsMi63IBPG7qiJO9b94QC/wsN3pFTfpBoYtDbg38MR//z5IlP/jhHDnk7e+yzAWXTWf7L3HjmEmM1dQjY5Ix5eSqrv7vsqZcjh07+9//3b/coH7Av1XmBxLw86d2quEoV16BGQZUnGZvW31bHv2RMwKWP9DH6YVEb78v+CZEf71z7QG3o0/wVy9SSFdNtimPUa279m3u3Y5TrdiW9mJBLzMDluO6Pn3zw8srU/f0+ZX//Q8v+PvveychRq6leDn2Qlz6Dm+39iZ6Bw1FUbzdX4xkCCCCAAAIIIIAAAiMpMOaiRdqcx/plErrlZy+8IK+xmnNv6uU6yYNPLxGz/4qAiX7or8+a7HD87ev0s9XkwXX/S855PG7xy3/UAhCZm1Mu7nL8racnZfZovRyD+atd93Bd9outCuQ4MJDMleLrbXc9KsJD4xb/4h4lQPDZR0qRKx1qFbTVkp9t9l59/z4lNGRGRtRrNOR8t1mQZqtIQR2pqMSXX64ETb7s2ZUGKNrK7RMRDnEGuFNrRe0aoxzTTOecsVu9lqtwE12uhvz+2tOXTvj1W3fJebgzI1GpCfUrWR5/TJs6t/relYul7t9efcK8Gq1SLc/Bt7TrAVPzSH91+WSlsb48tq9bjRUtDr6cM1b09xfv+tlfRWzzmae+m5LP35++/9kvHd+84znL8nzwszV442q33PIXilY5RQ2HffO731U6Qkq51Rfa6Xr97cbs4voJ/O0Zk4Q71GDRZfmmh6++fIrSBN+9TlXKzL+4ShXXoCkVzFkRfZb7xd9JSe/Q4j3m5Vf6xnfZ6E2f7coxp33mbk3fqh5c1y7CErOT5/m8pneb4hj1TVr+6h8o42Iz4z2jXOqO+bMXc+7vf5sWX86Vp7HbVS83M7YkrjuTQXXLPRTs7k+MLMwnNnq7mZhnCCCAAAIIIIAAAgiMrMBIDWIaoe1oM7xa5gBWN6xeWCHvHd6bELcG/8epxIc7VnmUiXLlZV+WiX0tc8ROcK/a8aGaPNa7ublhkrxALGUK6iybU6+nECmdyzf3xpTpc08lEh/u2dA8o+6Smubip6nOmKNXrVH8+VvllUSzNqXe3DrFeU9znahdjevWtZv2fJjQrr4TdY+Jqa5vVWahtt4ZWpu69ZIr79sjJxr+x6lY76ZGl7zmQvlnmQVcn4hXLp8wa7WJtKm5QW5RLLTM061d0GEvsXEVmwqoFaRvk9STOaTc8n7HElk2Yy7nlLqLaXqVWZnrmvcYF6FoCfTOcMnU5Zv6UppINPEESxPp15FNmLV2j5JOdJs9GxpdxhzhxmUvqZvWXmW9kkXXMLucdmGL7Fpaf5P9U28j8/Ioo/TKnewn1CjXoDXvybppfTJs2RbL3xStqT20y3CUtkhfVb2vvHhLsug9QO/2l1y51npr8Tzy9tFOvSk+U65Z6pWhooDqp9KtXBpmXOajl9zyV71hvLXZM5foydW2NmY+/nDDvCvrGpaslV1WdgvpvKlR2Q9MNaaQz5Kb/UqJTItsUL2o8m+WTStv25xuWaTVdheWD6bSm/q2rl0iPsuzNukX24mk2pWnkzI+IVl2a0opjKpZL1YtptsUxaht0vJH672WO9/rb6bvJPUNudb26fv77lXzjLnkLTPo58pTa0RrTdWNpc0pLhaqfUz74OTcnwy2t+tV5C8CCCCAAAIIIIAAAiMs4Bjh7Q3z5nId+osTI+UGXjK4YPnX0NyoTEJkmdNEy8F9003KObklsRKYaH7TcrYlb/wlExhzGCm1O9V9qxFNSF/9x3vME3ebFNrNyMwbOqkbUe/7lvOWZEqixOZ5aQVIfVk3T8ylYymGHsiwEtXdtHnHqivlEktkRIsrzfLelK2mrnQkZXV7iWVpTr25XAk5WYuhPJ900/MpoTH11Nqpz2FkqYmSjRotMqs8Y4N2G7Xz2nQ/5ltmr3DdZ22iUztuzdIN6uYtUW9wZszLlLZp9aWmlJ5IP7s2b3N2/sO1ClGW8kyat0kvtL4NPagnz06NAIf+pvFXu3XaJRO8W61dTuuxIjKVHisSa556s1ENyaXL13lT4bWgRg5522hvNqZvSBOYkRKZMuqkPVGrZs6gpN8UzLpEXydtXh7zjlRmi6tda/lW44Odmb+0KaonFNWgelnF36ybFsv77lPCvhltpvWl1C72oXo7wiy2dZ6U3qRFi0yKBvUTknW3ppRSi8Cm7ozsd5tiGS0y8mmOD5R4J2MnqU1WZVZN0ZjRvFy556Ml0Jgrz6w1lYV4s1FGM60zuMlaKdOHZfn8XmruTwbZ2+U2eSCAAAIIIIAAAgggcDEExli0qFdOvdzwSPr956Xsqb6187Q5dCfUXTmrefMBcXqY2CzmK61b3m2eUJs5nOrdsKRBi4YodzveEbOGVmSeZmL5ynwk9my4dUadEUmZMKlh3upNvfH01c0V8jxLbJolhs+kh5nEGZo8aWlY3WsWPWsm2lS+dXVm1ENWf/nazNqI9eNbG40qy0Ef0kjUUqw7w4IqfnaXp2FyjuFTfaKmymAQEYCYmi3bohLrVfhHbGuz2xjCM6Fuxq1ruz9Mr6kiU9e4I325nsl5MZBEnzV5wpWzVlmG2IiWF03UYN5XW2xi3qrN2ZpIJDS7gW7S1ywat2F9tn5mbD3TTXvr1FbvJZekhYFkhWe5LG3kci/PUmWZg3YeKwOFebYfe0SOHbuyOaXSYm1luNkEt6U1tVKpf5RyXKk16CU16jCcDOCC8nbREgc2N8+60vikKK2wNeNjllLCLJ/ZzE+xsYY8RZ80zzLQ7R+x7rUpn03xWdiwx4gUiRVz5ma3UsrGi2hQo7C5Ny3nURax3Yz2ztEPUz8+cnThrEYxnCqjHcUnxOPUd3GuWau1zpJrtybiNRtEtCWzU523123UihbFaNqIZxk7IuPd2IYGsZNM6eynetfOc6ofqJo6l1vdlyU2uUV/WG7ZZeTKM1dNM1Ii/0kAACAASURBVHMwalVwfzKY3m5UkScIIIAAAggggAACCIy0wD+JDY7spW9srdQFvn7a/e1ffSzuvP6f+x/ONiNySv2KSpyyJi+yC3y07qrZW74UE1Tv/3fLrEPZ07IUAQQQQAABBBBAAAEEEEAAgUEIjLlZrgdhwCpFCeSciDdbLkUlzpYBy1IFPlrXKEJFjskrtxMqSpXhFQIIIIAAAggggAACCCCAwJAJEC0aMsoyyWjgtdfkLYEmz11ccFyRvMd7EYnLBPBCqiliReJeZo7JD+0kVnQhjqyLAAIIIIAAAggggAACCCCQV4BoUV4e3swQ2PvWPrHsmwtuT7uVd0ZCuaCoxFlzYKEp8NG6Jjmu6Jpfhx+3g2+uyDMEEEAAAQQQQAABBBBAAAEEihEgWlSMFmkdPUqw6LIFt19vA6OoxDbyK+sknz2qXIN23R/DD08pawgqjwACCCCAAAIIIIAAAgggMNwCRIuGW3hs5T/w9d/OOi5b/Mcn59qoV1GJbeRX1kkG/vrXL4V8cOe91WXtQOURQAABBBBAAAEEEEAAAQSGX4B7og2/MVtAAAEEEEAAAQQQQAABBBBAAAEESkeAsUWl01aUFAEEEEAAAQQQQAABBBBAAAEEEBh+AaJFw2/MFhBAAAEEEEAAAQQQQAABBBBAAIHSESBaVDptRUkRQAABBBBAAAEEEEAAAQQQQACB4RcgWjT8xmwBAQQQQAABBBBAAAEEEEAAAQQQKB0BokWl01aUFAEEEEAAAQQQQAABBBBAAAEEEBh+AaJFw2/MFhBAAAEEEEAAAQQQQAABBBBAAIHSESBaVDptRUkRQAABBBBAAAEEEEAAAQQQQACB4RcgWjT8xmwBAQQQQAABBBBAAAEEEEAAAQQQKB0BokWl01aUFAEEEEAAAQQQQAABBBBAAAEEEBh+gW8M/yaGcQtffPHFMOZO1ggggAACCCCAAAIIIIAAAggggMAoE5g6depwl6i0o0VCp25S3XAbkT8CIyZw/KvjdOkR02ZDCCCAAAIIIJBLgGOSXDIsRwABBC66gNhFj0AZuBJtBJDZBAIIIIAAAggggAACCCCAAAIIIFAyAkSLSqapKCgCCCCAAAIIIIAAAggggAACCCAwAgJEi0YAmU0ggAACCCCAAAIIIIAAAggggAACJSNAtKhkmoqCIoAAAggggAACCCCAAAIIIIAAAiMgQLRoBJDZBAIIIIAAAggggAACCCCAAAIIIFAyAkSLSqapKCgCCCCAAAIIIIAAAggggAACCCAwAgJEi0YAmU0ggAACCCCAAAIIIIAAAggggAACJSNAtKhkmoqCIoAAAggggAACCCCAAAIIIIAAAiMgQLRoBJDZBAIIIIAAAggggAACCCCAAAIIIFAyAkSLSqapKCgCCCCAAAIIIIAAAggggAACCCAwAgJEi0YAmU0ggAACCCCAAAIIIIAAAggggAACJSNAtKhkmoqCIoAAAggggAACCCCAAAIIIIAAAiMgQLRoBJDZBAIIIIAAAggggAACCCCAAAIIIFAyAkSLSqapKCgCCCCAAAIIIIAAAggggAACCCAwAgJEi0YAmU0ggAACCCCAAAIIIIAAAggggAACJSNAtKhkmoqCIoAAAggggAACCCCAAAIIIIAAAiMgQLRoBJDZBAIIIIAAAggggAACCCCAAAIIIFAyAkSLSqapKCgCCCCAAAIIIIAAAggggAACCCAwAgJEi0YAmU0ggAACCCCAAAIIIIAAAggggAACJSNAtKhkmoqCIoAAAggggAACCCCAAAIIIIAAAiMgQLRoBJBLaxNf7bjz+jnu6+fMX7v3dGmVnNKWvMCBR34g+557yTOHS74uVAABBBBAAAEEEEAAAQQQKF2Bb5Ru0QdZ8tN7fr70kffOOCqmNHduf3Baei5HOhtXvHrM4ahatGHvr2alv1sOrw8fOKpU80zvO1HH/AXlUOUxUcezX32wc8szr+z/8uSZc3qFKqqqqurqZ8xcvKRpwYy6cfriUfv3yIFPziiFO37suMMxfdSWk4IhgAACCCCAgC2Bo1uW3L1VfKlXLdz4l1/M1lY5umXZ3VvF0XaWhzh0qZ1y45KVzUtmTsp+4HL6yN4Xnn+1533zgEc53Lli3uK7m2/LdrRzeu+6Jb/uk4f+d7zQ7a/PstERXCR+lPVtkkfaFVe17niuadIIbppNIYAAAkULlN/YouOHP1dOSM8dO5LxNfVV6J67ZahIPM4ZZ9xFm7ICAiMtcOTl+xf5Vnf0fG4JFYkynDtz5uTRQ+9uf2z10rV7R7pMbA8BBBBAAAEEyl3g2FERKhKPMx9EjxgWx45mHIPr74lDly8/eX3TA76b73xZ/flSf0f8Pf3BxrsXLljx6+29KQc8yuFO/86Nq5fOWfJI5IRlBeXp8U+Paof+uTebvs6wvT5zUjvDOHfmhPoL2bBtapAZf7Wv609v7/9qkGuzGgIIjC2B8htblLP9Tu9tXf70J8ouvML9852/LcuBRTl1eGMUC+wP3LvlU/Xgo2rKDWsefXj+NePHnT5x4lziyJ53d+5699Dxqvp5U0ZxBSgaAggggAACCJShQG3jtu41+mifs6dPHD9yYPuWTTsPizjKuaNb/I/Uv/sbfTySQxyoL/l1VIuwVNTNu3/9moUzJ1WcPpE4uudfn3z+3WPyrZN71y0/trJz610ZVw+MEt16//aD/lFSlizF0K+xqDs+bedDo9UwS7lZhAACwyRQfmOLckAe3bji11EjVPTMzRNzpGMxAqNM4PTrz7+rhooq3L/a2R1YJEJFoojjJ06cePXsH61+6tU39v7l1Wd/yFf+KGs3ioMAAggggAACFoFx4yc6r735Zy/tWD+zQll8bu/zIX0OzdOv/0QPFclruN7e+fvlMyeNdzjESlNm/iiw/S+hJxfUqGsd3fKLjUcs+fLUpsCRbXfq11jYXINkCCAw1gUYWyRb+HTPav92ZaCsHFWULVR0Nv724798ru+oPny0ompK/Q3Nj65a5NSuqT6y+Y7mV76U8x398Z31xs8gavcRP4YslKGoqnm/2vmo43Hl2mnHtFU7X11ep/cvfTYlJc3v54tvP/Vx/E//vHTj5yLbub/Z8dSN2uKzX+174bHOnYe/1CeoEaW5YsFtq+/90dXWIJdl3W3NJwLrt/Qfl0EFS1Znj+1+LLBFjOZVw2Q1V7gXr16v/8KjF4G/o1zg00PaIVHF3B+ZPSdfoU98svvlbV17+o8Z161VVNVMaVj04E9Xzrb2IDHn9E/3Ktf5P/v7ya+sfbrvmNJRHBU10+as/O3PZef/6u1H1hqfC9EPr1ra9sTKa43+67B0ws6lRzZ0dPXreaR/gvIV2OE4sb9z/R/eOHxM6/KyvNcufKDNn1Le/FnwLgIIIIAAAgiUgMD4RXfNefKQ8kvYkf7DDp88rI480XFYLXpt40vPNTkzqzFx3m+3rT/he/yQOFZJbP/1tqZXVxiH2Zmpi1hy+pOu9g2v6EfLYkUxTVKd84ala/656Rr1qMk8Xnph28Kj1kPrqsnTbrzjN203W0qiJXZMueMVfRKlIg+WjnfdsbxDXKVX9b3HX/IdaX9m+6EvteMzZXPr19ysn52YtSx4IuM48Xbr3c8dVTNyOI533e3uUlavumHjXwKyCXgggEA5CjC2yOE48oe71yvDinKFik7veXjR8t/tNUJFoqOcO3Ps8BuPL5/fuFm7pvrYEREqEo8zPa/vU56Y/53e062OWjrzsThVThxXx9AefafnhJkmuktMvC0fytzSxvITPbtEqEguPq5EesSz439etcj3i62HjFCRWCZK8+nOjf5F3kCv/hOMWHp4v7buoT/cfe9GNVQksxJXKIk/DjHWdM6Kx8VMN/oXw7mTn/e9srrxD+paMgmPUhCoGKf+Auc4dyxuaf6cRRexS//jXe8dNUJFIuU5Mb/Re1t/4jP6s1xbn3P63LFX713+Oz1UJFOfPPru48tXv/7+M0t91s+F6If9W/+3r3WPWQyjE/Y9smLNK3qoSNli2idIbjHHQ4RiF/3k1UN6qEikkuXtfXXNwoXWbeVYm8UIIIAAAgggUNICp19/5T0tIDJvtXHlWkaVxi96dJl24f3RN7qOZLw/iAXyF1+/nBdSP1oWeYhpksQxTMc9T/SoGRrHS8ffaF2Yemgt52D63dJlnWZZ9MQOy9xNRR4sfRJVTz7OvLd++U/FGYFRtHPK5prm3LHF3J4soo0TmWNb7v6derai1sn8/9zpM+ZhnbmYZwggUB4CZR8tOvLyP9/blRCNXTH94e3ZRhWJqErzIwfVUE7NvFUvvLO3553Ox2+7Qj1DP/aKXz1fXXDb97RRs/vf7k3pOyd2vv6puqDuxiXTJy5coF0S9Pmh9410H0S1H0zEkk+j5vID2veBY7J7wUSZ+v0n7nmyXy1MxbQlj+/Y2/vutmfXfE8deus4+e7PVli+kPTsz5w8KX6AuLppw+6D+6IH9734o4ny2m9jrOmUJU+G9kbfDb3wmyVXVzlOysQ8SkhgxvzZWrhIXE7ZuuvY2QJln7W06Xtz531vftPPn90R6jmo9OcFk9WVjr2Sc/B2xbQ7Xti3ryf0xCLtB7LPO37SLQfk1S3cKD4UoScap2mfgOjzryoD9TLLUTOz+Ymd+/b27Him1a31WeMTlJlaXSIOce6Vo/bEo+rq237VlbL6megjd6cdEqlr8T8CCCCAAAIIlKbA6d0v79MiIPUNyg1SD/Rpx8kVc2+bk69Sk5Yt0g6zE4f2W36VzbdOvvf2t+sxlKqG1m1vRw++vfudzo1rls1fsKz1jz9dkLaq+C1LHKNXXNH4x1CvOK5ec5V2fHbs1Sf/bD/iUuTBUk3DnU/t6N33dte/rNKPrb7cevfDPcYGbZ3ITFn5hjxHeNytVamu6SXxUv577+kF49PqyUsEECgfgTKOFtU4p8gT0S2fK19IV9z7e59lmKjZA3qfV06JxUlx00tv/3759IniAumrF7T96+6fXaUkOqedG3tWLNIulz7Ys99c3XHinR5t+NHk+U3iG2ziohuvUN8+vP8DLd2RfYdkBKiiQn6rnDlyWP96239Q+3KcMue2SeKt41va31FjORUzf7771Z8ucI4bN15crf27t7ct0wp/POsXUm3ji6EXH5qlBJzkNs0vv7plr3T/dJ64R+n4idNv/OmLfwmtd2tfbTIdj1IQmP3bzju1n9JORh9bMe/6GxrvDmz804HDJ4wjBWs1xs976HdP/f53v3no5pnOiePlBf9XL/ht5zrtfvWJ3X/Su6V1pbplL7zqny66yaQ56x9dWCXfOifvGyj6zxu/mC0+FJPmrPm9/oPesQPWcXNaNhXXr3/njWcfnFMn+qxzRtMzb7zSVKu8dS76h+e0fq4ltf45/srzB5VPaMXMR3e82DZfdnll9We1z1ti+/Ppo/ms6/McAQQQQAABBEpE4PSJj/c+efdy5WoyUeQKd9MNMlIR/1y/hdoVM7XDlVwVmji9XjlIcTiOvp/teCbXetmXH40eVo5BHI6ZD21qqhdlEbNCykkhf/Pb1U2zs503VFz/+Dv/ukYeGE2c/qPnHp+nHVR/0mPvWKXIgyVxVcTu8KaVHuXY6trlHeGXGtVCnTu4ccsnap3snshkF2ApAgiUuUAZR4vUQUPal4Dj82fvfuZIls5woGe/muSKpam3Vxj/w2Va/F07N7566Y3a2W/frgNGTid2vasFi6Yva54kF09cfIP6s8eZI5+oYaHTH38ix2JUzZmrfAUe3a+tfmS/eos2x5R5S+TO/8S7Ue3bsnbpQzfLr0/jUb96/QLt2/GTXnPr6vtVi36x5ppxRlqH48DuXq3e7pWr6y1vyGDW4oaUBbwoAYFpK7tDG5sbpmjHJOeOHX53+8af3rvwZvf3ltz5yx1G+DF3VcZPn672XnmlYkayyXf+i6WfXNug95mq+Y9alk+6Qj9uOpmZR91t/kVGtFLZQP1D92ufoJPv7nw/Y5vqAqPPV8y5c3FKl59510LtiGj/u9bwbI6MWIwAAggggAACo00gsX3FHPf1xr+bF93za+WGaLKcU5o7O9QpO+XPU+qjanzKsYC+2PK3arx2PGxZNuinNRP1zI4f/uRs4WzEnEopI3HmzVN/WhY/+H5+pPDqjiIPlmqXPph2W55pa1Zer27n5J43Dsln9k9kbJSPJAggUHYCZTzL9clDBx0OcefOzumbl8t5i45337v6qt3PpM4THP9AC9iIcNLCOc9m7x+JY3ERZnHUN90wpetVEc851/vOfses2TLx8S5t4qGKuc0+7Qtu4g3uKc8dFemOHog6VixyOKK9yqVq07+35tpjew997jh8cL/j5tmOE9H35SVyDsfkubcp58Xvf6AFnqpmzNPP15UE8r+Z4gupR9RITDfz6RHHfOv749O+OM1KXTVXKaVci0dpC0yc/eCm2Q86Tn/1QbTn3S4Ro1Rn+RFTDPVsurene9G/vLTenHz6xOE/bXry5QPmLNcF6l5brwQ69VTKGDj5okqMTcr2OCk/EdYumC2RwzFj5jSHcq2lMp7u2tRgkrqK0efPvbvm+nezZ3Pu+HExiCp7SbKvwVIEEEAAAQQQGJ0Ccg7p+oX3tt0vRtBrJTSOOxxnThf6xj9zWg7XH6LHxAU3XvHsUTmh5/HX/fN21UybPmfBXQuXzrxaufts5kYmT087+DFLnpnY5hIbB0vWnK6dMc1xUJ4vnDkqfiycebqIExlrNjxHAAEEFIFyHlskLqNpfmJN/cQFzzwxv0JqnIv+uvkPWkBG6x/mrxnagmx/aqcpwRzHpDsalcFBjnP7dqujHb56o08dDVQxZ6nHWLXutnnqNDHq1EXapEVXz5s1cfYMmdO5T6LyB4gPDqllqZu1IOVcXZwYV+k/dRh5Wp6cPKaNQLIsS3lqVqrwTzQpK/Ji1AuMnzRjwV0/fbH7nb6Db+986o6Z2uxAid0/CehXsB/duMR378Z3U2a5vjj1mlinB4jOnLiA2bKq6uoIFV2cFmSrCCCAAAIIXIiA+NVWmRxHnSJH+b/vL+9s71xthopE9s4rtAvuHZ8fyn3tulKOE4ePaNGiadfOuJCSqevW3dX5QvNV2lG3+AXu0BvP/sS/YM6c+Xc/c0jErUbiUeTB0sRa89jqhJw2wEYZ9RMZG0lJggACZSZQxmOLxD3sX3lQvSZs1m9eWvbJCjk/0fGuX2xc3G3ebcH8TeCKB97512Z9B5yjl4y/ren6px4RA3zORfd84Jg94/jr+9TATc3iZdZBPHW3zZnyihiFdObQ/mOO8eqkRbXTrxnvqJ91dUX38XOJwx+fdpzWJi2qm7cw7YcKx+kz+X43qZmif6fmKKZZqcI/0eTIgsWjX2B8ncf/rGfWIz9YvVd0l3MHRQRzwY2Ow+0/3S46unhUXNX6L08sukYbHnTkD8ualeneR7BiJ46L4xjlUTVRC2vl3HrFDRvf4wauOXl4AwEEEEAAgbErMEvM1aDcEOZcn7j18OzcE11/1b1b+9m3ZvrMAkft9rjGTX/wub0Pnj6y/53dr7/Ts1+7OdqZw90PLDz2+Dsp153Zy7DYVMUcLIm8TyTMYysBcFr5PVxu086JTLFlIz0CCIx5gXIeWzSxxhyRUL/6yWZ13pbEdut9BCy/ZvRGThfuDjf65iq75TO97xwSo1Z7v1RWmbyo+eqUdSctmatEdI4f+uC4OmlRxdVuGROaNW+mTHj00KdHej9QQkK1cxerIS2HQw4uVR5nDvR8rD4z/+/t6dde1F+VHl0yUynPnDOu1r47Pu1Tx0ClJeDl2BGYXK8OfBMHDKfPip7Vs18bxTOz7bkmPVR0kaqrj55zVNVPz3FIV6+N23Oc+6Avo89fpGKzWQQQQAABBBCwJ2AGL2qm6Ack9ta0php/W7N+6+HeZzbKAfhZH6d3P9atja+ftqz5mqxpBrdwfP3s5Wt+/69vv7evZ9sq7Sj63MGuPTZODQa3QXMtGwdLZmJx92Rj2opp8tiq2BMZa1Y8RwABBBzlHC1Kbf76B196XL0d2LmD61cYM17PX6TNxOv45PmnD4nT7QKPOc2LlVESZ/bt/nP3XvUrS5/f2rKqfjHakQNbtEmLrp+tvO1W5sM79/47rxxWJi2qm7PIiP3ICY/UPE7u3LhD/+lAWXLkmQ594mpxRZtlQ1mfzlqk36MhusWoqZryxO5detQp66osHIUCZ0+fkJGgbI/T+3q1H9kq6sSd73I9zn6yu1edJCtXigtdfvz1zt0pXdZx5A/PRdVca25Yem2O/J03zNUOLjP6fI41WIwAAggggAACo0TgdGSfdhhSNcVp/khbfOk8v2hVZ3twiJ917++KZx72nOj95Qr9Zmq1jb9aoR0+FL+p/GuMr19+m1YSx8ljQ3zsVOTBUmLn5rdTj62ObtyizGHqcNTcuET5AbrYE5n8teddBBAoNwGiRWaLj1/w259rt4+XM17vVX8vWPDgHfrp6rsPLHl49xGxWJydf7L/5UDjD+RNHOav1VKqOU2/7QYl/ZndT8pL28Tj6kXK7T/Vt/X/626cJZOde2+vcsY8bbYW4hl/zdVy+cl39x6WSVMvQ6tb2bZQu2Ln8KalywK742fPnj526E8/v1m5jE5Z4Y6f/bDwt/HsNrOmzcs29H511nH6xOE9G+75ge9xMeE3jxISOB26Z87Ni26Y775+4Z2/3Lb/4xMnZMcVXVR0jEDjkqe1G6jWLWueLZZPm65fpnio/eHdX+n9Z45fuzxt+Cp+7uDjC5es+5O4D+DZ0/EPulYv0S98q3A/dL9+3JW5+Wn3rrxeGwkn+vwdz8i+Kjpr/IPdf1h1s7yLyg2Nm7UD0cyVWYIAAggggAACIydwZMcDd9+/bu2GrvePiyOMw3sC9z6p3MjFDF4Muizjb/vjr9zqBELnPu1YfvPStTsOfaUekysHPD/w/axHHT1dMW2lmJY064bOncjxyPGj2+metUvm/2Dh/GWrNu75RKYRR8u7Ht6i3GxMXNJ/9Wx9+H/WrQ1iYZEHS+eiv1vk/XnXx8qx1fs7Wr1367MNXL9mpXZZQ7EnMmqpT5/IN+nFIGrGKgggUJoC5TxvUWaLjZ/f8dKnS5XIi5jxuvXPs14UkZd6/yu/Obr0kYNyr3ny4OMrbn48c0Xrkvpl86d0bzUmmq74XnPW8E39wrl13fopuuVKnPo5M6u6d2u7aMtlaOomrv3Fiz87fueT/eL9c8fefXz5uymFqbnhyW3+7N+P1hKK57KmnzeukHdwcxx742e+N4z3a2pqTp68gCmHjYx4MjIC46+eOcXxiWzIM0d7nlvT81yWzVo6xoIHlz0bVeKY4ojEN1/vPxV1dRXHjw/jkUFVXe2544m+jf6+jSkFNO+Pm7LYfDH+xqdfOHJH8yvyos5zR7t/5us235PPCG6mevAKAQQQQACBiyQQ39N9SA6N/7Sv940OaxlqblivBy+si4t7Lo5d35i48Se/2H5YHgUf7930QO+mjBxq5j/10m88EzOWqwv6Oxb6UgpmpKtZ8kL4pxm/XZ05/tVJOVfomf7tj/i3G4mVJxXun/9M/g43lI8iD5bEbT7EfWHf67jnvdRKTb7zJcuESsWcyMhLHKIywHemZ7W7R61abeOL3WuuGcpqkhcCCJSOQPmNLaqbfoXyy0TFlHp9lIW1ueQERuoNy8y7g4vz1b3vbLhz3hU12iAHZYWKqpppN7S+GNr7+/mpg3nqmpuuMrKsWbxinvEi5YkcNKH+RlIxbUnjtcZ7Mxrv026+UDXv/nszYj91P9y0O/TEnTMnV5mFqaiactXSNZ27w4F5lqJMn32FkmnVtOnqlEzGJpQn9f7t+7atX2BWqqLmirnNz2zvXqUOsKqYPksZwpq6Fq9GncC0ld3iKvoND9z2vaunVFl6hfjRq0p2jEdf6rF2jPrVXTt+PneK3nv0bryzbVb650LMua4tmpb6UZmiva66YnqdlWOGe7rysup7izKOn8bPe2L7o98zNivKNmX6kvU79m7XZppXVtS36NC3oOZe/+CrvTt+vnS6tc/L2k2ZuezxtBysxeE5AggggAACCIyggPPBzhfW3DDNPFwWBxni2HKDOECdbTlAdRhf8+kHEoXKOn7Gmpfe6dn2q0ZxTJ5yxKOsWPW9J999I0uoqH5h43T1iDtn/hWTJmeLMNU1v/r2K79ZNneadWvaUffOZ/Tjf/3opSL16EVuzKkfMdVfpR0x5Uksfsy1c7BkVqJq7u+3rZ83WT+kE0dGk6++7edd+15dmXr6YP9EZvwPn3lhTYP1aK1m2qyZTnOTPEMAgTIT+Kfz58+XbpW/+OKLukkp56ujoy7vPzH/f7+jjNMQdwa13GFtdJSOUoxigeNfHR+VXXqwZD2r56xXrrWsa3pp50NDPWB7sKViPQQQQAABBBAoJFAqxyRHNy7RrsCqcP9qtxHEKVS90fN+kQdLe1uv/7VybMVZxuhpQ0qCwMgLiF301KlTh3u75Te2aLhFRf6Hew5ol/RMuaEpNbo/AltnEwgggAACCCCAAAIIlIfAtDXbfqXdqCb666X6xKPlUXdqiQACCAyrANGioec90LVLm/fn6iZ9huyh3wo5IoAAAggggAACCCBQ9gJyOs5l6sUGZ6Kvpt2Dtex1AEAAAQQGLcAs14Omy7ViJNSnTryba37rXCuyHAEEEEAAAQQQQAABBIoVqF/9yotX9R0755g4Y1G2KYiKzY/0CCCAAAIOB9Gioe4FPa+/pwWL5vlyzG891JskPwQQQAABBBBAAAEEylhg/DXzF3HrrjLuAFQdAQSGQYAr0YYadUq9cgOyqqseuGvWUOdNfgiUmMDM2er9AXPcmK/EakNxEUAAAQQQQACBIRYo8mDJuAVt2q1ph7hUZIcAAgg4HNwTjV6AwCgSKJX7j4wiMoqCAAIIIIAAnLbWogAAIABJREFUAsMgwDHJMKCSJQIIIDA0AtwTbWgcyQUBBBBAAAEEEEAAAQQQQAABBBBAwL4AV6LZtyIlAggggAACCCCAAAIIIIAAAgggMPYFiBaN/TamhggggAACCCCAAAIIIIAAAggggIB9AaJF9q1IiQACCCCAAAIIIIAAAggggAACCIx9AaJFY7+NqSECCCCAAAIIIIAAAggggAACCCBgX4BokX0rUiKAAAIIIIAAAggggAACCCCAAAJjX4Bo0dhvY2qIAAIIIIAAAggggAACCCCAAAII2BcgWmTfipQIIIAAAggggAACCCCAAAIIIIDA2BcgWjT225gaIoAAAggggAACCCCAAAIIIIAAAvYFiBbZtyIlAggggAACCCCAAAIIIIAAAgggMPYFiBaN/TamhggggAACCCCAAAIIIIAAAggggIB9AaJF9q1IiQACCCCAAAIIIIAAAggggAACCIx9AaJFY7+NqSECCCCAAAIIIIAAAggggAACCCBgX4BokX0rUiKAAAIIIIAAAggggAACCCCAAAJjX4Bo0dhvY2qIAAIIIIAAAggggAACCCCAAAII2BcgWmTfipQIIIAAAggggAACCCCAAAIIIIDA2BcgWjT225gaIoAAAggggAACCCCAAAIIIIAAAvYFiBbZtyIlAggggAACCCCAAAIIIIAAAgggMPYFiBaN/TamhggggAACCCCAAAIIIIAAAggggIB9gX86f/68/dSjLeUXX3wx2opEeRBAAAEEELi4AuMqx51Nnr24ZWDrCCCAAAIIIIAAAsMnMHXq1OHLXM35G8O9geHOfwSMhrsK5I+AISACoHRpQ4MnCCCAAAIIIHCxBDgmuVjybBcBBBAoKDAy42a4Eq1gQ5AAAQQQQAABBBBAAAEEEEAAAQQQKCMBokVl1NhUFQEEEEAAAQQQQAABBBBAAAEEECgoQLSoIBEJEEAAAQQQQAABBBBAAAEEEEAAgTISIFpURo1NVRFAAAEEEEAAAQQQQAABBBBAAIGCAkSLChKRAAEEEEAAAQQQQAABBBBAAAEEECgjAaJFZdTYVBUBBBBAAAEEEEAAAQQQQAABBBAoKEC0qCARCRBAAAEEEEAAAQQQQAABBBBAAIEyEiBaVEaNTVURQAABBBBAAAEEEEAAAQQQQACBggJEiwoSkQABBBBAAAEEEEAAAQQQQAABBBAoIwGiRWXU2FQVAQQQQAABBBBAAAEEEEAAAQQQKChAtKggEQkQQAABBBBAAAEEEEAAAQQQQACBMhIgWlRGjU1VEUAAAQQQQAABBBBAAAEEEEAAgYICRIsKEpEAAQQQQAABBBBAAAEEEEAAAQQQKCMBokVl1NhUFQEEEEAAAQQQQAABBBBAAAEEECgoQLSoIBEJEEAAAQQQQAABBBBAAAEEEEAAgTISIFpURo1NVRFAAAEEEEAAAQQQQAABBBBAAIGCAkSLChKRAAEEEEAAAQQQQAABBBBAAAEEECgjAaJFZdTYVBUBBBBAAAEEEEAAAQQQQAABBBAoKEC0qCARCRBAAAEEEEAAAQQQQAABBBBAAIEyEiBaVEaNTVURQAABBBBAAAEEEEAAAQQQQACBggJEiwoSkQABBBBAAAEEEEAAAQQQQAABBBAoIwGiRWXU2FQVAQQQQAABBBBAAAEEEEAAAQQQKChAtKggEQkQQAABBBBAAAEEEEAAAQQQQACBMhIgWlRGjU1VEUAAAQQQQAABBBBAAAEEEEAAgYICRIsKEhWVIB5wO51OdyBe1FokRmDIBOKhVq/bJXqh9sjojPGgT77tbo0kh2yjDjr+0FmO0pwusImTkVa5b3T5gvFRWkGKhQACCCBQMgIX+J1UMvXMUlC16vpRHicdWYhGZFG4RbaBy+XxtQX7B0Zkk0O5kTL+BA0lY1nkVb7RIvVDLj7nvq4hPGkui05DJUetQKTV5WkNxRJ5unQ82Nkv306EgpFhrIfx+ZLfpcrD5fa2BpVNF71ZJbOMsFfR2RSxQjLS3uRt8LbHi1hn1CQ1DiRdrdHhLFRmG2tN3RLO3GwkGEqIpcn+zuEPF8W7Wn0elz9LKTLLxRIEEEAAAQQQyC/A92oun2Qy3t8V8DW4mrrkUU6Wx0B/sNXboBwgZTs8yrIGixAYVQJlGy0Kd0UcjurqaoejvyuU59x6VLUWhUEgn0CiMyD7crW3IxyL649owJmyjrPF31ApltT6Wjwpbwz3i2QiFhLfp/5wKXzcEpFQNDYwUApFzWi3eDCccFTKfVsy3DWs4aKMTedZ4Gnx1Yq3Kxv8Lc48yYbkrVg41B9PlmTjDUn9yQQBBBBAYOwKOANR7RAv0iK/WEfiwfdqprI3KJoh1h/pCnhFMySjbZ6W1CPcZEyM9m9wNvgCoVjpjT3KrDBLylWgXKNFSrDI5W/3ynBRiHBRufb/sVXv/mhcnI572zt9LhkPyvFwtoRkLCna4cmTKMe6xS72dGpHNPFYtKvNLTaYDHcE+c4s1rGY9GqwyNve5hbakVB/MesOJq3Zxnpbx4PezIwqPR3y8DYWGv5gUebGWYIAAggggAACCAy1QGW1093SGe0PNMhjrta2iLmBSJtPjPYfED+TtQQD4pCMBwIlKlCm0SI1WORr8vrkGXOUcFGJdl+KbRWIR2PiZXWty7pwtDyvrHX7g/LL1JGIx0dLocZiObRgkc/r8wntgXDXsIeLxqIidUIAAQQQQAABBOwJVLf4PSJlMhKRR+Lqw9Pkc4pAUb8YWO+pFWebPBAoUYHyjBYpwaJatxhY5PZ5ZbgoHElpP2Xej4ZATIwr7GzxaDMGuzx+ZeKNlJSOgYhMoU8q7PLmumo1dS1eITDiAumzzGS7elpJ0xSSsxqJ0bNqt3aJMbTRZHpxB9PxBwYGRDa1TqeSWX+bvIo72+wyYb/csqczkb7RvK+TsXDAb07wLeYdbOmMyA2mPeKhNjGpjf6pbpCTKRmpDCNPUG48EfQoF5pr/1lmTrILlYgGLVtzyrmbQnGzQMqeRmSbDCtTQDuVy97FaGavLJ7L224edMh15ATmWqM4XaLg1pz0PJVgkcPt9YhBZl6XCBdFUlPZLbjIbzBNrBfD/GtMopSJaCRS0ygdMh7y642TbY8rymRtY09LIBzXszG35I/IZRG/tfGcZn9XEtrYvxfqUYqlyDYmBvPJTbnboqLPdLUosxOkX3KpamolytU39arwFwEEEChTAWXHKnfQ2R7qbl4epOiPWlet+G4U3xvq3jXb90bhL8+ivoOMswJnMXvymHIPHPEln3oxQ7xd3v7B6WqN6BUawr+FvsP0TeU5Khry71XHUB4Vjcbv1aRyoKvRutsjIlBUrUMP4m/hNrR7RCM2PjRHdYOoBauUukBZRovCIXFQX+tVrojweOXookhXOKMlB8Li1KypPRLXTpST8XBr6iWp4hSvoaFFptCSOJLGs4zsWIDAsAgoR1bKYVLWCId5jmx76/2d3ga3HD2rduukmJ+vyWO9zd9gOr74xmv1iUmjK72tLeo3Z0Or3ymvTEv/7CW7gvLCb7e/uMvxw36vPxg2J/gW8w5G2lvcaReRK9OAd5mT2iQH5GRKrWHbONaEBaHiAV9TwLI1h5y7qdXjTjsOTnT4tEh0Mtre3tbS0hWT9MlYZ2unHshKhluUCcz1qZRkwVs9rrTqORLhSMLh8DR5xfrVPp9TRC/CmbNKFyy4aJaR37eJ2LxX1DGs708z9riJoFfsb61tHI8E/U3WrmltnvzPC+/f7fUoIeVr71c+KomujrY2X5saohT5mwPSxXmC+k2hlUnpmw3p/SB/gXkXAQQQKAMBp1McIgzkGIMci4tvuMraWotDpK1B+d5QFynfGynTI9r88hSrF/wOupA9uSsQ6RSnG8loa5N5a51YoEn+LFbbEurwWKo0RE/tfYcN5VFR4e/VITwqupDWGCJhSzaJSGsgIl+73A2WxRf61F4big8MZ6wXSs36+QTKMVoUDolbh1e6vU4Fxutzi7/RUDiDKRGLJStdLUFlMjl1lpdkpNP4WSAZ9reGxLlcrTmncKy/01eZkQ8LEBgNAsp0fMrUMp2evOVJxsRl1vpU2WKeGXlcJk6Eo9pKxXR8c3iHy+sPDchPU6cczac8alv88rMXCZqHTuJlMiSDuZXeliY9nZq64P/VtWIwUbhfm987Fg3KWZWTkUBH3Fg12dUhPr+VDQFjFvCYMjuhODZVH4aROnNkbUvEmItHPEmfMLwAlMiyttblC3RF9DnHxegnOXdTIthh3d0kwqFYbUs4HpZhtIGQmJja0xmLKVftxaLCQjwSnT5/RN0b6fULd4ixkeIa+ZRIVyLUFXc4GsTIIvmo9XoEQSIiJr1OfRQqeDFNnD6ERwQuUyKU9mfjjAbbY0ljd9qvtZ+5xxWRtJiolC8Y1Q36w51NDcZ5g7kltYOnTaiUPplSgf27ELPRo5TrmGV7xTvcYo1oV1dCNmWX/B5IRiNxxT3S6hND1fRPlOhIonO2iKnFEkF/kePnlOz4DwEEEBi7Ak6XU1Qu1h/PUsUBGSxKPR/vD4cG0o/Uw+b3ht0vT7mxAt9BF7onr/R2dsjjn/42n7rnjwVaxFdDpaczEnBlqeyFL7LxHVboqGjIv1eH6qjoAlvD/J1V+bE19b+UY5gCzSCCbcrK7hbl6pNKX2uxx675N2CjDZUMChzRFHVUl79EvFuOAmUYLVKDRWqQSDa5xyviwGI2WOv5m9oVxD68PywuNpWvan1tTfKcMhGT31XiMRDskEEnsZs35xSurHbJOxHxQGDkBIwARzxrhCP9HNlWwcQJrwh8ivNZEbZpCMjpkh3G4NoL6PjJmBwJ0m8UodKnhmqtdyVMymiJGBbj9xrJ7D3xdkSDAa+rWhZaPCprPR0Bj3iSiMfka+WRVEfmVFYbF5BXKrMTdhS7MT3DfFAijdMfCne0uJ1amRzikLa9Se5P+lMPhKt9HeJgUftFSkwHLSJqlbWWPUl/R2fMUekLyr2RXj+Xr1PGppMRy2W0arDI5dUDck6vDE7FuzIvoc1b8AtoYh1mUH9rfV2xqL47rfa0ypuMmHtcR1LN1Gw9sb/1todCcojaYB559+8iQzs9Sm63ISAjoA3icgjxqG3pEk1Za/keSHbJE5eGgFEzpXMGQjIcGA/JHxx4IIAAAghoApVO+ZWpj9RPdvksP0EMJMQes9Kpfw8qa8g7KOQ8Urf75aluO9930FDsyUW8SPn9Ldbua4+p4Q71C394Gt/Od9hQHxUV+l4doqOioWiNoUF36t/2lZVObyDUP8SDxOy0oVqRvPIX66huaIzJ5eILfOPiF2GES6AGi3w+j77dSl9TQ1t/vzzp0n6S196pbQroZ11yiTyXC0a098SPEMqUwuKSD/1M0HiHJwiUtoAnkPJDlzwPjib0KhXV8cXwDi1clUxEuwJ+Magn2NTi7g+qH5vKphZvICoiU8FEk1852U4EO/tlbNYvTqWLfYhL71s7xP3e0i4H1YIMMrfqllZPhz8SbW1wtXua2vxiCpyUo85it5gXSslMXCXe1h6MmBfIaZuwFEqJjbmNTVd6/en7lIGoMrNSqMkZMpKZT+RIMPWyeC1Y5FPi2koCt9g/hUIyJuH3V5urOPIXvKgmFgNr9Da2bGAwT2u9rTK4ZTzkb5oB45WI6/ubakPBhDh3CLt8/ja/mDzCmtyS0tbT/Pt3JYvCPUokc1tHwTW0tjnTth6Nih7t6A+4nIG0d8RLce9dUbHM5SxBAAEEylRATCsoxhbJS9FccrCx3IHK2SK8XrlUHIq4XA0WGbEn91Wbr1OP1O1+earr5/0OGqI9ubggrb3f1SYuB28RGxWXoGlHQ2YNhvJZ4e+wIT4qsvG9OiRHRRfcGvJ31iGUHrLjoMwyFW5DZZ388sUd1WUWgiXlLlB2Y4tEUEicqMlJYI2HOhtsUoSRjEV2n4ghlXaTkg6BsSNQfMcX90QTtxhtFwd5yUhXxJDw+uVxnjH6RY13OFuKHi4iRtmKKW+sUwQZm7A+qfQG+0MBb21lMhEJtja5XU6XKFa2ubCtaw32ebzTkzrPTo6MKh2WqEd1dW16MuXn1PSFma8HRFxIHH3K2fuNhzqNfyzUNWAssvmk+Ca2mfHgk7kC0ai49KzaIeZsam+RM4HnmOp78Jsw17TZo8Tv3JbGc1TrY9ssGakD2swFPEMAAQQQyClQ7ZI/BKiXokXC0UqPp0G7Yl29EE2Z2Cjn2ilv2PzyTFknxwttEE6Od4tYXNnUof44JgYMt6f8MldEJjaS2vwOK82joiFrDRuQFzGJzTa0WcJReFRns+Qku+gC5Ta2SFxwJn/Vl9OppNsr4SKPJ31x3tcDA3FxuUneJLyJwNgTGGTHr3Q31Dr6E/Io0OtUVeRc113t8c6Ofn97Q7wzGC9+fmuRUSLYLj/Yle62YIffrYdbxIXp6t2x1E2p/1c2iKhVi5hvOhru7GzviiTkXNj9neKXPutZv3WNwT4Pt3fExbq1vs5gu1cfBiPuXqHORl50rmISpfSJk1LyGOgKxcQCeR+3YMob4oUMF6WOLkpPkfF6kE2ckc/QLqgVl55528UE4JFgZ3tnKCan+o7GItGMET0XutkiepStTQ3jL4+2tk8iBBBAoEQEnPJC7IFEQnx1dUXEBTbtDQm3uOg42eSWF6LVOl1F1qPQl2cR2Q3Bnlyd2bqysjKZDPlbvPpQ6yIKYStpEd9hJXtUdAGtkfXwUIctJt/0QdB6HkPxt4g2tLO50XlUZ6fkpLnoAmU2tkgLFmVnF+GiaPZ3si2tlD8iJ/v1aYyUJLFOf5f4fuOBwNgVuJCOn4z0y89HQ4PT9FHnuh4Id/U7+jvFBDuDmN9aXOcTjYscq5sCZqhIfDrlgWWuhxjr5AuI+ZL75fQx4sZskWwJk/pcOdneLLQsHu2XkWl3W4cRKhIvE9abqxbKQnvf6ZFXaGWZrdq6vhYssi6yPI+FlTC5ZUmepxfSxHmyHcK3KsVdkjvC/fGgmLnJkQjJGGPmI+2KxMwE+ZYU36Ny5eZ2u8Rb2e6jkGsNliOAAAJlLOBskF/L4rtSHpSLAbK1TT6X2IeGkuqFaNYDiAJKtr48C+ShvT00e3Jxgzblpge+oHIHkWTEr814ba8QRaQq/jvM3lGRPKwZ7GPojoqGpjUGW4+RWq/4NsxVstF/VJer5CwfHQLlFS1Sg0XiimHrjY6U5+o9bMJygl2bD49X3AvTEW/3BZRzwmQs5G/winv62FydZAiUpsBgO34yJm7wKae4FhOFea1Vl5MXVYp7gXW0doopfwcxv7XITPkmFLcQ7VI+jHLgUNDvdlkm1FY3GPa7fW3iJofGtUHJRL8Sv7JeCqYkrVXmLB7oErdETVgLW8TzanWe6v6QNse0AGjzuZpCg9hFeHxy4FO83eNtC+fYxajBIjETdsa+LSYv/3P0W6cSL1CLwTZxgWwv8G2xr/XIia+MxhMjjLSJBwROykO9HiwaaAnl0EpJnfWFzR6Vdd3UhdU+caIjApL+Bn8wmhhE66dmxysEEEBgVAuIa7DFxNQeeQ9L8b2V5UVnvED5XfJWl+Ieol2RpJgcVP4SJMNFwUA4UezQIhtfngXKor89FHvyZKilVUyGIW6GIG6i6QoE5R1nxYzXAUVK35D6NyZu+CDvteVuDSdT37H5yuZ3mP2joiH4Xh26o6ILbg3z/jAZx0zxYqZilNeKOZ0ub8E+bbPZUpLZbMOUdbK/GJ1HddnLytLRKFBW0SItWGSZBNZoEnV6DzHEIGosKvTE26beWjyo7NJd3tawuItnW4u70Hq8j8DFELDcL1S9PMu8u30xdwsVt4oqouOb2xDfpn45rY64IUbGLSOUyYvkbQmT4u1WGdvI9pCXWKU/9JKLA8pqsU5C/TCKyYia5GGlGOqdlpGIDnUFmjwNylGYyEzMWiRjOc62Nm9qykpxUzaxsriLm7ilmf5wB+KpqfK+qm5pkVURN7lXcxAAIpiVWaa8mWhveto75PxOyViXX07XY3loZdKCRV5z9n4jW3VetqLCRcU0sbGd7E/ElXd6adUr8MxmLI5T1D4RDwf9XqPxRJeSofpKb6DVmbpxd6uybx6ItFq09L6SmjTXK7s9Ktf6luW1/o42l+hMA+GAnCnL+iiuTJY8eYoAAgiMToF4UBntGQ91xUWwKNsLdVme0jvliEwxalQLFmnhophytbXL7cyzZsZbBb88M9bIteCC9+SxgKc1KmNFQW22Ii1eJA5cWtJDQuGOdvHtJh6JUHswkV4kO9+rdr/DbB8VDcH36hAeFV1wa6SbDu61dq2YOFTMPsQ548BbmQhFOQqwcQRktw1tlH0Ij+psbI0kY06gnKJF4loAsfNNnQTWaFD1BwhxxtpvLCr0xNkWjXSICXOVdOKG3WLQQthv3OG60Nq8j0CJCgyq44ubizY0dYRjkTZxFJj+kJMXKctcTcoN5tPfL/za3REJtjToUwxX1rp8HZF42Lw5mJqDtzPc2eJxmkEkmVDc8lQEtdI3Ie50Gw22WdOmpyj4urIpJHYQ8l7A8iEAxC6iPyZ+UhzEo9Lb0R9NLbs1l2Q4HBOvU2bvN95XfpYVo4vEOH5jWYEng2riAnle6NvOQKgr4HPVGq0nRcUU5bEsM04p5ZdpB79Rez3KXv4uf1hMrn5h5bG3JVIhgAACF1fA2dLiFCVw+prEn6wv1AT5SqlPZC1Ol9Vk2teYiBtlTjqaLyPx1Zv/yzP/yqnvXsieXLsEzRIrknlr8SLxo5I/NV7kbW1rkN9flbU+9fe51JLYeWXvO6yIo6Ih+F4dyqOiC2kNO3620tS2tMkfFitdhfu0rfzSEtlrw7SVsr8cjUd12UvK0tEo8E/nz58fjeWyV6Yvvvhi6tSp9tKSCoESECjTLp3o9Ljb4w53e6yr6QLO8EuggSkiAggggAACJSJQpsckJdI6FBMBBMpcYGR20eU0tqjMOxTVR2CUCiS7/CJUJKYsaiVUNEqbiGIhgAACCCCAAAIIIIBAmQkQLSqzBqe6CIwqAXG5d1NDm7j+s9Lb3j6oi7RGVXUoDAIIIIAAAggggAACCCAwJgS+MSZqQSUQQKDEBMQ0jeq0x0q5a1tCWaafKbEqUVwEEEAAAQQQQAABBBBAYKwIMLZorLQk9UCgJAWUGamjUe0eISVZBQqNAAIIIIAAAggggAACCIw1AcYWjbUWpT4IlISAMxCNB0qipBQSAQQQQAABBBBAAAEEECg7AcYWlV2TU2EEEEAAAQQQQAABBBBAAAEEEEAgjwDRojw4vIUAAggggAACCCCAAAIIIIAAAgiUnQDRorJrciqMAAIIIIAAAggggAACCCCAAAII5BEgWpQHh7cQQAABBBBAAAEEEEAAAQQQQACBshMgWlR2TU6FEUAAAQQQQAABBBBAAAEEEEAAgTwCRIvy4PAWAggggAACCCCAAAIIIIAAAgggUHYCRIvKrsmpMAIIIIAAAggggAACCCCAAAIIIJBHgGhRHhzeQgABBBBAAAEEEEAAAQQQQAABBMpOgGhR2TU5FUYAAQQQQAABBBBAAAEEEEAAAQTyCBAtyoPDWwgggAACCCCAAAIIIIAAAggggEDZCRAtKrsmp8IIIIAAAggggAACCCCAAAIIIIBAHgGiRXlweAsBBBBAAAEEEEAAAQQQQAABBBAoOwGiRWXX5FQYAQQQQAABBBBAAAEEEEAAAQQQyCNAtCgPDm8hgAACCCCAAAIIIIAAAggggAACZSdAtKjsmpwKI4AAAggggAACCCCAAAIIIIAAAnkEiBblweEtBBBAAAEEEEAAAQQQQAABBBBAoOwEiBaVXZNTYQQQQAABBBBAAAEESkkgHmr1ul1O4+EOxFOKn4y0usWbLl8wdXlKIl4Mm0A8oPC73F5/IEwTDJszGSMwwgJEi0YYnM0hgAACCCCAAAIIIICAbYFIq8vTGoolkrnXiARDCfFusr9zBMJF8a5Wn8flD+cuTpm+k0wmYuGg3+P0tEWzNVY85Pe4tJify9PSGRkoUyiqjUCpCBAtKpWWopwIIIAAAggggAACCJSbQKIzEBKhh2pvRzgW1x/RgDPFwdPiqxULKhv8LalvpKQaohexcKg/nswWDhmiDZReNs5AVDRNrD/c2dRQ6XDEu5o8gVhKNWKdXhHzCxtuyXikvcXdEoYxhYkXCIwuAaJFo6s9KA0CCCCAAAIIIIAAAgjoAv3RuAgDeds7fS4Rh8jxqPR0KOGK0AgEi3IUgcWOymqXtz0U6/JVOxyJYGunOXRoINjWHkuaIb9YOOAWrSkuIGwNA4cAAqNWgGjRqG0aCoYAAggggAACCCCAQHkLxKNyjEp1rau8GUqp9u5WZaBXLBIxSl3d0u73toT69ZBfpaslGGgQbycj4aiRiicIIDDKBIgWjbIGoTgIIIAAAggggAACCJSiQEyZ69jpapKXjpmPeLucAtnpao2Yy4bomTq7sjH5tTN99mtlM2qiFjmIxTJzjsvjV+Y6spYkHmoTMxLpM+s0eFuD/cb4GHNT/ohcJ+I3NyueKdnL5Uq6BnEdVjLa2eLR88qysaQYYOM35+52pc3ko+Qj6pMMKxN4C9WuhMizzSuzFGN4ZBDNfAxEzI0503IyU43ss6T1aj1XW6cSHjKKUOluqBUvkgOGsPEWTxBAYJQIEC0aJQ1BMRBAAAEEEEAAAQQQKGUBVyDS6akUIY3Wpi4jXhQLNHUmHI7allCHx3blwi16KMYTFCuL65o8+gL51wjN2M5QhCWiqTPnJOPhVo913hxlMu0uc0ai5EAsFPAN7kqpgXCrt6GpPRLXGDI25nCE/V5/MGzO3Z3MOpNPosOnBbWS0fb2tpaWLnFBl6hMrNNyoZeI0jW0mBtzKDk1uNNmDirC6kKSJmPBNhHXElcPOp2V+TLqj8lUtS5XvkS8hwACF1OAaNFHSUOMAAAgAElEQVTF1GfbCCCAAAIIIIAAAgiMGYFKb2eHV8QI+tt8MkTkcMQCLSLcU+npjASGIyqgzq4s576OtMiRKnke0aCYOadWnyu7PyivlkpGOvVhUMmuDvG0siFgzKUdi3QFvLXVepbmpjo9cpmnU59yW/kb9OoJlb+JWCwpL7eSsynFox0ihmbdmJKkulbcFizcr03dHYtqJQp0xM2cEuFQrLYlHA+3iHIMhLqiYrOxmDJIJxaNqukirT5BbJkFXGTVIuZ4SgT9ahuY2WV5ZsblrOE47XkxUbmBTq+ylssbUG6I5mptc2fZnr4o2RWU5Xe2MNOUTsJfBEafANGi0dcmlAgBBBBAAAEEEEAAgZIUEPGikAzcxNp97TE1kCGmoO6UIaQiHt6gEoIR/6lRoNqWiL5A/k0LzdjLuNbXFYvqE+dUe1q9MryUUAa4iCfJgaTMprK6Vi9ppdPd0hnt8MrFxT9EgKw/HPDIbThqfW1NMupkbEwu9HZEgwGvq1rbXGWtpyPgkYniMfm2/qj2dYg4m8vdIBeokpVmCEuUu0sGvBoCRs1EqlpPICQjSvFQaEDPZ9j/VjuVuspS1jY0dUbDfv11lk0nu5ra+kVKXyBfqiwrsggBBEZS4BsjuTG2hQACCCCAAAIIIIAAAmNaQFyQ1t7vauvv9LaIeopL0IJFxoqGRafW2ypvw2U85FihgPHKUd3S6unwR6KtDa52T1ObX8woZMSNzFS2n9U2BayVltGeYCRtbTFLUmtHKGbcVF57O2lNVu3zu43XlV6/NVNleTQqoi6O/oDLGTDSGU/EPe3FICjjZbYnMi6Xbfkgl4mwXjTgzL9yMtzSIGNFxV2cmD9P3kUAgeEQYGzRcKiSJwIIIIAAAggggAAC5SpQ2dShjRmp9LUPyyVoQy9b6Q32h8SlZ5XJRCTY2uR2OV1ibFFkYOi3JHNMhv0uT6tllqQcm6l0WCJc1dWZw3W0MVE5Vh99i+Wk3f5IUoy36hqeixNHX5UpEQKlK8DYotJtO0qOAAIIIIAAAggggMDoE1Bntq6srEwmQ/4Wb/+oGFxUmKmyQVx61uJIJqLhzs72rkgi0t7i7u8Ug6QsIZvC2dhIkQi2h8UYokp3W7DD79ZjQGIOIfV+azZySE0iJlEa1NV5YrLtfNssKlsbo5REjKzBLyouQ0UdKSO9UqvDKwQQGB0CjC0aHe1AKRBAAAEEEEAAAQQQGAMC4kIjZdplXzAmZzBKRvzajNelUrfKWrcvEIzG+uXcP8lwVyRrwa23h8+aIN/C/mhcvF3dFDBDRWJTiUEMZHK7XSKnaCicb3Oj4j15ARqholHRFBQCAbsCRIvsSpEOAQQQQAABBBBAAAEE8gokQy2t8kKjlq4Ot8MVCGozXme7m7u8KEneRsvl64zlzXMk3gz73b42cQszdbJrscVkor8/IbecMa6oWpmZOhpoCSl3sx9M6SqVLAbCXf1ihJHcVjTod7sCYjKfYh/VPp8IFymDdoLRhJJbUVmY84lbpxHXnhczXinW7hFt2dAqx0xlPgZCIlSkXYDGqKJMH5YgMDoFiBaNznahVAgggAACCCCAAAIIlJhALOBpFfdPr20JarMVafGiRNDXkh5GEFdjhZRwTLK/vSM8qIrGA0q4SYacPOIu8uKGYkEZspAPdyBeXJYiOtQVaPI0uNT15axFsnjOtjZvWkbuVhkCcwxEWr16YqezmJvNi5mnm7zVIgvBouTgcjcFwgmHuHQvbVM2Xtb6O9pcYr2BcEBOtmR9FFcmG9vKkyTc0RkXbw+Esg7FCrfKEKJ4JEJNqWUU5R3JYsoy8EAAAbsCRIvsSpEOAQQQQAABBBBAAAEEcglol6BZYkUypRYvSkZa5WVIlkdtS5tPRl0c1Q1trekRGUu6kXnq7Qx3tnicZrymstblC4T6I35nRgGcbdFIh891IfdMc3dEgi0Nyggjkb3cVkckHm6SIaSiHy5/WMzPfWHlKXqj6St4WxWoal+TJ/0tXiOAQKkK/NP58+dLtewOxxdffDF16tTSLT8lRyBNgC6dBsJLBBBAAAEEELgoAhyTXBR2NooAAgjYERiZXTRji+y0BWkQQAABBBBAAAEEEEAAAQQQQACBchEgWlQuLU09EUAAAQQQQAABBBBAAAEEEEAAATsCRIvsKJEGAQQQQAABBBBAAAEEEEAAAQQQKBcBokXl0tLUEwEEEEAAAQQQQAABBBBAAAEEELAjQLTIjhJpEEAAAQQQQAABBBBAAAEEEEAAgXIRIFpULi1NPRFAAAEEEEAAAQQQQAABBBBAAAE7AkSL7CiRBgEEEEAAAQQQQAABBBBAAAEE/n/27i+2jS1P8Dvv7kWLAySxBhlAnF5gqPti6mVJb7KRjMyG0jyYrQGWjBGs1AbSdBzAbBiBOHEwJGJgeANtLhtwRmzEWBmI0TQC5bIXcKQ8ONQiq6YeIhHJxuJLTCUPol6umIceCtgAVHaBKc50z83vVPFPFf+JpEhKlL71IPFP1alTn3Oq6tSPp04hcFcEiBbdlZJmOxFAAAEEEEAAAQQQQAABBBBAAIFeBIgW9aLEPAgggAACCCCAAAIIIIAAAggggMBdESBadFdKmu1EAAEEEEAAAQQQQAABBBBAAAEEehEgWtSLEvMggAACCCCAAAIIIIAAAggggAACd0WAaNFdKWm2EwEEEEAAAQQQQAABBBBAAAEEEOhFgGhRL0rMgwACCCCAAAIIIIAAAggggAACCNwVAaJFd6Wk2U4EEEAAAQQQQAABBBBAAAEEEECgFwGiRb0oMQ8CCCCAAAIIIIAAAggggAACCCBwVwSIFt2VkmY7EUAAAQQQQAABBBBAAAEEEEAAgV4EiBb1osQ8CCCAAAIIIIAAAggggAACCCCAwF0RIFp0V0qa7UQAAQQQQAABBBBAAAEEEEAAAQR6ESBa1IsS8yCAAAIIIIAAAggggAACCCCAAAJ3RYBo0V0pabYTAQQQQAABBBBAAAEEEEAAAQQQ6EWAaFEvSsyDAAIIIIAAAggggAACCCCAAAII3BUBokV3paTZTgQQQAABBBBAAAEEEEAAAQQQQKAXAaJFvSgxDwIIIIAAAggggAACCCCAAAIIIHBXBIgW3ZWSZjsRQAABBBBAAAEEEEAAAQQQQACBXgS++P7773uZ72bO8913393MjJErBBBAAAEErkvgd37nd/7yL//yutbOehFAAAEEEEAAAQRGLfDVV1+NehVfjnoFo07/hz/8/VGvgvQRGJvAr3/9F1TpsWmzIgRuscDv/u70Ld46Ng0BBMYgQJtkDMisAgEEEBhMQA7Rgy3Y11LcidYXFzMjgAACCCCAAAIIIIAAAggggAACt1yAaNEtL2A2DwEEEEAAAQQQQAABBBBAAAEEEOhLgGhRX1zMjAACCCCAAAIIIIAAAggggAACCNxyAaJFt7yA2TwEEEAAAQQQQAABBBBAAAEEEECgLwGiRX1xMTMCCCCAAAIIIIAAAggggAACCCBwywWIFt3yAmbzEEAAAQQQQAABBBBAAAEEEEAAgb4EiBb1xcXMCCCAAAIIIIAAAggggAACCCCAwC0XIFp0ywuYzUMAAQQQQAABBBBAAAEEEEAAAQT6EiBa1BcXMyOAAAIIIIAAAggggAACCCCAAAK3XIBo0S0vYDYPAQQQQAABBBBAAAEEEEAAAQQQ6EuAaFFfXMyMAAIIIIAAAggggAACCCCAAAII3HIBokW3vIDZPAQQQAABBBBAAAEEEEAAAQQQQKAvAaJFfXExMwIIIIAAAggggAACCCCAAAIIIHDLBYgW3fICZvMQQAABBBBAAAEEEEAAAQQQQACBvgSIFvXFxcwIIIAAAggggAACCCCAAAIIIIDALRcgWnTLC5jNQwABBBBAAAEEEEAAAQQQQAABBPoSIFrUFxczI4AAAggggAACCCCAAAIIIIAAArdcgGjRLS9gNg8BBBBAAAEEEEAAAQQQQAABBBDoS4BoUV9czIwAAggggAACCCCAAAIIIIAAAgjccgGiRbe8gNk8BBBAAAEEEEAAAQQQQAABBBBAoC8BokV9cTEzAggggAACCCCAAAIIIIAAAgggcMsFiBbd8gJm8xBAAAEEEEAAAQQQQAABBBBAAIG+BIgW9cXFzAgggAACCCCAAAIIIIAAAggggMAtFyBadMsLmM27awLFdNTv9bjqkzdetBIUU6tu+dYbzWrWL67yrhj3qjSb13WVJFl2UgRGUqMmZePJJwIIIIDANQgYzY7Fu9jsMDa93sxz3UmEa6hyzavMhFQZuN2+lVgqX27+lvcI3BqBuxktKudTUf989YraPR+IpPJDvHC+NZWDDZk4gWzE44umT8+7VOdiKpmvyIadp1PZEW6fcRJtNGbkhOodeEfTExtrKErLbgT984GNpkjbCMGGlXQxEw/5VDhQTW5fKJ4pDZB0a/EZCbpCmZbUxlSjjPUWt6MrPs9aay5assUHCCCAAAIIIDAUAU6+nRgrleLxTnx1wRPc7tDckovOSGBeb0W1aUN1SpfPEbgxAncwWlTY8C2sxtOnF9Ur6spFYTe+Ou9PFm5MqZARBAYRKCXju1Krpx9tpPOF2pSNOS1pOYMhz5R8MhMIei1fjPpN5Vzf0dYyXUJZo85Dz+mfZ3dzpxcXKqw2QZOWWXP7wqlssZbvSjGbCi/OR0ZqPtYaVdhPHxe12vZNUNmQVQQQQAABBIYh4Ixlq028THBmGAn2kAYn31YkX1KKIX+U+Tb2yGGzabmvfxSytra0QjriX3DJRedu4aJ1eT5BYEIE7lq0SC6nVt9Lf4Gp+Vj1gjqf3vDds9kqp4nQXezPOiH1lGz2InCcU1X70TdvAy575/mdwe1jOcFlN7xdZuq8eF/feDdrQav84beReYlSVfbfpuiv2xdirzMXN3zhfYmjOFeSh0a08DAZdIn5xW40bG3B9Jhko/hqxVhI+lqXHWeNal07nyCAAAIIIIAAAtchYJ92LgTfHh7FPBIwyka+NvXaz8ZWorunZduUJ5iMzV9H5lgnAkMRuGPRolIqsa9JqGgjlwpWL6jtrsBmdtMr11Tn2wnubxhKrSKRaxEo5k5lvdMO17Ws/ZKV2h0LoWTMLXOdFyfv9q5LNu5GfJ1JpM6ly1gwnYl7HUYg0OGNpXeC6ievbCLVoYf0jcg7mUAAAQQQQAABBCZUYDr4XPXXr2SzhfoWeFcCTncweXS8HfPOjP732fp6eYHAkAXuVrSo+P6XcqF6LxAJWPdau++bsNyuU8lmqjFhYwQ5/fbSYnrN5zGGAZGbPNJccg25BpLcuASah6Jpd/e0Pk8wbbOVVO/ZarWfX40ftdw9Vs4mZXic+vg4/h2JVFw2lS9UT9wZp3FrXD6m7uJ2h1tDtJk1NaaYL9nfzqYVMvG1gLeeJRmzJ5lt042pmI6t1HPumfdHTYMT1o18KvJiK6V81eF69H+mgSR7hSodpWRt1QOIy+Xx+qNpU7CsGF90qfEptUxEXoiGuu1dO4r51VZ4/BuNRoeyLTYKxeVe8EfMKdkyOxnpVzS/FmkKFrpif/ZIYuHF3V3DQs+5PgZUORtfrXK5F1balLFaZ7eprqXruNqNaWSzWda3Uh1/3TPfur5u5dIY0jOsH6Kz4eoqjX+NqtxrudiMgmlUYBlUy8TZX7kY+0I1R54O1a4bJN8hgAACCBgC+lF8IW49+9VwjHOBaqTUppn7M3JuDNdG6/P41tq009XTP8xjlZqO9no6vbf5LYf7Tq2MWt7M/wv6o0DkJJ+2NKeKCfWEEJcnUr36MC9y5deqVRRuPPbE3en0JGffVZ/bMpZrre3U88lXn3Feik07Uo1D44ToblMa3U++Nj0daaJomaghU2sVqey5/QlLvbCURqetuzJjfwlo5ZqdLLcQz+zEvNP9pdA0d8kyGGWbOtd77W1KmbcI9Cpwp6JF2lFerj/tXp90F2yaHG63BJC0QsG0l8s9qMmA2xfdrw2TUSlmor6mm1Kb0uEtAmMWaFyy+/TuI+fWCEfjQrrnfOWTgflF1XtWog8yVS7yqac/Mt+mKWfx+YVQQobHMeaQeSqW9k+bVUmrJfLjRFFulFsLGmdOz1pIhWglymGdXdtJSQdA2/xz1Smm9ykTDoRT+4XzRpaK2UTI27S/ZqOyR+8c13OuXZym46vRpiz0uNZLoYrxHz+Ny9rq4+xo56fpqG+xqR1c2lwN7+qhsUoukYiFQjunaiu00/fRZO2ApGVCkvN6odgq5dPdqM9d37yjzJEs4vL65DjWNHm9KoBULBybPi9nIlKEqXyVq1I+Tj31mcvYNO8wXl5kIguyvuPq+OvaRdP6xlsu0h5d1QumUYFlUK2oz2stmF7KxSaXAMa+UGXSVLVbaC7iYRiSBgIIIHD7BZxOaSKUO/RBLhTlh5wph3msnmxswRfN1Ebr04r7UZ9leEQ5eepP/zCPVWo+eTZEL23zNx/uZWRAOdw3nTga6VleuWIZdRdDJRcNbtfbS4V4MCkbNBPcToxgHEm9VZRpPPakop+eWlpFEdUqyhdrrThjLNfBWkUXGYnKPVWNQ2PbK1Ia1qF8ejv52kpvV8Jp9ZudXIglfh4L/XTnVKFVTpORequouTSu9+RbykZ+pkf8XPOtl5iGxgB/1WCUi5bBKI0657NGzVTKl9beAVbPIghUBe5UtOj8VB17pqeto/4aEi6X+vTi3DwMWS6VKFRmfNUhg4+SfjlBVbJJ6w8DVUj+IXDDBfTh+PTxZza7N0sqpzIaX22o7Py2PoZiaXvzqLp9WiYcSct+MtMYTDt/tBmQ/iutU6MPiCcQ3i3fDyazb+vxDEfwubqPO5vaqTed5K2WTufU6EvB1da4R+sKTJ/cm/EGN9NH1fG984fJgL6//myz0ZdH295MV2x2d23QMhmeUI1OOGOEryStupExcqQjmKkP2CMvDpsGDL8EStKbmbnvj32bqY05nk/H5mWrSqlNc3iqtL9bkBvICumgDKB2sbuTs3k383n9rr1CTixkKiVXwtnKlCtYG5GoIOOtPZqWw1EkYiRljMg9o5rZzZPd4ZSVarWmsvr6fDexe2GXDtLGAEeZmBr4/Hz7ba2Mq0k0is/4nbCp+1Bdq3BJjZIH8CV2y1Om9bnV+nZqderScmkM6WmsqWlApabBlC4vF1UwgaaCUTlKvTUVTA/lYstGVqQXWm1nkToi9U6NFVVKhfvsGtdcarxHAAEE7qKA875qjRfyjTN3Q6FcLMkby/V4fl9OLtK2OFQn68MNNaxEZf99vZ1eSq6Gs5o+Q61xICfPe3LyjFZPno3UL2nzZyOrcri/Z2r5yOH+/pScOHo73Nt9mwmfZO/461Xj9FCI/1QSnPJuZmKuRi6G+Oqeo6lVZFzFxC2tore7FdtUc6vIIa0Rferv5Gs7L5xW7KbSUG2PbFI9fqU29XLytZ3vp08braJ0rVWkwjCn1VbRFU++jd9Za60b0/9+fmWVJxHrSy6G9N/8pvxr/bZdazKt/7XtkD4Y5b3adai0/DYDavcoJlvq3CW1tzV1PkGgd4E7FS0yWP7A3S5aNO00/1ZRBZzxf5vPblaHDJ72hn0O+cKIOfVOzJwIjFKgccme0TvjzFgjHE0X0r3lxBFMH1WHyrZ7YhEV06nod5HJi3LqbVbaFtK+aQymbZ923WsTpmhemXaaCgfj+frH9kBAJZ3bqTfsVLBI2gW26UCozWjK9QXbvfAlssmYzzUtjRM12R3ejZiKipWKBf0D9acaMbHfq99AblejE2Y3+l1ZLcVuUDKPM7S9mwguqGCNPtldwfiKOtAcH1sawvcCG9JYrLaA7d7Eps9ub4SwbLb82/enNrs/mY7VRiSyyXhrb/+JX36ozO7rP2fp6d+baXMUk2xMtxTO1Pw3h3npIG0McOQMPl+QBCplc7BcT3FYf+yyvmPT+kJqfVqtTo27XKRgdnY3mgpmVS8YyxXKZeWibSelne2OHZp2BRkraltF+uq3/g2LkHQQQACBOyBgdzolpKJVu7po2ytyMV67fNd/0Z1y1s/gimPKu5HdlZOZeu0IRFZVnKPeTs+/lccdTwWSaoZa40BOnur3La0+9oRaUp+6tfm1HRX0cMey1sP9jhrbuJiu3uldS6jDf4kX6SMJFhKriUI2uiL9waf0E36H+a/4sS9x2NQqSuitovPLW0WHiQFbRXbv5pGpNFb00ijovYT0renx5Gub9ptaRVLEeqtIJWZMN+fkW29fTU05H8W2c0PsJFZOpdRvp/Mb9etQaflJ4EgfabeYUk9sMk/daq95Pl4j0L/Al/0vMulL/D9yoabHZi0bUlbdW5smhy+8ULvOU185Y4eFWNM8vEXg1gl4/8zyQ5fHNWPL1XePXE5FX7wr9S5C3TZf+oBUw1Va6WjnZ+F45jT1NDR/lDSWtq8EH8Vz+/n3qdJqSG/rlVLv5YapGX9IGmD9TnLrfeRtulC/y6y6fLVHtHo3HQx7N8PZXHTBnfCuRp4/9y3UGpD9rkyfvyuUPofcVf/1Rirb6ApeXY/plzY1kpoerDG+mvI9b6Yt5/Jl+XL3qWu3urj5n7p9tnpb/MV5vZjMcxTNt9EbXywEV3Xv2mwq5lh73fjfKL7GZ4O9mu+6vvGXi00KJrbxy+xpyVQ91KaZ315WLrZcTt3ddxz3uOKtLPqtf9178bUuxCcIIIDAHRdwqc5Fp+pWNJdN291VR9ms3LHuk/iFfiPafZd6XkZtcqzGAqbfQ9SvLqn6Tyhy8lS/gaSfutK1+U3/TSdP/dOubf5cTv3SdeXDvSv2q2/ynq+Pk4GQJOcI7lRbQ6ZsDfGltIqieqvI0uQwn+emg2u1VtHPvat/etVW0cxKzNyAsZaGsWG9nHxt9/z6T0rGEvbWVtGVT77t2zwD0w+vsWTKQk49uWbKF2oZaXfFa8vu6zE/U+eHrrXXlCovERhA4E71Lbo3owLT5XKpDVShoKK0arg8JgQQuETA0feD1+SZaMHN7DcSBNKyO/WmnM0X8stOWdwxhu2xlXZ3ZD+Uri6mU+AlWTG+ltvjrAMStV/K7kvmtuXWM3vlPJuKPl30uNze9mNht1++v0+LSZ8MaWMaNaDD4nabKSg9fc8SxlGLWG+QbZ+I/Z78Gmu7KFvbhPq8Wqkon9rvqaPfDZ3GWy7SiVsVzH5LqKhJ57JyqfVVa1qMtwgggAACAwtMu+RuXltB74GbzeSmvF539Y5142ddfWCj3lLv5eTZW0o2rTqSY4+zd57NvpoIGVcaU/5vLL/MdV5mkG/UkDeWAYnaJ1I9+zqmKqVaq2hx1K2iS0++0iYyt4qmW1pF1Q7J7Tfplnxafcxxm8FTXJaBu27J5rIZN1rgTvUtmna77LZTLbdftC00XY3md7NyQeXwWPoS3eiSI3MIXJ9AuayCOn2v377gnrHlz1Ur0FddWo11vZMovn+bD8U9xfcpSbff8a0lG6VUQj0RbGo+ktwILdQaFnJjuvEILXNG7R659Sxok75OmffvEzvZcxmlcjG/edQYT8k891VeZxL64AAO/+Yv4j459OiTPLzCeN5a3ynLIErNAyeZ0pifd9l2j/NyW9pqUwfy6m+z8z5189fNncZXLrbMhl4wM/7N5DAKZiQ/Kt7cgiJnCCCAwEgFnOpG7PK5/LBb2MnKbe/feM4XE+m0trKghhZ1OPsd5Efuz882jTo4aP6HcLg3Rra2T01pld1wyFfraj1ojjotJ62i/T5aRYe1VtHPt7Ml9YSQ/GZuBK2iG3Pybds8rFn2U8qju+nE6f4Dady2a20XSm27kdeyz38Ehi5wp/oW2RZ8agC88+2YaZwURaqlE2rYXudP+u7SMPQCIUEEbraA/Z7EPbTjgjTk6lMhubbTy8lLyx6r2dzmocOMsa7LmZ28LZ+UZ2AMML619A7Pqa6B06uxRqhIMnmu7t/qMElfp0Asmc0fqUEHtH1TdyfTAppNYsiDTsXcsbqtaf5PE/VQkbwtXXTJVIdVOb362NjZjNm8aV551KOKv2Xj1sd6SWs78VYfNXylKYjUtPxNedtTudi0K5SLrVYwEWvBtN6ud6mJCtHZbEdp09DYly7DDAgggAAC3QScHrnVTI2jl0kf2RYCPseK/74tt5vWCkU5Cd739P5LlZw8VaO/68mzW05M383P35d3R7tXO9zLA9r0obL9vzjekSeIaNlwdcRr05qG89JoFd1rbhWpG/M6TMbZ9/D4SI28V+nUKuLk24Fv+B/POKTytnlucFq/1fL+vBr3kwmBsQjcrWiRzRdRQ5nKEyy94XTBOOZphVRwPpqTJyU9ivT3yO6xFBArQeBmCXj1kGsx8eN4Xu1BWiG9Nh9I6A837ZpRrZCJBtQQ13a/tfeLfTX4aMp2kX4bSe7Ks9j6H99aVmvch6VCTvpeLR2HUmteT1yNd2CeMmve1VjqqFi/X0srHef1MJecky2TcU9qeTsSz3YJ0VgWaX5j3Phqy++mjRQEILbqfioPZet78gbUg1SKiR/5Y5nqcaslDUcwosfCUyv+Wp61UjbmC8g4mjI4QvQmB4t6LxfbPRWstOXiodoBvAXi0g+qBXNsLpgV91MZr7rfadov1zDSqg7Pr6WOSldpRPe7ZuZHAAEEbqiA3OorA1P7Ngoqf9U3xgO/q2+S6tedbpPL4ZCRizLxnWxFxkiUX4JWAhIuSsXVLyYzfXUtkpOnnDKKCV+g88mzW04a3037JQ9y7R6eDw98uNfSoYjcxzATTCUWbK5YUl1zyIjXzb/xqJUWkitu9awtbyQz2KlF/2HPdmFpFS16TI8ZMTYts7a40twq0n/VM98Kps96u06+jefDqGfpNU19PB1G7veTZ6J5/JfWaYO7r78La/oVaybsi2WrDQxpcYe9+hWrNxw0DdfVV7rMjEDfAnfqTjTRccaSkaOVxOmFXLlmoiYu5/Pt4dMhiGUAACAASURBVHe6NKXPSwSuV6Cl3616PLqRpX563cpT5iPBmcz781Jq1ZOqbpL9fmRlOqGe3tA0NdZR+0J2tJZHRsggftPyO9buvuyga2vS16ftdJ7yuWorrM1Qy7k0KKd3d8vnpjzJLFNT9kr1uSrVBSrn+Z34053mMYmdkeZgil2CVvFwpnKaCi3WV9r9XrBanmr/p4NBdyJ2LM/pXXQ1DjVT9qmK1ndcwvtNwp8N75ZPd8KBndoK9P+NLvbq6bwBCYNfWPIsM9kfbf4q2vuPsZbku70ZWo2SFniv5WJbCAdndpPnF9lowFNXrVWDbrltfKcXzNfHmrVg9PsC+i0YRygR2V1JFC7240/3rbWqvzw1cscrBBBAYJIFiil1R7k8FnKnGI3ZUr+svYnIG+Mb+RfqemeYU/rxpLK78lOHd1P/oUPCRa5EYkc958E739fZzBvfUCfPi0LLybO/E7r86CKH+7R++RB/mhnkcF+I+9R1viOYrI5W5Ir9IpgJpM5TK6H5nHW068xmQu+cbDvfTaQiPuMpIPVaUYwv+tTvQPWpVG8e1ZsE0iq6t5u+aG4VtbRAKqXj9q2iiC5fXwUn3wZF45W6309F80471OmWZpKt3iqul1QjteZXcsWqV5DiTmjR0vK751cPiWuenfcIjEzgjvUtEkdXaDe7HfO79EFh5b393v1AbPsoE61eOY+MmoQRuB0Czmg2s/FIdZGVaWrGG0ke7oa8M8b7Tps4ZXe6VzbS+bY7mmeteg/o/ZUV+a1tgGkh8atk0FPfqWfuBzYyhd3Vpp9efJvpzaDXOVXP6pTjvl/t/aGW5qfEXrLJiNdpr8/bd67sKzvi5Kye0eXpqiJ1dLwx0PBBdl/i6FDlvVt+7L6NXEbfwGpe7U5vcDOTv/Fx8D7KxeaMSO3z369Wv74LRS1gX9ULplqyUjNVweTlt94BJlcoLeOmXy0/A6yWRRBAAIGbKeAMBtUJ1elfkX/O4E/Mb4xvjBm65d7pNJ7KoPcsUjNOq5vR1HTP2XK21j/v+EdOnjn95Dl15atruXxQh3vXJa2dtlmRW9BWUtKTeSb4C9PI1qp/kbrhIRsNW7sQ+cIRtzpF2Wf8g971sLCRSQbdem9cSWhqxuVXraKVDq2iOo5dmk/tW0WcfFtLVjp1PxI6+/3L63Trwj184oplj1RLtNZqtRsNyVyCWFEPeswyPIEvvv/+++GlNu6Uvvvuux/+8PfHvVbWh8DIBH7967+4i1W6lPQtJoq2+W/yqdV6o2VkyCSMAAIIIIAAApcK3NE2yaUuzIAAAgjcAAE5RH/11Vejzsjd61s0alHSRwCB/gS07bCEimz3/GuEivqTY24EEEAAAQQQQAABBBBAYDQCRItG40qqCCDQi4AaZX7haxmOesoXjw90L1Ava2EeBBBAAAEEEEAAAQQQQACBfgTu2ijX/dgwLwIIjEzAOkyjI7jDmH0jsyZhBBBAAAEEEEAAAQQQQKBPAfoW9QnG7AggMEwBNaTixuGhadzHYaZOWggggAACCCCAAAIIIIAAAgMI0LdoADQWQQCBqwo4Y4eF2FUTYXkEEEAAAQQQQAABBBBAAIFRCNC3aBSqpIkAAggggAACCCCAAAIIIIAAAghMqgDRokktOfKNAAIIIIAAAggggAACCCCAAAIIjEKAaNEoVEkTAQQQQAABBBBAAAEEEEAAAQQQmFQBokWTWnLkGwEEEEAAAQQQQAABBBBAAAEEEBiFANGiUaiSJgIIIIAAAggggAACCCCAAAIIIDCpAkSLJrXkyDcCCCCAAAIIIIAAAggggAACCCAwCgGiRaNQJU0EEEAAAQQQQAABBBBAAAEEEEBgUgWIFk1qyZFvBBBAAAEEEEAAAQQQQAABBBBAYBQCRItGoUqaCCCAAAIIIIAAAggggAACCCCAwKQKEC2a1JIj3wgggAACCCCAAAIIIIAAAggggMAoBIgWjUKVNBFAAAEEEEAAAQQQQAABBBBAAIFJFSBaNKklR74RQAABBBBAAAEEEEAAAQQQQACBUQgQLRqFKmkigAACCCCAAAIIIIAAAggggAACkypAtGhSS458I4AAAggggAACCCCAAAIIIIAAAqMQIFo0ClXSRAABBBBAAAEEEEAAAQQQQAABBCZVgGjRpJYc+UYAAQQQQAABBBBAAAEEEEAAAQRGIUC0aBSqpIkAAggggAACCCCAAAIIIIAAAghMqgDRokktOfKNAAIIIIAAAggggMCdECimI/5Ft6s+LcaLlu3WslGvfOleTVk/t8zEm5EJFOOLit+96F+LZyiCkTmTMAJjFiBaNGZwVocAAggggAACCCCAAAI9C2Sjbl9097RU6bxENpU+l28r+eQYwkXFnciKz72W6ZydO/pNpVI63U+FfS5f7EhrY1BMr/nc1ZifxxdKZsttZuIjBBC4OQJEi25OWZATBBBAAAEEEEAAAQQQMAuUkvG0xInuPdpI5wu16TDmNM9j8wYDM/LBlCcUtH5hmWtIbwqZ3eNipUvsakjrmaBknLFDKZr8UXpzxTNlsxV3nvriBUv+C0m/xPz2625aMZsIeUOZdlEly4K8QQCB6xMgWnR99qwZAQQQQAABBBBAAAEEugkc5+TOpilf/G3AZe84n927kZVwxfH2GIJFHTNx57+wT7t88e3jbwP3bLbzVDTZ6DpUTsUSp5VGyC+fjs1LVKmSjUToonXn6w0AN1iAaNENLhyyhgACCCCAAAIIIIDAXRYo5lQflekZ111GmKxtX1jTO3oVstl6vqeD8dCj4HauFvKzu4LJmEe+rmT3j+pz8QIBBG6YANGiG1YgZAcBBBBAAAEEEEAAgUkUKMTVUNMuTzBtub+ouKGGQHa5o43owbC2rmisUSWvT82jX+vrMWYKqU4sauQcjzFyjtsXTpea8lFMx1Z9bo+Rlns+EEnl6/1jjIGc1VdhfTuyYWO26l89eZWcvrZ5uQ9LO0qGfNVRety+tZaVaYVMfC3grY3d7XZbR/LR0/HGi1pGH8BbVLdLkmbMr7Ln9iesN3qVs42VuZpSatrIsb3VNFM1cEXe6uGh+trtC25182ClfFH/iBcIIHDDBIgW3bACITsIIIAAAggggAACCEyigCuW2fRO2bRc9Ol2PVBQiAffS1TGEdzZ8Pa8UZlQLRTjS6nhq89TvtoH6n89NNNzgjbJVTKgj5yjGSMOVYqZqM88bk42Il/v5IuVatYrF4Xd+Gp0oDulLjJR//zTRLZorMtWKe5Hf2Remc2WCQfCqf3CeXUOW6XSbiSf0tuVsD6At+Q/8fNY6Kc7pyp7ldNkpHGjl0TpFkKNlcnaZEygBW/TyEF9WF1lVq2Qim2rMrM7nZ1vHZTv8wU114yLXmNX4WZZBEYqQLRopLwkjgACCCCAAAIIIIDAXRGw+zYTjyRGkP96Jal33CnEQxLusXs3fxUbRVTAGVPDFakpE1Q9VbpMuVSiUJnxVcfKPkr6Zf5KNlnrBqVtv92t2KbcsfpY2vnMt7FHDhmCx5iMgZzVqjb1qJd3U72uT0lfbUb9/3nhtGK/H0yqwZ8LhxteMdGyyd16DE1mujfjDW6mj6pDd+cPk+r+rUr2Z5umJ9Cf76dPZ4LpQjoo+bhI7+Rs3s18Xu+kc5rLGWvMRlaF2DQKuCQVvD8lEbawUQaWjDW/acTlzOG46ut+onLlZEBfyhOI51QE7P5aZKF5Zab32nZK5d8Z/MnohyU3rZaXCCDQjwDRon60mBcBBBBAAAEEEEAAAQQ6Cth9b7dV4OY0sbpRMAIZU96NTV/XbiYtqfmStTCMEQWaCWZqH6j/TaGZlsXbfjDj/zaf3ayOlT3tDfscMtv5qergIpN2oUdy7Pdmajm1OxeCbw8T1iiQMXMPfyVAdrQb86p12ByByIqKOp3rvWmqC/sS2WTM55qurs7u8G7EVBiqVCxU59D/Tfs3JM7mmleD/NgMSftMPYQl+d5RMSh3LFsbEkg69Ti8sR0VUSqmd+s30pnTHMnraaeUuj5NOdwrm4e7IX3b269L23769bFsTyDWba72y/IpAgiMTeDLsa2JFSGAAAIIIIAAAggggMBtF5Ab0uJ5T+z4fSAkmzoT3En2GSsaCZDDF16oBYLUClRfoVhjTdPBNe9mOJuLLrh/7l390+fPfQsO8+yNOXt6NbMSM2+0ivak9OGOTEvLKEmRt+lC/aHy1a9qt6bpb+/5Q40eOnbfc3Oi+gy5XF7+H8c9rnh1edO/YkFCMt3v/1NxOdMSV30pYb1s7JLeQlomNP+15Lq/mxOvmjOWRwCB/gXoW9S/GUsggAACCCCAAAIIIIBAJwH7SuK50bPE7o+P5Ba0Tmse/HO7L5nbllvPpiqlbCr6dNHjci+GktkRdc7RMmE1StJxc6ioOf92mylkNT3d2l1HK1uiS83L37j3atDucLZic/i/Hc3NiTdui8kQAhMsQN+iCS48so4AAggggAACCCCAwI0TMEa2nrJPVbTdtZAvdyM6F12uZPfIrWdBm1Y6yrx///PtbEkGi/bmN3NvW3r0XJ5W9zlKqURGojxT85HkRmihFgOSMYSM5611X7jNtzKI0kB358lg293W2VeyPfRSkhjZfFg2XIWKEpaeXm22iY8QQODaBehbdO1FQAYQQAABBBBAAAEEELgtAnKj0YoMuzztT+Z3gg4ZtzlcHfF6UjbQ7lgIxJKHx0cxtww7vb/TfAeZsR3mx8P3vWXHOTWU9fRqrBEqkiGIzgfoyDQ/f19SOtod6NFtfef7KguoG9AIFV1FkGURGLsA0aKxk7NCBBBAAAEEEEAAAQRup4CWDkXlRqOZ4LeJBZsr9ovqiNftnuaubkpSj9HyrCSHOXTOYK6ZtcWVWOqoWNaqy2ul42N9BGzTrWDGV/emp+RF7mehdKE2c7/rtN9TSZQzO3k9BenNlFrzeuIyylC/07Q/IOGiiuq0kzoq9Z+fxnji5mHEq6/76a9U2PBJWc5HMm3zUE5LqKh6Axq9ivotZOZH4LoEuBPtuuRZLwIIIIAAAggggAACt0qgEP9RNKdJrChZHa3IFUsGM4HUeWo1NH9kvSFN7sZK6+EY7TjxNhPaHODhY8X4oi9VMgmWUj5XSn/fy3DLpgUl4FI63ok/3WkeK9oZiTRnbGEtOJN+f17ORgOeaC2Nvm7asnlXfNO7u2Vh8RjZ1ZOZmrJXKm2DLbW1tPnvCCUi6ZXE6UUm/jRjzX1/eWqTdh8fZTbfq+5SF7s72YSvWcyWiaoQokyl3aee3aZkx5nNplXzFgEEugrQt6grD18igAACCCCAAAIIIIBADwL6LWgSu3HUY0VqIRUvcshtVtlI2NrtxBGMBPSHrk+7I2st8YUe1jfUWXyb6c2g1zlV70lkn7kfiG0fZUKtT/hyRrOZDb9rRvUPGnBaSPwqGfToPYwkBbWujUxhd3V6kORcoV0Zn/tq+RlkvZZlfOHnCuqef6X7M9gsC/EGAQRutsAX33///c3OYbfcfffddz/84e93m4PvEJgogV//+i+o0hNVYmQWAQQQQACB2ylAm+R2litbhQACt0JADtFfffXVqDeFvkWjFiZ9BBBAAAEEEEAAAQQQQAABBBBAYJIEiBZNUmmRVwQQQAABBBBAAAEEEEAAAQQQQGDUAkSLRi1M+ggggAACCCCAAAIIIIAAAggggMAkCRAtmqTSIq8IIIAAAggggAACCCCAAAIIIIDAqAWIFo1amPQRQAABBBBAAAEEEEAAAQQQQACBSRIgWjRJpUVeEUAAAQQQQAABBBBAAAEEEEAAgVELEC0atTDpI4AAAggggAACCCCAAAIIIIAAApMkQLRokkqLvCKAAAIIIIAAAggggAACCCCAAAKjFiBaNGph0kcAAQQQQAABBBBAAAEEEEAAAQQmSYBo0SSVFnlFAAEEEEAAAQQQQAABBBBAAAEERi1AtGjUwqSPAAIIIIAAAggggAACCCCAAAIITJIA0aJJKi3yigACCCCAAAIIIIAAAggggAACCIxagGjRqIVJHwEEEEAAAQQQQAABBBBAAAEEEJgkAaJFk1Ra5BUBBBBAAAEEEEAAAQQQQAABBBAYtQDRolELkz4CCCCAAAIIIIAAAggggAACCCAwSQJEiyaptMgrAggggAACCCCAAAIIIIAAAgggMGoBokWjFiZ9BBBAAAEEEEAAAQQQQAABBBBAYJIEiBZNUmmRVwQQQAABBBBAAAEEEEAAAQQQQGDUAkSLRi1M+ggggAACCCCAAAIIIIAAAggggMAkCRAtmqTSIq8IIIAAAggggAACCCCAAAIIIIDAqAWIFo1amPQRQAABBBBAAAEEEEAAAQQQQACBSRIgWjRJpUVeEUAAAQQQQAABBBBAAAEEEEAAgVELEC0atTDpI4AAAggggAACCCCAAAIIIIAAApMkQLRokkqLvCKAAAIIIIAAAggggAACCCCAAAKjFvji+++/H/U6Rpf+d999N7rESRkBBBBAAIFJFLDbpzStMok5J88IIIAAAggggAACvQh89dVXvcx2lXm+vMrCN2HZMRjdhM0kD3dEQAKgVOk7UtZsJgIIIIAAAjdZgDbJTS4d8oYAAndcYDz9ZrgT7Y5XMzYfAQQQQAABBBBAAAEEEEAAAQQQsAgQLbJw8AYBBBBAAAEEEEAAAQQQQAABBBC44wJEi+54BWDzEUAAAQQQQAABBBBAAAEEEEAAAYsA0SILB28QQAABBBBAAAEEEEAAAQQQQACBOy5AtOiOVwA2HwEEEEAAAQQQQAABBBBAAAEEELAIEC2ycPAGAQQQQAABBBBAAAEEEEAAAQQQuOMCRIvueAVg8xFAAAEEEEAAAQQQQAABBBBAAAGLANEiCwdvEEAAAQQQQAABBBBAAAEEEEAAgTsuQLTojlcANh8BBBBAAAEEEEAAAQQQQAABBBCwCBAtsnDwBgEEEEAAAQQQQAABBBBAAAEEELjjAkSL7ngFYPMRQAABBBBAAAEEEEAAAQQQQAABiwDRIgsHbxBAAAEEEEAAAQQQQAABBBBAAIE7LkC06I5XADYfAQQQQAABBBBAAAEEEEAAAQQQsAgQLbJw8AYBBBBAAAEEEEAAAQQQQAABBBC44wJEi+54BWDzEUAAAQQQQAABBBBAAAEEEEAAAYsA0SILB28QQAABBBBAAAEEEEAAAQQQQACBOy7w5R3ffjYfgdsh8Nvf/vY3v/nt999/fzs2h60Yj8AXX3zx5Zd/W6ZLV0cFu5SIGUYnQEUdnS0p33qB3nefW0/BBiKAAAII9CtAtKhfMeZH4GYJSIDor/7qr4gT3axSmZDcSLX567/+jcQZf/CDH3zxRftMU8Hau/DpGAWoqGPEZlW3TaCX3ee2bTPbgwACCCAwJAHuRBsSJMkgcE0ChIquCf72rFa/lvirTttDBeskw+djFqCijhmc1d0mge67z23aUrYFAQQQQGCIAkSLhohJUgiMW0DuD5Im4LjXyvpuncDf/M33v/3t37RuFhWs1YRPrlGAinqN+Kx60gU67T6Tvl3kHwEEEEBgdAJEi0ZnS8oIjFxA7iEa+TpYwd0QkBvSWjeUCtZqwifXK0BFvV5/1j7RAm13n4neIjKPAAIIIDBSAaJFI+UlcQRGK0DHotH63qXU29alth/eJRW29cYJtK2TbT+8cVknQwhctwB7ynWXAOtHAAEEJkyAaNGEFRjZRQABBBBAAAEEEEAAAQQQQAABBEYqQLRopLw3NfG9Z7OW6dneTc0p+bqqQDmbDPk8Hld9CmWsSWrZ6KJ86V5NFa1fXOldJqRW2LyuKyU52MLF1KpbcrIYzWqDJcBS3QWK6WjAa6pf3nhTPaKCdQfk23EJFNORwKI6GlSnxdaqGlHHQs/KUI+FxbhKtGW/GNdWN9Yzmj2xkT6vRiFgnEprdfZGnFRHsZmDpHm2/lAasg/XzwZZ+PYsUz5492xpbq7Rpm9u0GsHLxXU3OOtOy51TWVu1NO5uYfLL9b3KIJrKgVWezWBL6+2+OQtLbvt0lapXb4dzw4+rc+2++ZKn0lg5sVBuxRGtL52q+KzuypQSgUW44XuW59NpdUOUcm/TxWDMWf3mQf+Vq6YfCnLjmefcs6vRr6J+Rz9JtqaVjUFRzBz2LQFxdT7fEW+LqVT2Q2vr99V9Te/lk2EEjtl7/ZuZFSO/WVo5HNnI57Q7iVhuPFUMLmmCmct22ufcflC33wT9NgtH1/+pmP9mglmsk31yzbOCqbq18bOhXc7HZ2c+tVaMLUS8G4WkiPeI2urkv/ZqDuUVoeCLlM2tauOUdrxSI+FrSJ2x33f8/gAVdXWmlZ189rhjmdPNDJQ3I5G32dmIvnN8RVxl5Lt7auOmm3OLL2lyFwIjFagtLX8cP2k+zoOtj7qx7XP77bOno3gKse8du3g9bPXH8pLH/dezZo/57WmlU72tl7sbc0++bD3+mGbZsnZ3vr6+oeDkmbj8pD6ctME6Ft000pkLPlZ3jqrTu+WxrJCVnItApmfbUioyO4KJg8L9an5As0bDKh4zZTneXCsl6BapZhNhRe9iaauKMOVcgafe6YkSUcg6B1uym1SO8/u5grli0uiJ20WnNCPSsm4ChVN+zbS+Xr9aomnXFsFOy+k46sLa5mRlsc4K5iqX6fli0tCHhNamUabbamqKlR0z1JVm0PLNm/Qr46Fdve4j4WlU1VVw6OtqrJ54zvUF/bT+aI20l1vtDXmxqTuS9aOrZujP4XdmK0mI70J7K2/PpEj1tyzrU+1Rv3Z2daydeGlZ4/149qDF89mrd8M/13p4OOnk3KZPd9EO7uuCufk8967Jw8kSHT24cmSNcBXkt5hD+dml15sqVAREwI3UODO9S1Su+26XhBGL6MxhXCX3rUcwG9gbSBLt0ugmDuWCyTn2i9iXtVW6DDZvRuHhY0OXw75Y9NPtFoh8/VPw+nSeeptNrIxQDO4XUePNtl1BrePg20+56OrCxznJNJnf/TNZsDVJbFxVrBGjwqtdJSK/jSR0/bfpsq+0HSXDLb/ylRX289Q/ZQK1pXHpi52jTmMnhuNIuq+3HC/NaqqL35ZVU0cFhLDXXOn1BoO9aqa2RysqtoaaXVam/75OPfErhm52V/2qHmzN4Lc3QmBs0+fJbow+3JrfalbG2/pzaezN3cC5AZvpH16bvn1x5PHLx88+Vjaevnu5d4Lo1lSfvfsmYr52RzLb9anX7/4oDqCMSFwswToW3SzyoPcIDA8gUJRnXWczi7NiOGtrN+U7C7fxp/75YcWTc9lv4sz//ULFHOnkolpR7dQ0bXl0u5YCCVjbln/eXGkvdeubQtZce8CxZyKWE3P3OCq6pEMUlV7L1LmRACBkzPVxpudvZFtPIqnncDDl3pHr5ODg9q308+ePZRA0cHZp3eP56RJzITADRQgWtS5UM4+vnpcHzpu7sHyy63P5c5zX/kb60h1Mh7asqx8af2slrAxMnXT8HXG6GmWD7WTvfUXy9Kr0ZgkjWfvDgbMuOTJnNTSM4ZoqxXH5P83xl5tDJ7ZMuSrbKI+z4KMfKQdqbGyjZndPukS1LL91hFk3VHrGDIts+sf6Pds2avRLG0nqNL3JVvSLiV98oVnrWl47vZp1j6VjgyWqe2A2/pM+oaXs/GVRWMDPfOr8SOtlo7xX8YKDzfGcnb7QvFMIwRRX5UxMtN5SmW3PjVGt9XnC6bVIEqRwIIx2q57oXVlNukWE1v1uWtDR7sXA5F0Y3VqrBJ9rNNCUh/A27UYO5I0d0ILap3zzbezqFGo56tJeeYDUXNK1o0c8rseKljb+uVpW79sA1SwcvlCtmnGadxheQ0VrBj3GkUlu1I6XBtsvt0GdqtgTfWrZK1fpv221wom/fria43xnj1Sn5NZ0zmirwqmyqVamV2eBf8V6lcxHVvxeaqjUKukUnlTpoZcOy3JNVfVxj7bmM2EW9+hPAsrLYcKWcJ4skBtOG2Pf6flkNZItvqqXFabWq+q25ccC8N9HQubN89UZeoZMebRj5KqqlYPPh7fWsuxXrbOXHksx0KjwqvjkDGIWDasXtenxkG47Z7f5syiqmrYXz0yy0nA07mq6se42rFwXq2z+S5Uo1yquWlOqS7RywsjpdoB2rPoD4iYrzFourHLNjZXT9N0NKit47I9sTZfL/+7lUsvy9+cefS27gPrvTr13Blt3icf6x/YHHMO29nHF0vVNu/c0gt9lJ7GDOrV2ceXyw9qc0hr/uNZ0/f6gNl6U1pPy5i1XVpGS73Wvu6jeX2ir2J27slHS+vi7LUagXp27uWBNUdDeGdYVbMq/9qOB266iOi+5V0vB+pPzjHGhS1tLTVWa16xvjZVttonNTS3MVM75ksuZPT1SXGdSIBFJfLw1SdpBH149kC9efBiz0J8aekPwbrvJLTGfbr2Jx8kUDTbdxIsgMD4BIgWdbA+eDm39PLD57PaDq2VTz6uP36512H2K36s7b188ODZ64P66mwyHtqJvLMe8npZy96L5Rdbeyf1m1817UxGnXv4rOno2UNSMnqe5Mmc1NnB1osnjfhVD2kwy9gFGu31tg32dhcKl+SxnJGro6eJbLFaGyvFTPRHIfMQG4VkwO2L7hZKcuObMVUuq7ly90UyGN3XbDPBNeM2NPtK8JFdrqp/+d4UGFGp5d8m5ZNpf2hUw6VeZKILC6HUcXWn0S7yqac/arT8baWUfyGUyBTOaxulj7j01DRHdat7+Zd/H5hfFKuyYVUpN61MhehWn8Z38sW6YaVU2I36vNbhyrX96EpCH8BbAkVvY7Efx4zrfdmYWD1Sp2VCHl80XagNpaRdFNJRn8dSeL1k2jyPcSGkLrmM4FhT8KLpCsm8ZIfX5X0JN5jqlyb1y2fN4iAVrJCJ/FjGxLI/WgtO62u+tgqm5ZIBKYZMbRiXlg0ccwXLhAPh1H5jb1UjiCVCi1ZyWy8VXrf+wgAAIABJREFUTOqXvuNXK7NNK58OWr+yUSHaOS5q1WOISiq+Gu0rKtJcwcxV9Vy+vHJVtR2/9y8sNnYorXycemoKEsg6NP1goo6WtYOhVt+Rm/NXfS8hg+iqqqq+cK2qrgZ9U+2PheroeM//fETHQqmqfr2qVvOsFfetx3p5boIcC82VR40+N+Cx8PIzi15VM6em5kzbqqr88vrRWT8WrsayKkxsK+9Hv64fCwvxRcl5/SwmfVql0i9c+hCI1jLTMhE5XaiUaucDrXRakMN1rcBbF+n0SW97YqelzZ8PtVzMCV/H69lZOWKXz87arlvvTWN3OExfHrx6sPRy76xaHNrZ3sslS7hA23smzfmPJ7XBdFRr/uXSXJtGsYQwlmVWSctITE/LPJ9EfIyWenX1evP6waXDTOtzz60fvFuyS5jk5ZMPtapjO1l/8k6CyY5nH98smTap60tTEMh4hM7BCxUjqU1tY0JdE5QvL9vyoV4OlPckdPdEXfAY2Wphttl6upCRC6fHr9WteCpQ9ObVq8evjB/GJf1XB0bSsmU9l35tiVH+1062Xul3mtlnZ6W5y4TApAgQLWpbUtqHNxL+tz9Y3zupjhx3cvBhfdlhXHW0XaT7h9ajuTqqm47ocsh7+bEs18PLb2rrO/n87vGAh5Jph/zasfe5mvGTT1uq26N2sP7mrHsWm7/99FrdSet4vPWplpQ+RpvlLN28DO8nSMAZqw19nQnOdM33eaFQqQ+VfbjhlZqpZZP1R2EV46FEoSJDw8pg2tXBjvOZiLqxomVqXK55Fp8mju3eWCbbeHyYL+SXPayUTubNC+Z39qXp73y+1pRiUxceiV5YegT0PjZoKZ1Il6c8tdxnYm7ZwNLOpnTY0aejnyfkjquZQGPrjtKbK56ZOlp9VZmg7GsS/8rUhiVV/5tGfa4UChe26UfGuND5bX2J0vbb2srUGmdmXIHYt5nawNH5dGxeLh1lgCfzpXMunZbhSvKFjXlZIrezU3IE04VvA6psclkj3lZKroazmv1+bcsKhXx6w3dPCi96tatwlcnLp54rmFxraVO1odilfsnGVrLv03ojUK2mjwrW6MvgCYR3yyrRt776kbSvCtaoq9XOCC5rpLVe6oXLBp/NpRIFbaY2vvJRMiA1x7yBl1Ww+pqM+iUDKpnrV/NQzT1UsOkZb3AzfVTbWQ+TAXWOyP7srTlOe3kFKyVXwlnjyFBLSurXtKQU6bd+aTubUt52T6w+XHo+823MNzPwGffy6mmew1xV1S7ccdIKp+X6UNnVvfd8p7H3aplwJC3nckd1B5eCyh9tqr2yZbJU1bReVTdNVfV5QB0Ld1uOhZK4M9R8LGykVaurlqCtefPqR62WDKkPpKqeavXMS1XVK8b7+rH+KJEoyNb5rcdCd/1Y6Ixlq3XT2ClkCCDz1PyEhUvOLJKhaUdTVVXDkGvZuLWq7lqPhef6sVC/zbl2LMxGV+SRnKbx+POHyaDLLgHEcEtn1lZN05lFooHRXSkEc1JHm2pdg0w97Yk9JHxZufSQxA2aZXZuVnJz8vmsTZ7K+q1Xcw8fNL77vPexXB/m+dMbCchIhOBdvQNP6d3jFweaPkOtKbv3ZlkOUwcvW37+/bT1+kSTm4KMhvjnauO5ntbBy8fyRGVzQ/3T1jO5d6i09UKFfC6d7Mvv3ixL9j6/emzMf7L+TBK0L707WJ+7dOn+ZzBGV1bXMAfPuh7XbLZLtvzSy4H6k3OMNcmAsNVLJ/1f8+Om5cdwo0TUt9UiO6gz6xvay4XMp48fbUvvTs7ePJRFPn34UHI82zv7oC6dtE8HZ3oy/ZS+voD1T73LVC0UZ/5vuanDulzLu/K7ZX3RueX1T5p8O/fylco0EwKTIkC0qG1JacaPEPZphxx39Mk++/DZu09vltvOfrUPy1tvpOOPnDBMN63KeGjT0lgcYFp+82lrfXluuppxu2PpzfqSpFM6O+kvNXVEk6lhYIzR9vHFrP45f26oQKO9Xr2KtTbYm68te9oKu3fzKF0dKtsRiKyoqnleODeWzb7dkVczwfSOzFGrdk7nvctT1uT2r9U1dXFVnTwrj2Sxi91fHtU+sdmOUqptPv9cD6s0Ph7mK/t8/PB4u5Z7ZzCkAjDahf7ztLyq/mQ8da++ddMuX3x7OzTgI+TkUubobUCuVGTv8sT+VK2sot8yJS/U5AztpDeCC86qpXqmXXzVIV8c581X8zZPTF1delzqK/H/NuayOe6ZjhrSJ6tgmwr8Yre2ZbI+V2BTXbtq2Uz9N3e1dD9TPXZRaBu8aL4g7CXpKe9mzlS/VvX6dVqtX7YrVLCC6vZgij1eUwVz+L/NZ2V8Zb1Ep71rPlVk5/UNHHcF821kkzGfq3GO8G78merfVypKJMA0XVLB8m/fn9rs/l+okqvt91K//olcOVey+/3Vr+oZd+reTL3WOxeCm9mNK/WhMVdVFSVpirMNUlXVgS5XLcra3qvV996yDNkvcXPv5q+qO7is1D7tMu+VJl/zy0ohtdZcVWU3KKctx8JfqoPlfGiEx0JH4Nv8YS3zUlUfKbf6sb52LLRbj4U7Ax8Lu55ZZM2+jcOmqprQq+p5h6qqx8IcxrHQ1ILStpPyRDxP7LC2E0qxOLyxbTWuWXFXnWB6ncqpzYy01ryb5qSmXaZ19ZqSmq/XPfHSNKuHkKGVy6UrHOkMRreLWtd67cNjuc6uXZmXS1Ja9tnaEUfPh10Gcd6rDvPsePzqiew4ttJJycjj5zfvTmz2x1tqhtphau7xO/VzrHawd2DMVP/rePzhpN4Qn156uawO1dW0tA8qnvFgvf69qkVL6x/XH6gb3dQPvpdPEi/6qAI3J68fvz4xgk+S+3cqhNT71AgCnb1bUovJU3RMU3NopreEu225NIeMRIZ2OSDXO587FplaV48XMg/Wld0DuRdRJsezDxJ0c5h3xv5KXyUyomm6PrSU3fHgybtPey/0LI9obSSLwNAF7twz0XoTnH72cunNi4NPLx/MvV568uqFDN5TO9H0lkDzXN2eifbp04nMvvSkvxNG8xoa72W8pZdvPqr72BqfySvrO8tXbd8svXji+LhVkjP13tzjF69eyD3GfZ3R2ibKh5MoMLMSa/zobbO55t22VP1isJjNSdVy+IO9xE5Mz5lSIzZEIzuF/eh/GPfUYlietZBzJ1HMpDIbC8Z1YuaX0jiXRz+vtlS+Hp+J1gP4fHDFYZ5NXWSa3nufr8ykU+c7q659l/95JBT0Gpf9pln6een9MwnrNCaPa8aWqwVGqh/LCBSxxC+zjXuFqp9XrwmMd/M/MZl41hpdtGqJ5I5VvCv91CUjJbVMhULZ5lWt6hswOVa71C9bXxWs8TgjudVx52d/Es8UUk9D80fJagXuo4KZ6uoVjRyPwgvm6qu6esRMaY6/gskIQZG3u4XG3VJGbqzniEsqWDl3rK6Pdp+6dk3bUnvZZ/2aDoa9b8PZXHTBk/CuRJ4/9y1c7Yxby8ew/3tjTXuvw5Yr1VeS0wfT9q6YD5f1L5teWKtq/E/i+4WUBKpzjar6XD8W/tJ8LJQjgDe4Yq5MeqqNtJpW0u/bmUdrTVU1a62qoRXHbqokx8KMKxCKPL/isbDrmcXIu1TVqF5VrZXT+m7+JyaTNsfCXO5YUsvHPa54q0jxVL407oY2vuymmdNH9u+thFtX1fpJT3ti62LNn3iHWy7NyY/7/dzcrARUzs6kC4ZN+/jxs6z/4MOebXlZfSq729zcA1OWHE/WH5tOZarf0dZB7fvyp8/qMPXxyezH2kem/ycnZduSaVnH8suH5r2r8QxlWejTp8/y9/P63Oy6KYnqS3k+urTiWz9v/URuSHv9ee7V53fLz+RLuQVta1hN/9Z19f5J1y2XLRvu5YAUmXmjrUVWzXQvFzIPnz1pFNeDl69mmza4v9JvWli9VV2m2nw86Edjegb3oNljOQQ6C/ytzl/d6W/sy1ufP8qtZ3atdLD18omMGT0nfYsGHSy6B0qHY66HuS6dRdt7YR1v6dIlOs8wt/7p07snD6ZtcpP362fLczJ2XOvYgJ0X55u7JHDf00uwyCwiz0SLp5P67RaZVL3PjEPv2KNld6s3XWV21W/1j1au1MXAvNpBXrti2UO59Uz2hMJuIhSQsU0XrMNOD5Jox2WKSZ91ZJAOc9obzSQZyaTWUaQx88V5rXNU47PJfdV3BZNnogU3D7+R2xe17E49tindS1TPsbtcweRmKesIQZ0qxSUVbLj1y+5LHm3LrWd27Tybij6VYY09XuvQ252yeeM+d/T75DVVVd8exqWfS8VaVZ/rVTVdOxams9KrxXfdx8JDORa6p20yAppxLBzhwPlaZk1V1XxjhKAOhW2tqvfMR0Z9Ca02cFuH5fv8WG4V7nOJtrP3vCe2Xdr6oSs2xnKxrnoE76bn5qQMjVvRDvY+2ZeWHtgOttRgP8aNaPrARr2tV++L1Nusl81V7QB52WyXf29/8qbas8T++PVIbkG7PA/9zjHey4FeL2QsO/50ayNoiKXfLxjzI3C7BIgWdSxP+wO59ezk7OTThzfPpAurhI1ksGjL2HkdFx3gi3L5bIClpMOQ5Te20tZruanNZn/46sOnRs9Uo7PqIMk7ll9//Hx2drK39erxnB42ern08PVAOR1k9SwzMQLnxfIgeV14pD/i/LzRlccYiriSSW2rmp3ZkZ5FIxzfuuc8O+TWsyM17k8y4nfpYSMZdloGph3+lNnQh+SYCWzWh3ApVO/5GmRlTYMo1QcR2Q2ZflEdJOExLzNYBbMvuB2S0cJxo6TuegUrpRKqt559PvJtbdwyqRSXDb3UsbSbbu6q1690//XL7pFbz/KF/OG3G0GvHjaSobebn/DXMSM354vyRaO29Z4r+7xHVdVT092mdn2sa20/tWMcC+WZAKMb37r3nMqxcKd6LAzc18NGUd/ixiDbfMk6parKJg+tqsowb/XqaX6R3zB3LLokT/rXg5VwS2ttuHuibWzl0gvRFeeZVWOElkslGe34w4F96cnr5TmbDFKjyWfS0HDMzvWZftMwOvXG8d6Lvk+D1ru+6imd9D5IdXVka7uEOrSPL8xjaPe5VWOefXyXA0O+kLlC6Q9t3CK9l9LZYDcJjrmcWR0C7QSIFrVTMX9mdzx8vC4jPX9WNydrcuoyfzmU13YVEdc+126z1tM8efdCHze/ZQWW28vUEHly7mxMnz+dyZvpJ+svHqqWpzFp6vx6pckuD7h8s/f5bEtu9baVPm6dXSk1Fr5VAvdmZKghWzGfM22VPDWm8Swa0+ctL4/21WIzTvNPtcZQxLndXU3bUTe8tY5v3ZLM2D6wu7yhRPpIHtE1JaN57Db6RJlz0BTCNX91+eti7lhdGs5HNnym+91K5f73YadXHxs7m5Em9yRPV6lgWvZYbb3bbe75NukV7Er1y3acU9f10yux0ILpHHE+UP1Sp4Oh1y/paROIJbP5o5jqF5Yx9Qu7+bXYrrq1aPmCeZcrJNd2zO87bIWWzau53JZOmj59rGsZb1zTtvVjYcv41h1SG8PH6li4sauOhbLNpU7HQnUwG3Qyquq95qo6QJfJ+Xl1hsnVemkNmiFZzj4tR/5KcwmHt9uWsKW1Voj/NGXJ+tD2ROvm9FQu1kVu3rvZBw9kR5Kz3t7HT7aHj5cdTx4b4SLjRrQHsz1neXZJ3VpWOthrW0I9J6NmfPhwTv5++rjX11LNM8sjuvShsh9vnagRjLSDF9URr5tnvKnve7ocuNpJamgXMkMs/ZtaHOQLgfEIEC1q67z34uHjV1ufzozBrmUWrfT5s362kRNP8yRBFLlLa3Zu+fVJ81c9vV9aVg9xOHv9eP2zalppJx9fPJC0mptZRjfLT6+NuWRUPZlrS89TYy164MlW3vugpyS5/rT14uHc+ufGHD2/kvwsvZBnwtUJJGNnZ/ribQx6TpYZb5vAtN8vl+LyuO1QWq+NpWzcvyCPo7psO2VcmWQwlJZq7gr+xHwxb/OsPZf3ubdfx3YkljTS8a0vy6T6vrix6luT8W9Me0KhaPyS3rwnzMgYRDJK9040nm3aM3tZkT6PERuxHe8amjYZ3im24nlafyhRzwnJUBx+NXxKMeELxDKF5sNJx3QK//Q//qO/5/6j/+Kf/6uOs4z3i4ErmDyXPKCGuLYHVq03Mk5sBZu5r+pXefsK9cu43JVni+8YTxyX3TAV9nrialyXPiepX3LlXEz8yN9P/Wq/kkzYuxpLHRXrO5lWOs7ro3nJKjpN/9+/+K/+6N/7e3//H/2Tk05zjPtzr089MLKY+HFc19UK6fB8QJ4ydkk+ZCePBFQRTAWa7jOrV9Wv9WPhKMe3viSP+tfFxIov3Nux8J5+P1guHkr3fuxpyoLRnLmwVNVFj3nU+qYFOr6VY4hLnaTCC2upo9JlxdExGfnC+8go4dVGCS8E1CNBrdM9FVSy5X5uzGUrptcWAvJMNsukB56GsidKjeu5XCxZGNUbGXxZmsRLRou43Zt3Z5esek49fPdkb/3DgSZDeqqfQFW4aGtdBX3661q09HhZ9smz10vLr/ZaWtWX5ML69fRjyYP8ZPziwYutTwPWIu3js5cHmhqPWZ7jNbe+VR3xer3NIezknX5hMfvw5d5Vaqx1GwZ818flgEMfcbr84eX6gZTVYNPwLmSuWvr1R73VO5GZXmwt9755J6/VLvHgBpRl73lmTgRMAndulOuz9YdL5hhLaWtpdksHsYw/JtGhD+tPPqybqNTL2VevWo4P2qc9PTajnbx7+e5Fh56tBy9mZ5vSaqxv+dUzx967UkmiTlu1mRzPns1ubX2qvZX/D18+c3xsmmt6eWl67+CsPpecV6fl2QyWlORqyW6vPV7CmFN6V744qC8kLxrZawzHrZXO9rZe7G2Z55PX9uX1l7NNn/F2AgWK8UWfpf2qnhie0jekv/F9HcHIo7fhfXks+6IrWoWY9ke8uUS6afBm+Ymvvo6amP3R5nZIGobmyRF8Pp/4OpfeLdmmfG3GtzbP2+l1JuQKS8ekxqQei2y86zaIaWP+xqvKeXE/Fd43bBof2x/92ZolyiU7h//5o7hQFFKhxfrs/Y3GPR0MehJf5y2akvCUXav03WT0xjcC2XD6orATDuw0Mi6vOpfwyT/7p//Xv5Y5DtL/h+2PrUEWSwqXv7mWCtYo5VoGnc+3W+40mdQKZg8898XDGXl+lql+dS7LGoHlv/cf+abTu+VSatVTr6IDVjDvNwlVv8qnLfXLXOeb98RGEZl3RO08n4k/3WkehNgZiXauhP/7h93/V7atuPc/F/5krmlXtGzzZW+Kca8vZT5YndePU33q+iLBmUzy3Kxrd0VW7iVS5r6Xen4aDrXsycMQ21TV0HwiJr2LzmX4tjbjW9eW7fZ/aHuiXCqfyyMIwhlTzdFXbPfFmo+FC+GgYzdZushGA57aaUHdC9bHg+ikqt5Lpy/MmLI2u31K05qjM902X33nCG1EdlcThfJ+/Om+tZK15qm1ZEwHTF806NhPls7N+48jGPyDlKWEF9aCjvT7kiXr93ze6Uy2ccdej3ti8/5ja2SvkfXey+UyqWF8f7a1dSbpnH38cPZq3dbujXz2Yn22y7pmpR/P1oE8ZkWe96W3uVW46PXrDx9lmaWH3ZZsSXTp9ZvHBy8+lk8+vFj+YPm20Qa3fNzxjePFm1cf5Vlm5b31J3vrltkaDWfLx01vTtaXXn5SsaKt6mhFKl60J7/6bj1+9vCzdbTrvTev9QsL6c3/euvV8iCP0Gq+2rF1uNxpymW7t71fDtgfv1helyE7TraePdyqJdWndI8XMrXUu/0fXul3W8ul3+290QOk5Y8fDt6owdqtU0tBmUqqt5plTY93CAxfgL5FbU2X3+29e7Y02xhCze6Ye7z+8bNEVVrmtz9596b6GIWTT+bwTsucHT+YffXpY/3xnvbpB8+2Pn966WjunTH76uDDswfVgdzkcfaP3xx8fvfEmqGHbw626vPI4z3VTGd7+hNFO669/Rez6x8/rD+ec9QN7PbZJRno+6TPh322T51Pb5GA3ff2MBmUQaD16Z4rsJE5SqzcVzeodZnsjvu+SPIw/7bN84OMATtk4ese01Xl3xn7H7+NBVwzpj3B6Q1uZtrlXKeIeJ1T9i5b3v0r++p2ZsPnVD9Ny2S3O72R5FE+IePd9j/ZfRu5w81gP/mZ+4fLs/2vaLRLDFTBpuxO98pGOp+JVoOE5jxOagWz+zazSalf9mr1MG9Tr68XEr9Se2utgjnuy/5aSK9Wd99eU9Hnk/p1pNevq+RHT8m3mVb1tJHOlMPlj20fZUJdokB/+A///X+zr/yOYWZnJJvZeOQw9n/7jOy8h+mQ19G1vOxTTo9eVSPtqupK0DhC2n1NXeTGsDXNq3DGtr+N+V2O+vFN9jL9WLjZehR3Rg4zG4H7VYrmlHp6v7CRSQbdtbFrVZVQVXVlkKpqc4XSMoz61fKjZ1q2azsm42rpb+zT7mDy6HBtxnKPmXzljP7q2/peNjWtcp7bXLFW5uHtif2US0/yV5tpVn7rlBRmH6vmads3xgzd1lIbyFrvWaRm1HsX6S9afnntlo58Z19+8/mTtUF/yRIdv557sSePv1Ht4o6zdPyieguaKVakZq32L9IOXjYNirr88tUDtRa747H8nNwx1fF80c/lgH353aetV+bLp/7zOLwLmWGWfv/bUV9i+aV+7Tj9+MlS/TNeIDBJAl98//33k5Rfa16/++67r776yvrZtbyTx3O+/CQ/YD07GNooZka0eZgpXosMK+1PoN8q3f+vrP3l57rmzoTd0odiemX7KC6jlzCNSUB+t5c1/cv/fuWPN3/vZ//nfyfdOqhgY6JnNf0IGBVVlvgXr/7+f3688sv/5b909t3fpJ/1Xee88gw7Gev73sp2jmPhdZZDl3Ubvbf67IfWJb1Rf1XffXpZUb9tkl7SZB4EEEAAgaEIjOcQTd+iqxaWPCttffmVhIrkV4JnbboeXTV9lkfgzgkcRb7OyL0G7oga6JZpzAIn/8P/VLDd/8N/Z8yrHefqqGDj1B7duv7VP//wv/7VD9x/2KZPzuhWOt6Uj6Ix9Qw7D8fC8bqzNgQQQAABBBDQBe7cuEVDLXfz+D/S/fLjILcWDzVDJIbApAuUsrGnITVItiOUWBmgv/ekb/815/9/+8f/wX/2z/717H/y3/7k9645J6NaPRVsVLJjTvdf/vI/ffTn//e/8Yc/+7N/MOY1j2t1elVNy01OM6GNVY6F42JnPQgggAACCCDQECBa1LAY8JUMDrT07NXrF0sD3U0/4EpZDAFd4IsvJvtmUlMxWkbztHs3fxWxjvJgmpWXoxCQuiT9uZ781//Nf/R3//jv1mJFVLBRUJPmVQT0imqz/d4frf3j2X/7R/9gVh8U6BZVVJvNciyc8m5mOBZepcKwrFmguvuYP+I1AggggAACnQWIFnW2ufwb9XTFy+diDgRGJvDll3/7r//6NyNL/hoSlnGd59e+2Qwt8Fv6mPW//FJOB/+W64/+2LxeKphZg9c3QUCvqJKRv/PvBv5OPT+3r6LabDKG9ALHwnoR82IoArXdZyiJkQgCCCCAwO0XmOyOCeMZ2+n21wK28MYIDFClK5W/muix6m+M/Z3OiPzgPDX1g7YEVLC2LHx4LQJU1GthZ6W3Q6DL7tNpAwdok3RKis8RQAABBIYrMJ5DNKNcD7fUSA2BcQv84Ac/oG/5uNFv1/qk/kgt6rRNVLBOMnw+ZgEq6pjBWd1tEui++9ymLWVbEEAAAQSGKMCdaEPEJCkErkFARpuRXiG//e1vf/Ob39LJ6BoKYJJXKdcPcguPTF02ggrWBYevxiNARR2PM2u5lQK97D63csPZKAQQQACBqwsQLbq6ISkgcP0C6oq/6zX/9WeRHEyyABVskkvvDuWdinqHCptNRQABBBBAAIERC3An2oiBSR4BBBBAAAEEEEAAAQQQQAABBBCYKAGiRRNVXGQWAQQQQAABBBBAAAEEEEAAAQQQGLEA0aIRA5M8AggggAACCCCAAAIIIIAAAgggMFECRIsmqrjILAIIIIAAAggggAACCCCAAAIIIDBiAaJFIwYmeQQQQAABBBBAAAEEEEAAAQQQQGCiBIgWTVRxkVkEEEAAAQQQQAABBBBAAAEEEEBgxAJEi0YMTPIIIIAAAggggAACCCCAAAIIIIDARAkQLZqo4iKzCCCAAAIIIIAAAggggAACCCCAwIgFiBaNGJjkEUAAAQQQQAABBBBAAAEEEEAAgYkSIFo0UcVFZhFAAAEEEEAAAQQQQAABBBBAAIERCxAtGjEwySOAAAIIIIAAAggggAACCCCAAAITJUC0aKKKi8wigAACCCCAAAIIIIAAAggggAACIxYgWjRiYJJHAAEEEEAAAQQQQAABBBBAAAEEJkqAaNFEFReZRQABBBBAAAEEEEAAAQQQQAABBEYsQLRoxMAkjwACCCCAAAIIIIAAAggggAACCEyUANGiiSouMosAAggggAACCCCAAAIIIIAAAgiMWOCL77//fsSrGGHy33333QhTJ2kEEEAAAQQmUOB3fud3/vIv/3ICM06WEUAAAQQQQAABBHoS+Oqrr3qa7wozfXmFZW/Eoj/84e/fiHyQCQSGIfDrX/8FVXoYkKSBwF0X+N3fnb7rBGw/AghcTYA2ydX8WBoBBBAYoYAcokeYei1p7kSrSfAfAQQQQAABBBBAAAEEEEAAAQQQQMBmI1pELUAAAQQQQAABBBBAAAEEEEAAAQQQaAgQLWpY8AoBBBBAAAEEEEAAAQQQQAABBBBAgGgRdQABBBBAAAEEEEAAAQQQQAABBBBAoCFAtKhhwSsEEEAAAQQQQAABBBBAAAEEEEAAAaJF1AEEEEAAAQQQQAABBBBAAAEEEEAAgYYA0aKGBa8QQADVjE2mAAAgAElEQVQBBBBAAAEEEEAAAQQQQAABBIgWUQcQQAABBBBAAAEEEEAAAQQQQAABBBoCRIsaFrxCAAEEEEAAAQQQQAABBBBAAAEEECBaRB1AAAEEEEAAAQQQQAABBBBAAAEEEGgIEC1qWPAKAQQQQAABBBBAAAEEEEAAAQQQQIBoEXUAAQQQQAABBBBAAAEEEEAAAQQQQKAhQLSoYcErBBBAAAEEEEAAAQQQQAABBBBAAAGiRdQBBBBAAAEEEEAAAQQQQAABBBBAAIGGANGihgWvEEAAAQQQQAABBBBAAAEEEEAAAQSIFlEHEEAAAQQQQAABBBBAAAEEEEAAAQQaAkSLGha8QgABBBBAAAEEEEAAAQQQQAABBBAgWkQdQAABBBBAAAEEEEAAAQQQQAABBBBoCBAtaljwCgEEEEAAAQQQQAABBBBAAAEEEECAaBF1AAEEEEAAAQQQQAABBBBAAAEEEECgIUC0qGHBKwQQQAABBBBAAAEEEEAAAQQQQAABokXUAQQQQAABBBBAAAEEEEAAAQQQQACBhgDRooYFrxBAAAEEEEAAAQQQQAABBBBAAAEEiBZRBxBAAAEEEEAAAQQQQAABBBBAAAEEGgJEixoWvELgFggU01G/1+OqT9540bpVxdSqW771RrOa9YurvCvGvSrN5nVdJUmWRQABBBBAAAEE2gkYzY5Fmh3tcPhsGAKZkGpKhzLDSOu2pmEYedy+1VgqX564rez34sWY3+3x+sPxTNPV1cRtfB8ZvnPRIqNeq/2/Nrm9gUgqP+iFs5bdCPrnAxt3qM70Ub2YdcwC2YjHF02fnnepzsVUMl+RbJ2nU9kR5m7IO5pWSMdWfe5qFMzt9q3E0oWWrSxuR1d8nrWxndmLO5EVn7v9+oxTSu0oo/7L2TR0pbNLt9X1WpRDLhcbB8Be5ZkPAQQQQACBsQoMo9nQR4ZViyAw70+0vSQqxhfNTSJ5LW25K7WKuq6uj2yPa9Zxt1HHtV02m1Yp5nfiqwvu4Hap/VqLmXjI+CX7FvyuXNHOTzOpsM/lix21XInI9pez8ZXaz/bu+UAk3XaHaA91Mz+9c9Gi1mKonBd246vza5l2Jd46e9Mn59nd3OnFhbr8ZkLgegVKyfiu1OLpRxvpfKE2ZWNOS66cwZBnSj6ZCQS9li9G/WbwHa2Q8HkC0Z18sVLdRyuV4vFONBBuDgsV9tPHRW18O2Mhs3tcrPS6PjmbZrucXS737291l6dnzDF4uajlOQD26sx8CCCAAAIIjFVgNM2GjpugWgSFi4teL6ekLXelVlGfq+uY7XF9Me426ji2y5eUq438Uebb2KMZm62S+9oXsl5Ol7LJkNft8oVT2W6/ZI8jr0NYhzOW1bc3vbnilkup4s5TX7xgSVfLRBYWQqnj2sZWLgq7UZ+3aS7LIhPw5o5Gi7ybtWvp/OG3kXkp8cr+29TkdaGbgBpGFscncJyT8PXUo2/eBlz2zmt1BrePpfpnN7xdZuq8eF/fDGNHy8eCSbVd85FvM7UgWF5OTAHnvb7yci0zO4KZ+qFG8uxTWZazy0qyw68vY8rkMMplTFllNQgggAACCCBwOwRmrK2iR9VW0eo1t4puB+51bYV92rkQfJs9irnlcjobiTXuXCgnfxpKZM8rtplHG5srjuvK4JDXa592+eI7x9/6pfaepyJJU/jg6OvIbtk25QomD/XW/2HSr7b6PBWe6Bp+R6NFjXpjdyyEkqp+286LE99TrLFZvLqDAsXcqWz1tMN1E7d94B2tuJu9kA2aj6dCC85afMsuJ6aNTMJ3E7e0U55Unjdz6aD8+mI7fRtv7hfVabERfz5wuYw4XySPAAIIIIAAArdXQLWK3lZbRYXNm9Iqur3eI9+y6WBI3bNQyWbr3W2mg8H5Gd9GppDt/jv2yPM2ihUshAMqEnSabUTHbAvfJPyBjWw65jVCYw5v4s/96oaOYmaYg8WOYnO6pXnno0UKp3yhLkdnnNY7duS+w2TIp8YDVpPHF0pmG9HD+ugfvtS5LFtK+YzZjL/VUff0mRY69D4zhjUJplUG9Knb6mrzSHWTMYzna6O3tN4Mqa9SJVpKR/wLRubd86vxtjdWNlLl1R0QqNfZalVtN3Bf7/XHqK613cPt31H7wSWTdUfLx+YlJ+6W28lstsyaquE+Sxy+0rlrc2OEoLB+xM6Gq1to/LNuZ+koFZOxjWoZl5Hqok03FBu31utLFdNrPnd1L/Ktpav9gRr33vewvmYSV2RtXj7TspnG2UUrZOJrAempa0zqTn7TwabP1VmOI9aUmvNSe28tl9qnHADrErxAAAEEEBiPQH8tZ9vM/RlpGIdrjXVP41Rtyu4lLWeb0Yqon/arLQS3L1w77dfTGuAMayxb0B8F4nIH01o9MXlRTKgnhLg8kUaLwPx1l9eSk3DjkSbWAYD6ajYYraJqU0caZTKWa1OrSC8SfbQZGY9ltdpWcS+s1C8t6s1L45Lo3HpJdMk4NdVWUSW73zBQrSLz1lkvwfpc3WWl3wVZfTXjdFmaQ3JJZboarC3cpWL01EY1isx0TVhLWP/fslN0WZ1pwWLjStDlXvA3lauer3m5RtWOGle77rY7kCnNXl5qF43LZftKKrsZaLq+7iUR0zyXVlHdx7j2rV8je+YbFdSUliFXb2/3dPFiWrztS602TIb61u5LbASmzfMt+BbU2/PTHq6TzMvdpNd/6yZl5jryIoekyI9lQLapR2tBc+nKgX1Bes8Va2OSaMVsIrSw2CH00z7nTqekWO7QZalQlGoz5VAdDWTqaXVaJqSPYVy7bjZuhnQ33SJqs+WTgfnF6O5p2ch85SKfevojHhthSN+6v/XTpsuXUuGMptO0NVbS09ZfWn+0THTe2Dtqu0fFfKhsu5LWHc2zFpLzRyWz09TLRttJ7Utrav55UA/MO/1e1VE5H/eGmxowbdfT/cNi/MdPpfdoY2wjGakuHfW12a+1XNLv9kX3a8MSVYr70R+17Grd19b2W3vA75EvKjl126A+ZcKBcGq/ID11jUndyZ8IeQdZWfNxRE9podv90q3lYmSiOSUOgNXS4R8CCCCAwOgE+mg565nIxhZ80Uytsa7JqdpnGYe015az/IqTSwb003519MNKMRO1DMLSfF68/AzbYHLFMpveKTn1R4Pb9XhRIR5MyqXATHA70d84kqWUXxphmcYjTfQBgIIDNPSL8VW9VVQfgVENZdh2mJVyJiItv1S+2laplI9TMmZLrSHT2NK+X9kDAXWDRyV3VEtMbxWZt05vgQzSKuq99DtmWyu89XtN14NySRVatEb3rlIxqut1uv9AXhWPawSW7BRzBXnvvF+NufS0Otlyqcz1K0FbpXwq5dpyxXiRkfDK08bV7lXauqVsJK5H/Fzzqpk7rKnXKnqc9C8synN+qtfI2kVLBR3k4qXzVmiFVEwf03vK+Qe1Gx/azl3I5dXn7vn/n723h2lk6xK1/UqvhG/U3AjPBB8+SeMIiGhHbiftcQJy8MEluBwRHEYOmiukS0tIwytZOoyEBCOhSwfo5QTWYQJuk/gziceduB0BERAZkmOSuSZzR7eIzrd2/bnKv2VjwI2fEsL1s2v/PLv23qtWrb3243RmTeN+rpNDqi2qWR9Mza2eVt8uHRY/xxyVXVyfF5shh7fgq2+HSxMjYkNkTjzU3XqpKYl5fWKJwzuJOvnNcCxstOybq2aNv3qn3uzNFtUxOfU4VA4XVovaiOT1m+m95Sq7IzN+H4qf1t3v2w+3N9/tzF990XNY+bJ//lwPFekMJAH7mb3Zby+WdHh+tPzqelas8WQSsuVM++p8f04ZWjZsbRtaYOkXZWZTPDqxRSc51LLZC+V9aWnBbJBTW0frbyV2GdNi8tVLFtC4cYaXEVR3OqcanlGwmlMede7m0DlfbWzs7eymw/9RdnNGkqkc7bubkM93cbR7+xCwiniuTzzWiofKi/j4pjEb2Ut6DUTku8Oo0n5JQe1rb8YiS/vZc6tZfzucU74Ci/+6r/cc3pMrri9It/XGyrQ4HpRuS9A1zpduWy+Sr449kv0w0QHa1cgOBCAAAQg8loBnydlI6OrraVUXjNVw/21HFDLih/Q324DHu+SsD/s3DzJrxpBsZNjXR+JDKy7vI2xzBP7Y/m5Msnf9N9NHz83WP8uQPRLZz29ONL+l1dnzf9u5FSFsrvY6cC5ed6fGzO/PXUkpIhXN1UlFksn7o891UtH96e7pd/+k9QqS31Trpdx/+axeLeokAodrIlUr9WutNJTK/8b4WG99MvP53gTqpCKjLrYMqchzct3UfkOurBPfL7IOaVAeMREatdOtmvV7pwfDm4w6FlA8K0ot1LDdVasiFo8bzhg6JaffXTmcXy0+6N5zLNFS3hhHlVOhujfG+5vbB796szQbkCqdIes2ZKPVieK6YarzfuVUdJ8+/+zqvCm/t7qju/MeH1Ht9rbqe2O2X/Pd9/6k9u7bzctLuwxWD2f1iQBTc1sX6pGdWF1/1y78+W/qlWkkNud8GWl3wyBeG1JtkbsqtNuj1aUtXfWnX9C+HJ4++CY3v9VmWfoDkc0vyr3R3am4r/K4+cfHpfFbFmral3l5vixTj+/36uEZH1Pt0lNyV58Pb3wjc4enMhfSbIb+ibnP6i3dNatFz1tgKXtuZt4/tbmu3skf9Ol2HnNOsB+HgD1siuYyINmuG6ZduhKvpWr3/FSPPhcfdPnG0TxGJ8zBvm0K9Q1NPiipR/PixBLG5EDLnoiyaHRuxdGtTqycXud3ZidEy/JwLwtozE1Nvv/Yk6HR+MqX090lh/+jiaWteSVfXTd80Bmb+/3K7gFGI6tqtQff/Y0aCvuy3d9bQkFst3i4GZsYtZp1ILKzqfR5lTsrhKcEtROly5rcdEwOV93WyaZ847nLtuu26uvFW4/UOVN0gJ0ZEQICEIAABBwEPA4c9h0jkZ2iEozVicDc+oL6HGPP+ehKcvaNzf5+JbNmjGVCZNiPqUjNuHofYVXGjE30RSdKTrvZXdi9KX6aF3vwkcjuvvNbtRW0/a96R5Vt5I39OqC87n45UQbbXW7jKyenO3VS0YIuFdV/6R6Z+fXb1Yn1CjK+9It6RX6oyrtMn7aKrSqJ7X6rk4p2danovjupqLvab1kKVXBbGgzMHe4oAe3uq+mFph8Phkp6amZC/ltzR87XxSGD6dVEBGO18Pb4WxXAW3JXn3+7Fa3NofKeY4mW8sb4v8SBjmvGn0rYH9k/dzSgeb0BdSXrjo8a2j6ff2Q8tvnlvEtDOZWJdpv3R3RsKXthtl/r3Vez330f8fLizt3ouN7ZyEn/2OT8/rfsinXsDmccna+vKmXR29V/cbzVNAs42Of+OtjZe6rcifWB+RatVc5P/nV1K3979PPKzPmh3mlfXFxLwtdbUxNbjRm4u5GL7W0z7JsmlNngrZqKNiGa6FMVa1Hm3cTkkdEnor2dUNaXnpKrXlypLjn784Q4JWrYbm6qvojZWuVi5F9cHyqmJsZ8F317y21InBOvjUDb5+dCt4iNzHuSb9o3NJ9/funD1sXXq9+OKgtGd1s5+k2aydjsiqg4XNv43G52blfmTe3ubskynBUxNp883b8wWqwrZPsDmbL8t52jYs1+2wyu1d02Fvv4zhxj9Svq49BmXZhHHY6NqYHf2O6ym+ufszfWrDfrtCkQWocdfi90W1dv3Vb7evHUI3XIjX6ZDtALJcJAAAIQgIBNwNvAYQUPLGw6nYQoi/0jfTaMCtCV5OwLxFbrhv1vtWG/mxHWyluT34nN//j1aupv14dzK3I1sHTStRCjIo38sjCWPbo/WZj4+nb2l08rS5F2C+E2yYbzlEhFmzv/Xryt1IkcdYe+d0sLrrdi9anSGc+j9wOONVpEKvqkS0Vu2aw+T23T7K72W0dVX/AJcZVVvNe1iPKO16cHQzQPYl9wraaiiZOfq1Oli6rkj+42Za6KPhFtZGJCveV5Sk5KruwaTn+eOG1SLPcb49j8plOcdzegJne3PFWTK1sG6fWCx0c0sln37hvwXVTsNLt6ebHvarkjX+Y7Gs0pLzM/n35X39dP2qqUWqYyMBeG3rZIlgRa2i/+Ku+mWvHEHGE0S7n72GoanZDZa74b3WyhmL8YiUQmzXk3VeW1yKdPzxalsbs3bJqqbovU9AonIfDsBJyDurfEmzU0uTO2ohagvDs5NXr0yumJ6Fblm1WLD2T+idjmYfHmfEeZcz8UV1dq8/+9ZOPuMOae6u/lpn6HMdq+b0x0uGoT21iZWy6+lGyvAT0mqJl+yrq7vVm9eOqRvCRDB+iFEmEgAAEIQMAm4G3gsIO32+mj5NzbCNskc/6F3RVj9B+Z/dX1dtskcKtTE5vFbzL17I1PnNHsrsyJHUqDD+NWt7rPG1LR1wZVkTvUEx8Zrjl0h+UqJS3/UUlFV3cdHWK2z1cfa9+V0PhU7Vuf5LYn0csVoXEwOSGCr2F1rtYCnohE/PfZwyu5eKecRo+O6XKxp+SequRNcv30p/r6iHb/8tJ7AW8OZ5V3iJGZrXxPOuHeU36CO4fUtqiOpP/d5Jjv6l6pdWL2a2o/1KTjY6IKrt7Lm/DNSVGUi79O3b/fzWa1+XdqIlpAHO3bm6fkPOky7SjZgcATEahWlVKn68ibNDTl6/pk9+63z1crW1N3vx1JvJZ/69bRj87t7+anVr9qF7Ju5YJn6878rj7nPTC7//etmPUlTlaFMFbxaJ1cX69UTk7U57ixKeUwSblM2s3L17KRmfXDnZV31oc7cV1urLfWddKe+pH6WJvUi3y8tA0w64N7P6YD9M6KkBCAAAQgIAS6GDg88eqj5NyHcdHwbO0fGdEeTldXYuacBk8FcQUKyNSz2JZPuykeHe4ent4oH8YXt/niejeiWX5Hl4rGZvcPX1QqEi9MvrFJw7JLpKKvfZSK+lj7Jn/TabF8s6xtfXgwRtXC3Lf3Vc13d/T1fvy/f1m6jRW/nlxtTekaoskpR8V6Sk486ppedGv5fJK9vtveO3PZ30e0x5cXZ4YMN13uM41HNzuxud9kBS1RFR3NW6J9Y7Af5szQ2xbpNaUVr5Wpz+Sk0RZn9Nmj59k6F29tKlVzuKx1BhufkqlmalpvPnvuezcXC8zPvvVdnGa1mzvRIL012r6n5MYjM9Iz3Rfzhg2GMxH2IfCMBPxvRMuhXd84H8Sbw48nXqY61jU0PdeGr+tq/uRKFvPLihq+5t+6c6lG/GqGdd2mtbDVu7u4VlbMM/9z11YVyWHFsdJnXUQeD1ul1+z2ytH/0GWzCct86lpfGm10YbOmKhK898qIuMXWKrmZmbdyx/mp927LTqCuXjz1SPbNaocO0IWDAwhAAAIQ6JWAJ8nZU+R9lJwfMcI6sioLVemLUcz+/fpEVqDRiqumx2tHmO52/ROyXlf2QuwY1DvCqfri1ri1EhssqWjdLRUpn8qP2VpJBE3jlNWDdKnorVsqelMvFSlnHM23Vsn1sfadCZtOi2ci1htjt6JXq9qYGBetgkxwq+SLlbFILBCZjY0o2fjuQpRpllGMp+dQSi6CeuU1vDH27xF9zMuLs/497MsEtFelKpIioy0STyif5pSLa/+sZaQwOis6HVlVYXXm49F5pcWrp/m8jMn8VTEf+iLLBjpfn62naSIgjf82v3VSfBBPL2JKOD8n6qKjLaX0GTNNi7wlF5lTM0vvdmNzm/VrQlmJ8QuBpycQiak1R+52/9vWlWoa2k3248zc7m37ZqIHbGhoRmb9C0sfRnzfs5/XD2V6r9u/tSS0sxBbl8ln8rnF2mQp1a259a9ywh+bU24W7e2N0mT5LrZWsnXLpukh3ozpqqWr06zRVKXpby5M/pxVKqTetjej6uPSxb82T88dp3Z3fvTx/futK0lubGnHmsLsf6OiUAKBXkDxo3b0MTK1pXycNWztkxudlb7F95BfnVnt2G05oqYDdMBgFwIQgAAEHkdAZo7Iki6xnRsVjXmw6zw4bKrRcCTqRXJ2BG+z2z/JuccR1pU3LbuyLv5oxpaOdt/5JjYPTY/XWzocV0jfzeG8vs5UZD1fE36sIEou+ijLw9bkIvkEbUBVAoVzay82mFLRtVMqmp/8Wdb56XEzpth/P2nxSuSOVUlFq5H3W+o73tjSbk0qUoLcd5dU9H7KsRJRLZYOyfWp9u+uLdJapbg1u6IvCrz00ZQ+u3kw2suo41Miw1XujsTIPhBbEl2Uyv/37L8fVkR799Zcft1bcnKnLqj/0+wzvDGqmYMTE5NzHdt1reK87/XvEe315aUhrzeiW52YmPnUpGWqsFeiKjInoL0KqyKj/H/5888/G0j8MCf++OOPf/zHf+gqu62meIz/ks1/mrCjujmcm9+9adJhNpj/iduRmVU1l8SxOcz/7PSsG6uHc++McdM6Izd6Sk7Lr0dW5X26YWtIzhGzCmzMtak72RALJwaBwH/+5//p9pG2s3239T52VGlldWs/iXZ4e6f2aBiBasd6kPrn524nEvvNZUrkf7s+P7p7dOFIu1VydQ3NyMPV5ruFE/1j1vj6t7wlMpiJq0LZWXXuyPIl+V2XT0pRYkVih66sOWdUaSfzU5v1epgR/8iD9uDIeXuMzgwoXVY9Cju9ljPcxud/z27Vsn2+/u7nhgXLRkb8Dw9aXT20TU7Pl3xdnN+9dXdG+oVaTB7rxVOPpEdNB+h+JDiCAAQg8HoIdC+TWGOfPqr6dLFEuXOWSTE+c963Y7xtAcoeqKyxq5nkbCTkEID1yPRbHSe9SM6mlOy4q2m+PIywTe8zTyqDA3mLlDVnv1nuisxT4qeibsmO/MeJ1a/GfQ1SkRLqm8tFIx/2Lz47XRZLDG2kFLkqizWLy20zg9aPPkvuwUHDqA6rLqxgTX9Fc/BOvAS4rln13Srbvnqp6NPMz0oj49oMUa0+D+2SU7d7qn1XOq4D+zl0nW2YXuT9wWgvo1pNR61tbHhQLn6aXNG/aNpnJCeekpOSv19tkC3l7lpMRnK1Y6OQepnrT7rL7z6qHMbe7ypdZfOb7EK579KP6quzSRBvj2jTJ9R43hxpNLaFJi8vzfLgOme3TUfMtQAtH3IVxNGmanc8dk+66J9++umxsXS6f+hti0b845PzO9krp6pIoE2sZC++bM6+DdTr6RuAyoqYxcP1yLi/ecjxcWOqjG5ZpG4eVZPR1PZGTVE1N0/J+WO7F9/2lyLjI0rvzgaBFyIw/qmY3/lgNo2Rscj64bfTlchY8wZg5bFFQzMuT3003Vq/na+f3zu++f992Vn6IC3Rjt+KqlinKpK4xtclay2brX/+RDI+bjafkZFxyfr59Y7LPMnKr7dfHcXsRIey63FJcpPzm79/u8k7VEVy5d3ufxwuTekWRnLkH3s7t5O/OV0YbZaBTslNrJyqbstTfsz4LZh0gM2Acw4CEIAABLoiML6kzCJ847Pz8jO+9N+dB8YVI0C7SL1Jzu1isK/1UXLuYYS1syFT0OZFVSRv1H+3VEVyTdkXyfyEh+KnVbehQmx1fVLJPP6x2XVlgeTexjf/9++bc2/H7PcOWbk8srSfv65XFclt7cUG/4IuFZnilcgDSiq6EsunXjd/7PM39Urk5T1FFz+aSUU7+cOlSd1UXLIxMjYxq6Si+WZSUafkHln7kY87SzEHZzMz13U2I94fjPYy6rjpDmVMtyxSVaAmo+lVYV1SB56Sk5Kf62+M9kOix/ME/wJL6zI/wDcy0bld95J6Hx/Rnl5eGvIcW11RfdqbuXmPy6M3xPAjnhg626IfsZLI8/AQ6P473qtgY36bmPn16mgBXeirqFIKAQEIQAACPzqBIZVJfvRqI/8QgMBwEMC2aDjqmVJCYNgJaF9WlRnrm9mPqIqG/Vmg/BCAAAQgAAEIQAACEIDAYBAY+plog1EN5AICQ0pAuzlaeqemzY/EtrZ6t34eUnoUGwIQgAAEIAABCEAAAhCAwNMQ+OvTREusEIAABNoRcLuCCyyd7Nf5Zmx3M9cgAAEIQAACEIAABCAAAQhA4CkJYFv0lHSJGwIQ6EBA9+v8zV4ipENoLkMAAhCAAAQgAAEIQAACEIDAMxDAtugZIJMEBCBQT2B889vNZv1JjiEAAQhAAAIQgAAEIAABCEBgEAhgWzQItUAeIAABCEAAAhCAAAQgAAEIQAACEIDAoBBAWzQoNUE+IAABCEAAAhCAAAQgAAEIQAACEIDAIBBAWzQItUAeIAABCEAAAhCAAAQgAAEIQAACEIDAoBBAWzQoNUE+IAABCEAAAhCAAAQgAAEIQAACEIDAIBBAWzQItUAeIAABCEAAAhCAAAQgAAEIQAACEIDAoBBAWzQoNUE+IAABCEAAAhCAAAQgAAEIQAACEIDAIBBAWzQItUAeIAABCEAAAhCAAAQgAAEIQAACEIDAoBBAWzQoNUE+IAABCEAAAhCAAAQgAAEIQAACEIDAIBBAWzQItUAeIAABCEAAAhCAAAQgAAEIQAACEIDAoBBAWzQoNUE+IAABCEAAAhCAAAQgAAEIQAACEIDAIBBAWzQItUAeIAABCEAAAhCAAAQgAAEIQAACEIDAoBBAWzQoNUE+IAABCEAAAhCAAAQgAAEIQAACEIDAIBBAWzQItUAeIAABCEAAAhCAAAQgAAEIQAACEIDAoBBAWzQoNUE+IAABCEAAAhCAAAQgAAEIQAACEIDAIBBAWzQItUAeIAABCEAAAhCAAAQgAAEIQAACEIDAoBBAWzQoNUE+IAABCEAAAhCAAAQgAAEIQAACEIDAIBBAWzQItUAeIAABCEAAAhCAAAQgAAEIQAACEIDAoBBAWzQoNUE+IAABCEAAAhCAAAQgAAEIQAACEIDAIBD4y59//jkI+egtD3/88UdvN3IXBCAAAQhA4LUS8PtHNO3htZaOckEAAhCAAAQgAAEI/PTTT08N4a9Pna7sK3YAACAASURBVMBTx/8MjJ66CMQPAZuAKEB5pG0a7EAAAhCAAAQg8FIEkEleijzpQgACEOhI4HnsZpiJ1rEiCAABCEAAAhCAAAQgAAEIQAACEIAABIaIANqiIapsigoBCEAAAhCAAAQgAAEIQAACEIAABDoSQFvUEREBIAABCEAAAhCAAAQgAAEIQAACEIDAEBFAWzRElU1RIQABCEAAAhCAAAQgAAEIQAACEIBARwJoizoiIgAEIAABCEAAAhCAAAQgAAEIQAACEBgiAmiLhqiyKSoEIAABCEAAAhCAAAQgAAEIQAACEOhIAG1RR0QEgAAEIAABCEAAAhCAAAQgAAEIQAACQ0QAbdEQVTZFhQAEIAABCEAAAhCAAAQgAAEIQAACHQmgLeqIiAAQgAAEIAABCEAAAhCAAAQgAAEIQGCICKAtGqLKpqgQgAAEIAABCEAAAhCAAAQgAAEIQKAjAbRFHRERAAIQgAAEIAABCEAAAhCAAAQgAAEIDBEBtEVDVNkUFQIQgAAEIAABCEAAAhCAAAQgAAEIdCSAtqgjIgJAAAIQgAAEIAABCEAAAhCAAAQgAIEhIoC2aIgqm6JCAAIQgAAEIAABCEAAAhCAAAQgAIGOBNAWdUREAAhAAAIQgAAEIAABCEAAAhCAAAQgMEQE0BYNUWVTVAhAAAIQgAAEIAABCEAAAhCAAAQg0JEA2qKOiAgAAQhAAAIQgAAEIAABCEAAAhCAAASGiADaoiGqbIoKAQhAAAIQgAAEIAABCEAAAhCAAAQ6EkBb1BERASAAAQhAAAIQgAAEIAABCEAAAhCAwBARQFs0RJVNUSEAAQhAAAIQgAAEIAABCEAAAhCAQEcCaIs6IiIABCAAAQhAAAIQgAAEIAABCEAAAhAYIgJoi4aosikqBCAAAQhAAAIQgAAEIAABCEAAAhDoSABtUUdEBIAABCAAAQhAAAIQgAAEIAABCEAAAkNEAG3REFU2RYUABCAAAQhAAAIQgAAEIAABCEAAAh0JoC3qiGhQAuSWg7It5wYlP+RjMAmUM2vxcEg9K8YWTpXdGS2nE+pyeK2guS885qicCqs469N6TJTc2yUB6qBLYASHAAQgAIEflQBD3o9ac3X5NioyFArHk6lcue4ihxCAwMsTGEJtkdEvDY7WxdACma/2TX4GJ6cv/7iSgw4ECmuh6FqmVGmjByqnDy7V5UomXegQ22MuNz7WIgmspfWke4zXaLnSREJrZz1G4e02Pe+Do/myy92kd1CnBien3vASCgIQgAAEIAABCNQIaFqllEsno8HoxllzEbZ6mV6LT+uCEC9GNXDsQeDpCQyhtujpoZICBF6EQOUglZFBdjS+lyuVre0sFXRlJricnPbLmUBiOeq68NQHIglkUonpZK65HNAx+XI6V/H5R0d9Pi13/LTqoo55IQAEIAABCEAAAhCAwCMJBFNnIrCWLnMHi0o6LR8vRlMlZ5xaSWzmp4PTiVSmVHVeYB8CEHgWAmiLngVzu0Tiaeu9Xn4Poipo9MBxKh1vdzfXIGATuDwr+3z++PZBIqT0QS224HJG6ZLO9qJtArW4t9vTtSe5dHa8EZYEtdxeuqfR3lAWxbc3whJJIXPZbVZ+3PCGJGV2CYXlgJQksFyodRH1+sAft6TkHAIQgAAEIACBH5dANZMMLx5Xui6AfzQU386UjhPySbCSXjuoCYqFjYTYzFd9/unldEokQDYIQOCZCaAtembgJAeBpyJQPlNfY0YDoadK4DHx+gPhZDo1LVFUyuUeIjKVRYl4IiGRVHPHlz1Ewi0QgAAEIAABCEAAAk9A4PIgHl7LVc72DnoV0cJrCfVJrFQo2NmLLiaCoii6FPP0aODpv3La6bIDAQiYBNAWtX4UqoWD5ajlLjgUXT4oVBsDlzMbiWjIDBWaVp5ZGkNJTMma52GJqmdHbmoiTrUg83mMFENimFk/wVcr5VLO1BpzrvtBmRZDT+2sVsJQNJnp/mNAIxDODCqBek9CzeZ962EWM8qrkdj9tn7IRF+jtw67ecS9fEmqVlXbCASDOqLLDTX/PJTMNQDLJVW80QPH86gri3zheFRsp+KiDqsWMuX6+9xZ0ue2G//cjn08tev6uJsfK4/iJqWgavyNeRKj6uftIXyBUEDSTFo9V5N2TQ/RvDY5CwEIQAACL01AF0OUhNpsM9z4KSHF2joPeRKy01htRKsLRfrwaQo/TcTingWIkr4USDC0qPwF1LbytlohRLwxFmrnvOx1HsdVLM8qFVVza9OJ7ZLmD2+fnenfBr0UpFUYTatxCm8XRFE02ioo5yEAgScmgLaoBWDp2KeXtwtlq7vSyoXt5emwewDTfQofX5atTk2rKs8sazlXnJV0XGLK1TwPS1Tp5GJvq0f5K8fxsKjYq0a+NHH6thjdLjsSzCXjybQzNT3n4eV6bzHSr8enF2sl1Mq5tWhDKEfE7A4mgZoSKJpW6pVKOmroSIz/zXRCHQoiH4emw8ru1/mQOZ9XTWQCo3XYzcNqAi2jFtFmLSFPqj++tmyM+dNryaDug8jdXnzacVo9rOGkPufKiLCSK0jZootxORxNJOS+Si5dNq4Z/7XcclhvsFaWnBdr+57adS14mz1JUPcoblLyqca/Fg25m9Dz9xA+X2FjOrqWs3ouvV27fEXRQ7SpVS5BAAIQgMBLEggGRUSotrBBLpVFFPAHAo4MdhryPI3VenzyATUuw7oMn4Yc0SAWP0aACKUKBzL9XztbWzy2xZRSalF9FgssZ/aijiJ13vUyjj+rVKSMipKZqnjEPL48XnTWT+fCOEJopfSG/u3RHwz6HefZhQAEXpIA2qKm9AtrCXnzdngLLp2ll8UXTCWdrBk8aMd78o3AP52yXQqXCsepeMCt/z7b3i4pl8LpM9PxsOHJzTXYNc1D05PVs0xJs/JVyujv05X03pkj8GhAzKByl1ZqZ2ll1akVUntlRyDZrZTkE0BoOa28y5lObLTCgZSI7XUSqDnIMrxjtSylVpIJ4vUP2bH9kGm55JrIBL5AzZl26fIg0XRgLyQtzVUoLoKEetwO4lbIwHIyLJkopGuikxxqmYw8zv748qIVTlk6HZd9vmmxLFJbIB6VR7pSEKfX9lbYWCtIY7SeZ3mi9QYrgZOFsu3Yx1O7tuNst1M5SCQLRvuxWlpuLz4qDW2tpi1+iR7Cd5nLVG0OhnMqLedq1/QQ7WqWaxCAAAQg8HIEgqGgJF66LDfJQlUpi3yh8HTtWochz9NYbcZ2lhbLGFuyuTSFZ3v4fKwA4Y8f7Cn553IjYbxIlFLL8qbhjx4UUqFagbztdR7Hn08qchkV7SkHlV1v1YO4LiyG4sZ8idCaclHJBgEIDAYBtEVN6kE7VqPDdOqs5i3YH4imMsqyspxRL8r6phlWBf5Rex6tPxhePjjbizvjNLUvtVCGJ7eMsqvoZZNvEPJqrnsxFkWV3p9q+gQfM7L43lk6FQ+Nmv21ZHwvFZVrlXKpLjkZoi5zMgtYnQ4kNhZHVahSpS4UhwNOoKYEauIAuVzuyUl6YDnX8iGrpveUXkbkG0fzGA2ptco6bfLVSIzqLu1g/kRCyQNnxw4dpZZR652NJpKOVmQoi0JxS88UjCtxpHzsmDqpN8bRxLb5PMsTHU1t684SS/Zz77Fd29lrs3O5d1Dy+RNp1X4kK2rzhxIHSmemFXIF/YQovl6kh/BH987atWt6CLN6+IEABCAAgUEjYFiVWBORtOOEqBEsI+lqRQRwf9AadvWstx3yvI3VFgIxjCnZgv9odC2u5GNTLO6HACH6Iv0jb2lbZmwZyifJfe0TmpWPzr8exvFnkopKfTEqGg3qryJScH9gevHgLJe0jjuzIAQEIPDUBNAWNSF8dqZeaC9TIcsuwvgNbajTssqjecvo8pphVjodCi+nMmcVrUlcvmhS2WRWZMATvyYHhVLTQM1ubH4umnLNBp4WJyX1m8tRisp6sqCC1CccWExZb9/qsutjjTrBNrQE5CELOQrvfsjOdF/aMinM1JI4AjbuutZESynbm1J6sTZZy7+4rKK5PJDva8ZWSSvfiIFEcroWmaksSuj6TP10WE/dobn1+ZV6tJrZSBXMmCqF1IZS7OoXjLg8tutawi33qmeXErWWWXT3EMFFpfbSTbP0W1+kh5B2rbRk1tasXdNDWHT4hQAEIACBwSIgnkDtqWhibHwpuSsc5/Q86hPRxEugI8NthzyPY7UZXSC+pr5E2ZuxHqlpnNwnAUImpG1L9isH8WWRF+Tzb9qTLGXnyd7pOI4/h1RUPU7ExR5LfT88682oyC6P2lGrvZbOMtu6ls51hQMIQOAlCaAtakLfNAlocsV9yh9PX2Zk6plfqxTSa4vhUFDURg2+sEOps7ODxWnxTl3KbC/HRQXVwh2uO/LejmSWkMy6drhS6i0a7oJAWwKBrhdekzXRxO5OSUla4bhgRx5PKtWGbSZkKIaCy07Lu2pGOY8OhEXXZG/hhBKwSpnjqnkqur0tUp7oopZ1j5FBsfJL6yLM3nbUustru7bCt/7Vv2+2vmxfoYewUbADAQhAAAIQ6ExgNBRS47s+Fa2QO/NHo9PmjHVjIpru2KhzNCqE17HaQ2x9EyD8i3um4YxfzKFDHpJuCOJJ0n8OqWh0MZPbkNrSCsnptVz9N+mGfHMCAhD4MQn89cfM9nPkWswiOs/i8U/LK/CyT6uc5Q4Oto8LFfGFHb48EH9vzg8Ugfh2Jr4t77KF9MH2Qaak3OGelQpnG8E+F6SS3lb9tT+8kd5LhgNm7OIH2TAv6nNqRDe0BKrVss8X7Lr4/vB0wHdZUVJg3Lxb+bo+3i4f7F0mt6fLB8p1tcu/ta96nClJQsp5d1p+XZtSFyWTSoukZdJnmj84HRTLHt3IT034XNsWz/TOhqhu9tSuXam0OpDPYLZHpFZhxK8ZPURLOFyAAAQgAAEIuAkElfvPaqUiKqPjgpitbE9XwtuZjLYYVhPRAsFuNSyexmp3Flod9UGAMDxb+/1+Tcskl+OX3RsXeZP0n0kqknVtz4JrsnpcJjld2sjIF+tW7NqeVz4V2gbgIgQg8HIEsC1qwj4cVr3dWSbX5FrzU2I4kUiJH+tLNU1MyzlsJ5zh/bKa9V7uspwW7ybiuNe9ppMzYM/7l2dluXd0MVVTFUl+1PjKBoH+ENCtm7VLl4Or0kFSX8WiUwpa4bIiYaang7WQhq/rau74UmakiScit39rS1lUC+/aK+WMr1mXqe1Lee4PMjmHM/m9OlVR9+3alZbjIBhV5upuP9uOy0126SGaQOEUBCAAAQhAoI5AcFpJ0uKQMydrXoglcWAxERKRPKPpE9FCTgGi7s76w+7H6voY7OP+CBCyTpm+hk4irS9TIzY5psdrOx0PO54k/WeUimRRlMuMmBhppe14eO1MPlmzQQACr4oA2qIm1SlLdIu6SEw9p5PpFt6I1F25ZDixIUuKGa5s5YRWudRfhn3yJmlt5e1ENCmrptmBxMLI1KA7QlmhH/trOGlRb956dy0mT+lkOOTwK/zYBLh/6AlE4+KtyyfPdUp/yLSSfFDSJ653IKOVcmtx9Sj6E4txZ1jDeVE1s7d2II6G3P6tTWWR+JNWK/e5tpKa1ea7NDxkV5RGtJo7KJSr1VpTc6Yi+x7bdd1dTQ+j+ky48nY0vpGTCW8tNnqIFmA4DQEIQAACr5RA+SAqLv2iajlgkRWaHByUO5Q8pFYNLuVSxwVNfCSqT6BKXZROqYVQuzMt8jZWd8iOfrkfAoSWWVartwaWj/fCvlAqrZY1Fo/XKZ2UOxMlWUZEOUYMN5ng5UnSf2apaFpMjA7EsUAlszi96Onroau8pW31zDCbzQWFAwgMDIGhnYmmlvauq4WasWogubeRkSULqrnUYi7lCuY0QxXt0HFq8dgdQCbobGw43oa1SjmXTubSrljklTmeWgvWnXv8oYyro7JoWyWdCKVrsekWr1rtmL1hJNAwH7HWBJwPdWc08Y3lQO6g4nzI/CFZUm87fdZwcy0N61IwmdmLWgfmr3JeJAZ5ypgvuLamlEDWZkxD88cTUeuM/euPx8XvfEmpixYXldPtQq6SWY5m7ACy4/eLxJo+SASNkx7btRG42dS3Gqjo9l6ikMxUS8fJ+LFxg/m/1o3o+mN6CBcdDiAAAQhA4DUTKKd1w/ly5ri8kfI1O5BzyVSwDYOgGPinCxlZ/iJ6oIvTSl20vX2sxvdouN2dDZF6G6sbbmtyoisBosn9vlIqqgxvAstp01uR0hfl4mkRpsSDhXtCWm5v2/joW8lspzfi7hXCPEn6TyAVNSuU45xuYhSKL26fbYTDpcyZa0keR7gmu7k9XYNYzRwX9uKOFygzaIP46rNlS6fE1SRiTkEAAv0ggG1Rc4oyE1ccWCdCrnU664LGD3IHy9Gg32+d9wdCiVTmUnox64y8/aYyx3o8Vij1AiuusGXRSetMLfDj98J7hfTytFofSm0qQ3uFcq62mJRxnv8QeASB4MaZDOhm0/AHomJgl0vaK8m3iFie++nFvVypsBFqDKGcF+lnQ4tqBUF703I59c0tHI/ap2o7+tdGsS4S83RZkEP0pOqSaEZlswJpWjm3Fg3XPtx5adfWze1//WJ6feZu/w030EM0IOEEBCAAAQi8ZgLB5eWglC+YWJSfpgdGgHYMLEfWMrIbwczxXsyMGj70totHrnkZqztEYV1+jABhTkFz6IpUrKZ9kVZYS7p9RMfXNnSni/5AQr7PWRmwfr1I+s8vFancKRMjEQ/Da0nndz8r3y1/44YMOJpYjLYMwwUIQODFCPzlzz//fLHEH53wH3/88dNPPz06GiKAwKAQGNJHunIQDW+XfeHt0vGirevxXifacULsjEQMy505VxipFNYSy8oVkrgIaDBo8h47ISEAAQhAAALDSGBIZZIfvqqRin74KqQAEPBC4Hm6aGyLvNQFYSAAgacjoB0nRVUkfoXWelEVyYSvjLjIVh+16uyWAtHFcA+6p6crKDFDAAIQgAAEIACBJyWAVPSkeIkcAkNGAG3RkFU4xYXAQBHQSunFabELEnPx7e3wo7J2eSAup20f17qL96TMUpNpak1nsj0qLW6GAAQgAAEIQAACg0sAqWhw64acQeAHIsBMtB+ossjq6yfwPCaFg8CxnApHxYeludVPIrPOe/vV1y90z/q3b/THDy6fxkmYnQQ7EIAABCAAgVdIYHhkktdVeUhFr6s+KQ0EWhB4ni4a26IW+DkNAQg8BwHdFfuZy99Q18mKRqhUqHM57Tedzj+RP/mu88gNEIAABCAAAQhA4OkJIBU9PWNSgMDQEMC2aGiqmoL+CASeR0n8I5AgjxCAAAQgAAEIvCQBZJKXpE/aEIAABNoSeJ4uGtuitpXARQhAAAIQgAAEIAABCEAAAhCAAAQgMGQE0BYNWYVTXAhAAAIQgAAEIAABCEAAAhCAAAQg0JYA2qK2eLgIAQhAAAIQgAAEIAABCEAAAhCAAASGjADaoiGrcIoLAQhAAAIQgAAEIAABCEAAAhCAAATaEkBb1BYPFyEAAQhAAAIQgAAEIAABCEAAAhCAwJARQFs0ZBVOcSEAAQhAAAIQgAAEIAABCEAAAhCAQFsCaIva4uEiBCAAAQhAAAIQgAAEIAABCEAAAhAYMgJoi4aswikuBCAAAQhAAAIQgAAEIAABCEAAAhBoSwBtUVs8XIQABCAAAQhAAAIQgAAEIAABCEAAAkNGAG3RkFU4xYUABCAAAQhAAAIQgAAEIAABCEAAAm0JoC1qi4eLEIAABCAAAQhAAAIQgAAEIAABCEBgyAigLRqyCqe4EIAABCAAAQhAAAIQgAAEIAABCECgLQG0RW3xcBECEIAABCAAAQhAAAIQgAAEIAABCAwZAbRFQ1bhFBcCEIAABCAAAQhAAAIQgAAEIAABCLQlgLaoLR4uQgACEIAABCAAAQhAAAIQgAAEIACBISOAtmjIKpziQgACEIAABCAAAQhAAAIQgAAEIACBtgTQFrXFw0UIQAACEIAABCAAAQhAAAIQgAAEIDBkBNAWDVmFU1wIQAACEIAABCAAAQhAAAIQgAAEINCWANqitni4CAEIQAACEIAABCAAAQhAAAIQgAAEhozAX/78888ft8h//PHHj5t5cg4BCEAAAhB4CgL/5b/8l//7f//vU8RMnBCAAAQgAAEIQAACg0Dgp59+eups/PWpE3jq+P/xH//hqZMgfgg8G4H//M//wyP9bLRJCAKvmMB//a+jr7h0FA0CEHgGAsgkzwCZJCAAAQj0RkC66N5u7OouZqJ1hYvAEIAABCAAAQhAAAIQgAAEIAABCEDglRNAW/TKK5jiQQACEIAABCAAAQhAAAIQgAAEIACBrgigLeoKF4EhAAEIQAACEIAABCAAAQhAAAIQgMArJ4C26JVXMMWDAAQgAAEIQAACEIAABCAAAQhAAAJdEUBb1BUuAkMAAhCAAAQgAAEIQAACEIAABCAAgVdOAG3RK69gigcBCEAAAhCAAAQgAAEIQAACEIAABLoigLaoK1wEhgAEIAABCEAAAhCAAAQgAAEIQAACr5wA2qJXXsEUDwIQgAAEIAABCEAAAhCAAAQgAAEIdEUAbVFXuAgMAQhAAAIQgAAEIAABCEAAAhCAAAReOQG0Ra+8gikeBCAAAQhAAAIQgAAEIAABCEAAAhDoigDaoq5wERgCEIAABCAAAQhAAAIQgAAEIAABCLxyAmiLXnkFUzwIQAACEIAABCAAAQhAAAIQgAAEINAVAbRFXeEiMAQgAAEIQAACEIAABCAAAQhAAAIQeOUE0Ba98gqmeBCAAAQgAAEIQAACEIAABCAAAQhAoCsCaIu6wkVgCEAAAhCAAAQgAAEIQAACEIAABCDwygmgLXrlFUzxIAABCEAAAhCAAAQgAAEIQAACEIBAVwTQFnWFi8AQgAAEIAABCEAAAhCAAAQgAAEIQOCVE0Bb9MormOJBAAIQgAAEIAABCEAAAhCAAAQgAIGuCKAt6goXgSEAAQhAAAIQgAAEIAABCEAAAhCAwCsngLbolVcwxYMABCAAAQhAAAIQgAAEIAABCEAAAl0RQFvUFS4CQwACEIAABCAAAQhAAAIQgAAEIACBV04AbdErr2CKBwEIQAACEIAABCAAAQhAAAIQgAAEuiKAtqgrXASGAAQgAAEIQAACEIAABCAAAQhAAAKvnADaoh+mgvMrE7Kt5H+YDD9FRg0ICoSxDTmOZojvsp9mI1MWoImJyNadO9jd0cKkXI58KmruC485utuKqDjr03pMlNzbJQGjDt4Pdx0YENo8/l1CJTgEIAABCAwiAYa8QayVp8qTUduTU5HZ1a18nVT7VGkSLwQgYBD46/CBkC4ndnQf2b85jA1E4UUBslpsk5OXymnLfAWW8t82x9vkmEsvRqC4PrVy2l4JdHd0ePUgGbzPHhV3Ik/WBhofn5GxidjKr1tLU/4e8RgtV272z/5+tfuux1g83KbnfWwpXxyMx9wud4usv1RO77bex44qzTL1Un1Ws7xwDgIQgAAEIACBV0DgQbu/zR+t5o/G53/Pbr1rJk3e5be2tk6K95rvpWSjV8CZIkDATQDbIjcPjgabQOzwxtz2I4Od05fIXeVwS6mKRj/sZK8sTjf1Ko/xpZWpEcnd2NzS8yJ8uL853VqY+Zhvr81qCe7uKH/vG3kz6vNp+ZPzlsG4MNQExjeL5qOfXwoMNQkKDwEIQAACEHgdBIyx/eo8uz8/KSLs3cnPsa0bV9EqxcOVyOREbPVIqYrYIACB/hEYQtui/sHrT0xKAWLHZFhkDNCn+QHKig2JnRYEri/EPHfkw6+f5yZahFCnx5e+XC+1ud7PS7XHR6ucH31a2b14+Pr5qBpbEZ1Pl9vd0dd7sSraWr9f3bwonl753k11GcOPGlwJSZtW5g1DowGy7+PrnVU1/EIAAhCAAASGm0A1+3HuJPLlaOEpvtf4RydiWyfXs+szP5/eH60ffjy1pMnq4T+v7KqXqbEPO5uj/7Z60tTwebirhtJDoFcC2Bb1So77IDBgBO4ubiVHo4F2qqIXy7I/8G7lcHNS0r+/62XKuVgWVXwjsbnY7KxE8v3rydWLFYWEIQABCEAAAhCAAARcBK4OZyOfvt5ffP7tSUW0d6tzShd1W6y58RhdWpoZi+3kb4ryvbTZDDVXPjmAAAS6IYC2qDWtqlg1xpQ/YLVNxVYOi9XGwHfZzYXYpOlUeHJmbv3oqjGUxPRx9r0jqp59tPnfvPFVi1vzM0aKUzPzW+d1FpfaTX5rtebneLIx52KeMDExIzac2nmthFOxj9keVfEGKKt4k5G52djUZMx2tqsnN1HvfFesqCbqTnbOeSN/zngmoBPXH2bjXzMP4XqYpazPV8muz74zqnRyZqHhIfPJU6ieHbvSZ0/uO2ek+v27BBobN5xeXW3OSEYmVxv9tuc/qsc7duh4HvVpaL53HyI+fywm6rBq8bRB5+TOkqOk7mfPCGZebmwdnYtRC3FXozQx+W52PduQJ7GXzm7O26CmZmY/teghnG02ttJzD+Ebezsmaa5aPVeTdq3a2cc5Mdg2tsnJhr6taQ8x2XsPIRlad3SAk7E56aAmP1o1b/QQ9S7S9WfRfbJzzmt1wx4EIAABCPx4BPSu/13dLCOrGMZooYQUa+s85ElItfqHKTZPKEG9fqw2otWForvsR5Fg9dFxMrbaIBa7BIjGwdPKVePvjb4UyMTkUtYls9/tqhVCJqbWa3qPxnubnPE2Ghq5dSx7Yoz69UuS9FwoV8aq+U8zC7u3D/6ZX78VN5/F+Ft7qMH0zx8V9+fwqeqqEw4g0B8CaItacJSO/d3KbvFO+QNWm3ZX3F159949gBXXJ2OfTq7urP7q4bvyzPLJegky7qwczUlMX28rjqiOVpdsZYoRyuN///3JXGTl6Pq7eexs4gAAIABJREFU0UNq36+Pfo7tOt9R86tzq0f5W3vW7oOe88hKvbeY719FHfBzrYTa3ddPsYZQHbOlyfBggLKKJ+5pbu+cXXjHOMwAXnPuNb4hCVdTAhkuh++PYpY8oH6b6YQ6kLk6nJt5/+n0tmpU6cP3q6Of/8n5vDapdKsJtIxaRJv1/yZP6siHj0vGNLSpjysyrj/kT9ztxaedHH2Vx3vmF4ffmUq+KNqoyLxyyj06Oyv33eePnI+9+DJaiegN1noOm+fEU7tufmvdWUlQWr9NyfdQvT39FJt0N6HiJ9VDXN89mLnSvt9mm/QQs9KEnG32rthzD+HzFTffxT7lrZ5Lb9cuX1F6O/t6c2+BenhQfVuTHiIv4rWjh3iQHuKf3MWrQ9L88OZwTgdV6wAf7m6kg7KYNL+r2VmvOW92L+cgAAEIQOAHIDA+LiJCtYUN8s2diAIjgTFHOToNeTJWT8U+ZW9NsdmnBPWGsVqPT7vQR6uvIsHqxw93ebdYXC9A6IPnu4j7xcCRNefuxGZ+PzLie7j4tPTFVnHcbC0dSoHGlr7sdudH0stoKAV/r0tFdnLO/Nj7jymUHYlP5MbIava7LzD7+/nTTEKrpaXdHG1+UV8TR8b/H6yIalzYg8CTEUBb1BRtcX3+6N7pLfjq2+HSxIivcrRaM3jQvnw+ffCNTG7aLoWv8r9vfgi8cUV5vrtz45MO9PCb6XjYcNI25hzsXDe0PahenN48vIkZXoyvviypWO6P9s8dN70JRJb2s+dWat8OZyXQQ3Fr3/VyLdYjt7fayNulw2/KKey3HRnFJNRv7q8e8uq56lQ9qH3n134tv74uw4PvTc2v8tX5/pxE1cvmNee9xM09Ps8ewh9ub77bD7/5kFW+2A+Zll/VK10mh1tPfstKrz0+U3Orp1V53IqfY9boHlj6ZUbqpXh04pRltGz2QnlfWlqwwsmzenoiT++UWBapLRCLyCN9X5SpafZW3PxUlMZoPc/yROsNVqSwlfyNvYSfp3Ztx9lup3I4v1p8GJmQ9mO1tOzOh1FpQuvrtvZL+7KfffD563uIMUNbZkV//m87t5LPuVpMyo3jVI89hO/q62nV5mC266+udv1mrK6HmNN7iH+t7yFE7fvgt4hKTFIfWvGwfsm9Ou2k6iKcGsq7XXElIBBUPBap/HqPXx295txCyy8EIAABCPxYBMbfKvuQm6s6kVUvRPVODfsTM44hpMOQVzlcWC0asq41AslY/UbG6k+1sdoEdHEko5XMZjIkm3NTeD60xOLi+oK8GDjFXZEz3o6IDO54MTCjavbjj+3vxkQ8vv7bgvEicbP1zxLhSGQ/vykW091tnUfD4t/Wi5pPl1KMpR+M3IoI9YtM17JWfH1soVSuq/n1dwuCbkSMir7tNixUJsunKsGg+eY2/W7PoHo4q0cyNbd1ofR5E6vr79rfwVUIQKAvBNAWNcGofTkUNdDk5rfa7Fd/ILL5RXlduTs9tWaaacaXCv+bMeu11j/+bunzt13XquTmF3z/m4AZynDSdqLsKnrZ5BvExb4xK9c/tbmuXrc1fYKPGVls99vhZmxi1EotENndVC/Z93eitHJtMkRdnG5GAupkYG59QWm57m/lM4fnrXr0+au8okf2HfOEpXhq2aoeNu857yHy13tLTQlkLAIlXofNRaH0n0PX0+gRQ2Ape24+/NZD9mA9ZFLpSi8j8o2jeXirdO1WmczUZrP75+bU83txYgljcqBlT0RZNDq34si3oSx6+8HSM41/mJHH++7ktGKXR2+Mo3Nb5vMsT3Rk89c5eaTvaz7kPbZrO842O1eff7sVl9uHWUnPamkTc5//16x8OSx+tSzKW/QQxR1H2URHa6Qz4u4hvvTcQ4xEdort2nVst1jXQ+zoPUSloYfwR/bPHTHN6z3ETTc9hK+4L8KwfDjNqngsUuPjKqbuN+857z5u7oAABCAAgQEg4B8fF5WKZaCufZkXDYH1CeL7vXyeHBm3hW6V3bZD3tXnwxvfyNyhcwSSsVp91NSKeWustko9Nvv7lcxmMtzejEZWY0o+NsVi7UR9K5ncdIq7ImecqClXd1n7xcCKqumv6ItOlNH0za4oV4qf5o/EG2Nkd98SbZre0/ykh9FQU+bhb+Z+dUpFW3Minldu7beBPhTq5nD2vXwLlC9ev188sVHR6Lj+viJE/GOT8/vfsivWcXNInIUABPpEgDXRmoC8uLiWs9dbUxNbjVfvbuSibuMwuvQxsr9avPj0bvLfIgv/85dfYu+s9yHHbZGVhcDpUeVkYSL/dm7l0y9LkUf5X4tsumYDT00EfBe1d2Y9XXGU8ulz9saeH2dmxnwptbMWWNh0DlHqY81R/dApJd2/aa1vuLhQY47MDzJfA+24e9zxmPMeY+c2rwQi/+L60DU1Mea7sHUEXVV67fGRNdFO/nV1K3979PPKzPmh8cj455c+bF18vfrtqLJgDPuVo9+kfY3NrogAZm2msmhu3tZCvpuPjZxmlYC2Yq6H4X8jz2A1u7kVOzREo0px62/K7G3E0puKVspbu7aSbfNbvdC9k53+PHHaJNTNTdUXUXkdXVq1eojdyMJ6qx7il4Wx7NG99BBf387+8mnlkT2EtGslD1pbs3Yt7Wxd7yHcfYL7SGph3ksP0XZNtLvihSaau9mlHnXjVimsX485t4LzCwEIQAACPxiBCWVcdKumok34tNNTJY8XZcZ6TD6z6BPR3k6o9TKsre2QJ2O1iAG+7M8TWSu849ceq81zgdiqyzBmfPNbbT3Siwv1pavji4Ej+qa7E5v/8evV1N+uD+dW5Hpg6cSUhpoGbney42joHxWl2/fs37Zif7elos1sVVQtSlwytscWqvplfm5XjKPVR+OdVnY+LoxWyr3/tpU5eo+WOyEAgdYEsC1qwsY0CWhyxX3KHzu8+CJTz0YeKsWjTz+/n5qYfN/oC3ti89u3/fnJNz5xWbK7Mifu5sTTbb2LPXfEvR9p+Y9uV0q9R+X1zkB/1uB6gZx7LSHhGgh0X+myJtrSfvFXUQJpxZOaVjK2Mit2JraZkKEYGl/6xaFdqIpeSISqdzGHDuTdrLLnvj09EclH3yJbv86IXc/t0Ypp8vx+5UhNgIrs/mp7A/DarhtK23BC/77ZcLbxhNlDjPkf7q0eItKshyhKDzEl/utvT40eooXD7MYEuj8j8wjdrpS6j6LrO95OOaqz67utG14i51ba/EIAAhCAwPMQGJ0Qvw++m2s1Fa2YvxiJRCbNGetV5bXIpzs28pYVr2O1h9h0Ux0P4ToG8S/srsjsb9lGZn91fZnreKsVwNNoGPl1S6ywH26cUtGtMgzf2apJRaZ7Sivibn9HF06y628lleLqzKd676jdRkZ4CEBgUAlgW9SyZmpmES2DiI5+SqaeLfnEcCL/22//9qVYUf5ir/Yvas5Z1M2B2NZJbMun3RSPfts5zN7eZj/FLm7y3z714yXKmbvK0a5MDfONzKwf7qy8s2w0xQ/yau393Bm+H/vVqgzp3RdEE5sDx/YSOXckz253BHqsdP+7yTHf1b2SAmPmI6N8XZ/s3v32+Wpla+ruN+W62uXf2lc9ycqXK3EZFps4qs/kTfbEtC7Ssv9+8eAfnxzXbgz/zf43b2OrW78uTdkf0cybPbXr+oSaHgeW8rZHpKYB1EnVQxStHmL3pHgvPcT7q/3zhh7ii9lDHO4ent4oh9kXt/nievcNq2VO9AvSzvLP3UPILFhR6jl0fe2zaF1t7CGeP+dWXviFAAQgAIFnIjCunPtV7yuiMjopitnKr1P373ezWW3+nZqIFhif6DIffbRG6YMAYXi29o+MaA+nqysxy9S6izJ5G8e106MLbWR8SqQiY92bkTcTsdVft/osFU2snH4bX/+n1dPs6szN+kl2paF2xG+RsQZLsyJ6kqOsG5XjBWufXwhA4PkIYFvUhPXMjOrtzrO2t9omYdynxHBibvPw2/W5cm308NVhO+EM55+IrOycXsgsX3mDrZy613RyBux5//pCfYx5s7BZUxWJLYcaX59k0+1ZtesbGdPt7ebwY9PF1DWfQz0kSzVsincax/bMOXekzG53BLqp9PqYteK1+jI4OelQghi+rqv5kytZVCMrHh9d/q1FWXSqlEUtttu8Wj7N57va2r3yvZnfP8kWrw2vTVcXpzt1QlH37bpFqr7xiHKcVHH52W4V1jhv9BDFq3M1kVRr10PsZlUPIV9W75+uhxit7yEsE632hej+6psxsRzz3V05G7u4xt9spryu7yH+5rxJJgDofduz5bz7snIHBCAAAQj0gcD4lJKkq999+ey5791cLDA/+9Z3cZrVbu5E2uzGWFXGajWYdjFWt8z+zMxbuXZ+6v3FoFlUIvzqrrJn/359IsvUaMVV0+N1s8CtznkaDUUquvaNLux/OS2a7r2vL7K7DVJRPwo1Gts9/7I+MfJwszv3fv3cIeu3KgHnIQCBH4oA2qIm1SVLdEsH+vB1debj0XmlZceX//h+fvPo/K5qhdAq1/rLsE/eJK3tbndeTBzyN3YgsTAyVwaVMazfmzEd+bu8eet5EpOno4/vpxx+hfubYCSmVlK72/1vW3p62k3244zMYbZ4mImNvVVGt9Uvu1ldq1Qtbs3NyHpS7qw8c87diXPUBQFvld4YoXaT/zSnHkX/7IK4H6ht/oWlDyMyu/7z+uGprMXm8m+tLIvkU5L4k3Z67tb3r7aU64Jrw0P2vdKIfv96WLyrVmtNrZaGvuexXdfd1fQwMqdmwt3t/tPsZv6m7nmv3ZD/GFmo7yGudAdQjrZ/t7MQ+/iMPYRKWunmaj1EZGpLOYZ4im10dk4Ug9rX9RWj8Ys3qdmZValm1zYmjrGk+k5qPcTsO1nFxhVGXC08a87diXMEAQhAAALeCNwdxsQxdUwtByzDpHGw6zw4VJ81220TgYBMNc9vnRQfxDGmmKbOz4m66GhLLYQ61pVpkYzVIpDf7cbm2o3V7fJiXZPRTL0Y5FdnVtu9GFjBm/5q2RW1TtnY0tHuO9/E5qHp8XpLh+O+4+ZwflItABZZb5zg5Wk0vL+Xr0DVfCep6PGFMvI9tZIV/+Bv5EP4z++W9OXt7fIov0Utt84G2nY84hxcPVhMeasRYQ8Cz0RgaGeiqaW96xjXjFUDK7vrp/O7N9+/bv381e3p2mmG+lC5Ptn6+cQdQGZlra873oa1+7v80Wq+fhLNSGxz1WFgUZeVXg9lXH1zmv1+f7Qw5UhwxD/yoD30FmcTTg7D0dj60lj+t/uKM72xpaXxoyOHXYBf3v+3VvOyXun7iU9mLkYmPkzcfXW8o3rLecOculr2nBXTW1Ff+V19Y9ek0v1v1+dHd52VbsKs1Y9Fd/yXL7v2nHnzZGxlblTMbU6/SuP5+FGMb+zNmIY2Epurv0U0SB9ibzevb69EXbSwEJn/4C9+rZyuxFxup0f845FfDz8rjYXaPLZrI7BaGd7RiPSTtYcs8uvubFHWAbk9WZ07MW4w/9e6EREs76+a9xCfHD3Ew/3d16PVr/VpjXz4l6fpIUZlWcf6HmLE//BQp51xFarNQXtOgaX1D/urX12N3x9Zit0ciRmZtflnVz5srX7VXD3E29jEXd7dQ3jI+d1WJKZWYbO3WvacFWNfZgcCEIAABPpJ4O5IN5y/Oz25+7TpO/p3pRpSB+tyYFyRnxVrBfemKY+LHc9RUdaHkYVW9MFS1EUTu7snanyPzHQlOke2dtRY/f2mYax2iLJNM1F/UgkQ2fnd2+/5rZ/zbrm/JhrU3+Q8vtmKfZKV3wNLh6a3oonNvy/l547uj+ZXZi7c3q7z+7vXutR+f7p7tB5zL/4l8nLn0VACjRTz9/VSkX9kPLJ1uO+Uih5VKEcBR2M7F1/ezi7tXvztfeT2S9G1JI8jXK+7+X1dzfg9eyILyzpkKDO+htHfVxv+vVVQrxnjPgi8egLYFjWv4omVrDiwnn0bcBgB1IeM7Wf3lyLjI7YlkX/s7dzml/P8imMsG9/88rsejxXRiHTVS/v5617WzKzPQePxu5384dKkteDByNjE7E7+5rS2mFTjHY87M/6p+EVWWzAKN/JmaunwvPhxrG5eiywamt+JqTVR1SYv8OuHxeynKZmY7tieO+eOpNntjoBUen5HnLvrd42MSXV+O12JjFlPePPIRHEzOb+Tvcp/mmgMMPXRdGv9dn5ePinam5b/qqahvfvQqCzSvzaqqK5PZVVbf2QhpuY8+cQXgPypPbU9aHdfP8UitQ93Xtq1cWun/34xvf6m2r/fTq3hFquHsEOMBN7ONvYQ//v3zbm3Y3Y8SphTPYTbs1FD5D2eeLf7H4dLU7qdjsSguizVQyy4G2OPcTe7zR/7XNyff2vGPzIe28lfHUZ87i5CAv3Hzgerh5DySw9xul7fQzxzzpuVhnMQgAAEINCWwLh8MZQA47Pz8jO+9N+dB8YVI0C7SMbH9QFdLblrBBtVk9HU9mbcIWAb19r/l7H6Qh+ra7J6+xtaXxUXPerFYKKDtNM0ApmCNq++ZIwt/d3h2VrZF4lprXxPWXWbEMVW1yeV5OAfm11XFkjuzcs47lffYNVtulBkv6doD3f5T7H3Tqmo90K5c6WOplZOizsfxmY+/uL87tcYrpczsVX95erN3HwzibCXGLkHAhDwRuAvf/75p7eQgxjqjz/++Md//IdBzNkw58lQ8PMlv6dn4D//8/8M4yNdOYy9373zzfx6dbRgSzXeAWon81Ob1/LJLvvNIYeJY6FPCytiwyIT2a4aDJq8x07IfhMw7Nz42tdvrsQHAQhAoL8EhlQm6S/EF4hN+zI/9bdrUU5li26paH1h5VQcRM4eXiMVvUC9kCQE+kxAuuiffvqpz5E2RIdtUQMSTkAAAs9KQPuyKqoi35vZj72oisQvTvZETVma/GV9wpXvQOT/VR4u2SAAAQhAAAIQgMCQENBOdaloaqVBKppXa3SwQQACEOiCANqiLmARFAIQ6DMB7eZo6Z18AfONxLa23j0q8uvfxI2l7eNad/H+P05l5v+IOOZ+VMTcDAEIQAACEIAABH4oAleH9VLR6qrM3ZfJ+0hFP1RFklkIvCyBofVy/bLYSR0Cw07gbut9THxYmltg6aR3T17+uV+Ul+SHyunqnMvLtYrc/2F3p9EfopUuvxCAAAQgAAEIQOAVEbDWjrhvJhWNfNjZRSp6RbVNUSDw1ASwLXpqwsQPAQi0IaA7Wv7m8jfUJnTzS+Il+Trvdjkvnh0Nl9JXT+MtunlGOAsBCEAAAhCAAARelIBIRVe6VGQvoCF21uZSPE+0hsaLlpfEIQCBJySAl+snhEvUEOiWAB4luyVGeAhAAAIQgAAEnoIAMslTUCVOCEAAAn0hgJfrvmAkEghAAAIQgAAEIAABCEAAAhCAAAQgAIEuCDATrQtYBIUABCAAAQhAAAIQgAAEIAABCEAAAq+eANqiV1/FFBACEIAABCAAAQhAAAIQgAAEIAABCHRBAG1RF7AICgEIQAACEIAABCAAAQhAAAIQgAAEXj0BtEWvvoopIAQgAAEIQAACEIAABCAAAQhAAAIQ6IIA2qIuYBEUAhCAAAQgAAEIQAACEIAABCAAAQi8egJoi159FVNACEAAAhCAAAQgAAEIQAACEIAABCDQBQG0RV3AIigEIAABCEAAAhCAAAQgAAEIQAACEHj1BNAWvfoqpoAQgAAEIAABCEAAAhCAAAQgAAEIQKALAmiLuoBFUAhAAAIQgAAEIAABCEAAAhCAAAQg8OoJoC169VVMASEAAQhAAAIQgAAEIAABCEAAAhCAQBcE0BZ1AYugEIAABCAAAQhAAAIQgAAEIAABCEDg1RNAW/Tqq5gCQgACEIAABCAAAQhAAAIQgAAEIACBLgigLeoCFkEhAAEIQAACEIAABCAAAQhAAAIQgMCrJ4C26NVXMQWEAAQgAAEIQAACEIAABCAAAQhAAAJdEEBb1AUsgkIAAhCAAAQgAAEIQAACEIAABCAAgVdPAG3Rq69iCggBCEAAAhCAAAQgAAEIQAACEIAABLoggLaoC1gEhQAEIAABCEAAAhCAAAQgAAEIQAACr54A2qJXX8UUEAIQgAAEIAABCEAAAhCAAAQgAAEIdEHgL3/++WcXwQcs6B9//DFgOSI7EIAABCAAgRcm4PePaNrDC2eC5CEAAQhAAAIQgAAEnozATz/99GRxmxH/9akTeOr4n4HRUxeB+CFgExAFKI+0TYMdCEAAAhCAAAReigAyyUuRJ10IQAACHQk8j90MM9E6VgQBIAABCEAAAhCAAAQgAAEIQAACEIDAEBFAWzRElU1RIQABCEAAAhCAAAQgAAEIQAACEIBARwJoizoiIgAEIAABCEAAAhCAAAQgAAEIQAACEBgiAmiLhqiyKSoEIAABCEAAAhCAAAQgAAEIQAACEOhIAG1RR0QEgAAEIAABCEAAAhCAAAQgAAEIQAACQ0QAbdEQVTZFhQAEIAABCEAAAhCAAAQgAAEIQAACHQmgLeqIiAAQgAAEIAABCEAAAhCAAAQgAAEIQGCICKAtGqLKpqgQgAAEIAABCEAAAhCAAAQgAAEIQKAjAbRFHRERAAIQgAAEIAABCEAAAhCAAAQgAAEIDBEBtEVDVNkUFQIQgAAEIAABCEAAAhCAAAQgAAEIdCSAtqgjIgJAAAIQgAAEIAABCEAAAhCAAAQgAIEhIoC2aIgqm6JCAAIQgAAEIAABCEAAAhCAAAQgAIGOBNAWdUREAAhAAAIQgAAEIAABCEAAAhCAAAQgMEQE0BYNUWVTVAhAAAIQgAAEIAABCEAAAhCAAAQg0JEA2qKOiAgAAQhAAAIQgAAEIAABCEAAAhCAAASGiADaoiGqbIoKAQhAAAIQgAAEIAABCEAAAhCAAAQ6EkBb1BERASAAAQhAAAIQgAAEIAABCEAAAhCAwBARQFs0RJVNUSEAAQhAAAIQgAAEIAABCEAAAhCAQEcCaIs6IiIABCAAAQhAAAIQgAAEIAABCEAAAhAYIgJoi4aosikqBCAAAQhAAAIQgAAEIAABCEAAAhDoSABtUUdEBIAABCAAAQhAAAIQgAAEIAABCEAAAkNEAG3REFU2RYUABCAAAQhAAAIQgAAEIAABCEAAAh0JoC3qiIgAEIAABCAAAQhAAAIQgAAEIAABCEBgiAigLRqiyqaoEIAABCAAAQhAAAIQgAAEIAABCECgIwG0RR0RDWmA3HJQtuXckBb/xy12ObMWD4dU5RlbOFV2F6acTqjL4bWC5r7wmKNyKqzirE/rMVFy72AToMoHu37IHQQgAIHXTIAx6JXUrlGRoVA4nkzlyq+kUBQDAq+JwLBqi7RSZiMRDVkv1aFQdPmgUHnRmtUK24vx6fh2+YlzYaiBTFVCkx8URE9cAU8ZfWEtFF3LlCpt9EDl9MGlulzJpAtPmJXGx0wkgbW0nnSPyRoShTyyobWzHqPo4rZK4SDpULup3GdKbbh2EXWvQcvHa9JpJXO93u/xvsaqc3cT9BAeQRIMAhCAAAQgAAEPBDStUsqlk9FgdOOsuahVvUyvxad1eQQxxANRgkCgbwSGUVuk5damQ/G148uyZvVImlYubC8nXtQyolLInJWqVStLfatiIhoaApWDVEaen9H4Xq5UtrazVNAFILicnPbLmUBiOeq68NQHIglkUonpZK7HR7yczlV8/tFRn0/LHT+tuqh0EA+Fl7dzDrWbyv1a/Mk1NW0roZTLODqttkG5CAEIQAACEIAABAadQDB1JgJr6TJ3sKik0/LxYjRVcmZavu8rNdF0IpUpVZ0X2IcABJ6FwPBpi0qpaDKjuptAPHV8Zr5Ul86O9xanA4FnYf7CicTTlh5Bfg+iKjfRA8epdPyFM0jyvRK4PCv7fP749kEipPRBLbbgckY99md70TaBWtzb7enakyVNbCMsCWq5vXRPo72hLIpvb4QlkkLmstuseA6v5ZYT28qKyD+9eGCr3eSb10Y8MOo5lh84ID3ED1x5ZB0CEIAABCDwbASqmWTYeKt6XJL+0VB8O1M6ToicVUmvHdQExcJGQky7qyKTLadTIgGyQQACz0xg2LRF5dRyuiLvgdG9y7OD5XDAfF/2B8KJ7UwmGXxm/CQHgf4RKJ+VJLLRQKh/UfYvJmliyXRqWiKslMs9RGsqixLxREIiqeaOL3uIxMMtWi6pO3QKiE4tsx231W7+UDR5cLYX9xAFQSAAAQhAAAIQgMCrJ3C5t5eryIyNaKo/Qll4LREQaKVCwUYXXUwERVF0KebpUeutzb7IDgQg8PQEhkxbVNg7Fl2Rbzp1oLTXrTfDQ4o+MbacSVr+jeR9MaNud27VwsFy1HZ/pLwfVZ2X1b5WyqUcHlAMH0l2KNtJSFSpsUSjHnU6CWlwG6x8GE+b6YWmxZVKWSVR2/To9LuqhVTC9HYcEvvNFvOAa3c221PzflQ8ZopN46mcpV0uoJR/l7IzMh3mtNiVaqKgs1g1Y+m8if2+E7CfNPMBazbvWw+zmFFejeznrGmty2OhKtN+8uN6w+qQ52pVPfaBYFAPd7mh5p83c8OTS6p4oweOxqYri3zheFRsp+IhURcV3A+ZitGdJUczcreitk22mt5Tzr9HE3u6ZkvPaNN/nhta2+SMqNv3ELa7pmCyoMIXko6iNTqi75Se54wbeev0PxAK+PQ+0shUs3bdvniSAD1EJ8pchwAEIDAkBPQxSomMzTZjPFRCirV5GINkkKlJNMFmkrMRbZ9kfitn7t+SvhRIMLSo/AXUtvK2WiFEvDEWaue87HUcV/VI+iEVdcjNdKpwti2G42r9lH6YGFnJabarEJ8vvF0QRdGodYlfCEDgmQkMl7ZIlNWqm44mF/1eOIt2Iy5Og3OWfyOtnFuLLjvcrkjvP728XShbfb/u/Wg67B7lcsl4Mu3wgGL4SArBMMKnAAAgAElEQVQ74/GSGQkjU2R0H8aWbyOtKnN5o6EmMVVF0a808aa3Y018w8k84LLHdGrB/JXjeFjiMVM04nH54S6nEosplwso5d8lWsdAGYOI9mGxxqqBZS1R9roioEtW+qt6U31jM51Qh/gvD+LTYWX3azzXjU+P8vxlPPj2k+8Y15vHLqLNWkIeHX98bdkY86fXlC2f+CDKue/QjtOqjYWTywH7QiWnfNBHF+NyZjSRkPsquXTZviw70jjE05C0RStLzou1/U5NtlAoSeBAYi1cu6fNXqeG1ik5Per+9RA+T+mpRDtlvE2Z6y4VNqb1PtI4rbdrt2sqj8Wjh6gDyyEEIACBISQQDIqIUG1hg1wqiyjgd7mN6DQGeZec+yPzt6iyUKpwINP/tbO1xWNbTCmlFtVnMbFl3ou2uK/5aS/jap+kouYZcJ4NLB5fHotFkBINH2lipJXSG/q3R38w6HemwT4EIPCCBIZLW1QuV4V1IBgyide+2utv224TBJ/vLC3uSwKWy+DLtDKP1AoH1oeBwlpCzIEcLoVLZ+llmblSSSedVhEyNUhMjnKXtoskM57UXlllw3YSUtBfjgPLBYcPobLDRXHlIJEsaP7Qctr2tpTbi49KjtbWcmaBzJ9KZjtTVTN8jZCFlHIcVzneO3MH63xUPZNloKwSljJ6DitpVzyBQCiROi6YpSuLHZV8ZBAGe/V5KpWMzKviGT5zHCw7Z4UQjyVgP2mmt6qW8WklmSBeX+u1p0fN1VKev+yWobwTHiSk1hu3mh1MKC5fndTDexC3QgaWk2G5pZCuiU5yqGUy8pz648sOlW4lc1wWk0CxLFJbIB6VllgpiNNreytsqPljeusw2o/RFiVwslBrRR2bbPmyrKIMhYPqR7aaLk7vIup0bx0aWsfkjDQ69BCGA0hVqiZexsplh58xr+kJvH71EL7LnHQ1ql5VBs12nbP7SL2A7TtAk4HkiR7CZsEOBCAAgSElEAwFpeQlYzCuY1BVyiIZoadr5zuMQV1Izv2S+Wt5c+/54wd7Sv653EgY7wgl3TWGP3pQSIXcQTsfdR5X+yQVdc6KCuEP751ZJkbTazn1qtXVVj2I6zJWKG5MhAitKReVbBCAwGAQGC5tUbfMA4nj0pnlMng0uhaXl1R5qdFfUrVj9Uo0nbKvq+8d0VRGTWApZ3Q/2kZy8b2zdCoeGpUxQm0SaC8VlZ1KuaSOvW6Xewclnz+RztXm7fpDiQP1lq4VcgV3NP7w9llthq+sgqW6XU2fB+QO2PFIPnmIJkD33uKfTundtyueYDKT21sO2x8B5MVxe1Fhuqwf6mVEvFSZV0kGEhuLo/JrslSn2HokUFMCNdU3OpQJ3hMILOda1roxV0vJN1bLkId6NKTWKuu0yVej5KJjbrs/kVAP5tmxpYCVAy2j1jsbTSTjtdgMZVEobumZgnGlkSwfO+aFasoQajSxbT5g8ohFU9u6s8RSyYrIc5O1buj8266heU6uTz2E5/RUsdplvHOxnSHEB9xZ23btuXj0EE6u7EMAAhAYRgKGVYk1EUk7TogawfpQU62IHsIfDJjytI6n7RjUleQsomkfZP42dSb6Iv2ra2lbltIwPu9I7muf0NrcWnfJw7j67FKRMjFSXj6U2+v4wWVdjtsfjgb1dwMJ5A/I+iJnuaR13P4+rkIAAs9B4K/PkcjApqG+2qdU7sTIyJjG48pqIL6m3krtzQ6uzpydqb7wMhUKptShexNjC5k3Y50rZzbW9mQdqrpJMvJ6632rnl3KIOnLLAYzTW5SxiDOOb3hZV1jY4dUGgX7oJudaMrlvmVanJScVdwRyLzoje10wbHYuHG9rniBxZT1sq+uq29D6YIRkv8DRkBqPeTIkrvWz3Rf2jIpzNk0HKFdu7Immqmu0ipnx6lkKldKLy6HL9PG3f7FZfmQJJqpdGXRkA0qaSVjBBLJ6Vo8prIooSsY9dNhST2TUUrZZHJUP+NX2thqZiMVTxsKo0ohtaF0tvoFI64umqyduN1yxMjIcBtkX1I77RpaF8n1o4fopkdqn3FXCTsdSLtWSjlra9quvRWPHsKCyC8EIACB4SUgDhHFtkgJrSFlbHwpJAoyYz0eV2crcjY07YDTdgzqTnLul8zvyF3DrkxI274MbciE/2W5Jt9jTWmoIWCnEx3H1aeSitplzB/fuzyohpIF0YclRi8zNamt3V32NZlc4ZhQYZ9mBwIQeGECw2VbZLw5VqvlPlDX1fad45FpO+JryOnYp/M9zULoX1SaXXjZczI5RhzYOLwyvWx2SP2ZCMj8wy5TkjXRlg/OtkXI0wrHBfvmeFLpGmwzIUMxJMZwQTuE6IAyZRGqwjLr0t7CCaVuKmWOq+ap6LZysyjGS2Lnpm/ibqskU9Oie9tR6y4PTXY0oCdS0aesWvf1+OshORVzv3oIsR2sU9D2mO/+3ta34vU3W8QGAQhAAAIDSWA0FFLju26fXsid+aPRaXPGujERTXds5C3nfZSc+zbC+hf3TMMZv5hDdytK6eX2NK72SSryBtoMJV6ZwuIyQ7wCbGS6VRV1lRCBIQCB5yQwXLZF4XDIl7nUcuIYJRruC+aa7UTz6CrpbeWx1x/eSO8lwwEzUHM7heYxuM4OmuI9t71XlgwGEgfp2mLjzQ21XOXg4AcnoGtcg10Xwh+eDvguK0oKjJt3K1/Xx9vlg73L5PZ0+UC5rnb5t/ZVjzMlSUgtFpiWX9em1EWGdZGWSZ9p/uB0UJwu6b7dZXJcfG17e3lapE7X1rbJjk6LlFoSj9wZLblcf6crGq8HbZOTSPrcQ/g6pec1330K1+/i9SlbRAMBCEAAAgNKIKg+21QrFVEZHRdkivL2dCW8ncloi2E1Ea3metRr9vsoOfdhhDU8W/v9fk3LJJfjlqm118JIOG/jap+kIu/5qhwvRjfONPEJcFBQTlW72mw77q7uIjAEIPAsBIbMtiixqJREWmbNvWxZL6iV5knmo2VybW++PCvL9dHFVE1VJOmrAa/Fpvm0pleCUTUpzu3Zt2nA5zxZPrtUuQ1v7MXVpyBzq/TiH8m6md9BJ6Ab6GmXhvcuM7Olg6S+ikWnvGuFS5H/fNPTwVpIw9d1NXd86bs8EE9Ebv/WlrKoFt61V8opZayaEbp9Kc3sIJOzXcBfij8tt6rIS5MNL+vzqi633et6uRL1eOAlOcl5tz2Er25Cq50bb+nZwZ9np/viPU++SAUCEIAABAaTQHB6WgRlkSTVp12xJA4sJkIibWc0YyKaU4DoUIA+Ss79GWFlnTJ9eZxEWl83RiskTY/XHQriuuxpXO2bVORKutWBdrYRDStVUVB8nXatKmoVK+chAIHBIDBc2iKff3FbtwCtpOPhZPpMN0KQihD1TXMdTZtKknW8RV0k9qDTjogawptz3+RVWE9AnLekk+GQw9Fv7Y6A+ASSzynHa6mCeqOu36L63JvydjS+kZMpNgOxmfN2LjOmu2GxydhIhBYzA5K9gWD06jIRjcsisL7ydiKlP9NaKZOcjsvigZ0KKg/HWlw9+f7EYtwZWDkv8st8s721A3E05PZvbSqLxLu7WnLLtZXUrDbfpeEhu6IUsNXcQaFcrbZsy56a7HRqW3Ij0+WS0wlHS9OsvsKZ8/b7npIz/SopZZlOsF0P4RtVzpl8Z6llWamwMW1v6TXe96RnuugAnzQfRA4BCEAAAs9CQDwUyHzw6HZJpdbs4KDcIR+hQEDsinKy3K4mPhLVF1elLkqn1EKo3ZkW9U9y7scIq2WW1eqtgeXjvbAvlEqrdYbFw0+zz9clWUZEzaoPr+UahntP42r/pKIOlSXfsY8Xpxdl4VrltUjWYO4YvkmA0rZ6ZmQ1tYbCNgnMKQhA4JkJDJm2yOcLbshSTqNCuZJLLYb1zjgYFAWHvGx2uQWSexvKoqbqiEj17bJZyzeIp+tF3Ryzkjb6/VB4UQ13YoLamJhfloGS0w7XKxJTOFW2Qka391TGtdJxMm7mW0/MFcgK/Dy/o8vLalzQCmuGsxhZJV1eepuW7nkyRCqtCTjWgjfcNddWt689r61vr12JbygJR2yh9Wda5nvlZAn1jeVwLURtr5ZGUB4O5X9IFtHbi9YC6Hu68yKtkBE5IZhcU4+UtRnT0PzxRNQ6Y//64/GQHBjqIsPpdiWzHJ2enq61jlAoqidq3uSpyapFS/SGrV06WloodWan7HXHU3Jd9BC+8JpOvlpYc/QAtcrzlJ7XzPcpXDfF61OSRAMBCEAAAi9GoJxWM8plbWDRH/iaHhgB2mQwqGz3K5m0qSwy1UUlfVp6KBxsc2fDpf5Jzo8eYUup6JpY3wSW06a3IlNfJMLUcr2WJLe3bXxBqmS205W6UnkaV/soFdUl7z68TNlGRaLhkpeUXrbcnq5BrGYcXi0d8TSIrz5btnS8JDluYBcCEOgrgaHTFolpg2i/LzOpRChg62z84vAksXxwnAp2BTeUzJkRtb4tvFdIL0/rNgESyB8IJfYK5VzTdQLkNfUsvREN2tmqi1Vl/OxguXWAuvDPcOhfzMj05KDfSEowRjfSlyX5aML2igkEN86k1s0lbP0BqXNZ7TRqHrcqt2pji3u5UmFDpMD6TTkv0s+FFl2L+Wm5XEnOh+NR/ar7n/61UdRFYp4u3qwNtaxSxDq0lZpWzq1Fw7UPd16arKy4kpR8ulqaX1quaHoze3F3HjoceUmuix5CdN1CXvVcLdL1kl6LW5/qdDfFe6o8EC8EIAABCDwTgeDyclCSCiYW5afpgRGgXXYsR9YyshvBzPFe9EZBibWbrY+S82NGWHMKmkNXpAph6ovkk2vd5Pf42oY+k94fSBjf51xF9jKu9lcqciXvOpheW4sHejcqMuKKGzLgaGIx6oqcAwhAYCAI/OXPP/8ciIz0lIk//vjjp59+6ulWboLAIBIY0ke6chANb5d94e3S8WIrVUib6tKOE7IirYhhuTPnCiOVwlpiWblCEhcBDQZNbaLjEgQgAAEIQAACviGVSX74mkcq+uGrkAJAwAuB5+mih9C2yAt8wkAAAs9GQDtOiqpIXBat9aIqkqmQGXGRLc6zk3V2S4HoYrgH3dOzlZuEIAABCEAAAhCAQH8JIBX1lyexQWC4CaAtGu76p/QQeFkC4qdrcVrsgmSG6Pb246YwXh6IW2rbx7XuLzops9RkmlrTmWwvW25ShwAEIAABCEAAAk9GAKnoydASMQSGiQAz0YaptinrwBN4HpPCQcBQToWjNeeN9ZPIusuhvjRhvZdIMwpxB3Z5oPzHs0EAAhCAAAQg0AWB4ZFJuoDyAwRFKvoBKoksQuDxBJ6ni8a26PE1RQwQgEDPBHTP72cuf0NdxyUaoTq31GJRpCJOZS5LqIq65skNEIAABCAAAQj8qASQin7UmiPfEBhAAtgWDWClkKXhJfA8SuLh5UvJIQABCEAAAhDwRgCZxBsnQkEAAhB4AQLP00VjW/QCVUuSEIAABCAAAQhAAAIQgAAEIAABCEBgYAmgLRrYqiFjEIAABCAAAQhAAAIQgAAEIAABCEDgBQigLXoB6CQJAQhAAAIQgAAEIAABCEAAAhCAAAQGlgDaov+/vfuFTl3LFzjOrDVrwVXtKHgjHmvMwYEDx1HNKHB0FEcdRhU1oIajmlHlKaouV12eKg7UTdWJK446amZh5oGjaoKa99sJgYRyIGnpKYd+I1r+5M/OZyc7Oz/23jnYrCFhCCCAAAIIIIAAAggggAACCCCAwBsIEC16A3Q2iQACCCCAAAIIIIAAAggggAACCBysANGig80aEoYAAggggAACCCCAAAIIIIAAAgi8gQDRojdAZ5MIIIAAAggggAACCCCAAAIIIIDAwQoQLTrYrCFhCCCAAAIIIIAAAggggAACCCCAwBsIEC16A3Q2iQACCCCAAAIIIIAAAggggAACCBysANGig80aEoYAAggggAACCCCAAAIIIIAAAgi8gQDRojdAZ5MIIIAAAggggAACCCCAAAIIIIDAwQoQLTrYrCFhCCCAAAIIIIAAAggggAACCCCAwBsIEC16A3Q2iQACCCCAAAIIIIAAAggggAACCBysANGig80aEoYAAggggAACCCCAAAIIIIAAAgi8gQDRojdAZ5MIIIAAAggggAACCCCAAAIIIIDAwQoQLTrYrCFhCCCAAAIIIIAAAggggAACCCCAwBsIEC16A3Q2iQACCCCAAAIIIIAAAggggAACCBysANGig80aEoYAAggggAACCCCAAAIIIIAAAgi8gQDRojdAZ5MIIIAAAggggAACCCCAAAIIIIDAwQr87j//+c/BJm5nwv75z3/unIcZEEAAAQQQeFcCP/3007///e93tcvsLAIIIIAAAggg8K4E/vSnP732/v7+tTfw2uv/4x//67U3wfoR+G4C//rX/3FIfzdtNoTAEQv84Q+nR7x37BoCCHwHAeok3wGZTSCAAALPE5Ai+nkLhlqKnmihuJgZAQQQQAABBBBAAAEEEEAAAQQQOHIBokVHnsHsHgIIIIAAAggggAACCCCAAAIIIBBKgGhRKC5mRgABBBBAAAEEEEAAAQQQQAABBI5cgGjRkWcwu4cAAggggAACCCCAAAIIIIAAAgiEEiBaFIqLmRFAAAEEEEAAAQQQQAABBBBAAIEjFyBadOQZzO4hgAACCCCAAAIIIIAAAggggAACoQSIFoXiYmYEEEAAAQQQQAABBBBAAAEEEEDgyAWIFh15BrN7CCCAAAIIIIAAAggggAACCCCAQCgBokWhuJgZAQQQQAABBBBAAAEEEEAAAQQQOHIBokVHnsHsHgIIIIAAAggggAACCCCAAAIIIBBKgGhRKC5mRgABBBBAAAEEEEAAAQQQQAABBI5cgGjRkWcwu4cAAggggAACCCCAAAIIIIAAAgiEEiBaFIqLmRFAAAEEEEAAAQQQQAABBBBAAIEjFyBadOQZzO4hgAACCCCAAAIIIIAAAggggAACoQSIFoXiYmYEEEAAAQQQQAABBBBAAAEEEEDgyAWIFh15BrN7CCCAAAIIIIAAAggggAACCCCAQCgBokWhuJgZAQQQQAABBBBAAAEEEEAAAQQQOHIBokVHnsHsHgII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" alt="" width="961" height="440" />
也就是说符合上述命名规范的自定义方法,Spring Data同样会帮助我们去实现这些方法,这样一来又方便了许多。
但是如果我的命名不符合规范,我是否一定要实现这个接口并重写相关方法,这样其实也是可行的,不过Spring Data还提供了@Query方法注解,供我们自定义操作语句去实现它。例如上面的findByName方法,类似的我们在接口中新建一个任意方法名的如下方法:
@Query("from Person p where p.name = (:name)")
List<Person> abc(@Param("name")String name);
然后在测试类中引用该方法,能实现与findByName相同的查询效果。
这里方法名给了个adc,同时方法上面注解定义了查询语句,用过Hibernate的HQL语句的应该比较熟悉,这不禁让人想起,当初Hibernate用的人用起来都说好啊好啊,面向对象思维啊,全自动啊,一句SQL都不用写啊,真牛逼啊!然后全是HQL.....
Spring Data还有很多特性,如果有兴趣也可以继续深入学习一下。
小结
目前来看,除了主流的MyBatis、Hibernate,Spring Data Jpa也有不少公司在使用,而且Spring Boot系列中基于Spring Data的数据访问也有使用到,毕竟Spring系列。个人比较喜欢Spring Data Jpa的点在数据库通用操作的封装,以及这些便利命名方法,这使得我们在业务逻辑相对简单的情况下,能节省很多代码和时间。但是问题是我们大多时候我们要攻克去专注的往往是那些复杂的业务逻辑,而在这点上Spring Data Jpa并无明显优势,莫非这就是在知乎上搜素"Spring Data怎么样"连话题都搜不出来的原因....同时高封装会不会引发低可控,如同以前用Hibernate,它自动帮助我们发送SQL,但是简便的同时不会有像MyBatis那样看到自己写SQL的透明度来得直观,同时SQL优化等东西似乎没那么好掌控,这些应该是项目技术选型初始大致都会考虑到的一些问题吧,效率、性能、对开发人群的整体上手难度等等。总的来说,根据应用场景做出最适合项目的选择才是关键吧。
尝试Spring Data Jpa--告别CRUD的更多相关文章
- spring boot学习(4) SpringBoot 之Spring Data Jpa 支持(1)
第一节:Spring Data Jpa 简介 Spring-Data-Jpa JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate ...
- SpringBoot整合持久层技术--(三)Spring Data JPA
简介: JPA(java Persistence API)和SpringData是两个范畴的概念.spring data jpa是spring公司下的spring data项目的一个模块. sprin ...
- SpringBoot总结之Spring Data Jpa
一.Spring Data Jpa简介 JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate.TopLink等. Spring D ...
- Spring Data JPA教程, 第二部分: CRUD(翻译)
我的Spring Data Jpa教程的第一部分描述了,如何配置Spring Data JPA,本博文进一步描述怎样使用Spring Data JPA创建一个简单的CRUD应用.该应用要求如下: pe ...
- Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作
只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 构建了第一个Spring Boot项目. Spring Boot连接MySQL数据库 连接了MySQL数据库. 本文在之前 ...
- Spring Data JPA应用之常规CRUD操作初体验
基于对于一个陌生的技术框架,先使用后研究其实现的原则(大部分本人如此,就如小朋友学习骑自行车不会先研究自行车是怎么动起来的而是先骑会了),对于Spring JPA先通过案例实践其怎么用吧. 用之前得明 ...
- 转:使用 Spring Data JPA 简化 JPA 开发
从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示 ...
- 了解 Spring Data JPA
前言 自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择.它一改之前 EJB 2.x 中实体 B ...
- Spring Data JPA
转自: http://www.cnblogs.com/WangJinYang/p/4257383.html Spring 框架对 JPA 的支持 Spring 框架对 JPA 提供的支持主要体现在如下 ...
随机推荐
- ConstraintLayout知识记录
一.准备工作 1. 确保SDK Tools已经下载了ContraintLayout的支持库. 2. gradle中增加对ConstraintLayout的依赖. compile 'com.andr ...
- vb代码之-------当窗体BorderStyle属性为0时,添加窗口预览到任务栏
入吾QQ群183435019 (学习 交流+唠嗑) 有很多时候,我们为了美观,将会自己画一个标题栏,这时候我们会把原来的标题栏取消掉,最简单的方法是吧窗体的BorderStyle设置成为0, 然后自己 ...
- 如何调用sklearn模块做交叉验证
终于搞明白了如何用sklearn做交叉验证!!! 一般在建立完模型之后,我们要预测模型的好坏,为了试验的可靠性(排除一次测试的偶然性)我们要进行多次测试验证,这时就要用交叉验证. sklearn中的s ...
- centos7配置阿里云yum源
1)下载repo文件 wget http://mirrors.aliyun.com/repo/Centos-7.repo 2)备份并替换系统的repo文件 cp Centos-7.repo /etc/ ...
- Codeforces Round #411 (Div. 2)(A,B,C,D 四水题)
A. Fake NP time limit per test:1 second memory limit per test:256 megabytes input:standard input out ...
- jqgrid 分页 (基于ashx)
1:数据库表创建并往中插入200000条数据: 复制代码 CREATE TABLE [dbo].[T_School]( [ID] [int] IDENTITY(1,1) NOT NULL, [Scho ...
- js获取不带单位的像素值
所谓获取不带单位的像素值就是获取比如元素的宽度.高度.字体大小.外边距.内边距等值但是去掉像素单位. 比如:某一个元素的宽度是100px,现在我要获取这个这个值但是不带单位“px”,对于这种问题你会怎 ...
- oracle设置自动增长序列
我们在用MS SQL Server时,可以为表的主键设置为自动加1的效果;但是在Oracle当中,我们是无法直接设置一个字段为自动加1,需要先建立一个Sequence,然后为这个表创建一个Trigge ...
- final、finally、finalize
final是一个修饰词.可以修饰变量.方法.类 final修饰变量时分为两种 )1.修饰成员变量:该成员变量不可以被二次赋值.也就是说成员变量无法改变.且该成员变量要么在定义时初始化,要么在构造器中进 ...
- vue集成百度UEditor富文本编辑器
在前端开发的项目中.难免会遇到需要在页面上集成一个富文本编辑器.那么.如果你有这个需求.希望可以帮助到你 vue是前端开发者所追捧的框架,简单易上手,但是基于vue的富文本编辑器大多数太过于精简.于是 ...