目录
. 简介
. 进程虚拟地址空间
. 内存映射的原理
. 数据结构
. 对区域的操作
. 地址空间
. 内存映射
. 反向映射
.堆的管理
. 缺页异常的处理
. 用户空间缺页异常的校正
. 内核缺页异常
. 在内核和用户空间之间复制数据
1. 简介
用户层进程的虚拟地址空间是Linux的一个重要抽象,它向每个运行进程提供了同样的系统视图,这使得多个进程可以同时运行,而不会干扰到其他进程内存中的内容,此外,它容许使用各种高级的程序设计技术,如内存映射,学习虚拟内存,同样需要考察可用物理内存中的页帧与所有的进程虚拟地址空间中的页之间的关联: 逆向映射(reverse mapping)技术有助于从虚拟内存页中跟踪到对应的物理内存页,而缺页处理(page fault handling)则允许从块设备按需读取数据填充虚拟地址空间(本质上是从块设备中读取数据物理内存中,并重新建立物理内存到虚拟内存的映射关系)
相对于物理内存的组织,或者内核的虚拟地址空间的管理(内核的虚拟内存是直接线性物理内存映射的),虚拟内存的管理更加复杂
. 每个应用程序都有自身的地址空间,与所有其他应用程序分隔开
. 通常在巨大的线性地址空间中,只有很少的段可用于各个用户空间进程,这些段彼此之间有一定的距离,内核需要一些数据结构,来有效地管理这些"随机"分布的段
. 地址空间只有极小一部分与物理内存页直接关联(建立页表映射),不经常使用的部分,则仅当必要时与页帧关联(基于缺页中断机制的内存换入换出机制)
. 内核信任自身,但无法信任用户进程,因此,各个操作用户地址空间的操作都伴随有各种检查,以确保程序的权限不会超出应用的限制,进而危及系统的稳定性和安全性
. fork-exec模型在UNIX操作系统下用于产生新进程,内核需要借助一些技巧,来尽可能高效地管理用户地址空间
0x1: MMU(memory management unit)
需要明白的是,我们接下来讨论的内容都似乎基于系统有一个内存管理单元MMU,该单元支持使用虚拟内存,大多数"正常"的处理器都包含这个组件
内存管理单元(memory management unit MMU),有时称作分页内存管理单元(paged memory management unit PMMU)。它是一种负责处理*处理器(CPU)的内存访问请求的计算机硬件。它的功能包括
. 虚拟地址到物理地址的转换(即虚拟内存管理)
. 内存保护
. *处理器高速缓存的控制
. 在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换(bank switching,尤其是在8位的系统上)
现代的内存管理单元是以页的方式,分区虚拟地址空间(处理器使用的地址范围)的;页的大小是2的n次方,通常为几KB。地址尾部的n位(页大小的2的次方数)作为页内的偏移量保持不变。其余的地址位(address)为(虚拟)页号。内存管理单元通常借助一种叫做转译旁观缓冲器(Translation Lookaside Buffer TLB)的相联高速缓存(associative cache)来将虚拟页号转换为物理页号。当后备缓冲器中没有转换记录时,则使用一种较慢的机制,其中包括专用硬件(hardware-specific)的数据结构(Data structure)或软件辅助手段
Each process a pointer (mm_struct→pgd) to its own Page Global Directory (PGD) which is a physical page frame. This frame contains an array of type pgd_t which is an architecture specific type defined in <asm/page.h>. The page tables are loaded differently depending on the architecture. On the x86, the process page table is loaded by copying mm_struct→pgd into the cr3 register which has the side effect of flushing the TLB. In fact this is how the function __flush_tlb() is implemented in the architecture dependent code.
Each active entry in the PGD table points to a page frame containing an array of Page Middle Directory (PMD) entries of type pmd_t which in turn points to page frames containing Page Table Entries (PTE) of type pte_t, which finally points to page frames containing the actual user data. In the event the page has been swapped out to backing storage, the swap entry is stored in the PTE and used by do_swap_page() during page fault to find the swap entry containing the page data. The page table layout is illustrated in Figure below
现代操作系统普遍采用多级(四级)页表的方式来组织虚拟内存和物理内存的映射关系,从虚拟地址内存到物理地址内存的翻译就是在进行多级页表的寻址过程
0x2: Describing a Page Table Entry
. _PAGE_PRESENT: Page is resident in memory and not swapped out,该页是否应被高速缓冲的信息
. _PAGE_PROTNONE: Page is resident but not accessable
. _PAGE_RW: Set if the page may be written to
. _PAGE_USER: Set if the page is accessible from user space,"特权位": 哪种进程可以读写该页的信息,例如用户模式(user mode)进程、还是特权模式(supervisor mode)进程
. _PAGE_DIRTY: Set if the page is written to,"脏位"(页面重写标志位)(dirty bit): 表示该页是否被写过
. _PAGE_ACCESSED: Set if the page is accessed,"访问位"(accessed bit): 表示该页最后使用于何时,以便于最近最少使用页面置换算法(least recently used page replacement algorithm)的实现
有时,TLB或PTE会禁止对虚拟页的访问,这可能是因为没有物理随机存取存储器(random access memory)与虚拟页相关联。如果是这种情况,MMU将向CPU发出页错误(page fault)的信号。操作系统将进行处理,也许会尝试寻找RAM的空白帧,同时创建一个新的PTE将之映射到所请求的虚拟地址。如果没有空闲的RAM,可能必须关闭一个已经存在的页面,使用一些替换算法,将之保存到磁盘中(这被称之为页面调度(paging))
Relevant Link:
http://zh.wikipedia.org/wiki/%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E5%8D%95%E5%85%83
https://www.kernel.org/doc/gorman/html/understand/understand006.html
2. 进程虚拟地址空间
各个进程的虚拟地址空间范围为: [0 ~ TASK_SIZE - 1],再往"上"(栈高地址空间)是内核地址空间,在IA-32系统上地址空间的范围为: [0 ~ 2^32] = 4GB,总的地址空间通常按3:1划分
与系统完整性相关的非常重要的一个方面是,用户程序只能访问整个地址空间的下半部分,不能访问内核部分,如果没有预先达成"协议(即IPC机制)",用户进程也不能操作另一个进程的地址空间,因为不同进程的地址空间互相是不可见的
值得注意的是,无论当前哪个用户进程处于活动状态,虚拟地址空间内核部分的内容总是同样的,实现这个功能的技术取决于具体的硬件
. 通过操作各个用户进程的页表,使得虚拟地址空间的上半部分(内核高地址段)看上去总是相同的
. 指示处理器为内核提供一个独立的地址空间,映射在各个用户地址空间之上
虚拟地址空间由许多不同长度的段组成,用于不同的目的,必须分别处理,例如在大多数情况下,不允许修改.text段,但必须可以执行其中内容。另一方面,必须可以修改映射到地址空间中的文本文件内容,而不能允许执行其内容,文件内容只是数据,而并非机器代码
从这里我们也可以看到操作提供的安全机制本质上是一个自上而下的过程,每一级都对上游负责,并对下游提出要求
. 进程ELF的节区中的属性标志指明了当前节区(段)具有哪些属性(R/W/RW/E),这需要操作系统在内存的PTE页表项中提供支持
. PTE中的_PAGE_RW位表示该页具有哪些读写属性,而需要禁止某些内存页的二进制字节被CPU执行,需要底层CPU提供硬件支持
. CPU的NX bit位提供了硬件级的禁止内存页数据执行支持,这也是DEP技术的基础
0x1: 进程地址空间的布局
虚拟地址空间中包含了若干区域,其分布方式是特定于体系结构的,但所有方法都有下列共同成分
. 当前运行代码的二进制代码,该代码通常称之为.text,所处的虚拟内存区域称之为.text段
. 程序使用的动态库的代码
. 存储全局变量和动态产生的数据的堆
. 用于保存局部变量和实现函数/过程调用的栈
. 环境变量和命令行参数的段
. 将文件内容映射到虚拟地址空间中的内存映射
我们知道,系统中的各个进程都具有一个struct mm_struct的实例,关于数据结构的相关知识,参阅另一篇文章
http://www.cnblogs.com/LittleHann/p/3865490.html
//0x1: struct mm_struct
各个体系结构可以通过几个配置选项影响虚拟地址空间的布局
. 如果体系结构想要在不同mmap区域布局之间作出选择,则需要设置HAVE_ARCH_PICK_MMAP_LAYOUT,并提供arch_pick_mmap_layout函数
. 在创建新的内存映射时,除非用户指定了具体的地址,否则内核需要找到一个适当的位置,如果体系结构自身想要选择合适的位置,则必须设置预处理器符号HAVE_ARCH_UNMAPPED_AREA,并相应地定义arch_get_unmapped_area函数
. 在寻找新的内存映射低端内存位置时,通常从较低的内存位置开始,逐渐向较高的内存地址搜索,内核提供了默认的函数arch_get_unmapped_area_topdown用于搜索,但如果某个体系结构想要提供专门的实现,则需要设置预处理符号HAVE_ARCH_UNMAPPED_AREA
. 通常,栈自顶向下增长,具有不同处理方式的体系结构需要设置配置选项CONFIG_STACK_GROWSUP
最后,我们需要考虑进程标志PF_RANDOMIZE,如果设置了该标志,则内核不会为栈和内存映射的起点选择固定位置,而是在每次新进程启动时随机改变这些值的设置,这引入了一些复杂性,例如使得缓冲区溢出攻击更加困难,如果攻击者无法依靠固定地址找到栈,那么想要构建恶意代码,通过缓冲区溢出获得栈内存区域的访问权从而恶意操纵栈的内容,将会困难得多
1. .text段
.text段如何映射到虚拟地址空间中由ELF标准确定,每个体系结构都指定了一个特定的起始地址
. IA-: 起始于0x08048000
//在text段的起始地址与最低的可用地址之间大约有128MB的间距,用于捕获NULL指针,其他体系结构也有类似的缺口
. UltraSparc: 起始于0x100000000
. AMD64: 0x0000000000400000
2. 堆
堆紧接着text段开始,向上增长
3. MMAP
用于内存映射的区域起始于mm_struct->mmap_base,通常设置为TASK_UNMAPPED_BASE,每个体系结构都需要定义,在几乎所有的情况下,其值都是TASK_SIZE / 3,值得注意的是,内核的默认配置,mmap区域的起始点不是随机的,即ASLR不是默认开启的,需要特定的内核配置
4. 栈
栈起始于STACK_TOP(栈是从高地址向低地址生长的,这里的起始指的最高的地址位置),如果设置了PF_RANDOMIZE,则起始点会减少一个小的随机量,每个体系结构都必须定义STACK_TOP,大多数都设置为TASK_SIZE,即用户地址空间中最高可用地址。进程的参数列表和环境变量都是栈的初始数据(即位于栈的最高地址区域)
aaarticlea/png;base64,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" alt="" />
如果计算机提供了巨大的虚拟地址空间,那么使用上述的地址空间布局会工作地非常好,但在32位计算机上可能会出现问题。考虑IA-32的情况,虚拟地址空间从0~0xC0000000,每个用户进程有3GB可用,TASK_UMMAPPED_BASE起始于0x4000000,即1GB处( TASK_UMMAPPED_BASE = TASK_SIZE / 3),这意味着堆只有1GB空间可供使用,继续增长会进入到mmap区域,这显然不可接受
这里的关键问题在于: 内存映射区域位于虚拟地址空间的中间
因此,在内核版本2.6.7开发期间为IA-32计算机引入了一个新的虚拟地址空间布局
aaarticlea/png;base64,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*6RYLeREopHJyqqgqXR3eO7/tRa7LhchPGhoTAIBde6jCIC41Y0zjAxhiGMXyJYJgbLkQP57AcNtpPoouaExE1HtEickdhMCwcqrwKvLjAARYMGXZLs9mMWnhNKVUjsjcIc6agq0Rp/CERF4mkH+wz5YLneby7AS6fqNhQVFfvanzB1wgdQfw15KCybXt/K0T49QQAnlGhXWZZFu88ppTmcjnhA4TjVoqLZIjZzyQ6hEL47pdOp7uy8RCBi4oNdXK6Fpi5r2laLBZTFAXReH6eZecIzauovDA0ep5eFCyoLMVFMsR0Jy7VanVhYSGfz/N97O7duz/72c9Chc+fP3/w4AF/ZYQqLl++vG9lYWBa4dLSUqVSqdVqY2Nj8Xgcyx2LxeLvfve7V7w++O53v7u4uBjysxBCCoWCcE5E1Oiv2WwWCgXmUMAGbD1poURy2GglLkjdwv7091K680T5FKKGPFGZH7uabkf35hTAeNF1/fz587Bl0HJFtOPaPkgkEnfu3BHWHrXRSpSNk3g5abnjOFJcJMNKK3GBU4D9KYy/IMgq7EjCnNvsynwhwlLtmxwAU60x8wfLRtjcMFg0r56VAyMs/gYfPnwovOsWaffQ4NCfUlx6C3vyvu+z2WjB+FetVsNPJdsN3b72JLQrceFpsW6oqwmgdE9ZupqigqmZoYVqmNcIc6aTLXs6qUVYHpWvt/N9yKgUl16zu7sbXMTEljgFGRkZUbpM9xFcLbU/evJTPHK0FxfkHOA/bTQaLZRFjdjVUOiMiErK25p6vY48BkFxgZOYKUvPI99AuCIRGwl1pY9SXHpLsVgMPk/bttfW1kLHkJZJToXvBljEU1NTFoeqqlgMwRYQeJ6HjzAZ4smTJ6+t276NuEB0hf6RTCbTIuoclblWmJ+txaSStgTFheylsETMiFKKac7d0mw2W8zBi4oNzc/P879LXEqoOCyBwD5aKBFSKpXYbzVqXlVwr+4gLRJoQUSEm2RFZaQPvlzbiksmk2E/4CChlJ2h+Y2EkA73Ah8UbcRlbGyMf6aUUkLIu+++Gyr87LPPzp49G1zpwA4uFArxeFwYG/I871U8I77vj46Oep73ySeffP/73y+VSs1ms1arzc7OGoYRtad9a2zbFk51+eSTT2KxGG+zVKvVQqHwxz/+kb/U1taWcLKp53krKyvXr1+X4tJDIC749peWloTRPX6tKSFkbm4unU7zv8NyuRyPx4Xh0VKpFMqBQCn94osvVlZWJicng6K2sLDQ4lt+/Pjx2tqaYRjNZjOfz+cCTExMBMXLMAzDMEZHR9977725ubl4PI6f9/b29qVLl3Z3d3uV97dXvJLPJQghZHl5Ocpg6d/uPJhHF2VlfP75591eMCHKNM7q4gtbvPHaTmOXw6LeUiqVkKZAuOImKif8u+++G2WwRAUrEhE54QuFAm/Ot7ZcLMva3NzEz5iBKRSh7KWZTIY5ceCRQNZntgfWAWcCb0t34hKVEJwQYtu2MO2YbdtRGyoewr3+on40USAxAv9MMHoXJmQIvl6kuPSWUqkUtTiD5VsIEbXbRLlc7lZZCCEXLlzgC1mGTSEQF4zuMeLGdFDKicvs7KyqqljuiHQq58+fx/FR26IOlu7EReimpZQiRa7Qe9oi6jzA1XFRsFQdQVzXjUqcEZVKxvM8oXT6vh/cuU2KS28plUr8Y4fN0mLLYOFoIh6PR02wECoLIqe8D+Hx48etPWtBcWGeFySgEFou/t6OV5jxgNlnnY8wDpJW4hL86WNXsKgViVGGKL9tEO1eWZAOSvgRcmuzP3O5XFtrqNtFqFF+QewnLYwsRFUBcyboCJDi0luCDl1G1GioxZpSy7KQrSpE1AZ4+JEIDdUrV66oqtqhuCDqxPYvD1UXj8dZCUKiU1NTLGl81PUHSJvp//iqPM+LxWJdGRqw3IS++m6zQ2uaJpxoWy6XQ1KC/Jgt0iwK3y0tiEqsSSlFsshQIeQjatt5PnK/j7y8khbw4oL1GfyRLWQdmVb48qjYEOU2M2EgbViLhKf0ZXFBllXXdTc3N+meB5cdGY/HmYEDPw665JG0XLC26J133llcXOR3t4pKGddsNufn51OpFG9tPn78mO9LX3zxxf379/nrwPA5fvx457npYrHYmTNncrkcXzUh5MaNG7x7tVqtCrWgUqksLCwI02tHiezOzk5UxMGyLP4eo7ajlOybYGi2VqstLS29//77oWP+8Ic/CAOXlUollUqtrKwIt/1bXV39yU9+Eip/9uwZfiShU2q1WiaTuXv3bqVSefHiRSwWa7H5nKIolUrFNM3jx4+Xy+VKpRKLxe7duxdKc7m9vX3x4sXV1dWxsbFsNjsyMpJKpU6dOnXnzp3Z2dnDmf6mvbigO4X6DCKp/CkwWISDhShn8NmzZ4XdVdd1NtoKHkCid6ucmprqyq2Fhc7C3BHCIXqLyFc2mxWuP4Krm79BtnDh9Zy72SeYuOB3KPwxfO973+ML/eidfOG+FV7q/PnzfCF+VMHjWyfohrg4jsNcOZZlVavVkLjYtr26uopxHDYhIoTMzMwgLwoWNERVMSja53OBqWZwYKgSKgz1FgTwDcOAc9swjHv37gWvn0gk3njjDRiimNeIj7AdFDz8tm0vLCxgNyacZdu267pIEYrvntUOMyRYCIIbu6AEo1ZE9YJfDLYHgimLI1mrWBXBqCFzsCGPYSKRYB8ZhhGcIYqREWDTz7sdJEpaAHGJUhY44HnDBFOrhQZsi8BQIpF4+PAhX84HbjoRl5BFXK/XEWAOiks6nca7ikXEsDAYc/wOYUa7TlMuYBkYgz0sjyP4HLELNyAvp6Gne0MMZAZlKe/Zpyghe/tPsyujhK/X8zy2XXyLVrGJj0GCd80WvLEjWZuRfd62bZRns9lgq6rVKpYjRD2N0DNEiE06dHtIOp1mYZTQR+j2Qjtxfn5eaI22mJdgmqYwpdHW1pZwnktbcQkV5nI5ZW+7MpRAXFAvy2LLdvYIeWcOCftJFnVoicViR8sQeG1XnfQJbGYqHJVHKYvjOOvr63w5202R/wg9vMNLkZf36ubJZrN8vAIWSlCnbNvO5/NsqgRCtJcuXWLHH71hkRSXviLFpbcIcyHCgxa1h6dw0RCNWPVOo1eWRU31yufzSrvtXPfNIRSUIFJcBokUl96STqe3t7eDa//+/d//fW5uDouDglSrVYyh7t69++GHH6Kw0WjUarVisTg5OfnWW2+VAjQajWfPno2Pj2OLriC1Wi2fz8/OzmIHqCCVSiUej4+NjfVJXA45UlwGiRSX3pLL5bT+0G3yFwbSx0hxCSPFpd9IcTkqYA/TbnFd1/O8FgtrhxspLoNEiotkiJHiMkikuEiGGCkug0SKi2SIkeIySKS4SIYYKS6DRIqLZIiR4jJIpLhIhphW4oIcogfWlFdHiotEcnjoWYLuw4AUF4nk8CDFZZBks1kpLpJh5ciLCzKhTk1NZTKZP/3TP11YWMjn81NTU91ufjgQZA7d3vKLX/wi3g0XL14MlZw7d25jY+PcuXP4M5lMLi8vb2xs5HK5zVcgatP04ebIiwul1HVdfk3HkTBhpLj0FuGqaBC1mtnzPKTaD7G7uxv6CTUaDczl13Vd+OryPE+4lvq1HfwOg7jQvWToQfh0QYcQKS69JUpckFJfeIpwMxm6l+SNJ2oPPFyET7lQLpdf2017h0RcbNsOKsshzMolRIpLb9nd3Q2JC7IuRSmLEGTD5HOzU0o9zxOmlQulpAwSj8dbb4oWrDeYL5FXvWKx6DiO/zKe50UZZQNnSMSFUhpcF38I84kKkeLSW/itRaL2A4kyWKAsXfXVFsm9LcsqFApth0Xb29tII410ebZtx2Ix/mecTqeRns51XaS1ZqmaD+cWg8MjLsx4QWL0QTenI6S49BZeXJD7OnSY53ktMngLk+NG0VpZkChzHz6XRqPBi0vQNxT85RzJfYuOlrgQQr7yla+MjIwId0E6nEhx6S3CHRdDvP/++/Pz88LNsAgh5XI5pCy1Wi2ZTBqG8eLFi9Dx//Zv/zY3N8en167Vao1Go1Qq4VJtxYXf3ZEQwovLrVu3UqlULpfL5XLz8/Pj4+P4/8TExOHsp8MjLpRSpEcfdCu6QIpLb4G4+L6PXWv4AzzPi/LUCmmR2ZtSKtzqjBksrKStuExNTamqiiCUYRjYPERouWAvCkIIvDzYOUNaLgdBsVg8EkEihhSX3lIqlbATOdvqNAjScfOp9qO2K4Q7o6vZUsI9A9qKy9mzZ0Ml8EOHqpbDIkkXSHHpLaVSqfUUJ+G7R2jtYnJm1J4BUdePx+O8qO1DXISk02lsuYdNFzVNW1pawv8PZz+V4jJIpLj0Fuz63rk7tkXUudlsCkUE5o/wI8SG+OsYhrFvcQmOjNLptGEYyM6L3VC3t7cdx8HGxy2uPyikuAwSKS69RejQ7WHUGTs6Cy0j7ALMV7SysmLb9v7EBXNY2J/nzp0LtkQOiyStkOLSW3hx+eUvf7m4uMhPnCWELCwsYBOiYHm9Xs9kMs1mk794uVyem5sThpkopfCthgrX1tZ++tOfvv32262/5T/7sz8rl8u1lymVSplMZmRk5PPPP8dhf/VXf8VOwS8HASxsfN7i+oNCissgkeLSW0Li0m1sKGoHe3yUSqX4cuEm06jaNE3M2W279v3hw4eJCJiVlEgkgrqGX065XDYMQ1GUw9lPpbgMEikuvSUoLhhT8LGhKLAfa1S0MZvN8jZLuVwWdhDP81RVZasBevItR3mpsVnt4QySthGXKN+VpCc4jqMoylGZT3z4YeIS8lYE2d3d5QuhLN3+1KMkAzGd4MVfz1dIG3GJWo4l6QlSXHpLqVQyTdP3fdd1s9msz2Ga5u3bt0OFT548QQCbLQt0XfeDDz7AcAZ4nhc6y7Ks9fV1vpvvSYIAACAASURBVAqeqBl9Q48Ul0EixaW3lMtlbO2s95p97xUNpLiEkeLSb6S49BzMju/5ZRuNRv0V4MNVrwNSXAaJFBfJECPFZZBIcZEMMVJcBokUF8kQ00pcPM+T4tJXpLhIhpih2s71yJHNZo9Q3jyJpCukuAyS13bTCcnrgBSXQSLFRTLESHEZJFJcJEOMFJdBIsVFMsRIcRkkUlwkQ4wUl0EixUUyxLQSF6TnPLCmvIZIcZEMMTJZ1CA5POLSaDTkdBtJb5HiMkg6Fxc+q2u1WhVmJzMMIyr3YgjbttnWGcg7HaUvwVnanucdzrxnksOGFJdB0rm4YDs+TdNYtrR8Po9zPc9DYiSUa5oGySCExGIxbGyu6zqvRNjlj1Jaq9WwEAEXYZkiseG5pmmKoszNzdG9FSEtNgaSSBhSXAZJ5znKZmdnLctSFMU0TeRkHBkZgWRYlhVM/hoUl2PHjiG/iaqqobT4bFmTZVmTk5O6rmOfLSR8rlarlNJsNpvNZk3TVBTl1q1blFL8H/VqmtbjxyEZLqS4DBLLsjoUl8uXLyPnMzN2+F1yms0mthnWdR2Do+vXr+MjfgUT0zXLsnK5XPAjRVGCO5xiW2L2H+SmzWaz4+Pj+7hlyeuDFJdB0nYvPkY8Hoc9YlmWZVmu6yqKgu3KFUWBk6VWqyUSCZTYtu15Hvv6QuKC1OtMXEZHR+0AQcvFsizYMhsbG5qmwWAxTdMwDGGma4mE0UZcRkdH0+n0+vr67u5usRfcvn0bl1oPkMvl1lvy/e9/vye15/P5e/fusT9zuVyxWNzZ2cnn8/g/+OEPf5hKpVA1mtqT2nlOnz4dFJdGo1Eul4U7cn31q189c+YMGplOp8+ePfuVr3ylUqncunWLiQul9Fe/+pWiKKdPn87lctVq9S//8i9RHhSXL774IhaLscSulmX9xV/8RbBVCwsLH374ISGkWq1+/PHHb7zxhqIob7/9drPZLJfLJ0+eVBRlYWGhJ78/yRDTRlw0TSOEeJ6XSqU0TXM5MAi3bZv/SNO0tbW1UOH29jbemcJL6brOl8MCNzgWFhZgpePtahhGLpdzHAf+S3gZQpeybXtyclJYtfDuMBCwbfvq1auh2lVV5ZuEcuFHSPKMAYtlWcgszzt0ozY/X11dhZcEHlZCyIULF9DIoLjAysAxqqqura2hPCgu1WqVEKJpWshy0XUdbh3LsjY3N3EwDBlFUWZmZrD5qeu6GHnJ0LWkNR0Niwghuq4Ld3XRNE0Y+ETP4fMSFwoFfjdfSikch8I2aJoWdAEw0um0cEzhuq6wtdgbuFwuh8qr1WowChOs2jRN4d15nnfixAm+HFv2uVx6LTxAXjX4HW2itiKOx+OUUjh04Uk9fvw4ejsTl0ajASGwLMv3fdu2V1ZWcDrvc2HiYprm6Oio4zi42aC4IDaEaNHp06fxmoGAQtaFX6VEAtqLCzrGzs5O6NNmsxmlOIlEQrgpN6VUaE5ns1nhNppQFmFn833/9OnTfLnruoZhCLt3lFEwNzcnvAtd16OURVXVQqEQKq/X610pCxX5XKLEBXFoRIshLswqYeJSLBYROUJdvu9funQJx7QQF0VRJiYmDMOAMwWuHIiLaZowshRFaTabMJ1gyvm+PzExIY0XSQva59CN6mPpdFpYjt+icJ6VYRilUilUGGU4wHSPUhZVVfP5fKi80WgYhhFVtdDM8TwvnU4Lj4+aisZ6b4ilpSW+6hbKghEHLy5CC+7YsWOWZTmOg7iy7/vLy8t072mjqYVCAQ8tSlxc12W2hmma2OtLVdXbt29jbIirOY6zublJCMFlUVipVFRVReQb+jI7Oyt8PhIJaL+dq9D09X0fs6pCwGYRXi2qu25sbPCFbZVF2KpkMtlV1bCYeAdqlG6iKwpv0HVdYe0PHz4UKgsGUJ2LSywWw3/guzFNc2tri1Jq23aoPTA3cCSTcoiLZVns4hiRQYuZuOAGCSHM50ID4oI/8fwVReEHmBJJkK5D0c1m886dO/l8/vnz56GPbNsuFAohPwshpFgsbm1tFYvF0PG1Wm1+fv6Xv/xlqPyjjz5aXFzk/SyNRiOZTM7NzfFbgtfr9bW1NQRQg3z66adLS0t8ebVanZubS6fTIWVpNpv379//8Y9/HDqeEJLJZE6cOCEcDS0tLSWTyS+//DJ0SqlUunnzZuj4Z8+eTU9Pr6ys1Gq1paWlkLgsLCzEYrEXL16EzvrOd75DKU0mk6lUqtlsFovF5eXljY2NjY2NWCw2Pz/PbiQWi127du3ixYupVIpdJ51Ox+PxeDy+uLiIEsdxJiYm8KX87Gc/azab2LM9nU5fvHjx4cOHrOrt7e3R0dH/+I//yGQyc3NzZ8+ezefznW/wLnlt6U5cMOCPsgL4jgcfKu+GoHtzKISjoZmZGf54z/PgFODH+a7rwsLnL9XCxRPlwRWaS5cvXxaOqmCARA3EhDbL/Pw8q5p36CL6k8lk+BN7i9DN1ALso9ynxkiGki7EpYWyJBIJxEdD5YVCQdjBuo0N1Wo1TdOEQyF4cF89NkQpjYoNWZY1PT3N312L2BAbm4SwbTsoHLy4YKginOoikRwtOhUXTC0XvqKz2ayu63zPJ4Sw6eeh46NiQ1GGw9TUVAtlEdos3caGovwycLt+8sknoXLoXVexIXgrgsIhDEULZVciOXJ0Ki6Li4vC7t0i6mwYhtDZ0SLqLBQvy7Ju377NlyP0y1cNw0EoUtlslo8NNZvNRCIRZZFFOY9XVla6UhZMJAnd4GsuLpjs9/rc7+tGR+JiWRYmcYXYR2xIaDi0iA0h8CkUr62trShRE/pHstmsUAd3dnaEv28cL3QYCWNDraPOwrHYay4uiI7L9WvDSvt5LuPj4/l8nu+Tb731lnCGyO7ubiaTEcaGlpaWfvvb34bKf/3rX8/MzPB+lnK5fPbs2du3b/OBiXq9vrW19eTJk1D5b3/721gsJpxKExUbyuVymUwmdHd/+MMfYrFYOp0WVr2ysiKMDX3729/mXTyIDaXT6VCEq9lsptNptnqQIRSXnZ2dVCqVTqfz+XypVEqn05ubm7VaDSX4s1gs3rp1SziVOciFCxd+8IMfYAUAKywUCul0+ty5c+vr66VSaXp6+sc//nGj0Uin0+l0OplMZjKZDz/8MJ/Ps+s3Go2f/OQnqJoV3rt3r1wuV6vVXC63ubmZy+X4kGII+Ol/+MMfbm5ubm5usgf4m9/8ZnOPdDodDEGWy+XSHsEvlBCyu7u7ubkZKpcMivbioqoqIj7wwgLDMEZHR00ONguDB/Px+PLR0VH0qCBYI4O556ZpXrlyxd8Dk1AxSTTE+Ph4NpvFkqJQ1cImYQEOXz4+Po56GQ8ePPB9H1NUPc/jq9Z1/c6dO3x5LBaDzYKWe5735MkT9ChMmQmO7GD7mCLLBZagqqrwqWNRMkZtnueZpqmq6gcffMASPuHrazabhJCQxVSv11FvNptF1cViEVOxsUrL8zysG0ACBzR+cnISf8KU830f2V6ChTs7O/jKMJB0XffMmTOtf39YYYA4I9YWwBYOqklQcPHbQNXT09PMrsSKJ9Yk4XhZcsC0FxcsIZmdncXUKU3TdI6o8tHRUb4QSdUwz1XX9ZMnTzqOg4RpEILvfe97zsvMzs5GVREFpqh1ezxfBX7uUDosSlT2wPo9nKvr+tjYGA7ApdinQRRFGRsbC/4ZHPRhkpvQ8QSvEybjU0o9z9vd3UU4n+55rCil+t6CDAw3kPxJF7nbkXEKQlAsFtFL4WunlCLDCzQax7MFATgS64xM08TQGPZXpVIJqhullLcKQwTzQtA9Q4ZSWqvVgu8AlpgKw2dUEcz7q+u667pMknRR5j3JAdNeXNjLAck++N9KixfF+fPnheX86xSgP/DlyMPW+bsIPt2ucl9HRdMppaZp3r1713VdvMM9z3Nd9+7du8y9grPq9brv+whgBVPDBVFVNThyQSiqk/vqVlzA7373O74ZjUYDIgKPku/7QXFBXqi24mJZFluqzmYtQ1yCdeVyua7EhS1uWFxcRNoaPE/2q0DL0fhYLMYuDqEcGxtjTZLiMnC6EBfhrwR9Mmqhc3CiZ1vwmhLWsrGxwZc3Gg09YvWzbdtdKUtrQ1qog/l8PmpyYJSyUEr5aFFfxUXYgFOnTpkvz2zch7iw6UgYygXFJdiAVCrVVlw0TWMWB/4khFy+fJkdg98Y/g81RJLwtbU11jyMibwAbR6opP90JC6+7wt/IhgwC5XFjJhFFgWs367mgK6vrwuPD66gCQKfAl9eqVS6HaJ7nnfjxg2+vMWEXSEdiks2m8XaItwaetfc3BwcEPABYQZN2+GAZVmPHz8OFa6urmJYwRadZjIZKBdLx43omLkX49c0rV6vw0uC4SQhBOLCvkfXdU+dOtWiMfhGFEW5ePEiISQY+DdNEw4UNlylexOFmCxWq1UWrMQoDyLlui4WebZ+qpJ+09Gq6Pn5eX61y/vvvz8/Py9c5lOv1/mwBZbn/Mu//Euo/Pnz5zMzM3wopzVIjif8SNhXc7ncxYsXhWvtfvrTn4ZOefHiRSqVeu+994TXz2QymUzmiy++CJVXq9VUKsUvrcrlcm+//TZ/nXK5PDU11Ym4NBoNx3Hq9TqWFDYaDSSFAyjP5/MvXryoVCr8N9KWzz77DFEeSmmlUqnX6yhhEELu3buHTzHSqdfrLL6D5HilUgni8vHHHyOKxKJFZRGoKJ/PV6vVWq1WqVR2d3dZeO7Zs2ebm5v5fB615/P53/zmN81mE8GjpaWl6enpH/zgB6Eo0q1bt3BAsViUAaOB015cot6Ewr7XwmqISoZwCNnZ2Yl67+ENz5c7jiMMA+fzeeEDZF6hDodFR4L19XXm0mZGped5GKVmOQbbWkm/6cLn0pb79+8PgbLQiCwQLYBNzr8qCSGtk5507nM5KsjFjRJG1+IS1RPwKubLWyz/OYT+fMxG4VcttCDKzwJPZ+tZbcMnLhIJoztxgQOPPxJZy4SxIdd1o1YMHcJdtVg4JkTUC7mFBzfKtxo0i6S4SIaYLsQFQVahMyJqc6+nT58Kr4ygQ1SnyufziG6GDiCEYE4d4iPCDCOe5+GY0Lkh+4sdxi7IquDb4zjOO++8IyyPslnQQuEpwaw3UlwkQ0yn4rK7u1soFKIiEXz3QGq4Dz/8MFT+X//1X2fPnr1//36LHlWv1zF1dW5ujh3WbDYnJycVRTl16lS1Wq3X6ydOnBgbGws26dmzZ+Pj44qihFI9ICjDMlqjwXCmXr16dWtrS1XViYkJviWVSmVhYYFfJ0UpffHiRS6X42ND+Xx+dnaW3/agVqtdvXo1tEpLiotkiGklLnRv0pSu66urq/ynUb7eKD8LpRRppUNgDhh71TebTTbFng1S2F6CzLODnb2C8zvT6TSOCZpXhBB2tWCDMcMCR2IyRahVWMIjvEEhyPAStbZbF230I8VFMsR0JC7CSXTFYlHYkRzHifLgEkL4Vzp22wkeD3HB7CxICUrYEkQcBnFRFIVNjbt06VJQMgCi49Cm4CQ6iI7jOI1GAyuGQg0TygFuUKiqUVFnnMJfis1Ak+IiGUo6Ehe+nBCytLQkPEXXdaGyYHUff/zs7GzIhwopYfnxs9lsqVTCZYPiMj09jTc/VqNQSmOxWEhcoCBYE4QpGCxgjNmoWBfDpz4QgsFU1JoDYerfRqMhtOB838eSGSkukmGljc8lanSTzWaFnggh6JPCTLeWZbFdARlYNET3Ri66ri8tLWHlSEhc6N5WG7Am1tfXQ+JSLpdhFmEqihLYEAOpsLF4r5M5OJito6qq8NNsNiuMOsfjcaHNggVZclgkGWJaiQve0qFCKI7ruh12iRZJJzFxk78O7BQaMC6w/jUkHBcuXKCUYqwEK6BWq8E8YdeMxWJst2aIC5OAqGXQURNqkbug86mAmDIj3CCF5VXA4qAOLyiRHC26ExdEQ/j8bIVCQSgT77777sWLF0Nz0prNZqlU8n2fT3CHMcu9e/ewVxkhZG5ujjlioSOse3/rW9+ilNbr9bGxMUVRsEmYoiijo6NoYaVSCZpFOJIFkt544w1FUUKLGB4+fCiMiP3d3/2dMMEdv8st3csyNzc3J5yM90//9E/BLCRdrd6WSI4QrcQFaf3bXqJF2lc+EyXdmz7HKxHcIoSQtbW1RCIRzCND94ZIGCVhoyJmxcBGwKI+HIM0a4qiTE1NsetjVAW3Lsv5JNxxsRNabFHSYoPHkFkkxUUyxHSa/T9qOly33aNcLgujMNhItPUy+YNfndRi6Be1RUkUiA2FLsgn6JZIhoaOxCWRSLAtzRlwggj7RlSvw0K+Fg7OLhref6JWeNOILUpaELUBSyKRkOIiGVbab0QPb6hwymnUDh7CRUPw7EatP+p87fUBgKYGHcNBoravR8YTHmS9Fl5KDoskQ0xH+Vy6Sl6LhIP8R1Fvb+GyHSzP6bBSxpMnT6Iy5nV1nVKp1CJVJUsQHcT3feE8l1KpJLzrYILrrtomkRwV2ojLsWPH+NWDfLQIZLPZ5eXlqE9526fZbCaTyXfffTdU/vvf/z7KxomiUqnEYrFjx47xgeSPP/6YT+zYaDSSyeQ777zDGyDFYvGv//qv+dZGwWJDwj16Pv30U/4BJpPJRCJRLpfT6bQUF8mw0sVG9CDKzxK1UyrbHIe/eJQHVzj3F1kdhN4cBIZs206n053kiIHzOGrmcSKR4JUFsXbhXSAy1bZSBmb64f/SoSsZYroTlxY+TsdxeCugXC4L57+0UJaowUiU7xMBZmhKh+ISpSxR+L5/8uRJYXmUsggXEwGk2maHSXGRDCvtxQVZ4D/55BN4drH+kB1DRLCPJiYmEokE1j0GP2XLcwghT58+RbnnefB94nS2e57jOEtLS7yTGGdhmwH8n4kL2ds8kG9VLpeD3gnbzN8RHE/5fF74fEL6iOtg7i+7a/YpotGFQoFdPJvNSnGRDCvtxQU7Tpw5c0bbI2i8sA3xGMx2QOcJsb29zc71PI8/gFkuqBfMzc1pmhbaGETjGB0dRe3o3kHYuR988AH/qW3bwnoZweWONgcUhBCC+YTBK6+vr7MGY/ZgkA4XTEokR5GufS6HmQ6HRYcHOSySDDHDJi5d7cQ2cKS4SIaYrkPRh5l0Oh2VEuFw4jjOiRMnjtATlkg6p5f7Fg2coygu0nKRDCtSXAaJTBYlGWKkuAwSKS6SIUaKyyCR4iIZYqS4DBIpLpIhRorLIJHiIhlihkFcEokEUl4zccGubIc/ECPFRTLEDIO4oIsqijIyMoLsVkiO21UayoEgxUUyxAyDuNC93YuCHIktO6S4SIaYIREXtjcA40gsMpLiIhlihkRckCCGKYtw65JDiBQXyRAzJOJCKc3lckxc+NSZhxMpLpIhZnjEhVI6NTV1VLwtQIqLZIhpJS6EEE3TjpC4XLp0SVGUrjLaDhYpLpIhppW4UEpN0zxC4pLP5+UkOonkkDBU4lKv149EkIghxUUyxAyVuBw5XNeV4iIZVqS4DJijEjWXSLpFisuAkeIiGVakuAwYKS6SYUWKy4CR4iIZVqS4DBgpLpJhRYrLgJHiIhlWpLgMGCkukmFl2MTlCM39B1JcJMPKUIlLtVpVVfVo9VUpLpJhZajEBVkXjpbxIsVFMqwM1Ub08XhcUZTDn5c7iBQXybDSRlxUVT38aa6B7/sjIyOKohwhQXRd1zTNQbdCIukLQ5IsqtFonDt3jmWiu3z58qBb1BGO45w/f37QrZBI+sKQiAvbXQQcFYNLplyQDDFDIi6maYay/x8Jz4sUF8kQMwzi4nkeUv+Pjo7CbDkqxosUF8kQMwziks1mVVU1TXN9fR2aYlmWqqqO4wy6aW2Q4iIZYoZBXAgh6J/BjehZ4WFGiotkiBkGcWEExeVIIMVFMsRIcRkkUlwkQ4wUl0EixUUyxEhxGSRSXCRDjBSXQSLFRTLESHEZJFJcJEOMFJdBIsVFMsR0JC4D/PWj6g4bIMVFIjk8tBeXbDar6/r58+cTAVhCJtd1UWLb9ptvvmlZlmVZ7AqVSsV+mbfffhtnUUo9zzNNk31kGIau62xaLSuxLOvcuXOO44T2gbYsK5vNBls1OTkJcXEcx7IsFLL/YDVAuVxGdSi3LAt/sssSQoINxmH1ep196r9MUHw9z0u8zJtvvsmujE+XlpbYp4ZhSHGRDCudZqJbW1vDhHrA+gMECJ2zXq97ntd2RY9pmsKJ+b7vO47jeV6onBBy7NixUL2U0kePHimKYlkWa9X8/DyzXFzXRaHneY7j4C4IISx/Cspbd2xCCASIiQurKxaLQQrZvRBCHI4nT56wTyGFv/rVr9inlmVJcZEMKx2JCyHk1KlTQtXQNC1kUABeI0CpVMpms111J8uyHjx4ILxUqOpcLqeqash6YkBZisVih/UyZeE/8n0/Fot1fhdQFv5ByWGRZIhpLy4YnqRSKf5Tz/OilMUwDOEFNzY2hMcLOxjkQNi9qcgRUyqVkG+Bt4xwKdM0+bOYcRE6PkpZKKWmaZbL5VBhvV4X5nnAOEt4KSkukiGmvbjMzs6WSqVQB2g2m//wD//AH1+r1ZaXlwuFgrDDVCqVzz77LFToOE6hUOAPbjab165d4/swpbTRaAhb+/d///eqqjabTeGnjUYj1CpCyNWrV/kqXrx4sby8XKlU+Ivk8/lKpcJfqtFopFIpNnoKVuG6bqlUCpVXq9V8Po80NFJcJEPJfrL/E0I0TeP7Xrlc1nW92yFPMpns/HgQFR2/e/eu0JKKghASNXwTAucuf4NIKMMrSxS+72uaBn/wkdsLRSLpkK7FBR1D2IevX78u7CdRHd51XcMwosyQQRHV1S3LEkonlKXz2UC1Wo0lspLDIskQ0524tFAWIfB0CI83TdMwjK4MhwMAISS+fGdnx7IsXgV834+6C8MwhDe+trYWdI3LrUUkw0p34hLVYYIR2SDpdFroQ6WU2rYtjDr3Sm562GMRC+cvaFkWhjb88ZjGIrzanTt3gn9KcZEMK11bLvwxtm0LxwuI13bVGsMwogI0LXBdl52V3UPX9R7m0H369GmoBFvHCpXFMIwW6cFD/mYpLpKhhBDSkbjU6/Uvv/yS/7RcLsfj8fv37/PdI5lMzs7OPnv2LFT+85//XNiOfD6/sLDQuU80yK1bt06cOEEI+fLLL0dGRpaXl58+fRqLxZLJpLC6DomKOlFKG43GtWvXarVasJAQUigUTNPkY0P1el2oIPV6fXR0VIqLZDggL9NeXAzD0DQt1JEopc1mMyo2FDVvxXVdYWyoxWSWToDplM1ml5eXFUXB7BuYFcLZd50AZ4rwo6jYEOaz8MfDsBKaUXL6v2Q4ICLai4tpmsKOwc/1AFEeX9d1VVXtbWwokUhgIxEGZvd7ngeV2d9lm82mpmlCL1KL2JBwXky9XjcMQ/gAXddFm6W4SA4/bAlx5+xnnkvr44U2CJSlT7EhtuPy+Pg4vDaYnGaa5vz8/D4uuLy8HHXXnucJP7IsS7iwoFAotHb9aJq2v8GgRNJXutKRvotLsVgUvu0dx4lSlp74XCEucOKqqprNZi3L0jQtm80+evSo26t5nre2ttb58YQQwzCE+8m7rhuKDVEujCUdupLDxqvLSqfiEgp8CEPIYGlpSdhPLMsSRp1f0dXCgLj4vl8ul7Eqmi1u6rbfEkKE/pRmsym8VAtlwUe8V/jhw4dBvZbiIjkk9EpT9ikujuNEOXFN07x//36osFarCQ2fHioLDYy5crmcoijIAqOqqmEYc3Nz3V5NKJ1nz54V6mNU1Jlle+E/Ci2nluIiGTg9l5VOxQXq8Pz583g8ns/no3oC79+t1WpXrlzhPbjFYvHChQtC92e31Ov1ZDI5PT0di8VSqdTW1hZ8xo8ePTp58mSj0fjjH//4ilWUSqVEIiGUyGazyS96bDQa+Xx+a2uLf1BInfXpp58GC6W4SAZFnzSlC3GBzX/hwoWu+gB2axYqS1SGlH30Md/3bdtmJ2JYBJ8L8kidPn36VbzISBbX+fEtJu+F8t0xpENXcvD0W1Y6FRf0LqGhoWlaVOgkasXNxx9/zBc6jmMYxj7EJQTEBXnn0MNfpd9CpIQfCWUCAeyoqLPQLwMR5OcQSST942CUpQtx4bl//35Upqio2FAikeA7Ur1e79XQoNFosOS+/SPKg1upVITKks1mheV4UFJcJAfMYRcX3/dPnTrV1f0g1Tb/0dzcXA8XAfUVEh0bopR+/vnnfGGlUhE+QM/zMNtQVVVhQiyJpB8cmLLsX1yEK2ha3E+LZLQ7OzsdXofuJd/v/HhKaZQtg8T9wvLHjx8Lq26hLFEsLCzwDYayYE6QpmlSXCQHw0Eqy37EhRBy/fr1SqVCuNgQH4omhOzu7l64cIHvP5gAUigUXrx4ESpPJpP8KmRK6f37903TfPjwofCR8ccTQr7zne9EhaWq1SrvkSmVSgsLC6GADqX0s88+O3/+vHBFYrVaFV6/Uqm8+eabv/3tb0PlT58+XVxcZGdJcZEcAAcsK/sUFyGO42iaxseGGo1G1DqjqMuappnP54VPJyrHtTBAQwjRdZ1XlhaLmxAbitIpvhB3IfQutUhDEbo7KS6SfjMQZemNuLiu21XqXCw4Fo5uEomErusdXoe2695CXUulUsKmdht1bhEbQu1CZVFVNeS+leIi6SuDUpaOxAUrdy9cuIA0dCEQTBV+JOTNN99UFAW+zBAInei6rnDkcjn++GvXrmF1orAi7F7Elx87dowvR9X8XSAlgmmajUYDM3Fs28aDm52dxZaP2AqyE1RV1XX92rVrrASPV4qLpH8cUnHBborYqvWNN95QX+b48eOsY+OY/jE9Pa12wPT0tGEYoUJcAYn7992A48ePd9KAfaAoipxEJ+kfB68prOqONqLv/xN4TZHZ/yX95pCKCyHEMAwpcPwXEwAACIFJREFULv1Dioukrxy8snQqLrT7ZFGSrpDiIukfA1EWKS6HBSkukv4hxeW1RoqLpH9IcXmtkXtFS/rEoJQlqC9SXAaMTBYl6Qf9Fo7WteBTKS4DRoqLpB/0W1Y6qVGKy4CR4iLpOf1Qlg5/pVJcDhFSXCQ9Z4DiEqxdisuAkeIi6Tl9EpcOf6hSXA4LUlwkPad/4tKVvkhxGTBSXCS9pa/K0qHWHElxaTQam5ubm5ub09PTf/7nf765ubm7u9vhuVeuXMlkMn1t3j6Q4iLpLQcsLlEqc/TEhWHbdjqdZn8SQjzPe/fdd/FncLdDz/OQLldVVV3X+f1VB4sUF0lvGZS4EG4KzJCIi23biqKMj4/btk33tmTzfb/ZbCqKks1mkTlFURQ+0e9gkeIi6S2HQVnoMImLruvYkACagmn1hmGsr68jbyZya3aVQ/NgkOIi6S2HQVno0IiL53mKonieRwiBnUL3NjMcGRlhd95hsvEDRoqLpLccBmWhQyMurusqisKyRrKNinRdn5ycZKdIcZG8DhwGZaEdisuFCxd6ffs9gBeXBw8eYKsgbAZQq9XGxsb+5E/+hGXbl+IieR0YrLgEP+rNvkUHT1BcCCHYToAEhkW6rhuGkcvlWMKUw3kvUlwkvWWAyhKsnXayKvoQdkhKqW3bq6ur7E/TNDVN03UdewmxaFGtVlMUBSEk0zRVVS0UCoNrtQApLpLeMkBxCX10VMWFEBLcTZEQgqbirlzXZa4ie29/Msx2idrddVBIcZH0lkEpC33ZbKFHV1yGBikukt4yKHHhP5LiMmCkuEh6y8DFhZVIcRkwcq9oSW8ZiLgIy6W4DBgpLpLeckiUhUpxGThSXCS9ZYDiEmqJFJcBI8VF0lsOWFyiFIdKcRk4UlwkPecg9SVKWagUl4HDi4vv+47j9LYWlt2mw/JarXY415RJOuFgxEWoNcE2tBGXJ0+eSHHpKyFxuXPnjqZpN27cGB0d3draanHi5ubm3NzcysrKxMTEzs4OpfQ///M/jx07tri4uLKyMjk5Wa1Wv/zyy9nZWcMwMpmMruvxeLxarbIrlEqlkZGRYOYKkEwm4/F4LBYbGxtj6W++/e1vnz17NhaLpdPpRqNBKf3lL38Zi8XOnj177NixXC5HCHn+/Hk8Hj+7BworlcrExMTKysrMzMzU1NSnn37aoycniWTg4oISabkMmKC4IHcESxmhqmqLE2OxGP6DRFmO4+TzedM0UYiVEPV6XVEUZp6wlRCoC4vIWQlDURTMYzYMg10Q1RFCNE1DYSwWwxpRNNu27c3NTfZrQasajQYS67DCXC63zycl6ZijIS6e50lx6Su8uKDHIh+N53mO4/DfHA2ICyGEFxdFUXRd393dDX59lmVpmob/47UhFBdVVXd3d5FwK5FI0JdXckE1fN+fmppiDYDibG5uBsVLUZSnT5+qqhosDK4Ik/SJwYoLK5HiMmCixCWbzcKKSSQSwQR6tm0bhhHspUxcSqWSoiiWZeFcx3GixAV5P5GqgheXbDY7OzubSCRYY/gEF77vnzhxgp0CGycoLii8cuVK0HSS4nIwHBlxgVn73nvvuf3B6IDt7e0+1d4CvNvB3bt3+1GFbduqqgrFhVIKcSGEGIaBY2zb1jTNdV2huGAMouyRzWaF4kII0TTNsiz68kCJYdv26OgoLoXDhOIyPT3NTuHFBYYPxIX5p6W4HBhHSVyUAJ3IQW8ZHR1VugFt7iEjIyNdNYCBtDJRoAO3FheUnzlzBgMl13VREhyVoAMXCgXDMDzP8zxP0zRN04TiUq1WkY+CRoiLoij5fN73fV3XceQ+xAX3AnEJFrJmS/rKoMQlWNLpsKgZoO8PhuPFixfNLhl4AwBpuSix2WwGh0Wff/75yMgIxKVSqSiK8ujRI3z0jW98Y2xs7MqVK+zcr33ta/gPE5fV1dUnT56g8MGDB4qipFKpkLicOnXq0aNHsVjMNM0zZ84oijIyMvLf//3f7Ji3335b2XPovvfee9ARobh885vfZGdFicvPf/7zkM/lb/7mb7p79JJ9cfDiEoK2necifS79xjTNYCja2AvQwK6he+7S27dvo1czl+3CwgL+g3KIC8sfjGATengwWgQHLQN2aLAEp7BoETudDWdYC5nlQkQO3WC0SDp0B4IUl9edbDYbFBcoBUZ2MGFM00wkEmTPAjIMAwJx6dKlRCJhWRaizpTS3d1dyAcGUDjMMAx4WDDGYWMugKzmoSYZhjE+Pm6aZlDLDMMghGSzWRaKTiaTSMQFHfE8r9FoYBDkOA4SAxJCWKAa5xaLxT49SUmIwSoLleIycELiQin1fT+ZTLY4Bf7RWq0GWUkkEjAums1mIpGAt4VZKL7vo9A0zZCyUErhoOELr1y5ouu6G5iku7W1hStbloVfT6PRQEnwSCgIU5ZQITtXcjAcanFBXLP/D+H1hRcXiaRXHGpxObT7Fg0NhmFgNr1E0g+kuLy+8GkuXdft+cJFyWvLoRaX7e3t/j+B15eguBBC5ubmpqamrly5Mjk5+cEHHwy2bZIh4FCLi3To9pWguAQn0RmBRYMSyasgxeU1JSgu2NoNf7ZdFS2RdM7B6wuRKRcGTkhc2NOW4iLpIYdUXHRdj8pX1ifI3gaJ3h4HWXuwDfz/e44UF8nBcOjEBXM9e74OsDVY7Bdc4HuQtbM2sDWHuq5fuHDBMAzHcYJLpXuCoigsO5wUF0n/OHTiQghpNBq1Wq3I8dFHH4VKSqVSoz/wtXdOo9Go1+uv0rZ6vf4qDWhNvV5/8eIFnvbdu3fHx8ex6nJhYUGKi6S3HC5xkRwwuq5ns9nG3iKdQTdHMmxIcXl9wThU0zRptkj6hBSX1xfkTxl0KyRDixQXiUTSF6S4SCSSviDFRSKR9IuDEZf/B2vCNJpZt8gYAAAAAElFTkSuQmCC" alt="" />
新的布局的思想在于使用固定值限制栈的最大长度(简单来说是将原本栈和mmap共享增长的空间,转移到了mmap和堆共享增长空间)。由于栈是有界的,因此安置内存映射的区域可以在栈末端的下方立即开始,与经典方法相反,mmap区域是自顶向下扩展,由于堆仍然位于虚拟地址空间中较低的区域并向上增长,因此mmap区域和堆可以相对扩展,直至耗尽虚拟地址空间中剩余的区域。
为了确保栈与mmap区域不发生冲突,两者之间设置了一个安全隙
0x2: 建立布局
在do_execve()函数的准备阶段,已经从可执行文件头部读入128字节存放在bprm的缓冲区中,而且运行所需的参数和环境变量也已收集在bprm中
search_binary_handler()函数就是逐个扫描formats队列,直到找到一个匹配的可执行文件格式,运行的事就交给它
. 如果在这个队列中没有找到相应的可执行文件格式,就要根据文件头部的信息来查找是否有为此种格式设计的可动态安装的模块
. 如果找到对应的可执行文件格式,就把这个模块安装进内核,并挂入formats队列,然后再重新扫描
在linux_binfmt数据结构中,有三个函数指针
. load_binary
load_binary就是具体的ELF程序装载程序,不同的可执行文件其装载函数也不同
) a.out格式的装载函数为: load_aout_binary()
) elf的装载函数为: load_elf_binary()
) ..
. load_shlib
. core_dump
对于ELF文件对应的linux_binfmt结构体来说,结构体如下
static struct linux_binfmt elf_format =
{
.module = THIS_MODULE,
.load_binary = load_elf_binary,
.load_shlib = load_elf_library,
.core_dump = elf_core_dump,
.min_coredump = ELF_EXEC_PAGESIZE,
.hasvdso =
};
在使用load_elf_binary装载一个ELF二进制文件时,将创建进程的地址空间
aaarticlea/png;base64,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" alt="" />
如果进程在ELF文件中明确指出需要ASLR机制(即PF_RANDOMIZE被置位)、且全局变量randomize_va_space设置为1,则启动地址空间随机化机制。此外,用户可以通过/proc/sys/kernel/randomize_va_space停用内核对该特性的支持
static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
{
..
if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
current->flags |= PF_RANDOMIZE; setup_new_exec(bprm); /* Do this so that we can load the interpreter, if need be. We will change some of these later */
current->mm->free_area_cache = current->mm->mmap_base;
current->mm->cached_hole_size = ;
retval = setup_arg_pages(bprm, randomize_stack_top(STACK_TOP), executable_stack);
if (retval < )
{
send_sig(SIGKILL, current, );
goto out_free_dentry;
} current->mm->start_stack = bprm->p;
..
}
这再次说明了ASLR这种安全机制是需要操作系统内核支持,并且编译器需要显示指出需要开启指定功能的互相配合的这种模式
static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
{
..
/* Flush all traces of the currently running executable */
retval = flush_old_exec(bprm);
if (retval)
goto out_free_dentry;
} int flush_old_exec(struct linux_binprm * bprm)
{
..
retval = exec_mmap(bprm->mm);
if (retval)
goto out;
..
}
EXPORT_SYMBOL(flush_old_exec); static int exec_mmap(struct mm_struct *mm)
{
..
arch_pick_mmap_layout(mm);
..
}
选择布局的工作由arch_pick_mmap_layout完成,如果对应的体系结构没有提供一个具体的函数,则使用内核的默认例程,我们额外关注一下IA-32如何在经典布局和新的布局之间选择
\linux-2.6.32.63\arch\x86\mm\mmap.c
/*
如果设置了personality比特位,或栈的增长不受限制,则回退到标准布局
*/
static int mmap_is_legacy(void)
{
if (current->personality & ADDR_COMPAT_LAYOUT)
return ; if (current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY)
return ; //否则,使用新的布局方式
return sysctl_legacy_va_layout;
} /*
* This function, called very early during the creation of a new
* process VM image, sets up which VM layout function to use:
*/
void arch_pick_mmap_layout(struct mm_struct *mm)
{
if (mmap_is_legacy())
{
mm->mmap_base = mmap_legacy_base();
mm->get_unmapped_area = arch_get_unmapped_area;
mm->unmap_area = arch_unmap_area;
}
else
{
mm->mmap_base = mmap_base();
mm->get_unmapped_area = arch_get_unmapped_area_topdown;
mm->unmap_area = arch_unmap_area_topdown;
}
}
在经典的配置下,mmap区域的起始点是TASK_UNMAPPED_BASE(0x4000000),而标准函数arch_get_unmapped_area用于自下而上地创建新的映射
在使用新布局时,内存映射自顶向下下增长,标准函数arch_get_unmapped_area_topdown负责该工作,我们着重关注一下如何选择内存映射的基地址
\linux-2.6.32.63\arch\x86\mm\mmap.c
static unsigned long mmap_base(void)
{
unsigned long gap = current->signal->rlim[RLIMIT_STACK].rlim_cur; /*
在新的进程布局中,可以根据栈的最大长度,来计算栈最低的可能位置,用作mmap区域的起始点,但内核会确保栈至少可以跨越128MB的空间(即栈最小要有128MB的空间)
另外,如果指定的栈界限非常巨大,那么内核会保证至少有一小部分地址空间不被栈占据
*/
if (gap < MIN_GAP)
gap = MIN_GAP;
else if (gap > MAX_GAP)
gap = MAX_GAP; //如果要求使用地址空间随机化机制,则栈的 起始位置会减去一个随机的偏移量,最大为1MB,另外,内核会确保该区域对齐到页帧,这是体系结构的要求
return PAGE_ALIGN(TASK_SIZE - gap - mmap_rnd());
}
从某种程度上来说,64位体系结构的情况会好一点,因为不需要在不同的地址空间布局中进行选择,在64位体系结构下,虚拟地址空间如此巨大,以至于堆和mmap区域的碰撞几乎不可能,所以依然可以使用老的进程布局空间,AMD64系统上对虚拟地址空间总是使用经典布局,因此无需区分各种选项,如果设置了PF_RANDOMIZE标志,则进行地址空间随机化,变动原本固定的mmap_base
我们回到最初对load_elf_binary函数的讨论上来,该函数最后需要在适当的位置创建栈
static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
{
..
retval = setup_arg_pages(bprm, randomize_stack_top(STACK_TOP), executable_stack);
if (retval < )
{
send_sig(SIGKILL, current, );
goto out_free_dentry;
}
..
}
标准函数setup_arg_pages即用于建立在适当的位置创建栈,该函数需要栈顶的位置作为参数,栈顶由特定于体系结构的常数STACK_TOP给出,而后调用randomize_stack_top,确保在启用地址空间随机化的情况下,对该地址进行随机偏移
3. 内存映射的原理
由于所有用户进程总的虚拟地址空间比可用的物理内存大得多,因此只有最常用的部分才会与物理页帧关联,大部多程序只占用实际内存的一小部分。内核必须提供数据结构,以建立虚拟地址空间的区域和相关数据所在位置之间的关联,例如在映射文本文件时,映射的虚拟内存区必须关联到文件系统在硬盘上存储文件内容的区域
aaarticlea/png;base64,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" alt="" />
需要明白的是,文件数据在硬盘上的存储通常并不是连续的,而是分布到若干小的区域,内核利用address_space数据结构,提供一组方法从"后备存储器"读取数据,例如从文件系统读取,因此address_space形成了一个辅助层,将映射的数据表示为连续的线性区域,提供给内存管理子系统
按需分配和填充页称之为"按需调页法(demand paging)",它基于处理器和内核之间的交互
aaarticlea/png;base64,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" alt="" />
. 进程试图访问用户地址空间中的一个内存地址,但使用页表无法确定物理地址(即物理内存中没有关联页)
. 处理器接下来触发一个缺页异常,发送到内核
. 内核会检查负责缺页区域的进程地址空间的数据结构,找到适当的后备存储器,或者确认该访问实际上是不正确的
. 分配物理内存页,并从后备存储器读取所需数据进行填充
. 借助于页表将物理内存页并入到用户进程的地址空间(即建立映射),回到发生缺页中断的那行代码位置,应用程序恢复执行
这一系列操作对用户进程是透明的,即进程不会注意到页是实际上在物理内存中(即建立了虚拟内存和物理内存的映射),还是需要通过按需调页加载(映射未建立)
4. 数据结构
我们知道struct mm_struct是进程虚拟内存管理中一个很重要的数据结构,该结构提供了进程在内存布局中所有必要信息,我们着重讨论下下列成员,用于管理用户进程在虚拟地址空间中的所有内存区域
struct mm_struct
{
..
//虚拟内存区域列表
struct vm_area_struct * mmap;
struct rb_root mm_rb; //上一次find_vma的结果
struct vm_area_struct * mmap_cache;
..
}
0x1: 树和链表
进程的每个虚拟内存区域都通过一个struct vm_area_struct实例描述,进程的各区域按两种方式排序
. 在一个单链表上(开始于mm_strcut->mmap)
用户虚拟地址空间中的每个区域由开始和结束地址描述,现存的区域按起始地址以递增次序被归入链表中,扫描链表找到与特定地址关联的区域,在有大量区域时是非常低效的操作(数据密集型的应用程序就是这样),因此vm_area_struct的各个实例还通过红黑树进行管理,可以显著加快扫描速度 . 在一个红黑树中,根节点位于mm_rb
红黑树是一种二叉查找树,其结点标记有颜色(红或黑),它们具有普通查找树的所有性质(因此扫描特定的结点非常高效),结点的红黑标记也可以简化重新平衡树的过程
增加新区域时(载入新模块、映射新文件等),内核首先搜索红黑树,找到刚好在新区域之前的区域,因此,内核可以向树和线性链表添加新的区域,而无需扫描链表aaarticlea/png;base64,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" alt="" />
0x2: 虚拟内存区域的表示
进程虚拟内存的每个区域表示为struct vm_area_struct的一个实例
关于struct vm_area_struct的相关知识,请参阅另一篇文章
http://www.cnblogs.com/LittleHann/p/3865490.html
//搜索:0x2: struct vm_area_struct
0x3: 优先查找树
优先查找树(priority search tree)用于建立文件中的一个区域与该区域映射到所有虚拟地址空间之间的关联(例如一个进程文件被多个用户打开)
1. 附加的数据结构
每个打开文件(和每个块设备,因为块设备也可以通过设备文件进行内存映射)都表示为struct file的一个实例,该结构包含了一个指向文件地址空间对象struct address_space的指针
关于struct file的相关知识,请参阅另一篇文章
http://www.cnblogs.com/LittleHann/p/3865490.html
//0x1: struct file
该对象(struct address_space)是优先查找树(prio tree)的基础,文件区间与其映射到的地址空间之间的关联即通过优先树建立
\linux-2.6.32.63\include\linux\fs.h
struct address_space
{
struct inode *host;
..
struct prio_tree_root i_mmap;
struct list_head i_mmap_nonlinear;
..
} struct file
{
..
struct address_space *f_mapping;
..
}
此外,每个文件和块设备都表示为strcut inode的一个实例,struct file是通过open系统调用打开的文件的抽象,与此相反的是,inode则表示系统自身中的对象
\linux-2.6.32.63\include\linux\fs.h
struct inode
{
..
struct address_space *i_mapping;
..
}
aaarticlea/png;base64,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DBOyGgAAgFwQw4SsBgAAIBfEMCGrAQAAyAUxTMhqAAAAckEME7IaAACAXBDDhKwGAAAgF8QwIasBAADIBTFMyGoAAAByQQwTshoAAIBcEMOErAYAACAXxDAhqwEAAMgFMUzIagAAAHJBDBOyGgAAgFwQw4SsBgAAIBfEMCGrAQAAyAUxTMhqAAAAckEME7IaAACAXBDDhKwGAAAgF8QwIasBAADIBTFMyGoAAAByQQwTshoAAIBcEMOErAYAACAXxDAhqwEAAMgFMUzIagAAAHJBDBOyGgAAgFwQw4SsBgAAIBfEMCGrAQAAyAUxTMhqAAAAckEME7IaAACAXBDDhKwGAAAgF8QwIasBAADIBTFMyGoAAAByQQwTshoAAIBcEMOErAYAACAXxDAhqwEAAMgFMUzIagAAAHJBDBOyGgAAgFwQw4SsBgAAIBfEMCGrAQAAyAUxTMhqAAAAckEME7IaAACAXBDDhKwGAAAgF8QwIasBAADIBTFMyGoAAAByQQwTshoAAIBcEMOErAYAACAXxDAhqwEAAMgFMUzIagAAAHJBDBOyGgAAgFwQw4SsBgAAIBfEMCGrAQAAyAUxTMhqAAAAckEME7IaAACAXBDDhKwGAAAgF8QwIasBAADIBTFMyGoAAAByQQwTshoAAIBcEMOErAYAACAXxDAhqwEAAMgFMUzIagAAAHJBDBOyGgAAgFwQw4SsBgAAIBfEMCGrAQAAyAUxTMhqAAAAckEME7IaAACAXBDDhKwGAAAgF8QwIasBAADIBTFMyGoAAAByQQwTshoAAIBcEMOErAYAACAXxDAhqwEAAMgFMUzIagAAAHJBDBOyGgAAgFwQw4SsBgAAIBfEMCGrAQAAyAUxTMhqAAAAckEME7IaAACAXBDDhKwGAAAgF8QwIasBAADIBTFMyGoAAAByQQwTshoAAIBcEMOErAYAACAXxDAhqwEAAMgFMUzIagAAAHJBDBOyGgAAgFwQw4SsBgAAIBfEMCGrAQAAyAUxTMhqAAAAckEME7IaAACAXBDDhKwGAAAgF8QwIasBAADIBTFMyGoAAAByQQwTshoAAIBcEMOErAYAACAXxDAhqwEAAMgFMUzIagAAAHJBDBOyGgAAgFwQw4SsBgAAIBfEMCGrAQAAyAUxTMhqAAAAckEME7IaAACAXBDDhKwGAAAgF8QwIasBAADI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" alt="" />
需要明白的是,虽然我们一直讨论文件区间的映射,但实际上也可以映射不同的东西,例如
. 直接映射裸(raw)块设备上的区间,而不通过文件系统迂回
. 在打开文件时,内核将file->f_mapping设置到inode->i_mapping
. 这使得多个进程可以访问同一个文件,而不会干扰到其他进程
//inode是一个特定于文件的数据结构,而file则是特定于给定进程的
aaarticlea/png;base64,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*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" alt="" />
给出struct address_space的实例,内核可以推断相关的inode,而inode可用于访问实际存储文件数据的后备存储器(通常是块设备)
. 地址空间是优先树的基本要素,而优先树包含了所有相关的vm_area_strcut实例,描述了与inode关联的文件区间到一些虚拟地址空间的映射
. 由于每个struct vm_area的实例都包含了一个指向所属进程的mm_struct的指针,因此建立了关联
. vm_area_struct还可以通过i_mmap_nonlinear为表头的双链表与一个地址空间关联,这是非线性映射(nonlinear mapping)
. 一个给定的strcut vm_area实例,可以包含在两个数据结构中
) 一个建立进程虚拟地址空间中的区域与潜在的文件数据之间的关联
) 一个用于查找映射了给定文件区间的所有地址空间
2. 优先树的表示
优先树用来管理表示给定文件中特定区间的所有vm_area_struct实例,这要求该数据结构不仅可以处理重叠,还要能够处理相同的文件区间
aaarticlea/png;base64,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" alt="" />
重叠区间的管理并不复杂,区间的边界提供了一个唯一索引,可用于将各个区间存储在一个唯一的树节点中,这与基数树的思想非常相似,即如果B、C、D完全包含在另一个区间A中,那么A将是B、C、D的父节点
如果多个相同区间被归入优先树,各个优先树结点表示为一个"struct vm_area_struct->struct prio_tree_node prio_tree_node"实例,该实例与一个vm_set实例在同一个联合中,这可以将一个vm_set(进而vm_area_struct)的链表与一个优先树结点关联起来
aaarticlea/png;base64,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" alt="" />
在区间插入到优先树时,内核进行如下操作
. 在vm_area_struct实例链接到优先树中作为结点时,prio_tree_node用于建立必要的关联。为检查是否树中已经有同样的vm_area_struct,内核利用了以下事实
) vm_set的parent成员与prio_tree_node结构的最后一个成员是相同的,这些数据结构可据此进行协调
) 由于parent在vm_set中并不使用,内核可以使用parent != NULL来检查当前的vm_area_struct实例是否已经在树中
) prio_tree_node的定义还确保了在share联合内核的内存布局中,vm_set的head成员与prio_tree_node不重叠,因此二者尽管在同一个联合中,也可以同时使用
) 因此内核使用vm_set.head指向属于一个共享映射的vm_area_struct实例列表中的第一个实例
. 如果共享映射的链表包含一个vm_area_struct,则vm_set.list用作表头,链表包含所有涉及的虚拟内存区域
5. 对区域的操作
内核提供了各种函数来操作进程的虚拟内存区域,在建立或删除映射、创建、删除区域、查找用于新区域的适当的内存位置是所需要的标准操作,内核还负责在管理这些数据结构时进行优化
aaarticlea/png;base64,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*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" alt="" />
. 如果一个新区域紧接着现存区域前后直接添加(也包括在两个现存区域之间的情况),内核将涉及的数据结构合并为一个,前提是涉及的"所有"区域的访问权限是相同的,而且是从同一个后备存储器映射的连续数据
. 如果在区域的开始或结束处进行删除,则必须据此截断现存的数据结构
. 如果要删除两个区域之间的一个区域,那么一方面需要减小现存数据结构的长度,另一方面需要为形成的新区域创建一个新的数据结构
我们接下来讨论如何搜索与用户空间中一个特定虚拟地址相关的区域
0x1: 将虚拟地址关联到区域
通过虚拟地址,find_vma可以查找用户地址空间中结束地址在给定地址之后的第一个区域,即满足addr < vm_area_struct->vm_end条件的第一个区域
\linux-2.6.32.63\mm\mmap.c
/*
Look up the first VMA which satisfies addr < vm_end, NULL if none.
1. struct mm_struct *mm: 指明扫描哪个进程的地址空间
2. unsigned long addr: 虚拟地址
*/
struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
{
struct vm_area_struct *vma = NULL; if (mm)
{
/* Check the cache first. 首先检查缓存 */
/* (Cache hit rate is typically around 35%.) 缓存命中率大约是35% */
vma = mm->mmap_cache;
/*
内核首先检查上次处理的区域(mm->mmap_cache)中是否"包含"嗽诩的地址,如果命中,则立即返回指针
*/
if (!(vma && vma->vm_end > addr && vma->vm_start <= addr))
{
struct rb_node * rb_node; rb_node = mm->mm_rb.rb_node;
vma = NULL;
//逐步搜索红黑树,rb_node是用于表示树中各个结点的数据结构
while (rb_node)
{
struct vm_area_struct * vma_tmp;
//rb_entry用于从结点取出"有用数据(这里是vm_area_struct实例)"
vma_tmp = rb_entry(rb_node, struct vm_area_struct, vm_rb);
//如果当前找到的区域结束地址大于目标地址、且起始地址小于目标地址,内核就找到了一个适当的结点
if (vma_tmp->vm_end > addr)
{
vma = vma_tmp;
if (vma_tmp->vm_start <= addr)
break;
//如果当前区域结束地址大于目标地址,则从左子结点开始
rb_node = rb_node->rb_left;
}
else
//如果当前区域的结束地址小于等于目标地址,则从右子节点开始
rb_node = rb_node->rb_right;
}
if (vma)
//如果找到适当的区域,则将其指针保存在mmap_cache中,因为下一次find_vma调用搜索同一个区域中临近地址的可能性很高
mm->mmap_cache = vma;
}
}
return vma;
}
EXPORT_SYMBOL(find_vma);
find_vma_intersection是另一个辅助函数,用于确认边界为start_addr和end_addr的区间是否完全包含在一个现存区域内部,它基于find_vma
\linux-2.6.32.63\include\linux\mm.h
/* Look up the first VMA which intersects the interval start_addr..end_addr-1,
NULL if none. Assume start_addr < end_addr. */
static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
{
struct vm_area_struct * vma = find_vma(mm,start_addr); if (vma && end_addr <= vma->vm_start)
vma = NULL;
return vma;
}
0x2: 区域合并
在新区域被加到进程的地址空间时,内核会检查它是否可以与一个或多个现存区域合并,vma_merge在可能的情况下,将一个新区域与周边区域合并,它需要很多参数
\linux-2.6.32.63\mm\mmap.c
/*
1. struct mm_struct *mm: 相关进程的地址空间实例
2. struct vm_area_struct *prev: 紧接着新区域之前的区域
3. unsigned long addr: 新区域的开始地址
4. unsigned long end: 新区域的结束地址
5. unsigned long vm_flags: 新区域的标志
6. struct anon_vma *anon_vma
7. struct file *file: 如果该区域属于一个文件映射(mmap映射并不一定是文件映射),则file是一个指向表示该文件的file实例的指针
8. pgoff_t pgoff: pgoff指定了映射在文件数据内的偏移量
9. struct mempolicy *policy: 只在NUMA系统上需要
*/
struct vm_area_struct *vma_merge(
struct mm_struct *mm,
struct vm_area_struct *prev,
unsigned long addr,
unsigned long end,
unsigned long vm_flags,
struct anon_vma *anon_vma,
struct file *file,
pgoff_t pgoff,
struct mempolicy *policy
)
{
pgoff_t pglen = (end - addr) >> PAGE_SHIFT;
struct vm_area_struct *area, *next; /*
* We later require that vma->vm_flags == vm_flags,
* so this tests vma->vm_flags & VM_SPECIAL, too.
*/
if (vm_flags & VM_SPECIAL)
return NULL; if (prev)
next = prev->vm_next;
else
next = mm->mmap;
area = next;
if (next && next->vm_end == end) /* cases 6, 7, 8 */
next = next->vm_next; /*
Can it merge with the predecessor?
首先检查前一个区域的结束地址是否等于新区域的起始地址(这样才能刚好对接合并起来)(否则不具备合并的条件)
*/
if (prev && prev->vm_end == addr && mpol_equal(vma_policy(prev), policy) && can_vma_merge_after(prev, vm_flags, anon_vma, file, pgoff))
{
/*
OK, it can. Can we now merge in the successor as well?
如果是,则内核接下来必须检查两个区域
1. 确认二者的标志和映射的文件相同
2. 文件映射内部的偏移量符合连续区域的要求
3. 两个区域都不包含匿名映射
4. 而且两个区域彼此兼容
*/
if (next &&
end == next->vm_start &&
mpol_equal(policy, vma_policy(next)) &&
/*
通过之前调用的can_vma_merge_after、之后调用can_vma_merge_before检查两个区域是否可以合并
如果前一个和后一个区域都可以与当前区域合并,还必须确认前一个和后一个区域的匿名映射可以合并,然后才能创建包含这3个区域的一个单一区域
*/
can_vma_merge_before(next, vm_flags, anon_vma, file, pgoff+pglen) &&
is_mergeable_anon_vma(prev->anon_vma, next->anon_vma))
{
/* cases 1, 6 */
//调用vma_adjust执行最后的合并,它会适当地修改涉及的所有数据结构,包括优先树和vm_area_struct实例,还包括释放不再需要的结构实例
vma_adjust(prev, prev->vm_start, next->vm_end, prev->vm_pgoff, NULL);
}
else
/* cases 2, 5, 7 */
vma_adjust(prev, prev->vm_start, end, prev->vm_pgoff, NULL);
return prev;
} /*
* Can this new request be merged in front of next?
*/
if (next &&
end == next->vm_start &&
mpol_equal(policy, vma_policy(next)) &&
can_vma_merge_before(next, vm_flags, anon_vma, file, pgoff+pglen))
{
if (prev && addr < prev->vm_end) /* case 4 */
vma_adjust(prev, prev->vm_start, addr, prev->vm_pgoff, NULL);
else /* cases 3, 8 */
vma_adjust(area, addr, next->vm_end, next->vm_pgoff - pglen, NULL);
return area;
} return NULL;
}
0x3: 插入区域
insert_vm_struct是内核用于插入新区域的标准函数,实际工作委托给两个辅助函数
aaarticlea/png;base64,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" alt="" />
/* Insert vm structure into process list sorted by address
* and into the inode's i_mmap tree. If vm_file is non-NULL
* then i_mmap_lock is taken here.
*/
int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
{
struct vm_area_struct * __vma, * prev;
struct rb_node ** rb_link, * rb_parent; /*
* The vm_pgoff of a purely anonymous vma should be irrelevant
* until its first write fault, when page's anon_vma and index
* are set. But now set the vm_pgoff it will almost certainly
* end up with (unless mremap moves it elsewhere before that
* first wfault), so /proc/pid/maps tells a consistent story.
*
* By setting it to reflect the virtual start address of the
* vma, merges and splits can happen in a seamless way, just
* using the existing file pgoff checks and manipulations.
* Similarly in do_mmap_pgoff and in do_brk.
*/
if (!vma->vm_file) {
BUG_ON(vma->anon_vma);
vma->vm_pgoff = vma->vm_start >> PAGE_SHIFT;
}
/*
首先调用find_vma_prepare,通过新区域的起始地址和涉及的地址空间(mm_struct),获取下列信息
1. 前一个区域的vm_area_struct实例
2. 红黑树中保存新区域结点的父节点
3. 包含该区域自身的红黑树叶结点 C语言中函数只允许返回一个值,因此find_vma_prepare只返回一个指向前一个区域的指针作为结果,剩余的信息通过指针参数提供
*/
__vma = find_vma_prepare(mm,vma->vm_start,&prev,&rb_link,&rb_parent);
if (__vma && __vma->vm_start < vma->vm_end)
return -ENOMEM;
if ((vma->vm_flags & VM_ACCOUNT) && security_vm_enough_memory_mm(mm, vma_pages(vma)))
return -ENOMEM;
/*
查找到的信息通过vma_link将新区域合并到该进程现存的数据结构中,在经过一些准备工作之后,该函数将实际工作委托给其他函数,完成实际的工作
1. __vma_link_list: 将新区域放置到进程管理区域的线性链表上,完成该工作,需要提供使用find_vma_prepare找到的前一个和后一个区域
2. __vma_link_rb: 将新区域连接到红黑树
3. __anon_vma_link: 将vm_area_struct实例添加到匿名映射的链表上
4. __vma_link_file: 将相关的address_space和映射(如果是文件映射)关联起来,并使用vma_prio_tree_insert将该区域添加到优先树中,对多个相同区域的处理如上处理
*/
vma_link(mm, vma, prev, rb_link, rb_parent);
return ;
}
0x4: 创建区域
在向数据结构插入新的内存区域之前,内核必须确认虚拟地址空间中有足够的空闲空间,可用于给定长度的区域,该工作由get_unmapped_area辅助函数完成
我们知道,根据进程虚拟地址空间的布局,会选择不同的映射函数,我们着重讨论在大多数系统上采用的标准函数arch_get_unmapped_area
/* Get an address range which is currently unmapped.
* For shmat() with addr=0.
*
* Ugly calling convention alert:
* Return value with the low bits set means error value,
* ie
* if (ret & ~PAGE_MASK)
* error = ret;
*
* This function "knows" that -ENOMEM has the bits set.
*/
#ifndef HAVE_ARCH_UNMAPPED_AREA
unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags)
{
struct mm_struct *mm = current->mm;
struct vm_area_struct *vma;
unsigned long start_addr; //检查是否超过了进程虚拟地址空间的上界
if (len > TASK_SIZE)
return -ENOMEM;
//检查是否设置了MAP_FIXED标志,该标志表示映射将在固定地址创建,如果是,内核只会确保该地址满足对齐要求(按页对齐),而且所要求的区间完全在可用地址空间中
if (flags & MAP_FIXED)
return addr; if (addr)
{
addr = PAGE_ALIGN(addr);
vma = find_vma(mm, addr);
//如果指定了ige特定的优先选用(非固定地址)地址,内核会检查该区域是否与现存区域重叠,如果不重叠,则将该地址作为目标返回
if (TASK_SIZE - len >= addr && (!vma || addr + len <= vma->vm_start))
return addr;
}
if (len > mm->cached_hole_size)
{
start_addr = addr = mm->free_area_cache;
}
else
{
start_addr = addr = TASK_UNMAPPED_BASE;
mm->cached_hole_size = ;
} full_search:
/*
否则,内核必须遍历进程中可用的区域,设法找到一个大小适当的空闲区域
实际的遍历,或者开始于虚拟地址空间中最后一个"空洞"的地址
或者开始于全局的起始地址TASK_UNMAPPED_BASE
*/
for (vma = find_vma(mm, addr); ; vma = vma->vm_next)
{
/* At this point: (!vma || addr < vma->vm_end). */
if (TASK_SIZE - len < addr)
{
/*
* Start a new search - just in case we missed
* some holes.
*/
if (start_addr != TASK_UNMAPPED_BASE)
{
addr = TASK_UNMAPPED_BASE;
start_addr = addr;
mm->cached_hole_size = ;
goto full_search;
}
/*
如果搜索持续到用户地址空间的末端(TASK_SIZE)。仍然没有找到适当的区域,则内核返回一个-ENOMEM错误,错误必须发送到用户空间,且由相关的应用程序来处理
错误码表示虚拟内存中可用内存不足,无法满足应用程序的请求
*/
return -ENOMEM;
}
if (!vma || addr + len <= vma->vm_start)
{
/*
* Remember the place where we stopped the search:
*/
mm->free_area_cache = addr + len;
return addr;
}
if (addr + mm->cached_hole_size < vma->vm_start)
mm->cached_hole_size = vma->vm_start - addr;
addr = vma->vm_end;
}
}
#endif void arch_unmap_area(struct mm_struct *mm, unsigned long addr)
{
/*
* Is this a new hole at the lowest possible address?
*/
if (addr >= TASK_UNMAPPED_BASE && addr < mm->free_area_cache) {
mm->free_area_cache = addr;
mm->cached_hole_size = ~0UL;
}
}
6. 地址空间
文件的内存映射可以认为是两个不同的地址空间之间的映射,即用户进程的虚拟地址空间和文件系统所在的地址空间。在内核创建一个映射时,必须建立两个地址之间的关联,以支持二者以读写请求的形式通信,vm_operations_struct结构即用于完成该工作,它提供了一个操作,来读取已经映射到虚拟地址空间、但其内容尚未进入物理内存的页
struct vm_area_struct
{
..
struct vm_operations_struct *vm_ops;
..
}
但该操作不了解映射类型或其性质的相关信息,由于存在许多种类的文件映射(不同类型文件系统上的普通文件、设备文件等),因此需要更多的信息,即内核需要更详细地说明数据源所在的地址空间
address_space结构,即为该目的定义,包含了有关映射的附加信息,每一个文件映射都有一个先关的address_space实例,每个地址空间都有一组相关的操作,以函数指针的形式保存在如下结构中
\linux-2.6.32.63\include\linux\fs.h
struct address_space_operations
{
//writepage将一页的内容从物理内存写回到块设备上对应的位置,以便永久保存更改的内容
int (*writepage)(struct page *page, struct writeback_control *wbc); //readpage从潜在的块设备读取一页到物理内存中
int (*readpage)(struct file *, struct page *);
void (*sync_page)(struct page *); /* Write back some dirty pages from this mapping. */
int (*writepages)(struct address_space *, struct writeback_control *); /*
Set a page dirty. Return true if this dirtied it
set_page_dirty表示一页的内容已经改变,即与块设备上的原始内容不再匹配
*/
int (*set_page_dirty)(struct page *page); int (*readpages)(struct file *filp, struct address_space *mapping,
struct list_head *pages, unsigned nr_pages); int (*write_begin)(struct file *, struct address_space *mapping,
loff_t pos, unsigned len, unsigned flags,
struct page **pagep, void **fsdata);
int (*write_end)(struct file *, struct address_space *mapping,
loff_t pos, unsigned len, unsigned copied,
struct page *page, void *fsdata); /* Unfortunately this kludge is needed for FIBMAP. Don't use it */
sector_t (*bmap)(struct address_space *, sector_t);
void (*invalidatepage) (struct page *, unsigned long);
int (*releasepage) (struct page *, gfp_t);
ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
loff_t offset, unsigned long nr_segs);
int (*get_xip_mem)(struct address_space *, pgoff_t, int,
void **, unsigned long *);
/* migrate the contents of a page to the specified target */
int (*migratepage) (struct address_space *,
struct page *, struct page *);
int (*launder_page) (struct page *);
int (*is_partially_uptodate) (struct page *, read_descriptor_t *,
unsigned long);
int (*error_remove_page)(struct address_space *, struct page *);
};
vm_operations_struct和address_space之间的联系如何建立,这里不存在将一个结构的实例分配到另一个结构的静态连接,而是这两个结构仍然使用内核为vm_operations_struct提供的标准实现连接起来,几乎所有的文件系统都使用了这种方式
\linux-2.6.32.63\mm\filemap.c
const struct vm_operations_struct generic_file_vm_ops = {
.fault = filemap_fault,
};
filemap_fault的实现使用了相关映射的readpage方法,因此也采用了上述的address_space
7. 内存映射
我们继续讨论在建立映射时,内核和应用程序之间的交互,我们知道C标准库提供了mmap函数建立映射,在内核一端,提供了两个系统调用mmap、mmap2。某些体系结构实现了两个版本(例如IA64、Sparc(64)),其他的只实现了第一个(AMD64)或第二个(IA-32),两个函数的参数相同
asmlinkage long sys_mmap(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long);
这两个调用都会在用户虚拟地址空间中的pos位置,建立一个长度为len的映射,其访问权限通过prot定义,flags是一个标志集用于设置一些参数,相关的文件通过其文件描述符fs标识
mmap和mmap2之间的差别在于偏移量的予以(off)
. mmap: 位置的单位是字节
. mmap2: 位置的单位是页(PAGE_SIZE)
//它们都表示映射在文件中开始的位置,即使文件本身比可用空间大,也可以映射文件的一部分
通常C标准库只提供一个函数,由应用程序来创建内存映射,接下来该函数调用在内部转换为适合于体系结构的系统调用
在使用munmap系统调用删除映射时,因为不需要文件偏移量,因此不需要munmap2,只需要提供映射的虚拟地址即可
0x1: 创建映射
#include <sys/mman.h> /*
1. start:映射区的开始地址,设置为0时表示由系统决定映射区的起始地址
2. length:映射区的长度。//长度单位是 以字节为单位,不足一内存页按一内存页处理
3. prot:期望的内存保护标志,不能与文件的打开模式冲突。是以下的某个值,可以通过or运算合理地组合在一起
1) PROT_EXEC //页内容可以被执行
2) PROT_READ //页内容可以被读取
3) PROT_WRITE //页可以被写入
4) PROT_NONE //页不可访问
4. flags:指定映射对象的类型,映射选项和映射页是否可以共享。它的值可以是一个或者多个以下位的组合体
1) MAP_FIXED //使用指定的映射起始地址,如果由start和len参数指定的内存区重叠于现存的映射空间,重叠部分将会被丢弃。如果指定的起始地址不可用,操作将会失败。并且起始地址必须落在页的边界上。如果没有设置该标志,内核可以在受阻时随意改变目标地址
2) MAP_SHARED //与其它所有映射这个对象的进程共享映射空间。对共享区的写入,相当于输出到文件。直到msync()或者munmap()被调用,文件实际上不会被更新。如果一个对象(通常是文件)在几个进程之间共享时,则必须使用MAP_SHARED
3) MAP_PRIVATE //建立一个写入时拷贝的私有映射。内存区域的写入不会影响到原文件。这个标志和以上标志是互斥的,只能使用其中一个。
4) MAP_DENYWRITE //这个标志被忽略
5) MAP_EXECUTABLE //同上
6) MAP_NORESERVE //不要为这个映射保留交换空间。当交换空间被保留,对映射区修改的可能会得到保证。当交换空间不被保留,同时内存不足,对映射区的修改会引起段违例信号。
7) MAP_LOCKED //锁定映射区的页面,从而防止页面被交换出内存
8) MAP_GROWSDOWN //用于堆栈,告诉内核VM系统,映射区可以向下扩展。
9) MAP_ANONYMOUS //匿名映射,映射区不与任何文件关联,fd和off参数被忽略,此类映射可用于为应用程序分配类似malloc所用的内存
10) MAP_ANON //MAP_ANONYMOUS的别称,不再被使用
11) MAP_FILE //兼容标志,被忽略
12) MAP_32BIT //将映射区放在进程地址空间的低2GB,MAP_FIXED指定时会被忽略。当前这个标志只在x86-64平台上得到支持。
13) MAP_POPULATE //为文件映射通过预读的方式准备好页表。随后对映射区的访问不会被页违例阻塞。
14) MAP_NONBLOCK //仅和MAP_POPULATE一起使用时才有意义。不执行预读,只为已存在于内存中的页面建立页表入口。
5. fd:有效的文件描述词。一般是由open()函数返回,其值也可以设置为-1,此时需要指定flags参数中的MAP_ANON,表明进行的是匿名映射。
6. off_toffset:被映射对象内容的起点
*/
void* mmap(void* start, size_t length, int prot, int flags, int fd, off_t offset);
prot指定了映射内存的访问权限,但并非所有处理器都实现了所有组合,因而区域实际授予的权限可能比指定的要多,尽管内核尽力设置指定的权限,但它只能保证实际设置的访问权限不会比指定的权限有更多的限制
sys_mmap、sys_mmap2最终会将工作委托给do_mmap_pgoff
\linux-2.6.32.63\mm\mmap.c
aaarticlea/png;base64,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" alt="" />
/*
* The caller must hold down_write(¤t->mm->mmap_sem).
*/
unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long pgoff)
{
struct mm_struct * mm = current->mm;
struct inode *inode;
unsigned int vm_flags;
int error;
unsigned long reqprot = prot; /*
* Does the application expect PROT_READ to imply PROT_EXEC?
*
* (the exception is when the underlying filesystem is noexec
* mounted, in which case we dont add PROT_EXEC.)
*/
if ((prot & PROT_READ) && (current->personality & READ_IMPLIES_EXEC))
if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
prot |= PROT_EXEC; if (!len)
return -EINVAL; if (!(flags & MAP_FIXED))
addr = round_hint_to_min(addr); /* Careful about overflows.. */
len = PAGE_ALIGN(len);
if (!len)
return -ENOMEM; /* offset overflow? */
if ((pgoff + (len >> PAGE_SHIFT)) < pgoff)
return -EOVERFLOW; /* Too many mappings? */
if (mm->map_count > sysctl_max_map_count)
return -ENOMEM; /* Obtain the address to map to. we verify (or select) it and ensure
* that it represents a valid section of the address space.
首先调用get_unmapped_area函数,在虚拟地址空间中找到一个适当的区域用于映射
1. 应用程序可以对映射指定固定地址
2. 建议一个地址
3. 由内核选择地址
*/
addr = get_unmapped_area(file, addr, len, pgoff, flags);
if (addr & ~PAGE_MASK)
return addr; /* Do simple checking here so the lower-level routines won't have
* to. we assume access permissions have been handled by the open
* of the memory object, so we don't do any here.
calc_vm_prot_bits、calc_vm_flag_bits将系统调用中指定的标志和访问权限常数合并到一个共同的标志集中
在后续的操作中比较易于处理(MAP_、PROT_表示转换为VM_前缀的标志)
最有趣的是,内核在从当前运行进程的mm_struct实例获得def_flags之后,又将其包含到标志集中,def_flags的值可以以下
1. 0: 不会改变结果标志集
2. VM_LOCK: 意味着随后映射的页无法换出
为了设置def_flags的值,进程必须发出mlockall系统调用
*/
vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) |
mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; if (flags & MAP_LOCKED)
if (!can_do_mlock())
return -EPERM; /* mlock MCL_FUTURE? */
if (vm_flags & VM_LOCKED) {
unsigned long locked, lock_limit;
locked = len >> PAGE_SHIFT;
locked += mm->locked_vm;
lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur;
lock_limit >>= PAGE_SHIFT;
if (locked > lock_limit && !capable(CAP_IPC_LOCK))
return -EAGAIN;
} inode = file ? file->f_path.dentry->d_inode : NULL; if (file) {
switch (flags & MAP_TYPE) {
case MAP_SHARED:
if ((prot&PROT_WRITE) && !(file->f_mode&FMODE_WRITE))
return -EACCES; /*
* Make sure we don't allow writing to an append-only
* file..
*/
if (IS_APPEND(inode) && (file->f_mode & FMODE_WRITE))
return -EACCES; /*
* Make sure there are no mandatory locks on the file.
*/
if (locks_verify_locked(inode))
return -EAGAIN; vm_flags |= VM_SHARED | VM_MAYSHARE;
if (!(file->f_mode & FMODE_WRITE))
vm_flags &= ~(VM_MAYWRITE | VM_SHARED); /* fall through */
case MAP_PRIVATE:
if (!(file->f_mode & FMODE_READ))
return -EACCES;
if (file->f_path.mnt->mnt_flags & MNT_NOEXEC) {
if (vm_flags & VM_EXEC)
return -EPERM;
vm_flags &= ~VM_MAYEXEC;
} if (!file->f_op || !file->f_op->mmap)
return -ENODEV;
break; default:
return -EINVAL;
}
} else {
switch (flags & MAP_TYPE) {
case MAP_SHARED:
/*
* Ignore pgoff.
*/
pgoff = ;
vm_flags |= VM_SHARED | VM_MAYSHARE;
break;
case MAP_PRIVATE:
/*
* Set pgoff according to addr for anon_vma.
*/
pgoff = addr >> PAGE_SHIFT;
break;
default:
return -EINVAL;
}
} error = security_file_mmap(file, reqprot, prot, flags, addr, );
if (error)
return error;
error = ima_file_mmap(file, prot);
if (error)
return error;
//在检查过参数并设置好所有需要的标志之后,剩余的工作委托给mmap_region
return mmap_region(file, addr, len, flags, vm_flags, pgoff);
}
EXPORT_SYMBOL(do_mmap_pgoff);
\linux-2.6.32.63\mm\mmap.c
unsigned long mmap_region(struct file *file, unsigned long addr,
unsigned long len, unsigned long flags,
unsigned int vm_flags, unsigned long pgoff)
{
struct mm_struct *mm = current->mm;
struct vm_area_struct *vma, *prev;
int correct_wcount = ;
int error;
struct rb_node **rb_link, *rb_parent;
unsigned long charged = ;
struct inode *inode = file ? file->f_path.dentry->d_inode : NULL; /* Clear old maps */
error = -ENOMEM;
munmap_back:
//调用find_vma_prepare函数,来查找前一个和后一个区域的vm_area_struct实例,以及红黑树中结点对应的数据
vma = find_vma_prepare(mm, addr, &prev, &rb_link, &rb_parent);
//如果在指定的映射位置已经存在一个映射,则通过do_munmap删除它
if (vma && vma->vm_start < addr + len)
{
if (do_munmap(mm, addr, len))
return -ENOMEM;
goto munmap_back;
} /* Check against address space limit. */
if (!may_expand_vm(mm, len >> PAGE_SHIFT))
return -ENOMEM; /*
* Set 'VM_NORESERVE' if we should not account for the
* memory use of this mapping.
如果没有设置MAP_NORESERVE标志或内核参数sysctl_overcommit_memory设置为OVERCOMMIT_NEVER(即不允许过量使用)
*/
if ((flags & MAP_NORESERVE)) {
/* We honor MAP_NORESERVE if allowed to overcommit */
if (sysctl_overcommit_memory != OVERCOMMIT_NEVER)
vm_flags |= VM_NORESERVE; /* hugetlb applies strict overcommit unless MAP_NORESERVE */
if (file && is_file_hugepages(file))
vm_flags |= VM_NORESERVE;
}
..
}
在内核分配了所需的内存之后,会执行下列步骤
. 分配并初始化一个新的vm_area_struct实例,并插入到进程的链表/树数据结构中
. 用特定于文件的函数file->f_op->mmap创建映射,大都数文件系统将generic_file_mmap用于该目的,它所作的所有工作,就是将映射的vm_ops成员设置为generic_file_vm_ops
vma->vm_ops = &generic_file_vm_ops;
\linux-2.6.32.63\mm\filemap.c
const struct vm_operations_struct generic_file_vm_ops =
{
.fault = filemap_fault,
};
filemap_fault在应用程序访问映射区域但对应数据不再物理内存时调用,filemap_fault借助于潜在文件系统的底层例程取得所需数据,并读取到物理内存,这些对应用程序是透明的,即映射数据不是在建立映射时立即读入内存,只有实际需要相应数据时才进行读取
这也是虚拟内存的一个核心思想,即对应用程序看到的"platform memory"来说,大部多或者说进程刚启动的时候都只一个空的东西,底层并没有实际的基础数据支撑,只有到了正常需要的时候才会去建立这个联系,这是一种典型的"延迟绑定"思想
如果设置了VM_LOCKED,或者通过系统调用的标志参数显示传递进来,或者通过mlockall机制隐式设置,内核都会调用make_pages_present依次扫描映射中每一页,对每一页触发缺页异常以便读入其数据,这同时意味着失去了延迟读取带来的性能提高,但内核可以确保在映射建立后所涉及的页总是在物理内存中,即VM_LOCKED标志用来防止从内存换出页,因此这些页必须先读进来
0x2: 删除映射
从虚拟地址空间删除现存映射,必须使用munmap系统调用,它需要两个参数
#include<sys/mman.h>
/*
1. start: 解除映射区域的起始地址
2. length长度
*/
int munmap(void *start, size_t length);
aaarticlea/png;base64,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*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" alt="" />
/* Munmap is split into 2 main parts -- this part which finds
* what needs doing, and the areas themselves, which do the
* work. This now handles partial unmappings.
* Jeremy Fitzhardinge <jeremy@goop.org>
*/
int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
{
unsigned long end;
struct vm_area_struct *vma, *prev, *last; if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
return -EINVAL; if ((len = PAGE_ALIGN(len)) == )
return -EINVAL; /*
Find the first overlapping VMA
内核首先必须调用find_vma_prev,以找到解除映射区域的vm_area_struct实例
*/
vma = find_vma_prev(mm, start, &prev);
if (!vma)
return ;
/* we have start < vma->vm_end */ /* if it doesn't overlap, we have nothing.. */
end = start + len;
if (vma->vm_start >= end)
return ; /*
* If we need to split any vma, do it now to save pain later.
*
* Note: mremap's move_vma VM_ACCOUNT handling assumes a partially
* unmapped vm_area_struct will remain in use: so lower split_vma
* places tmp vma above, and higher split_vma places tmp vma below.
如果解除映射区域的起始地址与find_vma_prev找到的区域起始地址不同,则只解除部分映射,而不是解除整个映射区域
*/
if (start > vma->vm_start)
{
//内核首先将现存的映射划分为几个部分,映射的前一部分不需要解除映射
int error = split_vma(mm, vma, start, );
if (error)
return error;
prev = vma;
} /* Does it split the last one? */
last = find_vma(mm, end);
//如果解除映射的部分区域的末端与愿区域末端不重合,那么原区域后部仍然有一部分未解除映射,因此需要再进行一次映射切割
if (last && end > last->vm_start)
{
int error = split_vma(mm, last, end, );
if (error)
return error;
}
vma = prev? prev->vm_next: mm->mmap; /*
* unlock any mlock()ed ranges before detaching vmas
*/
if (mm->locked_vm) {
struct vm_area_struct *tmp = vma;
while (tmp && tmp->vm_start < end) {
if (tmp->vm_flags & VM_LOCKED) {
mm->locked_vm -= vma_pages(tmp);
munlock_vma_pages_all(tmp);
}
tmp = tmp->vm_next;
}
} /*
* Remove the vma's, and unmap the actual pages
内核调用detach_vmas_to_be_unmapped列出所有需要解除映射的区域,由于解除映射操作可能涉及地址空间中的任何区域,很可能影响连续几个区域
内核可能拆分这一系列区域中首尾两端的区域,以确保只影响到完整的区域
*/
detach_vmas_to_be_unmapped(mm, vma, prev, end);
//调用unmap_region从页表删除与映射相关的所有项,完成后,内核还必须确保将相关的项从TLB移除或者使之无效
unmap_region(mm, vma, prev, start, end); /*
Fix up all other VM information
用remove_vma_list释放vm_area_strcut实例占用的空间,完成从内核中删除映射的工作
*/
remove_vma_list(mm, vma); return ;
}
0x3: 非线性映射
普通的映射将文件中一个连续的部分映射到虚拟内存中一个同样连续的部分,如果需要将文件的不同部分以不同顺序映射到虚拟内存的连续区域中,实现的一个简单有效的方法是使用非线性映射,内核提供了一个独立的系统调用,专门用于该目的
\linux-2.6.32.63\mm\fremap.c
/**
* sys_remap_file_pages - remap arbitrary pages of an existing VM_SHARED vma
* @start: start of the remapped virtual memory range
* @size: size of the remapped virtual memory range
* @prot: new protection bits of the range (see NOTE)
* @pgoff: to-be-mapped page of the backing store file
* @flags: 0 or MAP_NONBLOCKED - the later will cause no IO.
*
* sys_remap_file_pages remaps arbitrary pages of an existing VM_SHARED vma
* (shared backing store file).
*
* This syscall works purely via pagetables, so it's the most efficient
* way to map the same (large) file into a given virtual window. Unlike
* mmap()/mremap() it does not create any new vmas. The new mappings are
* also safe across swapout.
*
* NOTE: the @prot parameter right now is ignored (but must be zero),
* and the vma's default protection is used. Arbitrary protections
* might be implemented in the future.
*/
SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
unsigned long, prot, unsigned long, pgoff, unsigned long, flags)
{
struct mm_struct *mm = current->mm;
struct address_space *mapping;
unsigned long end = start + size;
struct vm_area_struct *vma;
int err = -EINVAL;
int has_write_lock = ; if (prot)
return err;
/*
* Sanitize the syscall parameters:
*/
start = start & PAGE_MASK;
size = size & PAGE_MASK; /* Does the address range wrap, or is the span zero-sized? */
if (start + size <= start)
return err; /* Can we represent this offset inside this architecture's pte's? */
#if PTE_FILE_MAX_BITS < BITS_PER_LONG
if (pgoff + (size >> PAGE_SHIFT) >= (1UL << PTE_FILE_MAX_BITS))
return err;
#endif /* We need down_write() to change vma->vm_flags. */
down_read(&mm->mmap_sem);
retry:
vma = find_vma(mm, start); /*
* Make sure the vma is shared, that it supports prefaulting,
* and that the remapped range is valid and fully within
* the single existing vma. vm_private_data is used as a
* swapout cursor in a VM_NONLINEAR vma.
*/
if (!vma || !(vma->vm_flags & VM_SHARED))
goto out; if (vma->vm_private_data && !(vma->vm_flags & VM_NONLINEAR))
goto out; if (!(vma->vm_flags & VM_CAN_NONLINEAR))
goto out; if (end <= start || start < vma->vm_start || end > vma->vm_end)
goto out; /* Must set VM_NONLINEAR before any pages are populated. */
if (!(vma->vm_flags & VM_NONLINEAR)) {
/* Don't need a nonlinear mapping, exit success */
if (pgoff == linear_page_index(vma, start)) {
err = ;
goto out;
} if (!has_write_lock) {
up_read(&mm->mmap_sem);
down_write(&mm->mmap_sem);
has_write_lock = ;
goto retry;
}
mapping = vma->vm_file->f_mapping;
/*
* page_mkclean doesn't work on nonlinear vmas, so if
* dirty pages need to be accounted, emulate with linear
* vmas.
*/
if (mapping_cap_account_dirty(mapping)) {
unsigned long addr;
struct file *file = vma->vm_file; flags &= MAP_NONBLOCK;
get_file(file);
addr = mmap_region(file, start, size,
flags, vma->vm_flags, pgoff);
fput(file);
if (IS_ERR_VALUE(addr)) {
err = addr;
} else {
BUG_ON(addr != start);
err = ;
}
goto out;
}
spin_lock(&mapping->i_mmap_lock);
flush_dcache_mmap_lock(mapping);
vma->vm_flags |= VM_NONLINEAR;
vma_prio_tree_remove(vma, &mapping->i_mmap);
vma_nonlinear_insert(vma, &mapping->i_mmap_nonlinear);
flush_dcache_mmap_unlock(mapping);
spin_unlock(&mapping->i_mmap_lock);
} if (vma->vm_flags & VM_LOCKED) {
/*
* drop PG_Mlocked flag for over-mapped range
*/
unsigned int saved_flags = vma->vm_flags;
munlock_vma_pages_range(vma, start, start + size);
vma->vm_flags = saved_flags;
} mmu_notifier_invalidate_range_start(mm, start, start + size);
err = populate_range(mm, vma, start, size, pgoff);
mmu_notifier_invalidate_range_end(mm, start, start + size);
if (!err && !(flags & MAP_NONBLOCK)) {
if (vma->vm_flags & VM_LOCKED) {
/*
* might be mapping previously unmapped range of file
*/
mlock_vma_pages_range(vma, start, start + size);
} else {
if (unlikely(has_write_lock)) {
downgrade_write(&mm->mmap_sem);
has_write_lock = ;
}
make_pages_present(start, start+size);
}
} /*
* We can't clear VM_NONLINEAR because we'd have to do
* it after ->populate completes, and that would prevent
* downgrading the lock. (Locks can't be upgraded).
*/ out:
if (likely(!has_write_lock))
up_read(&mm->mmap_sem);
else
up_write(&mm->mmap_sem); return err;
}
sys_remap_file_pages系统调用允许重排映射中的页,使得内存与文件中的顺序不再等价,实现该特性无需移动内存中的数据,而是通过操作进程的页表实现
sys_remap_file_pages可以将现存映射(位置pgoff、长度size)移动到虚拟内存中的一个新位置,start标识了移动的目标映射,因而必须落入某个现存映射的地址范围中,它还指定了由pgoff和size标识的页移动的目标位置
8. 反向映射
内核通过页表,可以建立虚拟和物理地址之间的联系,以及进程的一个内存映 射区域与其虚拟内存页地址之间的关联,我们接下来讨论最后一个联系: 物理内存页和该页所属进程(准确地说去所有使用该页的进程的对应页表项)之间的联系。在换出页时需要该关联,以便更新所有涉及的进程,因为页已经换出,必 须在页表中标明,以便在这些进程访问对相应页的时候产生缺页中断的时候能够知道需要进行页换入
. 在映射一页时,它关联到一个进程,但不一定处于使用中
. 对页的引用次数表明页使用的活跃程度,为确定该数目,内核首先必须建立页和所有使用者之间的关联,还必须借助一些技巧来计算出页使用的活跃程度
因此第一个任务需要建立页和所有映射了该页的位置之间的关联,为此内核使用一些附加的数据结构和函数,采用一种逆向映射方法
0x1: 数据结构
内核使用饿了简洁的数据结构,以最小化逆向映射的管理开销,struct page结构包含了一个用于实现逆向映射的成员
struct page
{
..
/*
内存管理子系统中映射的页表项计数,用于表示页是否已经映射,还用于限制逆向映射搜索
*/
atomic_t _mapcount;
..
}
_mapcount表明共享该页的位置的数目,计数器的初始值为-1,在页插入到逆向映射数据结构时,计数器赋值为0,页每次增加一个使用者时,计数器加1,这使得内核能够快速检查在所有者之外,该页有多少使用者
但是要完成逆向映射的目的: 给定page实例,找到所有映射了该物理内存页的位置,还需要两个其他的数据机构发挥作用
. 优先查找树中嵌入了属于非匿名映射的每个区域
. 指向内存中同一页的匿名区域的链表 struct vm_area_struct
{
..
union
{ /* links to address_space->i_mmap or i_mmap_nonlinear */
struct
{
struct list_head list;
void *parent;
struct vm_area_struct *head;
} vm_set;
struct prio_tree_node prio_tree_node;
} shared; /*
在文件的某一页经过写时复制之后,文件的MAP_PRIVATE虚拟内存区域可能同时在i_mmap树和anon_vma链表中,MAP_SHARED虚拟内存区域只能在i_mmap树中
匿名的MAP_PRIVATE、栈或brk虚拟内存区域(file指针为NULL)只能处于anon_vma链表中
*/
struct list_head anon_vma_node; /* anon_vma entry 对该成员的访问通过anon_vma->lock串行化 */
struct anon_vma *anon_vma; /* anonymous VMA object 对该成员的
..
}
内核在实现逆向映射时采用的技巧是,不直接保存页和相关的使用者之间的关联,而只保存页和页所在区域的关联,包含该页的所有其他区域(进而所有的使用者)都可以通过这以上数据机构找到。该方法又名"基于对象的逆向映射(object-based reverse mapping)",因为没有存储页和使用者之间的直接关联,相反,在两者之间插入了另一个对象(该页所在的区域)
0x2: 建立逆向映射
在创建逆向映射时,有必要区分两个备选项: 匿名页和基于文件映射的页,因为用于管理这两种选项的数据机构不同
. 匿名页
将匿名页插入到逆向映射数据结构中有两种方法
) 对新的匿名页必须调用page_add_new_anon_rmap: 将映射计数器page->_mapcount设置为0
) 已经有引用计数的页,则使用page_add_anon_rmap: 将计数器加1 . 基于文件映射的页
所需要的只是对_mapcount变量加1(原子操作)并更新各内存域的统计量
0x3: 使用逆向映射
page_referenced是一个重要的函数,很好地使用了逆向映射方案所涉及的数据结构,它统计了最近活跃地使用(即访问)了某个共享页的进程的数目,这不同于该页映射到的区域数目,后者大多数情况下是静态的,而如果处于使用中,前者(访问频率)会很快发生改变
该函数相当于一个多路复用器
. 对匿名页调用page_referenced_anon
. 对于基于文件映射的页调用page_referenced_file
//分别调用的两个函数,其目的都是确定有多少地方在使用一个页,但由于底层数据结构的不同,二者采用了不同的方法
1. 匿名页函数
\linux-2.6.32.63\mm\rmap.c
static int page_referenced_anon(struct page *page,
struct mem_cgroup *mem_cont,
unsigned long *vm_flags)
{
unsigned int mapcount;
struct anon_vma *anon_vma;
struct vm_area_struct *vma;
int referenced = ; //调用page_lock_anon_vma辅助函数,找到引用了某个特定page实例的区域的列表
anon_vma = page_lock_anon_vma(page);
if (!anon_vma)
return referenced; mapcount = page_mapcount(page);
//在找到匹配的anon_vma实例之后,内核遍历链表中的所有区域,分别调用page_referenced_one,计算使用该页的次数(在系统换入/换出页时,需要一些校正)
list_for_each_entry(vma, &anon_vma->head, anon_vma_node)
{
/*
* If we are reclaiming on behalf of a cgroup, skip
* counting on behalf of references from different
* cgroups
*/
if (mem_cont && !mm_match_cgroup(vma->vm_mm, mem_cont))
continue;
referenced += page_referenced_one(page, vma,
&mapcount, vm_flags);
if (!mapcount)
break;
} page_unlock_anon_vma(anon_vma);
return referenced;
}
page_referenced_one分为两个步骤执行其任务
. 找到指向该页的页表项
. 检查页表项是否设置了_PAGE_ACCESSED标志位,然后清除该标志位,每次访问该页时,硬件会设置该标志(如果特定体系结构有需要,内核也会提供额外的支持),如果设置了该标志位,则引用计数器加1,否则不变,因此经常使用的页引用计数较高,而很少使用页相反,因此内核会根据引用计数,立即就能判断某一页似乎否重要
2. 基于文件映射的函数
在检查基于文件映射的页的引用次数时,采用的方法类似
static int page_referenced_file(struct page *page,
struct mem_cgroup *mem_cont,
unsigned long *vm_flags)
{
unsigned int mapcount;
struct address_space *mapping = page->mapping;
pgoff_t pgoff = page->index << (PAGE_CACHE_SHIFT - PAGE_SHIFT);
struct vm_area_struct *vma;
struct prio_tree_iter iter;
int referenced = ; /*
* The caller's checks on page->mapping and !PageAnon have made
* sure that this is a file page: the check for page->mapping
* excludes the case just before it gets set on an anon page.
*/
BUG_ON(PageAnon(page)); /*
* The page lock not only makes sure that page->mapping cannot
* suddenly be NULLified by truncation, it makes sure that the
* structure at mapping cannot be freed and reused yet,
* so we can safely take mapping->i_mmap_lock.
*/
BUG_ON(!PageLocked(page)); spin_lock(&mapping->i_mmap_lock); /*
* i_mmap_lock does not stabilize mapcount at all, but mapcount
* is more likely to be accurate if we note it after spinning.
*/
mapcount = page_mapcount(page); vma_prio_tree_foreach(vma, &iter, &mapping->i_mmap, pgoff, pgoff) {
/*
* If we are reclaiming on behalf of a cgroup, skip
* counting on behalf of references from different
* cgroups
*/
if (mem_cont && !mm_match_cgroup(vma->vm_mm, mem_cont))
continue;
referenced += page_referenced_one(page, vma,
&mapcount, vm_flags);
if (!mapcount)
break;
} spin_unlock(&mapping->i_mmap_lock);
return referenced;
}
9.堆的管理
堆是进程中用于动态分配变量和数据的内存区域,堆的管理对应用程序员来说不是直接可见的,它依赖标准库提供的各个辅助函数来分配任意长度的内存区
关于Glibc库如何接管Linux下堆内存的管理的相关知识,请参阅另一篇文章
http://www.cnblogs.com/LittleHann/p/4012086.html
//搜索:16. 堆与内存管理
堆是一个连续的内存区域,在扩展时自下至上(经典布局)增长,我们之前讨论的mm_strcut结构,包含了堆在虚拟地址空间中的起始和当前结束地址
struct mm_struct
{
..
unsigned long start_brk, brk;
..
}
Glibc和内核使用mmap、brk作为堆管理的接口,而其中brk是一种经典的系统调用,负责扩展/收缩堆,最新的GNU malloc实现,使用了一种组合的方法,使用brk和匿名映射,该方法提供了更好的性能,而且在分配较大内存区时具有更好的性能
#include <unistd.h>
//brk系统调用只需要一个参数,用于指定堆在虚拟地址空间中新的结束地址(如果堆将要收缩,可以小于当前值)
int brk(void *addr);
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXgAAAELCAIAAABcSQqeAAAgAElEQVR4nOy9T2wcyXU/rsNeiBjYQ4C5yaeBL1rkkF5gDzzk0MIiNqXIRhOCgoyH2YWahGyTCp11j2UlIRk5aw5lLYIhuE7SQ0RZc+iN4KitGAYJIjEwlhEfyAAJBpYRA4MFcuocdJqLTt2/w+c371usV1Vd/WeGpL2fw6Cn+tWrV1WvPv2qqv9cSj/Fp/gUn2LCuCT+iaIoDMN2ux3mRxRFyC7+tcdgMOAHBPorygNxHOOXDpIkSdM00QA1VSaKUJ6SUnRF2IOXVUyJUi23mefS1VdUq8yrzKK0rXy76brGMpd9oq6jM5G3RucK5hrZN4K53f4f0URR5Lqu4ziu687OzjqOg2MOfgp/HQvUT4Ofxe+VK1ek9CtXrtQZJIWXL1+u1+tBEJRvepuOKVnK5KDre4O8jTazQOapMi2WCrRoKc/LNRiZ6DlXN5bMOssAV83K1WYisx8NraH8KzbsqYjGcZwgCDLjEUM40+v1zMKUKIU/YqHQI0VJSDGHVGEYOo7jeV7hhpYOCnRJ3rImAZ0rFDOG3EWXxeyg3CqLGmhtsMyeixSUFUyMo0uXZcoYjUYVatPV1wApI9eTlCEaiRfygpMRQZofiUQTCfQUsTkaZURsVeCCIA0Jmy7JW8TUoHMFs3yiH5+W2XnpqZ6e8lZHKsjcxbqK6ISVZw2jK1Nn5ZhOQboqG5oiKUA0s7OzQRAoKeDJkyfgCAJSlIzT7/eljJQ3DMPHjx+DayTG0ZEXCIX0RMI6joTHjx/Pzs5+7nOfu3Pnzv379x89erS/v//q1SvLJlYe26dMB3z06mQyJQ2OkuSs4KRbw1AjpbU2TWRfos1g+02CxBGcNZTV5+6U6ogGEY1yDIMUOBdIKeKUR8kX0iQok2WUUK4Ko3TXdS9dujQzMzMzM1Or1VzXtQwvlU0mtbtOfprIdG7zSBBTJM9QKpEkDYXmqkUumAd2qiEaXRW4pJRFWai5Vbm2CwRz29q3A/2VzuLAlmg4xHhEHPlmookYZ9HKjs3aEC9OTOn1eo7jSEQzHA4tm1t5bCM/TRi8XBTQeY+YkloTjY1VthXID51/S7/c6XUtIIkZSjFAZ+cEGmDiMHuLZTvozuIgm2gwvPv9vrSUy9lhMBgY1l9I+ODggP4GQeC6bqfT4ZGRRC449n3f930pGhJzua47M0axiMbSXexdyiyZsmFvFjZ4uSSj7G8xu9JjMv0psxa6ojNrp1Ron51XcwrIa2QlqKqglDG1UnMlDZVv6hSdXprlMyCJU/jkKBR2pkA09Xp9a2sLZxGYSGpFpguCoFarwUhxJYiM5BHNmRONfbmZas3eIMkoR4KYKKVU4k8cSrOlKhiySCnKdpiI3RbgVTD3dVWoqqBptpWWaCSOCFU38on0wQmI0wpNecRJkOM4W1tbkfVkysyGfI3GcgcqLUQ01HQ2mm3KzRQWZaS+VCbSKbMkL6IqZJotndK1hkH5JMy2hGiAoeOqRSVlpUYvEsUqQTbRrK+vz8/P37p1q9FozM3NNRqNTqdz+/Zt13XBCL1eb3l5+c0338SpZrM5Nzc3Pz8P+aWlpej0gs6TJ0/Ev3Nzc++8806j0UCWlZWVXq+3tbWFlLt37zabTd/3l5eXwV9XrlxZW1sLw/Dzn//87du3O52OqHl2dlYkmtnZ2VwRjX0XVtXZKbswZspzF0n0fpOqxqFOUplLNExXIhfQ2amri/IUV2JulunDXJELAZuqlUc20fi+77ouhTPtdhvpV69epUTcH4xj3Jsr8pQUm0i33rmuu7S0RAKu6wZB0Ov1MEvyPE8MlBDReJ7num6z2RTDGZyVIhrHcQrsOk1CXqdE8lHusqlqpClz5UJmLhu1Nkp4NZUyymbhuczNOGWYDb4omE5bmYgGQ7fdbtOd/mABnL137x7IBQu6RAee59VqNTwf4LquRDQhu8fXdd2NjQ0qESQCoqnX65SRcjmOU6vVZmZmsLJDT0IRT4FoarVa4e3tScjrlEjeyT011UcKSj3VQqffslxJTJnL3CzpOSaa1LpG5xlk80QbKnsxmMIW7PhQ5NLpdBC8uK5LcUen00E4EwRBEASe5924cUNa2ZHWlV3XvXv3LhGK53me50VRFASB4zh89cdxHN/3Pc+7fv26tIhT1X00lcvbCys9lbuCdCovbPIaZDJL53UxHOsaQaeNZzFXZArQ2Xz+YahCtcggGgxs2oF2Xbder4N6ED5gekJc0Gq1SADzrLffflukFZE4SP/169eRxfd9ZEdEoyMaCNOEjiKmSRNNenqMFe7dvGZwV5BO5YVlXl6iZelc2HCsq69SJxcwy2fWsRJQRQwm2XrAZGCw3HC2QpwiGpoZiUSDx7LxPLdIIgg6arUardpgRYYmTXjwutVqcaJBFmIuev67Xq/7vg/CQnFY/UEiGQMbbty4geimJNGkmk0ZqZNE4WQyRJNpABco1uu58or1tSxd2W66Y2U7SJVNzz3RWLbJWUGyhFs1wdZJ01RJNIPBQLxFpdvtYn2k0+nQrKfT6bz77rtvvPGG4zgIdiDz4YcfQnJzcxPyjx8/brVazWZzfow//uM/bjabzWZzZWWl0+kg++bm5ubmZrfbhf7Hjx93u10UjQMyptvtojiSkWiRiOb111+333VStr5ZuEB/F4NoldI/EuYokoDurE5AEtaVbtZvNls6UOo0VJDLGGyYKHTVkcwwdfC0ILWYmJ5MuK1y37BHQ3ptba3dblNswmdGPJHWaMTZk6hTWbTSACVANMXuDOatX1LMRk8BYbG/JJMsTxXLa/6bZpGLzozUSFuZtcircKJILgjRGOw3S9oo0SFj6qQbz+LIF588EkmE04o4dTLTinTXb6h60w2VTgb0ej3P8yiimZmZsd/eFlvQRswsYFliAfC+L9bxBp06eZtErta+CIOReXOVLDcveH2T0+6UXgSisaxpsYxyRIMniZTMErHbYUQBiX1EohH/SlGPPZRPP0XsFTaFF4Pz9laF2nKJSb3OE+09Jld2pak6Y8SzhS0sYGTKIohi5RZAonKM9HzwC2FqrcEhRzQgGl1gouQLaVokyWAJJjOXSD0SGXGa46eIjDzPI5bBWvIktrfRXEW7W1sudYQyReo5LqODToZKt3EUQztwe5StZLZEKWBfR67qTMBbIIcrTB6Sqal170u1KwA10Ujj3AxdwGIDHqRI5UZsChbqQ6EyRFOgw6pSlVlQMbfQIWEjwTKXwbw0i2gKm8pVmbWVKa5C2HTuWSGX/ZmJljhFNCsrK3hM6Ytf/OIfjPHWW2+99dZbs7Ozb731Fv39/d///bcsQBr+4DTEs0p83gJf/OIXb9y4cevWrVu3bt24cePGjRuf//znP/vZz7722muvvfba5KZO04TBcaVTPF0USAVCMfxVZleWwssSE8WzOqvM0FXWJmOB4qpFoa4+A6Q59+yUiZY4RTRQFMdxv9+v1+u405+2isW/xXBJgPhXJ68sUZQnAZ5Ij0GcyQvlK0SqIRedQxfzAyVEheYSE73XJiq61KUnjJ7MYjb2V9smliVeIEynZRREkyTJixcviGjw0NDly5drpyFRDyVKTAExIoJLly5RuCHxiKRflFGmg0oAHFMiCVx0opG6RvlXl6VaJBqisclollSeoizlazS5NjGUeCGQMr+aHC5J/1FwHMe4T1cctEpIcQdohZ8VieZ3fud3dHroWCQsZbkiuYhsKBl80YkmMU6XlG5doXNIpfCy8hbHzc6UrLZGlUNZiyq6fXqYTkOpI5rRaISb8YIgwLOUy8vLeE7SzwPP8xqNBh7Ixu/MzMybb77pGeG67tzcHH2dDik4kI7FFFGYvm/n+/6EHqqcPpQ9xT07s8szxZLT5MKLyCxOyqgs2tIMy0qdH1TT2ZNHOt22VRMNAeFArAEX4KN6NBrR2cFgUKvVHj16pFM4Cfw2EI0BXAMd2ysxN44oo8woKeHHmeXaWMhNzZWrKhTt3mkjzWpb89m8yCAaYCTAIKM7JQ77er2+s7MzYpDKoo8x0VkpxWyMCGTM9ICL4iJST9Ffm85O2Ma2qEQS44kF7EwnQzSW9T0T5O7RqUMy1VCRCpvFimiqAhHNpAuaAqbQXGYP5o7Cs4gZlX+VBUl5+YHSVIPZumMpu7IKmfozLS8Gm4aV5LmpeSGpmihSa66vBCaiqbzOcRw7jvMp0eQtyAzRHp2AUj7N42pKJcrWsNFmsLYA8raYpU7lsY0Z3KRzCKXZk8O0I5pPiaZMiVJP0bFNTyu1KTVL8joxSZvSzkyT7O2fApT1tayUsinOOXjFJ4dPieY3AYYOThhxFFaeqC6DJKMzRmmejeUXDsmFYplkuo1fimhyZcFisOM4jx8/zltQGZznRxBizT0+aCuDwNlC8pb0dGySqGIfOuZ509OhhOSguizcY5XZRSXcjJLg9qSaEaFLP1tU2BSZmF5EUy3RxHH8wg6Wu+D/93//Z7NTjt16cc9ePFUSVLvRaPTy5Usqy36LzYAKCTfV*RamKGpSqlFl05SrLkorghonKdWYXA69pvqY8U1TbFGaUJZpcuSokGt/3Z2dn3dNwxuApIsSz4huRxVNcuQ50i2AuiAYoa6GrUV6ItzXiQLwZEpibmzPfQgk0Gg1lhKV0ISmRn9IdS9ClK8UMejLPlkF5f7ZE5cVNojWUmFREo9RWCdHA1/FO8uT05ILiC55ig8FgYEgZDocDFSBmhvKlFuJZSVJ6bXN5SO/WkN62IX1piwNvRLx+/TonGsmflOmJPsCR/IQ7aCKMLoMfGzTkkrHJoqwI+dtEp+pKM6pVqGsB5Vn7Rj6DqdPHH39cUk+SJL7vHx0dVWTabyZSzUhWimXqSZLk/v37eYnGxsi8jmfIkjJiUmZR2pw5hAxZxNIvFjLbISm6pSjhDHadpkM08XgxlV9hsPZBYoarkBgfKfXw4iTN5vCK0mnRx2BALlTSp1LR77333mAwsCxOWXrKWK+AhYYsfGAocyl9PtewkbKIBZ3nzQcOQ6WUtbNsGS45JaKhoVXh1ImIpqTlUGijRBp45FJUu0wy4kQjZYxVD5dxVWVQWE8uotGJFSual2VONxtTbAiZx175ep03mCub2TJS+hkQTcn7aDIjmqdPny4sLNBw+v73v3/nzh3d6EL6D37wg8PDQzEdT0iNRqO9vb3d3d0XL16MRqOHDx92u13iBZEC+v3+s2fPXr58+fz585OTk+Mx4jg+OjrCctJoNDo+Pv7JT34SRdHu7m6/3z86Ojo5OTk5OfnZz34WRRGRTjzebNre3t7f35ee9tre3j45ObFsrgq79b333hsOh7pSMh0pryUGPcpTuXzYbGdeorEsNC+KXRKkXGWuT2JlDdU8S6KRFE6NaOI4brfbrutSys2bN13XbbfbolgYhr7v06swrl696rou3oPRbrd939/e3kZBg8HA8zzf94MgqNfrnucFYzSbTYo4oihyHGdvbw8f28Qaquu6zWYTpUAyDMM7d+5gDwjf/MU66+bmpuu64vL23bt3oyhCcVKA47puGIaGZs8c9sX6+r333tPN4yZHNDon1tlgtk1KMVTBDGXGXLUz2wwUmzWXUSLVUVlZcy4dsommkhYsNnVStpGSaFBWHMdRFPm+j49246ubjUYjiiJpcIrbSe12+/Lly9jBpQ0gWseBTmzugjIcx4miqN1uP3z4UKxdu91eW1ur1Wrtdhv7R67r7u3tQSEkoyhaXV11x18NdxwHlhweHrquSyUmSXLt2jWU5XkeaBG/g8HAnmiSnN1nFtYRjViQYUAWMMbgk8rRritIssdmYBigNKbYMJH0lNRQpujMaiqFpUSDzgyiKdyCUkYa1bme3pYWMigx0UQ0/X6/3W57nodvhOM1Xfv7+2AB+rC3uPKKuOPatWsYxhjJVBDRVhAEy8vL8fjFgyAasi0MQ/DF9vZ2vV6HTnphGIgJOqMoWlhY8DxvMBi02+1arYbAan5+HqRDld3Y2ABVgf6iKHr69KnruoPBADSatwvKwxDRJNbOam+S2SeVbp1pGzfVbL8OxWpkRsnmqsoGQ0tatrCya6ymTgVqK+nE4BkMBvV6XXzxFcnHqkVQZMFXd2l1IHPqBGpARt/3j4+PEVPg/jfP80SW8Tyv3W7fv38/DEPkRbyA4sAsiDX6/T4mO+AvkRSCIAAFYHoFUkNcc3BwQGFLkiRRFDWbTYRaCFjEiIZ0hmGIUAhEMxgMMBfDcWGiMfdyohmBhMyIJnNAKk/pijN7fGbVDPYo05XyOvCKK+3MBYOSqoqwsUHZJomqsuaGlXROlmjorzh12tnZkVhGBxrG9Xq92WzScikYQSKaNE0Rqnieh9cJI1jY3NzEPAWzDwxmkAJIJAzD9fV1yIBK6vX63bt3YQAWaKIoWllZQXABInAcZ2tri9gQs6H19XUiGlAYjmmmFobh6uoqZkM4hRvnEK0Q2/q+v7a2hopDM4Ijm4hGOSSUnaJMNPiDgWjMA5LEktO+ay5O55MG5TYmVQtzFarCRJUnGuZVpheGgmh4lcQ2LVaTeLyZgvv9b42xsLCwsLDAjxuNBh3funXrzTff/MxnPlOr1X7v937vD/7gD7a3txuNBo9oXr16tbGx8cYbb8zOzm5vb29tbT19+vRnP/sZSl9ZWZmfnx+NRq9evTo5OcGtt/V6vdfr/cd//Ee/30fMMjs7i92iJElGo9Hh4SEWelutFr5j1+v1wBH/8A//QPUaDoetVuvx48e1Wu3p06eO4ywuLna73e3t7StXrgyHQ4hFUfTtb38bYc7KysqVK1c2Nzfn5ub++Z//eXZ2dm9vLxnf5tPtdvf29lzXbTQa3W734cOH5oiGO4p9Z6WnL1lKmdFo9Jd/+Zd5iSZVkYshRVkRnbW6+prtqRbJ5FngrFBtQ02PaADXde/du0c32kt36NNf8QZ8LHnMzMwgTKA5Dieak5MTbBth1wnxyPr6OjZusK0jrvWAaIIgWFtbw5oOplfx6Rtb4jiu1+v9fh8zL0xkaAoGPZgHdbtdZIcZQRAsLS2JhUZRdPPmzTAMa7Ua1pIQDc3Pz6NeVGij0cApTNN839/a2ioQ0SjHBs+SZBFNkhXR6GxI7IjG0vjzBl1bXRSkqk6ZBBSfW+HNl+qZ2765xalTrrbADKLVaolbRTqiwdoHpiEQW1lZwcgENYjyIBpSi/mUI3yhheYyjuMcHx9jgSYe76DHwmIw5ji7u7u+70MeHHH16lWRQQaDwfXr12mbHKVjkYiqBp0rKysgSpTo+/7m5iZozrDrRFB2dmJccczsx7W1tfJEI/mSJKC02VA1SdX0oaz+BUJ6JkTDy5ZsSlX+ZFklimh2d3ftG4KeORQHYZIknudxokEYggUUyLfb7a2tLYovuHLcyULAHS7x6VVqDHhEK1hSwaKJGPWAEVZXV7EXjugJEQ2KiMeLwe+//z4CN9rebrfb165do8AHvyAa3L8DnbREZbMYbNP3SmGlKhxIRCPlMhdkY4/ZSHPVyhRRBsnFJ5pUGPiTgxzRiM1nsEmyzKZKRDTFnnWS5jKGO4Mxi6EgBU9dY0EXezdYBAGFIV2cxGFV+Pnz56LlURQ1Gg2sJQdBgJtunj59SgKYVa2srOBePppe7ezsYJcKklEUPXr0CMcUB7Xb7Y2NDZol4ez6+no8XopG7IN4DQtGZSIa3r9KmZRdeOyJJjF6cGIRhiT6AWypYTow2Hk+kbIhLB5PDjnuDFbK2LcyfDRvRMM1xOPtbZELRGBNB+EMNncQztAH8GhVBaDXINBfBBEUgyB+wUotDEAY0mw2qVCs7+zt7eGWGbpN5ujoCPIQGwwGIBrYQJQxGn+xj+pIfIpE3P6DqmHCZW4rm75XChsSDUSjy5iWvloWq9rUkFwQopFsFtOVMpVjUkTD0ynst78zWKmZiEYX0dAkKxFGrJhoAEnS00w0ceOS4oM/vAjklTLGcSw+psTPSqWgdCnFHM7Y971OPtH4pbQYrNSWsN0fLp9YxCNcXtJvX80pw9A1Zwidhen5IZpU4zeGRGU6bW/b3GxmAHy90Wj86Ec/Mj8whucS6fFI+n316pXlk2Z5H0jj8uJ373QKlYn2RupQudO///77IrdKnsTL5em/Jai22UuC26MzeKJtkuOGPaWMLqMyPW9EYwAiGpsgxRKG6pcHD3akCOhCvMSEvyZC6TzpbzfRTKcvykBn9kSbRUs0qcZFdEYrs0jCcXWfWwmCgKZOZeimQqo6b+DtrxMzSIqn3n//fWVzib0vapM0p3pvthFIp3LhLQz7Bj9zSAZPp32qJBplZURUSzTXrl3zBWChFwd5sba2hjVgcdmYy9Bx2wL0tl1pybkw8GZf2jsLhZf+8pRcGAjgKYTV1VVONEqv4j5QocueQ5T352lCsnw6TWS1vS2d0hnNs0jCFRKNuG1EABcYyMIMIimfIQiC5eVlni4SHPa8KZ1/fqAAdF81kHTybx4YwL+CIAFbXY1GQ1I+NzcXx3FqEV9wHyjuoRcK5R17ChBNnVrLqIkmZdGNMj3REIqUC39p1+lCfKlS9xJfSQYH0l4VJSqPDSl553EFsiSqFSJdItnJaweYnYcfG+QzPTWv5DRBdczbF2eCVBNDTBSKRxDMFhiMNldpEkRjLv23HCnbJDZLKtMzM6ZCgKNzGEtHMrhcprazhdTgVt0zLaSqBhTPTge5iUaSTK19tAzRcPOUduZV+xsDZQvousycPVczZjpJpv/otBnSyxQ6IYh22rfedJCqGlP6OwVoH6o05BGtT62JJql0e1vZTCVVmUspo3w6SJlLJdYRjSSWnvbFzFxKD+HH3H/MZvCz5nLPA0w9dBZIVV4hpUwB2ocqM3Pq7BatlxInTTSSbXlVmYsoZ+n0YNPriV38LJ4Vs9gUYWODwQBzvXJVdsqouj/LQrIqZSN3Os1ShGiU5pqrRyj/ATlDKUpT7VVVZVUZlDfD3GW8o3kWLqaTNLS2oWsy9SgbITPLOUHJ7qscklXpBSIaSTjVuwVPL/z0tqERU+biybkhjunDvu/NWaSzeZUbCs1lm2gGt6cSk6rFJPp0EkjPG9GIlimFUzuiweYoPn40tcYyZLQXPj+wNzJvg+gKUna3MsVerc4q3dn09JVDKk5X0+lAagE6OD/Q2ZOeH6IR7eAGSWd5NaR03JFR7RrNp7go0HlRLkiqxL9nhUwDpEZI8lwtDI1ZXjg9J0STnO5RnjOzekoZ13U/JZrfWnBPKwyu82yhrGY6meimpNp0Akv7mbAlGm5QZmVSFtHEcVwh0WS+zAWge3zF+3en8yxlsTt3Jw2b7puODUrHs/ddpaqzgq52U25YG6RsUIvHE0LuiCax81QuUy3R4EWZyueADI8I6Z4kyvX8ET3N1Gg0lE8/KSFmlB4BpYP2+OuaeZ/SUj7Vafn8p+ExzkwBEfxZTfGs9Mas8p4tedqZg3t+ei5ZJjnPRCPJiMKGynCZSogGLhsEAT4aWwDmAWPzZDYfpYahnossLIV1z6nbE19ecqRjHe2KkhKb12q1KIokFyrv2VMYHvbgnp9+SjQCbIlGMkVpqFQZnj4ajcoTDXavAuF9NBcRme8GnJolk8bLly8dx+n3+8qzE3XuM0Ridz22RIWquNq0CtLPhJpoePH8lLkJlOnVRjTVEo2yFmaIaz2VL8dMk2t43XmnF1Y+Go3wVRmlfp1fJuw6l9+3zxLKdhPPTg2GEqfZILY37EmWZVZDlz4dohGHfb/ft6GAVEWsNsaI35w6Pj62zJiptjxtKbtVJ6nMa85o7no6ayAaGyRGosmrbWowtM/5wTQbxPTiKyklYReZJKcXTiKikUqhs77vY7guLCxEUSSeNRisNNsAfDcyGn/aDYUazBb/Yl1GJ0z281MisOpEZ9fX18kwAJ+1AkCLBwcH3umPdqbGC6+5TZTCYuJoNKrX66KRYqE6v+Tl6sQMSqYJXdV07XYeMM32yUE0PCXJQzRV7TopiUYqKwgCb/xt7NnZWXoDZnv84SRuvLJ2ZuBDS47j0Lsv5+fnMZ6xQpyMp1cU9YRhSB9ycV03CAJx8iV+83djY4OOYTnEwvErR/HFbs/zUCmEDIuLi1CID0vBjCAI8LVMWghvt9tiiKFrBzHF0A5cWNQAouEfosryTEVH6HzPUtVEoaua0YPOGDY1qqp9MoiGCuNFiqd0dRBTpkA0cRxj1AXjj0MGQbC0tASi8TwPl9bRaAReUJrNE3XCWNvGdg9GLz47SVwQx/Hz589p69rzvFqt9uLFi2RMNEQfL168oG0svEwTVcDXvvFXfKFfFEX1en1vbw+tisBqMBhQRCPWBbQrmp0YSZZ3sa6XeaNJeRMLolEmKs/qytV69xRhMNIscIbIrFGF7TO910TgTrnZ2dnvfe97ozGUefExJjr74sULUZLvOlFBr169ajab8/PzQRDMzc11u93t7W3f9w8PD5vN5vXr17H38Ytf/OL69ev++DO1ZsRxvL29PTs7K374DfjhD3+IuGk4HK6uru7t7d2+fbvb7a6uriIegbWdTgfrRI1GY35+/smTJ/1+v9frgVDW19cxraAPPx0eHi4vL3/wwQezs7Pb29sxe0Pos2fP5ubmNjc3Hz9+vLCwcHh4GEURvgLcarVEC6Mo+uY3v7m9vb22tnZwcHBwcNDpdL71rW9JFdH1OJ3V9bLU/onKHwxTJ6XmTNfieSWbLR24QmQafD6RZrF8hbB91ilv44oyBFzGHz16RJMCc0PgWo3bMZ4+fRoL769VEk0ynjIEQYArfJIk29vbmF/QZAqBj+d5NJXAIq645NHv9zG/oECs3+/TdwJQFmYuMBIfxhsOhwidgiAgk8Iw9H2/3W5jvNGCjhjRiFXGXKler4sTK1FbvV5HdNZsNn3fd10XiXEcb21ticJRFO3s7MRxTCZFwse/pc4yw9BNqWpg01JJboEAACAASURBVFkiGp1HKbUlGheyMVVpz0Qh2WZoq3MFnf2TQDbRcJu4sK4OUmIcx47jPHjwgNYmlSBhWr/0PO/y5cu+79M9phLRSGWBmwaDQRAErVYL7IAAHtkxMhFTeJ6Hr2iDETBboVvRiBR6vV69Xnccx/d9KIQA1Uuc7xCDYI2m3W7XajV8EfzevXvgGrCP1D5Q67pup9PBXcuYlw0GA+ld6L7v7+/vDwYDTAxRu1arJXJTFEUPHz4USY0+/p1YXEu4b+j6miuhs7qIRuckmeVaWmsjVhWk9rwomGaL2RJNIriFTeOKMgR4/Gc/+1nHcRzHoScAHAHKxHq9PjMzMzMzU6vV6vU6RriSaBDsIBfohhZNarUaxvCLFy/wl4KL1dVVjARc/B3HOTw8TIRvAHiet7Kygg0mFDQYDJ4+fUpMhIiGaFFikMFgUKvVEP7s7u7igNZxk/HqEngK9IeFJLEd9vf3E2HXCURD9/4jouFTJ0Q0ZB4imlRFMTyFn9X1daK5nqdpiu1tA9FIReucx2CblMsgNiGI7XBuwc1TNuCEkJtoLBtXlCGAaGZnZzPvfJfgOA4RDS7OEtEkY5+GPEISfPtpb28PAQjcHYvBmFvRxf/jjz/GPEWcZZDNMPvy5cvh6a+Gn5yciETj+/7a2lq73ZYimiRJUFy9Xg/DEMvDRDQkRiEegqkkSQaDAbIgAIQqetzBcRzM3SiiieN4ZWVFtHAwGOzs7NBSMSZld+7cMXeoEobuNgikkyEaZaKUfTpI2HA1t4+ukQ0ZdWfzguvJ1K80slhDTfWdwUmSYI0mVwOBI2ZnZ2nRJEkS3/efPXsmGXx0dIQRRbtOg8Gg0WjQMgpNzTBQKZrY3d1tt9vQgwmaaAAG/9raGg1XZDw8PMQETbybBsfiPjpWbRDpOI5DT5PzwAdZkB3UoxuiFNEk4zkmj2jSNI2iaHd3F/NE7MFHUbS9vS32kSXEppbAxcRTBqIpDLE4Xm6uepVHUjUjTAhm85SNaa5sLuQmGkvrde2Ou1rs768fjUZHR0fPnz+nXSr8cqLBKWweI+RBYrfbjeP44ODAcZzhcJgkySeffNJoNGZnZ1ut1u7u7vb29p//+Z/Hcdzv97e3t13XvXv37kcffSRuA83NzZ2cnHS73dnZ2YcPH2Ji9dOf/pR2nWZnZzc3N58+ffr06dNr166tra0h+89+9rOtrS1YdXh4OD8///Lly+FweHx8PDc3JxINKri3t+c4Di1OY4iKzfWrX/3q5OTk+fPn8/Pz3/zmN2lLq9/vD4fDr3/961Lb/uIXv/A87/nz58PhcH9/f3NzU/yEtr2jGLpb6mvpeDQaXblypVqiMcPswJlnc0HXCGcL5ZYuN09ZEZ1AyaYrRTSZJkqJcXWviRDvo+EFUUSTjFdtsPQbj7ecKZahWUmapuKCtHjfB4UwJI+//X4fUQnuoMGqbRiGNHfDPhQ3HjK1Wk0MnbBf5vu+eB+zuCoE4HloBHeiMyFuunr1ajLuQeypra2txae3rrDln+T0GOQ1+Abpl47jOJZ2nSYNswNnni3WLFIjTKhSlohV+7lKDWKDJKzvbOpuI5lWQjTmCkiwIRqbNg2CQIxoJOPF3Sva98GI1Snn6VKKuOlDB1j0GWig7G8ALCClYPIlJkq3MktVk4D1aVG/REbJOMQYDAbmXtb1u5SSKZAYd52KweweStt4XewrbkbCxktV1cxV6/IauP1VNRFQ8HMrkjU6u8UUWoCwIRplWSJEouE2m/VXCwp2kkofuebtnLDrT/ki7JGZnZuKv5UTjU2luHmSqbnqbm6TzIY6JzDbpuzHzIrbCAMZRCOqE8WkRJ3dYoo90RhAUxsiGmUDGQxLNC2ulD8/fpNa84uuNxMLb5A08LZVmqQskZCXaEq2ueiihmpmNoW5iZSFGgTOA8y28U6sFtP7rtPkiIY3Vmo9LMW8ha2aAlLGnjqDdS2QZjEO18BPmYtTnuW7TrTvZqhpMUh1z3Rds5gZynLLGD9pGGyTmiI5n0SjMz2dANEQJKLhxfG/ouXcbF1FJgRuhtSwlhqU6QYlyhKlLIbu1hVnMKbk9rZSv65QqYsNrmsjZt8Oma10zpFOmWhSwfulv7xs0USl6cqmr5xopMayB28LpUBZQ7NssJfU2amT1J3SqdVBp5P7ieQ/ENMRjWV1MmFThQmBl16yLlMAN1JXl2ohRzT2persliogCRS4YU/ZRkEQ7O/vG7Z1CBUu0ErF/Sa92XdyoAcgDK5iD66kurFQAcpXcNJIT8cN/GBCUEQ0oh0GSHbrakUCdC9/GaIhhe12u2REk6jqWMywqWFqRlbYJhTRcFWV6Lfz8ymhZF2mCW75RFtGSzRKa7ikOSOvnuu6f/d3f1eygZIkCYJge3vb8Ag4YTgcZspUBf6xOkvwatKL+JSSyiznExU+gpDqL4R0tvSIyAGlGRcLotkTbSvFG/bKlKqsgIiq1mja7fbs7Gzm1+OkJ8J1mJub81SfncuE9AEjG3k35/fqLMHtsUeuL+HpoPzIFH6rujOYO1imB+pkivlzpp6SFZw+RLMt26QYihCNaF+qalxJlQi3NNGQ2pEdxHADf1++fKkLRgqHJMAnn3zygkEpycVESeXZTJycnNDxrwScnJycnJzgAGL4+5//+Z84/s/TQOJ///d/n4whpuMvHT9nkBJ/+tOfHh4eVrKelaquZErn5OlKB7aETl5n2wUCb9IJYSJEk6gimni8vb2zs5OrIXRFKJvJIGA+ZZD8TUXlVS4/oTN7I5dUZjGk5zprFuMmXVxkVrM8Kpg6GUwXU3CtrpZoJEl7tVw+b/YzRC5TxQ4tXFyadVEpplnKrvMu6VgnaeOflcuXqfiZI83JqmVwBkRjP3UyF6EUs7HNplxzQZalKM8WtipRsYZkhs48pcGGPtUpsTTSpnHsFZr1VwWlbXlzXSykF4JoRFuVdUgZ0SSn12h0eYu1VCoMBslInoWXnpkxyWoTnXxmFbgGZUapmmVgUx2exWBhyhqTF2doAbOAQfMkkKs4e8vPIdKzIhpevHiKpyRZRMPPGiKa1GKo60rRIbNxpXSbEnPJTwLmopWNINXXpqESDQmKpySxUrUSIK718HUfXUdze5QCqWZQZQro1F50pIxuEuvq22NS7wzWnXVdV3oPi7LCll2ok+TpSoN1x5ZF55KvEDbtI/WUlIX7QcniioHU/tu//dvBwUG/3z84OFhZWbl58+be3h4+RLW1tUUv2UkZlRhqpKyaQUyXMVdbXTgo3SOZMtGYIQrbw3KNpmR3SkbaFFSyRHvksoqn8y4QT3GZXInK/s1sSUlAZ6G5mrHwLudarYaPcCbsRV/29vAqZCKxbvnMql1QWPpGARR5H42UxbLRcy0G23ckt78YDNlLap4y0tOOkitjyZZUuodkmNJaYhnXdfGlPfq0lnhLsaV53D8nAW6PpXnnFrzjKmyu4hFNepqPMsEXg811LtZYk4B4R59OwPD3UwC6Pk3TFB/A8TwPH5+q1+vHx8eDwQB3Fft2Hy8WFUouXS2Uaot1uhSvGRLNGipxuQroRI9JvTNY2SJJknieV8kjCIXN+E2F1H0XC1tbW0EQ0JNr9XodXzqP4xifD6WBZFM7nbtOAro7nvPeU84zSh8mlcqyUZUXUruVoRWOsp9bSaw9u0KiSdM0jmP6UBFB/Dw2vTPc/P7wYqBOVZ4yHEjHNsglzB/FFAOxWOXQZVyTKy/wqMFgMOh2u4PBgD6V5zgOuhIBTl4LJV8927d5kP1iQ3HwdEmY69TpsUTKrkyT4BdCBUSjq4ZSuPyzTlCOhyotHzVUPm1o+cCkQQCPYlpqM0NUlanNXsbzvLm5OZvSecZiaDQaNt0nHWPqhC984vvF9B30AjxIDpwkCX0inT/ziQc+geXlZZuHRfHZYt1fXQrAS6f0dn7gwz50QBgMBondPI6P9+T0sNWN/d8iokmSJAiCH/zgB/wRSklsNBq9evXK8vFL6VHMXKd08YXubCUvr/hk/AxnPH4OUykmPa4pnvrVr34lPYEpSubF8fHx1772tTiPlxNw5UDR6Lh2uz03N2ejzewnX/rSl7a2trrdbrfb3RpjYwz622q18HdjY2N7e/v999/fEEB5KeXevXsbDPcYNjY2/uIv/uLevXt37969e/cuHeB4Y2Pj7t27Gxsb7733HiVSRkkYf0Xlf/Znf4ZE6HEcp9PpUA8qR4Q9pko0yWnmsyGalFEjEFf0zuB4vEMhvfhKLN1g2G8JpO7T1T1veibu37+PDsqrAVtONE8cDodYHi5JNL7vr66u0vQZv/1+P8pCr9cT/yLX4PRUPRP4LHp5MRIwSIZh6I6/xRyr7gywhNRxEj8UY5lsouFlZNrHhVNhC9PN+VAlR2Gi+W1GtYTCfZGOyxANTZ3CMOx0OpgelieapaUlGo1Y97EhmkhYAcQBJxqDKtQCxxJncbIIw7DX61EWSUBUpcxLMq7r4oaAKIoorsnVXMoxLo3liolG0qszQpQUD7gwEU3hV3mK4C8nv3AoMMgL02gm0XA3UObNNKAw0WBpRkyJ2Mc8C4AiGiwzK3nEAHGZX9pqwFmJRDIhMQW3KrKLX3iWMAxxr+Ply5fr9boY2thDcoDCtJJBNMQRYkk6I3JZTPA8r+SrPNF2vwFEUwC8SUte8Emt0gc49dgTTV5Io6LA4oLStiAI7t27J41qhCFmoqH4RUk0PC+JmZklky+i0yGMDpIZRDQzMzO1Wq1WqxUjGmUzij4wKaLJ269mxHFcIdHs7u7atKPSZUXjY7Z3mAgfORPPSpKS5li496EA7H2CL/dSotkAHfsrPSNREU0mChPNhCASjWFsc+jmREqKMZOCyAWZMmZJPrcSs4BoXn/99ZmZmSAIihFNolmm4ceSwKSIphjm5uYePXokrodjY0gnLy6hU0qSJGtraz/84Q914yqO42az2e12Dw4O/vVf//Xg4OD69esHBwck8OLFiyiKDsfo9Xq7u7vouefPn+/t7f3TP/0Tlb60tNTtdkej0fHxcaPRwPHW1tZHH300Gt+3gop8/etfp2GPU4aq6ZC5WRDH8cHBwdtvv/1f//VfcRyvrKy0Wi2Y+vLlSzF7HMeffPJJprcV6HGdhffv3x8Oh7TdliSJuOsnaRBTJBlqQMlPeC46ODw8PDo6+p//+R/xUuH7/je+8Q30LHEHenx9ff3u3bvXrl1zHOfJkyfSkO4zHB4e4kBUhalTp9OhOZS42kIpEp48eYJ1GQLtTxNrPH78GDq5wlCFTqdDEc3MzMza2lphopGQ6idTykQrosl7BTMYx/XEcey67vvvv88vxdQi4gGAJhbvW0v0i8GUsV6vh+MbwHAPWHT6Rfxi6Tdu3MAVIEkSKojOep4H72y323R7heM46+vrURSRZJIkt2/fRhZ+a19SKGbRncJC6fLyMm4/wXYDzKOMg8EA92s4jgNLpA7SHRd2gDiO79+/L5U10n8ANz4dLRr+2mAwGLiui+ekyGF831dGNDRusQjd6/WwTsxXcClgUcY4JCZmlCiDgy/9djodZbQiQkwU76BBLaSIpvAajXjMCaEYy5wZ0RgycgLCU3bNZlOkABuiEW+FqtVqkeqLH3Eci2MV3BSfvsUWuyH37t2DDFim3W7fvHkT3TkYDFDK7OwsNmVRtOd5m5ubuJMNjBkEAd3JojSb0g8PD3FXfsIYKooi8CZWDTzP830f4+H4+FhsIs/zRqMRbsPjHcSPlQ5g7w9xHL/33nu57kATBxL+In1tbY3fjWYGMmKY1Wo1z/PQArTrROsat2/fFj+PAaIJw9D3ffx1XRdXETGjuOuEXkb2IAiQCwbPzc1RRSBDmpEL+mEzfMNxnPn5eRzgqhaGYavV8sbfzAB1bm1t4Rgl4kojVr/MGo2ylyVOULLERIjGnoZ0kp7nLSwsmD1GovMoinzff/311+v1OoY6rtWGxWAe0eCLHwm7ioJl1tbW0MFwDs/z+v0+OC4IApQL10RPw1GuXLkShiH0wOZGoxFFEXYZ4VWDwcD3fRANbhXZ39/nBkuX/TiOu90u2ETyFdhcr9dx5z6MoUElfr0TvAai4c8l2hONPdI0fffdd50x6vU6HdCxeFaCmIjuNsvwU5g1YLDV63UMVIlowjCcn58HF/i+X6vVQDR0/cCgvXbtmhS8iBENutJxnEaj4TgOuhgf5Lx69SpRJHqq0+m0x6+/cBwnCIJms+n7Phnguu7Vq1fBRDAbREO3GiNXp9NxXXdmZgYdCiOhhxNNsTUafo1RUkz1RMN9ztIXDURT0wDuguPLly9Tiud59XodDnTp0iVcrDzP+/jjj5VFUxiCzkA3Y2SK7U4UEEXR/v4+uADhSRAECwsLkEFA3m63t7e38TAx3ap/9erVMAzF+GtxcRHzGopoRuPnkik6e/bsGZ8ZSUEcQirXdTE8EmHNIooiDCrMU+DT8H7P846OjqSmeP78ue7T1/xY6ty8bpokyf379yPNk2Wx6tEwHWAzEYS4pyP9FYELEi4DNHW6e/euSDS+729sbNBljAgCLEOTl6WlJfzlpVBZvu+vr6+jONBBGIbNZpOIBrEnpkVUUBiGyAUnQfSxtLQUBAHEEL90Oh34J6Ihz/N6vR6YiIzf3NyETnHqBLYtQDR8zE6QaLjb5XU1c16aCeuiX/GYomvP89CCoHZwwe7urlI/gG4TL0Fglna7PRqN4ChITJKEiCYZj/Zer0fHIJrd3V16QAZmrK6uKokGPkT8gixENIuLi7jS0swIVza0DHwLamnAwKfxLii4He5ke/DgAZwSLea67vPnz6UGwQpFZmdJvVa437FGUywvIY5jPI6QKwsu6bgHPxmzpHhnMOC67tbWFhEBEQQm1xRNr66ugmgiNnXCLyhgc3PTQDRhGCKigQ/TjAkTaoiBaBYWFhCbENEgxgHF4OIKp8XlJxwv6OCWGSmiKUM0EhUoD2z+moiGyhMLtjeUG608JT18lBi3ZkajURiGDx48+MEPfoDtjHi8va2MaPD1sm63e/369TAMDw8Pv/zlLx8eHj5//vzp06dbW1uHh4evXr3CQslwOLx+/Xqn08GTLL1er9PpXLt2rdfrkZFxHM/NzWHNb25uDg/gtVqttbW1W7duYYYFDIfD1dVVEMTa2pqSaHB8fHx8fHy8vb3tum6/3x8Oh/fu3fM8r9vt4gNsJycnL1++dF231Wo1m80bN27s7+//+te/xik4dxzH3/3ud+GUWGKYm5v76U9/KjVIu91Osm5L4T6glDFoIFSyvR3H8VtvvRXnvF0ALQxfItdaW1vDrhNtGK2vr7/77rt49Gl9ff369etXrlx5/PjxtWvXFhcXu91ur9frdrtf/vKXe72etMdESnq9nud5t2/f3tzcnJubo8lRp9NZXFxcX18Pw7DT6dy9e7dWqz169IiIBvrb7fb8/Hyn09nc3Hz99dfX1taWlpYajUY4XrXpdDp/+Id/CFZqtVpvvPHG/Px8r9dbXl7+7Gc/u76+DvLa2NggnaGwGFx46iTCwBpKSLkkPdlEU4xrlAorgZloAPQ6YnUxvhCfnaEZFl3wIc9TMCVeX19HdE1Be6PRECdBYRju7OxQBEREgzkURTQUiJFkHMc7OzsUHNFZrBoiehJPYYEgSZKdnR266iIRlosNHlrcXMvdIjFGywYUvjNYArqvPGfx+2gwdDH9xFKa67qLi4uISjDBoS1FEeJiMKJaXFHQQWh/3/exzUyzftd1sSIDtXhEALtjtFwFA8SthiAI5ufnaVkQVrVaLZwlIylEAkA0r732WuFdJxEFiMZwtvqHKgsI50Im0cRxjL7BvGNpaYmWOaR2H7BtbzEFAQhi1zAMh8MhrfuAuebn50knJjXPnz8HMWHkI5BBFJOMw3s86iWR2u7ubsjevUJTJxAcpcOn4zh+9OgRIhqaFBweHkoVxOKUffPq/CEzC46rimjyTp0SuzuDRboJT98dF57ekEYMCwbhb5kQl8ai0/fR0dY1TaDE22TEUmhJSHk2Gm9aUwqtWIfjhQXaFIcMiAYovBgsEUdymhBykYuWaDL1cmGzubkqaYl4vHcrEo1YHDyD1npv3rwZnwYF5BiHWM9H52GxjagHHYzj0WgkRjRxHNNdM5DE3AezaCwS4RpFkRQm9rOzs/ASTPKRPj8/T9sHKK7f79OuE031ySpc8Hd2drAUBUhEk6YpaK5kg2f2o9j4Z0g0SgRBIO06Rfq7fiUyQidigQyv2qG7qCiQFInGnCJCugePeE0iGklhp9PBbgld/KCHsohEUyyisWSNAlDvOpmR6MOc9DRJlXcUDl1Ek6YpFnTozY/xeEeZFtUQ3L548QJZECwgWkGIAS6IVKunIBpc3MAUzWaTCsLK7u7uLk2PpTWaJEmiKArGr3SCsxJJiZdKJEIYvoLjzc1NWAKXiqLo3r17iIPAfZ7nra+vI36RGr9Md2RmFJWfQ6KRXhNRDIPTL5eQiED8S4NfTFHqDMe3X0h6RAKiA9CKdAtSdJqbqo1oqkVuosllcX7HsIVy6oTtJGkV5vj4OIoimu9EUTQSXkCJgSrenjc4vQsuxkGYYFNEQy8ZgjfEcTwcDsPxDAjdL55NTm9jk36xILE6khgFYuF4bwJ3tRGoghCzaX+xWyvpr/fee2/KRGM2WyKageaRyGIghWai0YETigjxnmNxNhcJ9ksyTumHKlO7OU3CPKcs0ST64KVM95cEQpV//Md/1O1KiLta9PgPUYZZOX8AR/f35cuX0lwsEW69G52GVK50VlSFX2x7SXqo+gjBuEBs3Kkxn8rc4pEeNRqNH1KLhZe54REbs55MVBvRfOMb3xBjClpJ4cPezBH0PBSfeYk6JV4IhaeWwvHzTU+ePBEfdIqi6PHjx+Hpp5/oQSe+xEPpkg1Xrlx57bXXPvOZz2AnC06Sq7mUlxyJfRIVE3E9+YhGST2SBQaLdSjAtVJ23JAiLdFhU7ktvJ+1Pb6ZvRLQIlyoel2rElj9yQWDZtGrQrbKKMnQqJDuc4uEm/HFO0Q46Pop5TVkXFpaOm9EI+46GRo2PD1P4Y3J/4YCm0wBuu7GQbvddhzn0qVLhbe3zVSiiz+S09GNlFIN0RRGeR+Komh5eRnrrLrXSgONRkMn4wmQ/tJjJrmQ+Y5xfgrHlBEbn3T/sQ5K5ZIeXq5ZZ3lgw1XZuaLzZDpStURz7do1Zf9yiDKS20gpXKEyUVeK+C50ZXFKiLnE6yv++r5fr9cvXbpEazQD9iStDTKJxpBLStESjUHuvBHNpMEnOzoZcUYmraooIZ2S/mJ92vO8keaF5wbNUwBFLsrEwWAwHA6VbZXr6hVXRzTR+FkBz/NmjKAhCuBuFBF4XJNuvT1D6AxAFcSntwu0mA3R2PCAiWgkXReOaOD3k9BsiVx3shLi0/RhiAuSya+yZ4IaObOpU00snQi1mDTRJONOCcNQ95AdYWa8kqoEPX+XqYTzAilXnqrVapjvKAV0GSUNkqpJEA0/m7BYlQ5MRJMwD7hYRHOGMI89+/oionFdtxhnTQGZbJ7pMJlOVSHRkJIoijhHiAMVD+6KZ0neQC5gHylLZkbx+WEUKhINpx6dfmVZUN4W7vDMBQPRKLtMStHJZ38FQdLIbeLH/K+EczuK7FEJ5yrH2JUrVwxEUxXXZ0JyHemsuP1UzCTRoSUgrKv2atTv91dXVxdUuHXrVqPRuHHjxq1bt959910kvvPOO7du3cLZhYWFGzduvPPOO3fu3LklgLITbmTh7bffxsHNmzfFgy984QuSwB/90R9Jeb/whS/gLP1Sys2bN2/evPn222+//fbbOH769Knhsmc5ADm5KOlC6SE5iEbMkGgcTsrFy0jyO6K9PDe+WEHKFqjKyFyI4xgrwVURjdI/dG6hLCizeStvCpFoLJWbjUzTVAzEpBEYCx8OplPizQTKEVtmqYsvwNGdXKRZt0ing5jRpsUMzWgJnsWgKvsRBClbYXPL1NZSkhLNkoazuSy0FM6lJ45jWgwuUy7vuFzgGmzKqgpxzhv2Ml0lb/9aGkkjnCdKZ/mxJCPeMqoT0zWIZUPZwNIxCiBjMZgbwS0zWGzIWAkMpVelSidcSY24nkyiyaWZd6uyXJ1z6IwsiUyFuYjGXm3lUIYPNgGFmTgkmQp5JBOcBMTfMshYDNYZkdmpksAkPCDTgAq1ceFKasSVTI1oMoVTRjQFqqzMYmg9pE+TaGycuYx+JWzoY6R/qft0YHCGAsh+TYShAFFeaaX4d0LNoSs3b4n28vauWQDxeHtbXGrlHWFvJO8vnU5D/9o3qb1thuzFiEbSr3Rjm1zm1vjtgcEZCkB7w559wQbhMpXMKyZlyWtAXuEJeR4nGl60jR7ep2Z3MeSlY3PRlbR2OiaaqnadJtRNOoyqgKiK6zSXorSnfL0MzWhwJFEgg2i4R54fohG9n8sXIxpzLj72KoeBaHQtr+xBc4qhW5VdbK6s1HRmR5KMV6oqTzTKNpk0pJkOXyfmiQYNuRZxDEjsbnM3wNCMOp/hMjkiGqVeswW56lMAqZ5r8hpgWf1ENYYrhDmisS9XxxdSi5lBGTPLyrTNUmdqQTTTca0y4ENdSjFEGUqmOHPY9KwZRYiGH59PiOZZjhYbGd5cFTZF5tTJHqKd3GB+rHODqqqWy3nMazT2dkZRJL4Zzx70br1ABV36JJD3HQPiCwP46wcA3UsFzM+vF8BgMLjYREPjJ8m6PPLjTGGDTK7mstdGiRU+giA1kWSwyEE8RerokpaI+pXgwjZTJ12NxFPtdrvZbGa+gUF89YdyZOqGLgfeVWIGvmUspWSSVwG6PHO4rqsgGpvReG6Jhg8PPpYSO1YyFCq1VbUtkKYpXmPsuq6lATY6eUZlFcQUSaCSaip1KjVnrtEoTVIa3D79bmkdKlkxVSJm9/gmv+38igAAIABJREFUqq1rywWXvFDaM80Zme/76A7FDXuGbHwkT8VaW0gm6dxRlzdXKUp5vIMOx1jwN3yySgnz1CkvyyQqokk0LKxrK0NZuRyAm62sCNoN33WyV65Du93+/ve/b7CzDMUo8/I3OoqfmqJto1hYqRmN3wNZ2BIzXr16FQtvQTS7ZbWDenl5OYNoeLpSoEKbbJA5zLj9OgHLdH7WYMNoNPLGXyAEWq1WaPFlJSrCkmgMNotUostrJhpldxts1hnJizOYJEGMaMq4GSIapYY4jvmL3OPxy54pJdJ84Rfp9MZ4Ki6KIjFqiOMYXxkUxfDRUUK73SaZymONKIqOj4+TJBkMBvyR7lxtayksdncQBDiwJRpeks5FDN6Z6bi55JVnuf32xZktkcrV+S6e0KfFsDt37kRZX6SVNNgTjcFUSUw38hMj0dibrTNVaYDO5URUSDS7u7tKDeH4gxlxHHc6HayDeOM3K45GozRN4zjGlYO/DBQrMrdu3YqFfaUwDBcWFqIoao+/2dRut69duyaN8GazGY2/HQaf2d3djU/vTxWusog4jl3X3d/fT5IkiiJ6zxEVoesIXTeZ+5FDSzTmkkQZZefptE0CuoYQzypzVVUuPwWnCcbfWgqC4MaNG4M8328rTzRcmPearsUSRklJ0RYr6QDSGk1eVSRvjmhAInEcNxoNRCjSOIdMePojonQqjuMHDx7gL2grCIK5uTnXdX3fB2dRtEIYDAa+71NkhDdyHR8fS8srlcykwjCs1+ubm5vt8TfLEG63Wi1yS+UgKgnSrCYasZNsdCl/uUIdMgUyoSxLtGQShRqU42uW2BREdI3rm71mEI3jOCX9rIBb8FyUWLjoAmYnmsVgg06dDyRGoknG06IkSe7evZuc/vQNHXieh9kQ8QV6ViQaJIKSdnZ23PEXBD3Pi0+/gyKKIsdxbt++7fs+Ps4FPkJIhYgD7HNycqJrJaLC0WiEoGkw/haraD+M930fb1Bvjz+aHEVRr9eTeLxakNpSRGNvnyim9A9dU1pCZ0+uQlOBKIuVS6CpE92DUC3R6DoiU9Km46R68QNdQYaiLWqsQKx51qmATjPRUAjjCh+xxqYsTZ0wOOM4npubQ8/6vo/PmYpEk4y/+P7w4cNo/JVLEEcsfCwML/obDocY9siC0CYIAhy3223P8x49eqSbRolE0x5/81tMpLJw2Ts5OUF8jRLb7Xa325UaVmzhNIsBMkGayxKNTm+i8TMuJhVk1snbgpel1MZ9S7LKbLBSQ6IZey9evPjFL34xPz+Pu6G63W4YhhsbG0+fPn3w4EEURTZBCohmdnZ2dPqhSl37c8MM4NU3tzkXy0y3UWgAZbHcdaJPTY1Go8PDw/39/V//+teJsMWztrZGu06k/NWrV4eHh0+fPkUoMRwOm83m8fHxcDg8Pj6em5trtVqQJKIZjUYrKytIxAAGd4BohsPh06dPDw8PV1dXr127trm5ee/evfn5ecdxOp2O7/urq6sIOg4ODq5cufK///u/YRg6jtNoNIIgePHixatXr9bW1hABIXr667/+6/39/f39fTDaaDT65S9/GUVRv98fDodRFO3v7//yl78cjUbLy8vLy8togaOjo3//939PkqTf73ueV6/X+/3+Rx991Gg0BoNBr9c7ODhotVp/+7d/a34Mig+NXCAlFUyddM6kFLDMa9BgFlDWImUDwyZ7pqk6qxCRIn6GG2F+Ho0/fpowhuKqxDWaVMOY5irb18VcTWVxUkta9oWy8bkq8S8imlzLolj7uHz5Mq2qxHEcBAEtBksmEYkMBoMHDx4gjsBKMC2RDAYDBDtYx6F5DSZH4hoNLbjcuHED4QOWaeI4XllZERdosIqHqVMcx3CVFy9e0FSLZljB+APKKA7MCPegJep4/M1lmOo4ztbWFuIjKAEloRYUkT169Ig3O+8ve7dR9nhaOdEoj3WJoh2Z3mOog64gnf5Mw5RlGfJynJyc1Ot1+CXCVNp6MNRObHZONJnNwqusq5RS3tAmui5Is/rC0P6SBi6DgzfffDPzA0n0mSQANEHv9MaEwvd9M9HgqrCzs5MkSRAEyEizXZKJ43h+fp7W+GlORFMn+q7Lm2++SRtYSqJxHKff72PKg0THcQ4PD5EFF6TBYLC6upqMJ2WoZhzH7XabHIwAewAEXyBBUA+IBpqxQOP7/v3797lH8b/2bqOTqYZoDP6kFNOZpYNOuCrDzBqUGRM2DkV8/PHH5D31et33fdo3jdkbcCU9KSMac7MoNaR2fWfoqURwAK5WFLBpVVHMUGuOxcVF/oE6bOgYPl9Xr9eJaPD+MM/zaI1GMike7yj5vt/v9xGn4C9CjOT0YvDe3h5llBaDSdLzPFAk9pKxpQWiSYTFYAQy5CpRFA2HQ3AlOCKKogcPHlAuLN+MRiMio1hY98V2EvwtFnavRaKRIhoyW9cLOkey7HH6W82uE+88ZXb+l2eUhHV6clnIi+OnlBbqxPix1Emrq6vY46Q+Jr4QZwE6IxPNi68ShlTVjJYNkqqaXVcjZVvpsuuEeaKyLBEj4R26EnTpuqnTzs6OVChpwAQkCIK9vT2wQzKmjGfPniUC0SiNjOP44cOHOMAMKIqimzdvuq4LagAfiUSDiGY4HIrzr0TgqXi8jruwsEB2goOw9EsyZAMiKWxgtYXPOcVxjCIQ0dCdh+12GxGcAWmeIaZzoXTKRPObhISNPfoll4KTYSou7okaiIYUSkSjLLeSWpgt0WUpVhAdG06VBIZ6EAQHBwdium7Xican7/thGK6trUmjN47jdLzrhCU28ROddHMwTXCgB18fx/SEFlxoFZkiGmw200QpGZNCEATJ+BbeN954AwppN+rg4ADrNfRg9Gg0Ar8gZAaLdTodqgKI5tmzZwivENT4vm9DNKndRcXc71USDTcxr1nnELoqJKcHfyKwzN7e3ieffJIkyWg0Gg6HR0dHH3/88ebm5v379+/cuUO3fnLN0gAA0ZifRplcBXWGFSta8lrlKV01bSBunSgnm0qiefXq1cOHD4+OjrATfHR0tLGxsbKygu0bsM8HH3yAs41GY29v78UYJwKeP3+OEYtT/X5/ZWXlO9/5zubmZrfbHQ6H0NBqteLx6nK/3282mycnJ3t7exsbG5S4uLh4/fr1fr+fJMnx8fH+/v7Pfvaz3d3dnZ0d8pyTk5OPx3j27Nnx8fHLly/7/f7u7i4yjkaj/f39f/mXf4Ha4XCIbbUPPvhgeXn5cIzNzc2VlRVph1tCLj+RulU8MN0ZbMjME6XfREM0unQ6W1JAFFMKK+3UKTFborQqyRoz6ek+4PYAfOpk6H5ekbxuYYaoX+cD3A2UMsoekRqkQpBOPIJgnzE+vcklTXgtNXAlkgx/5Z04MawQ0lfSpRkoh9Rxuj61dx5bosksTLKvpHElkdl2uVRlpvMi7D2Ay6ds6sQVFqtLYUimltRgVl4t0qJEk0u5hFjz3kzlq3yVQ11cXqnAUKMBBvkivqLp3wqIRmmTQf6iwFyFhLEqHSenXVA6JaYrZVLVGs0kPEBpgEGMV7ZAWWYbDE5fEpbvo7FBqurlYqg8csmLvESjTMzs99T89LaNl+hOJdMiGvsiDFXIq1lSlQiDUOwkXctwea5KSTQFamGGwaUMNufVryuLu7XB6UsiCAJ7otFNZ2wmNfHp7TCuRKeZyyinOXFFj1kWhrL7Mn3AlmgMHqYsKSlENJlGnwmk1lS2eCWa00JEU6B0s0JJxsaZlNlTDdEkE+YUJYIgwEb1pEE0Mcr5zWwbFhNLETFR6rHsLO48onOa3rBn9tHktAPp/CyXa+pMz6XHrL98xkzzlI2uayWdck403BidWvt6cWuVYuaCDPVVWnsmaLfbS0tLu7u72MEhPHz4cHt7W0oEdgXgr5SoBElybTzRXKgNnj179uzZs93d3f0sPGM4Ojo6OjqS/v7oRz86KoSf//znzwX89Kc//fnPf350dIS/8/Pzz58/TysnmryqEs2ahdKVS5alE7DMy/XwvwZVSs2pMOwBy4iG94WpFTQGK42U7OGW6+SlxDIor4EQj+95oTtf8Fyi+Jr+wWAgpighadBB/erzSqF8ZXpo8db0SmB+fboEZIFjqIlG7HKlY2V6rQEGrzLIV1KQUkaXRadNl7cMqB3i8be3zcVJZ/mBrhSDQGIkGl1epVeURFV6zKpylcJbvgDsl3vMkyw64C85P4dAu9lGNHm91pxRqSpRjfliZSUqN+JFK9VyYyRtuuwGCzPFqAgl0XDjJWP4gc6MTCN500mJOnnJsE9B4I9T0KnzxhEG5+G+Z5OLzk6PaAx14xYnKsctbKQhO0/XyeuM5L/F7EwFopFeE6EsWkzhB7pSDALKHlF2BC+a5zpDGGqaV4+u6Sq2+BxD6Qz2SIoRja6wJGuYWdaEl1Kmkrz0XFkylSSMYsQaKZWkbDxLp5REo5RM9d1htlxqdi5pyKXsOOXZM4SyuQxnuYCyymaF5x8F7Mx0LXtYbW9XUqpN/UXJCkvPpSTJ8kUpJc057FMNfSC7btfJEgazlaqkKigzcj3KXLr+nT6U1bFpN8puqPJ5q6w9Cpidqw3NKL7rlBc29RclpVySqmJFlxHm6clplrE3TKq7mMgjmlxtrmwrZfPqukDX8lyMt8Y5gcEY3nc8l2X2CwdLs+3dOBdyTJ3KGJEYR6NUQ7MAHRezQWeVOZEXzfvPpiJKVWJ6zF5OLqrlRkoF2TSO0rfyguc1eu80wC3MW5G8eiZaHfHGv4kWRLDt+0LIRzRTMMjSjGIZbdINYlLRydg78X4jQ95MVZRecuqUqkaOVJylk5nFbBx3mjA0b6Z8qp/8cvlJVuL/B931+1tKNMCkDbIxoJgNPJdSj0457w/6Kx5YWqKsRSIQTeF2TlQU8ykuCiRymeb+dzF/s0SR7e1qzSqgajpZlEoS/cXNvhQpi3hss0bD/3Ibkk/p5ozAYxDzDXgc4qv8RN4RbxY3ZFc+AGVDWOUGRwbK3kczBRMrQVVGJkaiKawzySIag/5MB1KiwKUy8xE+GhLKgD/WPN+cCLe06Wyb5oVdKrdY0WYqsZHh8pb6OR9ZPntpcHjdWXsUjGjScnFNcnq42oidIXTWWnaVQYOoJ80iGqmgTL9ZXFycn5+nN+PSeyrv3LnjqyC+yFJCo9Hwff9P//RPlWdv3759+/btRqNxW0Cj0VheXr6tx8pptFqtRqNBSsRTi4uLUEh/G43GIsPdu3dXVlbefffdZrNJKVxscXHxK1/5yt3JYOk0FhYWljRYXV1dXV2lv1/72tdWxxAF7HFvjL/6q796cBrf+c53Hjx4sL29nYtuLAepJSq+M9jGIEN9DEqS08xqWfPyDZRmEY1NWVURDc+lQzx+2bX0WKD4SCF/yJA/NGjzJKGIzKcTJeX2wiLCMKTfaPwoo5iSS08URfjcimSSqI0f09OMykR6yjEMQ3y5tFoYNHc6HXoGkhLx0avEOkYrOFT0yH0fjZTCxdKKhrfZgAk1h01bV94ZxYiGn5WIBi/HV458aUCKRENQZsQ4NBAEz2XgNQP6/b6Z4zJP2RgpylAuZUZlg4R6XhMJqNfrRac5qNfr4YArUSbqAM1moDr00bvE7h1aVfk2Qfv0NndlpZcrM1ZiqLLmlRNNASXcmPIGKIkms/ttiIYPG1y9RVeWhlAm0UiOHgqxgIFodMgcVFwgFMIHfIiWUqSxJxlMRkqEAiN5CiWKdRTzUnGhKrwKWZhDRkpdQCmSjKjHhlZ0jUbf1QWGw2FJosk7ALURjbLsZIoRjbkJqiIaXmimPTbClgXRr0gQmRENz8WBqRO+K0YDxpILpEGoO5Z8WhzDBuVVIde0i4R1wY4u7BqcRiQ0js4AiQ5EyhBlJKKpBLqZ72AwoK/94nZQ87dWJjGyFC8n1/lxrgHDtaX6kSmJiYlKMybXHKJ+pZFJFtFk1pcLiLWLhTuDlXoMziFBmjpJXqgME9rttihsORKIaJRxUK4Ypxh9iGZIAjBJogbDgDTM78SoRxko4YDHOBwUCWa2cwEyEpmOWiAIgpmZmXq9ju8F0/d2+eCaENREwweApRGScBnrdeOHzqYahpoQeDvwQnWmGuxPNUTz8uXLxGJHmT6B9vz5c5p747Nqruvis2HiOImi6Jvf/Gaj0VhaWmq1Wt1uN4oiyCwvL8/OzpKbPnnyhDuxOPx6vd76+nqj0ZidnQ3DEKeUJCJd5MkkAsrq9XoFwh9kCcNwdnY2CIIf//jH3FrMFolxHj9+DJNIgJuEFNGefr9vMI9OQTNiFvFYPAVAoN/vb25u8qjnyZMnnU7nypUra2trkWre1Ov1njx5YsNET5488X1/Zmbm8uXL54Vo0nLxgnKMlddTRpW5iAK5MhVys3l3mokmc3tbQrvdxmfeO50OLfhh10mcAuBgcXGRrqXSICGvla60yjUCmhQ4jkOhkM3aM4GvdHCTDNm5KuI7XUHA0tKSVDXDyz2lSIdrk4yU1lak1Zbo9NoNsriuu76+rlzlQcPyEsWZF8/I4fv+pUuXarXazMzM2RONOAymSTRcjFc+l0kJiyYMGpRlZWo26+EGGLpTPAWCqNfra2troQVoI9PzvJmZmddff91xHOxqY41GGnhBENTrdXAZviodRVG328Vfx3GIg+7du4d3/WEd0XEcfFUaDu15HiIv3/fxlXGcktZowjCcn59HcTAY+6zQ6bou9EAGn6+Oxlsk0I89WmnWIw2nIAg8z8Mn7inAoZT5+XnMIkn+zTffxFncBxSNiQbNCMO2trZoiEKy0+lQo5EZUA4ZsqrdbsN+vDqXVmTwFW3P827fvk3LZ7hIzM/PQ5iUbG5uknkSgiDAqc3NTZjh+z4qiFMSkaEWoBgiGu6NUyUa3QDQDVGekpcdlFVVDtT0dCBgo5NTTKZtZpsziYan5CUax3HgDfXT4CkUCc+cBpb96vW67/vSQmYYho1GA6OXvLDX67XbbVAGLbj0ej3f9zFaII/Py+MA463T6TiOU6vVKKKRMBgM1tfX6/U6lRgEwdWrVzHqwFBBELz11lsoCzK+76+trZFJonJlNIGXZouL39CPFltZWSHl0P/2229jZKJqNBTRYkifm5ujUQ3WwNQMQKGO44Ay0NrQf/fuXVgCOI7T6XSgv1argZXeeOMNYl5apgXHUb+sr697nler1VAccQeoGYQyPz8PJTAAl5C5uTlqSQqpRKKp1+sPHz4sMFTL4Fys0fAiShKNLq9hkNsoVBatYxMDDBpojYa2YDMBv3Rd99KlSxgqURTRrhOfSiwuLkpcQBveRDQ09jzPi8bLlvPz89E4JgrHkymMk1CYOHAikKKVe/fu4cBxHChfWFhA6Rj27XZ7bW0NY54GsHmvB9aKYUsYhhTcoX1oxK6urvIpCQQoVFxaWiIOCsOwVqtRQIeMiEQQU6B0VBAzUwLqC2Gi7PX1dZH4QEb0NxImQTQtDcOw3++DZcLxlKrZbNJZChvFXNQpEtHs7OzwoWE/CgpAu0YjHejGhi6v8q+YzlUleqIxSJrBW1OnU1lNpbW6KktsYrj/kldQzCW9jyYTcRzj6ur7/vHxMSVK29s0rprNJoUtkTAZwXASRyARDdBoNCj+p0slihZjfgkUGSELXeFJT7vdvnnzZiis9biuOzs7izhiZmZGnD0pN4xwgGBB3PRxXbfdbiOFSId4jQYzKkK7vzSLpLEKmpAqiOACQQTmaBC4evUqzfsQaCwsLGByJxKQeNuu4zhbW1uiPaGw/kVm4y/6FH/v3btHammaiYqLpBmGIRENojyRaHQuWhjK7CaioTyGsWHIq5PUCShlJGMKNATJ84M0P9FwmyW1El69eqUTVmoz37CnBDaeIE/FcaJBaNPr9b785S9vbm52u91ut3twcNDv93u9XqfT6XQ6uEQ/ffr04OCg1+utra3Nzc3RZtAXv/hF3N4+OzvbbDZ7vd6HH37YbDYvX76MfZNI2D9CoQcHB0+ePOn1eniOqdlszs/PI2V5edl13W632+l0/uRP/gT8Eo6nY48fP+50OouLi5cvXwYxGXZ8MD7xQJZ4G+7s7Gy73f7xj39M4xCVXVhY6HQ6qFcYhth6c1339u3bnU4HjUM1ggxMEs3Y3NxstVoffPBBq9VaWVnBSnyv1/vSl760tra2OUar1ep0Omtra7Ozs61WCzo//PDDzc1NKWwBuUAJbUu5rku7To8fP240GvPz8yTzzjvvLC8vK4mGFEZR9PjxY9/3X3vtNcy16/X6d77zHbNT2Y8v3XCTYEs0ltZI6VyVQVuSRTTmmuhA8vwgtSMas2alWkNNpQpKYtKuk70B3BJp6jQY34pOF22KtLe2tujyiwPP8zY2NnBlRlATBMGVK1dw6abFTlxv6fofqjZ9xHkZrR0gV71eh0JYgnJx4DgOpoG0qqrkGoxGrG7QIgXiBaoOmAvH0ANKRS4xRnAFzM3NwVRSDkmarmLOSJEXLQZjWiRGRhsbGxQWIRHLPcSSvFPCMJyfn3ddt1arQZvneagswkMsZl+7dk2MrRDItFot5KIiaOqUeR8NH4l5ocuem2jE9FQ1OPkQ4sr5qJCUK4/LwKDTUn+iJyNlJym7Taw1T0nsXhOh7AUOPnUyQDfxMYiFp5/iwYos/7ahOJeha7j0l2+ci2dJP7hMVC5qkzIS+KNGGPbiY4di0bRVJBmDZRSSRF4sWkuWiK0hFYpFXNotIrNbrRbJI6XT6Yjfe0RLEk1jVkt6kILp0ubmprTOjaU0mjqdR6KREnXDzCxsrg+vni5vjuoyS+xrlOgJRZdesm9EY8xEI7aY9JcDRKNbPQ2NDyjZYDAYHBwckDbasZaAiY8I8bYdJdEoraWNZxGLi4uZi8TR6dUoforumiGy4PcQD7I+m8spj/7y+2iUd99FjMclXhZv6hM5VEyJTjcmlYj7aGhfcnL30ej05CAawwEfD5lndX+V2VP9yM9Vc3O5ltrMRdibpDQs84Y9XhyXAcxEIw2k0BjRSEpEYWyZUzpNlCiRxrCUkglp6Eann2DkIy0TyucGdKvLyjmg4c49qQHFZlFCiqT4WYl6DBxk0HbxiEYpJmUxjB9LcAOqbQhRj0Gh+ZRloo0ZHJxouEmSeTpVNhFNMRh82iax8GOWmbSiq6yULt0HrDRJd4exmbh1kMIcbptu+UmEqIcf8LJEksIaDd1mNdE7g5V6tHcGm8dGppebzyr1SL+67GXqn2RRjCQpJaYWnKKsCFeug3LXiZvET3HMzc3hWSfxyRrdIzOR8AwO0imRBxQkJu6PkH46EMsS0/GEDmkIwxApFPkjBZtBYllUiphdMgx7Q5LBUn2lv71ej551IoXYGhMbTXywiCr4+PFjiQvwIJXYFGQSZUcuZTPymhKkspBC2cX03nj3Cn8//PBDz/MootERTV5PzoWCRKMrWDke8ioxyJepcMnsFUJHDYlm6pQWIhosamBdEHepiseEIAjwBk9JUvwlYDlTB34Wt97pBPj6MZ0Sc0mJfL05PL1CnHmK3kEXju9nkQaqmDHUA6p4oi4jqaVcUooyo2i2pMry3X3tdhtEA67JFdEk0ycayacNw0apk0uKmpWwaQh7lNdQplxLKG/YUxqfqardbmPFVHpG4bXXXrs0Bk8RZ/KXGKRESZX4ay5OemaCUiRJscQZPfhDGDagpzdqAvhZUb94gOPXX39dqVBMfP311yULeS7RgFpO0BMqYgo/pocqZya5RqODiWi4ETqbuJhSrQ6TruTZIpMRREhEk7KdJhudosxoNMJTNkrQSOAjUBpUyr8YQiJef/110e+lAcBHCOUylELHly9fthmHShKhh8VqxsFMNCEakxe100SjlOF0rNNmIGiKUAx5cT2YEfi6Vqvdv39fN5YnBNuIRhSQOEWZKGaRDszHulOTgKX+kmIW9PL/UGFEQzJ4XNA85vkIt8Hly5clWjE8BarUID0dahDjxSGldvqSLqmSLJHMxo18MMCmiTIFCNSYYu3olKUSCRId06/BKiUJ8kcQuA9XPvRyEI2SERJGNzw7HyRcc6bMuYXO+EwiUMKSaHLpDIKAD7O8Xq7MYjPyxVBClAFQWRvNohIDeUmjmvMgHaBokWjEIrgeXhYHRUwG1qZ0pU5iEGW0KIrZXBggI6kyEI3kYBUOE8XT28rBI6XwAcB/DRkTzcXZUElDtS0bRVmuZIChaKWAlKgc57kwGo1wV7v5zuBcePHixdEYURQdHR09EyD+3d/fp+Of/OQn9Hf/NLgw4Qc/+AHJP3v2bHd3l3LtqkDpEFaeAra3t5UaOHZ2dnQHwEcffSQJ//3f/z0OdsZACgBJMQV4+PChePDo0aOHDx/iU0oPx3jw4MF3v/td8StL9+/f//a3v01/79y58+DBg29961urq6skAIhZpFME5FpdXb1z5w5S1tbW7ty5c+fOHSQC0EB6nj9/LrmWznkyh5Ul1BENh2XBSRbRpKrBo/yrVFu45qLyXPLKKkjpmb1l03l0Fiu4/KFKXbnFwNcCdSnil4CkY54rZp+jlA7i8efrRWH6UqUoLKZwiEXbfKjIshHKQ/pwEm86aoHMqimbUdSmhKgcwtKHQCWIDi+mpJrrXDFoP7ciFqA0Tll8wohGlNT1jaRNJ8A128BssGUue+iqYI/pEI0NuGsWG5n2eqSxUbLccwvzo/kSN0kcJJ7iMkpV5uLEkSuNYi5WGIqIhheQsPGT6smPG10SaTlm1bWXWZWyaBvzSiKOYyIapfE6G6pqbcmYkiM8Ph16nCGKNU4Bf5gyzESjFE7sPqM+HA5FhbphZUgRYUU0/GyqIhrl6DXXxwa8aBtwO7lOQ8Yy5uXVIKIY0ZxbxMJESUo3BDWTICZqOsMMwvD33CIvy1gKJwIZmQeLbuxIklZTJ8MI5ANbh8yKSWqlInQVMINrEE+VNJIfgSZIAAAYDUlEQVSbWh4gmlxv2JuoPZOAYUZwhrBxe2XblnGes4Xk+YaxYx5iyupLYhkRTWYLGjIWq3wmdOxQoESdqjNEeaLhKKbq1atXlHHEIAbhAI5fvXolkcjLly/pWLcIqnwPYYUo7xvVKr8oSE8TUKaANB7zEY35r66VJzFuOS/wivEslvZUzjXFVFVONOLMJVYtHyrji5jtBElnlZEI1y+mKysrElAl9VVC7IvMK5NuqFiOkQqvENMEr52yoZRi1RBNsQGTSQHFUJho8tp8VqiKaOI4DsZfO+LwLYBX8JqBpzGlRzRFSE9mcgF6WjIMw8lxjQ1BKAUMMOg5cy+qBGZC0BGKFdHwFlSmW1op2lRJ03Od3EJzWVIbKfWXtLBMdlzeqyIa6AFfEL+IXKOjIbMM3uyrTMGrdpXv2TMD9yiKAVGxWqclrm1iXlGJAVJZVfn5hGBvG6+dPSQlhIIvvjIbp8xuqJLurFIy1RON+ay5OJ4xYX2jS7SvRSZsiMamoPj0VxDwuoCIvXsJ6TZv0tS93iU6/cK3XK+8I+D94YPBQDcps4HYBUrfM7ebLq8ZytLPJ+zN4/Uq3CCE4m/Y0xWjPE71lTTbl1kKTzeo5encEoPNNhkzhaUs/JQN0WQqhx7xq0wFELI3whV7v5xZZxRFW1tb9XqdL+7kgtgsuu4ze1SmmMFDMjvlzGFpntQmVcH0pUqeritePKXLa64Yz2tur8yKJaddhxena1ypIGXR5oyGgmwEZmdnlUSjrJoOo9FIjGjEQAPvjhPfgEfvlxPx5MmTfr+vfMWk9BY+Qr/fF1OQV3yfnnSK8MEHH9RqtRs3bty4cePmzZsbGxslZ44675X+Jsz9eN5MNxO1/WZAbJOqoP72dqIJDZRNTKcSDQtkVkkJs2SmBnPGlHFKSSSMhpS1kNpKKYBHig0PVfI6KjeAXOPnVugtbToBvGZclzccfzpSAr6LIH7qm7JIByK2trZmZmbq9Tp+lU9gmGHT6cnpfk8rGktc8wWCspWSSikG0O466VpTKZxMgGjMBpjzGpRPqB1TDTPqam0QIKIxtJsEvpEc67+93ev16KNoYCIlp/DVFqiiF/fZTKzC8Zcn6ftqYi6S39raEt9oW4BolI2s7HRRIKmUaHTdfZ5RvvqWyJ462ZiV6ImmqnpW2C72dbHUxn+TokQTxzGIBk+a2CxY4IPzCDHEjRsiGuX4D4UvQ/JTPOgg6gnHH0uUxAyfWxDl+TQqDEORaGZmZgpsukmdyxOVvVMeuqIvCkTLq2oTJbK/VEl/laYkqi7UGa07K2XUFWRojsxmUtppY6Qkye1U/hq6kP8VUWx7OwxD0NP6+jpxE7acxU/iShtD2L0WJzXi/pEBCGoiVdTTEz69RIlBEIgREMnwiAa/juMUWA9WtqfU5onRP3X+YJDXlXshYPBzXTWlyto3V1miURpkI6nLzqukO6UUqwpcoa6IJCfR8OwiQDS1Wq3VavF390tvtxdfne95HuYd+EQ0AhZp6oTgAovNmP5gWyocfweSPrydSTT1et3zPNz/4vs+vr4KQmm326Aw+qx1EASO4xBD8TCq0+mIL8EtH9Hwv2LX5PUWG8fLZe15gNIPLVsglzBwLohGV/lURTRc0lztvJA6w6CcN05y2puV/ao0nkBE85WvfOU9hvv374t/v/rVr7777rvvvvvurVu33njjjddee+13f/d333rrrTt37uzs7MzOzjYaDRrM/X7/9u3b165dA0m1Wq3Pfe5z+HT8V7/61aWlJSKvmzdv4uvxErA51e/3O53O5cuXm83mhx9+2Ol08Dl6hCpf/epXr1y50mw2O51Ot9vtdru9Xg/vEm21WnNzc81m83vf+x6ZhIO/+Zu/oRdo5yIa3iOSS+g6KK8/GM4q+/HiQllBnp63udRPbxdGXrMol84+nXBJJbq8lq3PLVFWXKdE+ZeAZdpcl3SEDJ7nHRwc0KRDnDohgnAcJwgC+oYRTZ0WFxdpE4qWb8RPxxEvhOOP1WPNhVTRzOju3btBEEi58JlEvKZXubKTGdEU6NOqYC49uThEk+ovhGnR4cPldUrOhmgSzYC0LEInqTyVq+0MnZTXMJ0G5bEomZdo4jjGiJXSpTWaKIowbRHZAZFIs9nE3IdmRo7jKO/xBS+EYViv19vtNmQQsEDDvXv3ONEQMaFEvkZDRGPYdTL3l30X50KmcqkH03PMONw2XRVytY9li/3mRDTmUwUs4V0ilZIwykj0RCN1raSWsmPqRERjsFAHHtHQeMaAX19fRziDO1aw6YNlnWi8XsNvwBEjkXa7DTrAJx9pLQbBEVSJ8r7voyBwzfr6uoFoZmZmdNvb5v5SnsrR9ypkKkkuFNEozSvTYlxep+QMiIabwutsU8okhCWTxGPxL9esq7iyXw19LxFNpqMoiwA40UTj9VpQA3adMXvCMa0Q840nSsGCLjTggOSx0kxK6LOtkEF2LCEj/BmM0el0xK9TGtZoDF2ga/YCva90g0yxcw6dtVJi3vaxTMwgmsS49GApbwldKQXqPx1I/ZTq212qiK6PAQPRmN2I68Hwlu5wkRZfRAYR7xXe3NyUvpMtCuC32+1KlMS3t6k4mnZxFhMjmkyikdrN0DU8b5ku5prNxV0USFXIbFtdI5hRKqLhxdgULNmXsA4rY5KyOBsz7DUkp8lFPFYq5P3KO0kUKLAYrAQimkh4ICDSQHlT38bGhvLdEfwGXwPCMMQiEQUvSJdMEiMa866T1He8wRPNyCkGroEbw7u4cky0CF5T6ZSuWTLFRGQTTaYuZYtwmdRizOvKsq+PwUjxV9m+9np4XkmzVF9zH0syc3NzlRDN3NwciEb5bGQmfvzjH5sFdDqRLj2x2e/3+TOclNjp/H/tXT+IG8cXrn+VIYU6dequVHmlIM1dSCETTBA2DifMQXTGYCSMIfERCLc+rlEwBNaBFL4rb8tT3C1qAncQjIw74XZduNrG1eyv+NBjNG9mdnZ3tNIl+gohzbx5896bmU/zZ/+McbyNz52dHfuMRvtFmAdkmR6ja3GedYtgD44wdGz3aNjhRDQZYxMuozhTzpp6oMRXsAGfmQPqxTV7DLvdrmWPJnPu39o93Ui6kwA/aS2jXBmsXBwYGa76lSUjaaGkLJFktXTsRbk0o8GnhWczK9GYflZvMntr8no3EFllBrEUz0UBonE0ooo19UC2kFtr97eQsN0AuQfI6S5Ew5VwYLtXO9RNNCHzCKcM03KJk5F2I4bXS58nJyfyTZWmpZPSZNro5TaZR8iWuLSIIzyq0qqtEiJ3SQWuezQmE7VGlLamug2F9FTXZm+/XBuUgviJi/dzLyTJ7Vg4Ffr555+xlUvP9B0MBvxpvu7AljA965e+I0uRkW+hIAGUkneXR6NR0VsQMjPj1AmtJRXhS49J7VoClfNeJyXRrssiIJaJX1udRcBiVQko0a8izNsv1xFtD5CzTETDm8OehYtWdnd3W61Wo9H435rQaDTstTcajTt37sibwS5bVNqGyNY0lpQOsMngEasHxhkNt0Mx1KWIX/BgrRdkjC+roMdCNHJFLonAcDik0e7OOHfu3OEpVFzWJq96ZGg5RUtDcnqj0Si0F06OK41SD7QdwNHyOlFbQEwoQDS5KOePpZQw/IeXqMWxxqJlBTv1yC1laX4kVpnRCB3jBEHQbDabzWbDCvAI/46CVFzO+uqrr5BFuc0F7HUBrQXkUs1mc3d3t9xYssTWL8Qyv5Swdo2Qe8hKoyTD25XBwm3IVayi5uh4h7bJlSxlMzgzOG4PhVw2iiLTu1OKgl6Qgp/Ky1WQ0l1+AQtH7itZ+v1+ufFTW98wjdtbAaWH1AP/ROMiKZb/4bWqTNrqjE4utE2oFXORR2Iu0SjRy80CDK+l3FBoh4fL+KkHvF67bRsF2eDaIrYGoqlSRc3R8YLcJicxfMpEo2jganMrtRtQP7QkkkiPOtYKALnBlL+vFEq9mxZkd6w6UATPROMoKZb/eAsVrDM6mWRt6Xp503JH5CwiGq5Baxj9dLfhlsLkiz1Qq4CLVbcFq44VUJ5oStta2jfvoXFRSAKlq+btqq1XmInGbpi7DVp7bhEUX5R0U2BXAZNVtwuZ4dRsFfD8mAgXyE4Wck8OUG0oba2iQWld/l1YiUbbM4Shl5sMUFSZLDT1SHe4ay5RkAfN4qYi4wtF/boV8B4lGVWJRiz3frsYfRe6ju6ioXREcvX7Ag+ItkV5Fn4mScJvQciY4zzL1GMKdbV/B7S+l25NkRfPKnG270mtAmQq1VsuMkWxzhmNNstSyl7WserSZVcE3gO0RJOZD5t4T+KJ1VHzeKgIOWJrMWBjw8X7Tz34bxHNZoKcwhcQjWD8Yuoo7j3J1O20WZYqNhN2R3I91TaKo/JbBN7r6kEZouEmKm7YHdC6nVtQ1E40JSoyNapLEfqpvXs7Y0STLceEI0mSWRGs4WqZguBXS6dpiizFcVNMtijapX2hwE2VSq5J3pc/9gB5CVyum7kpdrXcfv6FF6RbEBwtNHUp+THAJrSXISdaxCygZwZbSuENdnIVvMZcmC47li9i5lcnI6XX69F10hYN1a+i5q+msHSMeqDt/ErWKlBpRsPDlBU3upyHHkNj0sPTLTWK5TEvG8mDY0/PJRqxzFamLtXtdofD4ZcvX0wCphsX0zRN0/TLly+pP2A+gs80TefzuZJLWYW05eLTp0/amVHpsp8kcOEPC8RxjJdzmoJvav1Vg/dbU5ZflNyjUYxTzBVsYHBhOddSSznzvEAsj2cXGd5sJt9N0RPmB19plfPisp7hcGhRokWhdQcXRoq8nMGothf0vtgxhcVSUYnuYUGSJJ1Ox4VoVgpualE3faHYg69ybRXmU+TqTtYQKYubLlVjUNGWh1jmFFmzqR8I3S0IFmt5cVkPiEbrnTssg5PzhQtlpGlK8cmtohxkZ2XKtljo3kl4PHnKJhBNCY9WB9dHeWpTTFlKuuI2/+mu356+IliqU7IwhORRJEvKPUDOVfqHiWiUsCiqOExEQxrwGE0hDcXZbIYXyFHB2WzW7XbxKDzlyXhBENy9e5e2IaD24OBAWWtcX1/jiaJk2M3NDfYvaPrT6/XM40WDzECySqyg/Pj4GLlhGA6HQ/oDyFhXrA6yxEQ0lvbyCK1hHt0sgcJLJ3vbCEY0Io81ila9rpBpa1dSBOvBcin+XdEMOM5otJrln7lLpyiKsI/wxx9/0JM98SUMQ8jMZjPIzGaz+XxO9AE+vXfvHlEqHgB8//59PM2zv8BgMMC7K6neyWTS7/dpchFF0b179yx2ctgbRU6PoujBgwdCiCRJgiDodrsgOJkfvUAst+Z2RqPA54OvLHrszlOWVkCwAVnaDBcxUy3aLO1Pe2MLRjRKWfelk8kwfAdlCDP3JUnS7XajKDo7O5OHhDwdA9FgWPLFztOnTykR8wVMiKAWJzs0bYFYFEVHR0d4enkQBEmS9Pv909NTDH7iI+0WlTbI2qVQJrHtwcEB5l+dxfszT05OyDCXCLtDtqoQ0XC/qkO2yq+bJWAjGi/2CTauTOHQGqAtWNQAuS0dhbmkqQmFuZdkBkIxpQMum8EuIKLR+oJTkqurK/zVn5ycTCaTOI4nk8np6emzZ89wXDWbzXZ2duI4TpLk+++/Pz8/Pz8/x3t15/O5TDRJkoxGoyAIer1eFEVxHPd6vV6v9/nzZxzEQGw8Hg+HwziOR6PRzs7O5eXl/v7+X3/9Bfnd3d00Ta+urh4+fIgDJruPaZq+fv262+2+fv2a575582ZnZ+f9+/cXFxcXFxeDwaDX68Vx/Ouvv/K1bQlQRTxxE2Y0wuqdcBsRvrDyK4NFHtHwiHBh/r2EGVWK29XyWiwNzwOiJHY6nUaj4b4/miQJXmCiFDERjVisI4IgaLVaYRjSjAbTina7HQSBWMxoWq0WlhtYgwghwjBst9tJkhDRRFGEFy3s7+/TKgyXpRwcHGARB0lUlyTJcDhstVrYvkEWZkAw4/Hjx8q2ulg+wEIumIg8TaSL+uBIu92ez+eYyJC2Xq/ndzrDW7Yc0Tj2oqIKNwE+icbiGG8JbVCEYRB6jJqp0tJ6eDqvRetjJnkqy1hmNFoXhBBYF3Q6ncvLSxqK2CKxFKT9l+fPn2PhA76gtRJkiGgePXqERLxfQSYasTjQOTw8jBYvwIUBr169kjdooij65ZdfQDTtdhv1TiYTrONANEKIw8ND+Zq6MAyTJHn58mWn0wFF0gJNLIgG+9a0zdzv9yGWpimYDq92ASFqW6E0lPYVGzOjEZ4crI613evEw6EImH5Wr1373bGse/FcN7kYfoJo6LWQBLwhmwMDG686aDabGJYY58qMRvmeJAmIhqYPmEzJW8hERkmS7O/vY28FHCGkPRqaIn377bfD4bC7uDC33+///vvvIBpUGkXRd999BwrAtGg2mz179gwjk5jxhx9+oEkQbVqDMlqtFu3pQgA8EkURqFYsjs9APUQ6tJM9GAxEhf8Y3nayKqRsCNFU8c4v/nNEo1RUpYi9uHvDKzL9fl952YD2zQF4eYCcRW9EaTQaWDWYlk4AmCWKIgw8mhG0Wq0gCDClwowGRHP//n1QG6gkSZKjo6MkSaAT1Pb1119jSxjDfjgcnp2dYT6CSrF0EkKAa5AOppNXWA8ePCBeENIJGt9gxpBut9uwU44kHEzTFKxHO9A4Tc+WmcIL5NppwrVG+PKrOtbwKM/Mejoj2F+Nl6h5ibtiiZA6a6aLgGPzy8XF4t/YHVgRdLtdEA34BawhE41Y/ssViyEahuHx8THk+/3+bDYLgqDRaGD7lohGCDGZTOSyQojnz58Tg0ASMxrwF6YhIBqyIQzDP//8UwgBtkJZbL7IzAjqEYsVGY7MMTfhZ/ZYRiFLXnIS0SAUNAccDAbKflbFjsFb3MuMxtKFCinR9reaYbypMis4wgtZL8zzAkus3fWbFJbWoKjSarY7ou0BJm2FkKZpGIaPHj06Ozt79+4djbRer6cQDX1J0/Tt27fHx8ePHz8eDAYvXrx48eLF5eUlXSlzeXn5zz//iMXSaTweTyaTv//+ezqd3tzc3NzcxHE8nU5//PFHjNgPHz4MBoPxePzw4cPr6+vffvut3++DLIhogDAMf/rpp+l0enR0RETz8ePH6+vrdrt9cnICbd98881oNIqi6OLi4vT09O7du3Ecv3v3DrvL0+n07du3qHo6ne7u7mJl9ObNm6dPn97c3EDtbDbb29v7/PkziCaO4ziOr66uDg8PtU3gBVBIJF66WUUtROPXdwtsMxqLrVphLwYpUS5qRq7OKkpMai2a7b3HVEvRyGursMxoMDWgk6bRaISbp+ku6lar9eTJE7GYFGDtw/HkyROad2C3CHuxWD0hC5vBZGcYhq9evcKeDpn38uXLVqtFtzsnSXJ+fo6ZXRAEdCwVxzHN4ygRFwqSGXS5s5DWhljE0ZYW3j4us4BLnB0BhV6IxgtyrfXouwUFlk52Hxwdy9h/iFZPOc2WGquXEtJAVWyT0xVrtUEzBVCpxRRwrR5eBZ06KbVwyLdoYShiGGdZhqFrOmunQ2JKieNYOWunqQcV4drSNMXxs7aWXJj8wrbReDwGW3GIFVAMublRRCMMI05sONFYUjJP1iua64cwE42QOjcvZQqRUrC0a0pZk36FaFx6ZK5MaWRmWlwvyjUBb5FMRzRr3wwWzn/8LpJVUIZo7AKZYZVRzr7MMJ5rgLglRKOtRRhuQTD1QkMv1dhcDnYDKiq3qFUaTvtZHdyAjSUabZZW0i/8EA2lC9Z+3G1HlyzV1QNhJZrchtQKi5URjZIuli/Yc4HWWsfcjUIhU8s1gbZFZNwWouECK0KBmyrtNpms526bnLdUUT0u7gW58fJ3nqI11dTMmUQKhayy1GJKB9FYnrC3hQJTI3KxXFU4rd+QPRphcK1KDyyKlRONUrY2x8pBaYbMzDuZAy2u2k5LuhACdxuNx2N+6Y12Z7QKaAtZ3k7m6asDNrPl26MI8/lcFisEywC2F6QDrzLc4BXaHkJZXGBF8HPBnmK3xfraHCsHSwtphTP255bVQjQutuEqPjyIGyj6eG0ZylO7cWvV3t6e8qhwRcAEFxmOvb09pSClkIWOqmQ93W5X1sOVIBHOchlT7fxK5RIcUaW4qR8q+uvpkGu4BWGLLf71qG0A3xZsiWaLLbZYObZEs8UWW6wc/wf7cqVl/28v+gAAAABJRU5ErkJggg==" alt="" />
brk机制不是一个独立的内核概念,而是基于匿名映射实现,以减少内部的开销
SYSCALL_DEFINE1(brk, unsigned long, brk)
{
unsigned long rlim, retval;
unsigned long newbrk, oldbrk;
struct mm_struct *mm = current->mm;
unsigned long min_brk; down_write(&mm->mmap_sem); #ifdef CONFIG_COMPAT_BRK
min_brk = mm->end_code;
#else
min_brk = mm->start_brk;
#endif
if (brk < min_brk)
goto out; /*
* Check against rlimit here. If this check is done later after the test
* of oldbrk with newbrk then it can escape the test and let the data
* segment grow beyond its set limit the in case where the limit is
* not page aligned -Ram Gupta
检查用作brk值的新地址是否超出堆的限制
*/
rlim = current->signal->rlim[RLIMIT_DATA].rlim_cur;
if (rlim < RLIM_INFINITY && (brk - mm->start_brk) + (mm->end_data - mm->start_data) > rlim)
goto out;
//将请求的地址按页长度对齐,以确保brk的新值(原值也同样)是系统页长度的倍数,一页是brk能分配的最小内存区域
newbrk = PAGE_ALIGN(brk);
oldbrk = PAGE_ALIGN(mm->brk);
if (oldbrk == newbrk)
goto set_brk; /* Always allow shrinking brk. */
if (brk <= mm->brk) {
if (!do_munmap(mm, newbrk, oldbrk-newbrk))
goto set_brk;
goto out;
} /*
Check against existing mmap mappings.
find_vma_intersection接下来检查扩大的堆是否与进程中现存的映射重叠(因为堆生长的方向是不断靠近映射所在的虚拟内存区域)
*/
if (find_vma_intersection(mm, oldbrk, newbrk+PAGE_SIZE))
goto out; /*
Ok, looks good - let it rip.
扩大堆的实际工作委托给do_brk,函数总是返回mm->brk的新值,无论是扩大,还是缩小
do_brk实际上在用户地址空间创建了一个匿名映射,但省去了一些安全检查和用于提高代码性能的对特殊情况的处理
*/
if (do_brk(oldbrk, newbrk-oldbrk) != oldbrk)
goto out;
set_brk:
mm->brk = brk;
out:
retval = mm->brk;
up_write(&mm->mmap_sem);
return retval;
}
10. 缺页异常的处理
在实际需要某个虚拟内存区域的数据之前,虚拟和物理内存之间的关联不会建立,如果进程访问老的虚拟地址空间部分尚未与页帧关联,处理器自动自动地触发一个缺页异常,内核必须处理此异常,这是内存中最重要、最复杂的方面之一,因为还需要考虑其他的细节,包括
. 缺页异常是由于访问用户地址空间中的有效地址而引起的,还是应用程序试图访问内核的受保护区域
. 目标地址对应于某个现存的映射吗
. 获取该区域的数据,需要使用何种机制
下图给出了内核在处理缺页异常时,可能使用的各种代码途径的一个大致的流程
aaarticlea/png;base64,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" alt="" />
缺页处理的实现因处理器的不同而有所不同,由于CPU采用了不同的内存管理概念,生成缺页异常的细节也不太相同,因此,缺页异常的处理例程在内核代码中处于特定于体系结构的部分,我们着重讨论IA-32体系结构上采用的方法,因为在最低限度上,大多数其他CPU的实现是类似的
缺页中断属于系统软中断的一种
\linux-2.6.32.63\arch\x86\kernel\entry_32.S中的一个汇编例程用作用作缺页异常的入口
ENTRY(page_fault)
RING0_EC_FRAME
pushl $do_page_fault
CFI_ADJUST_CFA_OFFSET
ALIGN
error_code:
..
END(page_fault)
其立即调用了\linux-2.6.32.63\arch\x86\mm\fault.c中的C例程do_page_fault
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhIAAAGUCAIAAADvXlywAAAgAElEQVR4nOy9T4wjx3U/roPxBea0QA4EchjDB8IJwIUcoBfZxMRacXqztswdrK0eT1YIM+PIw5lslCE9lt30YG0MJ7YANgUJCQVbBpoGdBANeBFs29BhB7oRvq18CQgIQQAh1/HBuezFp+bv8EG/32O9qupik5zh7O7nQDSrX7169e+9+vOq+oXJczzHczzHczyHM164aAGe4zme4zme4zLhPMxGqsOTDNpA+ZaHWCJqWVn4Lxu///3vf//73//f//2fEogQvKWHOcFzeg7V+hx2ONbCs1NZSsvUqgULLlDy51BQ0GxoK9VU00pgGIbBRcOfhhLieZ7vBlB6nucexZRotVolPiZu1WqV0uVJA0EQWMp/Mt1vZ+20xMHeDGTqE6EvZFx7MzNxWAZkNrXp2iWX5S9fyezbyebO2WJgr/FlY1YZFLG1eTm/sls9WErMjuJmY+KgDiTOzs48z9vd3Q3DsNFoNBqNcD4cHBzMRB9FURiGx8fHURThGYHHx8d4QCC9ktEVGmJF6Pf7kQDo4wx4phAeSwlXHkwIw9D3/bOzM6URKL/avqfU6USnPU2Va2obMlYumZaVVvLciIVhKhALmemttqjdC8eexEVBtqtVhhT7OThkQTliiYtUprr0PG8wGCRJkiTJmCFhGOvAX9GznQ8wGo3oFX4pRBsrjmMuiWQoJbFgPB6PRiPiSWJweZIkGQ6HoFHCOSXEVvgPh8MkScIwLJfLURQlSUKrVZNZzMayW4IMdIyo5GWp0BaRnczyVj7kJpqb9MXCpJFXE4qQF1FgK43CZbIUs2GpSMw2Hj16pGjGXOW7KLikxc1GLqvRaKSEUwhX9yb+hfOuRAzDcG1tDatVH330kbYL8c4ju9byUDiVC+n/LkWUWs2YwsHOSqFcTSi5kDWymlCEvICCW20ULpPFL1JNHMzGw4cPudbjipUvvEiNTPTnZmkUORPdzIbMAMTu9/subBUmyCzWo8IwTHQWRTv3wkMURWtra+Vy2fd9MhuTaYUlO5Kpm1kq3VLvCtn8uJCuzrM5PwdL+U+mS9LUlYrJcG5wUd8XhYsum1VHau3RlgIsYjZ4GsqzJJOoVqsPHz5UtOHp6elwOBwOh91ut91u7+3tVatVUqYjBtNilEuICcPh8PHjx0rghx9+iPUfbr34M19fSpKk2+3WarVWq/WjH/2IMjgajYbD4YMHD5LpScbp6SkRUB6Hw2Gn0+n1epVKpd/vn56e0qvBYNButy35gtnwPK9arf7617/WdqF0RrMhA030pudiMLWoc4Bd6eT2LqWcecnLkpw8pWZDG3j+uOiCWV2koslpi8tSjPMuUlkqyVSdfG8jYVMHZa/Y8zxayqf5hxLFBIWeFCvtOSuUURRBJP5qOBzSPrY2FS5DHMeNRsP3fWxuc1aYPSiJIrnxeExywkIga+BDScRxDLcryM9TV2YbcK/6zW9+w+uFP1jqRVaiNsTe1Io1oQKvloR0Wu9r3+YG2stNSUhbnpdI62lbkaWNnQMmVpX3HISUtT2lACfWRrhIs5GKjpHq2pDv+4PBQNH7g8GAe51CS2IU32g0yuUyQmjETaqTD//hTVSv17l7K5QydDp5r/Z6vTiOx+Mxwj3Pu337dhAE5XIZC0RxHNdqNRKGlHXCjBbf2wiCwPM8rBHVajUkCnUP11jf98EZwmxvb9Oz53lRFJGNHI/HCKG0YETL5XKtVuPC8DKkRSrP87jZUJqCrA4tjakxmVqV6dmxCc0UvlTY1U1hkWS55Zantk+tAnKbkzbwPKEIcGEltfJIdWZDvpVY4mxD0qRpenZ2BrOhjNz39/cbjQZpf2zt0jMUJbSwElFxLmo0GteuXSOtDb1PQ34EhmG4s7ND6hjziW63WyqVGo0GmZlms0kamcyPYrTomVxg4ziGtUvYZGI4HMI8EJN6vU4RYVG4/YNUxP/s7AzmLckmMTQL0ZqNX/7yl6buNHEwG7JCld44Z5tZZdgzWDj7lojaV9oqmKyAFdEqF0VTT56bjUuCVOgE7VuJ2cyGlpEMVCTgVag1G3Ec1+t1rgThTkoKFDODOI739/f56o00G1EU7e/vc85YE4uiiAb+QRCABs+0RuR5Hk0IgiDgJ0I8z4NVk9vRpO5hNnjSkIeO5pXLZbJnZDaQVhiGZGwo1zy5MAzJZGo90KIoKpVKSMtiNlx6kSRWeqN7aynWaWW65wZ7ivPkyKLUtD3WvQ8vD9pWlFs+i4ILQ5muIg8nkNIusrAuIWQBKm9NRbREB1zlLwCzoWyJJ9Ojb1L39Eta8ujoiDS7FmEYHh0dET04QHfT0cIgCA4PD5Mk8X2fpjj4SzMSDNv5CW284sodOp3MBiwTNxswfo1GI4oizDbo1e7uLmU2CIJGoyHNBreIjUaDM5dbOy6zDVNP0zaaicFsFGsDM73Vkp1bJ19GQrk8tT32Uui13EZVGHMynDw3Gzqk05p5Yi4HbaEBSz+3MRF1L2cb4/FYmW1AyQ6HQ74lkCQJzTa0qnM8Hodh2Gq1uO72fb/X60Hn0sh9Z2cnyeYHSHcwGJRKJT7b6Pf7yklsbjakLyzWshI2/8BshucI06Ykb5FK2RJPxFRGyTt29e1mY5KnhWUbsrQwS4PjKWpfKQ8uDSmnwS0OC0nRpMVMxPxB6TKTC9VuFsm1XXulMHFo8JxyieW4GtCWiSnjvHAkFm82ZHpKdWK2oZzJgGbf29trt9v1en1zc7NarQ4Gg8FgsLe3t7e3d3R0tLe3d+/ePRwVpOjwbSWFfnx8/NWvfnV3dxestre3e73er371q3q9vre3t7u722g09vb2vvGNb8DfFzQHBwf37t2rVqsHBwfgPBgMms0mkt7d3a3X6/CPouTIcfb09BTmCtsPuDcFr/r9/vb29u7u7re+9a2tra0bN24cHBzgPMq//Mu/gO3u7u6dO3fq9fpgMIA71sHBwc2bN/GKjMRwONzb2/vWt74F+VGAMB7w5e33+3Tcz2I2Zq3KiaF3FetmSqtwoZ8zxVmxECVi0mImSuXZpPjOH/bUtdlcHUzMKjIV5fwsQMm1Pe+ptSMsy2zIEACLVB988EGig+I1Sz6pCdtIIB0tgX3vVquleOsSc4Uz1pGwd3J8fMxnA1rZQt0ljKTciczxWIkFPLPauNq5jssp8ZnqTvaudG6zMSuHOVNcEWiFd1FbK6jXtNpndTARBtiekWcNSlkVg5PZSHVKx5QqFygVLQxmo9frKXpQHghXdKXiLoX9ADwQ4KV69epVLPLQNgld96SAzkN4nlepVOy7JlDNdP0i/bbbbeWYCCXHQxJmFMnbigi4/xXBEqKcL0EImQ3FAddUg/a6U2rZkYOFs5Z/AQ7FohdLbqkRXXrv/D18IZAdefUxeW42DLAXiwtczQavCW3a8lmpPMBkNhRtqKhdqSItyj2XhmttRY9LpcwDTeEyljQb3LRIPlqz4QI+l5LH/SbT2ja3rcj2ZKpiOxMX5rM2XBdFsHAUSItLOL+055xfixjKX23vnqykaXHM1LMDe7G4YIbZhiVtRY7U0MjSzGwop/ak5iX1KqGE08a1id4SVzEbcd795DgBTs/KJedaehKSn1HnF6rTX35xOk9L3sGuADe34ypDZUt8Inp4bkXLusttCbnQNtNZWZ1zJ89VOvaI8vlSQ+ndSuEoz5MVMx4umXqOmVB8b4NXiVJDqdlspGkaBAF9kghqzgWgrFQqSgj/5a845CvwKVtRqVQouomGvyqVSspbCllfXy9lQPj6+rpCDBoekWhKDgAZ8viLX/winZ5k2HuIQmwns7/S9lWtAJwytwPnZmHhWEhyFrEdq2YFIauM12N6oWZjorNq9ow8RwHMNtuw142pGpSq/eSTT373u9/t7u5CL1cqlUql8ud//uekrAEYCUB5ZUe1WlVCrl+/TtzI9pDpogeySZVKBSr7ypUrFCJBUZTwL3zhCxBDiUvJKUJyq6Z8sI9A3CTN9evX6eOAOGLyn//5n9oeZa9fLU0q7AEPmUwrPt48tM1G2yosLcdFwsVCyd1MUbSvTFWgLb0iEp87ZBVrK1q2wPOHY0ZSa0N9ilE4szOfEk/n6MC8RuPs7j/sZuMiKboDCjvV/LOps372le+W1+t1bTiFNBqNer1Oe+xIsVarra2tKUkrrJRteYWVBfwIussnDqPsa4N2Yixb/e53v5u1C1mqjD8ofUwbIluLhbOjbKvcmR3l15JZSm9lwStOaV1cP6TTdmXZMImkFcz091nAQjJbxGzwhHMrzBQ9TdMzHcbjsTb8PEHHv9fW1qIomjU6fVzPklmFRjIxd5AZoBS+rC9JoK0y7V9TQrK6JR9TcpcaqdkAmGpHlud5CuwOKbApI9pmdrGgLEwuWztchmxKmRRLouBsY6JTCko98VhKFAsWpTHnART37373O5gNR/p0PuGXmnH3ai3QAExx6ZVC5ijVTIKdGyzyKPmVr2Qh5EZcESjSTgx9WRvr3GBJUYrNhVxeoZlKQwnM5SMj2ilzaRQJXZhzFL/K0FJbLrFMWB2z8cknn5RKpTiOKfBipSoAS5tIHdpuam5e2oSUuJxYMtHGWn1YxFYKx0Jgel7ZMlGknRg6sjbWucGS4mS6EaYXMcPjwiiBjnGLJSFpJPGs5VD8o7CW2nKJxclc6p4oeSwTsTa6IyVBMRsWkc4BxRKSJayUHn8rX5keTKlo61omYY94eTFTpni1LlOoxcPUGpW3WpqlwpLixFDO9HZ5BZVLszwBTCnOL8a8DripTnsqby11KeOuDj755JP19XWL2bhAOJabtrLc36ZC6WuTSKcbnDYVFyEvI2RBuUdUysfCf3WgVLqpGZhay4UgN0e5+XXn5s6Z83fnOT9S3fRiVjEWdieVpWRzq3MBTWMJzD/55JNyuXyxZkPJwqw54oVgejYlN9FpQ4Vsomt/krlWZnubuSxIhcZ0j2gqN8l/9WGqREuNO74qDBJgznzNw2TVqs9STTPxeSbMRrFUchepzgFc8lnL015TLpQTYRuUuErxmupdSUubF4sMqwyZI/eIqa6VavmvDrTyFGnZS8BEp4X4s0telgeX5M5ZpMJYyvc2FNhr2k4wP1zE0MJlb2M+0XKgSJ6bEU6QWxfudTexmg1LokpapoiXEZbCd4k4saozhX4uQRcEe06dW/RyISUh8eQDJzgfXEiiS8IizYapROw1bSe4KEhPKollS64UYG555lbExND/7fSTaWXnWPvuuTAxVHjaKZcBx2IpJhiPmFtfBfgvFpbGpn17/tBKIgN5yHkWoFJWF5I0l2FODhc528gluEDAbFzs3oZSPrOW56IqbrIgs2FivrJwzGyxXGgrzvHt+cMuRsH2PTdyJVGEp0Bt3GcHptJzx7xmIzX3HymcqdaX1azmw9nZWblcdjnutyTIwpmprEzVNFPFpQsyG3YBcjET8Zw4n7RMNXUZMVOrXiDsqU+eefNgwvzls5Sv+9EDr92JuavM2lZmoi+MCzcbEo7FZa8Xlxq08JmJyTwcFG6LYrWCyV062MtH2xQX1wk0e2zP62smzN/BFzPbUNqHIpwlRIavDp4as5HqRhacWBvLpd7np3lGYCnhy1hKdpnT5VgL2WJNrb1Ae352YCk6dyzMbKRMqUkaSwtwIbsQnIPZcMy4LGEXtpNpE65UliWhicHSSIamJmF5+yxAVoG9uM5DpoVCaS12gmXDIuSSsn+pkVtuLliK2VDEslT2ElvT3IAnVRiGFy1IcfBCnkwrfUnmWN2cWwEOK45F5UXh88wW0RIb93RTdBFjrmwvDislDDCrPEs0G5cLT5484RfZwpNqbW0tDEP7Tebaa9I5TFepW+jdie2YTI92KXCiU/qpQ9NROCscCrScVcMCpUrFyMn97SpjJlEX1ZItcBHpEhXvhWDW8jkPs/EkD/wrFPzvH/7wB+UbFfztQvDJJ5/g93/+538+yfDxxx9//PHHH374YalUOjg4+JjhEytGo9HHH3/8X//1X78T+O1vfysDtWQLwUcfffTRRx/99re/VXqX7G/ptNmQv9qK1kbknN0bz2SVevVM8lMUl5BUmI0VzL4jcvW1tr0tA0qKuQI/x0KwYE8qWa+mr5zSZ/u0byVluVx2pJ8f/HvjPKSs+/J5tVqdNS+OqNVq/MOCFMI/OMgDle8hQuzxeMw7udLl3LuTpDSxutRdeiHCSA7aMlmdXC8J7tq/MLQJUaDy9mJK4WnE4k+JK1XoeV63243nQJIk9DwcDnk4Byfmf5MkGQ6HCgFCOLQhxEErlYTlrZId+p0Jo9HITqCUGMwGVr1k1UxmNBsyxLFD2mlWqksvRBhLWVlCnj44qv55oE1IinHuWV9pzF8gC77KcDJdhWdnZ57nDQaD8XisVXMIN73lrzgNDyzGwUSjBbcW0rqMRiMluqRxB2cljQSlxTMFMkUGSFsqlfDpcvt+CdVggRqXHVXbby3M7W+fGshSemoy7qjNlwGLAOlTUbarifOYbdjV6DhDwsyAogHpGazG47F2tpGvlUUUZXKgzFEssw1lKsMFUGZIWlYKJRWFSVT6vLk0mZasra2tYXGMNjl4Zcm+N2t1O/ZPJWnHVxeOpQqmFP6lhrs2V9T6/FASurAiuJwoXGKLv1yEVypmGxazQdaChswWbRjHcavViqJIUfRRFGmjhGHo+37Chu08YhRFQRCE0/B9PwxDRflGUYTAKIr29vbiOG40GlEUKck1Gg0yEkmSYKdBmg0M/3lEJVFtKXGzgcyenZ3hQTspwQPtxyh74xPzXCG3fouRyUBHAS4QjoJps7ZA/quPXG0+09uZoLCiv+dfCJcRhQvK1WwoVaLt8KkwG0+ePPE87/333zctyiN8NBqdnp6ORiOoRTwoCnE8Hg+HQ9/3+/1+uVze3d1tt9udTqfZbHqeR8T9fr/T6eDV+vq653l47na77Xa7Xq+T+o6iqFQqHR8f9/v9fr//9ttvg3Oj0YDeHw6Hw+Gw3+9HUeR5Xq1WOz4+/od/+IebN2/evHkziqIPPvig1+uBG+KGYTgcDn/4wx8Oh0PP85Ac+BBD7KI/ePCArOn6+vrBwQFKgBfL6empUlBEQ4ZWiUKgRSppNix9b+KgzYnM3gxym9NMTdYu0sVCSvXUZM0CbTNQGo+lyS0VUs7n0KJwWTmZjVSYcW0NKa8A3/eVvQ1SeUoIX7Xn9KTowzDc2trCTi+G53Ecf/DBBzAbnFscx0EQ4P7aJBvs8/nBcDiE2QiCoJEhDEOYjSAIQNNoNBCCwDAM6/U60cNVqd/vkxEKwzCO4xs3bsRxjNlGFEW+73e7XUoabk5JkuBtkiSlUgkPcqYlN2/kmh6fqNnNRm7FyXp0bEbPDp6XiTuWaBmssIhxIeWwsihcMq5mQybgUklpmvq+//DhQ2k2FD1o2ewlBEFw584dmA3o3DiO2+2253nKxkYYhqVSSXFUJWOTJMloNIqiiOwKATzBcDgcYksZRohWtGBCaKkKFqjRaJARunHjBiyQ53mwXpiUwNiUSiVQ4hfZiaJoMBjI7ZliZmM0Gilm46OPPsptHI7169hgCsSyM1yFPm+RYR4JVyR3C8dMun6BMIlxIYWwyrAUmh3F9zZyKwnAspLFbCS62QapP67Qy+Xy3bt3oWd938dUIAgCxWwMBgMQ0KZ0p9MhSwMamm1As+P0A514gLXAbAMjdzCE2aB5DDAYDMBhbW0N0a9fvw6rABl834fZIJvked7x8TGZMdiP27dvK3se3EjQNobWbGinaNJsyNpRatD+194YOP3T2kuXlKmno6xki5pF1S8SE7HZxqV6jvlxfmZDDpxNhoSPmkkJwk7s7OzEcRyGYRRFNF2AOiavpJOTE1r2ATY2NrR7zmEYYqEpCIJ6vY4HrFbFzNeW5jd4hZN09OrRo0eQAdrf87xr167BPGAy4XkezAaEhGmBTiezEYZhv9/nxo8bBnrmFkKuaBFMs42JdXyh7W/aypXE6YxmQ9u9Vx+FpbVEzOW5mkVkr7751P68mIimSH+1WdC+fYoxf34Lmg1tPcnwdNpskDbMPbamkMFUhGFYrVahuzHAL5VK2GyAUSEjQRoZuH37NjSy4oWVJAlNVuCuCmODv9xs0FRjY2ODFqnwFmS0txFFETZgYB6wt9Fut2l2gnDaQuf2w1QOiiFJDHMy0yJVuVzWbom71HJuCA+XnfY5AHu5PcUwqYVFgVJRAgs03SWWwuphzvzONduYmBfEgSdPntCW+Ijh9PR0PO0x9fjxY6718Hx6ekq6u9/vw5EJewCYHFy5cuUf//EfyVup3+/v7u6+8cYb8E1qNpvtdrvZbF6/fh3+VPv7++12ezgc3r9/PwzD4+Njz/MqlcrBwcHBwcGVK1cajUa73d7c3Nzb23v//fdhDzzPu337NhyxvvjFL+7t7TWbzUqlUq/Xh8PhgwcPYFqQaLfb/dKXvoRY8L+qVCrHx8fcbHie98Mf/hD0w+FwfX2dzAbyq/UlSzJPKsXfjDtcUQGiNOTehqnjKTXr2PdMDE2cVx92sQtnylLU88iz4sjT+YuBTGgyXeA83CLeORfOpcYCzm0o5a5UhjLbUAzDeBpy1My1YRRF2NvA4hK2nff29jD2JwyHQxrII2K9XteO5bGChGnKYDCgpa2YHb/gO+ckACJSEhAJmxm+79+4cQOTDHhkRVEET1zsnGP4f3BwgKRj5hjmDrl5rqXB9nu5XP7Nb35j73iyTid5C1ayrrWddrG4qB5uSdRFnmdTK1maXC7cOUiyyWUeuGghs7OQDBbmsBizwYVQqlCaDbmLK52m+A4wKcEoinZ2dmAtsNwE/1eM6/lmBggoIhxelZ0A+EdhmwFGQtkRAZAcNxtYIqOVJZwmoT3zOI7v3LlD2y2IiFSwlw4jh317MhuNRqPf75NXsYtVkDkioDDl3kZuL1XqNJ02G7KRmfqwpbU4Niotc620y4a2cOzyaOW3s72M0LYcSbBsTKZbbOrQCC9d4a+azIs0GzyE4Pv+Bx98oJgNOcNwUYhRFN24cYMsBBTuYDCAZucDdjIbGOBXq9U4jhVHI+yI0G7HcDikvQ0OWB1uNjCTIDHgcMU1/p07d+jeXNx6C4MUZ2dHMP+ApSGfq1qtphg/i2FIpj1uc83Guc02TI3Evf3k0pteLQP2tm3KsouQK6UFiiFXl1ma3AJhSihXKpmF3LirgwJCUpT583hOZkPRd7lb4lz9EaBtlWkE3W7LKbHLPR6PYR5u3ryZTN9k1W63lXUhnN/WioFY4/EYl4skuut1OQaDAZ0fxDmP4+Njzg32g2YkeIAnFa16Ufa1JpZEMhWd4kmVaza0LSm3eTl2V56K9q2Wp5bmnLu0vW2bhHGR9lLoJguUxkOBWpqlwpQQF0NKJf9q4146WIRPV8FspDpFICsPW+IWHWfRffKt6U5AqTT56paijhOh6+PsSnaLJJxM2UrJDeFicBqeC0kmBeDOXUosWUpxtreRu0g1Z0uydFcX5qlQOvM360V1frvGcYxVgGb1lZeLhrU0uQXClJBFKv7AmUhWCywxCywpziSDnTg1969Zczqv2VD+ysqrVqt0cRO5Cdm1M13ipOhKuC0pVzzBkYkTwwMKb0lHD4dDuKVSuGIP3n//fXpLUEIUkwBvJUQkwNEL91whhB74889+9rN+vz8cDgeDAR7ef/99MMdfLQaDAT3Qs8R7770HgvX19VKpVKlUcs2GtunM2lEVbsqzElc2JElvamyzNs7CEeVfbWZNTCxi8NLITXc1oWRhMq0EJtZGskCYEsoVezLd0tw5nBtmlcFOr801f+We8WV9FJYefN+/fft2YAXdAmJ/oI/WYcMAv3S6GycwcFEgp5Hf1FNC6NN7/ON9vu9Xq1X+UT9Q4pN/FKg85IIOUpQy0Kv19XVJpoTADOC5JMBZIWRtbQ0hWKSa5PXkXAJTLG3T5IHyL09RNirZruyNMBUKK5ehS45MfFyEMQkgX2nDVxZcYG3tu7cc+2dgHGFK0SR26tBin0qkouUXZrVgTypZkXEc49Y/rtoUfbe2tkaajitBBIJ+bW1NKkpHSBWsTY4TIASJcj0uIypMTIGcbalUunLlipIozIYijxQeMFksmRFYQXezoVSle9d1bCQKcxd6l0aoPEvVkBq0xkxJa9/KrLlLLkW9FLBU3OS8JhkEU4ommVOd2ZD0TzG05SNpLG8Xbza0BDhpoUV5+gPdfIpA8wZtLESkL36Xp+cKnJjzwSvJuVKplLNZBTHHaF2SEYGSLsI5Tblc9n1fmaNo+fBPl8vsKJw5gfLNc21xzWQ2inXdWduMJWIxhtoHLUHh7GjfaqMXKBaFZ+G45wB7xTkW8qJgSVGKZBLb9OqphEtm7WWy4K/7ybrEA52a5lDWiLQhJkitzVWwXJ7iSWjD+dIW6WhuNjh/hZsCrZWSMnhirYyeseBmX1szIQiCWq1Gy3p4yD23wVuJe4914aa0EC1/e3NybHj2uC58tKxmfZsuyGykrDoK81kSFtM+lo/JMzmZOAcs0WxMWJ3B+dUCvm/sAu7AKiE9l0xvpfdRkh0txOUc9M0+ZX+eoP2UdzJ9eZTWC0A5v2I6OT8rzhh4oGM3m1yE2dDS53JTyHIDuQyTaYWSmpVLLoFFKvnXxEErv2Na54/ibeJ8MbFWmeXVM4J0uj+6R1y82VDkONdmsiBA5/7v//7vlStXwjB88uSJY0SiLLDX98c//nHWKC6SzITF1p22YVjYapuTZGUi0zZFbSvVslL4pELpWESV/HPJ7Jgz+lJRoCVcFHIzcj4l9vRhkWaDoK2zC20/MwOWo1QqhWF40bK4wlTOF1j4M1U9byr2WC7NLzVbBVOidv7uApgyYieTaWlfrQIcKzS3Hs8NE0MhX0DZrRIKl8DizQavKtOrVNddC7CVLWNRWBGzsdhMnT9mkt/SWiEbDKEAACAASURBVCz0poiOb1OdbTO1QHsTNSGXsz3unASLQmowsY4V6hhlseCSpw5mI9U1jKcYhfN48WZj4lZJlmZhejsnYDaiKFoGc0csKWvnhpnkd6lxSZ8a1JOlvWkbHo+iPMiELJKbeCqUpmclxCS5TGvZsGR/NSFltuRIvrK8fTowTx5XwmwoBKZXWiYurceSuqm1pWn65MmTcrl8sWZjgXApq4tNVKlrR3pTSC6HiU7Fa1NXCCRnbUN1b/aFsXCGloQs2V9NTHQtQZHfMb9PJebJ4LLMBj3LV7JKqGrd2c7UeiypWyLCbJgWqVw4PMfTAdmY+atUZyeUhi1ZzcTB9PYckBr07yXCRGcGZAgPT6draumlnJfWQsRYYEaWO9tQ6kAbwl/NmkTKel0q+qQ9loUbUMxswIXpyZMnM/kyzUqvTTQt6kC1EORm4ezsbFHiLZCPqej4X9k++SuFLLe5yjaT29S13CyxFg6T5JcCpmLUhk90Fa19ZYoyTyFrhTTJaZKhgJAu/DmWYjYUaVJdm5M0WrlN9SrbhPJcoCIVDi5mQ4bD9RZnJuw3NpqgHChRwuPpK2+151HkIZh+v08f/JAhC0TIYHoln0FwfHwsmSg4ODjgl9LzEB6oXFzPaehVwwp8TUtpV/Zm6d7CtS3KTqC00guBRexVxmRGtehOOU8ULZN0DrOh8JH0Jg4megsWYDaoYqRwUiClFmUFS+aWcMnEJJUUOFceu9nQyk/Ax1+1x9q1h8M93X0n8ii7POjucmpdmy6S46zk4XZf3COpHEd3CdHeWVkskIP0e71eV0JI72uNgcVU7O7uEoHFiU42SxOZ5W0BmNqzFlKM+bGojJw/JoY+bsrmAgttJigS8vCZpNLSa4uiGP9zMhsWmfhbSZmbH20TyRXY0mIIxWYbiAitx0f3s0KZTETTX5m1z1G0UxBtXBM3QB5ut1x6z1nZRTWBf40qN67l44Z2ev5LrySl7/thGPJjmxNdx7M0A8urWWHpHZZGntsRcuGSzUuBiUFXzlp6ligLgSKzEj4rH0fmBfgv5ipDnqrMsJZMIeDcJH9HARwzbyHjfHJnGxbAbCxW8SXTF5nkxs1V3AqBvDdFhvC4phDt9xa1sdztisWWuIttMhtaYIIIy8EbhqXdatthgcZjZ2XqO6ZmnNsdLJBZvuyYTGskmd8Fll4ByKQVsZfBvADnpZwSlzDVhPyr0Cj1ra1p2TJchMmVs7DZePLkCZZNtIpM+eyg9iEX2igUIvWmZY5CUlmMBBGbdLR2ehGzbRhlmpKbX4WhfQoCSipYu9kgcJHk1WGe55VKpWq1Oh6PTY3N1AItrdREb4prJ5AJLRauLf6SYKlldRlRuFhW3WzIt3bmllJwLCDiI82GTEsLaTZM4NoTXyDnqlZ+ubbZbCbZR9E9z8Pn0BVtGMdxv98ntthkVj5LzrUtRRwOh2EY8hBSo3H20RSp7vv9PsSIogjFxQ0Jtgp4co1GA1+DHw6HURRhKc9UMvhUIgd9YJgMyebmZjy9sX98fKx8KD4xm5zEsGDl+/7a2prneTAbpto3NT9T2zA1WlPTzX3l0qQXCJf2v7I457JaBdgzXrhMztVsaJ/tZFpKpSwc24clXUmWZmaj0Whwti6tE2bj4OAgV0kNh8Pd3d39/f1+v//DH/6wUqngY643bty4ffs2vndL34Lt9/sbGxvNZnMwGNy+fbtarXa73cFg8Prrr8dxjE/eJkmyu7t7584d6FyoP8/z8E1crkPv37/f6XQ6nU6tVgOrdru9tbWFT9KCDJ/XhR06ODgol8v0BVyIlCTJyclJuVyu1+vNZrNUKh0fH//93/+953mdTqfVah0eHvZ6vUePHoFht9tdX19vt9uYuIRhuL6+DiOXJMloNOr3+8fHxwcHB7du3arX61/5yld832+325VKZXNzs9VqffOb3yRzdXJy4nne3t7eYDAol8u7u7u9Xq/X67322mvVapXn9/T0FPzp88Cj0ej09JQmGQSK4vv+Zz7zmfX19dFo5FLpKwJ781YoU+cmfdlh6uxPPVLrAlfhkjkns8FhqUj+KpcsNY/stMTptKWxc051ZsMdQRCEYei4dYFldChBjNDxAC2GETo5m5JTKbmQBkFAG+bgtrm5ie9ihWEIbnLikmTDf9gVKVUcxxsbG+RlhEUbuC35vo+JRZIknU7H87wgCPAxwSAIdnd3y+WysnQGAeChBIa3b9/GXwifTE9u1tbW4jg+OjrC1jQ4h2G4vb0N4vF4HEWR7/vNZjOKImQWOUIsOb2Qi1TKPEMxG/jaSpIks9b+BZ6eWUHgejfLX0nPw+kvQSlel/NAs+qo57DjaTAbjsm50POm9uTJE8/zpNmY5A3QMNtoNBqOZgPKHfoXz8oiVRzHdMoBaz5YlkmSJAiCvb29hG0GlMvldrsNrQejAnWfiIUaWkfyfZ8CwRa4efMmGSSoeJwIiaII6j5Jkl6vVy6XwaRUKvm+D7NBEWnhCwtrvu8jF9euXQvDEAtBWJ2j/EZRBLOxvb2Nt/hIYqPR2NzcBAFZr0qlAqMF6xUEAT6KlbsqpXzgJGF2C55UMBvj8di96heLhXxqe0koLBuZjTOBJ0+e8L9aGhPsibooihXBpRB4VcxGKja9LcWnkGlZmYjTvFkbofBsY6a9DX5oACqSZhL7+/tEieMUBwcH0NfYSMBc4fDwkFQklPtgMIBKhVUol8vXrl0jeaC1sQGASQmmDkgUChqUGxsbpPEx4SCLBcMAswFrUS6X19bWfN/f3NxECJKGncBXsGiOEobh3bt3MY0IwxBK/4MPPiAjiq+gkx8zTAJ2MqjoIEar1aKdHhiqbrdLmY11G/KJzpPKNNvgZsMRp6en0kInuk+HaQNjg9+2+4lL0+lLyzlKHlF5ZTnpIo/FzAM6ghNkB3eU4zs4DFSr1ZSjQvV63V4j7trpwnGeAhdO6ALMhkTqYCpc4roQK0nYtb/FbNijoxdpTQUprLH44mHEDnKHYYgtCtDDouCDg+jYpVIJ4UdHR6SbYAO63S5WdWAhELK2tgbFqhycVswGjBY0GswGzTbK5TK0vzLbwJKal316vdvtwmJh7YimLzBpUOgwisgFTZJg/yAGpkp7e3uYypAV2djYIFWLyQpmG3RoEYaKp6s1G1rLwTGP2bh16xYksZ+49HXfBrYgmD5NOaeO5iClrzzkGolcGmVBlYcrlsliz0xGkf7WajUqfO3MQ6sxnqNwUayE2SDIOnaJ4h5RNiNL5zctUrlwQG+0aCXSXFx58SEqxuP0F/qlWq1Cz2KEjtkGmQ2o6SAIms0mGYkg2ylBJySG9BFc6CDtks5LL71E/RxrUPyZmw0YEsw2rl+/DtnIKsC7F7sUIC6Xy51Oh3KBvD98+DDJTAIiHh0dwfjBGIRh2G63qaCg2avVaqPRIENCto0XMl99ksVOIYva2+BTokQ4LnPZaM6hgCLKV3Y4rovKMtHGNQmgRLEcAnXHTJlVRN3c3LQvWOUqBAvN04d0lqG2FitnNgpEUZR4LnGu0gfmMRsYi1naPXx7kiTp9/vtdhvuQwBGXkEQfP3rXyd143lerVZrNpvlchk+r1Csvu+/8cYbcBDa29vr9XqDweAv/uIvqtUqVFIQBJVK5cGDB/AjIgHef/99qNcgCEAMxy2Ok5OTQQZ4UkEDdrvdVqsFbu++++76+rrv+9vb21hxevXVVz3Pg08UlPijR4/ef/99+Gjt7u5+/vOfh1MWctHtdpMkefTo0enpKYSE2djb23vjjTfg7gWT2Wq1vvOd7yBd7N9Uq9Xvfve7cRyfnJx0Op16vb6+vv7d734X+z1JtoGBX2kbuBoaj8dUKaPRqFarFTYb3N4D/Ev1SebTlbDtK0iFEkA4ySn1Oxeb/wUlj6h1EgMeP35MhaPQy4S0hQYhtadkUJL0iu/SKSFJkvR6PTRg3gK1bLVijEajr33taxj9dLtd7fa4RRVo3z7dSMViyawcVstszIpUbFSYni0cTIDZCIJA+9Ye3TLbsIwH+RiTFqkQBZIcHx/zRSqYDQzAOZMXX3wRg/QkSWi2oaRLigwEWnn4eW+kKEfN/X6fNsAxHWm1WkF2sQqETJgWwFIV1rL4Hgn6P8mD5UFasoNSwLpEks2r4El1cnJC5UZbPnLoqgyQ5WxDoZ9ntgEHBI5Op4MmwZfOSFqLnHYhqdy04RRLGktlNsb5mC4vKDD1sYC4xXGMmXGSJMPhUKkd7Y0DUpI7d+5gOh5O3wdj0QD2t88IChfC0s2GRclOis6SLEzSGedfKVvjUoC9DZPZsCN3tkHOtUp/IHCzgZ2DRqOBAwq0uIRw7AkTZRAEN2/eRC+ilWu6E5cnBy2MFXatUuC6Bupemo2TkxPyjqUF/ZAdAORaAAtcmEthTwLiYYUah/vIsYpLQnvjnU6HjAfCj46OKGu0SBVlTr2QUx4IT/K0rclsmFoLR61WU6q1Wq3SCj6lrlhNCa3904rNM5tMGxjL7Vta46rQm47cm5bXTMBhHUUMhATsyKd2/qRdsuOUFrNBtaZVRwWUz9OEwiVwYbON+euMd2M7QQG26ZLNBgb7fF8Ry1N8W5LMRpJtiWMhCP2nkZ2l6PV6SbbBDkUMI0EEhMb0Ln0QBHB/gqh8JYd3WoA0sswId/uJoohW9pXZBql+SHt8fIxZBTZFSqUS37dIMpcqAPvGsDo8F0EQtFotvkmLKlNsj7zLK3cPAGYDfgez1r40G1tbW3hWlDKVm1YGaQN4XPrVDsmpHk1Lc3Q+VArGQ0zjfRJbphvrLqHZ3d3V5pSH8OU4tCVlmALQnf/06tatW7lmgz8XVg5PGQqXwHLNhlJnSuACmWvfKg8mSs6N48mTJ3AkdfQNT9nRJCi4REDRyErf4/0qiqJWq0URMUjf29sDW/QrjO5xGjxmm968q6P74VMWUp4oipSVEw7FbMgcSW3SaDR6vR4lTYNrWBftpmucuZbSGkWcLakp6knqoyiKYCM5t8QwFraMuyVZEARra2vr6+tx9tWN1PmwAswG+KCEr127BsNGlqDb7Tayr3pQ0p1Op9FokBkOgqBer8Mdjkqy2WzS8h0GGbu7u5gyEo1i/nnWaFJ4+/ZtJI0Zp+/7qDhYdxJ1b2+PX6GPphJna4l41W63wRaTTmxENdhNOUHmik0Hd9AkiEk4fasNRCI/CASS/xjO5ZAfRxzHL730Eqa5URTZzYZWRTzHrLjgO6kWxdySqJZSRtGaDTRcR5tBmgVmg2Ybjs4t2mUrBXKNiNObnl2gpc/1kInFlomWj9ZtiXOwF5FMxaQTTa8KuPrQIlUcx1ovHcuRNFyTBT5Q7levXuWqP0mSfr+P6SC32XTkHmYDt7bA+tL+E2jibHmnVCrduHEDNKRkTdv+mDJCR7fb7YAd5cEuETnjcYtCpp3uHKOJI7C7u5tka5I0zwuCgMelq8PIomO6A0PFZ5BIFBkZDAZURJDN8zz4UJD5ieNYmW3I3mrREs9RACtnNmR9u9BP8mYSyoNj6tVq9erVq4eHh/cyfPe7371//z6eeTjh7t27//RP/4TjddR7yUVHgiwB0Sg+NlotwEPgf8J9Wh48eJDLhGh4ou7qlRx+ZHYsmeVxyW2GvHekK5eSC/6giIp1GPJHUjgkzJ6RvxDdSZXoMh4EwQsvvPD//t//gw/b5uZmvV6v1Wp1BoR/5Stf2WTwff8LX/gCd5GK43h7exvOQjyJOI4rlQoUMeV0OBzW6/UbN25Uq9Vms/n+++/jqi6a6g2HQ8yBiMN//Md/IGK/34dTHLlIkVsUyqRSqdTr9b29ve3tbUwjyJLFcYwtMSwVQp56vX58fEx3eXW7XSwQ+b6/t7dHrG7evAkDUKlU6E4zcrnGX5gWXil05Rqf3MRxXK/XaZ3zwYMHfOJeq9UODg7gBFir1SB8HMdf/vKXn5uNAihcJhdwlaELcTH+2oizJs2BthjPDl98b8PiIcP7kmmWkBtdUmrDLTOS3IvTtbC46Lgzt8+N5GxDQu7l8r/KOn7isMPBF6nOpu9H4hOOVNxAdXZ2dvv2bS48zIbCHyJhKE0D8IQdvkHbo1ZBs43hcEizDRBjlZLIeHEpdhEj9Fis443H4yiKbt++7bMLyjCDwc4ZR7/f5zTEJ2a3AGDrjiYESZJI7zLigKUt+ttgdy0n2fIsdSuyQzwWzTYajYbJbDyHxEqbjXOw+bJ9yBnGTNMXMhu+76ezgBaptHsbiXmLkq/RJ9NnxBTtxpc1+CtFM3K9QJqFoOx/JNOaXbLlm5CWZSWeaC7kToaSEVyOq93+lbYkd7HLtK6lfYvZhrK34dgAuNnALpRiNii/fKUlydZkaP0Hg/ok08igbLVauLArjuMoitbW1ugSGj5Y0RYF18iYwdCVBLhMM87uDSN7gC0QpEVrR9y7IY5jrKRBSMgPYr5zg00a+I43sivI4EEHSmxTJcyQRFGE0zkxc5MLggD7ZHwxzWVLXNvNF6F7LhNMSnJWnIcD7mTG+wRdeCp8ZPtIdWbDnXmad27DrjgUs8GPUJlUG24gVzxH5eSAvDZztTMN3HD7AlfNcRzDIRLqANuw3W5Xa3jo/Ic8ZBBP+7aib29sbEiFTsdEiCd/gO4YDAaKa2av11M2jfm8QSkoy4pT7txC2UMej8c024iiaNYGgDUWbhuwScZH39vb2/AigzsZlCMCaaHfzy4WS7IV/yC7wJG2kbGGhkDpySpbHbZAsGsdZBe9cN8K8luDC0Oz2fSy60+QIjkB0hY3XZSJloljmIrbHm4T4HxwcxptdAdBQCeQ4myrplarxZkTAfkZ4rgrdkTCMByPxy+//DJtq7hMNRaihZ4CFC6Hc/KkcqefJ6FU52k3axIUfZ6rDOVsQ2s2sF9K1/LQAQj8vXnzpjaKVN+Jbp0nzi6SiuP4xo0bfI4Sx/HVq1ehbWEPGo3Giy++iE5IyWEhm04X4uw3YoXspl4uZBRFd+/eVYQZj8f4CBUHFF/Irn+nD2+QbRsOh4rfcDy9AhMEQa1Wg/qjROWCGHfAVQTTWl8UC27nnXW2kbLLRYgbQYbzfMmFShmFPl6SsFUpzj+OYzjOkUnGyJ1bFMx3SSPLYrGYWO1FKTTbQEKmKnABZUQZ6JBsykMyfW5DVoelmxfTNpcRlF9ZOI4lxnF+Drgz0eeSWRJSUkzFvMRFhnS+b4lr3VVln4yzk9X8ijf6pRNSXC/Q+XAasHc6nYQ54NIFcPwiqc3NTT6MTZJka2srzg6O4FDbzs4O9+CM47her4MA5z8wrmywi075AgvJgKs1tOqYq4ZqtSrLBIvsEbuEldw6Ec6Hnxh7StNigrIkxU8JyJVDrQOuI6TZUGRQJkyUd8UkQP9qFWWc3RSJL9dyHy2UEq8m6ekry0Su1zkOTQiYNmFKwXdEFHupmAH+oFwmZooiF29feuklvrcha8RRjTwjkEpSeZvLYcFmQ9uL7JJxGhNxmqf6TUxMYijhygOwELMh7wXCAz6chwNxuJaq2WyGYYhDf1evXq1Wq1F23zjI6vX6G2+8Ua/Xr1y50mw22xlu3bqFvtTtdo8zNJtN3HN15coV3JHe7/cxnMf58w8++GB3d7fRaFQqlWazORwOt7e3Nzc3d3Z2aK0Azjl7e3vr6+v1eh3J7e3tbW1t0WaJ4jcFnYW0Tk5Otra2ut2uMtLEOLdarXY6Hf4xQQBxe71es9nELVudTqdcLlerVbwi3Qph4sxRlTiQSGQJ6Ot+3MWIqkPqqSRJ6vX6PGaD+4DhtiU5ACd9Sp5UIKPROr+mSXGKi7PLwQaDwXvvvcd9sZLss4w8CgkAtyg4kiUOjtom9zayFvSX1iG5z9gwA/lNKRMUolegJGcqTDD827/92+dmwx2WYrEUF8fiZxsudZbqlLiFm2OiWuYzgYttNxsTg40ElNmGacrPr5fodru0Qh1OfwobkxKsCPNFKvQ6fr05TdWJD+6wevnll/lKThAE29vbfNIQxzH2Y/nxAuyaYp4RZ4fycFaA5hmKNgzD8NatW1EGzBK02a9UKhgsk/uNgjiO8S2/iN3TLrG/v69MNbRXifCQseHeVuUyFTq3YaloLTY2NmjvN5y+FZxC6EONIbuvvsHuGA8NV47Tmh7NJ2gKKH8J2P8IBHgglvuUt5wAz0SGt5he0L4FHuhEHhokYnnsinhPQBuYC8xvcJkmdk3c3ajmURSXF7nF4oKlmA16MMmXzmE2SGWbyNyZm5IDcs2GjELgZsOyUsxXnI6PjxvZdybibPOAFCjMBnxI+G193GwkSULrNliSgsINw5AuxAVwBF1RDbjzlWvwVqtFXZosQcD2xuVYNQzDV155RS5BKIizO7VQAsRQKSucEaMdGmkAkGXL6hN/UJjbzUaYfcyjgNnAV2mx460AF5aUSqUrV64oIUC5XEZE/K6vrytv19fXJWdtWsQNsTgZJcEjgjOBR5d/LYG5xNq3nudVKhUtN7IQpreVSoXMhr23WrTQMwJ7mThiiXsbsyrrWV/Z0y1cOhTR5TNNEwezIUHKi2YbGDNCh9JwEm48UJe4Oaper+P0csCursIiFeli3/dxUS6Ws8vZpQ5cZSdJQh/lDrNvYLRaLahyqFdIFWcemUju4OAACtGUtSiK+FVaEqT9aW/DMjPDsL2UfdxJsRzYgGk2mzzi2HA1uoS05YrZeOGFFyqVCjypTBWtBT5uioKVo+Myu2aDxstAtVolO81plCE5BZZ1X4JSOHjTw3/T/MBnX81zH+bzh9yIWkougDJHoVhKrkHGs0kRZzIbzxpcCsSxrBZpNlK3Yb57oGNCJhpLAUm9LyMuyWxwbRVOf6coZgemGo0Gvr80zu4oTLKN0DL7Ujf0Jj2jO2EdCUs32Nq9c+cOeQ2BCe5NolhhGEpvKywce+bZhgTMBp8MacmQKD1TusqEoNVqYSAcTt9ZxEtSOcWindjJ+YdCLJetGo3GCy+8gKJ2sBQqzs7OsGUtlSn0INbouPaE+lOIEeIzcAOgqHsOpBJMfxBQQi5Vad9qk5NxCfi8q+/7Dd2XYpVA0yqciQDre3wpj75SkxjunSysRp4mmHSXpMlltUSzMSfZnHBPxWQGFmU2FAcYHtLI/HRpk0AxCZyYFHF5+rZtruzI7RIrVOhadCIszO4z933/5ZdfJp5YBbp69aqibWm/pFwuU2/32WECqcrjOKaPFHGlLA+Tc7OhVeVxHL/77rvkBYtAxYuGbw6RQ1QiYLqjSXnmx2tgNoqd2wDG7ILb4fRnmrSQ/kuy5ZCQ3PeMh/DlOOX57OyMk3366ac8nL/lz0Rm4nN2dqaw4iJRyKeffmpKSKGhQAXaQED7aSZtb32WYdJdkiaXlZPZsPOiV45JurAq8JbLoG03JvFMUZ48eVKpVA4ODuwNUfv2+PiYzzb49Ufo+aenp/1+v1ardbvd8Xg8HA7x/TsoQdNXzD788EPQyO9nxHG8t7d369atWq129+7dzc3NIAgqlcrm5ubh4eHf/d3fbW9v+74PN5Uoim7fvo3nXq+3vb199erVv/7rvz46OoJzDl05FcdxrVar1Wrkx3JwcEB3Io1Go8FgAAcnuEU1m80vf/nLFNjv97e2tuQFFUmSvPTSS4p3UJL5+cRx/MEHH+zt7b366qsnJyc7OzvVarVarW5tbb3++ut0vANRvv/978M1iFTV48ePFePBy5Oe5a1WvJoODg7W1tY+97nPHR8fm1rIs4A//vGPLjSOd33m6vdlw65PZMiFQ8pcTEhTCVhCLAktYLaR5pkN93yaKIlzajUACoHSXCziaTHPR2Exoid9xP3xk+zUNCYEFNjr9bDwbR+TKsf9uH7EVAPKHfMY2hoh5kS5ubnZyA76YhbS7XaxXelPf1rcZ7dEtNvtUqnkeV7CDnJHDGEY0lkzgnZSohxuoHBamlCMYpIkYRjyy2XHYmLBh9icQLtIJS+q4qcC5/GkOn8ofUQ+8xBTeCqcWZ5KWLSNDHFE4Yi5bFOdqinGR8a1h1gScp1tzCScKdAivaMMaZ7ZmIiOYU/F3sKKmY0nT55gXVtrAMbZ3UrKGhTOUZtcUbmmCwwfgOIrOeQgy52a+N9utxtmN8TF2emBOPOy5WqUQmDtKBalxRes4ulDW4pm538x1VD0e5wdY7RkLTFvmfAVEi0Bh8WTCqt8/HKR3KYyJ+bkn9t9XPoXZzVT6hc+h3CHkl+t6ihcesXiuqcuc+HOWRtXCTSRSRScbVhqggL5w0Q0RMlNS2lJXT5IASZ5ZS0jcniFviX+5MkTeNEoGpkrO+W4Q8yOTXH9S5p0zD6apmw4E6vYAVoyRTVzMv5XoeGpS0OiQN5IoRVASUU5WRaLg8Sxzn5IzjMBERWzsWzkNkVLRMdW7dKj3bvGJYWSQVkI9lIyFV2xuFoBtHxkFmZKdIGFBtjMhkUmLVMeojxrpVciTnRmQyu6KTMTnZEoWlZpajUbdkSGm6O0+k5qf6lbE4Na55rUpKOVtHgszlzhP2ZXJCl6PBFmQ5s7re6WrBKDTeIZmccMWGBhCGfo9fX1YtcEnA9MvVWhkcT2jmzpzpcL2izLEpMPM4En58gh1SlGS3SZnVkT0hZO4WJcitlIpxurXcRZKbWFKGVzLxQLipkNLFKVs0N5BFro14J2uYnYRBmzi2M5T3rQjvcVMeiaQuJAAlAIdilw0ptuhaI9DC2fKIpwl4lCyTc86Lg7/VWYKyAB+I1b9EvJEZPQDP6WvDbJlZOf6PZ9H7ONS2E26K+Whj+YurnCcCK04WWEXY9JAhOlHdpEc6NMRK3ZRU3NteOYkLZkFCaWYuSYbZFq5npjCSsP87CaTJfvkhJK55htjEajO3fu7O3tVatVHL6lXzx87nOfUwLpjK5yWFcLoqfTvzIi0cjDtzxdjKmVZ6KkuOs6SG5K1ij8T//0Tzm3SqUiuX3uwV9DogAAIABJREFUc59TCgSstLh69apy2NhjB4llmVy9elUpCl4vSiDJgON+l2Lt3tRJJ0Iraf8qTCZPhdmQmLgZiVQocYqeqxgtFaGNpX0wUcqq0XKziKctE8nWLrnebFgKyMLdLtlM9JYkLIWo5HPWtBQU/t4GAR/e4EdkScFRIE7PednNCsq5MCWEnxErm08IS1Y4NVYWJ3v5c6VSoZsn+DE0LoxU0IpN0spjeqVYAuUEnJae/8WhMymqpLQw8aaPH0vK+Lw8qdx7lr1XK4GpTjGlhn7E+76jMJcLs2o5l8CJTo/zv5ZYCoGdv0VaRQyZU5fSkDKb0tWYjZlSTd1aVS4rd0gJ5+dpgjeH2YAnexRFQXaRnHL4FkfncPfUYoG77eioLb/8jh+1lYdv5WFduebTmL5fj1/JpywH8aUkkJlWkExLTHJxzAS5fKcs9EXWRb9keiOdYzweL7RNLQD2Xm2h1xLwiJNpXXYOXeycYcqgLEOtSqSHXHBKUyxJYKGcKV0lj7mloaQuyRSoZsNRPpm2TMYka2FohVx4KhzzmA2C6WircgLWcgg2F2lmpc7Ex64pnJ5NZAqlFrhtiXPmTLR5xy9FVASzFFeaXe6khNiju0NbYkr4qi1Pyb49Meg4GcvUi2Wg8rDsXnYOMKmOXP1mUnemiBZujpQFXlnSKlA+E10bU6CfbTgKZxFC+zwPtEWzEM4WYGYwv4bKxXg8/vjjj5edigtMFkXR1PMr7pmin0MVWHAOLW3WJCZ5ZiO3C5v6ezqtVQvItmowFU6aZzaUQsgtXtMrS5RcMkWSWWPJQHsRKYEmyfWzDVOh2/OjTd4urjuNKW/umCkiBsjnZjaSJFm1gS1hSdlf2fxKFG5y7vznbNXafucCSa/IM49sqwOptSZmRTwpZBtkYZpkcE/UFNeUIxnRQmmhoUCT5MYtcW18RyhSutDPxH/ZDLE28oc//AH3fZ6DgrvY0fTTgYW3okuRulaJ0KtcSOL0aTEVFli0nFbDyhJzKUwXbkqxSzLJTVs1FmHmLBAtc6MDroWpkk+7EPJBK5k9S7kEUuBcthymLQHMNmZi9RwXhVkrfXWYOyZh6qqyz+ZSKlFyNcClwEwyFy6WJaGAkMvg6UhfxGxoQ0xv5YMjE05W4JU7THu5WKTyfX/+JJ7DEfYWnxt3IVHmnPkVbpO5Ee0dfjKt7CTb3Ch2DVAsU6sAx/wSgQvZwuEo//z8c8m0zwrmMhsyXJtn5cHEc6XAZxvPV5DOE7M2DFMD09I4hq8mJkKdpaInWvqyqafnaoAV76p2aPNlz3LhEls4FiuGC7d0TrMxMbQb+apYLRbmMCtkio6g2cZzs3FumKmaqGWneQun2ladupmcWeVZEmQfNPVWSWCJ5dL90yVbjsI91J3zRKcEXUIuFjIX83NLDZsoSor2dG3H/ZQadRHlwrFYMXAi7+kwGytSQXYUEHKSZzbsPGVLnjXpBTI3dS4lOUsftHRS01t7LB7XMRcrggIl4Eh2bli4PIvilu+AO2tVzclhdfDHP/4xCIJqtYp9jkvkMLpsrEhRTJid4L3CRKx95djy7WyX0ewlz4lOj8gQCRcaUyy7SCsOewloA1cKCxdPlkluEloCvdlYnfF14WNlPJZyRNmRLRapPM9TjhPzuFomuVpVe9xaeVjIQWgLVkT1F4bS9HngZNqcyFeSXrJSyBzlcaF0Z+Xet126egHMn5eLxUIK4ZLCJfuSxiVk4nhuY6Z6WlCNLwWm+yS0lMrehkmPk/4lXS81snJJhjvsEkriYqmY8Omnn44zzBqXorjVzMzgDdXSK0xRtEwsac0kz/yw9fWLwKLydZ5wydQ5FN3qQJaPtsRSMXCRrFSzcXZ2Nuenb7Tf7VG+jcOvkOMfzLFcNofb6OQ3IZRf7SV39lvwTJflHR8f42ZWy/cb+AV/s0K5W5BfPmi/o3Cmaw35zYlKeDEoF9Ca7qClkKUqBYuO0EaRvxMHs1FAnjkhczGranCkd+Gm5X8pYMnIRDSDpx6WIlKelViS1QsKRaPRmEmDVKvVwgqIoNViXDGZ1FwgLpf1fb9Wq5G65DTExKI0OU0xyLiNRoOupHWHYopczJWLebNDsaP4ApL9Dlr6/hIoyUiHYRgEQblcXtKcg7dp5VfRF/Y+s0B5FsUqN6Fc7WDp8DNBpng+eVwgZLGYsraCWKyEsmRS0XFkiloZVLMBNWcf9eciEV8z1b5VPswZiy+D0kdJtVMWy197+Hg8tk+GLG9zEeu+m20BhDEVgkI5Go14LEAbqIQQzTywlxunwW+j0SiXy/j76aefLkMdpEJfn52dPXnyRDZ6U1zZnQrLsyQOWuG16oD/dVYmNiis5szgBULJjhJuKskLh13gmUTVlkma17pMSahmo1arHRwckJbBw2g0gs46PT3lOohCOD788EP+l8dCRGhVYjIcDk366MGDB1zfEdlwOBwOh6MMCBmNRvb1MZkpROGx6BVSx7OdLXI3zBCzj3tTOFiZwGVARkzG5vHjxzzXXIAkKx/+asSgpGjKiAWj0UhmRIaA+XA4DMMQ31WtVqu//vWveeucf/5BLZa3e9M+v9Lx0hkNhgulO7dZUUxOWTiO+sWiNRaXpwsAz0VufpUoCk2BkiwGRZ5UVxeWuFpuslhMBTVxNxu+7zcajWR6aIlNUa4a7H8tcKdMMg0oU18FmERynKzI4b9pQkAJaVO0JBfHMRUdN0U8inbWshDEcQyzsba2Vi6Xf/Ob38zb73WN294BtG+1HW+xstlh6cOcpjDz1E2vuZBxgV3EXmXkqkL7q5mKaCYOE2HgU9FIOFvlrbvkpmIxFZSFrWaRKgzDJM9sKLAsjziG25lLK6WIhwcoRMuiTYGki0Xkq3A8MJmeEyiSOwrAA5WIyittKQEQAC5PPGSBgNnAV2Z/8YtfFOnrVmi7lp1Y24vsES8E84hkURBa7ZOraOx651JAmynllaSUpZFbYu5k2oipsBBcKv5XS+nC37GstEVEmNds5I6RHcMlH/soe3mwKOJkDptknxZYIlrKgSwQ31FIpucWitjaEG7kXOZ2jjMqR7PBF6zcG7epL9mJtb1opkTPB4VFclEQk1k04DzCzI9FnS6yZEqGW0rDsdBcyCSxFNjyNxX1mJvuTGUlHzhsi1RyX2HhA1IL3DdgCdox/jljps15DmwJWOZtpgKhjQo6Y5FbTbRvP6vxm6kB0CJVqVT66U9/6thkHRt3gbgmgnkSXRIKi2SP6K5iZlI0qw8lU5b8uhTLAllx8bSiSgITZ214ajBL7mWlZav3pEqE2SCtsbyx/6LWwVyY8F3rXBQwRfYVKne40HOz4c7ZtM/PmeQeweGQWY6iCDajVCrJ2caZOHs/59DSvWM8fbDkXatuUjftsGyx58es2pA/O2reYrAnpCWTUbRMTGw5n4kolsl0M5ipSGVaRrOheElx7yMKcVcr9lFq7hgW/kWzJkEhuT5CWpCPkEs2FRruGcXDSSmfnp5yGq1D1+npqcvoHq5r5EvGXdSovlACXLMr/mxEw83Ghx9+qMhvKkmZBdoSv3LlSrlcfvfdd3lDPDs7+8EPfjAcDh8+fPjo0aOHDx8eHx//+7//u5MCeA4BiyKYGMyGEmJRak8BTGraUSMXgJKuC5mM4hLCX/EHWQLa55lKj6A3G+NpJM6LVHxFJdfXiK+nJ2YPH8mZh2snQFqvoWR69d+eERNnLeQxFNNsI9GtpCGET4As0S2w7J/LvMj5lqlMSOCx4eBIYsiUZW/j7OxsZ2eHH+NvNBpvv/32TK3Z1MTnZ7KC4Fpjflb0TLM9rTpbfVj0o0WrEplW/y4EWhnsZDKKIxPJc5I3VrCUpws0p8TJbHAdYTcbZFrG47Fp0VzqUzn4tXgWKQJEUaS8UiKSKVK2i/mRQ5mQ3dQpR/m0ZIoBSHTLfRazwaVyPDbILbRSvBaHLp4cZU2bfTQJu1HXJkSLVOVyWdnbgNkg4cfjcRRF9+/fn0FhTHPjf/lil/sZdX6hlmRuunrLwmQmbqZX2vvNcmV2x3g8LhZxRSA1oBKiKNPJRZgNx4QUgbUhjnws/E3lZiouLRZpNgCu7MCNQsIw9DyPa3xSOnt7e4qq8jyv3+9rVVIcx+VyWdFlXACMYQEa0vq+DyexxE0jK/ZGO77mhoQ0vmlnngc+evRIS2A3rloQK+QR2cS9I7igReEGr4dHjx7hBhdcclUul3mZUGajKCqXy0EQkGwoT7tISIibDbm3wWcbYLuQ2cY8cLm62GQG7GQWbrNq/GXc1PJUwqJV05WZbSyciRIlFbMNSZwyK+KYitFsSEVgcdExDdKhmKDHgXK5LMfscRzfuXOHaze6l0KbBDcbcvjf7/fpjiYoRDxzs9HtdnHVEl3HdHx8LPlQchAgjuN2u411PMRKkoQuhoIyDcPw4OCAFKtW6UdRtLm5SXygYXd3d8n7OYqiILvoEA9Q3Lu7u/LqKl4suBGLTBfuyFJSR5n0+33P84IgSDLbMBgMSDzi7/s+zAZJAlMkM6VAWaT66U9/yvXd2dlZq9XiJjaO41/+8pfj8Virgu3AsIY/z4mETYMSc/N2h3aSGs8IexTqYnEc9/t9yzViBPttY/yqMeByTU0mbLlGq1jTp85s8LxTiIWbUlbuac1gNgr0EJgNUmdhGMJsQENRT4ii6O7du7wvQT0lYshPgDGg5JRxOilrpCj3pW/evImBOZRaEATKNAgy0zMeoiiqVquwQOVyGQTb29tra2s0qA/D8OrVq2AlJyhJZvPq9ToSRYHEcfzSSy/htt3xeAz+qAvP84j/xsZGqVSiiw5hADh/zB4oBHcpktmjSRi0AE0joijyPI/MBukg3AFMd5RF7LLhRFhEqgLOBEfEudmAGIpiQtzj42PUAu/8SZLw63Wr1SrdcYkHJUS5jtcXF27yKzJNICamiPICYCVcuSS4GBQOGAQoN3Xyt/YrNZVXaIF026Yd1EHmWRA7Z0yY2Uhndwe4vEinjSJ/SA0WVMa1F9F5mI3hcOj7PsbjpVIJypfr6DAMX3755Si7NhUPMBsEZeADrY2hPYihcBVdBoUox3r1eh1vS6WS7/txHLdaLXAAQaPRKJVKMVv6h/7CrAiGzff98Xjc6XTW1tYw6ofiPjo6ksVCWrXRaKytrXW7XRIPr+7evUtZRiFAw5bLZRRaHMf7+/tra2ukuEHJbTAmEKSRoVDiOMZCFlQGktvc3CS2SIUmScR8f3+f7o1H+XObJM0GHvj+E6wyFqloPQej+G63S0knbHSvaCVY2YitOmoH2lwMZZXSjsQ6hE/EiIT2hHjbsEdPzA51WsTTrU55sNzvSczlyipOgPJ0+c09APwmTFMudDftdssqg+vH1E0nPh1IDWYjzZt/aCkV6M2Gshg10yEv+K3G2eCxWq1+61vfqlQq0GilUqnVan3ta1/DlzOGw2G73W42m1/60pf29/c3NzcrlQpuwSuXy/fv36/X61gsevToUbfb/dnPfjYYDPr9Phj2+/333nsPIehOg8HgzTff7HQ6nU6n3+/v7u6Wy+Wf/OQnCGk2m7u7u8PhEE6rcRxfuXLF9326ghA+rFjA+cu//Mtr167xDr+5uflnf/Zn+/v7/X5/MBicnJwMh8M333zzM5/5TBAEW1tb1Wq13W4/ePDAtCiRJEm32/2TP/mTL37xi4gOVnFmNigX+P3sZz/74osvIndxHO/v71+5cgVFNxgMWq0WXpEuq1arm5ubvV6v0+n0ej0MTuluwSiKNjY22u12vV4HJcj6/f7m5ubGxgYMHri12+3Pf/7zjUaj2+12MlSrVUeva2hzHNqoVCo///nPSd3gC7tf//rXz87OkiQplUrIQhRFg8FA0Uqj0QhNAs7E5JSsXEwJrUc0suniFdebyr2c2igu46cPP/xQEYlA0cmZW4oxGo0ePXqEcLQc6Tk9HA6JRmGOxjyaxuPHj0n+kQ7cTshweksFPhqNMOHY3NwcDoeL1u2LAdd3lkCpWJ9KpG6zDfk3tdoVQG82tN2Dj2Ic32K0W6/XaRSMNZmNjQ0+HIui6OWXX46ztSk8yMUlAlY/MGuWfZX7CFGK2tFZHMc02+A725i5N5vNtbU1ZeP95s2bWK+nxZ9er4ez0C+88AIFyuR4SBiG165de+GFFzCWh3gwG3yEe+fOHb50Fsfx4eEhFqwwb8AwnI9/+SJVLPY2iMz3/cFg4GcbIZj0HB4eEhle3blzBw+N7NtQyhTQDjIbcks8iqLNzU1kzfM8OckgJEmCGgRP7RgZr8ZWFwZTiByAa6HE5cNwbSzLbADRLQdOeVqKn4K2A47Y7TIA+SXy2UbCikiBNpCbliRJ/Gxh9ujoqLBmXyomBguh/H2OVFgU7VsLjfp1PzIbY92mgvtRBgBmgxapoKbjON7a2uLz7iiKsPjjaDawgoRlIkvq4/EYmlTyoZm+1mygewRBAOPEVTm0balUov0GmA0sJVGgyUrRMyY0iIgVlbt375J+RJmsr6/Tjjd47u/v08oSrALMBjH3sz0k7H9ghZ2XRpJteCRJglWsOFsp4lviSGJnZ4esGq162RViMr1IpfWkGo/HQRCMRiPsEpVKJaRCueAmJJk2G9wqcLMhrYXlgdqAS2OWSXOMdX4iw+GQOhGWhmj9U9HjBFQ0VWU07auGgoKNPz4+jrMdJpSbNGn7+/t8xTXOvKtNBoNEkoZEMRtYg12m8i+OiViMIsVHgc8xEU4B9sLRvrKZjZHujryZzAZGu2Q24Frj+/76+no8vTSsNRsmtuRX6vt+p9ORBOCJTmsxP9xsUCBkgG4tl8s04YBUcbbvjVdhGGJvA8oaluPk5IT4c9UGYJMgyQb1iCtnG57nvfjiiyQYtPbR0RHfcQFy9zZ41pAp0kpQRijPkbgA8e7du7Szirh2O62AZhv8cpHxeIzNszRNsUgVRVEj+6Yk9qi4LkimzQZBO442PSg0yfSoiOtKgCvuyOBtrETh6PV6sO7ErVarKTT9fp/8GmDgG43G5uYm1RHNZTF88TO/6ps3b9KwALNeiMF3sOGnR9tRmCIoAkgjoYQk00bx8pqNXM34TIEXRWowG7nFZVyk4s1IaWrarqIFVNLBwQHUGRp6GIb4SCofWb/44ou0DIJhlDJLGGcrubAocbYGdfv2bcv4F/pXHpJAZ4DZQIo00IPmAg3ZORrL93o9GrPDbGC2gUKDOSF1rxWM7/ZjPA7+fLaBbfP9/X2KhXo5OTlRzEYURWSlkiSRnlTKbAPbS3Ecw0iQZg/DUJb2vXv3FB9Nqf6UKBxgjgnHW2+9hbaodcVB4KeffiqPQSTCbGiHzIoAuVMircxoFahElFKr1ULhyNxxw6Mkd3R0RMVOLUeZg2LnD/WFfhHH8cbGRpI5SlB0FCM1eByTBKitJtMjBux+cV8102xDzjy4E3PCZkUwG+Vy+VKYjdRhHP1sgpdJ4cJRZxsYnmi7ZWLeP+RdlzQm9GOpVGq327RI1cgOWwTZ8QKMMbHSTSrVZDYGg4GiGeFKa1ITWH7Rnq1LMr3G1+u5TUqyBSssiCVJEgQB7crQ1kK73aYZQ5Jd+4oOrDUe0BHNZpOUOJYabt26RdswmMo0m03q9tjkgCdVg3023PO8Xq9H5Y9yJhNIZoPOoJAPNGiw3IdBqyztVquljLVhNuxKWVmkgtn48Y9/XMxxczweK7tTSuNU9jYUKPZGCVSiQLdCa0NTY0zAlwot/AmYOMItEIMSbm4xB8UUnPaW0AzgYdiY9j5PkgQyAPv7+5Qo9sYwAkC/QHR8BD6KIjQwGjnxcvv0009lSUpLTH+xnIg9sPnU+7KgKMfJc7OhAy8uWTj8laX0NLMNrDtr2xDvgQB9plRRGf1+f2dnB85Cp6en2BXf3t7e2tra2Nh49dVX4fE5HA5brRaceTqdzsHBge/77XYbD91ud3Nz8/j4eDQaDYfDXq/XaDRoCR5p/fznP79x44Y8ND4YDHZ3dzGgk2bj8ePHg8Gg0+ncu3fv8PCw2+0+ePCg3+8fHh7u7Ox0u104tPR6vZ2dHdCA/vvf//729vbOzs7R0dHDhw+TJOl0OoeHhycnJ51OZzgcdrvdf/7nf97Z2UEUKCP+5VS4YH3ve99DLCj0wWDwgx/84Ojo6OTkZDAY4OHk5OTw8PDo6KjVah0dHQ2Hw5OTE/zFW5Ah0Waz2W639/f3W63W/fv3UZ6tVmtnZ6fVauEQ/nA47HQ6cKA6ODjY398/OjoaDAbI5l/91V8dHBzwSvze976HcSsqtF6vv/zyy8qVi3Da4SBHpn6/XyqVrly5QmYD7pvwlfrDH/5AzyafzidPniTmRSpqgRSCDNJ+T7/f7/V6SZLAR6vX66F4h8MhagHtajAYDAaDt956q9frYafa9314rL333ntkNlDOKHnULKK/8847R0dHiAt84xvfgCMfhkQY6wRBsL29DbIkSd5//33f96vVKlrO+vp6r9f7m7/5G1Sl53noVlEUHRwcrK2tbWxsHB4eNpvNb37zmycnJ/A/3NjYOD4+fvz48XA49DwPbuWPHj1qt9s7Ozu7u7utVuvdd9+lQYPiK6Xg8ePH0pDw2cb6+vr6+vrrr7++mj64ilrkgc8xMeyEK6VEf1ODXQH0ZoM3nUQH0whFoR9PrxsoUHjyMb5MMRb7hNq4CvgRh/OEzKwp1wR+K5dioZPp+Vxu6nwtUUtvksQ0DKe3Fl8jLT15Uh0eHko9JU96S5AvHGWNJFSaKB6CIKBFQgznoyj67Gc/i/0bTOOgzcm5gM4AYTstzvacYGzIbGAW0ul0aKI5Ho9932+1WjRrhCSYGiL7CMSEGHNZROx2u8oiFfzrMN3nG3sQhihxTI+86TDIS7L1SdRsv9/nZznDMGy321RoeMBsw1TyvEipYFd8tkGYLGgp5mkCLxBLIC/AibvZwMxaaTpSiViamnSRdFc0ShIuZHK7W+vZUjiJsVjHSNh1IxbiOPN/5YeN4cKUTKs/Gd0i2LLLU0K7zuMYsVQqvfDCC7g+nY5eY2dVAmdxQEDA7ohc7jPpuDiOK5UKQkh9X79+nTafyAxUq1Ws6sBmwH4gIjR1HMfdbpfo6ewq7XhhcQk3eeBvkiR8R5r2JMiVgHzGsE5LS7VY1Lp27RpWmaidDAYD8sug7PjZ5QsAMo63tBeF9oZnTPSVEtN2YQkagpDZWNm9DcLEYDZSqyp8isFLxiXQ9JbgajbG0/tjuWaD08w0ROXIHTXzV1xIk1qfBzPZGDnJIK9WTm+afMxvNhSD7VIFCo3WKM7EB2YD2xvw/wnzLkFSigs6VDqPJWazMR6PX3zxRSREyvr69etRdmMYmYFXXnkFtgR7AJ7nXblyBfTwjVbMBm2DYQKEddG1tTWs45GEMBhedq9Jkk1flCzQ3kbCJn+0c0ZFgTObNDGiJPgeOzJOczKUCXa5xuMxZjn8JAcVVOJsPJLsKrNV3hInkDbTasn0mTQbE8OVt9pSMv0l6M2GtoVpO63cAjFpH/tikTYWmY1zXmjSJqfV1+PsaBUHneRyNBIyCUXpKzT2ty5ia2kKmBZ7LG42+Jb4THvjSZJws6Eou0QU2ng8xo60z26uvH79eswcFmAtXnnlFQz2McWJ4/jq1avQxXCTw2oPzAbmIphtUBSYNDjXxdkiKnZWaJkLAihmY5xtiUPORnZNJEwRXQmTZF4JtLQVxzG2CbEGBe9EjJP4uhbMBk1ZEtai6EFuieeaDVpvnEGFnztMui99xqyFzK9LofGCSs2TsxyzoXRIpbuOp510KUTp4bQjbVeF7sqaQ3vdt6K15QEUbRIWdawVRvmbu29BZHF2SZRpEK0VlcupMJcjWS2lFgVMsp0tv8idzm2QA+5MwJY4NxvKXDZhzYwC33rrLZyjJDlx4xlEghkYj8evvfYaLSXBwMBsJJl3NZkN7Blg1I+5Bba4kUH4SUNNjzM3cRCT9lccl+M4bjab2FOJ2AWRN2/epPkWsoMZA5mNhK1u8bqjbksI2PfWEtF4LD3aYjZW/NyGFnY1OrdyXl1o82sqIkuIlrlqNo6Pj2u1Gr+mhvdSe8PSzhg6nc7rr79OPkL9fr/f7zebTXI7gU5/7bXXeNxaraYcUALzH/zgB+12+/j4uN1ud7vdbrf72muv4VpASvHDDz8MwxCOTP1+v1qt4s4l8ifhaLfbrVar0+m8+eabvV6v1WptbW1B7fKrjba3t7GpiH67tbWFREfZZUS4Xardbrfb7TfffBPuYbjxaWNj45133iFVPhwOq9Xqj370I6j7R48e1Wq1vb09uPQk01/eTTIHHqSOT8kqBLhfC4VWrVaJbDj92dd+v09eQKPpi5skRuxCJN4S6IYibY0r8kCrwv3mrbfeKuZ+8+mnn0pPqlF2mVKSJP/93/9Nf9EUHz16dOPGjU6nA4LBYPDyyy/X63Uc+rl+/TouOnvllVc2Nze73e6tW7eq1Wq9Xv/a1762t7cHD6jr168fHBy0223Qx3E8GAx2dnZeffXVer1+eHiI4u31el/60pc2Njb29/dRNYPB4NVXX0U57+/vb2xs1Gq1jY2NW7du3blzBy1nNBqROxb8u9BaarUa2sze3h5q/Fe/+tVwOKxUKpjEDAaDn/zkJ/V6HQddQYm71waDwTjzfRoMBlevXm232ygQXj70S+VGkJ5UitlYX18vl8vf+c53VtCTyqQ602fVE1fmd6bCtBesbbYh3fUS3WxX0iRsdON5Hs5M0VEGnBrjy8EJ2zNEONxasNnIKelWEhqUbW9vh+ybEwk7L42hXLlcbjabDXb7Nycm33k6x+CJa5di9nmPOLuKIxJXo8fT942H2Yc0YvEpJ8/zms0m1vqD7PprHIpU8qJkhwLH2dpdxC4GxmCQ/mL1A/T9fh/ZJGeeZBZQRXN/h9xYcXbqpVwuF5ttpOzchkU2pSntkVWkAAAgAElEQVTK+a4itrahajlLu0jTRFNEcv9VikK7uaUwsdymYyoBzoGKgt9uYjIDpldK4dBfWqTa399f8bvTFUW5aIV8+ZBa9za0BagtT4J63A/bg8m02UjM1oI3XKlNouyyI2/6axabm5uk96H4qtUq3bLgZ4COI+eTJElu3bpFNyhgGo69VnRIpI5vGfH7MHAovZF9dChmZ8K5bk2mj3DzXODEHwweX2uW3RjDUmUPk9aRIBI2V7H4Tr6bsJHEJM4ORcKQYBldmTDBDODqeDhxYsmbbz6D8vDwkBYxytmnSlwgVcxMEckbqrDZODs70zrgJjrFl0zretlEeSzlpKpjjkyfZeR/ta4cuWuwUlQtvXYBQDnazelluMFS/P802kpf/b2NybSd4OHPIHJLSSkcbeDE8U4qaTZka1MasRLOOzYcVOBFzrU/bgQB4I0Ob8gw+3ZQlH2kjIbGiLu9vc0Xf5MkwWcbyLEkzj6vxJ128L0/biRoWIdlYtCQRw3JD1OEVV3oYix/k3aOpzdRksxsKEfNFRtZKpX29vbIORLCYyWE6FGSXvYBvjiOgyDAFetSudA0gi714nWUJAnZJJSw+2xDSciyAS71Xcz2Nt59991iuoDMhkWpadViIhSf1IxS/rFwweBRxjO6BcpUXKLwWNICyRCZQUVmbYE4QnHAXc3ZBld8Ug8uShFfUuQWnak8KbrkaTMbsv0pPcHUb4Eo+0pPnN0YSGcX+EVJeMCyFQbyNBZ+9OgRXRCLkDt37mDeQANqOh5FernZbCbZqg7ewvkEa1/gQ2YD3ixBELTbbX4bBN6CJ11nEkXRSy+9RGtWfOEINoCvF3G7hUsjyHiUSiXMt4Lso2lRFF27do2bwyRJ6G7zceYvgL1WZSELX6qgZTTf97e3t7UqiQye9i3R8L9KdWuPm5jG0cgpJhwLNxsJU6Pa1E0ZlM2YoKwlapnzgztEY+GZC23pWRbltFCSltVkKiWtzFrjys1GsapcBrhq4yGT52aDIbcAJwufbZgMg2JIZAPFohC0cMC+2acoR8DPvusAAwNN2m63+TRlPB4jBDR0NIz2JxKm2rzsZreYfW1U9hA6cgV1gC0BTkAToCS7SA6GJMoOGB8dHWGwz4G9HLJw/N5GeOlAy6MfIhf8riGktb+/T7MNAi3cUQjuYAcfOu2MyRBlGbctkVGUtsGk8kz6yALl3AbMxk9/+lN3RcD/np2d2c9tUFpkXEfZPZXJdOPUKndL3pW8JOycPJ9lajckcs2qPTkttHOgJLNbFuOtRKRykGMC0xAwYcf9Wq2WY1WeM0zqcgF695KDysFSdKnO9E7czQbpTd6MyAFDWVo9PT2lcN4i8dG6MAwrlcpPfvKT4+Pjg4ODF198sVwu3759+/79+7u7u7j6aW9vz/f9q1evdjodKOLd3V1Ef+edd/b393GJEBZ/oHaxW46rp7/61a/2+/0PPviAPvD34YcfnpycbG5uYksDCnp3d7fdbit7A6PRqFarwX3l7bff7vV69HnBYfaVvVqthtsj2u2253ntdjuOY3i2JEny8OHDt99+OxZYX18HAfjQFw9xpUS5XMb1RN1uFxdnbW1t3bx5EzdHJUnS7/dv3LiBi1T5JYPw16Ljylh6wuds6Q6uer3+zjvv3Lx586WXXmq1WuR5NR6PUbD4q3xvjj9zvymtkuJlaPHI4mbj3/7t33L7fCpWpdM0PTs7q1QquJULv/yB0Gq13nrrrXa7Tdd2EQ1CcLvXj3/847feeuvo6Ih+Kfzw8BDPh4eHuK3r6OjoO9/5zuE09hnu3bu3v7+/s7ODvzsZvv3tb4Py3r179+7d29nZ+dd//dedaXz7299GxO3tbWKIq8z29/e3trZAhvvNwISSe+211xRu9+7du3v3LlHu7Ozcv38fz6+99hrEuHv37t27d+kBr7a2tuDfdffu3Xq9Tgzv3Llz586dnZ2der2O56tXr9Ip8RX0pEoNS1XPOGRpmIpOKUZOL9mqZoP2BpLpVVQ+HlFUiULDFQeMELQeXbwcBAFdP55kC0G3b99O2Mf4pA7CZOXg4ID8hTCWv3HjRph9fgCUDx8+xI50lN0AigUoWv6KmWsTv4OB9jb4VkScXViNNXpaZZLuWxym/QM6QtxqtTBHwVwnCIJbt25RxlFW2NrhJ8VQblH2xY4kc9Hx2L30oKctEy6hPAKmPCtDUcsUxD5CH2c7BKhxz/N+/OMfz9rzCXG2AUZ+WVrQK/iJIgSajocQPQWSkJInv+/EdC0KD9TG8jyvWq1KGi03LVuAlnn5W9yHqNBXq1W0HJqUm0AEnLnHJq8Kc9/3T05OZlXo54OF6dqnGqlhHW+mkjSaDe0ilYRiWhRE2ZcD8BBmF4Dj2nDSQWQ2+NaClu1wOCyzzY8oiuCSy4n5jjQ0F6Yp3vSN60iCTk4BfBmNLz5AZ0GVx9kNQqaVAQhJZmPMtgQQiPvvaHsGU6LNzU1ebnHmd8u3mo6OjhRrFMfx5uZmOVtGwyIbpkRQHCAbjUZRdku8Zc1EOxSww7SuMmaeVOU5HHABXHcYZF+U4r/yL9fRUiFy3aoQSDKFlaTX6mK6gozTKxFNnGVelLi1Wo2HkAO3hbkk0KJWqyncgiCo1WoKh9U0G4oqlM/PAciySnWzjXR6AUBBvtlIpn0Wuc1IdB9u4qtYYfbZDNrbKJfLSZLQXW8UC1vEMCpj3Ro0Qk5OTki88XgMs6EoO/j7IoQG/tjBDrPv7XBPKp9tZpADbhRF9NW8MPskJzGBMy6sCxa+SAac25DTEQ4/0+wobd/3of3pYjtOCTMJ83bt2jWyfEgxDMOtrS3FIrZarSQzIZwhd2YzlXDCqlupCIWeGoDChIeUi57bUJo1zEaYfeCL4+DggDaQuHM231tSgEBEpLgIoef5QS4SaBKh4T4uUzghZmc+CoN28i2DBkd8/PHHBVX70iAV4nPYkebdE5zOZDZob8NkNkzqQ2qNcfbFm3a7HWXX9WC02+v1ytm+LpZocG6DFpFM2ko5JwizoRDjaBv+wmwgxGO74oPBACrDyy4Fgj6CmgYx9rqhfKPscB92OPjCCHQ0IYqiq1ev8umO0uvG4zHMBoqadssxSeKTGFy2CruCqQOMK+fm+z6+G+plH7LFulyUXWFkqiYlxDJx5G3A9JYTcDIqpZlupJiIKTMe8LkO+j6gcskV9wrlNI7eovwWdxdK+ruaC/0SE/OOqEJGimP1oag8Jfw5tJAFqKWxcFBPifMtca4yEjEINekjbmxgJ+jyj5hdBcpXloIgqFQq5A2lZYuNB3x1h17Fcaxo7YSdrQOZl30lkNsbOK1SCP0SiIbUOk8UiLLPbSoCdDodGvtrB3c0nlXe8plEzBbx6EFrtiEAH1/jcz2JMAyWipMa32QnFCgtRInoeR5mG+57G5Zw01v7q+cgSK2hJbCQrVo5cx2XGjSd/e0zi3kKxLhIRdcWKaN+crMZC8cqSZMkyaNHj3CREf7yVxSSJMnDhw9zj5IpSdvVGVHyzx9xVpzGzsrCXysGUjRdFIFY/Ht/uWxNhQY8ePAA7lL4Kwvn/2PvfWLkSLLz8IGxl4YOBHSog4FeQEBhV0DTAxtJYGwUBgScNBez3a2xVQ1qdreWlNZd3eCOuttcr6u2TSyqW7MadTa1u1BR3FkgixA9YDXGlMwUNRK6xYOBEg9eDNuHRRo0YKBhwNIhIWBOdeEp63f4fvnwKl5EZGRWVXeTO9+hkBX54sWLiBfvxb+M4P6edlVhCxynkenyiovYPiuFuRKujDbgNv7Df/gP1M5zTUBRk6HYBUmmjVsixXMFbfvPjZIWMRZKWun5cxtaKNJyJfkCEkq5ucBpSVyaA8VwRNbuqqWf69iltSRqjy6FN0V0+SJBCxnR4jAUYcqlpVSKEmiaSrKXuUuIlqf0FnxYRm6DRhujPLeh1eNCal3CRrhHSQ0uZ+Rgsk3pWmhKGLvctIpyU2xxaUwYvVBC2lwULMhfFaS6/oS9uGxug8AtlOIMBuOfyGq7ulqbojVndjslIyoSaski3bp9iRRNGGS3Qk2RZy436fzsxRgLaKtJgfb8JZOE0m9xt0EHGY2KuA0lyrTaiR32hGTrcs+XiWG53JmSsEhYGgoTU07PCUZf+IkiSHVuww51bUNxG4qF4mZa222X3c94fEae7DjnGZW6yE9r/rRRTL7K7nKUKSzJxJ6uXQD3uJxJ7jweYJp8c6GxRInE0CoeH+uQkJRlz/PwSbzLaCNlVmkkLLLU9aKmpFxEhYmFedFYCoE9d9q3Jiug8LQQuyBXtvMGKfMX0KJ0KWnchud5inuQiMxuQ3mOdQu5WoYmU6WYLSmb3eRJARxtpfR/pojacG1yofmTFC03k9uwuARturLAtWWSWzIyUakknDMtibuMNkxKzF/ZKSeHRSqtPZKyWRhORTYujCQYzcBtSAGsRvvsYSqfLzAtOI02pGmIhDFVrIbJBpFF1loxk2FSTLYSN9e6mfyWQmPf0i6jUIgSUbsIr0BZ/5CuQtrxeNyFyDKxCC9pSmwHIGKeX1ndWrdBBxmNZuA2UmEfFTJOr03RxQxJ4S1ympJzybXprUVge3RtKi6QqZ83WLJcIr9fwBGq28Ddc2j2n376Kd8kwx8i4TAokLbfKJtwlIdofIOQ1m3QXXL0VrlvbpB3S100vv+H+GD3kT2icjueadMUWAH4ropCFDGUiIPBgJNRCBFDbEUMLpv2GnN7prgwCk9s7jJxcOTMk+j3+152sIfjdxuKNsq/WusgbYTkZodFjJHOXmvF00aUzGUWLKKajKN71qYCJVGXqpwE7klo5dEKfLoF9oqhaPmobiOKIk/cUySh9K8tnVZtF1VCnlntAm26oe7mNZdutT1p01tufO1f4fJX2gvglBCLpTZ9S+hSegoN/5ZFO2xyYWICRhue55kmqSy6q/2rjZXLKhdaJpa3is3ShigPLubPlLTkUCh3k8NS7NNCOZ52YSzyfwGOooVT3m3wQwsiZjG5QaFn5Us6GaiAGzIeiCOh7BFzw+nABi0lHepAafGTHnDorAnagyJarVan0wnYUROOp1PQV4F0AAbOZFRo5CEZWlZ06obyTN8J1gVwSBHAzyniaDQaMiJFoc/pabQxsk7CWPSY4srwKRoFLTeZtIlGK6FkrhRFrjx2YU4BdhutDSyKcky0IslyU/5+gQmhbsCNoojOzjQdkebrTnCjY0S14OeMasNxICinoZNE5bmkEhWG+fl50zmpFTNoq6gSPjc3x58vXLgwlwGBFAICepB8eCzTW87HBC4qF4m4XbhwQQqvTZSnBT4WaZU88hD+S6kDqE3TJBXXPXvDPp2WrxWsEJlizpQHyUEaOBM3TnCGRlBbiVbb7oSpMFEYKmKfQWGdb6RmxbNDdRtJkqCL3crOfLVbammjEUKBiqkiJyHdCWdCbkObtMnfKAR2B6aARCIyTMrDTHPOiptUIlqcqBJiIuBxtblAR97L/DcXQOvRXSCPTaXwEjx5FHCwXEDNFdfU5kfn1W04iqS1Yi7W7RyaP20NFjTppwRF7DMqsPOOtHhHRHUbxCiOY5yZ7OlOllZCyJA5gk6W9g3H/XOzaLJKJprSh117zEqSQ4LbsIihBTf9vu5GBC6ViYmX3V1IIil+SwojGeKvUiZVNpKjQD624yF28bThsqgdRxsps0EyvGhLmB0suSjBQQm3/LUEnhpMlVjGrs8YisxnVGDnHSVKRu82RqPRcDi8e/fu3bt3cQka8Ad/8Ad4uHv3Ln5/+tOfbm9v468CJVD+Jdy5c+dP//RP+V+ky/9Scvfu3aO/9+/fv2vAfYaf//znCDw4ODg4OLhz506v18Pz/fv38YsHCgTn7e3tCxcurKysEMOPP/5YIVbw9OnTjz/+GM9RFOHh0aNHCplyJhV/9eTJkydPnjxlePLkCcj+8i//Eq/wF2+jbIPZ0dERQp49e4bnZ8+ePXv2jB6iKHpmxfHxMT3g+Xgcv/jFLywhkv74+PjFixfHx8f/8A//4N7OZZs3qfs5tAVakUx5pBCtsRsZ8ni2ubbX2nkDl+3syuxcIDXv3eA0vOhMhWZ0G0oypw/H865zmcgDsXH+tkvEOI4rlUqr1XI/f/sL5EIqKA+XumvRTzvB6cNdJFOBlGZ4arCIlFvvxRRlGjjdsnkFwItFlo9jodncBmf0K4jhcAi3EQTBWcvyukGrV1zl+EN6io1/wrSUjNjJlIzLh5Fo5I78zwolKn3WOOsiOUeQpZGOty9ZbqYCdHUbllcpUwiTEJYaNb3SPk8LLlfrwG1Uq9Xz4zYcC/Y8w54Fi4KZQqaLCTm7yJab61cCWvlzq95BQaYGLtLZlNF5glIsMlB5q6Un5LgNpQK0SWrrqUS92sks6eYCDgCTTvwBz1EUBUFAjoQnkSSJyW2Uk2RCTFIIZwitgpooTeqnVcKpI5d/qmtjhTgQmSnXrygKqcHpYFRkD9vkeafnyZm4EMu0CmXNsQC1yFnbmGJxWATShozyisYdOG+KPvFrNpvLy8v0uR8+ytOOP+xuQytMOQkdUboEzhZKJVrItJojFWN2cOcvBZNxTfl6/eBYp9PRJzfwFLUCTJJZSwlMwtYeXZsR5a9WjKmUJMekS+Ja4SzimgpLS+bCsBAwtmg0GleuXImiCPt8LBNWFrdhwcuXL4fDIWf78uVLSVOI54SwJEdyzk6k0XgPQHl1rmAXiWcnNbdMGShpznMhFMJ0VGQ2yBVvwixbyqE020KJmlJXKMuUXcZBm2L+2kZufrTCyXy6ZLiQMEWLIEkSHLMRx/Hq6io+bMQXJ/bRRqvVcilcJSJ/GA6HMqSo/DMC3yGGZ/rV7kMrAaX2lVfnCo4iSeG1OVICeWmUTujcorR6zA5SwpEoUnsUS+7subYXlHsBjswOI1cGU05zY2npOYq5DXvpOApkz79JAPnXXlgKoihqNpthGMICwm0AYRj6vv/ixQsZa3K3EccxP42Kzq3ip1QpcD+0ih9XxQ+k2tjYwF9+ApUC0ylSpgOm8HZzc7OE/+BVppSVi/qdJhxF0gqvDUlFu9U+TyjP7OAiAK/WUcGGOQuMdBWUGmrHFNcSYg+XSY+KVLcjH0vSWg7u9DKKlNPJbRRFrkAmYhfOdv5aHB8fB0EQRRH1oxuNRpp1qNM0jeN4wtGGIhUlBGvLzwS0GGU8KDbdctogHECj0bD4Bv6Xn2koA7UnIXIf1mw2fd8v7Ta0BTU1nZsSHEWyCC+zqeV8PrM/IZTqPiuYZBuNV4qkNEWflgzTKlUprUw91embu/D2vEzfbZgyIGWSeeNMRlOqxdFodHJykmZGHMvgGxsbWAz3fT+OY1NcR7ehjUgp1ut17SnC8iImBfx2VROlci+W6QIrJVB7wxU/Ad4k1crKCrafFa0CehjpNDK1NjP72+kiN61CwnDi1NyMi7I9D9CKrVT32YKLxAP5A8/LSNhlma+RsGa5AhQtVRldy9CehIneESZJCDMcbcjAGfG0Vxv9jePY8zwymlger1arp+A2cu8AD3XXV8iLuxU3IFnF49fZclaK2zDdymdBHMeXLl1CjuI4tpS8rIhU1wxS0W7dq35GmG5CSq6VV6eWqVMDr26l9s8EXCpFGIvYFCgJeLhjctMtWEuIjKIQFyo3bTkQTsNtpDrV0WZJRpE0lmrTZp4AH3ByckLbnE5OTjzPm53bGA6HMLJHR0f8yqPd3d3/9J/+0/b2Nr/a76OPPtra2uKGXrm4MBZX53a73d3d3R/84AcKzWeffUZugC4HxCvtPYnR+E2LnBUu6UP0KIr+xb/4FzjfsN/vu5fGyKzEUlsURZqORjrDJUV3qVKh0vyvLJlXHUqdnkOMdNZJecVDlHwpUXITKlp6ijxaIV2KemRucY7CK1IpmNRtyGRyCZS8acVVcq7QK3wsmed/aTctv6lppqONNE2xwMA79UgUawY8fH9/H7u8ZB/fPgggZyNHEtwJEY3CUBnESD48yptvvolTb8MwdC95rUrIKLL2U1bXjvp2CighgCmPI6Hqrwqk2PYW4UJzChiJotaGW6LwcF4UMlaJIlUSNfGRr7TyaDmnonkqITKuFOA03EYhDvYqNGVMC+VVkiRYyaCV8CRJms1mkiQmJkmSVCoV0BTahCrdBqHVavm+j0EAt8iYp9KuZPApLBm+vb3N35omoBRvAQGw0hPHcRiG/X6f0+AqQ8X9uLsNWTWmqpdv07xmk4vSEacLSxZSZmvsBK8KHJvGGYLkHAlbb8nOyGCO7CVQtOgs0ZVwhUCm5SJbbinZuc3WbcgcaqtBIdCG2DPmSMYHFgixewKMNprNJv21ECsR8YBNSmTHW62W53mVSgV7q7iNxu2q3EavrKxg/xJdYnF4eAjHUGc3NWGZWi6wwxlg+9PS0hIC6/U6v4eDP+MTSNDQLR0YEhHnt956y320YVcDe02ZVEuGnDdwsbVZyH1FBNMXbpZwbBrnASPn2UhJTIH2QnAvNG0BmsqzKE+TbPbCUaJIVuXdhpJ8rqAjXTXkSumet9wilm9zS5DchtykpAV17cl2KzupYMc9z8Pe1ogtiW9ubvq+z93G2tpapVKp1+v44MP3/f39feKJoQYuYaRxBheDnpvN5vr6Op7ht1qtVrvd9jwvCIJms4mJuOXlZRp5YBKv2+0qIjmONpTytxe4olFSx145pELhtTSpoRXYI54H5Fb9+YQivGNORzrj7lIy7vxzaThPLXOZOy2Nthy0BZWalXNU2m3k5iEdNxAyXCuT5GbKVS5NKmraVLKW4kuSBIMD01WyuAJPhtMNuLD73PLCASiTP1obvbOzg7iYSmo2m7u7u61WCxuZyDesra1xPyHdRhiG169fRyAmzcIw3N/fB3PIE4bhjRs3giCA28BM2uLiInwSgUYbLgeuWKpVqT6tMry6kJpWgkNqbl9njtyqP1cgmRXhHXM6KqKZMt2pQ8ucAnOTluWgxDWVG8cU3IajZNosyb/aEJkrLY022yYxcoGjpTzPw1Yofu0dvwXvF7/4Bb8dDzg6OsLDyspKo9Hge6Jgpvntflhm+Oijj2q1muI2Go0G/d3Y2PjJT37SbrdXVlYitjnq937v92hHFt8QxbdOra2tdbvdvb093/d7vd5gMPjDP/zDxcVFkqff79+4caPb7WIU0m63u93uj370o4WFBb6yUs5tjAzNT6HURjkrWHIxGpdNyinVTMtfyzYdbymm6GcLxxZ0zmHP4CivBpXSkMWi5Tk5TMxTXRMbCU2zlIZ7+RRzG6m1tWjptWJZsqTloOWmTUVLYy8dC/DhRaVSiaIoLb62gSV3ZZIKHfler6cMOHq9Hnr9ZKZ3d3d53Hq93m63IzFJtbCwgPmuyLztqtfrYQ0D01Bgjrkm7OwKw3B9fR1fiWPOKgzDpaUlzNHRcv3ly5cd3Uau/mjr1048U1jE5jQulKYcaWmkDEqZnHI5SJFGuqp5RSHlN+XXRGAqIlksJYraMTkTmT31csWlZTXp2kYujSKBPcOSv0tROtZWKpqiS8FFUVSpVFym8jlo55WyARcLG9VqtVarkUvAiYq1Wg0W2ff9ZrMZRRFZ7Shbpsb4AH+r1arv+77vNxoNnMbIN84qO7IGgwGGTTRztba25nkeXAJS3N3dRVq0CL+5uQkXRcsw7m4jt9a09eIYZRZwST01NySFrFxeZNGVZjUtaFMv1BbOFbTy2/NlKgRTcUm2heLmlr+JuSXLZUvLmJHTcBvl+KTObqM0XIosDEN0xmUhWmLRbl0sRcgPKfjXfxLaj8bJDShDCjDnH6MoD+RIOFvl5BIlCVPqly9fhkcpNNqw12Aq3MZMK90ihlK5JhrH7FiY22XQiuGS9IxQSPPPCUxCauW35IuH55aPna1jObtwlknYxXBh4pgKcKpuQ5tVO3OXEnfPrcLfXppAFEUmt+HCQX63QW5D8Q0WR8JnrvDAQwB+HiJ29+KZ5q+kAEoSpr88rUJrG6lzq3Ov9NyaLY3UoZ27pO4YMTVM21o4mF7NGoqELvV+hpByjkQ5a+m1WU6nVOzlOEgJTZk1xdJmWcvEpUgJ5ZfER7qW5piqzJXpraVoRqLtyXQ5gZaJPW6apnEcK25D4WZhgkkqHIRlt9qKvTaNNuSoxTIy4Hzoe28TgTZEvoXbKHR1lbb8eYisGlNRmxTGVLN2ApcopQUw8VFybdIok8CSz+nDsd7PA7RiW/I1MpSz8te9oMoVr+VZ5kKmUq6gtHk0ldhMzqTKTZUTFKK3pGJSl0JM5MMkbiNNU3xtJw26y9hCS2OZvzK9whfgMgkJrSSY6cLfN998E5NU7os9Jap1knp0T8IxkL81CZYrrSRIx62Ae2ZnWiyOArwq0Io9Mhe7QjAy9I/dS6lc8WrTdees5DE3oqUcTDJMzW1o68wxh6a/pZPWllchUCyT20iF/mnx8OHD5eXlxcXFSwwXL168ePEiffPhed6lS5f++T//557nXbx4ESEcCxl+8zd/EycJUgh/rlar+P3qV7+6MI6vfvWrSiwQ0wOPTvjqV79aq9UocGFh4Td+4zfAx3Qfor2UXCprJNqMhbIcFM4yXNGcXBm0TFJri7WUgDZRhf9UyiEXLmKfZ2iL1FJ6qVCMVKeKjkVXtLR5xJQpgPLWMcQebi8x5VkKOdvRRiG4VImWxlFpCoFiWdyGO6IoojM85KkeQK1W4zQAdx5KoPKWxwUrigLmlohwHjJwYWFBK4bjJJWp/E01Yq/0XDIliiOZI6U7tAwV4V10ZmRo/7kCTzFTkpWL5OcK5crERJ/mmexzAq1ghUqMx5L8z8BtWAo6tw60eVPybCcoqmpTcRtHR0dk9LFYTc/KBX88EKdU8RDllkC63Y9zAJnCHDcA1q0gPnTxX6PRUC4EXF1dxUMURY7F6F4juZVuJyukSIpgqc6+uGK3nWEAACAASURBVDCROZViSPndC00JdykEx7y7wLHizjNMGbEUlClcvrJQThf2hJT82vPlWGL2pMt/7lcUJrEkTVECWWqydktjKm5jOBwmSYINr/Sg/D05OaEQ4OTkJGEAjRJdMuQceFz6JeYKJTHnISn7BoUjN8umqneMleYZUDvcydLxluaehHtabjqiZtBSMpYUS8jvInnpvJwhZlEsku3kPCeHkmutVPyte7mZuE3TbVjeumRs5Fy7JTSmEHgsuA33jUOlIZcKHBcPSidX6Cj4ciha/qZakyrkoiG5ZC56MrJ200bC5UyCkbl5m4pl8ow7lslUMni2MOXRXgLuxNOFXWxJKZ9NDCcpLuCURhuFZFJiyaQL5bloYaXObqMc8y9ggl1hTJQjnVpqySRzlxQnUaQpQitDTvvJMyKO0YnJ6eR0puAZl39N9GlB55FL4IJUp3smShOBkotCBWXJy6RuIzcBk8RaJtqSkrGKFsEkOLXRxuuKQvXlWL9SeRzJOH8XLXUX6RQgxZCyWTJleqVts5JmBhk6M+Rmx1J0MkT71sTWBVoOllpTErVXZQlIbgXcBufCHxRxy8mkDS+TxekBc0RfuI3TRGlFH+U5Bvtbe3KSYPKmeB4gs1+6/CcBLadh4jSKoinOnY6spnZaSVispSXKFGWYKWTupjDaUBKYoqzTYlUO58FtnHkhTB0uLcqdldYo8FeKospnhf58ouidxDMF2gWXp+h2CY4kSXBWDS4hDsPQ/eiaL5C6TaKW022TzS/gNrSRJ5HJRehZsC2KL9zGdGHJkaJXtAeMeqO03wzH/Upudrdh0eTTL+eZ7ndwx5nkXQEOHaDdfYXOIOA484ycQ5hcuwlatSzvNkzQyjrSde5MZNoWbsEpK8cXk1TThYs+pGmaJAmda0I36QYZcMM515aRGDRIpdKqpaPWlYOp951k17EonXTa3nYm4Bu+TXu77Yiyc8+SIjfTeJ7XbDZRrXTJcbkCt5+dw0GDm2Aa6HQ6kJ9ykQt3SguaArkEjmi1WkmSjAzdrIlu93vtgWZTqVRQiO6N4QuUg1a70AOtVqsYYaTj92VJzTYxNLkKu0rDaQH8W0j5mSRaKX1cafm+kn+MSc++76+srPCvPnHDihKifDGaC36+AAcODuDAV6JKLIVMe2AB0dCJA/fv308y12ipbrQpZbTh+z7+pgXHZNAT/sWrAl7mfla2HPI7We1XsS5mF6qixFVUiNtorY5xAsUZcK/AHyzY2NiwhJD/AzfP86ju8t2GeyWdLU5hjI9LYeE2NjY2oOL2dEHz8uVLIkb/8fPPP7fLTMTA9DMjMDTgFJI2YTQ+JkjT9B//8R/v3r3baDTu3LlTrVa73W4QBHfu3Pnkk0/+9//+3wqxyW3IZ+k2LFLVarXr16/v7+/3er2HGfb39/f39/H80Ucf7e/vd7vdbreLkG63+/jx48ePH1NgGIb0TL8SH330ER56vR44PHjw4PDwsNfrIYQ/PBbggZLs8PCQHg4PD//qr/7qcByDwYD/BSUE6Pf7/X4fNPL58ePH6OaDstPpdDqdk5MTDF9MBUvNZGlpCbmGeNeuXTs8PMSdyi9fvnTXn5OTk1qt1u12IQzEi7Ljn4+OjpQ7ZujK5FhcYMNfERD42Wef0TMBgZwnbn3GMwKPjo5oQEYc4uwuHDxASA5OEI3f+kzScrZ8zKeMBYkhvYJInDMy0u/3Pc97+PDh0dHRP/7jP07fbUi1UEwPmVoa/6bjM27p+Ghdy5/CtawsyCWwAwWKK/YS9p22JOODeuV770Kjex6irXipEPI0dQm0H37Srfa5KPh9UEEQyOqbsCPSbrfBNkkSz/PiOIYjR5dQSSI3rXJuw/O8VqullLnSbqmyTOXPaTiZjBKPX8uoJbMkRMmZOJviahVJiWISXokYBMHFixd937eP0Y+Pj7n+oJNLuoTuuSmuBBoaBi4kSai7l4wbSm25KTSmNhjpLLWpbGVIHMf9fl82Z62OKUJKVkpEyUdLw8Xj+Y2iiIaVT58+TcWAQzNJlaZpHMeWqTTt+EgZoGmHWrmDOBloGTP6utE6H4TKuNoovnkgj7KrVCrak/74CN301hHgb0llQuY47JYnRCEEGeJ5Hi8ub/y8RSWJubk5mluYEKPRKI7jIAh6vR5C4jjGJBV1BaJs+ttu9LWdIXe3MRwOPc9rNpu87Sm2QPZYTW2eN2k4cqWdu9ga+cDtSCwMIg/Ryq8Vj5sSxfTIuNJt4MhkdLZMKkEn7tTr9TAM4zhuNBox62wleYN7Duk2lOwoXS5ZSlrIMYedDNyQHYRAnljnb2RF0C2citixsOxK7uRfO2RtKoFeNt3n5DZQB9gGJ62/DHGc6TO5DQmtcyJgMo4TUIh9Xo9P4ZnCtVBeYZ7EDt4NL9p/j9h9G9qhAG+fdg58TEAjd20shOPCQZMwpHCKbBQLJ3cVauq5VuDo6KjVaoE/jMve3h6MEcjsQ+SR9csplxE23AaNNrSNTVpkExQOvEZMxJzAxF8Z7oRhqL1MPjJbK+LDzUokLK9LHqMoCoLgy1/+cq7bSLOND1gDT5KkXq9To6vX63EcF3IbSbZMoggfjVttk5GNxKDQYm0VDAYDpBsEge/7zWZzb2+P8sLLLQxDEnIwGOA5CAIKpFYWBEEURf1+n5ugVqu1tbWliGGahDDlwl4O8bjbiKJINhm920Dm7cqhVI+JJhR3BCnRFcSiRXET1u/3g+zWIBN6vR6vJIXYJG1saNImxEwpS8A+s5TL1kVOEwFmALj155TwwbzQ4swYwXpqgcaPZo/uyVRwcHAAPaT87u/v0/QUcApug0Yb2lI13ZyopaGMcAVwUVFHzYTFscybmZhbnimEGxrtL+DuNtI0bTabnufFcZwkSaPR4GUSZ4NLR5jchsm2RqLVy7lEk7VV/j5+/BjeAh3rVqu1tLTUarV838comYibzSbcZBiGh4eH2KWJ5hMEAekJHEmr1SIamse7du2aIrnW22ndhsya8kDDHUxLoPXJJmMcbfi+b1FTEPDmJA000Gq1kE8O+3Qw+hpabr1ez/O8gN2PTbP2UdZmrly5QiIh54eHh6aMuMPiq0x5n1FyLlGUguWlFIZhpVLZ3d1VkgAN1IWGKVQRrVarWq3yHgCqaW9vL8rcBmbz7t27597U7Xj69Cl3EpibwpS31uhb3MDICpMAcrQhwe0RhUgyapxKlXEzJ1nJLpelVUZF1Obw8JB3byM22nDsaZkQBAE0ASMGi+eI49j3fRjEMAw3Nzdz3YwFSfblIBebF7tiQOVsj3YiS2t2FTx+/BijbSoEuMB6vQ4nQawwwQsHs7GxUalUMO8yNzfn+3673SYOoFE4h2FI5pTnS2ZQ5k4+KPpGv2Q5fd9/8uSJbD45boPKDmL95//8n4Mg6HQ6S0tLlUplc3PzRz/6EUJWV1c3NzejKHrw4AH2Rezv7+/u7nqe941vfANbTfb393d2dtbX1x89erS3t9dut7HpYmdn5xvf+AaVV71er9VqYRg+evSo3+/3er3l5eWdnZ12u3379u2lpaWlpaV2hsXFRdrasb293Wg0vv3tb+/u7vb7/f39/Uql0m63P/roI4Rw5aZNDogutf/TTz/llFoMBgNsmehn6PV6nBv4EyvidnR0xPn0+33iQ7GiKOr1eqakJfr9Pm20QN0Tt/fff7/VanU6nW63u7e3t7a29r3vfQ9dmCtXrtRqtb29vcePH+/s7MzPz2ObkOd577///vb29sbGxrVr1zqdjpddit7tdmu1Wrvd3tnZ+Tf/5t8g6fn5eRiLP/7jPy7X7CX++3//777vHx0dPXv27Ojo6Ojo6Oc///nKysq0+OeCuw3TijHHpUuXOp3Oz372s3a7vby8jAIPguDy5cvKwA66jXJeWVmhwIhpZhRF3/rWtzqdDt4GQVCr1XZ2dkjHYrb9BrOF8/PzjUbj0aNHiE6qeHR0tLa2dvXqVYzF4zj+q7/6q2q1Cq9PKeJVt9tdWFjY2toaDAbY3AWVuHr16v7+Pikz9E3qYRAE//Sf/tNqtbqyskJuQ+6J+uUvf7m/v398fDwcDk9OTg4ODn7/93+/1Wptbm5ubW1tbW212+1/+Id/4Hv8THNW2PSYJImyk4qqiY/2aHuSsitJbl6Ksv1Xyh4khcNgMHj8+DGuvERfKoqier0+GAw2Njaq1eru7u7u7m4URajuIAh2dnb29vZQX5hDxkZBjLGo7Ydh+ODBg4sXL4Jmb2+v0+lcv36dy0MiUfXhAXuiYtGh0boNrnKYcPOyVdu/+Iu/SAu5DakQUTaAwgiUZo0w+xaxeSQArrXdbtOsJQBW5EKDIFheXqaVgHq9jpWVdruNkEqlQrHQMSF50FrAZG5uDsYRwzowCYJgc3OzUqnYhwumQGkalNIoxDOXIcf+/j4fz5nYkgVR+GMrC55h8TEhgMClpSVwoykp7LpD1wYdRvoiAV1CchuoWcSioQmNNj744INpWe1nz57xHmuSJEdHR4U22EwIOUllqUpSVMxHVyoVCl9cXFTirqysYIkOfTp0LXmjg55fu3aNWhba3fr6OpGhMTazb+Xq9XqlUvF9Hwt+6OqSDqBl0VoR2jit9vm+j409tL6IiHwPHudmAU1SKXWnQLspUYH2+0deQTw8jmOSULvfSTGjfHZRCSFKWd1ykTyKIkxSESVsF5U5yhm2GJNUrewTH5QSWTx0IPAWr3q9Hs1QUU3J4aBEodGGwifKZh18379//35ayG2ggBQR8QocgyDY2NhA5vk6D9fyVqu1t7cHY6RM5tA0uu/7uEgOngP8aSE3zJZb0SBRyuQqqKcGtxGGYa/Xg1cjkfb397kAyko1koBvp4WTMAz5MjKBeymAhKRlcPQjaKWdMgvYvRepSBiGV69eRSFTYLvdbmX7FJEEJUfl2Wq1ut1uvV6fm5uDmYC0pMQoluXlZcopUu92u7D7IENvkTZTtVotz/OU3mWr1bp69ap0G47tX7EFMvD58+dBEKRsBzbdLkVWQ2vuFftCvVQekROYBEiyb5gpy3KTEjcx1L/BnB6VreI2wuzkJQWK6fF9/9q1a6hBVDf6pNCKKBtTcjeAloghDtdnrmDQirfffhvTI1DLZrN5eHgYZ7MoIZsVoQc0Z+3QnAMNH5pjcRulAV3S1hf6i7x2Ip2JVLyCdBKKeeUESjiesQIBV01NBmUL6w8LA9lIMdByeQPnZQsOiEV8eLeboF3G0LqNaLyvY3IbqGt0aA4ODqbgNprNJr6aRni324XbpG4I5ICVQXlhCCYVMYoiKC4aG3V7+YRglHXi0C/e3d1FCSI5vnAShuHc3FwQBHAbvIjJbaDLXKlUdnZ2wmz+DoGXLl1CXxu1hX2lMvuoVxrK+L4Pu+n7Pjp6lUplbW2NOumQBAJApbzxreWEbrcLnuhoBEEAkcAKRrlSqdAmWhLj2rVr1KlBXHxsPDc3x00e2QiUs7LgFIbh1tYWJESz931/fX0dsTBGqVarsCy8Xvb396PMpszNzVWr1du3byfmLiHg0tNX6MlkcKNvYqWkIt2GQpyOfwzEXylrG/a9DHDV6Eth7EsFqJjvWq0mo2MIGGd7EKrV6ttvv803H87NzWEISFJFbEBA2rK1taXYwU6nAzFIgEajodVDKBJ1StAw0d4tow2eHOkP3Abg4g/og6dYfAKlINF9DhVFkWltI87b/6qE0F85/pCJRlF0eHiIGkGJUfGiKIJsTxTeVioV1Ob169e5265UKnw7D5oz9XTRlsMwxB4tLrzJbdhrSpZJxBwJrW0UdhsyyX6/jx3ZpHDb29vKoAni8j7Lzs4ObRhAAZFTpV4qFRMUl/Q7YsMI9JFBCfF838d2tCizYs1ms91u094DyMBHG1h94mdt4uGtt95CR2xubg7V8+abb5oaCew4qvPNN99ECBa1aOaBVKRSqVy/fp2miWBNlFX6OI6xEoMUEf29996D34WEcK7IFGXH9/333nsPNh3K1Gw2MZJAaYTZEBDTJmQR4DZovBVF0d7eHrlkJIEyoezwSgET1AJJODc3V6lUbty4oW3qdihWw9RQ5cSCC3I7yKEZaK6KHVHqjp5Rg/1+H1aAmChOAiEyLWVQUq/Xr1y50sw+goOOra2t0XCZi4QuC41aOAGvXAp87733qBsBeoTTnCSG7OiIQJHcJ6kuXLgwNzeHjotn+ChKCy/7Ksj0lhh6OnAbLc0oN/SmSrSoKAiUXjwC+cI1msbW1hYqghtSjBuo201DySjztXK0gS8cMP0IVVxdXVX66OXchuk5Hh9tFF4Sj0TL3Nraov4yymh9fR22ntxslI1IqHu7urqKkuJzpkCYjazR0miGhCcB40vND6YfIbSmF2VuAzM5NFhBQWMlChxQPTdv3uR2sF6vv/POO1Fm1qF5ly9fVqqHEqJxZbPZfPPNN6EoiBiG4fr6Ogw0NYAwmxyAbQ2ynXYcNEdEE9BwG1HWkaTRDwwECsf3/Rs3bqAMSWvRr4H/I5nDbFMdChBjlCD7HBcEfCxMtUBuA6MN3gaazSYW0MhtzM3NXbhwocoAyfm3hFX2VSMnW1hYqOqAYikHxL1w4QIeiFWlUpmfn1coIT9PDoH20QZ10MJsvBuxSSq88sV89MWLF5sC5F3ibPbpxo0b1LVEvW9vb4fjs4tR1tPCL4aJaPY0TToYDAL2cUAYhu+88w7pcJXt/qTRBgKx4gW3QU4xsgK6h6EnWkE9D7IoyqGqm6SK2Ko4/VXexuN9bW2XRQnhWcY8PGW21WrB5nB5aFBIi143b95EW6N1Kd6+/GzFizdMKn8ugCK2yedZVjI44vHRRhm3wfdjdLvd//gf/yP2Buzs7Ozs7HS73eXl5aWlpZ2dnf39/a2tLczEtdvtWq1Wr9cpYjWz43zbEvztysrK1atXf//3f7/X621tbYVh2Gg0FhYWwmyddmNjw/M87Cn6d//u32Gb1vr6+srKytra2oMHD7CLIMwWJHu9HqL3+30Q7+zswN+AYbvd/pf/8l/Spot+v7+4uPhv/+2/jaJoY2PjwoULsNrvvPMOmV2SGQ9bW1u1Wm19fT0Ign/2z/4ZfN7c3Fyn0+n3+6urq9Tk+v3+zs7O2tqa53ntdrvRaHzpS1/qdDp0jA9V/IMHDzqdzo0bN958882vfOUrm5ubmI4AE6jgo0ePDg8Pfd+fn58nP1qv15eWlubm5trtNs2hkdtA9N3dXWxs293dhVu9cuUKNqtsb2/v7u7i8KKNjQ1wjqKo3W5/85vfRHE1Go0gCBYWFv7rf/2vpBXLy8u/8Ru/8eDBgyhzbHNzc/Pz8//+3//7p0+fUtaeZqDnJ0+ePBV49uwZfgH+bMdxBgr5xS9+Qa/wAIs8GAyePXs2GAyOj48Hg8Evf/lLPL948eLFixdHR0ee521sbAwGgxcZjo+PaaKPtsCRAVL23vR6vQsXLmxsbHQ6nUajUa1WcTBqp9N56623+PlIYRhevnyZ1Im062c/+1mU7aPb399fWVn5V//qX8FSQAdWVlbee++9iO2463Q6qEdsVmw0GleuXPmzP/szPLz77rvYQ/jpp59iq0gYhtgZhX3qOEKqVqv1+33s7oPbQJvtdDp7e3u5bkMJoQ6Qn+3GtExM0ayj++m/n3/+OdHzWHG2nVcRSdn4RM+RgDxaik6gise3TvHaj6Lo+9///vz8/N7eHm193Nzc/MpXvrKwsLC9vd3r9XiK8/Pz169fb7fb6+vrtHCF2nn8+DFRoi/405/+9NatW77v41S0paWl3d1dnP1FvnAwvssLIbSTShknSdcY6TpDcBuLi4tlJqmkO1LW+m7evNlkRy8QGXoQpEbVbFIFIXimbnUURVevXqVX1M/F+rPPPhAhbQiy9UNauOZuQ5lKbrfb/vic21tvveWzD1N833/33XcjMdpAuqGYAqZ+RKvV+vKXv4zOAnVLu90uulq0wnH16lVMiPm+j7ksvrM2zFaJaG6hWq02m80bN2542WYwpIjsQ0jqXr399ts0G4bOzubmJkqjyja88WL3PA92Dc2MMoghBXo3ND6jMV81G22E2Qq8n30TE2bTaNVsSdxl9aIQ5MKDI3GSJLVajc4+oXC+mzNJkiiKfv3Xf93LPj1LshNY/WxDGh/F8wdqh7w7jwKMsnGDMnYPggCjvUiABi7VarXVat28eZOW8TDEvH79OkVE89zf3yebjoE4pr+r2WIsqVk1W2Djs5TKnDCNNkCGjddop5bRhjIcx0iOlsRTw3YDe/UlBU8cSJKE3IaUSgqs9L4jcwc8Mg878JYmqdB26tlOqiiz/mgpcTb/gzq9desWKgiDezRwYouGyaekgCtXrtDgVYqk5E7rGxQfo811NdtJVcxtkNIrBc3dBgbRTd03tHzqQ9lJhXD4FaLf2dmJoghjaq7HRA9gTSLMzrJutVo0jAiz2XwYRDJ2rVYLS8S8UHjbQ2ZhfDFUbDabQXYcm5wQiLJZOBjlhYWFZrPpZcvpGGTAoGM6MggCLK7ApsO4yw8yer0eH86HYYhxLswWBoz0bV0927rn+z4tvpEMYE6L5FHmbpvZdk/Sb0zFUB7JY8FXkbOhDPJBNNdUchue583IbZRGkiRf/vKX33jjjXq9nppXxcMw/NKXvqScrAW3wTtGvO0pboMWe9BMuA4rixbNZvPWrVtat8GLNIqiGzduwGTTLPnu7q7SB4IyUxODzSIXwmfPsdgAPb916xbC/ewMCYDcBnXbSc7q+E4qxTjQcxiGX/7ylz3zTioqW211FOofKLF8tulcgTSakc6vKCFy0ZhTUgi2XKOlUFeYOwA+3U1vsXuTGGKeUPEB1C3maXEBuA8zgeeFg68UKpiO26AW0sruUUEZVQ2rZPXs3EDYcT9bK4YBwgZBXgHIAPrjWBfBK0QJs/2stFeB/jazVd8wW+KmbjsXMhjftaZYbbQ3Wp5RIHNHUSLdUU48RNJTLIWhNhaPqMRSBOCBshu1s7NDzkDRVN7Swmwvv5TB0iABGm3cunXr/LgNDCN+7dd+7Y033qhWqyaTlCRJs9l844033njjjSY780rrNkydON7VpXEblIovicPEa7d3y2aMiVAa/EXZ5zVcw/GKu39sOIyiqMmWElGJ1AlAGwRnPgunDD6gXWhr3AlZALehjDYkaH5pWhWtjDakSeXhsdiiSm+V7HAm0bi3UHRAG5fTKwnJdipFknNKWuuvOAmTkAqNZZsAbT0oswFXKWssIXDVWV1d1RpW6Bk3o5FutkeRGPTcbNHcn0yCyiLKfLic1oyyFWw7ExmL4spfC5+Q7V3REtNb7iFMjsQipLamiRUZspCduaLQaP8qbF1EIibn1m20Wq0vfelLb7zxBqYftbLFcVytVuE2quyo3TRNyW1IM8SLq5V9Hhxl688YE8AuX7x4kSj5/K1SF3KKGVtO4O95WjT9GAQBNhNS9xAbMapsCzvJGbB9cTQmJn+D1JGcogMKpQLZ4uxuY4reQmGrTFLx7CtmNNdtcIscCasdjZtmJblYbPmT/CPhbLR23CJANK6KEkqKCnNZArwovNIbcGXacqDXz46Mt9STvYiV0rHQaAFPZolr9xaWJMDZZ+DTPi6gXPMBAeCLXYZra2uOgkXm8ox0hW+HyaO7gKeCYWK1Wr158+a5chvkD9544w3f97VWLAzDubk50CjzVNrRRjTejKPso25eIHzkgXN3omy+ImSnDWqrg/jgpADe/6DFJEqO9kE0sw21GxsbQfY9IOfGtzvS+D4IAp4RxexScqC0a0KYzQyXcxuTjD/kaCMat8hKi+CVKA2dtNFa8yp50ivpNmSNW0YbFihix4bRhsy4HG1ISnpb0m14nsdX/3GZF/ZaxGy9/tNPPx1kBygpuxcG2XFPOGlHAm8H7NQmCgHBp59+ygcrFEvhgEZINA8ePKBJeYTwY6Pogf9VfgfZ/VxhGOKqNezIwledcnqBknPvnpPklEESmwg+/fRTIlPkN5UGZ86B/U68JGkHFEXHKUm8ZLQVR2+jKDo8PKTDtTzPu3DhAraOlGj2s0CSJO12G0MNoFKpPH78WCF7/vx5rVZ74403/sk/+Scgu3jx4mAwGA6Hn3/+Oc3O8Y0ovMV+9tlnvHziOKYyIU2WIVqAjO/YoRCFkkKUBy1/3pCJTDkVDan32eZOxaJF7BAqJRXSHPzFjNnCwsLi4mJc8BTb0ldM8rUNsviKnGTK8eqzzz6j7PAOMbf4WstOD0pCnBuZSiJGclyGiCkV/yudAZeNbgmMdJ5AyZ1lGkrqAK937Jj3ff/jjz9Oi65tSL2h56L9U0d6xUPk9oW1iwQuKfL1gIiZflMsbuL5FJMplilEyz8ch0JGz1xIbRStkOH4Tir5YIGSO8sCDDbgnqtJqphNPRGwV4qT4ZsbhazZbOKtMtqIxHBesU3URC3VbVIVbrULITcVu7sqlJBscUpDCMMQmyMwY3E6ymBaEncpfwLPmsltcOTWFLf4FhrSKOkqIqFvkRgiaOfNJqnxMAwxJ+l5XrEzqWhjhrJKHIxfQIStTcH43UTTRcjOOcBG+IDdnuT4wFfUWzpsbGzQ7ixabKcQx6+NtKiLq+db2UFmRbG4uFg33Hjos4sLFxcX+cRa3XChIcHPbu7TEtCz7/u43U8L7ACG2zgFM+GCIAikP8DHVkQDWyPJPM+DveNLEbFhGbNEs+QPyl9JKf00h/sYN7LaL5mRQj4vYm4DG3DPg9sojdzRhkKmROdDFklvodFGkcMO/ioaHyjkIrdaS7qNKJt8rxq+0VUC6a/nefzjW4TjSG3+mS79VUI4OBkRE3N6JUMUJlrmLsCnxZVKBV8O8wfOk3JH4TykHMBH+baZc4Yk+EUJWPhUxBfRlgqtjNcsXAL9lR9y8/LHw3lwG2RE8LkyOQP8bbVaRBlFUbValWSVSiUMw+FwWGfnSBXAEAAAIABJREFUrUnINm8y/fSsHY7wQWHE/IQMkYMYl1hSJMvAUQtFVEVspWdZOd3RBh1uCB9PIvGuJ+3dt3RPXe7u7HQ6Ld1loKZA6qpSRKUXa+rIUndWG877uLw/aunjUs9YAY+CbxXq2Vkmnufh+pwct0HOI47jhw8fcqtBz564kpoTcEgDVBS5EV2YK7dkk/nD3wq7KpxLSw8wIlwYU4raTrojFCF5H58C+VXe/NeUqLLwzkP4uMFSgEqOeCyf3S7OcU4mqTBDRZ4eNQhfyxfGwzBEYLVa/fVf/3WqcRxKmKZpPTsA2GXQCRo6R4jGlHQEvTJwVAaCcgTJyYiY/9UOJWngyGsflB7bbcV1jFc0b+O8pdBbixFAUaMkT3+00cy+TNIeVFMZ70fy7qzSK1I6XkpgRfSk6bIZ2Wmr6nq0UjaFT1V04CaHLBNecVXR6UdJuo42aMxxfHxssn2KUVNUViFWQqrZTkHPYPtkiDR2JqPJG4BsTgolHlBAUgCy4zA9fnYqtaU0uJBSGJ6ubNh8jkiRUNvIeYFrc2qi97JjAyw0Fs4KMCHGOezu7pZr+VO5hBwYjUatbJdqFEX4cghDgXp2BgEo69lX03Ec4xSyOI6D7KqY4XAYBEE9O8yYj9v4ELBqGOxqWz4P5DRae8H5eJ5XzYZ3COQnaCk2jgwBf/bGuz5KuIwibY2X9W8UYtJ/iuVlo41p1akF/IRjDOZk/8YEMkeymXg6O4NGIZmbUvGZ7ZJstfAMzd9E7GWnceMv70nI1s0Fk5BN3mknFcdwOHz27NmTJ08ODg6ejONAhyiK6JlT8igYCP/1X/81HxfTqUTaeQC8PTg4ODo6+tu//VsEYg8AHXbEA+n2saMMeH769CkPQQew0+lgt+LNmzdXVlaI+Pj4GJvEomxTASL+3d/9HW6ao6OQ/sf/+B/Pnz8/FhhkRxvhLx4QMhgMfvnLX7548eL58+fPnz9/wcBDkiR5MQ75wS1/Rc//63/9r+fPn3MCHgUj+r//+78/OTnBVTl4+Pu//3uF5vPPP8fOFpBhZxEeABDz+3aGw+H/+3//j0JIjP/7f/8vHo6Oju7fv59kR3fwxv8Xf/EXKKsoiuw7ak5OTm7evPnixQv5ijo9yDj4oBNKDPEKV8IdHx8n2ekXcBuUQdCk2ZfMGxsbtXHAiFy+fJk3tlqt9tZbb4GAGjyFECU9Ex/f9y9fvszfgrliNUC5uLhYrVa/9KUvodOzmMEfX9nSWgQtGQmjxPra1762uLi4srLC+S8uLiqUCrfLly+vrKw0Gg1oQpqm8na/KQLM+SlVv/d7v9doNFZWViAGYUWAk7333ntr4/j2t7+Ns++Iz3e/+901ge985zv0fP36deUtDg37zne+s7W1df36dfzdMmN9fd30ant7mx7wvLu7+8Mf/nC7CHZ3d03h+/v7dzPs7u7evXv3xYsX0jVo3AZve68fyMDV2ekmcRzfvXu3Xq9z80q2D42WLB0Cpy6V9rkok9OfHaJp5TSTHHafT3ZXq1Vc1EjhWjk/+OADvPLYaCAdP85oMBigR+llS9aKd9Gq7ubmpu/7uXm5cuVKYPgeME1T9w1Ok2w4VCBXTSmkXq/TacpyF6YFSXZZBYo01p3/YaKPxR0YMi5HbpnPAknBw6xmDbKrrxxQg/luIx3PpMzwK5p/DmhVM/v4FqthuDJFmu8kSdCBOsNm4IjzJh7kiaKoWq0eHx9LgihbIgbo2D5a3IOdQgXBzXe7XfLlp+w2KFO5BMohicoz/RKrcqrVarXm5uYwMisa1w6XNm73Fmdutc9cgNcJTqMNPuDQDkFeA8+BHTLN7PqdJEnu3r3bzLbqc3vE3cZZSnyOobV63OlWq1XMVvFXaZpiCSHINnPfuHGjzo6tJAsO/vDxz58/D9mlaWEYdjodnu6EboNvsjrnILfBA7VaOiM7rri9s20gZy7AecCM5opc3YZp5DFdac4KaEW+79NoIwiCtbU1uA3eJUy/cBsOMLmNJEnC7LJY3HapkLVarXp2Km2SJPfu3cOADxH5aiq5jSRJMFdTye66aTQanK3JbXiel5uRM3EbpfWq1WpVxr9BSc+B9XRPfbqe7Jw3T4tBlzM6pZOYltvgHLSuwTjaUESZIs7c/aBptbJDhAA6ewd7aVKm1l+4DTtMpgpbYFutlud5g8Gg2WwqU0DYpEST8vv7+xgTxHGMzyZ4EnAbqBSsbSB8c3OTJzqJ2/jt3/7tV2u0Id3GhJiwbRZyWr86bkM7YTN10zrFocZILEzkuI1pJXxuMRwOcZRWo9HodDpHR0cbGxv1eh331vV6vSdPnjx//jw9xUkq2jVEDenVmplVdj29fPkySZJer7e6unp0dHRycrKwsIDdXNvb20tLS/fv3x8Ohy9fvmy1WrVaDbvXarXaz372s4WFhcePH6+srFy/fl1ZIYDbwOYuXDiI1fjvfve7ucV1+/btWq2Wm5F33nnnDN1G0UrvdDpwGy9fvlSOsfrTP/3Thw8fHh4e4ii5drv9P//n/8xleMoNn/ZWKRl/tZTfBVMxradcO1xgV7eheMXZiZWekZdKkgST4xh2eJ7X7XbxrRZ132jT1OzcBp8Q41uSXmkkScIHFihA2iyLPjLGc/hEjgp5MBhgIaSaXYxBFiSOY0wqdjodDDVQTXBFuSLhijoLAZRweXlZ6zbOZ0eKjzb4nCqVjzLdem5RQsLZZUo7+6JVAPtbO3PtXx6ojSgDXZKzvHWnPC9u42xxfHxcrVYxSdXKLmXD5kXSyNN0G3xR8fy3czswekiSBJqTJInnefwbC3gU7ErAjltMZ7148QLLvPAlcXaULJZAfN9vtVrPnz/H1BaV2FTcBrC8vEzbIjjOZxMwrW00m01sCWtl99aQRs0oI3xXeiHtNUUxTXZx76gQ8L+Tt6BTqHGT15mi27CT2aNLj5DvNuzivga4f/8+HQWDnbjygwyapILNmpE1RzsP2fnw+DuLtE4Hsj0rboPC4a2D7CJlfIuAr9vgxZ8+fRpmtwKjdl68eIFYYBLHscsRWK+l2wiCAG6Dj8lwgtYHH3yAAgyCAJ8EU/lPvUUnOlgmmrT0eEVt0B2miO7fV5l4zhoWt2EiloGOCcnnQmrg5DZyxXWX+BxiNBolSYJdm0mSULuiI8Ngtbnmcbcx9YnXJEk8zwuyu2XC7GrbU1PfU4DWbRwfH9MMFc50293dpWlDfPz85MmTdHx/Jz4bxBgR+xc++OCDNE8h3d3GKzRJhdO0aJIqDENS3R//+Mc0yIjjuNls3rlzZyqJlrDplripYdygvC2Roumicg6lLZvELgdHQ+FodWfhNlzi8tRfAbdRuoxcEEURvj6jdhWGIRbGfd/Hxxwp68LMerQBP0EfUfOJ6dcAyCB2GXDgthmiCcNwf3+f/mIxA8eoUWAQBA8fPsRfDMtw6Euapx7f//73X7/RBrmN4XCIb1nom+07d+7wj8DTKc18FjXi5cA/QVe+SOeZcvxM/ZRB8vATdygvskhNow2T57APF3Jt9Sm5jdcPfNvPkAGnLXGQ28AJPMn4oUzEAUcblZZkOBzCbdC1egsLC+gz0kk7RExpDQW0nOWrVGx8UjKilInCh2eWPyTjQzHOfzgc8m/9iNXnn3+u5E6pF6oFojk5OaFnUNKpU/ai7nQ6CwsLdpr0lXUbVCndbtf3/V6v9+d//uc4Qm1vb29xcZEbrOfPn1+7dq3RaKyurm5ubrbb7c3Nzc3NzdXV1e9973t4oBAc5bu6ukrHbjcajd/93d/FA+F3f/d3G+NQToJSaOjt6uoqUkHge++9x0+O4jREpsXm5qZyDBTOpGo0GvL8KOUgKTruiR8qtb6+jt/vfve7eHs9A73C6VJ0ihTH1tbW+++/T6dLgfhrX/taIpy3o9tw7Lu723ATmdYROLmN6bqQM2lysDiWt0PdSoapB4FDUhVfwiMq6XKCRHxGSwVCr/ClNF1agLl76rZwyYfT222lNbVKijI7MpCXW9Hk0vFFTq0zM6Wu5WxStk6nU61WLeIBJrdxPsEnqSiEzlyhEGWgHEURhrMDcW216VAseScHIcxuPjdFj8SpXEUP6YrF3UTylT06J1O40VtLFrSvYnF3Uzx+UZJy414cx+vr61RcVB0ubkMaZDnyMIWXtuTa5M7GbZjc4xSTA0wmLCk1YYpFWh5SaGisjKZJGKhXmN1d2Ol0+DUyvu/fvXuXW9UkSeSYfbrIbYTTQuiMYPxySRMNFodM+qC4DZOy/c7v/E45t3EmfSO4DeyegABwEnEckyvFhgLpNsh+cbtGtWNSBpQ2XTBMgZKSDnOMxb1V9Fde3qxwjnRXNWu5ubsiRdvlgwJ+bV8s3I+MFTO3obB67733cChqEARUHVqTmFrdhrSZllelofUIZ+M2TMKV5pwbPYoiebuOvFFVC7ohB3cbUCD242qvx5HAejuOXo/G7RppGFYyt7e3lVvkaG6H1u0dQTci5FJWdTfwKIG++boCSW8h5q8sslk4eOYLQrCEbhr0OI42SriNWXR6HCHdBh3VRVc1Y3O5drRBNo7bXGkZe72e1v5K426Cu9uQMpiYlCCIxNnAkXAbMuk4jlGMFMLPJLb0tzhnhNy4cQOqK7ddyL618muCEl0+KKmYwk2Brm5DymTnXojg9IFVU/tdbDLQfrEi3hKZvK8Rtz8qNzviMxEpYRRFlUolCAKcyARtC9lBfsgFOinKxZb8Qel6h+OXX1LEcPymTPmXg8fiiKzDBcWIKBGj8U4rJ6MtyNF4BzNincp+vy87sHEc45tN0ygTbsP0llB6tHEm4G6DQjC2GGb7iKIoUoxUlLkNxeRBx+r1ulIp9EkTRYHdVCpIIhwfH1DlSrdB4GMUqm6pSzT/oyiVRQaeBZmchXgwGGCOmgLlMfWR7spxJcU4jm/cuIFOD6+RkW5swetL9ubt4LFK2HApmDbpMbehUCgSuLiNc+U5kiTB2CIW0FawVrcU2DtWWj7QfqhLlG2RooaNHmIcx3fu3MEXbfRBCU2p4Xs3bVfIkrrSopS8my5ysDMMx3umaFeyi8oJTDLL5EwCUBSekWi880gd7VarJTf7crdhUeZXzm3Mzc1xt4GiwLOpJUZRhIksDvgM9CGUimu32zxE2taQ3SWuhHAy05SUFtp+hsVLUWfCJGRkUHiuWtxBRuxIf3rmfAAKlDpJZNJtKJNUFntbFDK6Uvvu9tnCc+R4Aq5JCJ5AanUbllfuKMEBboM6CFKJLVpLNLQ7tjTCMKS7J9Ghg3hYOMEnWnfv3iV9UpY06Dt2Rexc/xflzQCgsbnnDgJo03UxB6a4JaB4wSAI5ubmMAnw7NkzRQ3k2oZWlyxuY3LttYDLk9vcCNJtKDy14ZFutIFmIitOGR/IcYPSUpRwJURhLpMjU0vDX/rLGUr+WBeMxrU9zFYNEdjr9ThDbEIhYqwm0vCadIz7P0V1iT+9orSCINjb24vG3QncBrqGStWbFMDRLJteFVInU+rawJy1DfmQm5iLcKcG7BRUurH4ywMVgm63Oz8/T4q4sLCwsrKysbGxvLwMVQN9v9/f29vb2dnZ3d3V2kpi2+/3cQv0wsJCrVaLoujly5dHR0edTufg4CBJkqOjo/X19Uajsb29fefOnQ8++IC+2ILbWFxclPxzMRgMSDDFdx4dHaGPBvH6/f6jR4+UXNBfNJ69vb3vfe97VAhRFMXZ+R+mXPNnZZb80aNHSsTPPvsMh/EpMtCsSL1e/8M//EOcVYyEcHIfnN/c3BwWdaTb2Nvbm5+fz9UWbC2djSbaUK7hhGF44cIFk9swbV3DDm+U9snJyWAw2NjYQC+42Wz2ej2UahzHvV5vbW2t0Wjw6tjc3Pza177W7XajKFpZWVlYWFhbWwuCYHFxsdvtQpHa7fY3vvGNMAzb7bbneUtLS41G4/33319aWlpeXu71etAfUgCq8UePHmHjL+1wvXnzZr/fx+7YWq3W7XZ7vd5bb721tra2t7eHtFZWVn7wgx9cv359ZWWlVquBeavVWltbu3Xr1u7uLrbzPnjwAASrq6u4S/X69ev7+/toI9evX69Wq9///ve3traQO+AnP/nJ1tYWWh/ZDZykubu7i2tTV1dXP/roIxRXtVrFKwjGi46WxKXbSN3WgEd5roXz4X/LGefCbkObnj1tU8bsxJLGXjSFsp2y0UZk3vygIGS3AEXZ93c44rDZbO7s7BAlmHe73Wq1CgJTtx1uo1KpYAE5iiLMO8fZEVi054pkCMOQ7gDHaEM7FyTnduUAWQtlhB5Z55rJg/Z6PSzScP6mSSoe0u12+by5VjDLBDEQBMH6+no0PjlAr2i08fTpU0UNcFhsrrbcvHlzErdRQj8niRhmaxvajQC0kU8JDLPvSfloA7OgkWgjYRhubm4qtbC3t+d5HnaI0LwWzicmPSFnQ20nyhw/Ymnrd39/n67AwTzt0tISdf8xIPA8b2tri0K87JsnkGF3SRRFS0tLfL7X87z9/X00WEqu1+vRooWcpOLgsTglldL29jbJg1f9fp920uNXug2tZdMaUklvMo/uBGmesbXwdJ2ksqu4nYkWuWRaiU3cTMCqtZzWNCEIAuhWpVK5ePEiTrCoVquYR1LUDkoAl8DDtfaX3AYUy/KZCG/wyiQV1100CfJtFEJDeDRjhHS73WazSUeYRFGEECzpI2Rvb4+iIL98mo52BHC3ocXDhw9hHSAein13d5fvTSCx6ZjCer2Oq5wA2IhGo0F5jDK3gViQXHEb5JUVNVDchkmXJnEb5fSTRy8aJYqiSqXisp2P7+tDEYXjq0Q0ScXWO/5/g7i6usq1DvA8r1KpkObARHJVpI42rCRxoEUU3rkhYHRC55JBAbg+Y0/j7u4uVTryQm6D/FatVsP1nbTUTwpPOnN4eEhFYXcb/BXWKRWCtbW1KHNsYHh4eKi4DeykMk1SpTpbp9g9C7HJ9trfSjEcmbje7idTsii9hTL3rYXMMSIHrJLiNkw9YtJFnC1KthKbO8ki81aESUxqQqZuO3wP+ECZFMdgB1Q/yobJUHE0MM/zMPkDVweya9eukY3mayq4NAm5aDQaMO7gE0XRzs4OOFDTRdcefShwq9VqdK0eIBv/4uIiuVgY8ShzG9SSgyAYDAZBECAED9euXYuybVEYwK2urpJ48BZbW1t4i24pL+G5uTk4Zsz78b72hx9+6Og26vV6UR07K6CgUJ5UsKadgZySb8AFqHelrBhFUQS3wQO3trZQKXQvbzTuHsIwXFxchJpB8cIwxNQiZIjGx+VkuHd2diAbhdA8KpQQqUDJyYFxt0TOA2KHDFF2Gg2FoH9DcX3fJ0NBbhWvaHyGv1z30MXBaINGctH4aAOwuI00zyVw4klAfLgAil6ZvACHzW2YYk6o7vYsFSWzg7uNSDgM0/ij2WzOzc1heA5VQCciDMONjQ0lOm7A1vIhFTw8PEQHDXbN933+/YcC6hvWajX6yoH3d8iHReP9QQzGsRBCzRJmAp6MT771+3105NEg0URhrJHTVqt148YNcKCx/87ODjpoigcloKdJslGT7vV61BGL2N5K3pekLiq5YdwJSIYmCIKlpSXq2HJbBreBAUev11P87ocffsh3Upm05dTcxuSNqDSi8e82YPXgTrgbpqpZXV2FknDzHWanSaIj0uv1iAN6AJcuXUJdU78EPXGuA7x3RWrAx6lgRYnSyGB5eRk00Hnf99vtNnVBQLO1tYXuCOXu4cOHaCAgQ0TKF5pVu91WJhXa7Tb6XnyUjLxASHTpDg8PIQD4x3FMIyfKLyap0APjmqA1sCaj52ifLWSpg6vI5VbMbfCER1aXZUchEU1kLgnRpK205pZFDph4mGD0UNC9rdfrMG3cYiKEBvVaS4qBLewaeQ6C9stB/mkhnwSjvjb1MWu1GnWO8Bbddmq3tEkGzRJNa2lpib6hI0/gZYcqAtevX6dApK6sbUS6odXKygqNb6hZPn78mJsMygv/cO/KlSsIVzwT/QZBgEVvekX1CLfxxhtvwHPwbwN93//KV77ijR9lqNWfXxG34bOpeagEVQGf94NBJP1EIDf9MJT1eh2zRmgpMIuNRgM64/s+jVPJhspmwvsTlK7v+1hKRCsml9But/lfdDiUvlSYzX/ScDbKxjpIol6v7+3t8RkICuebozqdDi2Q8H1TxJ/EgJxB9m1gt9ulZ+pfytFGqpuJSg1uw8U2WqyoTEuRwSSVZFXAbfBcTQ6Fv52gdKI02sAAnIYdltWOzc3NK1euzM/P/+hHP+r1er1eDxP6m5ubb7/99ne+8x1OfHh4+KMf/cj+xQO5jWq1ip1U/X4fvWB52qBybiDIsNcF3GC4Nzc3d3Z2ut0uDhuPoqjf7+/s7CwtLd24cePb3/42JA/DsNFo+L7/6aefRtnAGS3hm9/8JmaEsf0D22DoIQzDbrf7zW9+MwxD9MKQ+u7uLmiUlo8tNMjs+++/jw1mOzs7tVqt0+lgG5Xv++Rjut3uo0ePiDOEv3LlCghqtdrOzg42d3W7Xdqi0+l03n///d3d3cXFRRDQzqswm6S6cOHCt771rR8z3Lt370/+5E/kOrnE+++/v7i4WE7TzgruTQOUcRxjL180vnuCtwuuutCcKNuVF4bho0ePaLCIQNoThWoKs6nara2tWq22srKytbUVBAFtgdvY2JAHIG5sbECvwJnvtuJLF5RcyL4OQbp8256yT28wGNy9exeuCAc1grnctkdKRcZB2d2nbB2k7XxKASKcd6p+53d+x/O8hYWF1dVVWS8js2/glNK4y1hSK3JN6EzchgWOKmsS1MJkKgm5T1KBBqNOTOZgzYC64bh1jndn0P/lnV+ZRJT1pDCCoemm3ENblVzwHiI66TTawKQQ1jYwKLlx4wYlhB73yspKPTsWPspm3jCm9rKjPtrtNsZYGNpjlgxZQ3tDnxGcTR3GMAwXFhZoto0P9SgEImGWjPqV1FGNssUbTOWhi0qL5Nvb2zSoghjcbWAB6eDggIpObjGyYHNz0/f9Auo1M7grvNZMWCjjOPayM6kklCG4iSwaHx9o6cNxyCkpuY6tgAcqcZVXyudEChOAf5OIX9nbI8fmDsukhYL33nsPDY2PaKWJ04akBtNPgSODfbfE1fLRyiB55rsNyd301qKsJkEtTIomJJGI76t5D8K0MA7dqlarpOhY/atUKs1mc39/n08B014OhYkETXyVcBs0ycuX7Mht0AFEQBRFvV6PnjEw73Q6zfGdVHt7e/Vs0yRG08SHCgEb2JE7DNJ5WkrjpNVRTDTzHVDUVvnnV7TcQnMLYM5rgX/GFY47Zvor3UZkPtNQUTAl5NTcRq4+SwJTQ8i1C7zxp5nboGKUTcM+fxvqDvzgvwDZX6omxWpLDyETioTf4pojmUjvwgP74ugaKY/yJaPCTRuRmEvOCt599130dUxuQ2tdlQeLApj0xMWE2qNIwYq5jdRB4yekl9nIzbMJ0m1o2wnAt5GEYYjRRphtBaH1ruvXrysbeHI/OI+yTXs05x6VchuWTk0sjmmi1NG7p1kmKZvlWbZJarG+4cDBUPQrqXi1qWutBuXU1IwpesyOSCrqNiTOz2ijHFwMBNxGKzs5jXZbaXdh1et12nHHgVe+2NChrM954sRJvuCkDSQmil6Z9A2o1Wp2AswPK3wQImnoLzjTXwUUCFZagkoG9DshgFwSdzHCdoPsbsALKZKJeYGjDE8TigAl5KEvHvgklTRPWlsMt4H7/vjEVD3bw6rlxu2sYunCbKs72dZCGcGslDYhrbcgGpoFWlpaigx9N2JCYwvZtzI9Syhsw/FOmfZB6xIs+aJaU5hoJ6kKYXNz03O4BPDVgtKcqVEoprDiBklZrVbn5+eVtwghzpyGyGQI/6uF9m2lUoHV1joAsuCKh5BuQxJoQY7EQuaPH/ZMydG+A1k7dnDiNG9JY1pmvIzbKJ3YVKAtiKJM+BcPiv1SRqyR2A6IyZ9AnEa1ubnJA0PdOW5aC17abaRpSp8RKf5PLtUoE9MERUi7qNLc81JSMquds450pt/kCbTJSRqZa0U8/t1GUVUBTKONM28OdtjFk7YGWFtbU7r86LObAr1siMDtpp9t+aO/nFIORLgxVfjwB/rLaSym2cs2qXPQKpoybuAROaWStCwKEkkOmBRKyY3zhNswWWS721DqVKnlKZpxzsHVbZRO7LwB/fQf/vCHW1tb29vbOEZme3sbh89sMyAEgbdu3bp16xZd8Uh/t7a2vvOd76xbcePGjW9961t4uMZQZWdS9fv9Qrnodrue54HnjRs31tfXOedvfetbSEtJESEIXFlZeTcDvb169SqFvPvuu/V6/erVqxR+7dq13/qt31peXl5eXr569Speff3rX3/33XcvX7787rvvggyvwAfPX//616+OAzyvXbvGuX39618nMfDwzjvv0FuKpeCdd96hZxC/8847165de/vtty9cuLCwsLCwsPA3f/M35bRlc3OzVqvJ8NepRRD+/M//HAegbW9v3717986dO3/wB39w9+5dPONXC8SSzwCPyLn99Kc/pVd4+KM/+iMiuH///p07d4gGfylEi4ODA3oG/cHBwcHBAfYQfvTRRwcHB/fv38fbg4ODjz/++IDh/v37H3/88f379588efL06VME/pf/8l+iKOJk1C+hkEePHtGrp0+f4pfj4OAA4RQR4X/913/97NmzZ8+eHR8fowq0JtfuLeSDybKnk+mtIoCT2zirdqIU3+QMcQhPu92usrM9tHOUdLURjYUvXLiAB3RjtaNj7YB6fn6e0yghGG0UWttIszudlpaWuMxVw7wqhsNKTr3xATuN63mIN37zkhzpozTo9CeFA5UkT0jS8F6b7Nzp+5a62W3qDivhRUcbpGmv+tqGFtIqTZE57SNPxs9slmfk8LeSMh2/qtl+gAIwaGq/AAAgAElEQVQlZ0mCE0wxvxPCYogdX2lpUjZ24ZTSu1hEkuEjg0OyuY2i6lVOHaVOy5yXEEbBixcv+NDV043HFevj+z6ZUZr9kLaMG0fF/nJwi+yJa/5cSgkN4Pr162Q9tfIANI7mUvEBu2J5ue1W6BVrTqXh6Qb7PKInhuqmUT8nlsN8RQb+YPpM8ujoqJyevN5rG7xBzTRFxR9YyFKDZacQfpm8dBuvHCy2OM0c59QTtXh0S3KKKc53GzKOws6UzOQ5lAwncRvEIUkSvmmEn9JD4bi2TwnH4uHc3BxmJBUCeuDfkWKPivJlKT3Qh6OO+qFkHOc4YTGAdsFiDSbQXc8nw3l0Sc8hFw/C7AASTxzlxoldrnuKxEpMnN34xCFDOJIkieOY7ldPsmvbS7e9H/zgB+fTbdj1P7erJ7tiFj6TSVoAdFOZi3d5PUDuQft2Fh6RF6/L8ana1PPdRiostdZtTGLNFVYyCa3Qk6ei9br8lRJycnKSJEkYhpVKJQgCZfBL/HMrI2UtZPJccCjyuyDRje6VrofkRsQnJydVdmu3wqGEPAr/s4XJbZymMbXA7hhc3locTC7BWeE8KMaEyG1fLrEmSdoE7rm1bdDUMJ3cxoh1UmbkNiyszkqPUWRRdte3yQEoE7KSwznUe61IUq2TcUebZm6jXq8r+eIuJD03bqAozu1oIxeWNqL1GZL43LqNUwDPrPJcukBG2cQyNQRpo01IDV0xR3uSiK6h8tYdqeG+r/y1DZeQcnCJfobqmyTJcDiMomh+fj5g1//+6oA0hi9Cep4Ht3GmoqmYip7AbZiyppwe5gLlzDHT4WOvFuioNAL1nPhDOt6jevnyJf7yI9eGDpBW7PPPP3e0evZCVsIhpD3vSZJ8/vnnuUU0HA5l7tLxnpm2AJE1RWYlL5yGF2kyvqfAosb0TPmVRaToqvK2wF3iqfP4YEY4ExcSx3G1Wi3kNix19qpjOBx644fqnCGkok7IsNPpWNzGF3CHbAJDtrjNaRLWNZZ23OQMlLdyxG+pRCmGe44UoyxDeF7wgFU3/mD6awGt/xVFxE6R0b6yRwzD8PDwUJaGfkk8NX+NQm8VytJwb/CSzBRRcXLuDDmgnV+4DY4kSbCL6TxkUHZlJmS4v7/vjV+Yam9UpleykStnoCmUpo0DcktCOQRBgPO+7HslLGiZob0Vim8w0ZKZDjKRgfw4k0kgN905Qu48lLsHtbsZTa8sUD53B/jH8xQoPwbgW+d5LMt3/vzzfs6Ek129elW2FOPnfiZXoSWT7bmQM3AkNtGYzPSE5ru02xi+shsEc5EkCVrLechgObdh0bcPP/yQf6OTe9AFHuggDaVlatunqSWbknCRRIJ/J2TirKUxCcYDc5m7CGCCu4XNpS/hIZR9+Vq2cEL0cObQ+nJTeC5kF+HSpUuysbvet5EKt1G+uevasCVdopTRkyThZ7KiU4NjU8MwRLZLG7gv3IbEcDg8J26Dd1woxELswvPZs2fKFu1C7U3pmNv77+5w2S0t4TKCoaGP6a99vFV65sQF6PPx3dXa+Rw5d6RMIqW6jUwmShdoW/dwfKeMpSNrYptkKzeKbDJEEdsd2kSVVwrnOI4vXbokI7ret5EatlRNjlw/ZE+IshfHcbPZrFarjx8/thdWIcTF3UZ6LuepplJfcBv1mS2JO/ZICvVgptvRec0gW/evMqRLGIrvDXPXUUxNQ67caMmScd9TdNOExUPIZ4tIeI7juFarSYZOX4krzyZ3kpayTbn6mstzOBweHR1tbW3dunXL87yf/OQnDx8+vH///rNnzya3bthyWsJtnLdNMlN0G4uLi7NzG45kJg00EbvLcN4qbuqwNOdfZc9RYk+XdqfWFPUnsW7uooQ4jWnnWG7uZE4R69KlS8V2Umkbp0tgITimrkThxdHKLtVIksT3fXiLKLtOzmLgXKQtN9o4Q4wMY8GpWITzM0mV6uaptDScQEv5SthKpS04tpRUuFhL3Akb8nnGVPI4xTkM9xTtW2NnmjQeprm2keZttXJHUfXlgUmS7O/vh2FI1el5Hh0wmSQJfaaXm7oMJyavltvgGI33KydneH7chqPOuOhnOb09HVjyJcnsEe0E2vI5t8Vy+iAL42i1p2LctclN2PQSM7Q0k7oNwEQwMrdVUwb4W8fUlYTibGtjEARYpvN9H/c92BfD3dvDKzrasD+XxnA4zB3DnQ4KKQxXs1OXdDpQ2pr2b2p1BpbCMRWgjPLqFiDAS8M91umPMyhd7eTY7JJT0kqS5OLFi+XdhvyburkHl+pxSdGCKIo8zwuzG62j7IrvOI7zi8osD57hNuCEztxWumA0Y7eBjYmmonglikiLmUo+laYum4Z8pYTIBsUJJJm9AU5Fhc4W5bLg4jPIzpaUzMBTWZOfPAnLaENxGEBJtwG63OKeokrJBmCnh9vgeaaQScTgG3Bn5zZm1BQl26IJaenJbZhcsr2Bcb0fsgNLXOSZtdtWmLunJfuDucwnhGN3iohTnV9RWGlb/euKXAcglcHFc7gwL4REN9ooxF9GkY5B+gxOVsxtTJbfaSJXmH6/v7CwcHx8fHx8/OLFi1/+8pe9Xu8M3QYO7XFhroQoKCe2CS516tJRqNfrnufdvXv3k08++eSTT/7bf/tv9+/fxwVqT548+eSTT/D3E4EnGZS39+7d09ID98fBXz148ODBgwd/9md/du/evXv37j3IEIbhPYEfZ/i5DvT2ww8/vH379o9//OPbt29/+OGHQRD8mOHDDz/88Y9/TNxu377NiQH+jL+3b9/e29uzqEQJjy4bqb3ZujiPVDfCeM0wHD81ywSL53A5t0omqiVzYTUcP91rOBy6HIolxVZyPTR8DiI7c64bcOldCe08E2BswT9ZCoLAm9JRpnAbzWbTRdsIJTyWS6d1EkzLbQRB4OvuSdZ+mlvPDnWgj1r5X06WCxMZnUiBv5bjK1qGIy7wdR7uXFGYKIdkKF/zgabT6eR+3Dd5J0ZWExl6WXdKuHvc195tOILa4FB8JOgS15G/izEZ6s7NdRQ+95kz1L5N01SrurYzqbTacw5VCkvi3EkmSRIVvEHPwpyPNiz74bTeW6kVU8XnhiuVqtC4sCrRpTW9sgtgElsJl2xzO4BOchcHL1js26ZFMlnmQ/ZFWBiGvu/jXha7eG+//ba7/I4O3h6obdH8VSrauKn7+JqBV6UMpL8Jcxvctpi+ipiFfibi3MZcehcyhdhirNKibsME2amxRymhf9NV2Qm5Jdnhfblnscnz16YFpVcu++/82fO8Wq0mt36Zup8zKrdXEcPhMAzDSqVCA9aTkxNJk2THl4ZhyBfVLM317bffdt+gUdrBa90G/2siU6L8irgNS31Jt2GvYhe3Mcm080zdBv/L84tw7bTNFNxGLr1LHiaMMjs+SZI0m0062kxeQu4CxfrjQ2tHn6F1S/wvPzcUUSCkUg68g3lqpactz1mwnQTwAWmaJtlljmEYxnHs+36v1yMabNXb29vDlBSGJv74RYcmTH20oaU3uQ27CzG5jdfMc/BZAeVBQjvasDOXNEpJmtyGtgqkqEXdRq4n07oN/hYPMxlt5GJy5SvneKar9IkOeGVaXLJDGfxyni7KYX9779497jYArXGx4DWzGhbA3QZB0Ol0ms1mpVJpNptYutjY2FDq6NatW0mSRNltBJ7n4YJ3+2BiuqMNk3qb+gdat6F4FC0cBX4lUM5t5FJaaJTClG4jt/BNNt0udsIcnguxtGk8xbNxG5PDlNx5VusZzXW6gNzGJAKc57KdOjB6Qzs5OTmp1WqdTidJksFg8Jd/+ZcKcavVGg6Hg8FgMBi02+1arfZ3f/d3tVqt2+1akijkNuywt1PFPcgoo3Gn8iviNpLxTURp2RZadKKJF6ayb8pe8lT+ctbIIhvvkkpRSQAi411e/FWOt4rj+K233sp3G7mlYCeYBQq5jfOj6zNyG7kZNLkNHvH8lNJ5AOYPW63WyspKGIYYfCRJ0mw2P/jgA06ZJMnNmzeppWH/1cnJCb42Tc0FW9RtyMYoTb/2rbYVK3FNf7Vm6zUAN6ZKuBIyiw+w3UvbUv4ubkMZMZg27ygjEoUt34ALTGFtY2TQ2jPB66TZjuBZtuT9k08+OQ/nf7wqwGgjjuPbt2/TEQPY1f306VMiQyu6c+cOFSymttC0sHPPVCmTjzZyq142Yf7ALZf2ld1svepwdxumVsN75S4ti5JTCn9U0H9YpDUJqQigiDQrtyE1bKYqxVkVYnt+lPv0DbQ971+4DXetSJIE1j9N0w8//BAnm1Wr1Xq9TrO6CZtiXltbw71J8CtYTs89ySbXbYzG7biWYGR2G9q3CpnSnJW4M23jZw5tb72Q2ygHe2Fq3yqBUxwAmb46NAEEtVpNxtJMUslsmLI0FUj+7hFfM+WWKJdBuI1ZyPPKwWVoX6/XcYjy97//fTSYer1eqVRardbJyQmGEUmS4L7IpaUlOvcMc1mYpLJ7hbfeemvWbkN5tvDRMnxdfQbvOyuvpJNwmQuyp6VwUOpCWlotn1OuAsVVlHEbPD+K9IW0yj3bk7uN10bFJcrl7v79++6jjde49FyAjbbYFrW8vJwkSRzH9XodRwM8f/4cA5FWq4X1j+fPnyfsq8A0TV+8eJHrNtxHG6a/ua3P8tYUMhIu5PVrU9IUavvUqbCeChOCy0RWOt61V4qXAi1in35FJGxIXcZt2HV08sxIPyHVtxCTU4D9qCgeiN0ItJlB7k+g8NmJeu/evYWFheT83TBIsBzJlbK9LjOVAUeHtdvtnZ2dJEmeP3/+wx/+cHd3t91uHxwcPHv27Pbt23AVEOzk5GQ4HP6f//N/9vf3t7a2cGJ/t9ttNptLS0vSWBCSJIHbUPTErlTnFi7S5p62BJqhAUpyCpJs2w+9tV+Bx2kkKztk6rlHQuWKRGSWt9zT2PlMF2gU3HMUW9uQbsP0ysXHmLjRsxIlNXSRZIrTKKvXDZ988olyJPCriFOQHIMMSmgwGCgd0ufPn/NTapIkAQ2Xrdvt5op69epV+5nBk+ZknNtQd76ZYhDtYmhtaBzHcRzjMJU4gySYLuigOQoZDAaRG0KGbrcbTg8KcyAIAnrodDrKWwiQW+nSuk5LN1wgNWfKbkPyMuXQxNPkNhy5ad9q1X1yyBZCODk54VqubTwWbqYo7kC3l2N7e5uf7ShbYBRFFCu34WlbCDUey9tCkMf/tVqtbrdrPyJQC86tZQY+7lNOM5THHSrf6stv8jmB9iP/er0+Pz9vOorR8SRHAs4X4MdELi4ulji5wGfnUWpfAbVaDQ/VarVarfIQRyAWf+CvJJRwyXBhYcH0ysJ/fn7ewtORT6VScSHWhi8sLHjMBCd5nweefs840XU4vKJuIxVjAm7uR7qhhsykpSBMHHIdhpYmDEO0q0ajobQ0GVKugVlaV1FAh0jJFIV2aU6yafEWUqlUTMSFYJGHo1Kp5KbI25ULtDyp3MqhdJVZdEOeN2PSMa2f4K8scD8SzQTuMvlf+VZxrq1WC7VGZCV8OXfqswDv5WhHG5yMgzpPk3TdJGRfcHd31zOcYGY3wqeJWbmNSVCITy6xkhMcC1FnJ2lTBxAh9azrJ2nKtT0XoKmg7fH21ul0qDtsal32vralCfX7/RIND5fpatuVfURiimVHLnEYhlgSMDVLPnpTnrVkEyJ1HstCIYsyPxNYGhong287QzknhEvJa+vCkSw1mEpOEGU7tlM2SeVoBk8Ncr1nUrcB5OYztwimRazkBH2iOJtBNrXGs22lrzGmXqpRFF29evWLyiJo1X7q/LXtq16ve9lHKrMTYLoo5LbJLJj+pmaHketFgKdPn/IydHEbMysbI6bgNrTSlyDWyqeNNRr3FtooSiDtWIDbeIXU+gvYMRgM/vW//tdnLcV5B28RI4dFVKW5aRugbMv1el17y9s5B9k+7IBS9l/Rpqw029dEm7smSdRkDyP2fSiSyLWf0wLPlHbfGpUGSokc23A49HVfgDm5Da6OWsueG1dCS6N9sHAbsXMlXw+3ITOYS++obTPSyKmD5Izj+O2337aQKZrpwpPHtYfMDuUSki0i1dW+bLOm5mNqqlrxsAbzajUuPgiQAwLT0CEXLk5FW+B8kkqSzU4DC423huJkbm29F3MbPG9KuLYULGVh4S9TMXEbmd2GnZUUw70aSkQpwVyWSS69Bam5Iym5zSJfJWB3G2kRb6GtcXvZzq6Wy/EcWdtaqhN4ZG1ElkApZ7PZfOX6ZNpJJ0lQFLluQ5YqEjpDt5HqdkmdhtswKZksMuWvqSzkqxIlOLKONhz5FK2wmdZxavYE7tEln5TZnbSs5TodkGwubsNdT2REe9nOropLKJs2UBFe5mUkHICiD+6a9nq4DUX+opNRLtm3FCbcRpIkphZq4mCvmlyZi442EjZES9O0/CSVtlzS8+E26LnValWr1VdLs+0orSuST5pXWZOnMi2M8twGVz8XsU3qOklrPDVoxdO2UG2DUugtHOyl8eq6jdQ64CjH0AR7YVrcRi4TlzoyyUwZ1/pRF7fhNNpIrUbELre2CCx8TMwdy2U0Ptp47d1GOdWhuKXfniZGzG1cuXIltZr73NJQtNrEaiY5KY4Skthzx2ncIVN5Rd2GRDrBlj97xNzCjKKoWq3GcaytFy2f1KASjnpryriL26BYTm6DxMotILvEpwbaSdXpdKrV6snJydnKM10o+jQtVq8E4DZMMwnu2bEY1iniTIrX3myVcJeWbnIer7rboGn9CRla3spSTbJjyoAoiiqVimltwxIoK85UTQrkuVva5Q3aUZawU+zo+fLlywVGG1poSypX+lxMGB3AaCOe0tWb5wRFa8TOamZizgRxHFs2fbqXgKXEJlddzmoqfNyTs0Arm/LKzmH0ermNdMZHnCnlNsrcBk/06dOncBsUri1wS4g2uVzF044qTATcr+BtydGGSaUKiW7H5BzS19RtpIauYolin7yETwckJ0YbuV08F4amEpu8TM6qVIum66gzJrJX2m3wvzNN0V68z549g4EiwextWctKawTsa/sWhyEpZaDv+9Ko6q9pMglqSXISTIV5EAR2t/Gq2E2CtjocY8mIr5CBwwNGG3bKQnZQ2zJnqthTBxdVa0FkQ+Z/eWa1USQZ8Bq4DZftpwmb1pcux2J/pQpJGriN/6+97wlx68rSn8VsauXNoMVAhV6I6QaZ9IAMXmhMBmScaaoKT6PC7WaUKhL0JDydqoqTtJQap6nSOGkkhQq0jMeBp4CbsZqOmfYlGKZMyEYTmoGkYRYPhmHAm5mNZpFVbbJS/RYf73B0zr33vSepyuX++SzE0333z7nnnnu+++fc+8bTOwdC1EeOj3l4SreyyutrjebKXyNQqVRKhg2hdunJKrvTpD+y2cbMUnXFf7atMwP5F6nmpOdOGqBnwvZ4PA6CgDqX1fqksWVj29oID9H36FlvgE/PNie+am+NkClzVxUofx3+1Vdf5XI5bd/T5GllmEvJyoN49mRLmWspXbhwYZbZBic9NjkLhBo2m02x4/S805kS8mkSGvREYSM9J3NalpSUsq3PAmwsNmd/BL3Unr4VrG3HH/T8I+WBOL8+CPtLxGcbRNqcunLW1REPWbVUx7SynQwbKcvjxE8VzkAL7IoEG9r1+ETLXTgdTy9EPENOEulExRhF0Zm90IJ30RlOjc1QKeqkrnWMrDz4e66wRDSVdxnTGS4bxodqeFoKoUDxMZusdeTNhKz0jcv6AuaUN0bTxezWq9pxCzUFGmN6vV4+n896dXzi16Wy3skdhiHflhfElRkRUsHGH5Loq6+++uqrr/izn7744gsR8uTJky9OgKrV6vLy8p07d/7lX/7lN7/5zeeff/7555/j1eduopj08Nvf/vZTRvh7N6ZPFf3zP/8z/4s4d7PQwcHBJ5988q//+q+ZegUnY8zBwQGy8hAVR38PDg5ux9TpdPBw69YtCvwoptsOuqnIGgj66KOPRMiNGzdu3LghAhuNRqPR2NjYKBQKjUbj5s2bOzs7ePj5z3++u7vbaDR2Ynr33Xcbjcbu7u6OgxC51Wrhbz2mt99+u16vt1qtVqu1vb1dr9e3t7f5Q61W+/u//3seWKvVbty4UavVtre3W61WrVar1WpbKahWqwVBsLW1Va1W19bW+v3+bA09Ho9/8pOfVKtVXi5YErQdkwihhxs3buChWq3iIQiCbUZ1RhsbG9euXau7aWOa3njjDQTu7OzgF38bitBA1lecVldX19fXYexcn2UV+M1h4+joaG9vD7zpzCn8zTff5Kq1s7Pz5ptvQv3AZ6PRILWHQu5OE/QfCrm7u/vRRx/RK+pKd+7cwW+v12u323fu3Llz50673ebPrVYLIYhDmSMV4tAvQkBISM8UB9FarVa5XO73+/hEo16S4jceIjwZNqIoKhaL/Dti4gszCEn8pMxsRJ/E8JPnqzWzfc2m2WyiS/s/p5H4sQ3xOTnPtzT49zYoyebm5myjyKOjI8iEBjKuEYr4cI34q7/Swb/A4YqjyfXdDjEo41m54tDYUIRwcn0ilAaSfjZoyGnNQXwDMYq/SCoCeZLEctGDvvnmmxnaejwe1+t1Mz1AJglENuKiyPpAEhAiFdEoDsXkX5z0t4WQLU9lWONiTx79xdpN+MRChCDw1q1b0B9ihlfNJb00IvVH089pIltlglfD4VCk5XGojtZCjTH47FilUmk2m1qS4+l1mvF4bP2e8RRsIFO/0p8cRaoJ03802JrJQjiZP3+RxJpDGIalUglNPsm4NjUej4GX1lLSlG7lWWiwmdZFCvRbbXrmpg0PGl3IIifyxvnRnV+zym09vdIsJZaoA6NpIHFlxeGnXC7ncrmVlZWso4Tj4+PxeLy+vk5o5+omoqaRsv5CPfRfa2Sqi18yia888V2ihp8khrCj0ShT78DDu+++G05/xvjw8BAP2sIaNqSw6puVXJLU+ehXok0zkYANT0wTw0axWGw2m3Q4mqMFAcZkBtiIVIf0q0U03YvSaIM/Q+urNECSRq21zUozRtYM0Jid/3URVx2RSRiG+GxqpVLh1iQNfmC20Ww2jVva6U1kSrb9NU2kxOSIwBeIdSprXXggb51I2cGsuuQqS88/BBuiUQAb4jLU9EZwY2PDKKMjTIMetuskVvOnuc2kSzNoF+dNZMJzI9goFouj0Sg94lLMg4MDoUscNkCHh4daIEJ0HtjwN4rnlb9BXblRKj+S8czDMOSwoQU1C2xEUcRnGy7Y4AwJHYocUwSdj6hYolaZJFtDbwkAPBYHcXhgVtgg5nV9PQNwa5U9sMHJAyGADcES1zCtQ8Zr2jTnmmGXiLj8wzAU0yB6JSDBMGPHwwGHVCLW3ygTnpy2+8TKkhaIqLJWZqKnT5+K6uuJC+pr7aX0l3elSqWytLRkdYdPYwQBG4J/l5kQDIgqRw4yDiVJpPmT8L88Hzi8wN7NABvj8fju3bt6lmYVmodSRstKWbMVTax1Ukc28SAMMsRKqdVzV8OGMUZEs8OGUDUrf4jmhw3EfPDgATq/VWOwIk/KUalUrINERON/i8UiD0HkMF7ZR0gYhpVKZTAY6NKDIOh2uzrcP6S1juNE2jSwwePAJlJzemDD6vCG2QasczTd67RGEifWMaPQM119UKVSgU+ItZrVapVE0Ww2l5aWms2mXv6u1+uuDSrK/PDwEPpNqdrtdrlc5rzRq2azWS6Xu90ut9GkAEIauuL0K5RKxNHqrVHKlTkeyuXy0tJSPp83qjemMYIEG5wHYwy8jxBoXZTjbaoVw6Ut+sG6b+ESrFXCrnC+SilECtjIOtvgI+iDg4Nut8uLOzw8NNN2Rg/bMSPxC03rQKJgPVmlIZE2zboZza7EbENsZvCrDBGeATaIGzBEv19//TWxOIpJ9JMnT55QY+Ptj3/8Y+j6YDAYDocIpN9WqwUAwPp+uVxGtOFw+PHHH1P87e3tUql07949uL7UarVz5861Wq2tra1Op0MlDofDv/3bv+33+yYe9m5vb7/11lvIB4qCV51Op1QqbW9vh2G4t7f3wQcf7O3tbW1tcYMYqcnTkydPounOqenrr7+2hvPcqPp4GA6H3//+9wuFQrlcfvr0aSafzqOjo2q1GgQBmUs0E+8MgtXRNPHwiKn+kydPRIT79++vra1dunSp3W4bY/r9/v7+vmjuN998c29vD5UqFoulUgneHfv7+/V6HU3T7/fL5fLe3t7ly5ebzeYgpn6/v7q6uru7i7Z7+PBhp9O5dOlSt9vt9Xr9fv+DDz5AhuRh8vDhw+FwiBA4BSEfeKHs7+/ncrl79+6R/KkV6NclJWPMf/zHfxjWHUTDUW48W8O6tO5BxpiVlZWlpaVCoTDKskZPffu1114TdeG/nL2ImULoLQ+hvmyYuRQGiFtDisw7OG93Lhyr/mclng9go1QqlUqlTLMN+u7pwcFBv9/nLSL6aRRFX375JTe4o9Ho97///Wg0gvVA+Ndffy1MM+XpseAmHUhwA8uL8wCDNZXmczQaffnllwQbpVKpUqn8z//8jws26HjKLLBBdRZEgtCwMWIjHaxR7O7u4lW32y2Xy0EQiBWhZrM5HA6DIMjn8zTeDIKgWq2K9Qpyv8FaJ6YgfL5ijBkOh3B8QlYYrtIzxpLtdhvTGp4QDCPbiC0+CFUW2qA7iTYflj6hqFAoYLYRZV+7QGXN9KhNN4q1mQTbEYMNUbUoitbX1zFLIyeotbU1WoaK4nENfmnu2O12r1+/zieRYRh2Oh3MRchFDU5lGENQU8J5Brl1u93Lly+DASKUW6lUaKJs2JQRDdrv90VDuHqgaDUtE38SVziXJGYbhULBpJ5t0CxTL1KZ6f12zbZVA4kl0dxpKjUDKggGPCucVm5NikUqYf7omf7u7e3xRaowDEejkWcDmTPD/4okopa94ucAACAASURBVAms0nMJU9t6KzxwyaTMRxN1WJptYD1cSFIcehuPx2tra1H6vQ1dba0HkdfZCesD5DaHbo8+w4eoMCsYmcIAQUVgEYStabVa5GiLmmN+QAsXhCJIAijCCJeDxM2bNyuVCtdgiuNZfrHqt5aMNVy81bIqFAqoiG6kROKwEdmwXGthms6v41DXLZfL+Xw+n8+vrq7yxqKVIqwiUvjm5qZRm0loaHJZ3tvbA95TtO3tbaxL0ELB2tqa2NsAk/Cx6Xa78KUGG8gql8uhcXVDWLuolhJvMpfceByeQ6RMLfY25oQNwaSogoYE/eshq4h0XURMUYSHrLChhc8pcZHK45WLZ3hSUXXIpAi58Qi6Xlp6ogmsEjYKlV2UBkj4uDx9VsYYvUjF5SNmGxS4MNigQJcO4aHb7eZyuXw+f/78eUwg0JMrlcr169fRZrB3uVxub2+PTD9mEly3aArS6XS63S6dUcBCB+wFdCsIAniygg2CDeAWIQdgA0IEDxcuXEAEGDKXxotlnMim4lxovKWNo0eBq+XlZZptZHXNhHw4k6IIftrWw7mZVnpeWVC1WsVEEK2AFUU+P+h2u1euXIH5JjF2u91r165RZSk3jCr4yEBE6Pf7NI1A+LVr13BIhcOJiWEDqF+r1aB7HDa0JvvXE6xiMaxNubSFYIXcRJ6zwQY9Y+tI8Cb4t5Yr4ptpNbAKwaMn85PLCcVaooANLSJXl6GVeoINE68rGLaPxRuO19ra3/l2iJa8R5IesiY0bi1NkxvPk2Yb6FB6tkGwwUUH2DCZFqms1RBs+YkWKIwxYBQSp9kGrD/hAaXCAHYwGCAQRj+fzw8GA4AN0DKXy9F2N+nBysoKMQBMIitD0TY3N2F0yLhcvXoVsJFytmGmTQkPx+TXNRPXckNkvkg1M2wgc94hIzXaRQvyMQuxzSMI5cMrTAqBB9yg88pubm5Sq4GCILh06RJmADTJGw6HmK/oY5WkJ1EUoa2pcdfW1qAzYlWKwwZUolwuU4P2+33sGEeOvg2iXWXdA8fjsZZSOO24RZGFtEVzzw8bolH0lEiTlSUhEGvTC61In7n+KxaEXaxaOwgtUlnPbegxsrB9k9gBF0QVDN2+VfyXc84xg5Jj01RnxYtLAwBc1PpvmrR8EMaZ54tU5LSprxLhV86kXaQaj8eJsGGUKfFTGIZY1+awwWuIucVgMOBnxWHrsW+DyDQFQTSyCAASylDABo1JYVao0EajQVYGNu6NN97IBBuiXdMLxCoiDhtZMWMyPdsQLUVK7AqxVs36bIwZDocAWmMMwNioNYdr167R5I+QAJM5LFTS4hLmefzkPLZDaK45HA7pL2h1dZUPmqhQgo1isQjYoDVPWqUU5F9HpjiGtbW1iXUc3ed5/HlgYzwe02xDqx+V5VlJ49E0z5pz/0Q5kaypXCMqV1qMPpeWlgg24tPfaW+QhScVaZG1yhHbzoStD2PvI842B2kOGyJECNywiYvog4INIRwdR89u+V9iFYfJQ7ZoT7ABAOa+/vRgnW1EaWADbgPklcG51/XRIQ8fPuQhe3t71WoVo1RoPDnsw10qDMPl5WUYDoTs7e1hYeH+/ft8MlEoFA4ODra2tuBL02q1lpeXP/zww52dHUxfIKxXX3210+lsb2/v7e0tLy/XajVjTLFYBJyg6DfffBNWJpfLra+v7+/vv/rqq61Wi88/jDGdTudHP/rRzs4O1Yici6JpxxXDvGs8IrIGEmwUCoVSqTTDd20JNkTmxA/5YxDz0bRltHIoqmOMuXfv3vLyMqC6Wq0Wi8WHDx+GYQjRoddtbm7iAihC336/j6kuz/Pjjz/e39/v9Xrwidrf3w+CYG1t7fLly7Rc+fjxYywzNhqNlZWVbrf705/+FAWVy2U0KBx7aDZJflbkJkewEUVRs9k8f/48sAcJSSCGTRRIVtQnnz59yqXB253ngwcoiavFARvgNmtDj8fj69evi+WdUezqg7/D4fDJkyeIQzHBJKo5GAxGo9GXX35JauxiezgcPn78WKgHXNc855zoFR6QD6VyQRp6Ok87Go1gTDhs0N4GSPgc0hdYRSBgo9PpYCUA+T9+/BgsHR4ewshCJmSggBngBIGj0eizzz7rdDp08Ovw8HA0Gj169CiKvf8PDw8PDw8fP358eHjYarUgbTQBIpN4QWF80WG/3ycvNZLDo0ePqJnAw+9+9zvehUej0ddffz0cDlF0GJ+I+uyzz8iBiF/kUywWsR4O2CBxWffGj46O0sJG6PBbn43K5TKcNbGxgUBuiI0xuGuBozrtshIhEBeuQY0w2+Ib4KALFy5gt4NMiTEGK/IUZ3d3F7BB+yL7+/vIiu9tYI2LrNhsFCZd0wTmMXMsZj88fHR0JPY2jG3djEOFSeFJZWyIcvPmTYiRj/fxTHGuX7+OpSdeQYINw0Zq1HDUk2Hl+ayUlhmh8fv7+3hFa2XIjaY+msiTCn9p1qvH0S4E5QM6TVpuHoqiKAiCec5tYOyF4qCx3CggpN/vY0mQRtakgeg4lUpFOwrifBXvSsViEQMCMQTGqgC/UY0I0z5kTtuQVDQZgTB2ZDKxJpTLZTQurwjcn8y0J9Xh4eGYUUrRHRwc4Egs1eXw8FAwX6vV+C15xWKx0WiYeP4BltrtNkxEOE2IBvE2m01YcDI7YnIAydAxdVS/UqlgF5aLulqtkrsgxaQqUIaUA+JQjVARLmc+24jYVbhCkvQ3eW+DL1KJPpOmS4juYeITWAihdW1jzNWrVwVIkJOu8cLG+vq6iffSMWPFFT2GTe4uX75MrpzkySMyBGzwzNH3aCuVwikTTzX9lAgboJlhYzwei72NNKwKY6fnuUaZ0TAMySUaTQBfBjyQxbl586awPmEY0pa4h0NaoTKsNbE1gt4YBEG/36dlzDBeNIAtFrARxuuZ2AAjO0tO2HySga2LROmJVKJGxDOXGzFJITMsUvG2RhOEsaNgs9mkWzhhDuh2TnGgleCWBltCXKPRCH0qZKvHnU6HLBHCB4MBrGFTEaTNx2e0eEh1L8aHtARuBUFw/fp12FPyloR7C3VMdJBHjx5Z3W39JGCDcIsD1ZUrV8jy8rUdw0Y5V65cIcygRVdCbl5HekCc7e1tzgBOoZLoMDwlR5IwHru3221ujsIwrNVqxCHpJPkuhtNXqUNiM8AGUVrYEPpkNSiJFDK3fcMMPbTh/PnzfAO8Uqk8evSIp7XCRj6fb7fbIfPrDcOQr2mABoMBjAi1bqlUIisDErCBVLBZfLYB0WuBpJcDKM1sA3sbM882UB2O935KE4cTRgBYSaA2xXwOPnLUXnSm0jBZcdjQAxF0klarJeZ2YJIwgzjhgzgaoIgQionBLw3KuNXgLBn3FQARIy0ZP2zoyHPONjBy0njPRzyCVW6aaRjU6/VEF4P1ISsPH2s6vU+ztEajgd0m7q1g4i4fTN8l04yvjibnCGxMwjhQQozQW62Wia0bercVNp48ecL3bFOKTsMG7WNbIYFjBsmw2WzSVZIcGMTXNTDbKMYXzQIParVaM77/BtFoXzaMXTqNOkKAo0sEpUV2Qzl1un6/z/EJhMw5ThNs0Ja4hg39saLk435itiE6TKK55P2Hdq2jePEUeoYKAzApYagGPqiq6H7dbrfT6fBpl4l9NHkOGJByCW5sbDSnfWrb7baeQ4BtrveCMWuV/faXa54rBzzMDBuTyYTP6qz2Qjeoa9mKE8UhjdTzj8SJFIqwbkrr4vhgQhTEn0Vn9pSrhe8x/XrZypOKQlxyozgiLWCjUCiEYZi1oSeTCWBDE0aRVq1GczfjIzUIh13jMEN4T/al2WzW63UACYkdy7mG+ZtAPWgNivSEkgA8oN58mkJGE5zTX/olDwja28jn8xw20svt7t27TeaCH9q+ArC8vCyghcfH4J04B/KBJVpuIrPT6XQIU7lV0ZaKrCJsJk24EVl8BIEvGxJv/X6fknABwqBR8yGrCnPA/eabbwT0WmFDWySfJ5XQ+6yzDXrOOrCl5DohIJQrFq2QkkHMerutx7L4q5xSIH7bSoOdmRepJjFs8IpYAcMo2OCc6BBNukXENzlcddR//Y0STV9omMiSiM8HOqKyXAKcn4jth/PfcNo3xgMtFGhdyKJM5oQNcsClbOngJI7cW9dUB4MBZnKw9eVyuVQqAWn4NI68n2mvaGdnpzJ9nwI1HPIJ4m/VkPmDwhNUYMQGL4bK9I1zIMBGGIb4CA3NRcJ4HT+c3hIHbGSaakwmk/v37/OZhGFdL4qvhn3ppZfCeJEHr/jqE5YicAMQRAdDn8vl7ty5w4GkUqm0Wi1CIKx8kFYQAsGRpxkfccV8qxJfS4pWWFtb4/haLBaxbEiD8jAM0bjGGMifZodhvE7LYQOcoy3gfeOCDdD169eTYQPaLGBjsSTcUVxxPB4+ZnqRQccRr8jXhUK4n4mwX4nDZ4ogRuse4t5lugiCDUw4ZoMNuBWRapIcRrEnlXANipLmSaBMkK8jR8zfzA/G3P+H86YvMSN3lFF825KraGsIpaVWIA6JAa2iiMMdgTTo8sjW7oMIHDayflB2wmYbVJE7d+6USiWsHe3t7WEMCwceXtl2u72+vg6f9b29vc3NzTAM4caGaPfv319ZWVlZWen3+7g9bDAYvPPOO+vr64PBADHD2LOo0+ksLy+juHv37uEesE6n0263O53Ow4cP+/1+v98vlUowcA8fPiwWi6urq/CBLBQKWJIyxoRhuLy8HIbh3/zN3+AaMZwqxcVlKJFgo1AoPH78mB8yODo6+u677xLlJmAD65bGmMPDw06nc+HChStXrvzkJz+BbW00GhDpgwcPwtg/Cvb61VdfhccB7DLC/+mf/gkAgyrXarVOpwOPPjj1wV0Tn9iC71apVMLle/V6vVqt7u/vr6ysvPXWW9zDajgcbmxsYKY+Go0wq8CXJXO5HBy6hsPhwcHB8vKyiR1D+v0+QBq/eKBlNNrbwPV3k2nYgCS5b1Uq2BCzDU8/t5JrZG0dCOu/M6CUx8qL4SrPnPznEvOhODq3xSLr+fPnizMd9zs6OuKLVIJJPAiPID74tabiFpYqDmsu5DDDVBKUxk3AuGcwRGnkb3Xu0DrgYkBMOERWiXskgkPABoxO+lYmwmyDM0Af+MLQPoqiBw8eYFuCGABLFXbUBte9cMK9cNhywIi12Wyurq7SlmTA7n2B3RQb4+T2RrIFSzQwov3efD5PZ37DeJGKdBibUiE7pqNnGyQQ+Ikmzj8AG4btNsOSou9g9wV78igRFcSZM05AMoINjPfpkAQf4NOGOfdxIj0pFot37twxzMW0XC73er0w3usGNRoN7ooGd4Yuu0cjDMNOp0OzDZqfra6umunDVcS/2BInMXKRTrLCRsiONRplHz1WI4ovCOMRXENLekURqGI6vpXCeMvIEyFlbjgy4uKWchPTfy4lTrj/1Z+bpkXBhobhaNr/h6YaLvZIaHQFPcV0jQm0G7SJ94pCtz83uS0YY4Ig4DeVCWZ4DgLIdea4p5KH640cY0y9XidfFOPepiIHFRFOuekH19Y6qNls/smf/Mn8exvIHOshCCG7PBqNYMEFY9z/Fa6lQqq0SNWNv1PQ6/U4WogkPJz81/kGFW0G1Go1OkgbssM0yASpVldXaYUqE2ykkRufbZCJp9UwEMFGt9uNoqjZbF67do3e4hXW+gVskL8Ztq+x3EQJYaPNtC3FLgUtDAIpq9UqX1YyxmBfFk0Azxfso9BuUBiG/X4fq3xBfBssYkbMw5Ai80UqDRv63Hg22IgcB0Sp4a0EF0kCmHB6Z4n+4gie6IHk8qwVlAhuDCRBrrUhQ3JildzjzDQsCc8HNKHxGnosYuqtXW1rcCmTtae5KAzD8+fP01H2xcKGeOZoDecWGlrS2ih6L6xMFK/IB+xr7bSDh2hWBzx4v3TjjxwYNtBDQ0DFw3ikbB3/mhiW0Hmq1Wo5/po9Rrta/rhwzAobxGS323355ZdpPIgitre3iU9KC7XUTaZnG6I4nQQUBMH8sMEbhXgmuwyWCJJJ5tS/wjBsNBph7GhLhp5MGGWLD5zwzoVFsGbs44u9DYxh8ctlQrsptVqNlASKwU/yQk/ga4S2RqGXL1+m1nHBRkq6f/8+tTXNNmiHALrB5xaGbZubWGObzSa0VMAGNAdxoJnr6+sEToANfgEJJFOr1QJ2S0Iul8PJFe7Og2uQwGcxPhECW0SKenh4iKbnjgZo6IA5ptOWuGe2obfENzc3s8GG1nj4tnKlwYCR2x3Ms/jmDI4Tl+N7DPELa8JLAVTyHsuXESAUGmrhUBjFJCk3m02cJABvtPuHzCvssiNeEI4amWk7i8pS7YrF4tLSUrVa5SEEcqRqxhgyf1qGngH+zLONyWTCJ/hiDmemoVQzQ2wPh0NybOWdhxt6EjIcW3mPoorQLiL3tAnjgRjFhFc0YAOGA0M2wyZ2+/v76ITlmHZ2dmjKT6pvpg19o9HQ4VG8x0jGrlAocNvXbDY5bHCAEQsCJFItai5wa4SIOeB2u92stm8yfZVhyDxHQrYKJNYkEYJWo7QwkRg4Y2nLxB/g4gMyCJxrgmEDMm7jMASBrPgiFVoZVxdTzHw+z4duGCzruSxmG8hKb4lnkhtgw8RjF1IPwgzYaK7SEfPNNbHHORRAwEatVovYIlUul8OmCGkdYIMP3crlMoYOCIF686kkaHNzE4YOqhuGIY4KYBOUwwbvoSTACjsGC4G7YAPE/XFptmHSOOBqgy6IyxH++JxRrtAgzKHIHpFcTGwgut0uLrKFISb45f6CeAsn4mbsud/tdun8F7gKguDSpUsETpA4jqDzJRHuIBHGx4+pS1AcGvvQoi1njw/TaNzaja+Apb+01OuhcBo2spoSARt6C1qsJfLGDWNUph3IMB7dW7+KSJpnnVFhlBDEJ/KCaarEZ4bD+AJnhEC8+EhXMb6VnYqjQXQQBPV6nRZw0cq0z0zzpMuXL9MNibCD/Ot+1F6kuqQG1ExQsEqlgsnN0tISadSFCxesrkqcdN/h8p9ztsFhgyCBRMo7L68ydjto5heygTw/h0t2n8wWn224CD0FlrQyfVsBdRkYRIpGEzjwANgYsTtA0ZTc91ec25gHNqhcQZubm012tIJzCF1qxg5R4KcS04ULFyK28IU5AYkaYhHufJVKBWsn6LyQ287ODlSXWKINGJr/ra+vo2gqcTgcQoBEURT1ej1M/irsIHAibNAi1eywoT/jhZAwDNfX12u12tbW1uuvvw63Ocy5uAMMpXr99deXlpZarZb2WaJvutXr9VKphE/34AEeGkiCg6nVavX8+fPr6+uFQgG+Fqurq0Dp8+fPU7ev1WpYSgIm4w6rZrNZKBS2trYQ5+OPP8bq6v7+fqfTyefz77zzDt1zxT8XOBqN4Auxurpaq9Vu3boFj4grV67Q4HRvbw9bfHAmwdyl1+s9ePAAu1X379+nDHlX56oJ2MAnpueZbYxslwsJleW+SRBIuVx+5513tre3t7a29vf39/f38/n8W2+9ZRRtb28vLy+fO3cO31XEh/M4PXz4cH9/v1Qq1et1XJUjJAA/nLW1teXlZYKKra2tS5cuYXYPYMBFRv1+Hy3S6XSq1epPf/pTeI622+1isVitVkfxKfFCoQDnn7/7u7+r1WpwU8G9ZFzxhsPh+vp6sVh8//334beDNZZSqUQrkGjQfr//8OFD3JAWxpt29L0pz7iKPhsnPLIgecAG7mHL1MogfpUhCBKA1w0cqCJ2LgduVO+//z62bcm96h//8R93dnYajcbNmzd7vd4o/nan0JButwv/H2uVSYVardaVK1euXbsGsXPXQVxQdv/+fVz91Gg0rl692uv1KEK/3wfn3OAMBgOwh/z7/f65c+fmhA1aG4C4cE1WyGYVcBXj9hpIBrcobCp8/fXXYexABYtx586d3/3udya+wwpif/z48Si+Rarf7z948ODhw4fkJYXIjx49wocvaVgzGo3IXQ2LWl9++eWDBw/wjIS//vWvb9++jVuwEO3LL78Ee/wSrc8++6zf7+NDmSgUjVKpVOgbDf/1X/8lNjP0IhXwXghzCjYmk4nY29CzbBPjJ2ZMdNsEH7MIrMZElUZ/1sEaPw5KI02a6tIa7urqKq0zYMC7trYG5AjjUfPa2hrsDrEE59QKO3TT6/WoFKwq8s808bEVQmjUg4EVJi4Up8s+SWSMwVSXCPNxXWUh0gsXLqAtTca9jck0bOgmMNOr7YRbFBLG8y2MsmkhFZeJ8TwxaK3En/sOwxA3DPISATm0hg7xCrelSqUCtKaWLRaLGxsb0BPa48FUEiMmDPY3NjZgO5qxJw/NNqjhoADcaYe8Lc30aWoTr0HhL1l5WpiC3aQdGgxIXbMND5DwONgShwBnWKMXvSyaJusrau6x+t44Z0zkYJ21WOvI1TuKV06i6XVgPU7Se0IuAYrZhsneQSbxcT9eOzqjR0UQinC2qRYUmQsc8cUCVGT7CDldVWBtNd2IZnqdwJXW1UxWNxBjDGYbYkt8rIjkhnGSEKYFNrrT7iW6OcMwJJcMTHVNDBtcG8L4hGS9Xqds0b356gdQga66ox4bhuHW1hYeaE0cvhZhfOEddqgINpDVlStXaEkE0QqFArYiaKGMwwaikc8Ghw0UjVNUCOELbhGzRDCUWJuiKwq67DMh1v7ACbON4kwXowrYGKnTbXzZiuwILx3Of9z4luM7KImiKKLz9rRwtLu7y6+ah2HlO15Y5MFDMH19At2hBNO8vb1djG+5r7CbJwiiMK8vFov5+OPBWDQw8bISokFJaL8dh3hNbMiwR0UtSKhARoEatMKu8ad1NlJ4LUlrL6UWoWfMNuaBDWEpRtPHcUySZXHxaU2idcl/nDZyAMzMjtqGDT7Q9MaYGWYbn376KYcNw27BoREe37UmPOAoSPZNN4EQoEgoLDuXrVXaFGj1SzKsL7tIZ2XixTE6Wcwv24ZIyZWZwmeBDcEiSbkYX1AjYMOoHoLJPh+MVyqVS5cuURx0UXieoWcuLS0hN77UjsiFQoG8aMLYA4oG6SY2W7DaMFXdbheLVAE7QEvH8cN4I3FtbQ0Wk4zgcDisxJcHBPG1uzhoQxsbfEjLFzorjGisLYj33jAMX3755YXARuRwrhWKK7ox5hYBu2WoWCyKi4q73S6+SEowiZ6GJdRu/GkmPvmjDk89k3KDJKkdgyC4du0aHxPw6RqZdTRKhX3QF9Vpxp7+lUql3W5HUQRvE5J/xLbEoTD4diyGBeSdRTWFxmL4yf3ByNvVGAkb1iamFqHAZrM5z5a4ntO7xpU8UPsEW82fNQfrKw/p2UaUdLbUnz+HDZptzA8bpBVRDAn86xr8Ff0V0EJEgcQzH6kghLvzRelgwyoiAQORGjeIwHD6+DaHjW+++Ybk45p2ZIANFCOOQ/NqlOPLZ0qlEg8x8bQunPaRzbObtEN2rSz6Z7FY3N3dDWO/MXHtIJJgUeLixYu0VQ5LAf8fvhG3s7NDg31wAjb4iBKzjTCeNoWx7zMfbvd6PTJq5AZWrVZp7AlDQ3tWxDN8vaN4DyoIgkxb4mbuRSoNG2JL3NhgA3to1GRikQprR7hxMmROO4YZWdjlVqvFN1G7sbclhw3sYNGkASBBC5WE08P4KnWarIANlA6wiWLYoKk3rxRtiZvYbcHEt2IIfQvVnaxhfD45N/1le48krZZXhNMiVbPZzNTKoAo7AWC1GkbZI955RYj49SQxDmix1nexFNpmG1nlBtgQzRExXymCBF0Lsr+GbWAYJjHCGz08MsxfK5FcR0c5S3pmk7JNw3j5h882XGhB4W+88UYq2AjV3oagKIoIJKir88GaiT3KkRUsO98MIMuOGUAQBHRxOg1ODeuQQew+e/nyZfKboi0HARtYJOEOPLAv3JMKsAEzxIexNGg1xuDue4INCqRTVC7CtfBcgVLubdCaftYuAfyj3Kyw4e/PQRBgBoZ2xEYUd5Hknp2GLVIR/0SAHz5GW1paIgmE8RYUUJkwA7MNM733AB9o4AFYgscdeamH8aIBrL/YogjjrTKxKIoGHcbfhND6RoStLL5uae3YIpUVpCn+PLAxnv66n9WyGwdsuEyM3/rwWpgkVBDmMiWF09sJutDQNtvIKrrPP/+cwwavqYkVle/AcSDh7FmtNocNnb+GGY/krbxZ/1qbjJ6FDoTxXIo8qYrFoj41qfc28A12IUwJG+VyGef1IvYxOJIXfSQOJ0fq9frPfvYz+KKsrq42Gg04SAyHwwcPHlAqDRt0jxDuFwqC4L333kObwXihCe/fv0/XRsFDY3V1td/vw5cc55V+9atf4asPuHdlfX39tddea7fb2OKGR9bVq1fBMP4aY+7du1coFLg1p1t0yCDihiKMgmlz5YMPPqAt7sjRhegTIET6E2mChsPhAmGDlJt+rV+g4/H7/f6Pf/zjRqMBMbbb7Xq9/qMf/QgGl2+NmGmnWOTDJQnHM/iVwVdteXkZfzc2NuDoDL8OTA7gPodLFHZ3dzc2NpaXl9FMv/jFL3Z2dnq93mAwoAzX19dxn0+v14OLjol9n8hpxBgzGAza7fbm5uby8vJnn33GRV0qlVZWVh4+fNhut1Ecn1hzsUArUFkuUsPWB0iSUbz0QTEjNn6kwL29vT/90z+dGTbgEMldntAreZ8VIVYTA3cvEUc/UClEXHOsS0880LU8S5qjk+g8w3gxoDh9J1Um0rBBqoK/w+EQn9LjIWAA4IExCuRGmoaY9KlEhEdRBLe0KIrg4AS5UbnYQhfSFg0HVuExhfiCKFB8uxP0+9//nv8Nw/Dx48eADXhSFYvF//7v/+aqNZmeduDDf2lhgxapRmrNdBR7iJObPG9a4Bg/R03SJ9iIFBIaY7DTGMRn62g5AmfruKrxNWjYyuXl5XL84R0TA3sYO1/RahJtzyJDtX3KawAAIABJREFUviUOGgwGGMbS0JLUl5Y+MCcQrlaa+KEhTzRB3JMqa5fQsMEpUoNHojB2SMdsQyRptVp6owvEj9SIDHu9HvzlMF7rxt+b49MvaEUl/kgc0uLmtaLjpoAuOzorJnMm3lPBM7c70CVhiQL2MRwxS9Y1DZlHRjS9+amLM7Fxofg6T9rbyAQb6J6YbfC+I/IXJQobJJ79cXRMa339pDtCyq5BEWh6msvl0D3NTLON3/72twI2KH+rRpnps6uCJUF8Mq1zC+NFF5Iqz1CU6MpBNETIpkQj5e4VqqsxqC7pZxv4TQUbFXZ+27qyEcQ3T4S2eX0QBPwrPTycS0eMgJrNJqYpXBYUmfMA3ypCiJDdeqRVgTMgQrD6IZgM46M6up8TY/jYgNUEE9GHS621iKYdE4kAG7NtiYfKb1gUZF1+oVqLOP7aGSVModyPHj3S1eejTupFVjnw3qIpcbXNTFfWlQ+IFImHWJWHx89EwqyYeJEK5zZmMH+u721oMLC+FWjnqqmHRFPyVPSX2ywdLWVBIbPaYRhaYSO9APlsg8tH2GjytAbxoxjc+FLVuMJEUWQd3BjmqMLL5RcgarXnhXKGR+7dDl0dXi88cNjA3gYHCXGMYzweJ8PGOD7uR/qh+4m/vUN2i8tspEvkIdrYCZn6edMJ/ZE1DvHRhz+tpxRrIA67FacvRiU4x6+LwmnY0FLSQhDjI2tFxGELo2wN5cZlK/qVq/q6q2i2OQO8y1mrZh0a88ry1tT5WJNrCXhIy5bnQ5XFbGNm2ODf2+B193SBlPzrcYN1HKZhQ5NVbv5+IfjnSgWaHzbgQKFl5bez4hmkzb2VROYey64n5Z7SXZl4koTsM016S5xIH/d79913TZrjfrRE4N/Itfbh0K2gIfMDS9wiBo3UNd3a2KVHKR5Np9LjcTKR4bS685DQ1jH4r4sB/YoccEPbnROJsFG03dLK62s1K0Im/NVsI2v+YOUnZNZHRLM6MiUWalUJqoK1pRBTjIg527ynWcMTqRvfvKLNAZ3bmM2Tin/OXViHriIKhH9HIjWniYfQMxyXQbSwTL94oA83EekQvYYcsDvrKuyL4njAyp44t5EJNorsi6pUCjYU0fXowUpkbYl42kSiMT494L4DylbkD5hMw5hgMpfL5XK55eVliAv5IJAiILKWnoCNVLONiRc2RDfmBjSxF4n+qXtspkxSEnUbHYhuzNffdb/iSXi/ol9rr9M9sNvt4v4V/oqHIM5f/MVfoC1D22zDT8YYcgxrspslRX9uspv7/IR+hdulqIMR0Q6TeLb+peP6PELZRisrK9QPxQMnHmjtOTohrjBJYxTy0yQi5PP5QqGQV0Rv8cDj6DzxGT5cpJhptgFNaDQatAnHLQINxnkIBZIRoQjCrIhUIkP+dmlpaWlpSUf2k7Zi1hKtpVNkNIRJOrdhffV///d/6Gu6RTycLC8vC35ysTV3RRNEGADY06moaqQwXN9Ew5F2ET9WTdbhyIqHVCoVDb1csBlgY3d3t16v12q1crn8l3/5lygAqCiITjWL52KxWCgU8KG6QkylUoln8sMf/rBUKlG0Uql08eJF/M3HH7lDcp4JElLPBH3/+9/nqSgtJaRX+Xz+3LlzaIbvfe971ACUD7UT6Ac/+EGB0fI08YYUgT/4wQ+4ahYKhfPnz/PiePPT8w9+8INyfGWs/uibHz+Ojo6++OKLTz/99ObNmyjrpZde4hyigfBK0/nz5/mrl156iZKTtaWqkUDA9ve+973z58/jEAZVhEtGJwTprM6fP4/fYmzE//zP/xwWFvrDFUYrJNHFixeBE0iSz+ehNqSElJxyQ84//OEPBZOlmBC5VCq98sornBmeilTu4sWLVFy5XOY8U8xisdjtdmf4ut+33347Ho/hTuaiV155pVAoEGQSJzwEUuJvRQgCX3nlFZ6qGA+WScJE+DKglR+80iiOsQJSUVl00Ryn9fV1evi3f/u3yfQqfEo6Ojp6+vTp9vb2+vr66uoq/YLK5fLVq1dFidevX8ffarW6vr6OX4rvetBULpf/7M/+bH19/cqVKwipVqvXr18XeQqiOHgG1ev1er1OcRqNxmuvvbaxsdFoNHhWr732WqPRwDPevv76641Go9Vq4bfVatGZcDhNTdgHEycxbLz33nsmcZEKNB6PK/GXyon0oM9KNNbTacUzf+CaRK+EddDKRHF05pqHYrFIdy9bebPyLAK1wSIGrPKx8myNTM9GOYroBnJRFEWVSoULE8Q7LZGYH1AcmhmsrKzw6TyF8Jm+jlOennBowgyG3wtQYcsUnC5fvpzL5cTMqRIfK/FQMP3VOTEL9DzzyNY5JZ+Vigjh9IoQn63SIhWFw809q+GjLm2SVhH5PJ4v6NOzcLHVe7aRjbrd7sWLF61vYWV0uIgs/o7ja7KsxYnMycbNIDdOfI1L5KyH25oB7m7EKYqveIqiiFtehOCWXGQoivDMnHg+/rmp5nxic6vlEfh9t7w4Hid5b4N2X8fjcZd9wIcveiQSLWIm9m2xmJOmk9PaDsXc29vTHd5K5XJ5aWlJGwXqxmkWvsR+b+hef+f91uqzKPoSBfqVw0+urqv7trU/iL/kaLFYmqju6orwm9/8JpfLCa5mFk5KAbpCOG+uyC7S91HzzzUvkObM0Do04cIPw/Dq1au6vXjMiU1o4rutiXzqVCfd9Gn4ESEpqzMej6MoKpVKE5sFF/n76zue/gKuiCwSenjTSoiEGjZu3bqVsEglhrS0PeJvs8R6ev6eDqEizWYzn89H7NLHhRekRU8MTKYFpcWSZgyVcs7xR0McNhAy/0jzmZAe1j1fRErLYcMTc6JqKixUYnHWPJ8hWVki0jcACsJsQyTkqcY22BCBrrfWhJom0wiRWBE8ZIaN+emM2DiobBAEHDZAz1wdM5FoozMi3gWSqBHBxrPi54+MZtYfMisEG7Mx4Letz4q4TLQZnSi2tU3XcykxJ4iiaH19XZSr5w2aAVGcfitIMMbD+TRAMMDj8CSTySQtbLjA43k3UjTb8MQ5yxXnvT0NwPNVx/SZPyuysvrFF1+8gA1O8zRTmm7uyp/slDFmHthYCM08dbNWXASO0xHP1mXTeUzAhmZ4rNBI/BWZ+yvugROdaqxAcaw+0zROOduYOMxNGiPlj/bMDVO3283n889W42cjPUhMAxs6k5nfPitaCGzMIKuZC1pgVil7XJo4Wn8SyxVxyNNmNBpdu3YtUyfyrCtyvx0KScz8u+++o4Q6h/npSBHCx7HHES/XSsQk/X369Okrr7wiKuhnW8OGX5JixqPp22+/1akEyCGE4OTo6Kher6eCDVAaJeP0vMDG8zV0tbbOScDGydE8VtsPG0IgMzBwrMhfkJ9OEzY054kScEGIeKvrwp+tsw3XEBvP3KOBh0+Un49eWPdkyzPXvhvJIs5OM+RMSWhLfJLFpSJ9pdLEtIZb5cybIPnidBfxBInaPMOr06HnFDYm3m6fNavTp3nKTYQNLhMPAx48cKn6M1dXP83QVXXMGbp5FEWbm5vWVy4D5LL+PKE1t4ltOOwycP7cZqBEI+tPKMb+URSVy2XNrb/Esdojmbk6Ezfs+WWbfNwvURdn7p9ngZ5H2JjYxoPHtiFhmnxOhL+TpK+++mp+2Ji4sVaEP1sRpe8+iV3VGp4YLQ0nxpgrV65ox27PCZKUFKa7BoIfgtGv+MEdcU7IdRtCViqVSpX4TBsduhKnx4rxcUh+wOvChQuJsHGijoKuzMds9qNxel7Y0MrnV02tjjOQyJmHZ83qOYWNyfQCIP+dIZOzTJrDTLDh17dELU2Tw+x1S0GJ/eXYjQo6bZoK6kBPVniOosh60UAmghnVfwuOi1uI/G9FBNjxiuMmmxkAg6jZbM4Q/8GDB1lnGydB/lI0bGTzpEqjmoKsbz3x05DQck9BiRSGYbFYXBRszMbDzGWJQo+zg8epcbtAygobkxQrM9aEaYRz0gJM07+sMa091NoTdZzEkIlSdX7ilc69ngRF0xfx+o+R83lPEAQ3btzgS1gLGcj7F6Zci2b0V7w9HZBw8el6eyKwMTl1hxxrR/L3LheFYbjA2UZiJz9pylT6s2V1ZpofNiYKayc2s8sjL7oSiyFtx/VfT72s0Tw5PKcKM5lMjo6Out3urVu3uBPUPLlxG0rOUeJZJJkwT6r59yQWS1aZEGDgxjNOe3t7i4ENV4h+m1KJJ7a+zaOJHFJqtnj7HMGGS7wiTtYM/RFm4POEiJixwoZLZ1yKZI3v0UzBxmJbeR61sTKcpsdZ44iYrrdnSjFSEmCD/lrFJZK4qulyUcXbNJBwpmBDN/0kaUv84OBgMYtUVn3yKCVF0PGtFXNF40V7CnJl9RzBBhUhfiezduOTZvWECLBhpm9SO1bW3F87obFakuLBGn4WpGftg55+x3lOjJkyn+eCXLChqzZx1x10BqcLCycPbCxmkYoL/dhm34+ntdnDq9BLq7663h5PWwFXQeKVa0tcJ09TizR1nJ9cdc+UnJ5PhsdszKRhg2LODxsu6VmfrYqXqWonKuTjJCuv65gyfsp8nhcKw5BgQ7epiGxtO/GXw0bKM3ozM3/K5MeM8Xh8+/btRW6JJyqTbgz9VsScmfz5gwAb3Aa5ckiT/6nRoth4trWYjTyw4fqrSeutNSQxYfoi5qFZtN9GC8mW0s5fr9MkP2wI+aQRQnrYOIPkUolJ0rEYxFkMbHBWXFyKh8RomUq38uMSFg/BIpVRd8e/oDNLVtggSq9pLmXTEUQqf846csr4afKZkxaSuUs4Z5wyzTZ0uJYhN6PPF2z4VULDxkRtxiwANlKyaP3rSTVJgUMi50mSsdAUhuG5c+f+OGBjgcMff/LEt3RBkD+tuKJHeKS48v/3f/9362xjZtOWSZ/PGmn9z9RP0yd/HoXDKQzDt99+O2VkLQ1rBCK/g9ZC3Lf89N133/l7DZGnUjAg3377LeUjbqOimCcOGxN3B/Ynp7c8mr8hM2k2YmK2EYZhSgdw8bGzmcl6olU7v/tPxgryf5DK9fErF+nvcVnDxdlaPPCP9FkjuAgfE9QhnEqlkmu2kUkHjh0WM6X+uEqfOfnMJc7WVUWg6G5pcni+KAzDGzdu6HBrBXV9dYSx7fyHdVUncc0nkUQqz9FukW2a4sZJPmAEG0S3bt1qqo/eLxg2iLhqUkiaJC4Vn6QYF3hynkwmxhj61Lv+sLuH6AP0+Gp8+oTWTOYn/hV7fNc+JbmO2noi8w/c8rO4IiTxq7f8a7KJn6clvFlZWQmCwKrfmXTAqkIplceV4SkbVpexS+w11rSeHGbr72eKXLAxmWOfRixSCbObeAmj1aYfqQ9g8OJ0fP5X233+Kk1FJukWKt59991KpSKGbhlgI7EAouO5x3TWDnDs7vP+UuitHrmnH/ILck0s0sw/aBLjn80knoaFvaYQ0qpIffNVRDgF4vLPFJmTPkvF2/S5Nm1ZSdc3fZ+1hmft9c+LqMfjsQc25s/cFe7X5Bnie95S2nF8bWJ6HsbpYIOyunnz5oywMcmiNELbZiNrDsfT+JEpt4VwdUaI9AND9QWupabR+7FjsJM+iVD6memPpkFBfvVOAwYuo+/q0elzcHF1NunkYMNFs2my61BI1s5l3dmeMEMhhpt8HV4k1MPTRqNxqrAh1C5NQuszz9aj1s87JX5lRdBJwEbKcmcYWyU+ZCKtAC5NODUNmVnVdaDrradv+nvHDKme685ljFlbW/NvFlq397a2thZ7Xe4MxNeE9fow3bZbLBZFfJEJLfnqHDzLy/ri3nw+32w2zfS5hcXDBkXOqnZCy/Vb0RkyFTFnNzidLpTJhmaFjZOowpzThXlymE3HTo7m58Sj/56O6XkrMCAxUPevhdfxFGg8HhtjcJmudTMvcXvPal6xp5jP55eXl2mTkjYs/abZRQQAMxChQrPZrNVqmVxgNNGi/d7eHg8Pw7DZbPIj0tAQH2xMkmYAp0l+hT7p5M+KrDzTvASwcfpc/f9GZ01ztH33I0ciTlhhw2oEnhcanwx9E9N//ud/IoQeQE+fPv3mm2+ePn2qPzgIb1d0XrxFCP19+vTp//7v/5ILL0Ks+dCz6zpFQcL3nQK/++47f5Ixc+XiGpIAGxObjp40Wcuah4eTqMLpiMVTyvgFbJwWnY7yH6sZhjWCp4f6+3KaaFZlO82+7ye/cTw1gskWz/phkg69RMzJ9M3qiZDgsuw8DgWK4ihzvynTGpIMG5MkE3lqWiW0P1PCrEmeSZ6eUnRBBBtnpC+9oMWSq+drlfB04UzRtJqdjpI/c/IIyhohDQlUOFE6Ojo6ViMDUTQPtyKcqCBlOJkNNnhKTwGnQDMXmr7V03Sb41nRK02J+q2roNOBjdPU/hdExBvd2jH1gz9mJrKycfbJw+cxM4LWty5xWUPOIGkmxZYnf0XdWccRzy4JzAgbHtbnF4GLZshctH3WIqy6IkSZlSV/ifrtsU3jYcrhMpFmS1zHEWAwdpxH1bNp61troSJ8BvhJGV/nPCfUeWp0On5rug9qffP0XE+fTyQPG5OZ+uCpkYc3LQr+yiMBf7ZngUjVdRU8VfP364kDNuht8pb48QnDhkdf/fn7yxLcpuTNIwpXnMQ8E0tMyQ8P57CRaB+1sXMtrU6mDW6addX01llEPuNXwmlYnaSAMSHSGcq1aleaEB3oUmY/8awmGTvds6U0vM0mjbNPHrat4byz82e+TTJxi3SWy0U80pxB0Olb6Fj1GX+err8p+UnTDCetWJ6CCDa+/fZbfyZHR0d/+MMf7t69e//+/fv37+PhV7/61cHBwf379z/55JO7d+/evXsXIaBPPvnkk08+6XQ6H3300UcffUSBd+7cuXv37u3bt2/fvn1go9u3b3/wwQe3bt26HRPCO53O7Wna29u7ffv2rZgoHM8i0EM3Ff3DP/yDCPn5z3++u7vLQ1x/G9P0s5/9rNFo7DioXq/v7Oy888479Wl6++23r1271m63Z4DG42ljfawAQCuGNZCHWJOkpKz8n03SYrSGJIriWQkkUZHStBoPpy/XTqbNqb6K0Vr07N8SF6LXFchUz5SlT9wdSWcu4vv58fPmeZs+26xkFTtRpkWqX/7yl3Dx1vchNr23InquYxFvKbzf7+sDVvzqRlydoi9zTHs35PT9KzMk0de0WMnDEl7hdzgcivhhGNJEMOucQ2uXqxfoOBPV+1xJUpLgKlNFzhS5JJlVGkIyZ2fPz9Vw1miuhOkLmvdb4qJI/exn1MO0Ltef3MqGTp5Jjmn4TyPrrGStkYgD2CgWiy7Y4EkODg663S63s6PRSBhTEZKSYP15PvTA7TJdJ0z09OlTbrX9F3BpQ88vSBAVsUKCpyBP7TwyiaJIwAaXSRAEOF4rTktlavpEDU/fEdIkSZnn80u6Olmrf2alkbKl9Nv0NeIxZ1yk8r91RfPUUzPtSeXh4XgaLSZuwLCKjOdglbKfvQWSp0agRNjgBNjgJlIbRISQUfYYU2EiRXxuRq0ohcDDw8P0pbiIowiF8BvvebhxgAq9SgOcAiR0FcIwHI1GQRAsLS3hQG84/bkCv864lJmrpY52opSG7eeCPLKdWSxnhFIyZo2QmFbX3QIb1ng808S/rsI4W64iEgtNE9/KTxpxePJxpXVlPj/5OZkZNrAwZTXBHmvoon6/32w2K5VKEAQI6fV6WKLBYFxnRbAhQvR8wj/Y50mMe75ijOl0OnRLTxiGrtq5oBSEW4kajUYascwGG36dtwaeJmVV4DNFCxTCGRRIymbSEY6n9Soxc5APNhJZtHJjfbCyay1R19/67JeR5sdVR2uISJVSCCdBHrGMx2NcOpZmgZXDRrPZLBaL3Gq7jKZJcRX8gwcPcBMc7KOJgaRYLAZBYF0FQqCGDf7WMNjg0wI9ldE4IVIZY9bX1/nuC2fAv04lsgrDcGNjQ8TZ2trSCTlsdLtd0aae5k6pDBNbZ1448XJPWtVPgqy1mF8mWkTPnNKzRHGE3dBpPaLLdkrcFcFTmIsnaxydj7+10jeblfP0Ip7h7UJI1J2/Ojo6qlarxWKR7rFx0Xg8/uCDD7C3YYwZDoelUunevXvtdnswGMAQj0ajR48e9Xq9drvdbrd7vR4i9/v9fr8/HA4Hg0G/3//www8pEwS+//77+/v7+/v7pVIJW994S/MPWN4nT54Mh8N+v7+7u7u7u9tut588eTIajQirsLKEkMPDw16vd+fOnV/+8pe9Xq/X6928ebPf7xtjPvzwQ+TQ7/cfPHiwu7v761//mhISbCBb/PZ6vb/+679utVqoGr1FZZEb2B4MBjdv3hwMBojQbrc/+uijUUzgs16vc9AaDAZ/9Vd/dfv2beQzGAwIS86dOwfY6Pf7J6EMfprYOlRWooQL4f/ZkktEsxFl6/kK7Im6mLtO87kayxouPKmObQpjjZDqKkPXK2sxx9NQodm15mlNbuXY+tclKZ3KldaVjytzf9ELocT8gyDI5XL+ezTz8UcJCTZM/H0nrLrk83nMEnZ2drCMg6lDEASHh4fNZpMuUg6CYHV1lfLBlGJrawtrZfl8nheBu6b5UJ0u7Ox2u0EQ7OzscPsrlpUqlUoul0MFy+Vyt9vN5XJhGK6trSGTXC6Hh/X1dbFXIfZRut0ucsCEg6K1Wi14ggVBUC6XgXbFYhGb2JhbrK+vU1aQkoCNMAxXV1e1Mxg4x/WoofoUc8qmd/Wv0yFebkqFPLPkqmAaIaQXlKCT87PSOfv5EXVxpdVZHdss8yTlcT/Pq4l7MSpRrP6K8Xw8pVjLFXm6JKsjWBlLw3OaOmYlf7bHx8ewiVtbW577kLGCtLa2RvsZYRgWi0XMJ/AMc08esbCwxWIRY3DAA+L0ej1Y2GazSXgDK4lFKppwcNiAVy5tfqDcWq1mGImFJmKASoHpbzQa9Bc1Qj7+HRFu/SnmYDCgDy24YKNarZrp9S6CDaJarUb+uARLgA3rIlXKptetr7uAh7QKpUmlc9DlZq3LWSBXBdMIIb2gOCUelZ2H0sOGrsvEdrkDT2iVgCgu80dhPVKzCtEl1kkKALCKw5+hzt/DsyerNCTynyefedhInAuPx+Pbt2/j9nyCisFgADMHc2yM2d/fF9MURCAA4LCBmQqNwWHlCX4INmgjodfr4bMEmLvggzACNri573a7YIBgA/6sOzs7KAX2HQWZ6f0P8cBhg09KisUiplblchmljEYjQiONNxxIXLDBp2L0mfeZYcOlGCm7Ko+fJpUrk+NTgY2Ty3kyB2yklLCVTvlUh7XhROAxu8qQ2BMR0tTODhu6VFdgSgnOU08d4snQmr+ngjMzP5m1F80vt6w0Ho8PDg5gDWmoDtgw8SjeGLO2tkb7xjTYj6IIQ3JYw36/DxcpGqGTPYV95PMPMuhRFPX7/UqlgtkP8h8MBtzE01yBMiwWi6PRiHbaAUvkyESwgR1pj38UbL2IEATB7u4uQVSxWBTZolABG8Y229BAYuIt8flhw6otx0kmj0ebZOkX1hKPn3/YoCJEBVOKwpXq1DhPQ8QbDxFsI5xgg67OFUkSy7J7UulSj71YMmdVPXxnKssazdX2C+d8nmiLJX0DlRU28Bfjaz6OxiHnfD6Pv9iTELABsx4EAZa2yuVyLpcTsw14u8JeD4dDPpAPw3Bvb4+MLAw6EoJDrIxh1QjZInmj0UAm2NiA1fZgBln2MD7WjiIINrDahlJGoxF3Ha5UKi+//DJfgMJuBxbxKPONjQ28Ar4S/4uFDU/HdMXUDymT+/tR1rqkr/LJ5bxAmpxV2HCR4NYz1aAQenZNmCRsiLy0aKzxF0iuOrgaSf+1hlhZnbMKJySBhdPR0dHdu3dhpofDYb1ev3r1aqvVGg6H29vb165d29jY6HQ67XZ7ZWWlWq1ubGzs7u7iVqX9/X3czlSv14fD4bvvvktp+/1+o9FYX1/f2Nhot9ubm5vXrl0Lw/DDDz9Eks3NzY2NjUajMRgMHj58iPgbGxv1en1jY+MXv/iFiT2yhsPhIaMwDBuNxvXr1z/55JOdnZ12u41lLtwuhQlHu93Gpnq73e52u48ePYJnF7l4PXjwADjUbrdx69Tt27fJQ8wY89Zbb5FT1p07d3Z3dx8/fjwcDulmqt3d3ffee6/Vao1Go8FgsLu7C2bgf0XuVZ9++inF39/fR+ZbW1snt0g1STKFKTOfIZOTU/gT7UppKphJLOL55Dg/CeLDytmYt8CG9fn4xGCDZ+JpWk/7JebvYnW2KlhVJ1PyNAkXKOTxeHz37l3a27ASVvZ5iHVvmUJ0VsKVSBDNJHgcrA6VYyqVSnQoz5WPJhzJLivCmhgvXZN1jkLTC11NXUG+qsYjwNcL85hms5mpvdI0ve4OKRXG053TFD2/Nj4T8osrJU0cfd8qrhPdEp+BrNejCc49jS5eZfOksoZMHEJ0MaF50iyK/HU4Z8aVoWDYX7o/midJmjrOQK4KzlYiwQZZN74iJB6IhLXlIZQV3UnFE7pMvHjL//oT6nx0trz0RE5Skq6dLt3YxAjYgHNBVthIQ/5um5h2onqHp3c/7+Sq48QrRqtgrX3fKq6zAxseNjjnY/YN2mOHTaaQDN8Stwqax3HxdDxt/XUcV31cuYmidVr+YG1UV9o0NFuq2UpZVFmADWEQtb1LNPritlfxS2CjzahRIGG9ATDZkKvSXfm76uJPpSNbkVWwLfjBVYauU+Kzkb8bJnZbkc/EBhuurP4IyF/NTMQz1JlTic8cNo5jp6lJimkExSS2tXsur2Py3oZHXh6ORXkepq1vOQNW7j3M+JPoImYjf9UWRYvK/+7du9itDeOdYVxvzu887/f7+r5017XqdC5kb2+PjokEQSAOjlAIP1yCQHHcJGBEgVtbWzyQfjkhDnbIEVKtVuFZi18QhYD4Myda4OIhFE5vrc+cisXiic42BFkkWTfSAAACPUlEQVT7BQ/0vNKBp6Pbp0nHNqScpIATfxzK3Cq0OWFjhlv3rTlY1cBVCt/24KgjKuj0pNIi44VZA60RXNF024hXmg1rtUXCSVIP0Xm6cvNTogSI5mn79Pz46fPPP8dRDBwaBy3FhL/Ly8viVc5BOhP+fO7cORFHJET8c+fOiSIEP5SVixNreD6fR0VQFq+yYCnPSPylmMvLy64IHkIqOgGzqON+ifG15k+SLKOI7+kyi1LFZ0J+ISQKx5WDNXxRPJ8CbOhzf/otnHRFBZNhg//Vzx5KFKW/DazFiaz87eSplydJippNZZ4Yc1FX08yjkd999x2mn3BsLRQKFy9epFtJSqUStqPxQIGIwy8vKRQKdNcIEULy+TxFptxWVlbK5XKhUKDtbopz8eJFHrNUKr3yyiv4SwzQwcBCoSBYKhQKFEiZ8Px5PlSWIM5SGuKVcr0tl8uvvvoq3+EPs18uMjMdTyPBZEGwMVncCOaZkF8IicJx5aDDF8jzQuwGd7SdsEaENRCwoR33j46O9L1Vx4lXGc4mZSFB/WoGcuXsKtqTgz/tcbq2zxTZn4kWlEtWicx4oiEc93ZgcYnWmlwrUfz0X3oSX/fj+bjIujPh2mOwkuvchrgT93RoPB7jd/4Bo25iT7svnKwFpWd4IRWfk05aRFahnVDdZ9alNM2XqK48k2yfaXpBL+gFvaAXlEiz2fcTokVxRfm8gI0X9IJe0AtaMC3E3J9BQu1ewMYLekEv6AUtmJ61eT8pQu3+H751XMASgj2QAAAAAElFTkSuQmCC" alt="" />
/*
* This routine handles page faults. It determines the address,
* and the problem, and then passes it off to one of the appropriate
* routines.
1. struct pt_regs *regs: 发生异常时使用中的寄存器集合
2. unsigned long error_code: 提供异常原因的错误代码,error_code目前只使用了前5个比特位(0、1、2、3、4),语义如下
1) 0 bit:
1.1) 置位1: 缺页
1.2) 置位0: 保护异常(没有足够的访问权限)
2) 1 bit:
2.1) 置位1: 读访问
2.2) 置位0: 写访问
3) 2 bit:
3.1) 置位1: 核心态
3.2) 置位0: 用户态
4) 3 bit:
4.1) 置位1: 检测到使用了保留位
4.2) 置位0:
5) 4 bit:
5.1) 置位1: 缺页异常是在取指令时出现的
5.2) 置位0:
*/
dotraplinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)
{
struct vm_area_struct *vma;
struct task_struct *tsk;
unsigned long address;
struct mm_struct *mm;
int write;
int fault; tsk = current;
mm = tsk->mm; /*
Get the faulting address:
内核在address中保存饿了触发异常的地址
*/
address = read_cr2(); /*
* Detect and handle instructions that would cause a page fault for
* both a tracked kernel page and a userspace page.
*/
if (kmemcheck_active(regs))
kmemcheck_hide(regs);
prefetchw(&mm->mmap_sem); if (unlikely(kmmio_fault(regs, address)))
return; /*
* We fault-in kernel-space virtual memory on-demand. The reference' page table is init_mm.pgd
* 我们因为异常而进入到内核虚拟内存空间,参考页表为init_mm.pgd
*
* NOTE! We MUST NOT take any locks for this case. We may be in an interrupt or a critical region,
* and should only copy the information from the master page table, nothing more.
* 要注意!在这种情况下我们不能获取任何锁,因为我们可能是在中断或者临界区中
* 只应该从主页表中复制信息,不允许其他操作
*
* This verifies that the fault happens in kernel space (error_code & 4) == 0,
* and that the fault was not a protection error (error_code & 9) == 0.
* 下述代码验证了异常发生于内核空间(error_code & 4) == 0, 而且异常不是保护错误(error_code & 9) == 0.
*/
/*
* 缺页地址位于内核空间。并不代表异常发生于内核空间,有可能是用户态访问了内核空间的地址
*/
if (unlikely(fault_in_kernel_space(address)))
{
if (!(error_code & (PF_RSVD | PF_USER | PF_PROT)))
{
/*
* 检查发生缺页的地址是否在vmalloc区,是则进行相应的处理主要是从内核主页表向进程页表同步数据
* 该函数只是从init的页表(在IA-32系统上,这是内核的主页表)复制相关的项到当前页表,
* 如果其中没有找到匹配项,则内核调用fixup_exception,作为试图从异常恢复的最后尝试
*/
if (vmalloc_fault(address) >= )
return; if (kmemcheck_fault(regs, address, error_code))
return;
} /* Can handle a stale RO->RW TLB: */
/*
* 检查是否是由于陈旧的TLB导致的假的pagefault(由于TLB的延迟flush导致,
* 因为提前flush会有比较大的性能代价)。
*/
if (spurious_fault(error_code, address))
return; /* kprobes don't want to hook the spurious faults: */
if (notify_page_fault(regs))
return;
/*
* Don't take the mm semaphore here. If we fixup a prefetch fault we could otherwise deadlock:
不要在这里获取mm信号量,如果修复了取指令造成的缺页异常,则会进入死锁
*/
bad_area_nosemaphore(regs, error_code, address); return;
} // 进入到这里,说明异常地址位于用户态
/* kprobes don't want to hook the spurious faults: */
if (unlikely(notify_page_fault(regs)))
return;
/*
* It's safe to allow irq's after cr2 has been saved and the
* vmalloc fault has been handled.
*
* User-mode registers count as a user access even for any
* potential system fault or CPU buglet:
*/
/*
* 开中断,这种情况下,是安全的,可以缩短因缺页异常导致的关中断时长
*/
if (user_mode_vm(regs))
{
local_irq_enable();
error_code |= PF_USER;
} else {
if (regs->flags & X86_EFLAGS_IF)
local_irq_enable();
} if (unlikely(error_code & PF_RSVD))
pgtable_bad(regs, error_code, address); perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, , , regs, address); /*
* If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault:
*/
/*
* 当缺页异常发生于中断或其它atomic上下文中时,则产生异常,这种情况下,不应该再产生page fault
* 典型的,利用kprobe这种基于int3中断模式的Hook架构,Hook代码运行在中断上下文中,如果Hook代码量过多,则有很大几率发生缺页中断
* 这种情况下,page fault无法得到正确处理,很容易使kernel处于异常状态
*/
if (unlikely(in_atomic() || !mm)) {
bad_area_nosemaphore(regs, error_code, address);
return;
} /*
* When running in the kernel we expect faults to occur only to
* addresses in user space. All other faults represent errors in
* the kernel and should generate an OOPS. Unfortunately, in the
* case of an erroneous fault occurring in a code path which already
* holds mmap_sem we will deadlock attempting to validate the fault
* against the address space. Luckily the kernel only validly
* references user space from well defined areas of code, which are
* listed in the exceptions table.
*
* As the vast majority of faults will be valid we will only perform
* the source reference check when there is a possibility of a
* deadlock. Attempt to lock the address space, if we cannot we then
* validate the source. If this is invalid we can skip the address
* space check, thus avoiding the deadlock:
*/
if (unlikely(!down_read_trylock(&mm->mmap_sem)))
{
/*
* 缺页发生在内核上下文,这种情况发生缺页的地址只能位于用户态地址空间
* 这种情况下,也只能为exceptions table中预先定义好的异常,如果exceptions
* table中没有预先定义的处理,或者缺页的地址位于内核态地址空间,则表示
* 错误,进入oops流程。
*/
if ((error_code & PF_USER) == &&
!search_exception_tables(regs->ip)) {
bad_area_nosemaphore(regs, error_code, address);
return;
}
// 如果发生在用户态或者有exception table,说明不是内核异常
down_read(&mm->mmap_sem);
} else {
/*
* The above down_read_trylock() might have succeeded in
* which case we'll have missed the might_sleep() from
* down_read():
*/
might_sleep();
}
//如果异常并非出现在中断期间,也有相关的上下文,则内核在当前进程的地址空间中寻找发生异常的地址对应的VMA
vma = find_vma(mm, address);
// 如果没找到VMA,则释放mem_sem信号量后,进入__bad_area_nosemaphore处理
if (unlikely(!vma))
{
bad_area(regs, error_code, address);
return;
}
/*
搜索可能得到下面各种不同的结果
1. 没有找到结束地址在address之后的区域,即这种情况下访问是无效的
2. 找到VMA,且发生异常的虚拟地址位于vma的有效范围内,则为正常的缺页异常,则缺页异常由内核负责恢复,请求调页,分配物理内存
*/
if (likely(vma->vm_start <= address))
goto good_area;
/*
3. 找到了一个结束地址在异常地址之后的区域,但异常地址不在该区域内,这可能有下面两种原因
1) 该区域的VM_GROWSDOWN标志置位,这意味着区域是栈,自顶向下增长,接下来调用expand_stack适当地扩大栈,如果成功,则返回0,内核在good_area标号恢复执行,否则认为访问吴晓
2) 找到的区域不是栈,异常地址不是位于紧挨着堆栈区的那个区域,同时又没有相应VMA,则进程访问了非法地址,进入bad_area处理,访问无效
*/
if (unlikely(!(vma->vm_flags & VM_GROWSDOWN)))
{
bad_area(regs, error_code, address);
return;
}
if (error_code & PF_USER) {
/*
* Accessing the stack below %sp is always a bug.
* The large cushion allows instructions like enter
* and pusha to work. ("enter $65535, $31" pushes
* 32 pointers and then decrements %sp by 65535.)
*/
/*
* 压栈操作时,操作的地址最大的偏移为65536+32*sizeof(unsigned long),
* 该操作由pusha命令触发(老版本中,pusha命令最大只能操作32字节,即
* 同时压栈8个寄存器)。如果访问的地址距栈顶的距离超过了,则肯定是非法
* 地址访问了。
*/
if (unlikely(address + + * sizeof(unsigned long) < regs->sp)) {
bad_area(regs, error_code, address);
return;
}
}
/*
* 运行到这里,说明设置了VM_GROWSDOWN标记,表示缺页异常地址位于堆栈区
* 需要扩展堆栈。需要明白的是,堆栈区的虚拟地址空间也是动态分配和扩展的,不是
* 一开始就分配好的。
*/
if (unlikely(expand_stack(vma, address))) {
bad_area(regs, error_code, address);
return;
} /*
* Ok, we have a good vm_area for this memory access, so
* we can handle it..
*/
/*
* 运行到这里,说明是正常的缺页异常,则进行请求调页,分配物理内存
*/
good_area:
write = error_code & PF_WRITE; if (unlikely(access_error(error_code, write, vma))) {
bad_area_access_error(regs, error_code, address);
return;
} /*
* If for any reason at all we couldn't handle the fault,
* make sure we exit gracefully rather than endlessly redo
* the fault:
*/
/*
* 分配物理内存,缺页异常的正常处理主函数
* 可能的情况有:
1. 请求调页/按需分配
2. COW
3. 缺的页位于交换分区,需要换入
*/
/*
handle_mm_fault是一个体系结构无关的例程,用于选择适当的异常恢复方法
1. 按需调页
2. 换入
3. ..
*/
fault = handle_mm_fault(mm, vma, address, write ? FAULT_FLAG_WRITE : ); if (unlikely(fault & VM_FAULT_ERROR)) {
mm_fault_error(regs, error_code, address, fault);
return;
} //如果页建立成功
if (fault & VM_FAULT_MAJOR)
{
tsk->maj_flt++;
//例程返回PERF_COUNT_SW_PAGE_FAULTS_MAJ: 数据需要从块设备读取
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, , , regs, address);
}
else
{
tsk->min_flt++;
//例程返回PERF_COUNT_SW_PAGE_FAULTS_MIN: 数据已经在内存中
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, , , regs, address);
} check_v8086_mode(regs, address, tsk); up_read(&mm->mmap_sem);
}
Relevant Link:
http://blog.chinaunix.net/uid-14528823-id-4336332.html
11. 用户空间缺页异常的校正
我们之前讨论了对缺页异常的特定于体系结构的代码,确认异常是在允许的地址触发,内核必须确定将所需数据读取到物理内存的释放方法,该任务委托给handle_mm_fault,它不依赖于底层体系结构,而是在内存管理的框架下、独立于系统而实现,该函数确认在各级页目录中,通向对应于异常地址的页表项的各个页目录都存在
handle_pte_fault函数分析缺页异常的原因,pte是指向相关页表项(pte_t)的指针
\linux-2.6.32.63\mm\memory.c
/*
* These routines also need to handle stuff like marking pages dirty
* and/or accessed for architectures that don't do it in hardware (most
* RISC architectures). The early dirtying is also good on the i386.
*
* There is also a hook called "update_mmu_cache()" that architectures
* with external mmu caches can use to update those (ie the Sparc or
* PowerPC hashed page tables that act as extended TLBs).
*
* We enter with non-exclusive mmap_sem (to exclude vma changes,
* but allow concurrent faults), and pte mapped but not yet locked.
* We return with mmap_sem still held, but pte unmapped and unlocked.
*/
static inline int handle_pte_fault(
struct mm_struct *mm,
struct vm_area_struct *vma,
unsigned long address,
pte_t *pte,
pmd_t *pmd,
unsigned int flags
)
{
pte_t entry;
spinlock_t *ptl; entry = *pte;
/*
如果页不在物理内存中,即!pte_present(entry),则必须区分下面3种情况
1. 如果没有对应的页表项(page_none),则内核必须从头开始加载该页
1) 对匿名映射称之为按需分配(demand allocation)
2) 对基于文件的映射,称之为按需调页(demand paging)
如果vm_ops中没有注册vm_operations_struct,则不适合用以上2个方法,在这种情况下,内核必须使用do_anonymous_page返回一个匿名页
2. 如果该页标记为不存在,而页表中保存了相关的信息,在这种情况下,内核必须从系统的某个交换区换入(换入/按需调页)
3. 非线性映射已经换出的部分不能像普通页那样换入,因为必须正确地恢复非线性关联,pte_file函数可以检查页表项是否属于非线性映射,do_nonlinear_fault在这种情况下可用于处理异常
*/
if (!pte_present(entry))
{
if (pte_none(entry))
{
if (vma->vm_ops)
{
if (likely(vma->vm_ops->fault))
return do_linear_fault(mm, vma, address, pte, pmd, flags, entry);
}
return do_anonymous_page(mm, vma, address, pte, pmd, flags);
}
if (pte_file(entry))
return do_nonlinear_fault(mm, vma, address, pte, pmd, flags, entry);
return do_swap_page(mm, vma, address, pte, pmd, flags, entry);
} ptl = pte_lockptr(mm, pmd);
spin_lock(ptl);
if (unlikely(!pte_same(*pte, entry)))
goto unlock;
/*
如果该区域对页授予了写权限,而硬件的存取机制没有授予(因此触发异常),则会发生另一种潜在的情况,但此时对应的页已经在内存中
*/
if (flags & FAULT_FLAG_WRITE)
{
if (!pte_write(entry))
/*
do_wp_page负责创建该页的副本,并插入到进程的页表中(在硬件层具备写权限),该机制称为写时复制(copy on write COW)
在进程发生分支时(fork),页并不是立即复制的,而是映射到进程的地址空间中作为"只读"副本,以免在复制信息时花费太多时间
在实际发生写访问之前,都不会为进程创建页的独立副本
*/
return do_wp_page(mm, vma, address, pte, pmd, ptl, entry);
entry = pte_mkdirty(entry);
}
entry = pte_mkyoung(entry);
if (ptep_set_access_flags(vma, address, pte, entry, flags & FAULT_FLAG_WRITE))
{
update_mmu_cache(vma, address, entry);
} else {
/*
* This is needed only for protection faults but the arch code
* is not yet telling us if this is a protection fault or not.
* This still avoids useless tlb flushes for .text page faults
* with threads.
*/
if (flags & FAULT_FLAG_WRITE)
flush_tlb_page(vma, address);
}
unlock:
pte_unmap_unlock(pte, ptl);
return ;
}
我们接下来分别讨论handle_pte_fault中针对不同缺页校正方式的处理
0x1: 按需分配/调页
按需分配的工位委托给了do_linear_fault
\linux-2.6.32.63\mm\memory.c
static inline int handle_pte_fault(
struct mm_struct *mm,
struct vm_area_struct *vma,
unsigned long address,
pte_t *pte,
pmd_t *pmd,
unsigned int flags
)
{
..
/*
首先,内核必须确保将所需的数据读入到发生异常的页,具体的处理依赖于映射到发生异常的地址空间中的文件,因此需要调用特定于文件的方法来获取数据
1. 通常该方法保存在vma->vm_ops->fault
2. 由于较早的内核版本使用的方法调用约定不同,内核必须考虑到某些代码尚未更新到新的调用约定,因此如果没有注册fault方法,则调用旧的vm->vm_ops->nopage
*/
if (vma->vm_ops)
{
if (likely(vma->vm_ops->fault))
return do_linear_fault(mm, vma, address, pte, pmd, flags, entry);
}
..
} static int do_linear_fault(struct mm_struct *mm, struct vm_area_struct *vma,
unsigned long address, pte_t *page_table, pmd_t *pmd,
unsigned int flags, pte_t orig_pte)
{
pgoff_t pgoff = (((address & PAGE_MASK) - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff; pte_unmap(page_table);
return __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte);
}
大多数文件都使用filemap_fault读入所需数据,该函数不仅读入所需数据,还实现了预读功能,即提前读入在未来很可能需要的页(..)。总之,我们要重点记住的是,内核使用address_space对象中的信息,从后备存储器读取到物理内存页
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAg8AAAHsCAIAAADaf9lEAAAgAElEQVR4nOy9X2gk2XU/vg/LFwQOQ2xo2Icx69DZxGjYlx5wQB7ipYeFoJmsQyvDPAhpvVZJmY2ljvynOsp6IynjXVQ9WTtuMWRD9cBsmB6vF0flZddIHoyhMyGGkX4QU0EPAWEIfig/TF76ZZ+qfg8nfXL6nHtv3aqubrXG83loqm+de8655957Tt0/deuZ5Cme4ime4imeIg3PnLYCT/EUT/EUT3EG8L/RIo7jaGQ4OTkJwzAMQ3kLE5GGUbLEk5MTll2CsdJxo3cZZRzHcRwXZeJiuT3FU5wVxH2MR9YYpPyW43+jhed5c3NztdFgdnY2a5ZqtVqtVmnGarUKrOACU/AvzcgS5V3gjJT0wvO82AJoQRtiZbfJSp9ouoSBs6HilbKGUZJxYLeUgswangrM9k/0XklZRuUtpd2SQZukqnHq0BVHd3cMsFHsKZS2MhDTv/8bLbrd7l//9V93JwbwpP/o0SN5a39/v9vtdjqdIAgwkV4fHBxIegagobk++uijbrc7Pz/vOI5968xKxupAV0+ZmviQ/UHZXJSdzaCtoexKymEUHhss9YxVjjJJ8/jxE+TddOU1NIxRING4Qkrw2wyd0ezxv9EiDMPt7W3dXM0oEARBEARDctBxC/rQZcGAhIDgAUOQsD89Zdk6MzXiZIzRwqZN6AhkXoO2qUWWlAaVlCIy0RcCS6GxPloY+MSDTs1MeSrFt4euLzCakYJK0ckdm0EmFswOWW3yf9Fid3fXMLkf9pcNhvHvRQGcvi5agN83RyNdtHAcp1QqwcTU3NwcrmEY2qhNO6YXNtWZqRYNxEpWyu5kmdcgRfZbnao5uu4kd3VZy5jOLszZDXcnufiIfL2jQCQi9LK/p2WZCQG1BqZk4sCjRfGufTgYxgc2QxOgkbFBSQnRYmpqqlwuVyqVSqWijBZJ3j5gqB7JOVMj0NW9sn2wRHnNdDZrmyrRoPbZ7cCxcEkjstgEWokWRNmQWIMfEpZMqGipxlMkWWYLdAQjiRbgeX3fH3KuaX9/3/d93/cZc3phHu6AJvv7+/RvqIofLFpAwLCMFqwyzO3epnoyNXGqkrwl2wdTRqe/WaJSlr3OOiZnBawZYGKOEplzTaCJsjbO1B5h03EM3BLRhhlxYSU/4zCY3ZCF/h2IFkqHS7e6Wrp413Udx4FdRrkDhu/7uJfJ8zzq1ukFRAvlvJPv+6BJvV4PyWIGErMLnImCgcXMzIw5WiSiq6c2+tS2a0mmzKKseJYilZG9y9CSWG9UCsqq/Nnqz+aulaM4T5IFJKVNjzCg1+vRTe1mVskZNOY4IW3FLpRZ6N/0aGEGbCsKyZzP3t5eu93udDqe583Pz4f9B/kgCPb29mCHko4bboja399vtVrf/va3Ye9T2F9XuHv3brvd3tvbA+cO9J1Oh25w+tnPfoZLF5DyxhtvYEiAW6+++ipogjQHBwfmsUUy2LJZBdhAVwdKzvKurEWzLGVrkASydIbmwrKkKq/krCyjGTrLjBTm6mB2s8mSpM1Ejb+MOaBsY0nGvmCPXq9nuJvoW9eZMOY4Ie2WqLo/sydFAdGC/nVdF19lqFQq1WoV3DEONQDtdtvAELx2pVK5fPlyrVZzXRef/fGlkGq16jhOEARbW1vlchlmq2A4Mjc3x3RbW1sLyQDC8zzQDeC6bkhWuXHdgo0tpLmVJja37GSwNSv5WFZ8IvqJvGtoNFITGwVi4R8NajBNpAUmCkozptrQcG0pTtk2JhmyPccadzMeJBqzU4KnSPTuS3mt5PB/0WJjY4M5bvMWKRktPM+rVqudTgccN8znBEHQbDbBswOx67pbW1vmaAE+fXt7m92FoQa4dQxF8EodzilBbAjJ1qlGoxEOzjstLS2xOIe6wUzUSMcWuqqyb9xKzrILGfJKAhsFYlXnNBcwVZ8JgbmCzBnj4aIFvZhwKyWTFy0QZj2fQtpKXsfGRmiKFpZAt+s4DosK4NBXVlbAm+OtRqOhW89g0YItNiwtLeEYBUJREASVSgX4w5I4TH+xaMHWJyBaUJVQZ4gThlVupYkzNWiblEyNICu9rk2kKhCrooU5Y2oTnBDksIaSCc1iyB6LaGGp1alD2XSTSYoWTJ9TsdLEghkqzhctbt26NXy0oFEBhhoQLWB/FPrler2Of5WhQhktXNedm5uDkOB5XrlcDoKg0+nA2AJF0EgAbCFaUEBUk3Jhldu8J0ppYkPDNefSpeSr/tS7ZkG0uShpmM46zrJoiaqZ5i5y4dDVYybdMtHrzCj1sVdgPFDWe3La0UKpUjLZljwtxKJvJlmjxTBjC3wwRy8cBAEsXQRBcOvWLbr24Pv+jRs3qDdn1/DreR6oRF05zE0F/YUNSIe1h6A/tlhYWKCRKejPTVERa2trUnowuCdqenr6VMYWWZu1mZ4x1IlWctNxVippLqwhow3y5crKn/1mEqq0m4FDKk3u9jBqxBrXbG75o0MyWGXxoL9jlE8BYFZKhPWU5uKr3PT1hUePHqUGiUePHgX9bVHdbrfZbC4tLTUajaWlpYWFhcuXL7uuu7e312g0VldX19bW1tbWlpeX33vvvYCc0UT3JgFzz/NWV1e/8pWvuK67ubkJ3rzT6dy4caPRaMzPz9fr9atXr66urnY6nWazuby8vLS0tLS0ND8//+Uvf9nzvG63CztoXdd99dVXXddttVoYId566y3HcVZXVx3H2drawl1VjuM8++yz58+fL5fL09PTJycnhjaaZO8hNFdSUJvWZVHyVEqJNV5S5tWl62wiy8vS7cuYwzKZwNTOKjFrAc00soVMDqRKrOxjBupAjaYkGKORJhTURInGaJIMMXBOFHpqWIFwCRzH8X2fumBIBIcLxBA/cPcqBhW6xZYORGD5AbLDcX4gBfNixoAsLdAhiHJcojvVg1KGg7NedPiCO2inp6dD/VFR1PrKNmrIYlOpQ7aJRHguSaNsH8mgI7PUVkmpNEuS5ijt5Y4CYxOtNIKywaTy6fV6I1FRP4g0EFv2hUwwM0wGW5ry4ikSu+lleYv+VcxEwaqA53mbm5ue57muC7+4S9XVIBhch2BOn7lpysfzvFarBVIkEwolc2W0YAFG5mUEwMd13ampKVi6OJVoEQ/6U5ssSiZSroFG/s0k11JQItqlOeOpYGz6KO3M6mIMaqRCqmFf0eOE1CR5Gi0GYVNx5iw8WmQ9/AOdNXvGp6BDBCV0sYH5emXAoOMGtpbOaJjaLIpARogWuMptHy0s27GhzujdIZt41t7CipNDGYMgc5c2tNRTwWkpo2xX41fDBvEpxQNLSN1O22CTAoM1dLdic7RIjQ1KJzs8qNPXRQsaG1C0zMgCmI24kIwtYGABq9xFRQt6IStJR5m1oesUk9WvaxmMXldkyYepraSX6imvDaWzN0UOKPW0zJiaRdcAlNLt2Y4ZsqGOAcPLQuVP03bDgRZkGCaJxgNQUyeD/ZqS/V+0WF9fD9Km9UcXLRhwlDC2jEF/NaXwsYWuppXptNpytA+lYkoCnT6UgHHLKpqm00SlDc2c81kjE2J9X0rNOAr1zI1nzJDNMq29TwQSVRg+ixiD/rExTgD+L1pcvXp1o4/1Pm7evLlOsCFA766srKysrHzta19bWVmBvzdu3Lhx48b6+vri4iIkLi4uLi4uLi0t3ehjcXFxfX39a1/72mIfKysrcHFDABLX19dZIgVKRIK/+Iu/QCVBHCoArNbX11dXV9fX1y9duoTrFhcuXCgwWmTKnql9yCw6ccpGkKoeIzO0Mx0Tc0kTvWeUeW0Mkg9ZzU4zmrPY16O8GEPBbaCrvgkHKn+61hsetDijYJ6I9s9sCHgGM+Bbb9VqtWSN8+fPs5Rz586VSiXwuVNTU3ABKJfLmEgBd5955hlKzFgxYMZz585RJiiXEsNYARWQnDGdppjHFvHQAcMGUoSushNVk2IZddkZDbtmlJmaoLIt6pjILFK6WQel9TJBmt2sqg2ZpSas+InRDjYMh4e5KU4+mD1l6cZjxuFBizMMkyEFPcPo4jiu1WplDaanp+FUDBtQT43OGtMZyuUyRAslpY45dfTyLrxkV+5/2oheQJDDSSclZmZmRhotbPLa1Hes8m423CQl48NyGZhIfWLh8gxFUN5SSrfUYRhkVVWnEjWjWZySLJXtqSC1xU4UmM6yLGO3X04o9c/BJPWWWUrmaIHX4Hanp6cZPdDQoEJzGaIFDBEocwaZqAwkIK7UPxywVCrpghwNS5VBlEcfLWzA2oqyLmPi2dk1Y6XLbhAXW7hFHc9MuXSaK8nMcg2FtVQ+VXObAtoX3Jw9dy0MD1kLyqY1sdCVAtPHY8bhodQ/B5MhBQ1EC/iFQzV0QMeNnwzC88nhFhwDTp/lWbRQuuxKpQKzQJAROMzMzFA+TA0MVzQSwFHkjBJoKv1TyuFEQloQKgL1n5xoYahLTKFZdKwMPOktHb0yO208BoaSzFA0qoCOfnQw2AoJlNrac0gGbaI01KmUXQdDu5pkyCKYU55sULPojCPtRqEYWwT9A5ck4PA+M/b394MggPf7dNnpBVy3Wi1w2ZCi1AG3PCEHeK2PkckUtlEqDENJgGehIzqdjk1bzNGC7QlkvcrssikkKved2hRilbO2yWhQzzKLrghZOQwDZnCldIPlDQwt5SbCKQ9RmiIhlYnPDqjOiV2TlnmfDNiUy0ygiBZZofwUIk2Br18hWdQHS4TnekmjlGjQx/yxLUlDudl805Eih91SsyhrN9a3bFnTklts7CFMhC6jTgeWV9LLC5ldKcKs9oiQKlSWLofaw1h7/GDanhWwIsSq3pdoKjSeJPsXAp2J5F9Gjxz4TJSZ9SgAjrvX683MzGC0mHyMzUrmmk7VwUBgbkCsVTChlu3P3HCVfJLBjp3YOV+qbSqZOSNTxlBYVhalNXQGNBgtVYGspRsSNnqeFRhKNAmmHhJmtYe32zNKvsjdIG9I8Qy9Xg/WPwrkOVIMXwH2Ulg7yCSdUiYWnpcJilUVnagcq1l/M5Tl0kkx88kkVyrA5OqMoFTboFKSZnPJx0w8BrBSwxpeoql0XfokwKAblpT+pYk2JrJJLBBKbeVdnW6W5kpUzdIqWihNby/eBqOOFgWqigyz8syhQ6Zqlrl0lWWu7lRxmVqeGTk4p7bYWLRyGzUSYqtYtHNGmZVzoilpkta9DXwyqWEvSJklSRLdzLAs2oQgGaxQvJbWiPW2TRWh4yZphqkvS+b2GlqWi8nKPLbIWjZLTM7YwrIshZR6RIKUlaJjkpV/UTVu4J9JDbM+ls27yAKMHuaeaNM9LTlQ4pis6kmGZ2UC+bSgM3hRzAvhZq7EJF+0wMzsgvLNqmiv14Otq1kzIjK1V7kSbrM2bqOD7hEsVT0bgkKU1CEf85GqlAraSi2JbRLPClLdvdkylllSTdTr9VjrxVbBtpCw3hEZgZwZUpvcMD3ltznsDRUtDC1J17ayNla8xmhxirX1ZDeU1D4/Bg4FSk9tXTK7sulmYsI0OXWD2HfYbrdLHW4Yhvv7+wZ6mzLiLZvti6mBgdEr+bAsBrky1+k+1gBsGszpNioDktRoEWvmsGLj9G5s99DHbhU1E3V8fHz79u07fdy+fZv+pYkUmI40//RP/0QT8ZcxlKxu375969Yt9itvMfzDP/wDS3/33Xfv3Lmzu7sLWe7cufPuu+/eunVrlwAy0ly6ciHeeeedd9555/vf/z7qA7kYH+Dfbrfb7TYIAtzsA/5+73vfo3cZNjY2mMK7u7vb29sbGxvf+973tgdBCfAvS282m/Ruu93+x3/8RzQFyGJFSAXTAcoLAHFKTfDvm2++KfkgAf6ydCwIBRWnU/Ltt99+44037L+XB53izTff3Nvb29/fh9+trS3XdWNVyMnU14IguH79+sLCQr1er9frKysrcPHaa68tLCysrKzAL14ADUO9Xl/uY62PZRXqBDIlBxqNRqPRoDzpXwbUUN769re/jaxAq2984xvwt9HH66+/Dn+xgK+//jpcYyKkr62tzc/Pw6ejb9y4gWahplhaWsIsS2lYXV01/KWAT2IjwdWrV3/961+ju7YaWyB1PPhMZwgkhvanu1VUtPjwww9d16WPIScnJ/hIBcAUSGRPOkgmU+Qt/JK5+elpGMSaRzNduiSjMwPyLkWkempT0sNf9shmZi45ZwVYexgOY0NEHqttyOzZsiG4ssOylI2NDfouquM477zzDmWb2vdlR47j2HXdarUq32y1QafTwddm/SE+NJAJ9DsLyq8zsG5uw4elyC/xMGJGKSUqvwohxSmvqQI6JqnlQoJKpXJ0dIRtINtMVKwaQxjaqI5M2f4KjBae5+XLq+wSTwZ0Hd6ArO85jgE4RZ6oRroMT2RtHh8fVyqVKIpsehzmWl9fpw80vu/fvHmTsjV3eZ0yEC3MDkjnlQx3LYNHSD6JJhkyF0y/9xyIT2pSPkpvjmzZd6N1YM6auWydlFATLVh2XUl1/C2NGQ5+ijQIgkqlcnBwgC0kz9iCtRjLvObWHBcXLe7fv587WkgYusrkYwzKn9Z0sGxdp6KGGaNQLIoijBapXRUT19fX6XE7ruvevn2b6aljSC+YMq7rVioV6cXo9yuZt9W5PKX/snFzSui+7kx9qO6zm4F4Btc5dENsUEYLZYruls4Ium+DshRYqWIxQydFaYEwDCuVytraGrScOI4zRwvWGVijNOSViQwQLYafZHjw4AGUTSfIHrIIQzLMLV13V6pHs4xZYYohRRs8FCWQ7kzX9obRLbXqzQ27WGC0YKJ19Q6DiXa7HQQBdR/7+/u1Wg2fq2TPtSmR53k0WqD3oY7YPlpQF69zZxLgmpXDEcmB8pduN59bt8liA5k9UH0T2syBUtLqTi0OtQmmVCoVPKg7iqLMM1G0RdrnsmmCBUYL6AOpbX3yobS5vI5VwUNJb66CYXQzU+aQmJpFZwpL6cxWErpFnUxSsiK1mpTRQqlGkiQw6eT7/ubmJpzXWalUXNeFgzvhVynXpp1EUQQM6QeY0e8rfTRAN9EkY0yYFi10BHSWCcBig9KNyrGFct5Jel6l2kpKG1D1lDZJzask1pnLcBc/+lAqlWyjha4p2+e1aYJFRYuf/OQnm5ub8QiihVzUHSlSu2uijyVnGoldGMjKLTX9k08+wevj4+Moij755JMeQRzH//Vf/zWkPkNCFy1kV8XrXq/nOE6v1wvDcHp6utVqHRwcvPfee3t7e9iebbq/1ISOLdCvdbtdXPeGi06nQ1fC4fru3bs0V6fTgRQbMIYHBweMAFKAOfxiCqgHF+gumf7Me6LDZbkQjx49orfgOlQFm5OTE9hio3P33T7g+tGjR1goWhxKz8oOeUElqs/BwYEkpmVhdzudTrlcfu6552B4cXJyYrWDVtmeaLtUZjHTSDiOY4gWhrws/cGDB7g7UNfQsa0zq7muC7NYlIxqeP/+faUCBkG5QctlLrslpU5KpnQbKKs+n5REFRFpYQ1SWEoURaxv0MeuIAi2traQEp7B4cG8VqsBge/7ly9fDgdPTII+Zqm/gUbX0Zgxe70ejRa6LDRXEATz8/NQ0or++8EGDrqC0GjBHI0yhX53IN9OKqV/pHfZ31A1rKGDG0Yjn6/Z47lMpPB9HynDwVFC2J8aYqFCyTAY9OAsXRZZllSmSCgtCbmg5ZfJt+wcx8lwTpSB0sxE5lU2VvgKk3mwb3MLo0UqqtUqCxjVahXz9no9ZvRKpXLv3j2sOc/z4JHNRlY+JGkxIAerEdGbWRXIjXG2J2O9HXdw+r4PH1YJ+k4fooXv+xBgsFlGUbS2tkY5B0Gws7Pjum6tVlM23Rxm13Wi2CJaKOU6jrO3t+c4DnzmMjDGttR+imBji6D/5ZiAxAb6/Rjf9zEAu64LNOib4Fs1Zu8WBIHneVtbW2wuC5jTRKaA53ntdpvSMDdNufnkuzs0EW8xDvQjOhAtpIggCLrdLuwvCFSxAWWBXHaLysUU1Ac+KWQ2pu/7Ozs79NNB9BZMTlLlg36/wM/N5Y8Wqe2bUZpbITR9+KRd1pkoGNbRFHjfwpwLNmLC5j+a7jgOrvvBnC8aFybKmJV93x/P3NTwDjeH2xpG3CigfMmApdgzwc24GBtiUmpMCYKAPo8vLy9TslqtBmMUpGfIWnGpvQmiRWj8qiOyiuMYPFQcx2EYwoZX/EZkrVaDN5Ps1UPA4rkcWwD/ubm5IAhgxxR+mLJarcI1BK3l5WXoQfRjl6l7Z33fn52ddRyHUjYaDeAPvhi0qlar8AAKcuGDCDBkpAxZtMCeDhmbzSakgLsEHwVPmZjRcZzZ2Vk4igKCMfXdAYkNUFgwO6UBQzmOMzc3B6IxYDSbzWoftVrN9/1ms4nVBxdXrlxBZZCSKUmZYBFgpwMkwgWLMfRz1CnRwuzxU28ZCGhrRuSIFlEUzc/Pg1Ewo+XYIjVaxMSzgLmDIGAvr7G31aQIsw46PyLTLT0Onc62zzX5gILIB2olpSF+R1EEjsb3/a2tLaxrcHmUEmeiPM8rl8vom65cuULJHMc5ODgIwxB6slKfHHVn6E3KsYWOG7g/ut4G0yC47m0TdeLBSTz69qXruugf8cEWnSxGAs/zFhcXYQsWfEfZ87z5+XnIiA+229vbYEb6lCYDRqfTAV8BbhcGLuAKkR5EoHeG+OH7Pkx3s1BBA0atVsNQ5Ps+KglxDpsEyIIJBuCM6cCKDm5YWEI11tbWUBNw1u12G9pSrVYD+vn5eeQAQ1ggLpVKGHIajYbjOBiQIHFnZwdLCtEIh3flchkGGc1mEwwOZJ7n1et1amrYEwXwfX/k0SIhYxT5l7ZIeBCA5qt7GZidMhbHcbvdhugHbSIMQ/toAabHrgWuhOaF9DAMsdED6II8fhmQKskE0WPXaC5WNKWSsUXUUdoqHvSngZh/0OWiom2kM2AdmdmaLaCUbthlwMQZpEM9hmF469YtfLJmI4MoiuBhCroQRoswDFm0AJVc12UP6YZ2boCyv7C+85vf/KZcLksvLwVlkptKA+OncrncaDQwZtBogfA879q1axhowamtrKyAq4VHfnDEYFUY8cDjP3reIAgcx4EU9PhMCjzyg+PGagJcvXqVhQ1wi/QFEQrw4+12m41vFhYWMOxBewA4jkObB7yUEJCZqLW1teog2DqZ7/sXLlzAiSkYuAANRAVw/QsLC6ghTA21Wi2cUUS1wZuDYmAuMF3Qj9849QcxAOQuLCyAx3NdFy5mZmYCMi1WqVTOnz+fZ09U1ls6Al3jdhynVCpduXKlWq3Ozc1duXLly1/+8jzB3NwcpM8RXL9+/dy5c+fOnXv22WfPnTtXrVZXV1ct1y02NzdbrdbR0dHBwcHR0VG3252bm6N5j4+PgyBYXV0tl8s7Ozvdbvff//3fDw8PV1dXHccBmsPDQzjuZn9/H/9ubW3V6/Xr16/DETF/9Vd/tba21m634zg+OTlptVrwYLu9vX1ychLHca/XoxtyAL/+9a+bzWaj0djd3X3w4AE4o263u7y8vLCwABtawjCEw222trZeeeUVOHDmL//yL5eWlnZ3d6kvoH621+t9/PHHkMtxnEajcXR09NFHHy0uLoIP3d7eXl1d/ed//mdw/bu7u0AGh9UY4kev1/vOd76zu7sbBMHh4SGG0tdee21jY2Nzc3Nra2t+fv7+/fuffPLJw4cPt7e3G41Gu91uNBq3b9+OoqjRaFy9evXmzZtbW1tbW1srKyvAJ4oieBxuNBqoQ6/Xe+utt7a2tsBQr7zyiud5//3f/33//n049AbOvfnpT38K6kG0gC+u/8u//Mvq6ipwptEiSRIYd8I0Y7fbhQ0hsC1qYWGBFfnHP/6x2SY2oH3B0H3iOP6f//mf8+fPX79+/Y0+/uZv/ubmzZtvEHz961+/cePGG2+8cUPgNQJ598aNGzdv3pRZbty4cf369VdeeeXcuXP/7//9v09/+tNf+MIXFhcX5+fnp6enwbPQ3U3Xr19vt9vQkcFJLSwsgMOCeaRWqwXRYm5u7vLly41Go9VqQXhAVwW7pPb39/f394EJiPA8b2FhYWlpaXl5eXt7G7ddLS8vw1zK3Nzc9vY2JKKjhEfDzc1NaAAyYARB8MMf/nBmZgbeTQG89tprGHXW1tZgMxUEAyhau93e3Nz81re+tbGx0Wg0cHyDu6T29/fpLqxWq7W9vV2v1+fn59966y3UZHV1dX5+HmggWoAgx3HoBjOIFvPz85VKBfTc39/3PG96errT6TiOc+XKlVar1el03nrrLayapaWl+fl5mGXa2dnBKPXVr351fn6+2cf29vZ3vvOdgAyMKpXKpz/96WzvW8hGTG/pGrohb6yJFjnWLba3t+nAIooi+1VueDqggxUwLtyFRyfgiVOinU4Hgz+SQfRGzRuNBiTCyqfv+++88w7+hamAVqsFuTzPwzAQkKErtUNABqFx/ykPny5BHCgJzxrgdiuVirLUQAyrtSAF9af6AGd4FALz4iQGLTgCB4V4CwbUoPPt27fRsEEQ1Gq1k5MT6qNBJdANHhLjOIbHdrAbzp/gUDpJEp+cYBH0FxiOjo7gqQof5ZaWllAKji12d3ehnbBogSkwLQkPMTislMcNPHz4MNCvG1si0QwpGE2SJL1eDx7YdRM1owAI8jyvVCrBMxm+scFWueFiY2MDZoow+9WrV+HpHtf/FhYWYHwAcF0Xtt9AR2NzOCgCprDYEjRKwSUQJMY5ehyC4I4GyTzoP5sDf9d1cQAE4yq4BfNg0ObhMX9nZ4dOc4WDG7dwPAFq0IVu1BM039vbw2v6+A+LTzBoACVBGRwQADGuf+BwDeddQTdcXIH202q1cNwGwwuceQNUKpVz585ZRQtlm9bRmJkYEpEDjRZK6RLwvImLFvD74MEDfPA3AxyQ4zjgpOiuGAYcCNOhIlUDegJ4SXDWNFqArwSPjDa0tBEAACAASURBVKNaKC9OncOzFQDqnuoJbQhGJ3EcQ9XGcRwEwa1bt8CZQo1iClsLpSaNomhjY4P+rVarh4eHbCHn5s2b6KZxiQzDCQyfdQpDe4V4HMfxrVu3UBmwzMnJCVsKArWZ5kEQwKgc+jmNFnAXT7CACcMwDB8+fAh9CT0RLE1jSaGrbG9v62aigFVAYjPOrcmxBZ4dYAnZtnWBIRl8GoMUiKa6hmqWa9PNdX0fKgKebfF5Ah4/ZXSBKR2cWPd9f2lpCRoPeFsYI4JTho5Qq9UajQZdNrABpcRGgvEGeg24eDzBAheZ5ft6kAKdCzTZ29uDu9hn5+fnQUNw9yzg4UyU7r30UCDo70pyXbfdbsMDCkSIIAj29/fB22Avg2gBNoSLRqOBnKHItVoN/Ald0scnHug+fn9tBsoLxGzUlS1aJJpHHqXrV1IqG6uyXUJgzBQtKLAF20cLMAc4oziOsR1LntiIYUwAlUTJoBWCl4FTGzEOQbTA53eIEDCJBM87wAQnbdAxwRZenFIMwxDOqY77D79w9+HDhzFxamEY4thCFy3iOK7X68wOh4eHoBuWen19HaNF1P8oAp00j/oLCXQkdO/ePeyQUJYkSW7fvo25oOA424PZ6/U6ji2wFqD1QzwG3dCGoPnKygpWAegGY4twcD0W1cMABiWCRBYtMLTHYiRH7QZ47bXX5IDDAOmOaXdj17EmWoR2q9MFAvxaRBbhwOYV1ckf1IMD6PsWSqfv93fZ2ocHZToblEh6dPHQiylgfzylxBF/pf8OPG78VXp/zGs+OSoSr1xQYqlAQKIazKrBQw8+wsq8LKPjODBFD3ktDVtwtGAtXkegS6TN0RAtbIIHOgXLaBGSCRZMxGaBiSCa7XiB1gbX6C7h6aNarUJ3Ahporzdv3gz6u6qgmXa7XdzYoOv5v/nNb+ARI1LNzuHIFAoOvhLqeGNjAyemlHnjOF5ZWcHnoFp/JyWM4vHRDDxjEAQwdA3DcG9vD9jqrBpFEcxfsfR6vY4hByr66OgI19+oOPCGEA92dnbQuUN/hrFzqVTCgsOzXq2/6xFiKqTg0xO8269TWM5EwYMeXIdkbBFF0crKCjNpEARecadYxmlb1Vm0UJIp01NlKYVKsP5SLpdhehZdFZqdej2lYypwJk05MSXJ8Fke5l4oPM+DLUnSidf6u05rtVqz2WQMQzGGYBx0BMos0eBRgDJaNJtNXMqGR1j5Bp80BQ5ZlEM3WWRAerQwNCNzw0pU4wwlN2UrpNFiGDx8+DB13eLo6AjdEANurqCJGC16vZ4cWwCCIMClUWhhuJpSr9cxOMHF3NwctNeaZudlKsIwhFgCwxQcS4ZhuLm5GUURbtRRmvT4+Bg0hNZDi4kj08PDQ5jaAla1Wm12dlZptFRV4bkGWiQwh5OQw/5LjjRC47AJ9gVCIpQIag2qIOgPEeAJK+zPRAE9VpPrut1uV6lYFEUwDVIqlbBcEM9QGWQb9HfpKFnpnoGKAvYdWLcwBGxKz/Kau6FNqGAAhxKQR2PpmpUw3CoWStesI5CnesgjsJCAUuqOOg9ItNBFBQnJITBaTDm2UKYYbikpIVqY9kTJBmoZLXS5ZKKy5a2urhYSLR48eLC6umqm+Y//+I9Isx0TfP3x8TFNbLfbR0dHvV7v8ePHDx8+fOONN+7fv49nByFAeThcCLlBLkZMd0AV8n4f8IdCIfMwDGHfF05Z7uzswEpP3J9HQun/+q//Wq1Wt7a2dnd3Dw8PmW7IPJ/CsrxyDxjcgteR1tbWtre3Hz9+rOODOrTb7a2tLdj7dOvWrRy6HR0dwWweMD8+Pqa13+v14C9Y4Cc/+UlW/kXBEC1kt2LRwszTkNcA6CnT09MffPABdTH0bCjcREQhn20hywcffABZcGKK/sUUOE6qMwhgS/8iZ0xhB1h98MEHVJNOp4PnTdFDn2iKcjMVPb4JQY+uAkeMBzexUBSIVXHdli20EqNhKdSYVGesJmUKyx70599+53d+BzbRpp8TlQnx4KiCtdfUJjjOscUkILWksg+za5sunUMrVEz54kjhEnVqjI65pTecNJijRSx6Get9OobKdmVjHxh3wkwUdWq4AoEIxPEYgTg5igFZpSYqBVGVaF6WyKTbHF2VSpM6vaYc4lgClaTWUK4JKe3GbilZUZtUKpWpqampqakM71tkgrLNjTlaWK5yTwJsuqXSepZdukCMIVpkLRRreOyWpElGFmULgU3xMVokmqcHJQdmpUQVXeJc0aJUKsHrRziBKVePYSuRcmEZElm6kkx3yxkEJMJqlgTNCCqZU5TFSQXLQrfnKcVJAkyZnZ1l6bg7kaUoUSGAs0/ordSMU1NT586ds4oWrJ0ZaAyUysaqhDJa2GSkzTcejBYjfUTNgXx+ymDtgvSywniixYjYZmpIpwUbDZXRIk5bOEkGw0OijxbKRKUmMPOOPqtUKk1poLz17LPP6ujNeOaZZ2zIqFC8fqaPfKJ1/O2JbXLBOoHyFmjO9LexpLLINoKAoJhooWx8BiaGbjDkDlpswQ8fPqz1DwSFeRWbYzbkTlAbWZLekgM9C+R0gYaKLc4CYXfNRWD0eG2W8kSiwCLTmSgZMGQvU/bHWB8YlInsAguFF2EYwmtfJQ1wsRS9Dzy0otuCX+CAjuz8+fNIgMwpK+qFaUakoSmUslwu45kWMhcVZwbwhIyUOf1LAfuLlHxQSZqCFlByM4CyAm7MbiV9GacGwxtQFjATZWiXlEBJz1BItIjj+ODgoDa4YQm3PyrpdRHFBtJ7oqCIQBLYuI8hH+TNgsynOVmqlBpdDIqd1ge9h4dl9VFIa9MTzzJJN++JSu1l5p6YWM9EsdgfhiFMXDBfWSEfX1OC3dX9pU5WevlUtiURY2i0YCl4aK5UBsFSGCtdQYBzWQWmQJkc/kpZ6YzJaJQxSUkj+etSfHqqYKwfRrB2prtl5pAaMODVf+VDUyY8fPhwbm4Ojn6SgG9IwfXD4XBwcHBwcJApC6wmHRwcfPzxx0EQPHjw4OHDhw8ePKAXNqA8beh/+tOfUsoPP/wQLuiy2Mcff3z//v379+/fuXMHLn784x/fN+LOnTtIjPjwww8//PBD/BsEgTLvj370IyBDDh8KAA3gzp07eAGAvz/4wQ+QxqytTgqy/cEPfvD+++9TfX70ox/B9fvvv//+++/TFFTjBz/4ASiDZaE8JVh2xPsWAMrp6WndnuBUpMYSGzKGXq93eHi4vLx88eLFmZmZmZmZixcvvvjiixcvXrxy5crly5cvDuLSpUuXLl2CayCGv1/60pfgL+DFF1/8oz/6IyS7fPny5cuXZ2ZmvvjFL2KWixcvXr58+Utf+hJyhouXXnoJ5F7u44tf/OIlgsuDQP5w68qVK6A54tKlS1evXr169SpwpnzgwDqaeOnSpZdeeonSXLly5aWXXrrax9zc3NWrVxcWFq4KXLt27erVqy+//PLLL79M0y9duvTyyy9fu3btT/7kT65duwZkQPnSSy/BLfgL6X/6p3967dq1l19++ZVXXgH6P//zP79GgJRAA/izP/szyhxygcJhGBYZLeyhbHMwtpDRIhEjGHPbhTcJ6NIWbPZnUC6CpQIW9Jz+wY2Z4BHIlBzw+59tGRHYhhN513VdOP9HlyUrAuOOF39ws43c+5EJck8O/aiOvRS2/8espHLLSqqSbK9LMHiMmBLKxzVzz4qzRAulAlFexGSMEpKX8OlHSYdkzo6vVkqP9NMAlNJQ/Fg/dI5U8xDsQvKURzzIC+XhzbIUbDirtAA92Z6xSpKkgGiRykFml0aJ+6/FySF21mihLKqSJpWPjaBY1N8ZmmPJbQQs7ze/+U037xd1UmG/ugOtwmx/M6usRbBpY1kZysRMU3/x0NsEWGixBHMx0sPqbimhjBbmLIZlyNRKt6xE+7rWUVIr5WBiUNXe4UT6sGQGNAyraCE9Pv4150rlRhUqMFqcIob3IOMs4DDaQvOFaFGgSoVjdPYsNlpkgq5QiXHokMozX7TQgQYMuXJjHz8k7BUYkuBJRdaCn060iPUNMV+0mPDg8QQDo8UZervlKQxgfqAQnuiVLIeJw0eICYchzA9pc+aci0WGaMG0kd5/nNGiwLuTj0LaELsoEFEUvf322/YzUSNqzWe9lkeBfDYp3JLDOPqIzGIVp5ECBhdnzmWglL5Rl67kYJOi1MeqwGmgfKiGGb5vYaBkudiv8m4smqYuWvw2w1ARurvDQzkLrJsbhQ9OnO6j3yiM8BSjwBla0kMM07oyOVIqLkfXHpE3oMyLjxZmMIb0rzJayOw2Gir5FwulAjrKIaXIciW5mpS5FtixaB75PJnnebqQANEiVa7yWpdiWRa8GGlFnxXkaAmjU+bsgjkZTDR4M2XHVKbo+Ehuyn5q8AY0UUeZyQIyMTFHC7Na+WBQi0ULZclZHSiLZC52UVCWaHRSlMXPpIChIgD0cGbP8yqVCnwcBo/JVLI99bFF7ipIRG8/o0gGPZRlFmV/tOm2Txhob6IpssfpzGK4yy7MQG7xYNe2ySuFGvizFLNxaC7bd7kNYpSU8leXEf/6/W+f6WgylTMHMnEenRpSSiIaUJzdx9nTwykOpVKp3W6nzju//fbbjuOMP1qktgTd3WSwW8bZLTk5yNQdZPeRPfe3DTbeTElmyCKRlSzW+z1LJlQ3dmEJ6PjJoPfOEC2Ueg9TGJbi+z77OKglc3OxUUkzgZLGIMJGtFkrmyIYypukNSbJyqwPzClDqICXB/FsUd/3adOhGd94443JjBZP8RSpYB0qk6vJlNES8WC0UPY4s0RZLvnXbBC4iMgJTMg85zlRlHWOjMoyKMcWBuuw4qXmMpNlsmlW4twwW9JsT8nKLAg+CwifvI/7368OwxASa/2vlzPADtonZoOjJXDIlXt/J/26dfH6jQVYcPa+8YSXiHmPZIhokVg4QJnFTJmIaKErglmcFK20gMEssoC2q9yyPGa+kpXhAqCLFjpuSjsqM5rpdfrYMLckzg2zVaUCBq3M2vZ6PfgkWbfbhQ5fq9X29vZOTk6Ojo5OTk4+/PBD9j1BwN/93d8V9b4FfmEQv9P3+PFj2/e1NKCnHfQGgcwNZ0LocHx8HEURfIn28PAQLjLhV7/6FXI4OTmBl5Yh8XRxbIfDw8Pj42M4b+0Xv/hFt9ult5QfRpwEMG+Q6rt0HOQFo5ci8iG1OAZ6lmjgJu2gvJsytlDawqCTocDKa8rK9/0S+TyyktJQJIMdlZYyFNmMTMS5wfgr60VZEQaGZonwfe9KpYLHPcHRT/DhZV2uzc3NQsYWURTNzMxU9GDfadF99YVdp34rhv5ln4tRptCMZinyQzT4KQhZNDjZzEZVWsxUHTCLriAUs7OzqTRMBwBUHN6C062HbA8jgs4vya5koFdeSG+j8zCZEAunZ2YuVVKWS2cZc0GyzURJC2YF1YBpD2MLGS0MQlMbBBNqhoGnVMmSeEgkorJtLGDDSpkYBAGNDVEUBUFQrVbpt3dYlrfffhu/JjIMoihaXl72xcGCyjP45NciA/JBTcPZfL74PqXujL9g8BuWvviMpfKsQKXyErIg7Bb+pQcdYoqOLcLmQ574UWgDlEXAj3FShVFJ13XL5fLJycmQ7WFEYB1H15XoX5lFdxEPugWTH8yLWHhwJYFSh0xmUd5VvMtNM0hVzIqyvFKwAb5mbJGp2LQU+dQwsFVKGSkKF2Fg2Ov1giCgny+E0Ua1WjUEg2KjBe7WZb6PeUBKQF8TCQeBlLg5WHkXubE3TqQsS0g+dHeykqHOvyMrmVeWiBqK/VVawAZUqEFJpIR98HRqK7Xeh2w5qbD3GEOy1TlD5mDN/jPVoxr4xCq/b+k2DcVEFBktDGWwgX20MHNWkuU2ltSEShmSZ1ah9rmyqgfEURTB2AL6ObiAarWqq5S46GhBXZJ0TOD1mP+iKcxFBiRaSCdLPbgBqQQ2oM43R95AEy0CYoFA79aVMcAcPwIRZgK9Kag4nCGA9FOckjL4B5mStXcrHYsh0cZ5SgKzwmY+Zs0tC8iQJ1ooCxDrPbtZe0TQn/TQ6W2WbihnahYbJGcnWmBe++xJP1rAR7IQqesWhUcL6ZWkC6Ng7ox6T+lzA2O0UGaUDlGZS2pIs7NwpRTh+75ydsjso8PBaEGLpiRG3Wi0CPpRRwYMFoyVmlBxvu9PTU3BN+CgYejaxthOAbF0oDY0zCvGIjBIicx9SSZKAmWK1Dafp7WBVC9h0UIWWGpgadlY5eXN8H1/eno6CAKlXLMspYbKchWCUVSPQdCQee059Hq9Dz/8kHXj4+NjQ8d+++23Z2dndR5Bp788eCqKoq985SvofcABHRwc4F/Ao0eP0KlR70ZpPvjgA8yFnhpdKpIBczMwL82F4vBWp9PBFEqPbhrUpjHj4OCApaDbpeIYN920m7QbhgTKgdrq0aNHMnBKUD2BJ6QwI6BWrVZramrqueeeK5VKMzMz4RiHF/nCD+vLOiaULLX7J/powQhseqjMq4MuYz43IvnzsUWs8baMRSZhlsr5qlXuHGBys6qRSUqxPBl/KqgoWYXr/Pbbb8PChqVT0G3cDMMQZ6IC8fweiHEDfdqlxKF+bBGqnv3l87LuCRo9MiVTrgN3Bx/bg8GnbwYYw7HSSXFB2gN+MGgNn3zrMBhcWkiNECEZKGxubhqsQWNS2D8zZmpqCj6CDVMFY4sWwwiycf0yWuj8ZGovSw0eyWC8UWqiixaGC3so+Y9kbMHkmWnw+kxEC9l0RgRlu5xAQLQIB79upqSkgaFWq21tbYFjwsT5+flAxAnmHKn3RE8tQwsD28aTCntiSsliA/O8kowy0RWhq5pl0rHCv+12u1Kp4IZdCBgyQDIlGTff913XnZmZgewIuU2LVco4owVlnkmQ0l8rexlzib1eL5Nb08UVs383KKALFacTLVhRc4hRskrF6KLFkAxPHZMcLd599126bhEZP3Qa9d9e9n3/hRdeqFQqruuCQ0mNFnTLKfOnyrEC9Wiw69TsGanXw4zdwTUJM2i0YCJkCs0C4pRRRJmeqkCz2YS9Ccpwoos6MryFYXjr1i0WLZrNpuM4uoA65miRGzJa6HqZTFQ6TJ3P0fl0eUuZEhcRLQoBjxYGk+XjnjVayD1Rw8udWD9rCWU7Oy1NZOK7774L65n2gHe4PvvZz071AWFjbm6O+R2YTgn6WzPhtUGcYHFdNyAzOXDted7m5iZ1cGEYssdhIG61Wuj1IAXIUBCkMLlwahb8ZTGGjS2wFK7rtlotVNV1Xc/zWq0WHMZFVaWJwF83heX7Ph7hhSl4t16vw1uW9Nh5EO04juM4nudBBAUCELG3twcmpaar1+tUCjCv9k8So/wRGC3g2DcZLZTx43SDitKPK691dw2Jhs6r9PXDRwuzu8jqT5C+sGghc2XlVlS0iIlZh2d16himUsaA+/fvs9eSlW8X47vEEC2q1epzzz0HoQLciuM4c3Nz9PHWdd0LFy7AM7Lv+9VqtVwuw2vD8NyKr0nDri3whtVqdW5uDkSg/1K+0dZqtYAJnIgFgD1gwN/3/WazCVJAbUgvl8tYUt1MFFxggJybmwMpruvC286zs7NwC9w60M/NzWFALZVK4LvZgz+OpTzPAx22traoAr7vX758uVwug7Vh9BYEQbX/xji8NA4BzHEcKEUYhjB/xQLt9vY2G1ssLCyAQYAVixYwtsBqPVvRIlE9Zdp43tguWhgcvfT1iSpamPkYFDbTWxpHu25hzmywmiHFjCAIih1bZJI+schqxjEj9ZAlRhb3XxG/cOFCuVyu1WpBf2P+0tISm0lfXFzEp1147avdboPDhaf7crncarVqtRp73vd9Hx0fji3YszayRcfXbrcxYIBccKDwcA3iKGfpW2m0gNAFKcAH33aempra2dmBW+ivIVogq1qtBszpcAoGJUz/mZkZOkgKwxBnonRwHGdjYwPoYWED4hAMGuh8FIwtaF4Yk7EiY6iAVe4zGi1YivKW7q/SXysdtI2vV/rkTByUBVRqa2mcRBct7BkVCIgWnU5neFasUGcXT0ARELieEUXR/fv3P/74YzhKj65ys12ed+/evXDhAjjxarW6vLx89+7dzc3NSqUCAaBSqdy9exe8bafTWVhYmJ2d/cpXvrK8vFwul3E/z3e/+92NjY3t7e16vb6xsXHv3j3c+tnpdCB9ZmbmzTffhPRGozEzM9Nut//2b/92aWkJ/TLIRedOF5BpkIO9uTMzM5ubm8Dw4OAAHvMhWkxPT9MJIvz7+uuv12q12dnZK1euLCwstFqtDz74oNVqgfIAz/PovtV2u/3Vr3718uXLi4uLOITa2tpiQ6t2uw086/V6vV6/fPlyvV6HuzMzMxCBut3uzMyM67p0y+y3vvWtzc1N4Ay189Zbb8EKk9zB1el0YAftpz/9aYwWGDDwvEgaGCbk26u53YXOXys567y82ftbKmAoiC7R8FcpSL3Knco6B1I5QLTwfX9IQfETFC2Gx8TaAY/sBkRRBD6Iotvt4oM/hgR8YRCmp/z+KeuYDp69VCrhgz9bZMZVCsdxYHwDUzHU/cGMEFUJowUIpdFCCdd1YeQECuBAxHXdUqlExxY429ZoNFBJGJpgAJBL0DDGqlQqzWYTaUCxZrOJogEbGxs4JQVRdmVlBW7heGJ/f79cLiMZMFxZWcGxBSgAM3g4hsPoFfQXZmBgQaNFLMagtN5PofER2HQQZTzQxYBYHy0kcdZokZCRgZlep62hjKkEtmOLMXicoqKF2dzDsC2QW+FgNTjhkFunMFqw53SY/8HpoHa7XavVYE4fvN7Ozg6sIsDfWq22tLRULpdh4h7nWHCXKnIGVrjGG4idoJVK5dq1a+hhIbRsbW3hUgesBMhVbuQAyyeu687Pz6P7hvW52dlZWHPGKOL7/sWLF2H1GEIIPOazIAQpvu/jYAUBRcN1C8dxINYGZE8tSASLBf3FHijRlStXwNS4xALLKrj6gvwhxOKhuXt7e6gDzERBqJAzUeY91qODzm9aOgrplKUvlneVjkjn6HWg+lsSp5ZaR5NafPXJH5KFgZcBmXLRaJFPHAo1VFJqxkxS7LUqtofksM8wJh0DIFpQb44P++D1wBnBgIDO6uA+IniwhSVleObFqX86tpAP6dLRY3jAx3b4W6vVUBx4Rsdx9vf3aS7GB3xuo9FAQTBGgcki3G4ECsDx7+CI2Q4u1JzxD1Xv9MGuMNjBhRaAIgBnv//aXdjfUOA4TqPRYGs/uMEMEzH0AiumfzC4yk130MqYMf42pnPEOp9roMmKIZnYq8EKGw+6PqVWklhnMW20SAbDBjOfoQ502qciCAJYRdQJUkJS6kyTqk8mbbOWLgcM/JWlNucatbZDgq1yB2KQAWAvQFAa5UsSoXjZWIaHcBCBCniXuWbf92HcgHu9AGyGCjlDPKtUKpubmzK0KEcSLFro3lSX1+yCFbCrOlRR/mVbeHX2QWC0gI3R4SS9b6F0BewiEdHC7N9SUQgHpf4GSl25Er2ft1GVz0RJSyk1SK0DA70OwciihdRTxyqT3Ez0WWHW00xgyDUG5BOE0YJ5N+nv6N8gCE5OTqgvUz59G5ymwVfKu1KloP8Mjr++78OisZIbjHhgRcQmWjD9Q/FWnS5+mAtCL2ggNBtQmULrIiBv552VaBEP9mXpwYZEIazss1NZ5uIz3ZSmYFCfExXndUnDIAxDjBZmpKokC4LphhJlKqyZ1RiQVfopqmqDKIpeffVV3O1D/SA9vQ6PAsRj8h49esRo5F/m0eRdALAKiNeGAwqpW6R54eJnP/tZIBw9O3ePycUtRuwXFTA4dzjUj+pJj0fsDp4qiELZCSIsHS3ZJZBq0xR2TRe6p6amPvOZz5w7d256ehqixSRsfLL3sznyTgLM2srSJRqfHwvfgkzUb+dZqqK0adbKwxRztDBrZUlvnz2H/iMCrZ14MIqnSqc0Y1B1GCj3RAWq79YpgfM8qZTIE7+Lh+nsS3lAQwnYi9OUUopQ6i8z6gro918mZ0wYBynRXGpGJodKSrUNPJmS9FRB+q2U+JS2P2X1A6zLPEmwLxEzBaZrd9Aa8rNEpaHt6xKvldHCrJiZc6o5hkGBrDLJkhepednFxALXLQzuSb6VbZ6HYU7WHvgAnppRqQCTqzzWUDpos55myxgilpIYVDLwVMY5sz7+4Nt55XI57J8aeSotyuwEWLeiWfA6E58Jh2VBmPViXbRIZaFkKrnHuXwTjRaSj06upaAc+qQy1NlhRGA2sZQ+TI2MGXSPKS4A4DvMPnmlmS4S4CMtgy5RR4/AY5rgxWnMZciCGSEv7CPCv67r4s4iXS4USqV7ZEsSkm1ubrqDMKRgRkkjhTIa3PWkhEOwurqKibVajUaLIAhOcd3Cxjkyn5YId/nEwFCiWP9ISk0x1NgiGXRASkr7qoVo4Xme1FInMR5ZtEilz1q63FDWXA4FxqPtMLhy5Qps0i+Xy6VB4AtfMMVBU3Qol8u4OQfoWRZ6l/Kk6SgOQRVgNCyFcWOaMOn2F7CALPlQMqDRkQGQxh4GbpL5JESLWMzcmhGLbmKZcdSINd41HxN7WUzoUOsW9mQ29ZoaLWRd2kNmNLNKFWRfriGRDAaJOK8RxqPtMDg5OYGZKMdxqNNnF5bRQunidV7eJqNUiYFypjwhbpXS4hASA3+DVvKW0q0bNBweOkFUBM5EjbMVJcLd02sb95VKNn7QsqRS2t+KRWBQJqJ07Q5appy0Y2qdpdIw0Gih1GSikKOApytlAm2oQ6vVQqcJF+fOnTt//vz58+f/4A/+YHp6Gq7h1vPPP18qlWjKc889xxw6pCABJD7//POQAnkZE7xAwN3nn3+eppTL5enpafxbqVRAvRLx++fPn0eVzp07h2WBLNPT08ABEoED1QpwnoD+LYnohQQsL1BS6HG6/gAAIABJREFU0bR0cBdEI08wr5SIpWPWg9Kh0EqlcnJyMkxL+OSTT7JmMbRzs/fUkZ0iYr371dHHqgCQiAiaDJY31kcLmsUULcz6GaqHCdbX7ACU0SIrE2URcuc1sx0RZypiPNwMZUl9MCx2cySoEQQBTElNT0/jWejgm+ih6HhiOaQj0H1XBkFT4FrSKMEk4it4eE3TbRiC2owJnutuzog2oQahOkjNgXNl8Dx5VECCvmzI9KzVanDkLftgiY7PkGOLHK3Lpp0bvJONIx4bDKWwySs55NYBrlOiRawPUAboymzmoJuJSs14Kshqk3z8i2WY9a7NbpYRbaUPBs+0UL5BRt/JUL55R98tCAchsyjzAuCI3HzAE3Zt0CVfzzbroOQpZcHfKIpglg/vQor5qHmAJRkVTXPFw22cLfxZJBkiWtC8YwDqoytIanbKR5k31TLJYJFT3uXWcc9aKzYI9TNRE4hMRStW7uiYs/Bwihsf4YJ9FUOqx27hXfpXJiodWRRFunNSGXR88JfyMWQx8JG3dNKVZQcnK8VJJc1ljIW/Vuojv3GiY5sVBUYLg3OUDjrVBY8BUvNMOsR61y1TpIkkfWKOFokwH+Nr5m7WQCIMw0qlkjta2AjSmel0MYEqASbhFVyAvQNiDjo2fiqcoajySj7SNSvDBvPyzMVPLOiXSyZTVeY9aXqqk1X6XEsfbfCiOiepdMUsi0GWUhMb4yhFMzLFyR/KwkgyGz0yAcYWrusWyPMphsHkRIuzDoMlDQOIYSTm655D9ujJjBYG72n27JJGZpQEBp5SK1lNsgoMlSJlKXkWgkR3Bq3yOhERxVJGKg30pVOJFrQbP3WODDl2pDyRGFH3AxS7kJs1u9In5uY/imgxfK+UfpzdMpda5xKlCOlFzZRmnaVQQ+l0BSmw3SqihU7dQhqTAb1eD2aiIFqwNmeQCJSZtLKZmrCfvigKE/hQlgNyIkhJM4o57icemfqdvVdS0oyomzPYNwAbMoO71zlQpVuTf5V8zImSVaoXVQrSXRuKICWa7SOhE5QtWugYGWRYAiZ2ddHCnJH+1c3z0hQaCWh7VdLYaKJr9HI+WkqUiUoYDGvT5WRZzArb29+SWGnnrNHCEH7smSByt9VCpOdAJoUNLknXnXWuoCiM2lBMZ6WXlDRK920wXWre2Oj3dfVizpWqlbJOpcJSqBI6Qep3uZF1ooGBo6VCEhgtMjkRGi1Sn2eVuSYEY1bpFC0wjNdQVnGmBjNME9WpVCxDHVL9Vyw8jqEXSw5mzzKk3cxbsIrNBaB+jCXGev8WD5qO5WUm0plOZ15pf51uSjdr0EqZRda12WK6kmKiNlqwbDK/rsy5AdHCcZxhONBHdR1wZ7o92JZ2CjyvQofIYru9cuN/ahZ5IGgqT3nUqC7dHv4IYMkZzz31PC+rWym29Y4Bqf4rFh5HZpQe5BTtkCnM54PBPrEYaVEys1kMTt9AbEA+zkrmlhmzIrGMFvkMmhVhGNJokaMZoQeH78vXNKhWq7Ozs+y909nZ2dR3U9l7qjY0ACZO+R4sTZEKm4ujTDTnkhmpBRB4zqiBjwGOBkpKSw541ikegFqr1SqVShAE+ZqNGaPuhMPAoBjr18r0OM1pnkUoPRj9yy4kjSTQSbE0mnToEpLYzNDA3KxMDmAjSY8WUr94BKEiJmOLqP9aUNY9ORAqHj9+PDMz0+l05CAg65AiN46Pj80Ejx8/Zu809bJASZ+VyfCI9fumkIClKNPhgrKiZHANpQMaxqTX683OznY6HZtGkq/dToIblZ3O3A0NnpHeyuErzeImDdKTJiJG6nyumUaZK2uWfMgqyGAcewNaRQuZiOk2klJpAFEUVSqVWq1mo7qBoNfrVatVeNI8FfSyLAlExT0LF8hqYqG0bRRF1WrVt/hGbz6kNrkxIFHFCV1iPoei8zKnXnYzpGtimg9vhCcD1CCpJk1Upkt5O0/KizNGC3tEQ69bACBahGFYiFZPcbowtDFshzbRgrVhxlzeUgo6RUj9ZceUlOkuJAvGXWY7UN3MahdrjTMHZgRqFnatpE9yRAsd/fCAPl9ItKjVak+jxWSCtdTcxLQdRlFUq9VktJC9IlFFi9TGnEnn4WEoskxR9k1lV88BG60mCoZSDGmKJxJoGWoieYFQfzsvVkUOViuxXQOyoQEUGy0Kn4mC1YVieSLnYhlmmgorCpaNQbalfFIoq9RooZOr7DNM1vA6Z4V9t2KKZfATWZBJsUmArt5HZJ+zAmYEncWUBgQoxhaJXZuwJLNHRFa5JXNlISUHuMgXLZjX7pEDUDOhZ7FJvGfxmgijgYtMZo/6L7qf1lLKKCD7AEQLdta9LqMy3ZBR17ssmdurYZaolM7IUv1FbhgKfurQ1YXU35zyxINZLBEtR/mXclCcQcv+GirJhsweURTNzs6urq5mcm1sIw2k5IgWuM0miqJ2u33//n22J+fk5OTg4MDzvG63C4kPHjxgm3Ng387jx4+bzebCwgJ+OOyTTz6J+i+CHBwcPHjw4Oc//3m32z04OHj//feDIHj48OHPf/7zdru9tbV1eHgIxJ988kmj0Wg0Gli0v//7vz88PGSaP3z4ED7hcHBw0O12j46OfvGLXxwcHBwdHb3zzjt37tyBvIeHh7u7u8fHx8DtV7/61fLy8oMHD6gl0QJbW1vtdhvj5fHx8fHx8cOHD4+Ojqjo4+PjX/ziF2MeysgWC6PJ1G/06joP0qdKVHYzSmOvvw2lgYNSYTunkQfDaDt+MJ1pxbESjc5iEwhmEJrICGJNP9JGi8TYeZQChgTOROl2ncaqbxXAB2TY47lNtAjDkL4F1mw2UYTrup7noeuE978cxymXy/v7+yArCAL4SD3qQ98XK5fLjuPgS2Q7Ozu4TYuWyPf9Wv/7YtLnHh4eOo6Dr/hFUTQ/Px8Nvn4Yx/Hy8jK8Xuf7Pm7GBeaQHeiTJIE3FeJ+VMO/TCuQWKlU2Ft7juPcvn0b1fM8z3XdZrM5/lUi2dxptKANXdKbE5kISWZgMqKiKWkMpdNpa0Nmw2fywbQdqUHONJTmMlhGvW6RGFuqlJe1LmUiODh4X8wwE9ITp0K1222Yv4LXkiGv67o20SIIAvD7ruuur6+jI4ZXwGBkQN1opVKBlzbiOPY8r1qtUk183wee29vb4EDxZWkMaXE/4B0cHIRh6Lqu67rgndvtNi14FEVLS0uO44Ag8Pvz8/Oe5/m+X61W8UCt1dVViHD4qgqkg3RqN4gEvu+7rru5uQnSgyCAWAjjhjAMYX9RJL5y47ouRguoLM/zTk5OKpXK8LtXM7Ul2QJBmVjzEGPuJCwxHuwFqWS5i5xaQJmovKvr20xtGzJLVqnKF2eJPFBWViyaTVEGObuQNpGGolC/b5EYowX7zVGXMhGjBTyD69DpdNiZE51Op1arwYfj4ZipbreLz9QGgH9HP1iv13GoAW8Rb25u0mftIAjAjUKuWq2Gh6vT5/04jtfX14Em7B/70e122SBpfX0dns3h1Arf969du8YGH0tLS3AB0ct13Xv37oEy6BzjOIYABq+vU+NAlqj/qiPEDyzO7u4uBio6IoFRBVBitAAaz/Pu3LmDRYbB0/HxcblchvLmbhL5MtIsbGxhbv0su0w0dAHWX7LqbA/JnHVSqZJSH13Pzw1dwaVhTxFKbZUFmWQo1S6WeZzWoihS3s5TVkM8gmgR9x9XwemXrTE9PV0qlaYIrl69avN2XtSfOwK5e3t76DfhOR3GFmEYgjd3XbdUKsEjOUSOkHyhngaD2dlZDAPw2H7z5k1GeevWLXTBoMPGxkY0OMuE4QoPvcBb8vUCcJeR+CwzMNzb2/N9HwYBwOH999/3PI9Rxv3zVyDebG1tQUiDoRKNFliW27dvQ2yOTnVtHAZhsUVgMDBJVPFD0ii73BggRSfCoVjmHQZjKu0QYPaRVqIEEwtWnDHwT5VotYN2PAAnCB4NwEYSutEGji1gtWB/fx+dqa4UODMDD+AwR49P4vSpPO67b4gW+/v7cRxDtMDHdqSByf2XX34ZRxUQk27fvs2cKUx8QZFB1vr6Oq4xoESMFlCie/fuQQqb/KEDAhy+xGS4g7kwiN65cweGR1B813V7/W9SAZnneRDSIMxAtKDrFgCYB6NCRw3ZuGMRLRhloooWjIOyqejaj1KHkSK1z8ciyNn0/6wYW3kLAeqciNjAaOzLXpQlLcUVLlFnJRuJimgxglpLB2zIqVars7OzlntsYD/SRx99dPv27fv378NWIpg/mZ2dtZxJD8NwdnZ2dnb28ePHCwsLc3NzGEIeP34MNCcnJ/fu3Zubmzt//vzy8nK73V5aWmq1Wr1eb3Nz8z//8z/jOI6iqNVqbW9vP3z4cH5+fm9vb29v7969e3t7e5ubmzRaRP2ZKJhBmp6ehuf9b33rW2EY0q1ZX//61w8ODg4ODubm5kDc66+/DpNaEC2A+JNPPul2u6+99hqEz4cPHx4cHOzv7+/t7VWr1U6ng+cszczMQEQ5OTnZ2dmBNZWTkxM4VgsNAtGi1WrduXMHQuDMzIwyWvR6vffee+9UXu9gwJkoCnOHSfSRg3Ew0CTWU7iZoOy9kkCZyHRj9Jkg+ZwJ2CuczxpjAy1OUdyYiRKjrRgHxZ4oSW1p+uEB6xbDcABfrHxXS0kMgaFWq92/fx8eqOP+2AKdIMzG4DYhz/NgKR5GDxsbG8gNpMOSO10/wGiBNDDvBGMU8Nrb29u41gJk+NgO6xZxHMP2WTq2iAbXomE0c3h46LoujgmoeWF/l+/7CwsLoAmsmSMZRguggSk4LPjdu3epAcMwbLVauSsrN2SzRBOxbmbff3SChtGqWBhKkRCHQulT89rbZ5x+YERgbSOe+GhB5Q4vmhbcYBmZjkiJFmNGrVbDGZ58AO9pGS1gjylMFtGlBbq/CNw9eOFKpQK7WnGFIAiC2dlZNhUD+3dhzRwmuG7dukVpoiiClzYgUIFHbrVabD4HV9HRFeKwg84pdbtduuzv+36r1YKFk0qlQhlWKhXYPwbbq3D2jNqcrluAkjAZFUWRHFt4nvfiiy+ObQ4KIVssbjpQNuZE4xro3VFoVSxSXQBTICnI0YytdKNjjiJ0pTCnSzvorIQ0sbHVWVpbyTlTXuXdHBYDpEeLTNzzgfrZ1DNoU2EZLehCRRRFu7u7eAtHD0CGNJVKpdvtlstl2NIKz++XL1+mz+8wJojJ8gOsW0gl4dkfnH4QBHNzc/STPlEULS0tQQDAFWzctlQulyMCyTzuhyKaDuaFgrfb7bg/umLRAvcIAJ8kSUCKjBanNbaIRfdWji0YcSH9R6dJaj/KwdMsSBaB5Up+O6KFfUZDHZnTpR1SKyLWR4tUUxuKlgxWtMyeylxZzFSLASZibFFstIgtZqLAWdOdPPBFCtjFBMEAD/DASZ5yuXx4eAhbidBN7+7uhuSbenEcQ7SI+9uu6GsKmH7v3j061R5F0cHBARzYTvnQaBHH8dHREax4o3+PVPtW79275zgOfuQcASMGiIUnJyewX4t+UyRWRQvICHJl2DsVyD6gm4mS9Ib+w8yYtV8U2I90vkNXikTvRMx5bWBZumHKPozphqkjZRtgBJaWpHxkpeiysOzKFJsS2SCfuej1RIwtEDATNTwfeBUgR0Z47lZ+iC2KIuaj4/7EF+UQRdHOzg5e0wEEivA8D+adaK5erxf038eGRMyFUQ1oYF2EaUJxfHyMwwh2C9YtcJgCAQPfrgCGyq+WQtCS544UixydBP7SaCG5mftPDukGlYbhYGaV6gIwRRbQ3qcYRBhKR++Of2bSAGkEes3sFoti6uygNFGc0fJKemURZC4b/jolM1mPYiLGFogCo8UwMyToOjESwPM+nvuk3AWk/JwcfvSN0sjsjMCsnv2eMYOqqKRBmdyixwDaYnu9Xmq0iIVL1XGjiZn6RYH9SMcqUTm7WB8tJL29W2EK2BdtoqIFhdIasSpayLKbLalkm5pXmcJUVaqhy25GbqMhMkSL3PLsUWC0kPspC4SuP6T2E7ShHJEUopglTrc/p0qn2wF0NKw1WkYLXRs2tG3LZo8ibIhTWSlV1TkIlpFdMJ72biXRe0wzJi1agNq0x7HCslIrrWq2pJItTVRmjIVVZXZdiZQ8DRpa1h0zGuMwiWOLIVsbrHKzKftCEJHtqjqCWMxfxWlnmAPD3I/tOU5WZ8Q5suuyyHRJrMxLE/HavmjKaIGw6X6pIsYGpceJBzswpZS57D2IJVJ1nrQIISH7l7JoOrtZSqE1xTjksKpByigqkfGXgrTfzrNkmok+FUVFC/QdsWppwQZ0Hp86rNRoIT1jLKKF0lfqbumkUHEG941qU/4yy+h6u4yFqQEgU/QC28LJKDoaQ0NNbf/mRj5kt7fhaej5yutkMKjk8yxKcQZMfrRQghXNYDR7hjbVZ8lT0gxZiQa5kkZaI/+73JmMaImzMhNVOKL+qMWSmGW0l8LEKSONLvzI4GQJenah8q4NE7MC+aKF7Ev2ee0JskJ6E5vOL3Mx9TL4FQsUW+RCEGm6DzOXjWF1t+wtkzu75JaaYlDDbApMjEU7YbcA2jNozVJjVbQw09ugkLFF3H/VAN5Qg9O58Yw/TMwHhwATYaNRrVZzrDE/Pw/blmTK6ABbb+Fidna2OghJicQ0hRJXjYCXAeGaiqPp8BcuZmZm2C2JmZkZJgJSyuVy7pko2v7NeYds3pZgXc/sDiSZLr1YGHSWdycEIzKF0jinzlySUSPEqvDAckm7KaIFJTJbvPDqBAc0/MYb+NDbv/3bvz0UODo6Ojo6Ynf/jQBpKCSf/6+Po6Oj4+NjRiM5ABlQHh8f//KXv2TpuRH1v21ng/39/ZmZmfn5+V/+8pdKVhS/+tWvcBOX8on+N7/5jUxkWXrjQqxpwLJX0LtxQd6t8B6RqNy9lGW4iIvzWZJhgSUdA5h/K8osZwvMGvQvpUk0lZvkGFtkUisr4BWwiHyXe3ieT0GtF0URvAPICJ4MC8tewdoPu1bmYnd1f5WC7PW0p2F9M9Z7PZ2ew8PMzbLU44el/r89iFWxgaUYbJUeLZLs7S937WK00NX3RGEMWhUuQhktxqnA8DC0OtZaEuJAdemxJlrk02pIJpYiZKljTaGKgoHhSIs8JBJV1f82Ix5sIdIgZisp9kQloo8xGilVp1mc0d3IaJGVQ7GgBZG34tHrZjZyDoZR/3O2happCxu17culbKJKizHOVES+hnoqYGozhXVlLxZUk9FZrCjOUuHfZpiNw24pYTW2YDSWds9R8XBskXJsYdZnRKAF0RGMTnpsVyOZEEURLFCPQluAQSsbhe0LZbAGbR6yKSaDXjXWVPSoKzcrEotgkEowOpyeYTh06o3ZIBMFtAy1Er1AMgMT9bfzUgXn0y8VhmghW4Ml/0wKyLzm7MMwt1cgEd4tt+gxRIuskJVrn9HQ8AyCsA3HoqucFaSWdGwYZ6nzAfVMBn3lbxtiVV9LNIFEiWxjC0tKqZYlZLSIVR1DV8jCQUukIxid9HiwoRuMYI/TnYlKhX2hZBtQZkxtqLqM9jqMug1QcUxuVuTObsg4nrIPieQsLGCMWrFYEy3sdbBd5U6lUWpjX5EAy2ihy55VXCqTVNE5ypsPurrMygeihc025bEVrVgU2FQwV25rjw06JW3SbWDINb5CFgFaFppoLldWc2W1oU4ZmqIrTlYFDJZJhHEYhzxji2F0UmqJ18VGCyxUVpXsRQ/D3FKBmNTL8Azto8WEg1bukC3wSUUh3Zma1HBrYpEIv08vlO1HlmvUNkzSooUsSA7FzFYyqIEYdmwhRRp00imK17poYc+hWJhLlK+8uRVI9I3GHqOIFngyRzx4uIjuuA4g6A1+bCr1BX4bmjEgn910rzcayj58Ya1ciAWUDIfUrSjkdji6cil7WYFmTDRelF0os+iKI+l1CtgwUSoGyD+20IlUFiC18gCO48A3RA0lsSyqUrEcMGQchq0N/1gVLYbE8NFieDUii3N5dbnk9fgRqY7PMmc5lZEca5+ZerehExXSDk8RZt+lpMlnOqUxZY2wa2UWqZ5Oir1KOuNQYpYl5yq3tK+5wAZQGvaNaGVVGUpoo3ZWGDIOw9bAP9G3pyFlxSRaWCpj4EMREkTkGEGWTlNOTk5CAclNCZ2I3IBv0GYiCAYBKfhLCSQxhe/7hruZKP0+jo+PZcux7CbKXkP/FtIOTxHUGjSRWSnOazFddio9FjFAmYtlYdoOqaTOOIm+2eTcQSvNrUxRFtVAMIHRwqz5MGx1iumMrKujTEILnImCaUMJduqf8rRBPGcQs+D5gPTkQZkdaOiBhngWoTyd0AwqhalEf82l0+lJy16r1UAlSVMVZyzaAI96dBxHnh1ZqVTk59Mt+4iuaY2uE50KEs1kFL3GlHym0xlTSmEKKO0vtZWKsbIYdIj1bplSSimKryHpSBkXnd46PjZ1Bt/EzhEtlGSMv5mJjSCd6HzQCaKJuoLkFhpF0ezs7Ozs7JDRAt7bmJ+f/+CDD7rdbqfT6XQ6+/v7+/v73W4Xn3bxutsHPGjDBV7jM3hIxhxdAUykBIyS/kW5BwcHKBoJHj16JEVQJkEQHBwcoLaMlU5JFK0biGAuuAbTwd9Hjx5RMlQAudGyI/NHjx5RfTY3N7///e/H+q/FDYNh2sykIREeNtY4gQJNp7On8q8uRao6QjMRBZ5hInMUXqm3kqcUHw/WWdZoYa+tjokNjc52qTSp2XVmKUpJJeBw9UKiRa1WY5Mh6GepywvI5Az6NYgKNC+kwORSIOZ2JDf0jzKRUVLfSjMyehpRZLmYOEnAMiqVNIMGURljGI1SVhAErusuLi7irdQmlAm69jBMXxgeuAaWWw0snSxvsabT3WLmlQZnxEoaWSh2kcka0gLqE8szFV5y15VWpxOm5BtbGIpqVt5MbyMlVRkbJVNvKRXLp0AURTCDlClayIVciBaO40gnzrynAUp3bFiKiKIolSfjn4OAFkQZZrJKCUlkCkgAk8HAHC1sRAdB4Hne+fPncYIL3WghiE87MChhv2Mitccpy1uU6VJlSZVYok1x5F0DjZKzzgIp37ewLL9UXVkweqEsBkYLpoaNaVLVjo11YC6jTkqqMjYayrsGfQzWSFSVyADrFrDxzLCPE/5CJwyCwPf9kHzhLhbRIhTPufKCOTU5XaMDc99mzjZ8DOrJ530djWRucOuysMrRhhyWKVWCdF1Y9TxvamqqXC6Xy2X67GVoUVlh384tKccGpr9NXyvQXJYm1aUjWJ1aFpbdMvyNB10lXpv2RNmnSOUS4bnkhdRSN7YwlEppCEN9KOvGJqNSir1Wkn88WCVMH7PZDboZdI77Xr6a5QOFURS5rlsul6vV6t7eHsYM+OQfzt7IaKGDzikrnax0mqk08rGdKimlKyMBY4Ui5MQXU0DGBqm/wTiMDFlhOqZAIA/E3JTneefOnRtdtLBsNpYokGEy6I50NJLAXNgCLWZJEwv3oqQ0l0JXWIPplNzoX8WJ5bGFA1XyMqtro7cyWphLpaRJVTVHRiVxqjKpeXV8LM2eVTGIFpVKpdPpKJ0UbtP0B1Gr1aampkqlUq1WAxo5EyWdHfV6zMvrXCT1sIySuWYdH+VjO9OH+X3qdgN94JFKssRUa+gImAKSjKlEowVTxvO8Z599tlQqlUqlcrkchqFNi7KHZSM/3XdilJBFSMY7tjBws1SJ0ph5xhpXIFN0iVKE1dhCXpj1kyaw1Gxzc3N6eto+WuhKbja02TRYELO2jKeBYWpeswhpWBv+hrvz8/Of/exnv/KVr9ywwPr6+vr6+uLi4qVLl6ampn73d3/3C1/4wvXr17e3t+fm5iBaUJfabrffeuut7e3tZrMJW3263e7Ozs7u7m6r1Wo2m3ALNhcFQbC3t9dutyER9lPt7+83m034+93vfrfZbLbb7a7YTIXY29tDGlAAuIGse/fuwV/4DYLg5OSk2+02m03P89rtdqvVwo1MuAEJsbe3t7u722w2QcrGxsbdu3exyNvb29vb23fv3m21WnANtzqdzu7u7q1bt0CBIAg6nU69XgcL7O7u1uv17373u2g3UG9jY2N7exuNtr+/v729/dZbb7Xb7UajgXexjLu7uxsbG/fu3aN7ooIgcF33U5/6FESLSqWC0UK2q1Sw5pS1nU84WG+yN8soINWwUd6ebSHmGjZaxNmdmuGW53nyXe7UvIkIIQbDpRoxyRUtMlWMZV5D1eQ2Ms5EnZycWGoLM1GVSsVxnP39fbpuUavV2EwUbKt1XRekwJOv4zjT09PVatXzPGDleV632/U8r1qtun0sLS0FQeD7vuM44OmWlpZgJESfvgPydB+G4c7ODox48Ml6ZmYGZsnK5bLjOK7rXrhwAZqW53lA5jhOq9UCZWCoFKp2c+3v74MyoKfnecvLyxAjQVatVpuennYcB9QGVisrK67r+r7veR584KvValWrVRyZeZ63tLTkeR5IASV9319bW6PbzOD1o0qlArmAptVq1Wo113XRVq1WixoEZqJktDA3pNTWpUvJ1PJPC6xT03TWE58wxIOuLCEWYNeJ8HiJqO5s6xZZFbWsRURqtLBhMqRujEZHbF9Gc14DH53mNmXRpeNMlP2eqDAMcZUbmdAdtGzOBGauIBJARt/3r1y5gk4ZnCx6Scy+sbEB9EEQQEQBbujQldGi2+3CnBgI8n3/6tWrmBFyXbt2LQgC8PioZ6vVwnAlowVK8TyvVCqhZ2+321gucOh//Md/TANMGIZLS0ugMPxWq9V79+7BVjQ0AsQPtBjE0aWlJdAZBwqXLl2CIIFWqtfraBngVq/XpcIwbSjHFtbdV9EFcjf4TChKiuxiiYgZhm71ZECWl5Vdabdk0HSIlGgh85iNrhRvqE6WBaKFHDvryiBNEOsbh6WSZuZKfXIgEU3ZoAmmh1D+AAAgAElEQVStnVgU0MxfImu0kMBVbowW4KlhbAF7N8vlcqlUQqc5Pz+PXhh8NIYE9IPb29sYPMrlMnrScrlM3SWLFmEYwiI8yHIcZ2NjA8iAie/7GC3w0R4W7Wu1Gow/aChiAGJ66gYMkuDadd319XW62APlAk8N68zlcrnZbOIyD1JC8PB9n73yTbnNz89jVAALLC4usjfJ8e0KjBZTU1MQLWRvSrKAZjE3qjMBWbpM1jgTSC0Us4bBSpLVsCeWy2qQslOrEK8towXLlUPtTEXTqZ1atNRS64yWWi5L/krkeN9CcmPRIugPGsrlcqvVAicLjg/uNhoN9GgYLWBGBZ1+vV7HaIFOE71qqAG4ePTFlUplb28PZOHYYnl5OQxDHIJUKhXXdWEODWd1DNGCKgD6YJDzPI8+2sMFdfHo+mEoBul0bAHpkBcSaWikE1OQvri4KA+MCskCO4wt5Cp3aqMydIFhmvrkQJYukzXOBMyFQjvYWEmyshpb6DRgsmUus2ZSkDJaUN1kokG9IWHWX1lYe0hBZhqpW2peZXq+t/N0fFi0wBTYQ4XjgyAIYE0CH37BUcKUFD44o9tVRgvm0FEoukh4PK9UKkiD0QJGNhhRarWa53mdTgfWJOQb6RSu69KdYDAThe7bdd16vU6f/YMgmJubow7ddd29vb1arVYqlWBtw/f9hYUFCF04oQdzaDQU+b4/OzuL29KAW7PZpIMb3/dpJA76O2gLjBZPBjIV/OzCpqTMLDpDSVbpYwvGJR70UzJjjlrEa5toIbVSah7bRRQDASu10qZZC6sstYFGqeeQClhGCzNziBazs7MBmfFvt9vr6+uvvvrqysrK9vb2ysrK2toaOLjl5eWtra2gvzvo+vXrsBmp2Wyura0tLS2tra3BNqFOp9NoNK5du1av12E70LVr1xqNhud5+/v7P/vZz+BAKqDEY6m63W69Xl9YWGi32x999BFIWVxcbDQa+/v73/zmN/f397e2toBnq9VaWVlxHAe2LS0uLsJ2ph/+8IedPkBVcL7T09P1en15eXl5efkb3/gGaA66raysrKys1Ot12OiFdmg0GkBfr9e3t7f39vbm5+fn5ua2t7fr9Xqj0fjGN74BLh6MtrCwUK/X33zzTdj7FARBq9Wq1+urq6tgyXa7HfZPjmo2m/V6vV6vg+j33nuPxs5Wq/WpT30KZqKmp6e73a6yUcVGt5KjXU0yDH3/bMFQHCSQf3PYSmk6268hybupAuyVw2sZLQy2iPWhohAYCqI0gj0s81oqmRVFRQvY+KR7JMcHbTpfRNHpdMLB5XHlCUjIBPdZ0d9qtQr7YmkW5aEajEYqAPwBeNrr7OwsjAkgHZ/oAzKsUUqh7jsMw2azCa/LVatVue1Yllepto6MvYPC9kQF/aOiaKPK1MDMfeHUodPKpnRnDlnLFZOKk7fMVpUoOFrYa6Os7EzRQqYU20piVQ+RNLqyWBbZTJaqYQ7AttFCxhZsT1RIXolAd4anBDKX1+l0cHaFeljpcFku6TGVbhe9OfrT1O9DUA+O806wcRb2LPm+DzRUcxYXlfrAbl3kEwxOqWFGFkLCwbfQbUoKxYRVbohPupmo1MYWT3ycAOh0SwYdQnyW44csWio9/VUaQcnKzPwZwz2dElSYrp5SaZSVbVjl1llK3tIZ1EaxTGpbUhr0t5diKLWNLJpY4EwUvlGh9GhKR2zp93W5lGAKyHGMPD+DBaFUSEoWe8ysWIwxiGC7vyRB6ivosCcK1y2CwbGFTWsxdKsJhOzyNJ1qbnAIkw9aIkviRMzYK/8mwlBKcyWZooVllej0s6l1fN9Cl9egWKyPFjJ7JsXMOufIotPfhnh4/Q3RItE3LwnzTJQSdLUWU3RuUebNJCiTYgAMYGxhmbJVpjMCOmySF2bQnVQ5SgH7g8+dO4c7aANjtGCNqvAOMk6YHUKcxc9mpdf1TRsOLKOOj0ExdovlknbIak+EVbSg8mwEK61go5z923lmtvbVMCSG4ZbVOEXpX3i08AnMjozuK5VZwFlTR0nHH6n8aa5UTeQv5Y9/gZUShnLJaCH5B6pgoJNljyBtT5QZyjZWbJcZNWy0lT6B+jeZbuMblX3Tno+Sc6zyEqlq6IqZw5KMmylaGHTNJNKeGKKF/aEUBqFK2+Wz2uhgqYyyOPnQ6/UKmYmK47jVal25cmVpaWl2dvaFPl588cUXX3zx4sWLL7744oULFy5evPjCCy/AxcWLFy9cuAB/X3jhhd/7vd/DXBcuXKC3LvQBd5HJhQsXfv/3f79cLr8wiAsEL7zwwuc//3kUCsSf//znKUNI/MM//EOU+NnPfrZcLn/uc58Dgs/28bnPfQ5uIT73uc/h9YULF8rlMlDiBf6FlPPnz5dKJch1/vz58+fPw8Xzzz+P10BTKpUgsVQq4e/zzz8PTCggDAABzQ44f/78Zz7zGcuxhaz0SesjhUBXIqV31hHonKSSzDK7zGVTBQZZBnpbYw1mpNcp0cJgiEwiZS4lH926RSahOm3z6Z/b0AUyz2T8VBp489nmfQsbcb1ez/f9crmM7ok5r7IGjIZd49vgmAK5wMNSzpACb01DLkaDzpfKpRmZdJpCaQygzGUZqU1Aw3K5PD09LYmRTFl2KU6yYnnlnihZxcrOnlrvhWM8QllXohdSDYNjTE3JB4OGulLoyHR6GixjTkzGEC109Mp0m1VuG4mGguTjNow+wzO3Mb69knDcXup0nyVDjBbU5eFf9ODT09P0RBBKoPS51O/DQRo6j8mcvvTULFowAuqRaZhh0UKmlElEQddMVaJqs3ClLHJZBFoWYMqDEUXGFTQ4VdLQm5gviCcgWoxZtBTHim/pFZWUWSE5U30MWsWaipM0mUwhhVrNROkKZoNMxModtPbZzblsNJcEWcubCZbMbSxvrySMLXIvDrFEFi2oX8ODjMrl8vT0NCMAjwbnHbFbMkUXYJQSpSwlf12YSVUGC6XMqFOPAZREYqk5HjMFH0yVlqTDlMogkHm1WlVGC3PvHl2DN4A5prEJZZ6UWcBgGUtXmQk6BeJc0cKQbm8fep0tWkgbSaZSmL3GcCaP8rvcqaWykZXDajpuw9RBVpVkcxkGEC1SF4fsxcGrc67rwjnhcOFqAC8cwC99BcF13c3NTfyLiQxAo+MA18jHHphXAlaPbZgAme/7rVaLZsEUlshgSKRr4MDKcklcOQ0lO6+y758WCu9ZhkLJdOpJYo27U+ZVmtEMmdGskk6WjsxcdhswI6RHC514s5ZSmFkhmEb38s5ESa0MsnJwtk/PxNlSK2XjyA2bsQWrXzND5Se+CwEurshbmGipTNz/mhtmga+O///svU9oZNl1P27Cd9MkQeCFwIE2MRR40YYsasALMcyiOpMYdWPsqgyTINSLqLoZHEnuiVOKyEJSGiddGpJAdRoTqgQD7hqPB0ZvOiZRY7ChGK+6O2TxSDskCGdZm15pM6v7fouDzu/U+ffue/WqVJrpz6J4de+559+995z37n1/chHDOcYnVOEYuQBQEnmG85liSbT+OrDm/mVHFpctZEkm8oSMh5Kn6kYfsmEQU0/tFIePao4sj/QeExqbLZgxTEtHZK6ilKB0trBE53ozkk98+SygjqTSiMwWUroPjGKfffYZ/AVgIfxlQVbSUG7AikkZkywyJaiSyJYG9JcvX+bKkkpazPEvdUVVtkwJKzBdCqhdUHQMs4AmY6CklyIKgTV0mLMSh4+qZOkOzUpkC0tRR8vcKhX9fp99vyVGigOnS2J6KESPlRnBUtsZBLmK5WaL+P6tBJGnwBUixiKq1Rw6ehqU7iBnXDkD7MIh82vM7eDM2Fwyyw+MJuRNUouVFMR4Sm4qfypFNWeafmRCY5/ldjRwFCqqaJIk8mtfUu8Y5Cqp6qaSOfwLqVSioWrClINg0bLF4mN686u9gJhFB1U1uuaAyGwRM/fx16Lx44baXG1Iqyz1WHNmi0ovZVkm5DmV+03lFrvL7WjgqBKjKCWQ1xYqWYypqrtVGy2yXEGF+qCEiGAMr2AMqUg42UJ1TmlBkbDyVlVCp+czU/NLILKP4tX258U0g60S5O7B+MlYziArGqhTTJZL/pTM8aSlFWvrEDv6S0q/Wx3FVPqs6FsFc/XLtdOnh3sxi76rIJKMaa66I9658d53NIkkLtHQwcVmC7k5PP+VKKaMU7UgmwoMkaNUJbCaODwrGXUzRW62yJ3pSGNVqdOwEGIUqEo0tVpVINddqs7VZAtLG7U8M4J1iM4W0iO+2YEkFUdth1hlGN8BlmKO6/xW8fT0LxxEZguLT+WgO97lOJRWL/7GoWnEzcJ7kYOQDVdn4KnluZqrBDMdLbmQE1w102poOUplWwhSh/mjkBtpKzioLFsEbZRkEcOOVslsESPXstPXhDlCMvSdy1zpUPqwrFD1sVxhNacH+Hdvb6+SbDEej3/+858/LgJK//HHH8PBhx9+aNF//PHHH9qgzR0yB0dHR0dHR3iMJVj44x//mNI/fPgwctGjcjiD35odFgdr5PtMcsfb4kOdQapjHRqfYEYoJ5dZhH+DPVCd5tk037eQfzMxyByNJU0olS18fSJppFa+aGYRq3JExNQ60h2LpJOlklDYtV/0m2kjyVKy2+3W63X6fFzuw2tTgr1flpZbL3NVX++qvv9VZcI+wlGr1V68eCH95ngpBjGtnO6eHZjoctbNH1L/MBd3LRSYKzI7SWRG0JMlhbOFLyATgYaRqcdIQ3e5CzkCywuZ4zB3HGd1g9W2hOgYDnJiqEzYbzCyRZbnPdZZ4/G42+222+1wQbCUVN2oti0qcTweO/eSxfdsjFG0hB1ESqwEqqBiXrsIZNrJ0xzctfiw3JVp8UQ6baqVKKlHJiKmPJZVWI7ZIkZcZKGqZC6NJLPKJQGzyxdncYgh9v9afrayRYxueDAej/v9frPZnOc+cBbRC5YbGRPqsVyhSAbXFrJJjOtiRFjayoPc/podcs25cDAX0fIvFKTJvtMkAWteWbaQCjl/2THS4EpUadGlW1nui2GucsgmjY3UJH5k+2o7fo7PFqohcAzXFpVnC9Uii5L6Ib5h0OJIjFZwbSGzRZY38CL55w4G1YQ5I9JjF4tsclRkZSPDpQZzSGb3ndqEVQGqzxaZEaqcKjxg2WI+fawONTrIHPc5TGRtZlskJVpk8tfxZzY5bQAyWzgiLCnlsoXqK4c4l5XfO7LEcrskVg13ri2C23G5tqjiChnrmDY9VK0WFtKfoaAritLPCNOoodrueIy1yrQhNKtsYf1lPcoO6C63z7/C7mQ+pSqxY3/wqd6fUhmrVu1stZulFeDkQneOSqHj8bjX6816Jcp6BZMFaTLrHbXLLN9K79Fs4XOWUmI0t1plxsSJEeqTRYL5ds6gLxOLR6b1b7y9tO1FobQOlgfiXadKn/e1BRZKk8LkPVGzUGwaSG86BKVHWxBhLkYr2lYWsuN+v7+8vOzfE5VN9pHsKeDjZwsUkSTJ2dkZ3BbFWLHXsrI3bONr1cfjcZqm4/H49PQ0PQcUnpyctNvtfr8ve6GE91TzsaRer//6179mbVU3OuJUMALfkBjrIj0QCcfYOUA+0RkDpnYJY6tFPE9pSFFBzPAw2XcqpRQtdZ5htghivuXSQyC7RNmC/rWGbFEpWcHBHaMz/YvZwiKWI0ZF5C53kiTLy8vPnj2D+2hpFXwYA1a0ms3m2tpau92mN92ura1BjMCbX4fDIayk4S25cKsrHTPxzlf9Q2sz0hfhPFtQz6j+Kdo7VITKVjZkikkF/E6x2Ko8ZVUk/+lBzySKts31od/E6rLIzi3XNt4ES0mVPsZXanMmYoYrUUGMM1rLSgBwS3vpXe6ZwnGuJHA8zniqJU6TGCaOenAvE4Tv3DEkQXNDTLYYj8fwiaSzs7M0TZvNJn2YBq8Yms1mu92+d+8ejQvj8XhnZ4e6EZAkSbPZVFUKkwMv3ofSXZJPCKFer+PzFqwV0yG3a6w+ysTE8ZmomjiCVD1VTZhLpZJzQ7lsEeyTgGCbIOktbxdFTFtJI83xGar0kY6SzZmIxbq2wHfQYnkhidPoHCnCGnmZPfiKSslKDUpnnNES2J2+cuVKoWzR7/e73W6SJHTSxmSLJEkajQasL0FW6Ha7lAk8tFGv15vNZqvVarfbLFvANRCUpGm6t7cH3+aDq4put3twcMAcHu896h+1vxhB0WxRTodQfOI4f6fURCqjdPMsMc1rxHy7GKXaVroo3p8l2jKaEsqoJpT2HhMxk2whDbBMon+zLGPXFtP0TeWIHEy5HqclVlVRw1WVrEED1xbWM8kqIOgvLy9D+A7keQurCZwPNpvNfr+PTdI0bTQamDDG43Gn02k2m41Go91ut1qtZrOJVSEEFIdq3L17N03TJEngoiRJknfeecfpkSndSEsCWYnKtIWgTHSfo1UQg19VxqrK4gakqmGMu3IGxAwwu3c4Wk7ObVUhInlaSsaLUE2wHFLUbwuaLSrvrUJweihMhoOY5qr5flUh8x1iddD0+/2lpaUbN268HYH19fVWq7W+vn79+vWlpaXf+q3f+upXv/rNb37zzp07+/v7a2tr6m1LZ2dnT5482dzc3NnZefToUZIkP/nJT548efLo0aPXX3+91Wqtrq5+8sknIQRIEhsbG8Ph8Dvf+Q5cfKytrY1Go9FotLOzQyNImqbvvfdeCGFtbW1zczOEcHp6eu/evaIei3SmHKXs2iKI+Mu6z+8aVYolXa1ic9sSxDTMbWKJuEBMk0isvohp5XRcJJBbDNt4NSz+quHTOI3q8CpbXHr4QzCI8Nfv969cuTIYDNIIwCVCmqbdbnd5eXlpaQlWgdI07ff7jUZDHWpQG84vEfr9/sOHD+FSAFYa8UQSt6zH43G9Xm80GrDQxAYuHIzH4/fee288HgMZlNy7d4+ZWZVXgwj99Xr9+fPnzO3O7IoXpLaK5JZLlhsF/CYLhWm2uy2/Wa0sz+T2iCPFZyul56qk1rLCoh5TG2ZzeN4it5/o30XLFky9mM62aiMJplHSUpj+xV3uQitRkBiazeaTJ0+gBPjU6/WY5u12+/Hjx+F8RQvLYSUKNjbG4/GjR49gnQoXuODj1ah8mqb37t2D5SzIRmma3r17t7T3UBPZBZJnCKHRaDx//tyRZWnCeiSyVa7y8c2ZpTHMaRNWMiVKb0UU3e6Wtls2qm1lk0hvOy51ai0aaRFrFW9UPFTRF7PLLXslkGwBm6IlJJZTNbdWMi8na0bIVYb5udy+BfvoCGaL3HuiYPdiNBqF86xDayFbwL2w+/v7sBKFuxcvXrzAU4cQQpqmBwcHaZrW63XcuhgMBlN2h9rL9C8SqNnCalVIgWCHJ1/tSKExIqQhzAkSVrmPuX3/imluuSWGifRkLhilo0Yhh1tdFm9RvL2sfObZIoYGj2edLSzvWG2perJ8QZCrDPMzZotsurEFFwq5C8r0BSFyYxzuiYLw8fz5c9gVx5Wo58+fs+f1IMG0221YHOt0OpCH0EZmsuMHhkyES3YczrOF439Vbm7vsN9cemZvjNASWlleVaUXwoJki6ANBtUi6Zl4N6qO9d0eQ+wYVYnTJKtsPvsWKtTumTJbFGoVikw2q+0iIFcZ5meZLXLbqrCyBW0Fz1jAQhMGekrW7XZh9QmvLeD6A64bPvjgA/pAX5ZlIBQvdJIkWV1dxYwiTZaGqJ7JtNjB3BvItQWTpUqRHCwPO2rL5qqGakOrlUWv8lRLmJmLDMc/gXQTo3EaWtwsh6tVThOfbS6Y7bIwxmNqq+yisoXanVmWpWkK2SK3eRY9fB0F5DHj7ysgia2GVLdyBI4HVDVkr+MBPFytrkRJlRyo2QIbvnjxYjAYfPDBByDov/7rv7a2ttbX1zHaAo6Pjw8ODuBFQP/zP/8zGAwgSQD+5V/+5YMPPgghjMfjJ0+eDIfDTz75hN1q+R//8R93797FEqq5tMJyO/W52gSOG43Gr371K8YqCFdLAqpPTIc6aqve9s2MJFNpfEELDrWj1X5RDfSdo/ajxTwGqs5F+cgmpTynIFuoa4ssL1vIJswYtcphJY+tEtlcPZ4ewY0plMw30GIbSLbIIqKSI5dtWTtdUwKqbniMry2RtZYCjhupi6Sl9C9mi5h+YVrF95G0JVcx1aLcQodMCnXMXBxk2tSgx44nnUKVbeVwlIkXaplf1HUqwWyzhd9JUkvMFr53VLcy5rmKBXe+ycJcu3xxkeXokEL8LeZhcvJDicwWMRxoCfJRd7klpWQlxyKldAgsQZF+8Mmk2oyg2Wz+6le/ypVlWW1R+kJjlC+BQmylt2M6aP6gSobp5uznBqpncl2n+rCCbIFMw+QMkcJYE0YZzvct8H2iuRIttn5Dx0GZHa0YH1/DGG0t4qL8Y+RSQ+hKlC9LVlE+cCerusudq1iuwo7cXBFWF/taMUopMZBsoXKjbSONjbErXvnKIbVS//qIJJuyicNn7m5bUOS6V5YzDtVkC3ogZTDBQcxhVI5li/ieljxz6R01cgecL0IyZ/TMY7Kq0BC3iFU1gpYtHA4qT4CTLZg/M20USp9YCsu21FGWCEcl1ZwYDo1G49NPP5VM2LElzvKkZd3ioKgVRR1bOah6mdsRXxww/7CDoM1HxmEm1xZZ3HCX6mK2mKZrnbZyPKn6MFZTKlOoeQmJFjGbNlgCTq7k2iL3eYvPGTBbSPciMm1g01rZRCWI7OWLRYzTIskqR6ZNgS8yLOfQA0lMOXyJVk+jgSzPROxjZEzdcL5v4a9EWUyckshy3wpLGdXFYTKOMM3VAznWI8FGgKob9TNkC3zKrJC7qIZwd2zuvfMlPmKTuX3hGDtrNJtNzBaWW5iGYVLtXMg+VbvyohAmPV/GiUXMr5BnvHWfe4SIbJFpEaBYtmB9YPVHoe6ntZgtVGVUcTFs/aHDyiUTR4dccYzYkusLdRDZkGqYJMnVq1dptnA4O+Lg2uInP/nJY4IPP/wQD/D48ePHH3/8MS1X8eMf/9ipPTo6ApqjoyM4xlZQ8vDhQ/h9//33Hz58+PDhQ4cb4KGL999/H95whcSNRuOXv/xl0Cab3++FwEaLVa72PiOuBHScMNsZwQKihKWfewQjSTC/SU9OZItcZzG+VitWospW1aLZQmUrhcYMEeYUVUPHZRalY5SqT4zQrCB8baUHgnZt4XD2Le3nIUkS+LYdHk8J+d7D0WhkVVUIeLVimqZnZ2dOF8h+jxwhcrRI/tZQUSUWGEM2mNzIUbFoKGRvJX5bZEjnsAPHCfnZgpaHySHLCrOIISWVowQsW1iGqeXwilOcz/6gkX9VhaUHHdMcqK5zpMTAkSK50XIrW7C/8lhV+GLhazIjPaWvcumLjha1o62OUHtKMokfWrJVWKROj4c0QXWsQxPvokUDU8x3kSxUEXVtEbQRD+vR+JZQKV5V1KqFzVI1W8gXT6qvoqRnf2FyakW60iGwKDX/K65XxQVj/kdCdSYrCdpsp9nCF1rU0vnjwhXLVaCc99Qm6mgJYoAxetmVhcaYyvmyQLpLWkerJE2Mi0o4dtZQ7c2MQWW5TqJwtsiVKlnJLglagAtGtpCaOBxibJYW5RJbbC25VhO1RPKJ0cQqcdwFB9NnC0vt+aNoL4RSfTcNVFnlpPtq59olB5LV79YQKq35RYGZoFonKQuhRJN4zlS3Em3xmDGUVrNCy5mFV6KCFoBUJSzOkgYbymzhG+McO6J9Msui3BILjslSovS/6qh4BSQZZAv11a2qLMcti4BsYVLXrCH7RZbnDjarBN3ojLdLMRKc2hjT1Lng1KrMnfJ4OMoXaiWPgzYY1Fas3MsWgUxFtX3lgGxBXzs6T1juQ8DL75B4blqp4qwezVXs2bNn169f968tivKcJxZKmYtFCVf4gcYZBouPXIVjjLKCIZuG0kWSRnLwESKCOKvNtahEJ1o6ZP7TeWEyW8jGkbJjyOi+BcsWuR50rC3kLKeJ2qPxnC3kfgtMtc6ijNeq3+/Hr0Q5QhcEVXXHpQM1PHIAWH2diWilEswaUgpMkJindrK8ABVjSK5/gnA7bRjPzfItK1GrWGGw52mJvrN6PIt5ltvyhaWflB2jYrls4Qgt6qMYnlOqVEIitsIPjjI+dBZF6pOmKf1Og6oeG6w+2wpdXY7PNApUO0jmzN+foRa9M9Nz48AiI978GBrfP1Kuytl3uOph669FbImmzX23RCIrnS1ora8NM8xCVdlCVb5ylBbBfBgjBY4xK1C5YwLZRAXcZ7y8vIzvO1JbFbKrQj+X677S3a02rPbLbjMdh6G4872pfhlSggNrDMswpVqak*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" alt="" />
给定涉及区域的vm_area_strcut,内核将选择使用何种方法读取页
. 使用vm_area_struct->vm_file找到映射的file对象
. 在file->f_mapping中找到指向映射自身的指针
. 每个地址空间都有特定的地址空间操作,从中选择readpage方法,使用mapping->a_ops->readpage(file, page)从文件中将数据传输到物理内存
如果需要写访问,内核必须区分共享和私有映射,对私有映射,必须准备页的一份副本
/*
* __do_fault() tries to create a new page mapping. It aggressively
* tries to share with existing pages, but makes a separate copy if
* the FAULT_FLAG_WRITE is set in the flags parameter in order to avoid
* the next page fault.
*
* As this is called only for pages that do not currently exist, we
* do not need to flush old virtual caches or the TLB.
*
* We enter with non-exclusive mmap_sem (to exclude vma changes,
* but allow concurrent faults), and pte neither mapped nor locked.
* We return with mmap_sem still held, but pte unmapped and unlocked.
*/
static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
unsigned long address, pmd_t *pmd,
pgoff_t pgoff, unsigned int flags, pte_t orig_pte)
{
pte_t *page_table;
spinlock_t *ptl;
struct page *page;
pte_t entry;
int anon = ;
int charged = ;
struct page *dirty_page = NULL;
struct vm_fault vmf;
int ret;
int page_mkwrite = ; vmf.virtual_address = (void __user *)(address & PAGE_MASK);
vmf.pgoff = pgoff;
vmf.flags = flags;
vmf.page = NULL; ret = vma->vm_ops->fault(vma, &vmf);
if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE)))
return ret; if (unlikely(PageHWPoison(vmf.page))) {
if (ret & VM_FAULT_LOCKED)
unlock_page(vmf.page);
return VM_FAULT_HWPOISON;
} /*
* For consistency in subsequent calls, make the faulted page always
* locked.
*/
if (unlikely(!(ret & VM_FAULT_LOCKED)))
lock_page(vmf.page);
else
VM_BUG_ON(!PageLocked(vmf.page)); /*
* Should we do an early C-O-W break?
应该进行写时复制吗
*/
page = vmf.page;
if (flags & FAULT_FLAG_WRITE)
{
if (!(vma->vm_flags & VM_SHARED))
{
anon = ;
/*
在用anon_vma_prepare(指向原区域的指针,在anon_vma_prepare中会重定向到新的区域)为区域建立一个新的anon_vma实例之后,必须分配一个新的页
这里会优先使用高端内存域,因为该内存域对用户空间页是没有问题的
*/
if (unlikely(anon_vma_prepare(vma)))
{
ret = VM_FAULT_OOM;
goto out;
}
page = alloc_page_vma(GFP_HIGHUSER_MOVABLE,
vma, address);
if (!page)
{
ret = VM_FAULT_OOM;
goto out;
}
if (mem_cgroup_newpage_charge(page, mm, GFP_KERNEL))
{
ret = VM_FAULT_OOM;
page_cache_release(page);
goto out;
}
charged = ;
/*
* Don't let another task, with possibly unlocked vma,
* keep the mlocked page.
*/
if (vma->vm_flags & VM_LOCKED)
clear_page_mlock(vmf.page);
//copy_user_highpage接下来创建数据的一份副本
copy_user_highpage(page, vmf.page, address, vma);
__SetPageUptodate(page);
} else {
/*
* If the page will be shareable, see if the backing
* address space wants to know that the page is about
* to become writable
*/
if (vma->vm_ops->page_mkwrite) {
int tmp; unlock_page(page);
vmf.flags = FAULT_FLAG_WRITE|FAULT_FLAG_MKWRITE;
tmp = vma->vm_ops->page_mkwrite(vma, &vmf);
if (unlikely(tmp &
(VM_FAULT_ERROR | VM_FAULT_NOPAGE))) {
ret = tmp;
goto unwritable_page;
}
if (unlikely(!(tmp & VM_FAULT_LOCKED))) {
lock_page(page);
if (!page->mapping) {
ret = ; /* retry the fault */
unlock_page(page);
goto unwritable_page;
}
} else
VM_BUG_ON(!PageLocked(page));
page_mkwrite = ;
}
} } page_table = pte_offset_map_lock(mm, pmd, address, &ptl); /*
* This silly early PAGE_DIRTY setting removes a race
* due to the bad i386 page protection. But it's valid
* for other architectures too.
*
* Note that if FAULT_FLAG_WRITE is set, we either now have
* an exclusive copy of the page, or this is a shared mapping,
* so we can make it writable and dirty to avoid having to
* handle that later.
*/
/* Only go through if we didn't race with anybody else... */
if (likely(pte_same(*page_table, orig_pte)))
{
/*
在知道了页的位置之后,需要将其加入进程的页表,再合并到逆向映射数据结构中
在完成这些之前,需要用flush_icache_page更新缓存,确保页的内容在用户空间可见
*/
flush_icache_page(vma, page);
//指向只读页的页表项通常使用mk_pte函数产生
entry = mk_pte(page, vma->vm_page_prot);
if (flags & FAULT_FLAG_WRITE)
//如果建立具有写权限的页,内核必须用pte_mkdirty显示设置写权限
entry = maybe_mkwrite(pte_mkdirty(entry), vma);
/*
页集成到逆向映射的具体方式,取决于其类型
1. 如果在处理写访问权限时生成的页是匿名的,则用page_add_new_anon_rmap集成到逆向映射中
2. 所有其他与基于文件的映射关联的页,则调用page_add_file_rmap
*/
if (anon)
{
inc_mm_counter(mm, anon_rss);
page_add_new_anon_rmap(page, vma, address);
}
else
{
inc_mm_counter(mm, file_rss);
page_add_file_rmap(page);
if (flags & FAULT_FLAG_WRITE)
{
dirty_page = page;
get_page(dirty_page);
}
}
set_pte_at(mm, address, page_table, entry); /*
no need to invalidate: a not-present page won't be cached
最后,必须更新处理器的MMU缓存,因为页表已经修改
*/
update_mmu_cache(vma, address, entry);
} else {
if (charged)
mem_cgroup_uncharge_page(page);
if (anon)
page_cache_release(page);
else
anon = ; /* no anon but release faulted_page */
} pte_unmap_unlock(page_table, ptl); out:
if (dirty_page) {
struct address_space *mapping = page->mapping; if (set_page_dirty(dirty_page))
page_mkwrite = ;
unlock_page(dirty_page);
put_page(dirty_page);
if (page_mkwrite && mapping) {
/*
* Some device drivers do not set page.mapping but still
* dirty their pages
*/
balance_dirty_pages_ratelimited(mapping);
} /* file_update_time outside page_lock */
if (vma->vm_file)
file_update_time(vma->vm_file);
} else {
unlock_page(vmf.page);
if (anon)
page_cache_release(vmf.page);
} return ret; unwritable_page:
page_cache_release(page);
return ret;
}
0x2: 匿名页
对于没有关联到文件作为后备存储器的页,需要调用do_anonymous_page进行映射,除了无需向页读入数据之外,该过程几乎与映射基于文件的数据没有什么区别,在highmem内存域建立一个新页,并清空其内容,接下来将页加入到进程的页表并更新高速缓存或者MMU
0x3: 写时复制
写时复制在do_wp_page中处理
\linux-2.6.32.63\mm\memory.c
aaarticlea/png;base64,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" alt="" />
/*
* This routine handles present pages, when users try to write
* to a shared page. It is done by copying the page to a new address
* and decrementing the shared-page counter for the old page.
*
* Note that this routine assumes that the protection checks have been
* done by the caller (the low-level page fault routine in most cases).
* Thus we can safely just mark it writable once we've done any necessary
* COW.
*
* We also mark the page dirty at this point even though the page will
* change only once the write actually happens. This avoids a few races,
* and potentially makes it more efficient.
*
* We enter with non-exclusive mmap_sem (to exclude vma changes,
* but allow concurrent faults), with pte both mapped and locked.
* We return with mmap_sem still held, but pte unmapped and unlocked.
写时复制
这个函数处理present pages, 当用户试图写共享页面时。
它复制内容到新页,减少旧页面的共享计数
*/
static int do_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
unsigned long address, pte_t *page_table, pmd_t *pmd,
spinlock_t *ptl, pte_t orig_pte)
{
struct page *old_page, *new_page;
pte_t entry;
int reuse = , ret = ;
int page_mkwrite = ;
struct page *dirty_page = NULL; /*
内核首先调用vm_normal_page,通过页表项找到页的struct page实例,本质上这个函数基于
1. pte_pfn: 查找与页表项相关的页号
2. pfn_to_page: 确定与页号相关的page实例
这两个函数是所有体系结构都必须定义的,需要明白的是,写时复制机制只对内存中实际存在的页调用,否则首先需要通过缺页异常机制自动加载
*/
old_page = vm_normal_page(vma, address, orig_pte);
if (!old_page) {
/*
* VM_MIXEDMAP !pfn_valid() case
*
* We should not cow pages in a shared writeable mapping.
* Just mark the pages writable as we can't do any dirty
* accounting on raw pfn maps.
*/
if ((vma->vm_flags & (VM_WRITE|VM_SHARED)) ==
(VM_WRITE|VM_SHARED))
goto reuse;
goto gotten;
} /*
* Take out anonymous pages first, anonymous shared vmas are
* not dirty accountable.
*/
if (PageAnon(old_page) && !PageKsm(old_page))
{
if (!trylock_page(old_page))
{
//在page_cache_get获取页之后,接下来
page_cache_get(old_page);
pte_unmap_unlock(page_table, ptl);
lock_page(old_page);
page_table = pte_offset_map_lock(mm, pmd, address,
&ptl);
if (!pte_same(*page_table, orig_pte)) {
unlock_page(old_page);
page_cache_release(old_page);
goto unlock;
}
page_cache_release(old_page);
}
reuse = reuse_swap_page(old_page);
unlock_page(old_page);
} else if (unlikely((vma->vm_flags & (VM_WRITE|VM_SHARED)) ==
(VM_WRITE|VM_SHARED))) {
/*
* Only catch write-faults on shared writable pages,
* read-only shared pages can get COWed by
* get_user_pages(.write=1, .force=1).
*/
if (vma->vm_ops && vma->vm_ops->page_mkwrite) {
struct vm_fault vmf;
int tmp; vmf.virtual_address = (void __user *)(address &
PAGE_MASK);
vmf.pgoff = old_page->index;
vmf.flags = FAULT_FLAG_WRITE|FAULT_FLAG_MKWRITE;
vmf.page = old_page; /*
* Notify the address space that the page is about to
* become writable so that it can prohibit this or wait
* for the page to get into an appropriate state.
*
* We do this without the lock held, so that it can
* sleep if it needs to.
*/
page_cache_get(old_page);
pte_unmap_unlock(page_table, ptl); tmp = vma->vm_ops->page_mkwrite(vma, &vmf);
if (unlikely(tmp &
(VM_FAULT_ERROR | VM_FAULT_NOPAGE))) {
ret = tmp;
goto unwritable_page;
}
if (unlikely(!(tmp & VM_FAULT_LOCKED))) {
lock_page(old_page);
if (!old_page->mapping) {
ret = ; /* retry the fault */
unlock_page(old_page);
goto unwritable_page;
}
} else
VM_BUG_ON(!PageLocked(old_page)); /*
* Since we dropped the lock we need to revalidate
* the PTE as someone else may have changed it. If
* they did, we just return, as we can count on the
* MMU to tell us if they didn't also make it writable.
*/
page_table = pte_offset_map_lock(mm, pmd, address,
&ptl);
if (!pte_same(*page_table, orig_pte)) {
unlock_page(old_page);
page_cache_release(old_page);
goto unlock;
} page_mkwrite = ;
}
dirty_page = old_page;
get_page(dirty_page);
reuse = ;
} if (reuse) {
reuse:
flush_cache_page(vma, address, pte_pfn(orig_pte));
entry = pte_mkyoung(orig_pte);
entry = maybe_mkwrite(pte_mkdirty(entry), vma);
if (ptep_set_access_flags(vma, address, page_table, entry,))
update_mmu_cache(vma, address, entry);
ret |= VM_FAULT_WRITE;
goto unlock;
} /*
* Ok, we need to copy. Oh, well..
在用page_cache_get获取页之后,接下来anon_vma_prepare准备好逆向映射机制的数据结构,以接受一个新的匿名区域
*/
page_cache_get(old_page);
gotten:
pte_unmap_unlock(page_table, ptl); if (unlikely(anon_vma_prepare(vma)))
goto oom; if (is_zero_pfn(pte_pfn(orig_pte)))
{
new_page = alloc_zeroed_user_highpage_movable(vma, address);
if (!new_page)
goto oom;
}
else
{
//由于异常的来源是需要将一个充满有用数据的页复制到新页,因此内核调用alloc_page_vma分配一个新野
new_page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, address);
if (!new_page)
goto oom;
//cow_user_page接下来将异常页的数据复制到新页,进程随后可以对新页进行写操作
cow_user_page(new_page, old_page, address, vma);
}
__SetPageUptodate(new_page); /*
* Don't let another task, with possibly unlocked vma,
* keep the mlocked page.
*/
if ((vma->vm_flags & VM_LOCKED) && old_page) {
lock_page(old_page); /* for LRU manipulation */
clear_page_mlock(old_page);
unlock_page(old_page);
} if (mem_cgroup_newpage_charge(new_page, mm, GFP_KERNEL))
goto oom_free_new; /*
* Re-check the pte - we dropped the lock
*/
page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
if (likely(pte_same(*page_table, orig_pte))) {
if (old_page) {
if (!PageAnon(old_page)) {
dec_mm_counter(mm, file_rss);
inc_mm_counter(mm, anon_rss);
}
} else
inc_mm_counter(mm, anon_rss);
flush_cache_page(vma, address, pte_pfn(orig_pte));
entry = mk_pte(new_page, vma->vm_page_prot);
entry = maybe_mkwrite(pte_mkdirty(entry), vma);
/*
* Clear the pte entry and flush it first, before updating the
* pte with the new entry. This will avoid a race condition
* seen in the presence of one thread doing SMC and another
* thread doing COW.
*/
ptep_clear_flush(vma, address, page_table);
//通过page_add_new_anon_rmap将新页插入到逆向映射数据结构,此后。用户空间进程可以向页写入数据
page_add_new_anon_rmap(new_page, vma, address);
/*
* We call the notify macro here because, when using secondary
* mmu page tables (such as kvm shadow page tables), we want the
* new page to be mapped directly into the secondary page table.
*/
set_pte_at_notify(mm, address, page_table, entry);
update_mmu_cache(vma, address, entry);
if (old_page) {
/*
* Only after switching the pte to the new page may
* we remove the mapcount here. Otherwise another
* process may come and find the rmap count decremented
* before the pte is switched to the new page, and
* "reuse" the old page writing into it while our pte
* here still points into it and can be read by other
* threads.
*
* The critical issue is to order this
* page_remove_rmap with the ptp_clear_flush above.
* Those stores are ordered by (if nothing else,)
* the barrier present in the atomic_add_negative
* in page_remove_rmap.
*
* Then the TLB flush in ptep_clear_flush ensures that
* no process can access the old page before the
* decremented mapcount is visible. And the old page
* cannot be reused until after the decremented
* mapcount is visible. So transitively, TLBs to
* old page will be flushed before it can be reused.
*/
//使用page_remove_rmap删除到原来的只读页的逆向映射(fork出的子进程和父进程的页映射完全分离开来),新页添加到页表,此时也必须更新CPU高速缓存
page_remove_rmap(old_page);
} /* Free the old page.. */
new_page = old_page;
ret |= VM_FAULT_WRITE;
} else
mem_cgroup_uncharge_page(new_page); if (new_page)
page_cache_release(new_page);
if (old_page)
page_cache_release(old_page);
unlock:
pte_unmap_unlock(page_table, ptl);
if (dirty_page) {
/*
* Yes, Virginia, this is actually required to prevent a race
* with clear_page_dirty_for_io() from clearing the page dirty
* bit after it clear all dirty ptes, but before a racing
* do_wp_page installs a dirty pte.
*
* do_no_page is protected similarly.
*/
if (!page_mkwrite) {
wait_on_page_locked(dirty_page);
set_page_dirty_balance(dirty_page, page_mkwrite);
}
put_page(dirty_page);
if (page_mkwrite) {
struct address_space *mapping = dirty_page->mapping; set_page_dirty(dirty_page);
unlock_page(dirty_page);
page_cache_release(dirty_page);
if (mapping) {
/*
* Some device drivers do not set page.mapping
* but still dirty their pages
*/
balance_dirty_pages_ratelimited(mapping);
}
} /* file_update_time outside page_lock */
if (vma->vm_file)
file_update_time(vma->vm_file);
}
return ret;
oom_free_new:
page_cache_release(new_page);
oom:
if (old_page) {
if (page_mkwrite) {
unlock_page(old_page);
page_cache_release(old_page);
}
page_cache_release(old_page);
}
return VM_FAULT_OOM; unwritable_page:
page_cache_release(old_page);
return ret;
}
0x4: 获取非线性映射
与按需调页/写时复制相比,非线性映射的缺页处理要短得多
/*
* Fault of a previously existing named mapping. Repopulate the pte
* from the encoded file_pte if possible. This enables swappable
* nonlinear vmas.
*
* We enter with non-exclusive mmap_sem (to exclude vma changes,
* but allow concurrent faults), and pte mapped but not yet locked.
* We return with mmap_sem still held, but pte unmapped and unlocked.
*/
static int do_nonlinear_fault(
struct mm_struct *mm,
struct vm_area_struct *vma,
unsigned long address,
pte_t *page_table,
pmd_t *pmd,
unsigned int flags,
pte_t orig_pte
)
{
pgoff_t pgoff; flags |= FAULT_FLAG_NONLINEAR; if (!pte_unmap_same(mm, pmd, page_table, orig_pte))
return ; if (unlikely(!(vma->vm_flags & VM_NONLINEAR))) {
/*
* Page table corrupted: show pte and kill process.
*/
print_bad_pte(vma, address, orig_pte, NULL);
return VM_FAULT_SIGBUS;
} /*
由于异常地址与映射文件的内容并非线性相关,因此必须从先前用pfoff_to_pte编码的页表项中,获取所需位置的信息。现在就需要获取并使用该信息
pte_to_pgoff分析页表项并获取所需的文件中的偏移量(以页为单位)
*/
pgoff = pte_to_pgoff(orig_pte);
//在获得了文件内部的地址之后,读取所需数据类似于普通的缺页异常,因此内核将工作移交给__do_fault,处理到此为止
return __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte);
}
12. 内核缺页异常
在访问内核地址空间时,缺页异常可能被各种条件触发,例如
. 内核中的程序设计错误导致访问不正确的地址,这是真正的程序错误
. 内核通过用户空间传递的系统调用参数,访问了无效地址
//前两种情况是真正的错误,内核必须对此进行额外的检查 . 访问使用vmalloc分配的区域,触发缺页异常
//vmalloc的情况是导致缺页异常的合理原因,必须加以校正,直至对应的缺页异常发生之前,vmalloc区域中的修改都不会传递到进程的页表,必须从主页表复制适当的访问权限信息
在处理不是由于访问vmalloc区域导致的缺页异常时,异常修正(exception fixup)机制是一个最后手段,在某些时候,内核有很好的理由准备截取不正确的访问,例如从用户空间地址复制作为系统调用参数的地址数据时
复制可能由各种函数执行,例如copy_from_user,在向或从用户空间复制数据时,如果访问的地址在虚拟地址空间中不与物理内存页关联,则会发生缺页异常,对用户态发生的该情况,我们已经在上文讨论过了(在应用程序访问一个虚拟地址时,内核将使用按需调页机制,自动并透明地返回一个物理内存页)。如果访问发生在和心态,异常同样必须校正,但使用的方法稍有不同
每次发生缺页异常时,将输出异常的原因和当前执行代码的地址,这使得内核可以编译一个列表,列出所有可能执行未授权内存访问操作的危险代码,这个"异常表"在链接内核映像时创建,在二进制文件中位于__start_exception_table、__end_exception_table之间,每个表项对应于一个struct exception_table实例,该结构尽管是体系结构相关的,但通常是如下定义
\linux-2.6.32.63\include\asm-generic\uaccess.h
/*
* The exception table consists of pairs of addresses: the first is the
* address of an instruction that is allowed to fault, and the second is
* the address at which the program should continue. No registers are
* modified, so it is entirely up to the continuation code to figure out
* what to do.
*
* All the routines below use bits of fixup code that are out of line
* with the main instruction path. This means when everything is well,
* we don't even have to jump over them. Further, they do not intrude
* on our cache or tlb entries.
*/ struct exception_table_entry
{
//insn指定了内核预期在虚拟地址空间中发生异常的位置
unsigned long insn;
//fixup指定了发生异常时执行恢复到哪个代码地址
unsigned long fixup;
};
fixup_exception用于搜索异常表,在IA-32系统上如下定义
\linux-2.6.32.63\arch\x86\mm\extable.c
int fixup_exception(struct pt_regs *regs)
{
const struct exception_table_entry *fixup; #ifdef CONFIG_PNPBIOS
if (unlikely(SEGMENT_IS_PNP_CODE(regs->cs))) {
extern u32 pnp_bios_fault_eip, pnp_bios_fault_esp;
extern u32 pnp_bios_is_utter_crap;
pnp_bios_is_utter_crap = ;
printk(KERN_CRIT "PNPBIOS fault.. attempting recovery.\n");
__asm__ volatile(
"movl %0, %%esp\n\t"
"jmp *%1\n\t"
: : "g" (pnp_bios_fault_esp), "g" (pnp_bios_fault_eip));
panic("do_trap: can't hit this");
}
#endif //search_exception_tables扫描异常表,查找适当的匹配项
fixup = search_exception_tables(regs->ip);
if (fixup)
{
/* If fixup is less than 16, it means uaccess error */
if (fixup->fixup < )
{
current_thread_info()->uaccess_err = -EFAULT;
regs->ip += fixup->fixup;
return ;
}
//regs->ip指向EIP寄存器,在IA-32处理器上是包含了触发异常的代码段地址
regs->ip = fixup->fixup;
//在找到修正例程后,将CPU指令指针设置到对应的内存地址,在fixup_exception通过return返回后,内核将执行找到的例程
return ;
} return ;
}
如果没有修正例程,这表明出现了一个真正的内核异常,在对search_exception_tables(不成功的)调用之后,将调用do_page_fault来处理该异常,最终导致内核进入oops状态
13. 在内核和用户空间之间复制数据
内核经常需要从用户空间向内核空间复制数据,例如,在系统调用中通过指针间接地传递了冗长的数据结构时,反过来,也有从内核空间向用户空间写数据的需要。要注意的是,有两个原因,使得不能只是传递并反引用指针
. 用户空间程序不能访问内核地址
. 无法保证用户空间中指针指向的虚拟内存页确实与物理内存页关联
因此,内核需要提供几个标准函数,以处理内核空间和用户空间之间的数据交换
. unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
从from(用户空间)到to(内核空间)复制一个长度为n字节的字符串 . get_user (type *to, type* ptr);
从ptr读取一个简单类型变量(char、long、...),写入to,根据指针的类型,内核自动判断需要传输的字节数 . long strncpy_from_user ( char *dst, const char __user * src, long count);
将0结尾字符串(最长为n个字符)从from(用户空间)复制到to(内核空间) . put_user (type *from, type* to);
将一个简单值从from(内核空间)复制到to(用户空间),相应的值根据指针类型自动判断 . unsigned long copy_to_user ( void __user * to, const void *from, unsigned long n);
从from(内核空间)到to(用户空间)复制一个长度为n字节的字符串 . unsigned long clear_user ( void __user *to, unsigned long n);
用0填充to之后的n个字节 . strlen_user ( str );
获取用户空间中的一个0结尾字符串的长度(包括结束字符) . long strnlen_user ( const char __user * s, long n);
获取一个0结尾的字符串长度,但搜索限制为不超过n个字符
/*
get_user、put_user函数只能正确处理指向简单数据类型的指针,如char、int等等。它们不支持复合数据类型或数组,因为需要指针运算(和实现优化方面的必要性),在用户空间和内核空间之间能够交换struct之前,复制数据后,必须通过类型转换,转为正确的类型
*/
这些函数主要使用汇编语言实现的,由于调用非常频繁,对性能要求极高,另外还必须使用GNU C用于嵌入汇编的复杂构造和代码中的链接指令
在新版本的内核中,编译过程增加了一个检查工具,该工具分析源代码,检查用户空间的指针是否能直接反引用,源自用户空间的指针必须用关键字__user标记,以便工具分辨所需检查的指针
Relevant Link:
《深入Linux内核架构》
Copyright (c) 2015 LittleHann All rights reserved