本节内容:

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

一:外键存在的意义:

任何的数据都可以在一个表中存储,但是这样存储有这个问题:如果一个字段在一个表里多次出现,而且这个字段的长度比较大,那么将会在存储上有浪费。

这个时间如果出现另一张表,存储他们之间的关系,是不是更好呢?

但是如果这样做,还会出现一个问题,比如:A B  2张表中,A中存储的时候数字ID 和B表中的ID对应相应的字段,如果这个时候在插入B表不存在的ID,这样我们

就会造成一个问题:我们不清楚这个A表中这个ID 代表什么?诸如此类的问题:最后引入外键。

外键保证了A表中所有的对应类型的ID 都是B表中的存在的数字ID 也就是唯一性约束。如果B 关系表中不存在的ID,在A表插入的时候,会插入失败,并报错。

1)外键是mysql一种特殊的索引。创建了2个表的关系对应。

2)建立了唯一性约束。

问题:这几天测试外键的约束性,一直不成功,最后找到原因。因为使用的mysql的版本很低,默认的存储引擎是MyISAM。

 mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | YES | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
rows in set (0.00 sec)
 mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 5.1. |
+-----------+
row in set (0.01 sec)

引擎:MyISAM不支持外键约束。所以修改数据默认引擎。直接修改配置文件。在mysql配置文件(linux下为/etc/my.cnf),在mysqld后面增加default-storage-engine=INNODB即可。

重启mysql既可。

然后创建外键就有外键约束了。坑!!!!

二:SQLALchemy

注意SQLALchemy是通过类和对象创建创建相应的表结构。插入的数据也类的对象。

 class User(Base):
__tablename__="user"#这个是创建的表的名字。
nid=Column(Integer,primary_key=True,autoincrement=True)
name=Column(String())
group_id=Column(Integer,ForeignKey("group.group_id"))#注意ForeignKey是类 初始化对象。而不是等于。注意创建的外键里添加的字符串是表格名字不是类的名字!!! class Group(Base):
__tablename__="group"
group_id=Column(Integer,primary_key=True)
name=Column(String())

上面的代码有问题:如果我们想设置主键的话,最好不要设置我们自己的值。最好设置单独一列做为主键要不然插值的时候报错。

sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (, "Duplicate entry '1' for key 'PRIMARY'") [SQL: 'INSERT INTO group_1 (group_id, name) VALUES

一:单表查询

进行单表查询的时候,查询的结果返回的是类的一个对象:

 from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import sessionmaker,relationship
from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:@192.168.1.104:3306/day13", max_overflow=)
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
nid = Column(Integer, primary_key=True,autoincrement=True)
username = Column(String())
group_id = Column(Integer,ForeignKey('cc.nid'))
Session = sessionmaker(bind=engine)
session = Session()
ret=session.query(User).filter(User.username=="alex1").all()
print(ret)
[<__main__.User object at 0x0344B390>]

对对象进行相应的操作:

 ret=session.query(User).filter(User.username=="alex1").all()
print(ret[].username)
alex1

根据之前学习的,当我们print输出一个对象默认是调用该对象的一个__str__方法。但是在SQLALchemy里 规定 调用的是__repr__方法,返回值是什么,在打印对象的时候就输出什么。

我们可以自定义__repr__方法来,重定向我们输出的结果,方便我们在操作表的时候,进行输出。

 class User(Base):
__tablename__ = 'user'
nid = Column(Integer, primary_key=True,autoincrement=True)
username = Column(String())
group_id = Column(Integer,ForeignKey('cc.nid'))
gruop=relationship("Group",backref="cc")
def __repr__(self):
result=('%s-%s')%(self.username,self.group_id)
return result
ret=session.query(User).filter(User.username=="alex1").all()
print(ret)
[alex1-]

二:一对多,多表查询:

表结构:

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

如果进行多表查询的时候,原生sql如下:

 mysql> select * from cc join user on user.group_id=cc.nid;
+-----+---------+-----+----------+----------+
| nid | caption | nid | username | group_id |
+-----+---------+-----+----------+----------+
| | dba | | alex1 | |
+-----+---------+-----+----------+----------+
row in set (0.00 sec)

在sqlalchemy里默认帮你把on后面的操作进行了。

 ret=session.query(Group).join(User)
print(ret)
SELECT cc.nid AS cc_nid, cc.caption AS cc_caption FROM cc JOIN "user" ON cc.nid = "user".group_id
 class Group(Base):
__tablename__ = 'cc'
nid = Column(Integer, primary_key=True,autoincrement=True)
caption = Column(String())
def __repr__(self):
result=('%s-%s')%(self.nid,self.caption)
return result ret=session.query(Group).join(User).all()
print(ret)
[-dba]

如上是inner joner,在sqlalchemy里没有right join只有left  join

 mysql> select * from cc  left  join user on user.group_id=cc.nid;
+-----+---------+------+----------+----------+
| nid | caption | nid | username | group_id |
+-----+---------+------+----------+----------+
| | dba | | alex1 | |
| | ddd | NULL | NULL | NULL |
+-----+---------+------+----------+----------+
rows in set (0.00 sec)

left join:isouter=True。

 ret=session.query(Group).join(User,isouter=True).all()
print(ret)

如果想使用right join的话 把类颠倒下即可。

 ret=session.query(User).join(Group,isouter=True).all()
print(ret)

如果连表查询的结果都是对User里的user表的操作,我们需要时Group里的表的内容。可以进行如下操作,在query()里添加我们想要操作的表对应的类。

 ret=session.query(User,Group).join(Group).all()
sql=session.query(User,Group).join(Group)
print(ret)
print(sql)
[(alex1-, -dba)]
SELECT "user".nid AS user_nid, "user".username AS user_username, "user".group_id AS user_group_id, cc.nid AS cc_nid, cc.caption AS cc_caption
FROM "user" JOIN cc ON cc.nid = "user".group_id

上面默认是把Group的cc表里的caption=User.group_id里的所有数据输出。

如果只想要对应的字段可以query()里指定想要的字段:

 ret=session.query(User.username,Group.caption).join(Group).all()
sql=session.query(User,Group).join(Group)
print(ret)
print(sql)
[('alex1', 'dba')]
SELECT "user".nid AS user_nid, "user".username AS user_username, "user".group_id AS user_group_id, cc.nid AS cc_nid, cc.caption AS cc_caption
FROM "user" JOIN cc ON cc.nid = "user".group_id

relationship 查询:

如上的操作对于SQLALchemy来说,还是有些麻烦,于是就就有:relationship()来方便我们进行查询。他只是方便我们查询,对表结构无任何影响。

在哪个表里设置外键,一般就在那个表里设置关系(relationship),这样我们就可以进行更为简单的查询。

 class Group(Base):
__tablename__ = 'cc'
nid = Column(Integer, primary_key=True,autoincrement=True)
caption = Column(String()) class User(Base):
__tablename__ = 'user'
nid = Column(Integer, primary_key=True,autoincrement=True)
username = Column(String())
group_id = Column(Integer,ForeignKey('cc.nid'))
group=relationship("Group",backref="user")
Session = sessionmaker(bind=engine)
session = Session()
sql=session.query(User)
print(sql)
SELECT "user".nid AS user_nid, "user".username AS user_username, "user".group_id AS user_group_id FROM "user"
 ret=session.query(User).all()
for i in ret:
print(i.group.caption)
dba
ddd

如上的查询是正向查询。

 ret=session.query(Group).filter(Group.caption=="dba").first()
print(ret.user)
for i in ret.user:
print(i.username,i.group_id)
[<__main__.User object at 0x0349C850>]
alex1

如上是反向查询。

说明:

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

column_name=relationship("B表名","B表新添加虚拟列")

column_name是表A的为了查询建立的虚拟的列。实际表结构中不存在这个列。这个列是B的对象的集合。可以通过这个列获取B表的中相应的列的值。如上表。

 res=session.query(User).all()
print(res)
for i in res:
print(i.group.caption)

relationship("B表名","B表新添加虚拟列")中的"B表新添加虚拟列",我简称为B列。也就是说B表添加一个虚拟的列B,虚拟B列是A表的对象集合。通过B列可以查询出A表的值。

 ret=session.query(Group).all()
print(ret)
for i in ret:
for j in i.user:
print(j.username)
alex1
alex2

注意是2个for循环。因为ret是Group的对象列表,而列表中的对象的user列是User的对象集合。所以进行2次循环。

总结:relationship是方便查询,在一对多;表结构中分别创建了一个虚拟关系列,方便查询。

三:多对多:表查询

结构:多对多关系中,最简单的是由三张表组成。第三张表是关系表。其他表和这张关系表的关系是一对多的关系。

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

表A和表B通过第三张表C建立关系。

创建多对多表结构:

 from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import sessionmaker,relationship
from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:@192.168.1.105:3306/s12", max_overflow=)
Base = declarative_base() class System_user(Base):
__tablename__="system_user"
username=Column(String())
nid=Column(Integer,autoincrement=True,primary_key=True) class Host(Base):
__tablename__="host"
nid=Column(Integer,autoincrement=True,primary_key=True)
ip=Column(String()) class SystemuserToHost(Base):
__tablename__="systemusertohost"
nid=Column(Integer,autoincrement=True,primary_key=True)
sys_user_id=(Integer,ForeignKey("system_user.nid"))
host_id=Column(Integer,ForeignKey("host.nid")) Base.metadata.create_all(engine) mysql> show tables;
+------------------+
| Tables_in_s12 |
+------------------+
| host |
| system_user |
| systemusertohost |
+------------------+
rows in set (0.00 sec)

插入数据:

 def add_user():
session.add_all(
(System_user(username="evil"),
System_user(username="tom"),
System_user(username="root"),
System_user(username="admin"), )
)
session.commit()
def add_host():
session.add_all(
(Host(ip="172.17.11.12"),
Host(ip="172.17.11.13"),
Host(ip="172.17.11.14"),
Host(ip="172.17.11.15"),
)
)
session.commit() def add_systemusertohost():
session.add_all(
(SystemuserToHost(sys_us_id=,host_id=),
SystemuserToHost(sys_us_id=,host_id=),
SystemuserToHost(sys_us_id=,host_id=),
SystemuserToHost(sys_us_id=,host_id=),
SystemuserToHost(sys_us_id=,host_id=),
SystemuserToHost(sys_us_id=,host_id=), )
)
session.commit() add_user()
add_host()
add_systemusertohost()

需求:ip=172.17.11.12 的主机上的用户都有什么?

按之前的查询:

 ret_2=session.query(Host.nid).filter(Host.ip=="172.17.11.12").first()
print(ret_2[])
ret=session.query(SystemuserToHost.sys_us_id).filter(SystemuserToHost.host_id==ret_2[]).all()
for i in ret:
print(i)
list_user=zip(*ret)#ret=((1,),(2,),(3))将ret转换成(1,2,3)的迭代器。 list_user=list(list_user)[]#转换成列表。 ret_1=session.query(System_user.username).filter(System_user.nid.in_(list_user)).all()
print(ret_1)
 (,)
(,)
(,)
[('evil',), ('tom',), ('root',)

1)首先需要从Host中找指定IP=172.17.11.12 的对应nid。

2)从SystemuserToHost中找到对应的user_id

3)然后从System_user中找到对应的用户列表。

方法一:relationship建立在关系表中:

建立查询关系(relationship):

 class SystemuserToHost(Base):
__tablename__="systemusertohost"
nid=Column(Integer,autoincrement=True,primary_key=True)
sys_us_id=Column(Integer,ForeignKey("system_user.nid"))
sys=relationship("System_user",backref="uu")
host_id=Column(Integer,ForeignKey("host.nid"))
host=relationship("Host",backref="host") Session=sessionmaker(bind=engine)
session=Session()
ret=session.query(Host).filter(Host.ip=="172.17.11.12").first()
print(ret.host)#生成SystemuserToHost的对象集合。然后通过sys列找到username。
for i in ret.host:
print(i.sys.username)
evil
tom
root

思想:通过第三张关系C表和其他两张表建立外键,然后通过关系表和其他两张表建立关系(relationship),A表通过建立查询关系虚拟列A,映射到关系表虚拟列C,虚拟列C中包含B表的对象集合,直接映射到想要得到的B表的列值。

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

二:relationship建立在表A中:

 from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import sessionmaker,relationship
from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:@192.168.1.105:3306/s12", max_overflow=)
Base = declarative_base() class System_user(Base):
__tablename__="system_user"
nid=Column(Integer,autoincrement=True,primary_key=True)
username=Column(String()) class Host(Base):
__tablename__="host"
nid=Column(Integer,autoincrement=True,primary_key=True)
ip=Column(String())
host_u=relationship("System_user",secondary=lambda:SystemuserToHost.__table__,backref="h")#注意需要写通过那个表(secondary=lambda:SystemuserToHost.__table__)和System_user建立关系。注意secondary=后面跟的是对象。如果没有lambda需要把类SystemuserToHost写在前面。 class SystemuserToHost(Base):
__tablename__="systemusertohost"
nid=Column(Integer,autoincrement=True,primary_key=True)
sys_us_id=Column(Integer,ForeignKey("system_user.nid"))
host_id=Column(Integer,ForeignKey("host.nid")) Session=sessionmaker(bind=engine)
session=Session()
ret=session.query(Host).filter(Host.ip=="172.17.11.12").first()
for i in ret.host_u:
print(i.username)
evil
tom
root

注意需要写通过那个表(secondary=lambda:SystemuserToHost.__table__)和System_user建立关系。注意secondary=后面跟的是对象。如果没有lambda需要把类SystemuserToHost写在前面。SystemuserToHost未定义。

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

 二:paramiko

上篇文章已经详细介绍paramiko了。今天在进一步研究一下:

一:需求:当我们需要在主机上串行执行命令.

实现:

 import paramiko
import uuid class SSHConnection(object): def __init__(self, host='192.168.11.61', port=, username='alex',pwd='alex3714'):
self.host = host
self.port = port
self.username = username
self.pwd = pwd
self.__k = None def run(self):
self.connect()
pass
self.close() def connect(self):
transport = paramiko.Transport((self.host,self.port))
transport.connect(username=self.username,password=self.pwd)
self.__transport = transport def close(self):
self.__transport.close() def cmd(self, command):
ssh = paramiko.SSHClient()
ssh._transport = self.__transport
# 执行命令
stdin, stdout, stderr = ssh.exec_command(command)
# 获取命令结果
result = stdout.read()
return result def upload(self,local_path, target_path):
# 连接,上传
sftp = paramiko.SFTPClient.from_transport(self.__transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put(local_path, target_path) ssh = SSHConnection()
ssh.connect()
r1 = ssh.cmd('df')
ssh.upload('s2.py', "/home/evil/s7.py")
ssh.close()

二:需求:实现ssh登录终端:

实现:

 import paramiko
import sys
import os
import socket
import getpass from paramiko.py3compat import u # windows does not have termios...
try:
import termios
import tty
has_termios = True#判断登录类型:True表示linux
except ImportError:
has_termios = False#Flse表示window def interactive_shell(chan):#判断登录的主机类型,并调用相应的函数。
if has_termios:
posix_shell(chan)#linux
else:
windows_shell(chan)#window def posix_shell(chan):#用select模式来监听终端输入设备变化。
import select oldtty = termios.tcgetattr(sys.stdin)
try:
tty.setraw(sys.stdin.fileno())
tty.setcbreak(sys.stdin.fileno())
chan.settimeout(0.0)
log = open('handle.log', 'a+', encoding='utf-8')#写入操作命令日志。
flag = False
temp_list = []
while True:
r, w, e = select.select([chan, sys.stdin], [], [])
if chan in r:
try:
x = u(chan.recv())
if len(x) == :
sys.stdout.write('\r\n*** EOF\r\n')
break
if flag:
if x.startswith('\r\n'):
pass
else:
temp_list.append(x)
flag = False
sys.stdout.write(x)
sys.stdout.flush()
except socket.timeout:
pass
if sys.stdin in r:
x = sys.stdin.read()
import json if len(x) == :
break if x == '\t':
flag = True
else:
temp_list.append(x)
if x == '\r':
log.write(''.join(temp_list))
log.flush()
temp_list.clear()
chan.send(x) finally:
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty) def windows_shell(chan):#window 执行函数。
import threading sys.stdout.write("Line-buffered terminal emulation. Press F6 or ^Z to send EOF.\r\n\r\n") def writeall(sock):
while True:
data = sock.recv()
if not data:
sys.stdout.write('\r\n*** EOF ***\r\n\r\n')
sys.stdout.flush()
break
sys.stdout.write(data)
sys.stdout.flush() writer = threading.Thread(target=writeall, args=(chan,))
writer.start() try:
while True:
d = sys.stdin.read()
if not d:
break
chan.send(d)
except EOFError:
# user hit ^Z or F6
pass def run():#主调用函数。
default_username = getpass.getuser()
username = input('Username [%s]: ' % default_username)
if len(username) == :
username = default_username hostname = input('Hostname: ')
if len(hostname) == :
print('*** Hostname required.')
sys.exit() tran = paramiko.Transport((hostname, ,))
tran.start_client() default_auth = "p"
auth = input('Auth by (p)assword or (r)sa key[%s] ' % default_auth)
if len(auth) == :
auth = default_auth if auth == 'r':
default_path = os.path.join(os.environ['HOME'], '.ssh', 'id_rsa')
path = input('RSA key [%s]: ' % default_path)
if len(path) == :
path = default_path
try:
key = paramiko.RSAKey.from_private_key_file(path)
except paramiko.PasswordRequiredException:
password = getpass.getpass('RSA key password: ')
key = paramiko.RSAKey.from_private_key_file(path, password)
tran.auth_publickey(username, key)
else:
pw = getpass.getpass('Password for %s@%s: ' % (username, hostname))
tran.auth_password(username, pw) # 打开一个通道
chan = tran.open_session()
# 获取一个终端
chan.get_pty()
# 激活器
chan.invoke_shell() interactive_shell(chan) chan.close()
tran.close() if __name__ == '__main__':
run()

基于第二个需求,我们可以实现堡垒机登录:

 堡垒机执行流程:

     管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码)
用户登陆堡垒机,输入堡垒机用户名密码,现实当前用户管理的服务器列表
用户选择服务器,并自动登陆
执行操作并同时将用户操作记录

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

表结构设计:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABC0AAAKlCAIAAABg3YHTAAAgAElEQVR4nOzdeVxU5f4H8O/AzACGVoYLuCQScIUZho4gINuwb5JZLpnLdUETNVGyVDSXzI2yRdP4pTeti9rtd8vKLTVzwxVTxA1EFATZxWW6Jtz8ze+Po6cRBsQZnPMwfM7r/ceZw8w5z8zzPN9zPswMULWmFgAAAAAAwJRI9BYAAAAAAEBrgxwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAACmhhwCAAAAAGC48ur/LP94ZVy/eB8fn4jIqA3ffCd6k3gcxz1yi4iQQwAAAAAADJc0bXrS1Leyz+eXVmn2Hjz6+rARj7uHfvH9n0TDkEMAAAAAAMyWj69vYUmVcLO08vbj7uEJxQPkEAAAAAAAs6X3s1gDXhm469eDws1f9h0a8MrAak3tzj0HXur/cl9//8XLlvM/4nQW/ua6rzcFBQeHhIZt3fHLhm++i46J9fHxeeXVQUcyT/MPKa3STE2e7u8fMHjI0PMXCxpqWOM5pH5L9O6W47jvf9weERkVEBDYvK8bcggAAAAAgOE2fbvZ29t7xqw5lwpLhY1r16ePHjtOuPlG4qR1X2+q1tSGhoVt37X3UmHpnLkLhJ/qxgOO42akvFtYUpW6/NOg4ODXXh928kxuYUnVrDnzBg8Zyt/n/cWp4ydMvFJcsWjpBxMnT2moYY3nkPot0btbjuPGJIw/m3Ml93Jx875uyCEAAAAAAEY5fDxrxMhRfn5+7y9Orbhxp1pTW1qlCQ5WH/vtTLWm9lxuQWhYeNn136s1tWp1yKq0tVW37uo+vE4Oyc0vqtbUXi29znHcyTO5/Pb8q2U+vr78elRU9Onzl6o1tQXXKoPV6oZa1XgOqd8SvbvlOE54H6Z5IYcAAAAAADSDw8ezBg1+bfKUafzNufMX8utz5y98f3Eqv3Hbzl+joqJjY+N27jkgPLBODtG7rnvT29tb+ChXby+vhtrT19+/4FqlcPNq6XVfXz/hZv2W6N0tx3GVN/94Ei8XcggAAAAAgOFKKm4J67n5RX59+/Lr2efzvb29T5y+EKxWX8grFO5TefOPzz5fExIaJmx53BwSHh6Rc+kqv86/zaJX/5cH/LRtl3Bz+669/HdUGmqJ3t0+ua+2I4cAAAAAABhu4KAhP2z5uaTi1uWi8tTlnw4bPlL40Zix42Pj+k2YOFnYMiPl3byCkn0Hj+nmkIDAwJ17DvBfL2lKDkmZM3/CxDdz84su5BW+kTipoYalrVkXExu3e2/GtfKb+w9l9ot/6X/Wrm+kJXp3ixwCAAAAAMCiHbv3vTpocJ8+PiGhYUlT39L9Pvfmn3ZwHPfLvkPCliWpy/39A2Ji43Tfqfjs8zV9/f2DgoOrm5ZDistvTJmaHBAQGBYWvunbzQ017PrtmuUfr4yOifXu0yciMuqTFat1f1q/JXp3ixwCAAAAANDCLFr6wcsDXhW9GWxCDgEAAAAAaGZ5BSVbf97j59f3R533PZ4crt4i+ivwSMghAAAAAADNLDAwKDQsfO36dNFbwizkEAAAAAAAMDXkEAAAAAAAMDXkEAAAAAAAMLUWnEP4r+B4eXm91P/l3XszntAhGr/Dv3/YNmz4yICAQG9v78FDhu7Zf1j0lwUAAAAAgH0tO4dUa2pLK2+vSlsbFRX95A7RkLnzFw54ZeCP23ZdK795tfT6/36/5dWBg0R/WQAAAAAA2Nfic0i1praorNrPz++JHqK+b/7944BXBpZWaXQ3llTcEv1lAQAAAABgX4vPIYUlVe/OW/j2jBRhe8WNOwsWLg4NCwsMDEqePkM3G6xKWxsaFh4SGvbdj9uFnXz/4/aIyKiAgMBqTW3VrbsLFy0LCQ0LVquXpC5vJIcMGfr6Tw3/Neg6u22oSQ39j0yO437atisqOsavb983EicVXKsU/dUGAAAAAGhGLTuH8EtQUPDJM7nC9tTln742dNiZC5dzLl0dNSZh3oJFwo/enpFyIa9w07ebY2PjhJ2MSRh/NudK7uXiak3tJytWDxw05OSZ3LyCkomTpzSSQ/z8/IrLbzTSNt3dNtSkRnJIwvgJ2efzcy8Xj014Y/o7s0R/tQEAAAAAmlHLziHVmtorxRXvzJw9bPhIYXt0TOzh41n8euapcxGRUcKPKm7cOXTs1Ffp//L29hZ2ciTztHCH2Lh+Bw6f4NevFFc0kkP69PEprbyt2xjdf11ZZ7cNNamRHJJ9Pp9fzzqXFxIaJvqrDQAAAADQjFp8DqnW1F4uKvf1/ev7Id7e3kJCKK3S+Pj48OsbvvkuWK0eOGjIlKnJulf8lTf/EB7r4/NQuujdu3dDR4+Njav/17Ea2m1DTWooh+get6TilnB/AAAAAADzYA45JK+gJDAwSNgeERl19EQ2v34i63x0TCy/HqxWH/vtTPXDb3TUSQIhoWGZp87x69nn8xt5P2TR0g/GjB3fUJPqPLChJvn5+eUVlPDrZ3Ou6D48/2oZv/7r/iNx/eJFf7UBAAAAAJpRi88hRWXV78ycPXnKVGH7goWLXx824mzOldz8otFjx33w0af89sDAoK07fim4Vjlj1pyGAsM7M2cPG/H3C3lXz18sGDV6bCM5pKTi1qsDB40eO+7X/UdKqzRXS69v/XlPQ7ttqEmvDxvx1tszrxRXnM25kjB+gu7DJ05OyisoOXX24iuvDvpk5eeiv9oAAAAAAM2oZecQjuN8fHzGJIy/VFgqbC+t0syYNSc4WK1Wh8ydv7Dixh1++5dfbQwOVgcGBn351caGAkNhSVXixDf9+vYNDQv7Kv1fjf//kGvlN997f2lUdIx3nz7BwerBQ4auSlurd7cNNelE1vnBQ4b6+PhERkb97+atuq36/IsvAwID/f0DZs2eq/sRLwAAAAAAM9CCc4gZe+T/cQcAAAAAaNGQQx6Nq7eY4IiiP2sAAAAAgCcHOYRFyCFmiQ+xXl5eL/V/effejCd0iKb/CMMMAPRCuQAA00AOATAR/kReWnl7VdraqKjoJ3eIJv4IFxYAoFczlot+8f1FfzoAwCzkEAATEU7kRWXVfn5+T/QQTfkRcggA6NWM5QJ1BgAagRwCYCL8+biwpOrdeQvfnpEibK+4cWfBwsWhYWGBgUHJ02eUVNwSfrQqbW1oWHhIaNh3P24XdvL9j9sjIqMCAgKrNbVVt+4uXLQsJDQsWK1ekrrc4Byyc8+Bl/q/3Nfff/Gy5fyW0irN1OTp/v4Bg4cMPX+xQO/RAcAsNV4uGipZ9cuIKb9XCQAtEXIIgIkI5+OgoOCTZ3KF7anLP31t6LAzFy7nXLo6akzCvAWLhB+9PSPlQl7hpm83x8bGCTsZkzD+bM6V3MvF1ZraT1asHjhoyMkzuXkFJRMnTzE4h4SGhW3ftfdSYemcuQv4Le8vTh0/YeKV4opFSz+YOHmK3qMDgFmq/9dZdMtFQyWrfhmpxvshANAo5BAAE+HPx1eKK96ZOXvY8JHC9uiY2MPHs/j1zFPnIiKjhB9V3Lhz6Nipr9L/5e3tLezkSOZp4Q6xcf0OHD7Br18prjA4h6jVIavS1lbduitsiYqKPn3+UrWmtuBaZbBarffoAGCWGi8XDZWs+mVE764AAATIIQAmIpyPLxeV+/r+9f0Qb2/v0srb/HpplcbHx4df3/DNd8Fq9cBBQ6ZMTdb9H5e6/9fSx8dHeGy1prZ3794NHb2vv3/BtUrh5tXS67pt2Lbz16io6NjYuJ17DgitEn4P2tvLS+/RAcAsNZ5DGipZ9cuI3l0BAAiQQwBMRDgf5xWUBAYGCdsjIqOOnsjm109knY+OieXXg9XqY7+dqX74jY46J/WQ0LDMU+f49ezz+Y2c8vu/POCnbbuEm9t37R3wykDdO1Te/OOzz9eEhIbxN8PDI3IuXeXXy67/rvfoAGCWGs8hDZWs6nplRO+uAAAEyCEAJsKfj4vKqt+ZOXvylKnC9gULF78+bMTZnCu5+UWjx4774KNP+e2BgUFbd/xScK1yxqw5DeWQd2bOHjbi7xfyrp6/WDBq9NhGTvlpa9bFxMbt3ptxrfzm/kOZ/eJf+p+164Wfzkh5N6+gZN/BY8IFRMqc+RMmvpmbX3Qhr/CNxEl6jw4AZqnxHNJQyapfRqo1tQGBgTv3HLhUWCr6kwJouvzyssT0JOcUV+tEG0ogMIB1oo1zimtielJ+eVkjLzVyCICJ8J9x8vHxGZMwXvesXFqlmTFrTnCwWq0OmTt/YcWNO/z2L7/aGBysDgwM+vKrjQ3lkMKSqsSJb/r17RsaFvZV+r8ayQnXb9cs/3hldEysd58+EZFRn6xYrfvTJanL/f0DYmLjhPdMistvTJmaHBAQGBYWvunbzXqPDgBmqfEc0lDJql9GqjW1n32+pq+/f1BwsOhPCqCJvsvcZje1g+jX8WbDbmqH709sb+jVRg4BAAAAAKjNLy97LsmOEoiWEG0k+onoZ6KfiXYS7SLaRbSb6BeiX4j2EP1K9CvRXqJ9RPuI9hPtJzpAdJDoIFEG0SGiQ0SHiY4QHSE6SnSM6BjRcaJMokyiE0S/Ef1GdJLoFNEpoiyi00SnibKJzhCdITpLdI7oHNF5ogtEF4hyiHKJcokuEl0kyiO6RHSJKJ/oMtFloitEBUQFRIVEV4muEhURFRMVE10jKiEqISolKiMqIyonqiCqIKokqiKqIrpOVE1UTXSD6CbRTaJbRLeJbhNpiDREvxP9h+g/RHeI/iD6g+guUQ1RDVEt0X+J/kukISog2kA0juymdmjoXRHkEABz08gf3AQAAICGJKYn3Q8h24m2E+1ADjE0h/xJdI/oHtEGogRKTE/S+4IjhwAAAAAA1DqnuFIC0UbkkObLIYVECeSc4qr3BUcOAQAAAACovf/F9B+QQ5ovh/xOlEA2E9vofcGRQwAAAAAAau9/u3obckjz5ZD/u/+Fdf0vuOhdDgAAAAAgOuQQ5BAAAAAAAFNDDkEOAQAAAAAwNeQQ5BAAAAAAAFNDDkEOAQAAAAAwNeQQ5BAAAAAAAFNDDkEOAQAAAAAwNeQQ5BAAAAAAAFNDDkEOAQAAAAAwNeQQ5BAAAAAAAFNDDkEOAQAAAAAwNeQQ5BAAAAAAAFNDDkEOAQAAAAAwNeQQ5JDa/PKyxPQk5xRX60Sb+wMCHpN1oo1zimtielJ+eZnoHWqWMEoxSgGMhDKCMgKsuT+0kENabQ75LnOb3dQOopc2s2E3tcP3J7aL3q1mBqMUoxTASCgjKCPAoPsjCjmkdeaQ/PKy55LsKIFoCdFGop/Q/YZ2v4aogGgD0Tiym9oBvyjCKMUoBWAHygjKCLAJOaRV55DE9KT7dRnd31zdv4EogRLTk0TvXLOBUYpRCmAklBGUEWATckirziHOKa6UQLQR3d983V9IlEDOKa6id67ZwCjFKAUwEsoIygiwCTmkVeeQ+9/V+wHd33zd/ztRAtlMbCN655oNjFKMUgAjoYygjACbkENadQ5B95u4+wGjFKMUwPRQRlBGgE2Ym8gh6H6UZqZhlGKUAhgJZQRlBNiEuYkcgu5HaWYaRilGKYCRUEZQRoBNmJvIIeh+lGamYZRilAIYCWUEZQTYhLmJHILuR2lmGkYpRimAkVBGUEaATSLOzV79e7XCucnWjEVpRmlmH0YpRimAkVBGUEaATSLOTY7jWuHcZGvGojSjNLMPoxSjFMBIKCMoI8AmI+em7TrbXvG9VP6qznM6Uwb9bcDfbP9pK8zNpzY95fqKKx0j2422vfr3UvmrOi/ozM9NTmeh0yT5TdJ9WndVgMplqIvsoIyfmxzHtV/bXhmiVIYr237f9pmvn3GPc/f09XQd4mqz16ahuclxnO7c5DiOn5u2v9j2GthLFajq/Elnfm5KSiTdZ3dXBalc/u4iuyjj5ybHce12tVPEKVTBKuQQlGaUZvFhlGKUAhgJZQRlBNhk5NxUhCpsv7SV/iztMr0LZdBzHz3n9HcnYW46jnNsv7I9HSNFmMJ2g610n7TLzC563w+xX2DvOMHR8pil/fv2PSb3EHJI15SulictO33QSRmidB7hbHXQyvK0Zde5XV2GuTxuDlFEKWx320ovSrss6sLPTfuP7B2nOVoWWNp/at/j7R5CDuk5pac8Ty4tlCKHoDSjNIsPoxSjFMBIKCMoI8AmI+emUq20W2J3f3pmkGS/xCPYw/p7azpCsh0yZahSckhCx0gZorRbbkfHG/xclnu0u/xXOZ0hy+OWyhClkENkR2V0gSyzLDmOszpgxc9N6Smpp5/n4+YQZbjS7ks7Kv1rbrr3c5efk1MVWV61VIYrhRxic8oGn8tCaUZpZgVGKUYpgJFQRlBGgE1Gzs22/2jrHunuFuNm+5UtPzcdZjg8P/F5OkIOMx3s37Xn52bb9Lbu0e5ucW6239jqzSGePp5/fU6rNyfkEGFuchynOzc5jnvcHNJ2V1v3fu5u/d1sf7Xl56an78MHfZBDJNUS5BCUZpRmVmCUYpQCGAllBGUE2GT83JTsk3RY0kEZouTnpnyL3NPH0+pHK6VaKdspE+am5JikwwcdlKFKvTlEEaGQHZTxc1OSJTEmh6j8VdKzUn5uyrPkQg6hUpKUSDqs7aCMUPJzUxGtkF2U8XNTUiERcgi+p47SjNLMEIxSjFIAI6GMoIwAm4ycm12ndpXukLbZ0EbIIXSInEY5ucW5OY53FOZm1+ldpXulbf7dRjeHeAR52H5rK82Q0mnqktLFMdFRliGTHZQ5Jjoak0OcRzl3T+lumWMpz5L3nNxTyCFdF3SVXpS2OdhGyCFdFnVxTHaU5clkeTLHZEfkEJRmlGYWYZRilAIYCWUEZQTYZOTc7PxuZ5W/yi3Grd3adsLcbLe2HcdxT218SpibnRd0VgWo3GLd2n3dTpibHT7qoPJXKdVKOk0Wxy2eT3peFahSRCieWf+MMTnE6qiVy3AXT19P91j3p79/WsghnT/prApUufV3a7ejHT83LYosnp/1vCpIpYhWPPPTM8ghKM0ozSzCKMUoBTASygjKCLDpScxN+3ft//by3zA39b/gonf5k+5+lGaUZoxSjFIApqCMoIwAm5p3bkp3Stuub+vp59l2XVsTzE2u3sL+3GRrxqI0ozSzD6MUoxTASCgjKCPApuadmx5BHspQ5XMfP4e5iRyC7he/f80DRilGKYCRUEZQRoBNmJvIIeh+lGamYZRilAIYCWUEZQTYhLmJHILuR2lmGkYpRimAkVBGUEaATZibyCHofpRmpmGUYpQCGAllBGUE2IS5iRyC7me3NGtb/oJRavajFIB9KCMoI8AmzE3kEHQ/u6VZ7BDRDAtGqdmPUgD2oYygjACbMDeRQ9D94pfmC3lX9W4XO0Q0w4JRajajFKDlQhlBGQE2YW4ihxjS/RzHPenu5zjO/Lq/jjM5l1enrR36+nCO4/Tegb+UP3jwYHx8vFqtNjISjBo1asyYMQY8kOM4gw/KVJHiOO5JFymO48xslAKYAUaudTiOayXXOgBNxMjcRA5pYd2PHGJMaT51JnfFZ2kDBw3W/R+ceu/JX8pHR0cfP3785s2bBocBfhk5cuTo0aMNeCByCHIIQIvGyLVOs+SQXq/0QhkBs8HI3EQOaWHdjxzyuN1//XbNsd/OfPjRiv4vD+D0LXo7yPgY0CwLcghyCECLxsi1TrPkEI7jUEbAbDAyN5FDWlj3cxzX7ot27lHuqr4qxwRHy12WfPdLDkocUhwUYQqPII/uSd0tMiyE7rdbbqcMUypDlU+vf5rvfo7j2v2znSJKoQpUUTZRNtm/Z68MUypDlJ2XdG4sh+SR/SJ7ZbjSI8ij48qOHMfx3c9xXLsf2iliFKogFRWTpFDisMxBEanwUHt0n93d4qoF3/0cx+l2P8dxfPdzHNduTzv3l9xVASrH6Y6WpZbGd3/VrbuHjp1cvPTDuH7xeuPHI3OI7n20Wu2ff/65evXqmJiY0NDQRYsW3b17V4gKGRkZwse3ampq3nvvveDg4LFjx5aXl9eJE/fu3Vu9enV0dLRard64caOwneO4zMzMwYMH+/n5jRw5Mj8/v84D161b17t376+//lrvIUaMGJGVlSUkkOzs7BEjRjBVpDiOa/ePB+N2nKPlr5Z8kZIckTjMeTBup3a3OGohFCm7j+2UYUplmPLpfz7NFymO49ptfDBuzxOdJ/v37ZXhSmWosvOyzo3kkPsD9UGR4jiOL1K2u217DeylClR1/rgzX6QkxZLuKd1VQSqXkS6yHBlfpDiOa/dzO0WsQhWswgUEwGNh5FqH47i237bt9VIvT1/Pvw38m83PNvy1juSsxOE9B0WEwiPYo/vb3S3OWvBlxHarba9XeqkCVJ1TOwtlRFhYvtYBaCJG5iZySAvrfo7jeo7uKf9BLt0udfq7U7cp3fju7zS/k8sQF/k2uWynzOnvTg4pDkL3d0vuJtsje2bNM25xbkIO6ZnQU75XLj0opWzq+GFH1yGuVr9aSY9Ke0zu0UgO6biio8vrLlaHraSnpY5THHVzSM/EnvKTculZKRVTp087uYx0kZ+Wy87JnCY4OSx1eGQO6Tm1pzxXLi2U9kzq2e29bgZ3vyRBsi/j2MJFSyMjoxqPH40v9d+OWLdu3bhx40pLS6uqqpKSklauXCncJzk5uays7Pr161qtNi0tbcaMGbdv316zZs3s2bPr7Gfjxo1jxowpKiq6ceNGSkqK7oGSk5OLioo0Gs2SJUvGjRun+8DNmzf36dNn69at/Mb6h9iyZcu0adOEps6cOXP79u3GPH1+setv14w5pOeYnvItculOqdMop25Tu/FFqtPCTi6vuch3ymV7ZE6jnBzmOAhFqtv0brL9sme+fMatn5uQQ3qO6yk/IJcekdJ56vhxR9fXXK32W0lPSHtM6cE9fg5RRCpsd9lKc6Vd3u/CFyn75faOUx0tL1vaf2LfY3oPIYf0fLOn/KJcWiDFBQTAY2HkWofjOKcxTla/WFket+w2o5vLay78tU6n1E4uw1zkGXLZMZlTgpPDew58GVFEKGx/spVmSbvM74L3Q8AsMTI3kUNaWPdzHCf/Qc53v9UPVsoQJd/97tHuNv+24bvf+kdrRaRC6H7JMYnNDzbPfv7si94vCjnEZpuN0P1u8W5ttrbhu98y05JrOIe49Xdrs7sN3/3S01JOJ4fYZNgI3e8e725zyIbvfutMa0Ws4pE5RJ4r57tfnitXRiqNySH7Dx1fuGhpdHSMMZfg9XPIgAED8vLy+PWCgoL4+HjhPpcuXRLu1r9//2vXrmm1Wo1GExERUWc/gwYNysnJ4ddv3rypeyD+UVqttrq62t/fX9i+e/fugICAjIyMRg5RU1MTHh5++fJlrVZbVlYWExNTW1trzNPnl+bNIfItcr5IWW2xUoYq+SLlHuNus9mGL1LWW60VkQqhSEl+k9hssXn2i2df9H5RyCH3f4t5jug8ucW7tdnRhh+llqcsucfPIcpwpd0/7OjaX0XKvZ+7/IycKsiywFIZrhRyiM1JG1xAABiAkWsdjuPke+T8tY70iNTT15MvI+5x7ja7bPgyYr3XWhGt4MuIMkxp97kdXcLnssBsMTI3kUNaWPe/6PWi0P0Wv1p4+nry3e/p42mx34LvfkmGxNPHk+/+Z9OeVaqVLoNdnn/zeY7jhBwiOSkRut/T19PipIXQ/S96vdhQ93v6elpcsBC6n9PJIZICidD9nr6eFlcs+O6XXJV4+no2nkNe9HpR6H6LSgtPP89m+VzW4eOnlqYuN/hzWXVyiK+vb01NDb9eU1Pj5+cn3OfevXu6dxP27OXlVWc/fn5+wk50t3MPfw9Ed3tkZOSyZct0f6r3ECtWrJg3bx6/kpaWpmXs+yEver0oFCmLAxaevp58kfL08bQ4ZMEXKclRiaePJ1+knl3zrDJE6TLE5fkpz3MPPtjNcZwkWyIUKU9fT4tsC2GUvuj14uPmkLY/t3WPc3fr72b7iy1fpDx9Pf8aGb05IYdIqiS4gAAwACPXOkIZ4a91OI67X0Z8/iojkrMST19Pvoy0/bGte6y7W7yb7XZb5BAwS4zMTeSQFtb9HMdZ7rDku/+p9KfcYt347ldEKKy/t+a73+onK/cYd777lWql9U/WdIIsD1rq5hDd7leGKa13WfPdL98v5xp+P0QZprQ6aMV3v/yoXDeH6Ha/IkZhfdSa736rE1bu8e5896v8VdJLUr775RfknM77IdKi+594eerYU26vuDXv99SPnzy7/GNjv6ceHx8vfG2joKBgwIABeiNEXFxcVVUVv15bW3c/UVFRBQUF/HpxcXFTckhWVpavry//zZBGDlFSUuLr61tYWBgREVFZWclaDuE4znK3JbW6gB0AACAASURBVF+kntr0lFucG1+kFJEK6x+t+SJltc3KPcadL1LKEKX1dmvKIssjlro5RLdIKcOU1r9a86NUfkjeyPshKn+VNFvKFyn5SbmQQ+gaSYolHdZ0UEYo+SKliFbIcmV8kZKUSYQcggsIAMMwcq3TUA5RRCmsf7lfRqz2WbnHuQtlRHJR0mF1B2W4EjkEzBIjcxM5pIV1P8dxPcb3kG6XWm22cn3FteP7Hfnud5jl4DzUWb5dLtslcxrl1GlhJ777PYI82v6zreVBy27TuzWUQ7q90+2FkS/IDspkGTKnsU6N5JBus7q9MPoF2QmZ/Li8Z2LPhnKIwzIH59HO8my57LzMKdGp02ed+O53HuPc/d3ullcs5RfkPZN66uaQHjN6SAulVjlWrsNdO37Z8Qn+3d5VaYMGDzEgh6xevXrChAn890CmTZu2fv16vRHio48+mjVr1vXr1ysrK2fOnFnnPkuWLJk0aVJFRUVZWdlbb73VlByi1Wp3797t5eX15ZdfNnIIrVabnJw8cODAlJQU/iZTRYrjuB4Tekh3Sq1+snJ91bXj4o58kXKY7eD8urN8l1y2R+Y02qnTok58kfII8mi7sa3lEctu73RrKId0m9nthb+/IDsikx2ROSU4NZJDnEc5d5/V3fK8pfykvOeknkIO6Tq/qzRH2mZ/GyGHdFnUxXGaoyxXJsuVOU5zRA4BMBIj1zoN5RCH9xycRzjLD8llx2VO45w6fdiJLyNd53SVnpK22dVGN4d4BHvY/mwrPSdl+VoHoIkYmZvIIS2s+zmOs1ti5xHooVQrHWY5SPZL7v+9rP2SrsldPYI9lCFKh1kOkiMSvvvbf9beI9jDI8ij/WftG8ohlscte0zqofJXKSIUz659tpEcYplt6fimo8pf5R7j/sw3z3j6eurNIZIrkq7zunqEeijDlQ5LHCTXJHz3W52ychnp4unn6d7P/emtT+vmELt0Ow+1hypI1XVxV8lNyZMuzWdzr3z+xT8e+X8MdeNBTU1NampqeHh4ZGTkihUr/vzzT70R4s6dO/Pnz1er1bGxsXv27KlzH41Gk5KSEhgYGB8fv3fvXt0PdzWSQ7RabXp6Osdxa9asaegQWq320KFDHMdlZ2ezmUPsUu08Aj2UIUqHFAfJIcn9v5d1SNJ1+oNxm+IgyZTwRar96vYeag+PII/2n7dvKIdYnrTsMfnBuF33bCM5xOqwlctwF09fT/dY96e/e1rIIZ0/7qwKVLm95NZuezu+SFkUWjw/83lVkEoRrXjmh2eQQwCMxMi1TkM5RJIt6Tqrq4faQxmqdFjgILkg4ctI5w86qwJVbvFu7Ta3E651OqR1UAWolKFKlq91AJqIkbmJHILuf7zul1yQ8N1vfcDarZ9bs3Q/x3FileYLeVf1btc+sUX4fkh+fr7w4a5mWdasWTN8+HDhZmsepS20SAGYH5QRlBFgE+YmcgjT3V//exR89/dM7Cn7TSY/Ln9hzAv2qfYtPYc0pBnjQZ3l7bffrqqqKi0tnTRp0hdffNEs+7xx40ZmZmZAQMDRo0eFja1hlNYvUnrGbcspUgDmpyWWkRZ9rQPQRJibyCEtsvvbr2/vEeyhDFd2ndtVclGCHPK4y44dO0JDQ6Oioj788EPdv51lzBIaGhoTE7Nlyxbdja15lLbQIgVgflBGUEaATdaJNpRA9APmZvPNzd+JEshmYhu9LzhbMxalGaWZfRilGKUARkIZQRkBNjmnuFIC0UbMzeabm4VECeSc4qr3BWdrxqI0ozSzD6MUoxTASCgjKCPApsT0JEogWoK52XxzcwNRAiWmJ+l9wdmasSjNKM3swyjFKAUwEsoIygiwKb+8zG5qB0ogWky0kegnzE1D5+ZtogKidKJxZDe1w+WKcr0vOFszFqUZpZl9GKUYpQBGQhlBGQFmfX9i+/0oYjbGkmSsRKyj203t8P2J7Q292mzNWJRmlGb2YZRilAIYCWUEZQRYll9elpie5JziajOxjfgpwmhPvfZU29famvigNhPbOKe4JqYn5ZeXNfJSszVjUZpRmtmHUYpRCmAklBGUEQCTWbT0g/nvLRK9GXqxNWNRmlGa2YdRilEKYCSUEZQRANO4frsmJiY2PDyi6tZd0RtTH1szFqUZpZl9GKUYpQBGQhlBGQEwjSPHs/j/X7z/0HHRG1MfWzMWpRmlmX0YpRilAEZCGUEZATCN1OWf8Dnk/cXLRG9MfWzNWJRmlGb2YZRilAIYCWUEZQTABK7fromPf4nPITExsddv14jepDrYmrEozSjN7MMoxSgFMBLKCMoIgAlknjrH6SxHMk+L3qQ62JqxKM0ozezDKMUoBTASygjKCIAJfPTJZ7o5JPXDT0RvUh1szViUZpRm9mGUYpQCGAllBGUEwAQGvPKqbg6Jf6k/ax/NYmvGojSjNLMPoxSjFMBIKCMoIwBPWtbZi1y95bfTF0RvmC62ZixKM0oz+zBKMUoBjIQygjIC8KStWJVWP4d8smK16A3TxdaMRWlGaWYfRilGKYCRUEZQRgCetMFDXqufQ155dZDoDdPF1oxFaUZpZh9GKUYpgJFQRlBGAJ6os7lX6ocQfsk+f0n05gnYmrEozSjN7MMoxSgFMBLKCMoIwBP1+Rf/aCiHrEpbK3rzBGzNWJRmlGb2YZRilAIYCWUEZQTgiRr6+vCGcsiQ14aK3jwBWzPWOtGGEoh+QGluvtL8O1EC2UxsI3rnmg2MUoxSACOhjKCMADw5ufnFDYUQfjl3sUD0RvLYyiHOKa6UQLQRpbn5SnMhUQI5p7iK3rlmA6MUoxTASCgjKCMAJuPl5cVxXOXNP0RvSX1s5ZDE9CRKIFqC0tx8pXkDUQIlpieJ3rlmA6MUoxTASCgjKCMAJoMc0lT55WV2UztQAtFioo1EP6E0G1qabxMVEKUTjSO7qR0uV5SL3rlmA6MUoxTASCgjKCMAJoMc8hi+P7H9fnWG5mA3tcP3J7aL3q1mBqMUoxTASCYrI5IEiSRBIvo0RxkBEAtyyOPJLy9LTE9yTnG1mdhG9NLWQtlMbOOc4pqYnpRfXiZ6h5qlFjFKGb/+wCiFVs40ZcT2NVvb12xFn+9PqCihjAA8EnIIAIhgX8ax/YeOi94MABDRwkVLFy5aKnozeChKAKaHHAIAImDq+gMATK/q1t3IyKjo6JiqW3dFb0w1ihKAGJBDAMDUWLv+AADTO3TsJP/vAg4fPyV6Y1CUAESBHAIApsbU9QcAiGJp6nK+Diz94CPRG4OiBCAK5BAAMDWmrj8AwPSu366J6xfP14G4fvHXb9eI2x4UJQBRIIcAgEmxdv0BAKZ3/ORZTmc5fvKsiI1BUQIQC3IIAJgUU9cfACCK5R+v0K0DH33ymYiNQVECEAtyCACYFFPXHwAgiv4vD9CtAy8PeEXExqAoAYgFOQQATIqp6w8AML1TZ3K5ekvW2YtitQdFCUAsyCEAYDqsXX8AgOmtWJVWvw6sWJUmSmNQlABEhBwCAKbD1PUHAIhi0OAh9evA4CGvidIYFCUAESGHAIDpMHX9AQCmdzb3Sv0iwC/nLhaYvj0oSgAiQg4BABNh7foDAEzv8y/+0VAdSPviSxM3BkUJQFzIIQBgIkxdfwCAKIa+PryhOjD09eEmbgyKEoC4kEMAwESYuv4AANO7kHe1oSLALxfyrpqyPShKAOJCDgEAU2Dt+gMARMfPfbGOjqIEIDrkEAAQgbjXHwDAAqbqAFONAWglkEMAQAQ45QMAU3WAqcYAtBLIIQAgApzyAYCpOsBUYwBaCeQQABABTvkAwFQdYKoxAK0EcggAiACnfABgqg4w1RiAVgI5BABEgFM+ADBVB5hqDEArgRwCACLAKR8AmKoDTDUGoJVADgEAEeCUDwBM1QGmGgPQSiCHAIAIcMoHAKbqAFONAWglkEMAQAQ45QMAU3WAqcYAtBLIIQAgApzyAYCpOsBUYwBaCeQQABABTvkAwFQdYKoxAK0EcggAiACnfABgqg4w1RiAVgI5BABEgFM+ADBVB5hqDEArgRwCACLAKR8AmKoDTDUGoJVADgEAEeCUDwBM1QGmGgPQSiCHAIAIcMoHAKbqAFONAWglkEMAQAQ45QMAU3WAqcYAtBLIIQAgApzyAYCpOsBUYwBaCeQQABABTvkAwFQdYKoxAK0EcggAiACnfABgqg4w1RiAVgI5BABEgFM+ADBVB5hqDEArgRwCACLAKR8AmKoDTDUGoJVADgEAEeCUDwBM1QGmGgPQSiCHAIAIcMoHAKbqAFONAWglkEMAQAQ45QMAU3WAqcYAtBLIIQAgApzyAYCpOsBUYwBaCeQQABABTvkAwFQdYKoxAK0EcggAiACnfABgqg4w1RiAVgI5BABEgFM+ADBVB5hqDEArgRwCACLAKR8AmKoDTDUGoJVADgEAEeCUDwBM1QGmGgPQSiCHAIAIcMoHAKbqAFONAWglkEMAQAQ45QMAU3WAqcYAtBLIIQAgApzyAYCpOsBUYwBaCeQQU3hCpY17sAQGBk2YOPnilWst+ulAq4JTPgAwVQeYaoyRT+SRWwx7ceosDd25vPo/yz9eGdcv3sfHJyIyasM334n+mjy5VwaMhBxiCk8uh1Rraq/frjmbc2XCxMkJ495o0U8HWhWzOeUDgMGYqgNMNcbIJ/LILU3UL76/AbtKmjY9aepb2efzS6s0ew8efX3YCOOPy9orA80FOcQUnmgO4V0qLO3r79+inw60KmZzygcAgzFVB5hqjJFP5JFbnuiufHx9C0uqhJullbeNPy5rrww0F+QQU9A70Ctu3FmwcHFoWFhgYFDy9BklFbf47VW37r73/tKQ0LCAgIBPVn7eyCTR/VHWubyIyCh+vbRKMzV5ur9/wOAhQ89fLBDus2LV/0RERvn5+S1cvKzxNnAc9/2P2yMiowICAvkmLVy0LCQ0LFitXpK6HPMWjGc2p3wAMBhTdYCpxhj5RBrZ0tB5f+eeAy/1f7mvv//iZct1X5A6L0tTdqX3s1gDXhm469eDws1f9h0a8MrAphyX47h1X28KCg4OCQ3buuOXDd98Fx0T6+Pj88qrg45knuYf0tBlz2O9MvVbone3dS6QwEjIIaagt7SlLv/0taHDzly4nHPp6qgxCfMWLOK3f7Ly80GDXzt5JjevoGTCxMmPzCHXb9ecOH1h+MhRX2/4lt/+/uLU8RMmXimuWLT0g4mTp/Ab1329Ka5f/N6DR/Ovlr07b2HjbeA4bkzC+LM5V3IvF1draj9ZsXrgoCF8kyZOnmIelRrEZTanfAAwGFN1gKnGGP9EGvouR0Pn/dCwsO279l4qLJ0zd4Hururv/JG72vTtZm9v7xmz5lwqLBXuvHZ9+uix44SbbyROWvf1pqYcl+O4GSnvFpZUpS7/NCg4+LXXh508k1tYUjVrzrzBQ4by99F72aP3lWlkS/2W6N1tnQskMBJyiCnoLW3RMbGHj2fx65mnzgnvZsT1iz9w+AS/fqmwtPEcwi+DBr8m7KpaUxsVFX36/KVqTW3BtcpgtZrf+FL/l3fvzWhiGziOE37NUK2pjY3rJzTpSnGFeVRqEJfZnPIBwGBM1QGmGmPkE2lkS0PnfbU6ZFXa2qpbd43fVbWm9vDxrBEjR/n5+b2/OLXixp1qTW1plSY4WH3stzPVmtpzuQWhYeFl139vynE5jsvNL6rW1F4tvc5x3Mkzufz2/KtlPr6+/Lrey57HfWXqt0TvbutcIIGRkENMQW9p8/b2Fj40WVql8fHx4dd9fHx0P0z5yPdDdu/NCAgITN/0b909CxGlt5fX/d36+grvmT6yDXXGRJ0m9e7dW/SXFFo6sznlA4DBmKoDTDXGyCfSyJaGzvvbdv4aFRUdGxu3c88BI3clOHw8a9Dg1yZPmcbfnDt/Ib8+d/7C9xenNvG4Da3r3tR72VNfX3//gmuVws2rpdd9ff2Em/Vbone3zF40t1DIIaagt7RFREYdPZHNr5/IOh8dE8uvh4SEnsg6z69nnct7ZA6p1tSuSlvr7x+QdS6PvxkeHpFz6Sq/zv++gT/coWOnmtiGOgcNCQ3LPHWOX88+n28elRrEZTanfAAwGFN1gKnGGPlEGtnS0Hm/WlNbefOPzz5fExIaZuSudH/pmZtf5Ne3L7+efT7f29v7xOkLwWr1hbzCJh63KTlE72VPff1fHvDTtl3Cze279vLfUWmoJXp3ax6DhB3IIaagd9QuWLj49WEjzuZcyc0vGj123Acffcpvn/7OrOEjR13Iu3o258rYhDeakkMqb/4R1y++/8sD+N9MpMyZP2Him7n5RRfyCt9InMTfZ0nq8ldeHXT0RPalwtJZc+Y13oY6B31n5uxhI/5+Ie/q+YsFo0aPxSQE45nNKR8ADMZUHWCqMUY+kUa2NHTen5Hybl5Byb6Dx3TzQEBg4M49B3S/5tGUXQ0cNOSHLT+XVNy6XFSeuvzTYcNHCg8ZM3Z8bFy/CRMnC1seedym5BC9lz31pa1ZFxMbt3tvxrXym/sPZfaLf+l/1q5vpCV6d2seg4QdyCGmwNVbqjW1pVWaGbPmBAer1eqQufMX8h+grNbUFlyrnDBxsl/fvhGRUd/8+8f6b3Tq7lZY3/zTDo7jkqZNr9bUFpffmDI1OSAgMCwsfNO3m/k7VNy48/7i1NCwsOBg9ccrVvEbG2pDnWlWWFKVOPFNv759Q8PCvkr/FyYhGM9sTvkAYDCm6gBTjTHyiTSypaHz/pLU5f7+ATGxcbrvGHz2+Zq+/v5BwcGPtasdu/e9Omhwnz4+IaFhSVPf0v0+N3+t8su+Q8KWRx63KTlE72VPfddv1yz/eGV0TKx3nz4RkVGfrFit+9P6LdG7W/MYJOxADmFRaZWGXzl6IjsmNk709gA0O7M55QOAwZiqA0w1xlwtWvrBywNeFb0ZwA7kEBYljJ+Qc+nqmQuXh48c9f6S1OoG3lEBaLkwjAGAqTrAVGPMT15Bydaf9/j59f1R532PJwdXTS0FcgiL1v/zm8DAoJCQ0Fmz5wrvjQCYE5wYAICpOsBUY8xPYGBQaFj42vXporcEmIIcAgAiwCkfAJiqA0w1BqCVQA4BABHglA8ATNUBphoD0EoghwCACHDKBwCm6gBTjQFoJZBDAEAEOOWzoPG/72nwPpv+DVH+p15eXi/1f3n33gzTPMcn+vThsTBVB5hqDEArgRwCACLAKZ8FzXgh3i++vwG74u9TWnl7VdraqKho0zzHJ/H0wTBM1QGmGlOtqc0vL0tMT3JOcbVOtKEEgpbLaoL1CykuE75+81JZ6ZMeNi0OcggAiIC1U37r1IwX4obtSrhPUVm1n5+faZ7jk3j6YBim6gBTjfkuc5vd1A6iX0BD82qf9Nz/Ht8i+uhiCnIIAIiAqVN+q9X4hXjFjTsLFi4ODQsLDAxKnj6jpOIWv33nngMv9X+5r7//4mXLhUfV/whWU3bF36ewpOrdeQvfnpHyyPtXa2pXpa0NDQsPCQ377sftwk6+/3F7RGRUQEBgtaa26tbdhYuWhYSGBavVS1KXG5xD6j/N0irN1OTp/v4Bg4cMPX+xQO/R4bE8bh3QtvylKU8zv7zsuSQ7SiBaQrSR6EeiHUQ7iH5+YCfRTqJdRLuIdhPtJvqF6BeiPUR7iH4l+pVoL9Feon0P7CfaT3SA6ADRQaKDRBlEGUSHiA4RHSY6THSE6AjRUaKjRMceOE50nCiTKJPoBNEJot+IfiM6SXSS6BTRKaIsoiyi0w9kE2UTnSE6Q3SW6CzROaJzROeJzhNdILpAlEOUQ5T7wEWii0R5RHlEl4guEeUT5RNdJrpMdIXoClEBUQFR4QNXia4SFREVERUTFRNdI7pGVEJUQlRKVEpURlRGVE5UTlTxQCVRJVEVURXRdaLrRNVE1UQ3iG4Q3SS6SXSL6BbR7Qc0RBqi34l+J/oP0X+I7hDdIfqD6A+iu0R3iWqIaohqH/gv0X+J/iT6k+h3okKiTUTjqX3Sc3llJaJPPXYghwCACJBDWND4dzlSl3/62tBhZy5czrl0ddSYhHkLFvHbQ8PCtu/ae6mwdM7cBbq7qr/zR+5KOGhQUPDJM7mPvH+1pvbtGSkX8go3fbs5NjZO2MmYhPFnc67kXi6u1tR+smL1wEFDTp7JzSsomTh5isE5pP7TfH9x6vgJE68UVyxa+sHEyVP0Hh0eC3KIXonpSfdDyDai7UTbkUNaeA65R3SP6P+INhEl0PivJok+9diBHGI4fHazIdaJNs4pronpSfnlZaJ3E7AJOYQFjV+IR8fEHj6exa9nnjoXERnFr6vVIavS1lbdumv8rvj7XCmueGfm7GHDRz7y/tWa2oobdw4dO/VV+r+8vb2FnRzJPC3cITau34HDJ/j1K8UVBueQ+k8zKir69PlL1ZragmuVwWq13qPDY0EO0cs5xZUSiDYih5hdDikmSqCeM51En3rsQA4xED672RR2Uzt8f2K76J0FDEIOYUHjF+Le3t6llbf59dIqjY+PD7++beevUVHRsbFxO/ccMHJXwn0uF5X7+vo98v4bvvkuWK0eOGjIlKnJwmPrnMN8fHyEx1Zranv37t3Q0+/r719wrVK4ebX0um4b6j9Nb29v4Q2c3l5eeo8Oj8WwHHLw4MH4+Hi1Wm1kJBg1atSYMWMMeCDHcQYftClP8/4vN39ADjG7HPIHUQLJ35Bfv10j+uxjBHKIIR767OYmop8e1AWhKOiWg706VUB3/uvO/KM6E153qutOct25rTurdeez7jTWncAFOvNWd8bqztVynSmqOzl1p6XubNSdh7oz8L9EGqICog1E48huage8KwL1IYewoPHwEBEZdfRENr9+Iut8dEys8KPKm3989vmakNAwI3cl3CevoCQwMOiR9w9Wq4/9dqb64Tc66hw6JDQs89Q5fj37fH4jw6z/ywN+2rZLuLl9194BrwzUvUOdpxkeHpFz6Sq/Xnb994aeODSdYTkkOjr6+PHjN2/eNDgM8MvIkSNHjx5twAOfdA65/7u8bcghZpdD/o9oPFECVdy6I/rsYwRyiCH++uymbnVADhFyiDDxNhAlUGJ6kuhdBqxBDmFB4+FhwcLFrw8bcTbnSm5+0eix4z746FN++4yUd/MKSvYdPKabQwICA3fuOXCpsPSxdsXfp6is+p2ZsydPmfrI+wcGBm3d8UvBtcoZs+Y0lEPemTl72Ii/X8i7ev5iwajRYxsZZmlr1sXExu3em3Gt/Ob+Q5n94l/6n7XrhZ/Wf5opc+ZPmPhmbn7RhbzCNxInNfQaQtMZlkOMiQHNsiCHIIcghzQX5BBD/PXZTeSQxnNIIVECOae4it5lwBrkEBY0nkNKqzQzZs0JDlar1SFz5y+suHH/xLkkdbm/f0BMbJzumwmffb6mr79/UHDwY+2KHwY+Pj5jEsbrZpiG7v/lVxuDg9WBgUFffrWxoRxSWFKVOPFNv759Q8PCvkr/VyPD7PrtmuUfr4yOifXu0yciMuqTFat1f1r/aRaX35gyNTkgIDAsLHzTt5sbeg2h6QzIIZzOotVq//zzz9WrV8fExISGhi5atOju3btCVMjIyBA+vlVTU/Pee+8FBwePHTu2vLy8Tpy4d+/e6tWro6Oj1Wr1xo0bhe0cx2VmZg4ePNjPz2/kyJH5+fl1Hrhu3brevXt//fXXeg8xYsSIrKwsIYFkZ2ePGDGiKU8TOQQ5pPVADjHEX5/dRA5pPIf8TpRANhPbiN5lwBrkEAAw/v2QdevWjRs3rrS0tKqqKikpaeXKlcJ9kpOTy8rKrl+/rtVq09LSZsyYcfv27TVr1syePbvOfjZu3DhmzJiioqIbN26kpKTo5pDk5OSioiKNRrNkyZJx48bpPnDz5s19+vTZunUrv7H+IbZs2TJt2jShqTNnzty+vUlfmEQOQQ5pPZBDDGqZUCOQQxrPIf93/wvroncZsAY5BEyJq7eI3iSobo4cMmDAgLy8PH69oKAgPj5euM+lS5eEu/Xv3//atWtarVaj0URERNTZz6BBg3Jycvj1mzdv6uYQ/lFarba6utrf31/Yvnv37oCAgIyMjEYOUVNTEx4efvnyZa1WW1ZWFhMTU1vbpKeJHIIc0noghxjUMuQQ5BAwDq4FAcD4HOLr61tTU8Ov19TU+Pn5Cfe5d++e7t2ECOrl5VVnP35+fsJOdLfX+R6I7vbIyMhly5bp/lTvIVasWDFv3jx+JS0tTYvvhyCHIIc8DDnEoJYhhyCHgHGQQwDA+BwSHx8vfG2joKBgwIABeiNEXFxcVVUVv15bW3c/UVFRBQUF/HpxcXFTckhWVpavry//zZBGDlFSUuLr61tYWBgREVFZWYkcghyCHFIHcohBLUMOQQ4B4yCHAIDxOWT16tUTJkzgvwcybdq09evX640QH3300axZs65fv15ZWTlz5sw691myZMmkSZMqKirKysreeuutpuQQrVa7e/duLy+vL7/8spFDaLXa5OTkgQMHpqSk8Deb8jSRQ5BDWg/kEINahhyCHALGQQ4BAONzSE1NTWpqanh4eGRk5IoVK/7880+9EeLOnTvz589Xq9WxsbF79uypcx+NRpOSkhIYGBgfH793717dD3c1kkO0Wm16ejrHcWvWrGnoEFqt9tChQxzHZWdnI4cgh7TQHKJt+YthT5zdi1fkEOQQMBJyCAAYlkOexCJ8PyQ/P1/4cFezLGvWrBk+fLhwsylPEzkEOYQpzTgdxFoMe+LsXrwihyCHgJGQQwCAnRzy9ttvV1VVlZaWTpo06YsvvmiWfd64cSMzMzMgIODo0aPCxqY8TeQQ5BCmNMt0EHcx7Imze/GKHIIcAkZCDgEAdnLIjh07QkNDo6KiPvzwQ92/nWXMEhoaGhMTs2XLFt2NTXmayCHIIUzhh+7BgweFfwxqzDJq1KgxY8YY8MA6n5N8rMWwJ87uxStyCHIIS9dDdAAAIABJREFUGAk5BACYqgPsNAY5BDmEKfylfHR09PHjx2/evGlwGOCXkSNHjh492oAHIofoqxHIIcghYBB2TvnmLb+8LDE9yTnF1TrR5n7hgsdknWjjnOKamJ6UX14meoeaGabqADuNQQ5BDmGK8TGgWRbkEH01AjkEOQQMws4p34x9l7nNbmoH0a/jzYbd1A7fn9guereaE6bqADuNQQ5BDmEKnwGERavV/vnnn6tXr46JiQkNDV20aNHdu3eFqJCRkSF8fKumpua9994LDg4eO3ZseXl5nThx79691atXR0dHq9XqjRs36v49uszMzMGDB/v5+Y0cOVL4B0HCHdatW9e7d2/+v/fUP8SIESOysrKEBJKdnT1ixAgDZ6LoL/2jawRyCHIIGISdU765yi8vey7JjhKIlhBtJPpJ5wpGt1L98vCFS51LFt16dejhKxXdkpX58NWJbtU6/fAViW7huqBzISJchVzSV74KHr7s0K1gJQ9fbegWsaqHrzB061idUvafhy8pdKvZf4k0RAVEG4jGkd3UDnhXpBkxVQfYaQxyCHIIU+q/HbFu3bpx48aVlpZWVVUlJSWtXLlSuE9ycjL//3y0Wm1aWtqMGTNu3769Zs2a2bNn19nPxo0bx4wZU1RUdOPGjZSUFN0ckpycXFRUpNFolixZMm7cON0Hbt68uU+fPlu3buU31j/Eli1bpk2bJjR15syZ27cb+Psjdi9ekUOQQ8BI7JzyzVVietL9ECJcxyCHGJZDhMuIDUQJlJieJHrnmg2m6gA7jUEOQQ5hSv0cMmDAgLy8PH69oKAgPj5euM+lS5eEu/Xv3//atWtarVaj0URERNTZz6BBg3Jycvj1mzdv6uYQ/lFarba6utrf31/Yvnv37oCAgIyMjEYOUVNTEx4efvnyZa1WW1ZWFhMTU1tr6EwU/aV/dI1ADkEOAYOwc8o3V84prpRAtBE5pPlySCFRAjmnuIreuWaDqTrATmOQQ5BDmFI/h/j6+gp/Vq6mpkb3X3/eu3dP927Cp7m8vLzq7MfPz0/3b9Nx9f5PaP3tkZGRy5Yt0/2p3kOsWLFi3rx5/EpaWpoW3w9BDhG9y4A17JzyzdX9L6b/gBzSfDnkd6IEspnYRvTONRtM1QF2GoMcghzClPrxID4+XvjaRkFBgfCvP+tEiLi4uKqqKn69trbufqKiogoKCvj14uLipuSQrKwsX19f/pshjRyipKTE19e3sLAwIiKisrISOQQ5hN2uBLGwc8o3Vw+VKeSQZskhKGjNjak6wE5jkEOQQ5hSPx6sXr16woQJ/PdApk2btn79er0R4qOPPpo1a9b169crKytnzpxZ5z5LliyZNGlSRUVFWVnZW2+91ZQcotVqd+/e7eXl9eWXXzZyCK1Wm5ycPHDgwJSUFP6mgTNR9Jf+0TUCOQQ5BAzCzinfXCGHIIewj6k6wE5jkEOQQ5hSPx7U1NSkpqaGh4dHRkauWLHizz//1Bsh7ty5M3/+fLVaHRsbu2fPnjr30Wg0KSkpgYGB8fHxe/fu1f1wVyM5RKvVpqencxy3Zs2ahg6h1WoPHTrEcVx2djZyCHIITtugBzunfHOFHIIcwj6m6gA7jUEOQQ5hivaJLcL3Q/Lz84UPdzXLsmbNmuHDhws3DZyJor/0j64RyCHIIWAQdk755go5BDmEfUzVAXYagxyCHMKUZowHdZa33367qqqqtLR00qRJX3zxRbPs88aNG5mZmQEBAUePHhU2GjgTRX/pH10jkEOQQ8Ag7JzyzRVyCHII+5iqA+w0BjkEOYQpzRIP9C47duwIDQ2Nior68MMPdf92ljFLaGhoTEzMli1bdDcaOBNFf+kfXSOQQ5BDwCDsnPLNFXIIcgj7mKoD7DQGOQQ5pPXw8vLiOK7y5h+it6Q+dms9cghyCBiJnVO+uUIOQQ5hH1N1gJ3GIIcgh7QeyCEGtQw5BDkEjMPOKd9cIYcgh7CPqTrATmOQQ5BDWg/kEINahhyCHALGYeeUb66QQ5BD2MdUHWCnMcghyCGtB3KIQS1DDkEOAeOwc8o3V8ghyCHsY6oOsNMY5BDkkNYDOcSglhmaQziOa6E5hOM45BBoRuyc8s0VcghyCPuYqgPsNAY5BDmk9UAOMahlyCHIIWAcdk755go5BDmEfUzVAXYagxyCHNJ6IIcY1DLkEOQQMA47p3xzhRyCHMI+puoAO41BDkEOaT2QQwxqmdE5RHJA4jDLQRGm8Ajy6D6lu8VBC2HO279rrwxVegR6dEztyHFcQzmE47h2G9spohSqQBXlkOSMpPtb3VWBKpfXXWTHZMKJvMOqDopohcpfZZ9qz89bSYHEYZmDIlLhofboPru7RaEFP1c5jmu3rZ0iVqEKUvHz0/4je2WkUhmu7LyqM3IINC92TvnmCjkEOYR9TNUBdhrTXDmE4zjkEOQQxiGHGNQyo3NIp/mdXAa7yLfJZT/LnEY6Ocxy4Cd8x6UdXQa7WO2wku6TOk5wbDyH9BzXU35QLj0mpRyyX2TvONHR8pSl/VL7HlN68HO4/Vft3fq7tdndRnpW2uX9Lvy87fRJJ5eRLvJTctlZmdMEJ4elDkIO6Tm5p/ycXJonpSrquKaj6whXq7NW0gJpj3d6IIdA82LnlG+ukEOQQ9jHVB1gpzFM5ZBeL/XSnea9Xur1RHNIrwG9kENaFeQQg1pmdA5xj3a3+V8bfuZb/2CtiFDwE96tn1ub79vwv3KQ7pc2nkNsdtoIn8tyj3GXZ8jpIlmetlSGKvk53OuVXk/9/FSdz2W593O3OWTDz1jr49aKGIWQQ2yO2wincLcBbm2OteFnpmWxJXIINC92Tvnmquk5hOM4UXIIx3FPOodwHIccYiRty1+a+EzZKUpM5RCO43SnOcdxTzSHcByHHNKqIIcY1DKjc4inj6fFPgt+5ksOSjx9PPkJ7+njaXHYQnjrs/EcIjkjEXKIp48nJyy9OX4Oe/p5WuRY1Mkhnr6eFpct+BkrKZR4+noKOURSJhFO4Z5+nhalFsL5+0WvF5FDoBmxc8o3VybOIQ/9lvQU9erfCznEPIgdIpphaeIzZacoNWMOabu2ba+4Xp4+nn97+W82m2z4HCLZ/+CT4YEe3d/sLlyN2Kbb9nqpl8pf1XleZyGECAtlPnzzJElOSBzmOijCFR5BHt2Tu1tkWvBT3vbftr1e7qXyV3Ve1JnO0t8G/s12s62QQ57a8pTrIFfKIdsfbXsN6KUKUHVe2pmvAA/tP58kOZLub3dXBapchrnIfpPxpYDjuPb/bK8MVSojlG23tn3mX8+493P39PV0Hepqc9imoRzCcZxuDuE4ji8Rtvttew3qpQpUdV7Zmc8hkkpJ93e7q4JULqNcZJdlfLngOK7dL+0UcQpVsKpZcsg/N3274Zt/w4Zv/s13N3KIoTXC0ByiiFBYf2fNz3yrH63co935Oa8MUVptteJziHynvPEcovs9dUWkQnZMxp/IJRck/IncPcbdZq9NnRyiiFFYH7Hmz+JWmVbu8e5CDtE9hSsjldZZ1vz5W54rx/sh0LzYOeWbKxPnkId+S3qKOI5DDjEPYoeIZlia+Ez5ojR3/kJxzVvwfjPmEKfhTlb/trL82bJbUjeXgS58Duk0r5PLYBf5Frlsu8xppJPDTAf+akQRprD92la6R9rlnS5NeT+k06JOLkNd5Hvksv0yp9FODu868FNeEa6w/dZWekTaZXYXOkvPpT3nlOAk5BDHiY7t17anHFJEKGx/sJX+Ju0yt4ve90Psl9g7Tna0PGNpn2rfY2oPIYd0ndvV8oJlp086KUOVzqOcrTKtLC9adn2vq8sIl8fNIYoohe1eW2mBtMvSLnwOsf/U3jHZ0fKapf1K+x4zegg5pGdST/llubRI2iw5hMOis3h5eVXduit6rauP3VpvfA5xmOXgPNRZvk0u2ylzGuXUaWEnfsJ3m9bthREvyH6RyXfJe47tyTU5h3R5t4vjZEdZpkx2XOY42ZGfw50/7Oz6mqv1QWvpGWnX+V35E7nDUgfn0c7yLLnsnMwp0anTyk56c0i3Bd1eGPeCLE8my5M5TXLikENaH7EvHpphEf01FNFj5ZC2a3R+abrRhs8hkn0Sh1kOitCHf2l6ROeXpvM78xcoumcUOvnwzdMkOSVxmO+gCFd4BHt0n97d4pSFkEPa/W8791h3lb/KcbKjZZYln0MkuRKHRQ6KSIVHsEf3md0tLloIOcTuCztlhFIZoXz6h6f5Cw6O49ptefAHNsqJysl++YM/sLGyM9dwDuE4TjeHcByHHKIXP5UOHjwYHx+vVquNnJKjRo0aM2aMAQ/kOM7ggzbxmfr6+j75K65HL15eXs2YQ+Tfy/krEOl2qaevJ59D3KPdbf5lw38uy3qztSJCwecQZYjSLtXuoV80NJpD3GPcbbbY8Jco1j9bK6IUfA5RhirtPrUTLlckWRIPtYf1bms6T7IMmTJcKTkjoRxShirtVtn99dc+6+UQ91h3+VE5XSbLc5bKUKWQQ2SnZVRIlrmWHMdZZVrxv5uQXpB6+nk+bg5RhivtvrL766+D3iD3eHd5jpxukWWJpTJcKZQLm2ybZvxcVsq7c+fMnQ+8rzf8S/RCpxe7tb4Z/l7WPknXaV09gj2UIUqHmQ6SwxJ+wlvut3R8w1HVV+Ue5f7M2mc8fT2bmEMsTls8n/y8KlCliFQ8s+EZfg5L8iT2S+0VkQqPEI+OKzve/3tZlyVd53X1CPFQhisdljhIiiV6c4hlkWWP6T1UASpFlOLZ75/lkENaH4PP+uwsor+GInqsHOI03MnqWyvLHZbdpnRzedWFzyH3f2n608O/ND1CijCF7T9tpb9Ku8zo0pT3Qzot6eTyuot8n1x2SOY01slhnoOQQ3pO6Ck/JJdm/j97dx4X1X3o/39I1Cw3yW17m9vWprdN07Tfn0u0R1YBWRx2kIDgPioIggsiqAiIG+6oWFGJBo3GuEWCGjciKK4owjTuBuMSElBQQUXcMOL5/XHS0+lsjAaHUV48nn+cOfOZz+csnDOf95yt1XtD3/tD4h+kHPKb+b/564C/tilu0/rr1u8Nfa/tjLZyDvlDyh9an2z9i+xftAtsJ+eQP4/4c5tTbVqVtlJcVfzvsv/924C/vXLylVYXW/1p7J8EcsjPJm1K3t7excXFt27d+pmb5MCBA8PCwp7ig8KzzyHFX5/+dM2GZrd67efP6PoQQRCkHNLZrvNLBS9JOcRqv1Vnu85SDnlz9Zvtvdq38233xto3TMkhne06v1T8ktRFsVJbdbbvLG3yb258s71P+3b+7d7IeUO6PqTt5LZ/jP2j4qyi7eS2v5v+O6nf8uamN9v7tm8X0O6NrW/ozSHaJ5z/K4fI53cIgqB5fYggCE+aQ94seLO9f/t2H7Z748AbUg7pbK/RqLUg7y6saq24PqSlsdx9/VPnEO3zHPQ9P8TqiJV0Xtar215t59vOQp4f8u/vb3JIi/HU3/qW89fsy7AZPVEOafNFG2ln1WpHq872naUc0t6r/Wufvybtr/79o+kRRUe3jr+e++uf9lom5JD2vu1fy31N2nG9uvvVDl4d5BzS5lAb6bysVw690lHZUdp3tfdr/9re16Td16uFr3bw6SDnEKvvrF47+Nov1/3y7zZ/l3PIa0Wvyb2Ndh+2e/3I6z/9mFL2Mjnk55M2pZ8TA5rkzww5xHI86xzSwaPDq9mvSjnklc2vtPduL/dGrAqt3k57u6N7R1NySAfPDq/ueFXqorzy1SvtfdvLp2JaHbd6+x9vd+zeUcohbfa36WzX+ZWCVzq6dWx9pLXcb7H6xurtxW93VHbUm0M6eHVo/XVrqRtjdd7q5+SQTo6dWl1oJXVy2pxtI+cQRY3C6rrV26ve7ujZUcohHXw6tL7UWrpO3arGSnt3QQ5pSSx3X/9Mc8ifI/7cuqB1m7w2f1H95XdTfyd9o2v9kUNgBtJXeEs4H+OF9NTXhwiCIOWQn340PfifP5oe+c8fTU3IIZ3tOr/09Us/naFxwqqzfWdpx/V367/L14e8dPqlzg6dpX1XZ7vOL5W+JO2+rL616mzfWdqD/XL9Lzt27/jX/n/9Y8If5Q6HIAhWl63k3kZn+84vVbwkXx/yd+u/k0N+JmkblP9EUXz06FFmZqaPj4+7u/uMGTMePHggb6qHDh2Sdxf19fWpqakuLi5Dhgy5evWq1ubc0NCQmZnp7e3t6uq6bt06ebwgCCUlJb169XJwcBg4cODFixe1Prhy5couXbqsXr1abxMqler48ePyHuDkyZMqlarZl+GTetY5pG1S2/f7vN9mW5vWua3fG/Teb6b+RuqNvDPmnVb5rV7//HXNHPKB8wdvrHuj1b5WUg75wPmDNz5/o9X+VoqvFW0ntX2///tt9rRpfaD1e+Hv/WbWb6RN/p3Ed1oVtnp96+tyDlGcUbwX8V67gHbvjnhXvl/WO8nvtFK3ej33dc0c8oHLB29sf6PVsVaKi4rfT/79uzHvtv66deuvW78b8+7PySHvh7//fxP/7+VLL7c50+bPo/4s55B3pr3T6lKr14tel3PI72f//t2x77Yua936Uut3x75LDmnJLHdf/0xzyK+W/OqDbh90dO/4TsI7VsVWHA9Bc5G+yFvC+RgvpJ+fQ3760fTgf/5oekShOKKwOvyvH01NyCEdvDq8+tWr0o7rlT2vtPdtLx8PefmfL0s55L92/le7Hu2kfVcH7w6v7n9V2n29UvhKe//20h6sY/eOrx5+VVH+03nhcg7R7G109Oj46tevSjuxNmfaGDke0smpU6uKVtKurM13bcghhuhuhitXroyMjKysrKyuro6NjV20aJFcJj4+vqqqqqamRhTFpUuXjh8//vbt21lZWRMmTNCqZ926deHh4eXl5Tdv3kxOTtbMIfHx8eXl5XV1dbNmzYqMjNT84ObNm21tbbdv3y6N1G1i27ZtcXFx8qQmJibu3Lmz2Zfhk3rWOcRq77/ODHft2HZ8W6uDVlJv5LdTftvJsVM733ZvrXxLziFvz327k2Onjq4dpRzy9rx/vfxaYVVs9U7COx+4ftDRrWPblLZWx6ykTf63M37byalTO792b61/S84hb61/SxCE/9r6X3IO+e2c33Zy6tTOv91bX7wl55C3l7zdyalTR7eOiouKl86+9Mcx/zrhfP0vfk4OeeXrV/468K+d7Tu392v/39v+W84hv138207dOrULbPdW/ltSDnmp6qU/Jv+xk0unDt4dfrH9F+SQlsxy9/XPNIf8xyNLte7ETw6BGf38GNAkf+SQp/Pzc0jbRH0/mh5RvDPmnVa7W72+8XXNHKL5K6nimOKDbh+8kf1Gq8JWihOKtlPavj/g/Tb727QubP1exHu/SfuNnEP+FPunVupWrxx85W+9//a/C/9X2ne1ndH2/UHv/3R9SNR7v1nwG2kP9oHrB29uf/Plcy//YdIfDOWQP0z5w18i/9K6tHXr0tbvDX/PSA55P/L9/5v6fy9XvdzmuzZ/jvszOcQQ3c0wKCjo/Pnz0nBZWVlAQIBc5sKFC3KxwMDAy5cvi6JYV1fn4eGhVU9oaGhpaak0fOvWLc0cIn1KFMUbN244OjrK4/Pz852cnA4dOmSkifr6eqVSeenSJVEUq6qqfHx8Hj5s/mX4pJoqh/y7+2EBz1P/3Yzf/b+e/4/nqZNDniOWu68nh5BDWgKR8zGeZz8/h1gV6PvR9IjGj6ar3pI7KJq/kiqOKd5O/9fLEwqrr63eGf/OB64fdHTv2HZyW6uTVnIO+fWSX0uHf9tOb2tVavXT/bK+sXon5Z0P3D7o2L1j22ltrS5aSXuwX63+1QduH3zg+sGvPvuVoRzyctnLfxrzrxtsZP/SSA555ewrfx38184OndsHtP/vvP8mhxiim0Ps7e3r6+ul4fr6egcHB7lMQ0ODZjF572Ftba1Vj4ODg1yJ5nit3x00x3t6es6ZM0fzXb1NZGRkTJ48WRpYunSp+Bz+HvGC5ZBWR1q9mf1m566d39z4phlyiPaJ7IJADsHTsdx9PTmEHNIS6HYLOB/jOWJ6DvmPjosZn6f+077rWT4/5D96GDw/5Kno7gcCAgLknwnKysqCgoL0Rgg/P7/q6mpp+OFD7Xq8vLzKysqk4YqKClNyyPHjx+3t7aVfIow0ceXKFXt7+++//97Dw+P69evkkGbPIR+4fNBR2fF/lv6PKc9T53gILIfl7uvJIeSQlkC3W/DcnY9x8fvKFoscIucQPb+P/rwc4unp1XLo7gcyMzOjo6Ol3x3i4uJWrVqlN0Kkp6cnJSXV1NRcv349MTFRq8ysWbNGjBhx7dq1qqqqMWPGmJJDRFHMz8+3trb+5JNPjDQhimJ8fHxISEhycvJP+5Pm3pc+qRcsh/zHhk8OIYc8Pyy380oOIYe0BLrdgufufAzdDmjL+bMaYkUOeUbHQ5p73Zr1T3fzrK+vT0tLUyqVnp6eGRkZjx490rsJ37t3b8qUKa6urr6+vnv27NEqU1dXl5yc7OzsHBAQsHfvXs2diaH9gDSwZs0aQRCysrIMNSGKYmFhoSAIJ0+elF42+770SZFDyCGwBJbbeSWHkENaAt1uwXN3Poa7e/cWixzy7HLIuYsVLYf4zP7k3yMuXrwo70ya5C8rK2vAgAHyy2bflz4pcgg5BJbAcjuv5BBySEsgfYULnI/xfOK8LK4PaRJPmwUa/xs3blx1dXVlZeWIESM+/vjjJqnz5s2bJSUlTk5ORUVF8shmX4ZPihxCDoElsNx9PTmEHNISSF/hnI/xnCKHkEOaxNMmgsb/cnNz3d3dvby85s2bp3mu5s/5c3d39/Hx2bZtm+bIZl+GT4ocQg6BJbDcfT05hBzSEjRJt0DvH+djmAE5hByC5xQ5hBwCS2C5+3pyCDmkJWjCeKD1x/kYZkAOIYfgOUUOIYfAEljuvp4cQg5pCZokHuj943wMMyCHkEPwnCKHkENgCSx3X08OIYcAFs4yc8gbm9/4/4L+v05OnX4767fSvsvqtNX/jfm/Ts6d/trvr62Ptpa6IIIgvJXzVgfvDp26dSKHoKUhh5BDYAksd19PDiGHABbOMnNIB48Ob+S80aq41e8n/l7ad/1uxu/eHf7uy8de/t3s3/1p1J/kHPLn6D+3KW7T6ngrcghaGnIIOQSWwHL39eQQcghg4Swzh3R07/jrRb9WnPl3X6S9b/s2h9oovlW8fPzlju4d5Rzy2r7XOC8LLRM5hBwCS2C5+3pyCDkEsHCWmUPe/OLN9j7t2/m3e2PLG9K+q7Nd538/u7uLIOcQqwtW5BC0TOQQcggsgeXu68kh5BDAwllmDlGcUVidsno74+2O3TtK+64Onh1aH20t9UKsvrGScwjXqaPFIoeQQ2AJLHdfTw4hhwAWzjJzyDtJ77QqavX6jtflHPL7ib9/d+S7rUtaty5u/e7Id8khADmEHAJLYLn7enIIOQSwcJaZQ34767ednDq182/31sa3pH3XSydf+mP8Hzs5d+rg2eEXa39BDgHIIeQQWALL3deTQ8ghgIWzzBzC80OARpFDyCGwBJa7ryeHkEMAC0cOIYfgOUUOIYfAEljuvp4cQg4BLBw5hByC5xQ5hBwCS2C5+3pyCDkEsHDkEHIInlPkEHIILIHl7utfHfaaIkKh2EIOaSyH3FEoIhSvDX+92VcZ0NKQQ8gheE6RQ8ghsASWu69/P/lvigiFYh05pLEc8r1CEaF4P/lvzb7KgJaGHEIOwXOKHEIOgSWw3H39sDWxigiFYhY5pLEcslahiFAMWxPb7KsMaGnIIeQQPKfIIeQQWALL3ddfvFr169FvKyIUipkKxXqFYis55D+/uW8rFGUKxRqFIlLx69FvX7p2tdlXGdDSkEPIIXhOkUPIIbAEFr2v36Te+VMUgWG/Hv32JvXOZl9ZQAtEDiGH4DlFDiGHwBJY+r7+4tWqYWti30/+22vDX2/2Hr9FeW346+8n/23YmtiLV6uafTUBLRM5hByC5xQ5hBwCS8C+HgCeEjmEHILnFDmEHAJLwL4eAJ4SOYQcgucUOYQcAkvAvh4AnhI5hByC5xQ5hBwCS8C+HgCeEjmEHILnFDmEHAJLwL4eAJ7Sq8NeU0QoFFvIIU2XQ+78dB+OZl+5eLG9Ev3qTxsvOeQFyyH3FYoIReuo1jW365v93wyNIocAwFN6P/lvigiFYh05pOlyyPcKRYTi/eS/NfvKxYvtL8l//WnjJYe8YDmkQqGIULyb+Odm/x+DKcghAPCUhq2JVUQoFLPIIU2XQ9YqFBGKYWtim33l4sUWvTpGEaFQzCSHvHA5ZINCEaGIWDWs2f/HYApyCAA8pYtXq3561upMhWKdQrGVHPK0OeS2QlGmUKxRKCIVvx799qVrV5t95eLFdqGq8lex/6OIVChmKRQbFIqt5JDnPIfcUyjKFYrPFYqhil/G/up81ZVm/x+DKcghAPD0Nql3/hRF0BR+PfrtTeqdzb5a0RJkF2/7Vez//PvfL/I5N7Rl+9d6/GXsrz4v/rLZ/7tgInIIAPwsF69WDVsT+37y314b/nqz9+OfU68Nf/395L8NWxN78WpVs69QtBwXr1YN+2zUe4l/aRPVptm3AvwcraNa/znxvejVMReqKpv9/wqmI4cAAIAWreZ2/bXae3h+cXes5xQ5BAAAAIC5kUMAAAAAmBs5BAAAAIC5kUMAAAAAmBs5BAAAAIC5kUMAAAAAmBs5BAAAAIC5kUMAAAAAmBs5BAAAAIC5kUMAAAAAmBs5BAAAAIC5kUMAAAAAmBs5BAAAAIC5kUMAAAAAmBs5BAAAAIC5kUMAAAAAmBs5BAAAAIC5kUMAAAAAmBs5BAAs3blLFVt35s9LzxgcHhEUHNLs02MekVHDlq9aoznmwGH10OjhmmOu3rhbdvn6N+d/KDl2pmD/kS935K3dkLMlISZ1AAAgAElEQVRk6fJZafPHJ6WMT0pp9rkAABhCDgGAJiYIQtNWGPhh0ODwCEEQNm7a+s35H6QmNP+eUbtmmDUj9uw/7NC1a+r02dLLc5cq/PwD9h4s0iyjVHo4Ojp176708w9wcnb29PQaPnJU0oRJs9LmZy5bseGLL802tQCAJ0UOAYAm1iSddf+AQCPV6h1+wXLIjbqHO/P29u7T74fKmivXavv07b/9qz16i527WD46fqyXl/enaz435+QBAH4OcggANLEm6azrVtKicohg9E8udvSfp1ImTfX181+ydPnVG3dv1D28fuv+xk1bB4dHjIgZbZ5JBQA8HXIIADQxQRB27CrwD+hhZ2cXFBxSePSYNP7azXtTp810797d2blb/NjxV67VSuN37TnQI/DDro6OM+fMl2vQ7HPr9sIN5ZCtO/K8vH0cunaNHh5Tdvm68XZv1D1csnS5e3elm3v3nC93ypVs+nKnh6eXk5PzjbqH1bUPps2Y4+be3cXVdVbafCM5ROst+aXu3FVW142OH+vo6NSrd9+z35bpbVeLra3d9Vv3dcd/GBRsa2vXp2//oOAQbx9fFxdXGxub7kqPjCXLKqvrmv0/AQBgBDkEAJqYIAiDwyP+ebL0+yvVCYkTQnv1kcanzV/Yp2//U99cKr3ww+DwiMlTZ0jj3bt335m398L3lSmTpmpWolnnsuWrTDkeEjE0+uTZi+cuVYQPGTo2Icl4uzfqHo4bn/zN+e/Xb9zs6+snVxIeMfR06XfnLlXcqHv4j4zMkNDeX586d77syvCRo54ih+jO3fSZaUOjh39XcW3G7LnDR47S264Wa2vrmtv1Rpb5rj0HwoZE9u03YO2GnO25u8urbjT7vwEAwDhyCAA0MUEQjp85Lw2fL7tiZ28vDXv7+B4uPi4Nlxw74+HpJQ27urotWbq8uvaBViWaL6Xr1EfEjJa644ZyyMmzF6XhY6e/dXPvbrzdG3UPr928V3j02KdrPrexsZErOVJyQi7g6+d/4LBaGv6u4tpT5BDdufPy8j5x9sKNuodll6+7uLrqtmv8pCzNU7NOnL3w0cefhA2JTEicsDNv79enzh0q+npsQlJQcMipby41+38CAMAIcggANDFDPXIbG5vK67el4crqOjs7O2l4x64CLy9vX1+/XXsO6K1k38Gjo+PHCYIQGzd2XnrGDQM5pEuXLvLIK9dq5fxjqN21G3JcXF1DQnuPGh2vGWY0z4Cys7OTP6vVhIlzrTt3NjY2cpzoYm2tt13ZgcPqbi4u45Mn6m00KDhEEARbW7tu3Vy8vLwFQbCxtXVydvbw9PLy8t6z/3Cz/zMAAAwhhwBAEzPUI/fw9CpSn5SG1cfPevv4ymWu37q/+KMs+QiGViX9Bwws2H9EEIRzlyqkE5kMHQ+5VH5VGi7Yf8TPP8B4uy6urkf/eerGfx7o0Jp4N/fuJcfOSMMnz140cjzEwcHhfNkVafh06XeaJbXmTqn0KL3wgzRcVXNHb7uSqzfu9u7bb/nKzxISJ2zctPWJlnz+3kPySV+AObXMB/7oxVOAYBw5BACamKEcMnXazH79VadLvzt3sTxsSOTc9IXS+PHJE8+XXdl38KhmDnFydt6158CF7ytv1D2UrvA25fqQ4SNjz5ddOXb62+Ceof9Y9JHxdp2du23P3V12+fr4pBRDOSQhcUJ/1aBvzv9w9tuywWFDjOSQfv1VY8Ylfldx7XTpdxFDo+WSunOXnDIlenjMuYvl35z/PmrYCL3t3qh7+F3FtfCIobFxY2/UPbxyrbZff9XSrJW67f4jI3PY8BjNSiKjho0bnyxfAQ8YZ+S/+umY+MCfluDZPQWoRS3GFxg5BACamKEcUlldNz4pxcXF1dXVbdKUaddu3pPGz0qb7+jo5OPrt3VHnvypxR9ldXV07Obiordavd0aQRAyl61wcnZ2dXWbOm2mfJqToXY/+XSdi4urs3O3Tz5dZyiHfH+letjwGIeuXd27d/90zedGvvvVx8/26t3Xzs7O09Mre/N2uaTu3FVcvTlqdLyTk3P37sr1GzfrtnvlWu2y5auUSo+Zc+bLF5ZUXL05clRcSGjvnC93SrNwuvS7gYPCVAMHS0dXSi/8IJ3ldeH7yuSUKY6OTkkpk6UgBxjRJD3ap3jgT9M2Z7Ga6ilApl82hucIOQQAng/PtFtjUYaPjB0+YpR0zpiWrTvze/ftl5wy+Ubdw+jhMf9Y9JF04b6Li2sXa+uIodFyybPflo2OH8upWWhUk2xBupU80w32udjqTcwMT/cUoOdiCaBR5BAAwJPhZ0i8SIRmeuCPVj1BwSF5BQflYrv3FUrXljTanKEH8qxcvb6bi4ube/ftubvXbsjx9vG1s7ML7hmqeUM83UWh96UlPAWIgyEvJHIIAABouYRmeuCPVj3LV60JGxIpF4saNmLl6vWmNGfogTzjkyd+f6U6bf7Cbi4uffr1//rUue+vVCelTO7Vu6+RRaH3pQU+BYjg8WIghwAAgJZLaKYH/mjVU1ld5+Ly0y3szpwrc++ulO4m12hzhh7Ic+5i+Y26hz9U1giC8PWpc9L4iz9UyTOod1HofdnsTwEypTaSyfOIHAIAAFouQ53vZ/3AH916Jk2ZNnJUnDQwfWaaic0ZeiBPozNo+qKwqKcArc/e0qdv/4TECfMXLLpR9/DcxfLxSSlcCfacIocAAICWy1Dn+1k/8Ee3npNnL9rY2KhPfOPi6vrN+e9NbK7RB/KYnkMs/ClAldV1EydP62Jtfe5SxbWb91QDB/cfMNDXz3/h4qUVV2821/8Pfg5yCABAG2c4oOUw1E1/1g/80VtP+JChvn7+0cNHymMaba7RB/KYnkMs9ilAlddvL1vxqbeP75TUmXIr35z/YeLkaSGhvT/5dJ38CFc8X8ghAADuzY+Wy1A3/Vk/8EdvPZu35gqCsHtfoTym0eYafSCP6TnEYp8CFD185Oj4cdJlPIIgrPpsw8BBYe7dlTfqHp45VzYldWZQcAhPXn8ekUMAANpIHcDP1OjxEL1mzJ77YVDPZp/4n+/ZPQWoT7/+saPHbN2Rp/daFDxfyCEAAO7NDzSz82VXtn+1x8Gh65caxz2eHbZxWAJyCABAG50SwMycnbu5d1cuX7Wm2acEMBtyCAC0dKZcHEIyAQA0LXIIAODfuDc/AMA8yCEAgIc3uDc/AMC8yCEA0NJxb34AgPmRQwCgpePe/AAA8yOHAAD+jXvzAwDMgxwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQAAAADMjRwCAAAAwNzIIQDQEl2/df/oP089648AAGAIOQQAWoqtO/MXZCwZOSou8MMgGxsbQRCexUcAADAFOQQAWgpB5+9ZfAQAAFOQQwCgpfD1858+M+1IyQnTQ8VTfAQAAFOQQwCgxXmKUEEOAQA0LXIIALQ45BAAQLMjhwBAi0MOAQA0O3IIALQ4ekOF8evRySEAgKZFDgGAFoccAgBoduQQAGhxOC8LANDsyCEA0OKQQwAAzY4cAgAthWD4rwk/AgCAKcghANBSkEMAAJaDHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3MghAAAAAMyNHAIAAADA3Mgh2hznHPuvkQcBAC8wZfqJZv+6AYAWjhyirdm/HQEAZtDsXzcA0MKRQ7RJ30+iqAYAvJDIIQBgCcgh2sghAPBiI4cAgCUgh2hr2hySkBC5bdsizTGlpZvGjx+qOebHH4/W1R28dm13Wdn206ezi4o+y89flp09f/ny1LS0sWlpY6Vi48cPLSpaLQ3Hx4ffurVfGr5z51BCQqShCRB0/p5o+nU//nNqAwBLQA4BAEtADtH2FDnESHf81KlsZ+eumZkTpZc1NXtDQ/1Pn/5Cs4yfn4eLi5OvrzI0NMDNzblHD68JE4bNm5ewfHnqF1+k7927XCpWWrrZy8u9uHiNKKqXLElJTx8vjV+5cvrChUmaE6MZEgRBqKrKN2VSjc/atm2Lli6dbOKMnzy5sVevgPv3D+u+dfHitmXLJoeE+DXatPGSjx+XREf3y8tbap5eC4AXCTkEACwBOUSbKTmk0aMEmh10tXpdRETvu3cPPXhwJDKyT0nJWr111tQUpKaOCgz0zs3NNNTu8eMbEhOjRFFdW3tg7NgIUVTX1R0MCPCUj42IGtmgCXPId99td3Jy0J1BvbU1NBQHBfmeOZOjt0I/P49Jk0aYMhmNlrx8eZeXl7vetAMARpBDAMASkEO0NeHxEBODyqVL2xYsSAwJ8cvOnv/jj0dFUd3QULxv34rY2MGTJo0wvWatiZGjgqF2TZy1Cxe29u7dQ6XqqVavE0X199/vDAsLzc6eb2jG8/OXxcQMerol9qQlk5Ojc3LSzdZ3AfBiIIcAgCUgh2hrkuMhej9lb2/b0FCsO75//yB7e9vIyD4qVc+gIB+l0sXW1sbf32PDhrn19UVaLcovdSdJd9qkl9ev79EtpiU8vFd4eC+9c5qYGPXtt1tu3do/cqRKperp46OUj3XorS0pKUrrkhi91ZrYXTBeMi9vaXx8uJl7MACed+QQALAE5BBtTXt9iCYbG+vHj0uMFDh2bENcXNjQoX3z85cVF6+5e7fQUEPGc4g88OOPRwVBuHlzX6OTGhYWaiiHNDQUFxevGT9+6IABQVu3ZsTFhfXvH/T553PLy3P11ubv71FentskS6zRkpcv7/LxUf78TgmAFoUcAgCWgByirdEc0ujBENP/pAovX96Vk5MeFxc2Z84YtXpdeXnuuXNbZs2KV6mCKyvztJo2Mg26ZWpr9wuCIB9UEZ8kAMjl4+LCJk0a8fXX6+WRpaWbZ86MGz58gN7aHBzs7t3TTlC61Zo+AUbeffDgiIODXbP3aQA8X8ghAGAJyCHanuh4SEFBVmRknzlzxnz22SxRVNfUFKSljZ0wYZhWsdLSTUql69y54/RWolIFC4Jgb2/bvbtLYKC3IAh2drZubs4BAZ6Bgd6nTmXLJTUzxt27hY6ODvJIvTnk/PkvDcUVE2mWDw31Dwnxi40dnJGRrPuuzMHBrtFrx7U+aGTyjE+wvBAAwHTkEACwBOQQbSbmkPr6ooyMZGvrLjU1ex89Kh45UjVs2ICQEL/169O0jgb8+OPRyMi+W7dmzJkzZt++FY3WrNnzPnFio2aq0Xzr/PkvP/zQWzTap//ii/SwsFBDlZtCs3xt7YEzZ3Ly8pZu377YSG1+fh4VFWY6L6u8PDcgwKtpOygAXnjkEACwBOQQbY3mkPr6I1u2LAwK8lmyJEXuJV+7tjsjIzksLHTHjsW1tQfkwrdvH4iPD09NHSWK6gcPjkRH99u0aYFunWvXzk5OjpaGpToTEiJnzx5z9epuzWKCIFy9ult6auHcueNmzYqXy//441GVqqeo0XF//LgkNDRAOlCjWYPemTJynbooqkND/Xv29Bs1atCcOWPWrJm9f/8KI7UlJETKQcWQpsoh27YtkpcbAJiIHAIAloAcoq3RHJKcHD1tWmxFxVeiqBYEITc3MyZmoI9Pd1FUV1XlL16colIFp6WNffDgyObN//Dz88jKmtrQ8NPl6ffuFU6ePDIsLPTQoZWPHhWLorqqKi8mZtDIkarq6gJRVFdXF1hbdxFF9a1b+9PTx7u4OKWnj5ceD3L8+OeCIAwZ0nvPno8zMycqla5XruwSRbW1tfX163u+/XZLYKC35nSuXDnd11epebF7dXWBra2N3pkKCwvVOnIikWJAXd3Bb7/dcvDgyvXr02bPHjN/foLmu1p27fooNnawoaVn+klippQcNWpQfv6yZu/TAHi+kEMAwBKQQ7Q90fUhUVH9pk6NKSparXtD3okTh6ekDL90aZvup44eXRMZ2VfqzSclRa1bN0e6j5ZS6WJt3WXcuAi55NWru1NTR0mnZiUmRq1dO/vRo+KvvvpoxAjV5cu7pDLJydHW1l2sra3lp7ZLEhOjTp7cKA0HB/u6uTk7OjpMnz76ib6t9V4QbzweNDQUBwX5nD2r/zmGTejs2ZygIF+9t0IGACPIIQBgCcgh2p7ivr0vsEYPWegdf+pUdu/ePZ7pk87v3z/cq1eAHLQAwHTkEACwBOQQbeQQAHixkUMAwBKQQ7SRQwDgxUYOAQBLQA7RRg4BgBcbOQQALAE5RBs5xGx+/PFoXd3Ba9d2l5VtP306u6jos/z8ZdnZ85cvT01LG5uWNlYqVlq6ecQIleYHR45UZWVN1b1C/UkvqRdFdVxc2LffbtEdP25chHTxiSAIp05lS/dKrqjI7dOnh26jRlpv9oUMQBc5BAAsATlEm4k55OLFbcuWTQ4J8dP77uPHJdHR/fLyljb7160l8/PzcHFx8vVVhoYGuLk59+jhNWHCsHnzEpYvT/3ii/S9e5dLxebOHffJJ9M0P7h+fZqLi9PKldO1KtTs9ws6j3fUOw3r16cNHz5Ad/yZMzlS9hAEISEh8vTpbFFUb9q0ID19vKFGdZsw1Cj5BGhe5BAAsATkEG0m5hA/P49Jk0YY6VBevrzLy8u9ye8Zpft7/POupqYgNXVUYKB3bm6m7rv37x/28VHevn1ANHq4QypsYg5p9LCJofGJiVHGP2tkwkwsCcAMyCEAYAnIIdqe6Lws493H5OTonJz0pv36fJE6rJcubVuwIDEkxC87e/6PPx4VRXVDQ/G+fStiYwdPmjRCKrN+fdqSJSmlpZukoxMNDSUREb0nTx5paOGY0tE3sgw13yot3Rwa6i8IQl3dQVFUV1Xl2dvb3r1beP/+YScnB92PGBl4gVci8DwihwCAJSCHaGvCHJKXtzQ+Plx3/LFjG/r2DezWzTEra6ooqlWq4OPHN8jvnjy5UaXqqVtM/M9+tiiq6+uLUlNHubg4DRnS++rV3XKZnTuXKJWu3t7uxcVr8vOXBQX5ODjYDRoUcuHClybOiPxSdxoMNXro0KqAAE9XVyfdysPDe4WH99Id379/kL29bWRkH5WqZ1CQj1LpYmtr4+/vsWHD3Pr6IlFU371b2LOnX01NQVra2BMnNoqiOitramiof23tfqmG+Pjw8vJcuUJra+tG58j4WpPeqq3dv2BBoouL04oVqYIg9O8fpFavmzFjdL9+H5aWbq6oyA0K8tWtzUj84GAIYFHIIQBgCcgh2powh1y+vMvHR6k73sdHqVavu3Vr/4IFiaKo3rZtUVxcmPxuYmLUzp1LdIvptrh06eTx44fevn0gK2uq9Mx1qcDcuePu3Dm0cuV0pdI1KqpfeXnunTuH0tPHDxnS28QZkV/qToOhRuPjw6uq8mpq9upWHhYWqjeHyI4d2xAXFzZ0aN/8/GXFxWvu3i2UxldU5Hbtau/m5rxq1QxRVOfmZvbqFVBTUyB/MD9/WVhYL+lp9A0NxY6Oeg5T6L5sNIfEx4fPnTuuqipPGlNenpucHL1kScq8eQk7diw+fPhTKV5evbq7oCBLEITQUP/6+iLTMwbBA2he5BAAsATkEG1NmEMePDji4GCnO97T0y07e35DQ4n0sr6+SKl0uXRpmyiqq6ryfXy6P3xYpFtMt8XAQO/Ll3eJorqu7qCHh6tcQOqp3717SOpDS+Nra/d37Wpv4ozIL3WnwVCjRg62GHL58q6cnPS4uLA5c8ao1evKy3PPndsya1a8ShVcWZknlXn8uOSrrz66d6/wwoUvVapgqWdva2vj6uokDTg42GVnz5eWtinHHO7cOWTioYm8vKWaCVAU1du3Lx47NuLjj6dIR4cCA72jovoJgnDx4rbq6gJXV2dDC9OUv2fR2QKgFzkEACwBOURbE+aQu3cLNX+hl6nVawMDvXv29Dt27KfTsTIykqVrHjIykpcunWyomFaL9vZ2ci/W2rqLbgFD6aLRGZFf6k6DoUZ176LbKClX2Nvbdu/uEhjoLQiCnZ2tm5tzQIBnYKD3qVPZoqhetGiCm5tzly5d+vTp8ehR8bVru+U0JU1kVVX+2LERoqiuri4IDfVvdI7KyrYrlS7Gl4OhnFBbe8DJySEoyPfMmRytjxw/vqFv38BG00VBQVZkZJ85c8Z89tksUVRLp5zJh5UAmAc5BAAsATlEWxPmkPLy3IAAL71vNTQUb9w4z9vbXXp55coue3u777/f6eHhev36HkPFtFr08/Oorv7pJCXpEIr4tDnEyanrzZv7pOGqqjzNklrT0GijT02zkhMnNkq9c5Wq54IFiWfP5ty7V9jQUPLdd9uDg331Nnr2bM6wYQP01qb5cvPmf0RH9zM+JfX1R1JShktBSBTVq1bNmDo1RhoePDjEz89Dt+ZVq2bMnBlnZIHX1xdlZCRbW3epqdn76FHxyJGqYcMGhIT4rV+fdu9e4c9fegBMRw4BAEtADtHWhDlk27ZFycnRuuPnzh138+a+M2dyNANGfHx4SIifZnm9xdzcnI8d23Dr1n5RVKenj09KiqqpKbh+fU9iYpTuJJmeQ6Kj+82cGXf79oGqqrxx4yLkkrrT0Gijugxdpy6K6rVrZ8uzLFWSkBA5e/YY+Qp4UVQ/flyyc+eSnj39GhpKMjMnzp49RrP8vXuFKlWwKKo3bVowf35Co/MeFhb6+edzja/Wx49Ljh//PCtramJiVHR0v8TEKOl2XosWTfDwcHV27io/20Sq+fHjkqAg36Ki1Xobra8/smXLwqAgnyVLUuQC167tzshIDgsL3bFjcW3tAWlkZuZEJyeHxYtTTPz3A/B0yCEAYAnIIdpMzCGmnNw/atSg/PxluuNXrEh1cXEKDvYtKlotjyws/FQQBOkZ3kaKbdw4r1s3R6XSVRTV9+4VTpkS4+rq5Our3LPnY3nCNCdSa5oNzU5Z2Y4hQ3o7ONj16OG1f/8KuaTuNDTaqK6wsNCwsFCtkVVVeTExg0aOVElHV6qrC6SzvG7d2p+ePt7FxSk9ffytW/uLij5TqYInTx5ZWZm3cuX0gABP+WiMtXWXGzf2Hj/+eWCgt7S09+1boXdmT5zYaGdnK4rqbdsW+fgoHzw4YnzlVlXlffXVR4mJUSEhfosXp4wbF1FZmRcTM6hXr4DKyrx9+1a4ujofO7bh/v3DV67ssrW12bBhrnSLM73nZSUnR0+bFltR8ZVUIDc3MyZmoI9Pd1FUV1XlL16colIFSw+Pd3R0OHRoleZNgQE8C+QQALAE5BBtT3Q8xIizZ3OCgnxNv2oiK2vqgAFBzf71bDZJSVHr1s2RbnWlVLpYW3cZNy5Cfvfq1d2pqaMmTBg2enSYdGlKcnJ0auoozftxJSREWlt3sbGxlq4anzRpRH39vwOGlAG8vd2ly06koyiJiVGaSc+QYcP6JyREfvXVR48e/bT6EhOjMjMnSncTFkX13r3LExIiPT3dbGysZ8wYnZgYVVa2QzQh+EVF9Zs6NaaoaLXef4yFC5McHR0WLkxq9rUDvNjIIQBgCcgh2pokh9y/f7hXrwBTuryiqL55c19JyVonJ4eios/M8AXc6LXUAPBiI4cAgCUgh2hrquMhpnN37+bj033btkXN/t0MAC0BOQQALAE5RJv5cwgAwJzIIQBgCcgh2sghAPBiI4cAgCUgh2h7gXPIjz8eras7eO3a7rKy7adPZxcVfZafvyw7e/7y5alpaWOlWzaJorq0dPOIESrND44cqcrKmmrkmvuZM+MyMpIN3YdK6xZeeq9LGTcuQrqcRhCEU6eyExIiRVFdUZHbp08PQ7XpXujCtS4ATEEOAQBLQA7RZmIOUavX9enTo2tX+8jIPhUVuVrvPn5cEh3dLy9vqd7PNld32c/Pw8XFyddXGRoa4Obm3KOH14QJw+bNS1i+PPWLL9LlZ2LMnTvuk0+maX5w/fo0FwBtsKgAACAASURBVBenlSunG6q5oaF4+fJU6ZHwxudXM0VoljlzJkfKHoIgJCREnj6dLYrqTZsWpKePN1Sb7mI0tGDJJwA0kUMAwBKQQ7SZmEOGDx9w/vyX9+4VZmZO1Pt87suXd3l5ud+/f1j3rSbpFuseKDBRTU1BauqowEDv3NxM3Xfv3z/s46O8ffuAaOCAg3zYwci7hsqIBlKEoY8nJkY12orup0yZNoFkArRg5BAAsATkEG0m5hD5URV37xY6Oup/8FxycnROTrru+CbpBD9FJZcubVuwIDEkxC87e770gPCGhuJ9+1bExg6eNGmEVGb9+rQlS1JKSzdJRycaGkoiInobOtBhyvQcP/65YMLxEFFUl5ZuDg31FwShru6gKKqrqvLs7W3v3i28f/+w5qP9dGswUmcTLnAALwxyCABYAnKItie9PqSiItff30PvW3l5S+Pjw3XHC4KgVq/t1SvAwcFOpQr+9tst0vhHj4ozMyf6+Cjd3bvNmDFavtzi2LENffsGduvmKD2wTzR8lYUkPLxXeHgv3fH9+wfZ29tGRvZRqXoGBfkolS62tjb+/h4bNsyVntB3925hz55+NTUFaWljT5zYKIrqrKypoaH+tbX7pRri48PLy7VPQpMnSe/4RYsmNJpDamv3L1iQ6OLitGJFqiAI/fsHqdXrZswY3a/fh6WlmysqcoOCfI3UoNs0B0MAGEEOAQBLQA7R9qQ5ZNq02I8/nqL3rcuXd/n4KHXHC4IQGzv4hx923rlzaM6cMXJmWLlyemRkn8rKvOrqgtjYwYsWTZDG+/go1ep1t27tX7AgUbMSQ5MUFhaqN4fIjh3bEBcXNnRo3/z8ZcXFa+7eLZTGV1Tkdu1q7+bmvGrVDFFU5+Zm9uoVUFNTIH8wP39ZWFgv6SHoujOlty2VKlgQhOHDB5w+nf34cYmNjbVu+fj48Llzx1VV5Unjy8tzk5OjlyxJmTcvYceOxYcPfyrFuatXdxcUZAmCEBrqX19fZHrGIHgA0EQOAQBLQA7R9kQ5JDt7vkoV/PBhkd53Hzw44uBgpzteEISKiq+k4Zs393Xtai8NBwX5nD//pTRcVrY9IMBTGvb0dMvOnt/QUKJVyZN+9V6+vCsnJz0uLmzOnDFq9bry8txz57bMmhWvUgVXVuZJZR4/Lvnqq4/u3Su8cOFLKUIIgmBra+Pq6iQNODjYZWfPF0075lBY+GlKynBBEE6fzk5KiqqtPeDu3s3Q9OflLdUMWqKo3r598dixER9/PEU6EBQY6B0V1U8QhIsXt1VXF7i6OuutqtEJ45AI0MKRQwDAEpBDtJmeQ778cmFQkG9NzV5DBQxdOqLbb5YG7O3t5MtO6uuL5AyjVq8NDPTu2dPv2LENhioxhZQr7O1tu3d3CQz0FgTBzs7Wzc05IMAzMND71KlsUVQvWjTBzc25S5cuffr0ePSo+Nq13XJMklqsqsofOzai0ZmSDBnS++uv18tvXbiwNTTUX7e8oZxQW3vAyckhKMj3zJkcrYaOH9/Qt29go+mioCArMrLPnDljPvtsliiqpVPOJkwY1ixdHwAWghwCAJaAHKLNxBySnT3/ww+9q6ryjZQpL88NCPDSHW8ohwQEeF68uE0aLivbERTkI5dpaCjeuHGet7e7oUqegmYNJ05slHrnKlXPBQsSz57NuXevsKGh5LvvtgcH+5rSot53peMY8ls5OelTp8Zolr9z59DgwSH19UdSUoZLQUgU1atWzZCLDR4c4ufnodvQqlUzZs6MM7QkRVFdX1+UkZFsbd2lpmbvo0fFI0eqhg0bEBLit3592r17hU3VmwHwPCKHAIAlIIdoMyWHrF07OzCwkRAiiupt2xYlJ0frjjfUe5ZuAVxVlVdTUxAXFyZdpCGK6rlzx928ue/MmRzNHOLm5nzs2IZbt/br1m/oOnVpyuVJktpNSIicPXvM1au75TKPH5fs3LmkZ0+/hoaSzMyJs2eP0Sx/716hShXc6EzpfWvgwJ67d3+sOfLCha3+/h6PH5ccP/55VtbUxMSo6Oh+iYlR0u28Fi2a4OHh6uzcVX62ifTBx49LgoJ8i4pW612S9fVHtmxZGBTks2RJilzg2rXdGRnJYWGhO3Ysrq09IC9wJyeHxYtTzNwHAtC8yCEAYAnIIdpMySGCIFhbd7HW+NNbbNSoQfn5y/R+XO/L+vqitLSxSqWLp6dbRkbyo0c/Pb98xYpUFxen4GDfoqLV8qc2bpzXrZujUumqW39YWGhYWKjWyKqqvJiYQSNHqqqrC0RRXV1dYG3dRRTVt27tT08f7+LilJ4+/tat/UVFn6lUwZMnj6yszFu5cnpAgKdUXhTV1tZdbtzYe/z454GB3o3OlO5bW7dmfPiht3yVi62tzdWru7Oz5w8bNqCqKu+rrz5KTIwKCfFbvDhl3LiIysq8mJhBvXoFVFbm7du3wtXV+dixDffvH75yZZetrc2GDXNVqp6ivhO6RFGdnBw9bVqsdAWOIAi5uZkxMQN9fLqLorqqKn/x4hSVKlh6eLyjo8OhQ6s0bwoMoCUghwCAJSCHaHvS+2UZcvZsTlCQb0NDcbN/40qSkqLWrZsj3epKqXSxtu4ybty/L/O4enV3auqoCROGjR4dJl2FkpwcnZo6SvPql4SESGvrLjY21llZU5/oWnBpICkp6ptvNsm1TZkSY21tLR3rGDasf0JC5FdffSRHr8TEqMzMidLdhEVRvXfv8oSESE9PNxsb6xkzRicmRpWV7RANJzpZVFS/qVNjiopW610RCxcmOTo6LFyY1OxrB4A5kUMAwBKQQ7Q1SQ65f/9wr14BJ09ubPavWwCAFnIIAFgCcoi2pjoeAgCwTOQQALAE5BBt5BAAeLGRQwDAEpBDtJFDAODFRg4BAEtADtFGDnnh/fjj0bq6g9eu7S4r2376dHZR0Wf5+cuys+cvX56aljZWupWWKKpLSzePGKHS/ODIkaqsrKm6l7ybcrG+lri4sG+/3dLsi+J5V1Oz9+jRNatXz4yNHaz3dtK6Zs6My8hIfvDgiN53NddXoyvRYiUkRG7btkhzTGnppvHjh2qOMXErMP7//NwtGRk5BAAsATlEmyk55PDhTz/80NvR0SEysu+FC1t1Czx+XBId3S8vb6nejz+/X94vBj8/DxcXJ19fZWhogJubc48eXhMmDJs3L2H58tQvvkiXn1Uyd+64Tz6ZpvnB9evTXFycVq6crlWhVufV0FtaVQ0fPqDRST15cmOvXgH37x9u9oXWXIxvSv36fRgbO1gQhH37Vly7tlvU6TfrfqShoXj58tTJk0fqrVDvqjS+wRpaR89uMze+TERRfepUtrNz18zMidLLmpq9oaH+p09/oVnGxK1AFNX19UeUSlfNW+c1umQsfxdHDgEAS0AO0WZKDhkzZsjly7vu3i1cvXpmaGiA3jKXL+/y8nLX24Nski/pPn16GHnZ5J51/eZXU1OQmjoqMNA7NzdT99379w/7+Chv3z4gGj3cIeqsUCM55EkPmzQ0FAcF+Z45k9PCV6WRTcn48tdcQY0ufL1j9K5TE9fRs9jMTV8mavW6iIjed+8eevDgSGRkn5KStXqLGd8KJNu2LYqJGah31kxfwk2yNJoQOQQALAE5RJspOUR+rsXdu4eMPAUvOTk6Jyddd3yTfCUb6e8+C5bWjfg5Ll3atmBBYkiIX3b2fOnB7Q0Nxfv2rYiNHTxp0gipzPr1aUuWpJSWbkpIiBRFdUNDSUREbyM/opvS/TKyDPW+lZ+/LCZmEKtSNLwp6c6RKQvc0Pjjxz83FGMMNW1kHT2LzdyUZWLif6MpW4Fk4MCeT5rQLP9/jBwCAJaAHKLN9OtDbtzYu3Bh0qxZ8YYK5OUtjY8P1/slrVav7dUrwMHBTqUKlq8TePSoODNzoo+P0t2924wZo+VT2I8d29C3b2C3bo5ZWVN1uxq6L02sR6UKPn58gzxVJ09ulB5S3mhz9fVFqamjXFychgzpffXqbrnMzp1LlEpXb2/34uI1+fnLgoJ8HBzsBg0KuXDhS0OLyFCa0p0GQ40eOrQqIMDT1dVJt/Lw8F7h4b10x/fvH2RvbxsZ2Uel6hkU5KNUutja2vj7e2zYMFdKmHfvFvbs6VdTU5CWNvbEiY2iqM7Kmhoa6l9bu1+qIT4+vLw8V67Q2tq60TnSfcvIcpAkJUVpneUva2mr0simZKiLbGSBGxq/aNGEJ80hRtZRk2/mJi4TLfb2tnof4tnoViD55z/XBwf7Sg8Y/f77nT16eOldMsbDjwXGEnIIAFgCcog2E3OI9OWqUgXfuXPIUJnLl3f5+Cj1fjY2dvAPP+y8c+fQnDlj5L7yypXTIyP7VFbmVVcXxMYOXrRogjTex0epVq+7dWv/ggWJmpVo1SkPm1jPtm2L4uLC5E8lJkbt3LnElOaWLp08fvzQ27cPZGVNnTBhmFxg7txxd+4cWrlyulLpGhXVr7w8986dQ+np44cM6W1kMep9qTsNhhqNjw+vqsrTPHldFhYWqjeHyI4d2xAXFzZ0aN/8/GXFxWvu3i2UxldU5Hbtau/m5rxq1QxRVOfmZvbqFVBTUyB/MD9/WVhYL+nh9A0NxY6ODrqzoPvySXOIv7+HZtrR1NJWpaFNSRTVmzf/w9BCftIcolIFC4IwfPiA06ezHz8usbGxbnTFGVlHz2IzN3GZaLKxsZb+UQ0xtBWIorq+vig42PfgwZXSy9WrZ0rXrzea0CwweGghhwCAJSCHaDMxhzx+XFJZmZeYGJWcHG2ozIMHRxwc7PR+SVdUfCUN37y5r2tXe2k4KMjn/Pmffm8uK9seEOApDXt6umVnz29oKNGqxNBLE+upry9SKl0uXdomiuqqqnwfn+4PHxaZ0lxgoPfly7tEUV1Xd9DDw1UuIPXU7949JAiC3Dmrrd0vz2Cj/RX5pe40GGrUyC/0hly+vCsnJz0uLmzOnDFq9bry8txz57bMmhWvUgVXVubJ6/errz66d6/wwoUvpe6pIAi2tjaurk7SgIODXXb2fGktm/JL8J07h570B2MHB7t79wr1zkJLW5WGNiVRVEvXqU+aNELqbevNIcaXvFSssPDTlJThgiCcPp2dlBRVW3vA3b2b3lkzcR09i8280WXS6JzKFZqyFSxZkpKUFCWK6uLiNWVlO3x9lWr1OlEnh5jSqJEZaRbkEACwBOQQbU90396amgInp66G3r17t1Dzl3JDfQv5pb29XX39Tydp1NcXyZ0MtXptYKB3z55+x45taLSSJ6onIyNZuuYhIyN56dLJJjZnb28n9y2srbvoFjAybSYuCt1pMNSo3nNOjJNyhb29bffuLoGB3oIg2NnZurk5BwR4BgZ6nzqVLYrqRYsmuLk5d+nSpU+fHo8eFV+7tlvuR0oTWVWVP3ZshCiqq6sLQkP9G52jsrLtSqWLictB4uBgZ+hC5Ja2Kg1tSmfO5EybFisIQmrqqNWrZxqfeOPjhwzp/fXX6+W3LlzYKq9WI3NtZB09i83clGUiKy3dpFS6zp07Tu+7pmwFkyaNkA6PrF4909m5a0REb62p0p28goKsyMg+c+aM+eyzWaKolk5ulI96WQ5yCABYAnKINlNyiPRjsyiqb9zY6+npZqhYeXluQICX6R2UgADPixe3ScNlZTuCgnzkMg0NxRs3zvP2dm+0kieq58qVXfb2dt9/v9PDw/X69T0mNufn51FdXaC1KJ6u8+rk1PXmzX3ScFVVnmZJrWlotNGnplnJiRMbpT6TStVzwYLEs2dz7t0rbGgo+e677cHBvnobPXs2Z9iwAXpr03y5efM/oqP7PdGE+fl5VFToP+enpa1KQ5vSsGH9T5/OFgShpmavtOKeOodIV2XIb+XkpE+dGqNZ/s6dQ4MHh5i+jp7FZm7KMpH8+OPRyMi+W7dmzJkzZt++FUaWrW5D8lYgKylZ6+BgJ10rJRrIIfX1RRkZydbWXWpq9j56VDxypGrYsAEhIX7r16cZOmTUjMghAGAJyCHaTMkhCQmRVVX5N27snTBh2Jw5YwwV27Ztkd6ztgx1UDIzJ0ZH96uqyqupKYiLC5MuThBF9dy5427e3HfmTI5mB8XNzfnYsQ23bu3XfflE9cTHh4eE+GlOZ6PNpaePT0qKqqkpuH59T2JilO5Mmd55jY7uN3Nm3O3bB6qq8saNi5BL6k5Do43qMnSduiiq166dLc+yVElCQuTs2WPky6ZFUf34ccnOnUt69vRraCjJzJw4e/YYzfL37hVKD87btGnB/PkJjc57WFjo55/PfaKuUkJC5Pbti/W+1dJWpaFNSSs8GJ94U+ZCfmvgwJ67d3+sOfLCha3+/h6mr6NnsZmbskxEUX379oH4+PDU1FGiqH7w4Eh0dL9NmxboFjNlKxBF9ZkzOS4uTtLxDb3zWF9/ZMuWhUFBPkuWpMizee3a7oyM5LCw0B07FtfWHpDn3cnJYfHiFCPr2jzIIQBgCcgh2kzJITt3Lune3UWpdJ01K97IT32jRg3Kz19megelvr4oLW2sUuni6emWkZEs3aNGFNUrVqS6uDgFB/sWFa2WP7Vx47xu3RyVSlfdl09UT2Hhp4IgnDy5UR7TaHP37hVOmRLj6urk66vcs+dj3ZkyvfNaVrZjyJDeDg52PXp47d+/Qi6pOw2NNqorLCw0LCxUa2RVVV5MzKCRI1XST/LV1QXSqUG3bu1PTx/v4uKUnj7+1q39RUWfqVTBkyePrKzMW7lyekCAp/wTvrV1lxs39h4//nlgoLe0ljV/b9b6XdnOzlYU1du2LfLxURp6hrchu3Z9FBs7WO9bLW1VGtqU9E6w5l+j5fW+tXVrxocfesuXatja2ly9ujs7e77mga9G19Gz2MwbXSYPHhzZvPkffn4eWVlT5em/d69w8uSRYWGhhw6tlJozcSsQRfXmzf+wt7fVe3LXuXNbpH/v5OToadNipYthBEHIzc2MiRno49NdFNVVVfmLF6eoVMHSBe6Ojg6HDq0ycq9zsyGHAIAlIIdoe6LrQ4w4ezYnKMj3Ka5eMLOsrKkDBgQ1+2SYTVJS1Lp1c6RrmpVKF2vrLuPGRcjvXr26OzV11IQJw0aPDpNO009Ojk5NHaV5E6eEhEhr6y42NtbSj/GTJo2QT/cX/9Xd9PZ2l064l46iJCZGacYDEzU0FAcF+Zw9a+pzDF/UVdnopmT8eIhg2p/mR5KSor75ZpNcz5QpMdbW1s7OXTWfMv506+hZL5OJE4enpAyX7lig5ejRNZGRfaVjdyZuBaKonj59tO6xFOnf29bWRj5IKIuK6jd1akxR0Wq962vhwiRHR4eFC5PMvLh0kUMAwBKQQ7Q1SQ65f/9wr14BT9H1NKebN/eVlKx1cnIoKvrMDM0Z6vnBiFOnsnv37mHksdmSF3hVWv6mZOI6esGWifF7AVs+cggAWAJyiLamOh5i+dzdu/n4dDf0FDY8R1iVwBMhhwCAJSCHaGs5OQQAWiZyCABYAnKINnIIALzYyCEAYAnIIdrIIc/IoUMrpQdoGLlKWNOiRROM3BPZ0C2SdIs1emmylri4sG+/3aI7fty4COmMfEEQTp3KTkiIFEV1RUVunz49DE2b6Y0CMCdyCABYAnKItifKIVOmxOjtWT5+XBId3S8vb6neT5mhM2pp/d0ffzwaFOQjPYJAb1rQKjxjxujp00dLD7lLSIjMypqqdfsdQd8tkozXLBi4j6qW9evThg/Xvj2rKKrPnMmRsocgCAkJkadPZ4uietOmBenp4w012uicWuz6Al5s5BAAsATkEG2m55BNmxbExAzs0qWL3ncvX97l5eWu9y46LTCHLFo0QRCEu3cLxcaOEhw7tiEyss/GjfNu3z5w/fqe8vLcXbs+sre3HTQo5PLlXbofF5sihzR62MTQ+MTEKOOfNTSnppcE0OTIIQBgCcgh2kzMId98sykgwKumZq+R/mJycnROTrrueDN0MS2qF7t9+2IHBzvdSdI7kT17+tnYWDs7d/X0dOvRw6t37x6DB4dER/cLDfWXDkeIovr48c8Fk4+HmNLRN7K4NN8qLd0cGuovCEJd3UFRVFdV5dnb2969W3j//mHNR7PpTo+RKbTA9QW88MghAGAJyCHaTMkhtbUHgoJ8jh/fIBrtQeblLY2PD9cdLwhCUdHqDz/0dnbumpQUJXVqRVH96FFxZuZEHx+lu3u3GTNGaz5+Ozt7vo9Pd29v90OHVsqVHDq0KiDA09XVSRTVDQ0lH300ydvb3cPDdcWKVBM71povjx3b0LdvYLdujtLj+URRXV9flJo6ysXFaciQ3lev7tbbrpbw8F7h4b20RsbHh3/zzaZGDwWIorqhoXju3HFLl07W/PjixSkzZ8ZpjpGOrujOgu5cW1tbNzrjxlei9FZt7f4FCxJdXJykZdu/f5BavW7GjNH9+n1YWrq5oiI3KMjXyPQ8aUAilgDPFDkEACwBOURboznk8eOSUaMGrV07W3pppMt4+fIuHx+l7nhBEMaNi7hyZVdNzd74+PBZs+Kl8StXTo+M7FNZmVddXRAbO3jRognyR2bPHnP9+p49ez7u2dNPriQ+PryqKk961PfatbPDwkLLy3Nv3tw3YcKwp8ghPj5KtXrdrVv7FyxIlMYsXTp5/Piht28fyMqaKj1cWbddLWFhobo5RLfd/PxlgwaFCIIwYECQ9NhyUVSfOpU9ZUrMvn0rfvzxaHr6+MzMidev70lJGT5+/NDa2v1paWPV6rVSSZUqWBCE4cMHnD6d/fhxiY2Ntd5Za2godnTUc5hC92Wjiys+Pnzu3HFVVXnSmPLy3OTk6CVLUubNS9ixY/Hhw59KgfPq1d0FBVmCIISG+tfXF5meMQgegDmRQwDAEpBDtDWaQ7KypsonCIlGe5APHhxxcLDTHS8IwpUru6Thiopcb293aTgoyOf8+S+l4bKy7QEBnvJHHj0q/vbbLbm5mba2NnIlFy58KRcICfErLd0kDd++feApcoinp1t29vyGhn8/Jjkw0Fu6JKOu7qCHh6vedk0nH1hITx8/eHDIzZv7BEGoqsrv3z9ow4b/v727/4cqffgA/j+dHQ/jIWMazGDSxKhEjJoMhTwzKOxSKG1oSvJa2/agRG1YGUJFxLx62PTwbbW3+46aZFaimM049w+n79nZM3OOo6RJn17vH86cuc51rnMucn3OY+n8/AB1yZOrq7NI5CmTrZXL/SQSEUEQLi7O3t6egYE+wcEBQ0MXent/zsmJIwhiaKg+Kytmauq6WLzG7qbNzfXxOecwM9PD89SEXn+MDmmU5ubK1NTtx4/nUSeRgoKkMTFhBEE8fdo0MdEpEnmy7XM+/5Z34AUANOQQAABHgBzCtGgOEQi+4zlkfPu21/p4vFUN/1wsNDfX5+bmSk27urqYzR+uxTKb++kM095e5eMjUqlCrR/PRRCE9SOkhMJ/lmWsgoEthxgMp4OCpMHBAfQJCldXF3oDBYLv7K6XP2pF6enqqqq979/foufMzt788ccsrVazaFP/+qsrOzt227aNt2+fpb8aHr6sVAbaLT8x0Ul/xbHhIyPNEokXd7PZcsLU1HUPD6FC4f/gQQNjkbt36zZvDlr0R6Wzs1qt3lRcnEI9TMxk6iwpSaXPPgHA54AcAgDgCJBDmJb6/hCO49bPnrXK5X52F5mauk5NDw3V02Nludz36dMmanpkpEWhkFHTPj6iP/9sIv99ooOxXqlUPDLSTE0/f97G0SoPD7fJyW5q2mjUW5e0WAbOnz9An58JCPCZmOikpqlH6HJv77LstEWLUWce6K8aGsry8+Oty8/M9ERFhZCk4eHDhtjYcLba6I8XL/5IvdiEg9ncl5MTd/9+PfWxtraQXmlUVEhAgI9tzbW1hUVFSWwrJUmD2dxfXq4VCL4zmbrm5wd27YqIjQ0PCQk4e7bk3bveT9/JAMAGOQQAwBEghzAtYw5paqpgO8yfmxs3Odk9OtoaGRly5kwxNV+ny9VowoxGvcnUmZSkqq0tpOaLxWsGBk5NT98oKUllyyHFxSlxceHj4x0vX3bs3q3iaJVGE1ZUlPTmzXWjUZ+Wtp0uWVqaNjnZ/eBBA51DysoysrJiTKbOV6+uZmbGLLq9JMt96vSCi16DxF3GetX09NatwR0dx61nDg9fDgz0IUlDY+OhgwfT2XqK/qhSKc+dK+Xu5YWFwbt3z1VX52dmxmg0YZmZMdQpnYqKbB8fkaenW1fXCeuaFxYGFQr//v6TdldqNvddunRYoZAdOZJDFxgf7ygv16pUypaWSjqm6nS5Hh7CysqcjxhpAQAb5BAAAEeAHMK0jDkkISGyvb3K7iIXLpR5e3v6+nrrdLn0ZU5mc39JSapE4uXr611erp2f/zC/paVSIvESi9c0N1ey5ZCZmR6tVuPp6SaTSVpbdRytGhlp2bZto1Dosm6d37VrNXTJmpoCLy+PDRv8+/tPUnPevevNy4sXiTz8/SVXrx63u14GlUqpUik/ZafxLEZ9dfly+fr1UvqeFmdnp5cvO+rrD1KnQRISIru7a+zWdu/eeRcXZ5I0NDVVyGQS60eT2WU06q9cOZqZGRMSElBZmZOWtv3FC318fGRoqPzFC313d41I5HnnTt3s7M3nz9ucnZ3q6kojIoJJe8mKJA1areb77xNHR69QBVpbdfHxW2WytSRpMBrbKytzIiI2lJSkkqTB3V3Y01Nr/VBgAPh0yCEAAI4AOYRpqTmEzcOHDQqF/8fdSrH6LHqig/8/ukKSNGRlxTx61EivJS8vXiAQ0Gcn9uzZaX3PDLWIVComCMLFxXn//hSSNGRmxvz++/lF2x8buyU9XX3lylE6HGZmxuh0uWbzh8vVurpOpKerfX29nZwEhYW7MzNjRkZaSPaTMLSYmLD8/Pj+/pN2f1QOH85ydxcePpz1xXsQYDVBDgEAcATIIUzLkkNmZ2+Ghsr5DHA/H70kUAAAIABJREFUK7ZBPADAtww5BADAESCHMC3X+RAAAHBMyCEAAI4AOYQJOQQAYHVDDgEAcATIIUzIIQAAqxtyCACAI0AOYUIO+VJ6en6i3uPBcXu6tYqK7OLiFLbaiH8/5JetHj73xDMkJamePLlkO//Ro8aEhMhFNzMtbTt14xBBEPfv16enq0nSMDraumnTOrZN4N82AOADOQQAwBEghzDxySGLDgoXFgY1mjC9/hjb4p/7r+xXN059//6WQiGj3iluNy0wChcW7v7hh93U2xXT09XV1fmM500xcgjbbrFbjHsfnj1bEhcXbjv/hx92//bbEXpZth+SBw8aqOxBEER6unpoqJ4kDY2Nh8rKMtjatugO+Xr7HeCLQA4BAHAEyCFMPHPIon/nxsba/PzEs7M3P27xT/TVjUcrKrIJgnj7tpdc7PD/nTt1avWm8+cPvHlz/dWrq8+etba1HXV1dY6MDBkba7NdnFyOHGK3SdarMJm6duzYvLAw2NV1Yu/eXWwrYls8MzOGexVsO4R/SQCgIYcAADgC5BCm5cohJGnQajUNDWUfvfin+LpGn83NlUKhC9vYnSE4OMDJSeDp6ebr671und/GjeuiokI0mjClMpA6z0CShrt3zxG8z4fwGcFz7E/qq5KS1EePGqenb8TGhk9MdHJvy+PHF5XKQIIgpqdvkKTBaNS7ujq/fds7O3vT+pWFts3m2JCvsd8BvhTkEAAAR4AcwrSMOUSvP5acHG138f7+k+vXSz093bKyYqjBKEka5ucHdLpcmUwiFq8pLNxt/ZLv+vqDMtlaqVTc0/MTXUlPT61c7isSeZCkwWIZPHp0j1Qq9vER1dQUcLTQYhnU6XKlUrFI5HnmTLH10Na6QrbGECwnDaw3KjPzn41iiI4OjY4OZcxMTo5+9Khx0WP8JGmwWAZKS9OOHdtrvXhlZU5RUZL1HOrsit1GMlYtEAjYunVJOUQu95NIRGFh68fHO9g2gSQNU1PXDh3K9PLyoPpoyxaFwXCmsHB3WNj6x48vjo62KhT+HM1eao5CLAGwCzkEAMARIIcw8cwh1Hu7N28OOnu2hH7HNsPYWJtMJrG7eFra9ufP20ymruTk6H37kqn5P/30g1q96cUL/cREZ2JiVEVFNr3I/v0pr15dvXr1eHBwAF1JcnK00ag3mbpI0nD69H6VSvnsWevkZHd2dizHAPTMmeLo6FCqpFarsR7jWlfI1hiOHEJvVErKNnqjGFQqpW0Osa25vb0qMjKEIIjwcMWdO3XUzPv36/Py4ru7a96/v1VWlqHT5b56dTUnJy4jY8fU1LWSklSD4TRVMiJiA0EQcXHhQ0P1CwuDTk4Cu423WAbc3e2cf7D9uGgOIUnD1NS18fGOP/741W55ak5ycnRpaZrRqKfmPHvWqtVqjhzJOXAgvaWl8ubNn6ng+vJlR2dnNUEQSmWg2dzPP2MgeADwgRwCAOAIkEOY+OSQt297LJbBmZme27fPRkaGMA7G0+bm+oRCF9v5BEE8f95GTY+OtkqlYmpaoZBRo1iSNIyMNMvlvvQi8/MDT55cam3VOTs70ZUMD/9KFwgJCXj8uJGafvPmOsd4VKkMpEu+fn3NOkhYV8jWGI4cYrVRV+iN4o8+Y1BWlhEVFTI52U0QhNHYvmWLoq6udH5+gLqWydXVWSTylMnWUqcgCIJwcXH29vYMDPQJDg4YGrrQ2/tzTk4cQRBDQ/VZWTFTU9fF4jV2Gz8318fnZMLMTM+ixVpaKiUSL4IgNmzwt10RY45ef+zQoUzrb5ubK1NTtx8/nlddnU+ShqAgaUxMGEEQT582TUx0ikSebDufz7+ldgTAqoccAgDgCJBDmJb63F6jUW99Tb+1t297rQ+306yvBZqb63Nzc6WmXV1dzOYPlz+Zzf10hmlvr/LxEalUoXl58dbjfusnRAmF/yzLWAUDoyRbhWyNYcshjI2yG8C4UVWlp6urqva+f3+LnjM7e/PHH7O0Wg3bIrS//urKzo7dtm3j7dtn6a+Ghy8rlYF2y09MdNJfcWzayEizROLF3eyIiA2lpWl3755bWBgk2a/LYps/NXXdw0OoUPg/eNDAqPnu3brNm4MWTRedndVq9abi4hTqmWMmU2dJSWp2duxSewHgW4AcAgDgCJBDmPjkEOtx/Ohoa0CAj91iz561yuV+tvMJgpiauk5NDw3V00Nhudz36dMmanpkpEWhkFHTPj6iP/9sIv99ooMxEpVKxSMjzdT08+dtHEfB/fzEIyMt/238FbYK2Rrj4eE2OdlNTRuNeuvFp6au2W7Ux+F5FN9uMeqUAv1VQ0NZfn68dfmZmZ6oqBCSNDx82BAbG85WG/3x4sUfqReb8GEydVksg2znQ8zmvpycuPv366mZtbWFdNuiokIYP0jUIrW1hUVFSWxtI0mD2dxfXq4VCL4zmbrm5wd27YqIjQ0PCQk4e7bk3bveT+kFgNUKOQQAwBEghzDxySE7dmx+/LjRbO57+LAhMjKkpqbAbrGmpgq2o/i5uXGTk92jo62RkSFnzhRT83W6XI0mzGjUm0ydSUmq2tpCar5YvGZg4NT09I2SklS22FBcnBIXFz4+3vHyZcfu3SqOcfy+fck7d0aMj3cYjfqUlG1sFbI1RqMJKypKevPmutGoT0vbbr243Y1isHufOl3DohcXcZex3gR6euvW4I6O49Yzh4cvBwb6kKShsfHQwYPptoswPqpUynPnSrl/JP73f387fXq/Wr1JJltrsQyw5ZCFhcG7d89VV+dnZsZoNGGZmTHUmZ+KimwfH5Gnp1tX1wnrRRYWBhUK//7+k3bbZjb3Xbp0WKGQHTmSQxcYH+8oL9eqVMqWlko67up0uR4ewsrKHP4DNYBVDDkEAMARIIcw8ckh7e1V/v4SNzfX0FB5ff1B6lIcWwkJke3tVbbzCYK4cKHM29vT19dbp8ulr4Yym/tLSlIlEi9fX+/yci19+zt174FYvKa5uZItNszM9Gi1Gk9PN5lM0tqq48gh09M3qJJyuV9X1wm2C67YGjMy0rJt20ah0GXdOr9r12qs29PQUObt7enl5XHgQDrjrYI0lUqpUikXHSV8yvkQ668uXy5fv15qsXzoIGdnp5cvO+rrD1KnQRISIru7a+zWdu/eeRcXZ5I0NDVVyGQS62eXsWxXKOO6LLvtMRr1V64czcyMCQkJqKzMSUvb/uKFPj4+MjRU/uKFvru7RiTyvHOnbnb25vPnbc7OTnV1pRERwaS9AEaSBq1W8/33iaOjV6gCra26+PitMtlakjQYje2VlTkRERtKSlJJ0uDuLuzpqWW7gBDgW4McAgDgCJBDmJZ6fwibhw8bFAp/tuH4l2U291MTT582WT8o9lPwTA4ciy/XP+v2ZGXFPHrUSK8lLy+eetAZddphz56dtrfKSKVigiBcXJz3708hSUNmZszvv59frm2Jjd2Snq6+cuUonesyM2N0uly6R7q6TqSnq319vZ2cBIWFuzMzY6iL6AiWczW0mJiw/Pz4/v6Tdn/kDh/OcncXHj6ctZI/ZgAOCzkEAMARIIcwLUsOmZ29GRoqX+r4ddmxjdHT0rZPTHS+eKHfuTPi+PG85VrXl91YAACekEMAABwBcgjTcp0PcWStrTqxeI2fn/jAgXT6SPwnQg4BgK8FcggAgCNADmH6FnIIAMC3DDkEAMARIIcwIYcAAKxuyCEAAI4AOYQJOWSV6en5iXr7B8dN7dYqKrKLi1PYaiP+/Whgtnr43EkPn8hk6rp169TJk0WJiVERERv4LFJUlFRermV7+hnPzl0d0tPVTU0V1nMeP27MyNhhPef9+1vT0zfGxztGRpqHhur7+39pb6+qrz944kRBSUkq9Si2rxRyCACAI0AOYeKZQ4aHL6tUoa6uzjKZxPbbhYVBjSZMrz9md9kvNbJZgfU62qDt/ftbCoWMesW43bTAKFxYuPuHH3b//Xc/SRrS09XV1fmMx08xhqpsW223GPcu4rnrfv/9fGiofHb25srv+ZXvXO7fo7Cw9YmJUQRBdHfXjI93kDbxz3YRi2XgxImCvXt3LbqBHJ37VfQa964jScP9+/Wenm46XS710WTqUioDh4YuWJcJCPDx8vLw95colXJvb8916/yys2MPHEg/caLgwoUy63fdrMxGLSPkEAAAR4AcwsQnh0xNXZfL/a5ePW4294+NtdktMzbW5ucnth15LNff6U2b1nF8/FLjA0cbglRUZBME8fZtL7nY+ZA7d+rU6k3nzx948+b6q1dXnz1rbWs76urqHBkZQnWx7YKfmEO4z5nYHUlbLAMKhf+DBw3fTudy/B5x72r++3lJneuAvcb2u7/orjMYzmzfvvHt2565uT61etPg4Gm7xUymzoKChKAgaWurjq0LlrpPvjjkEAAAR4AcwsQnh1RX59PHETlotZqGhrLPNPiwHR4tdZHPwaEGHM3NlUKhi22T7DYyODjAyUng6enm6+u9bp3fxo3roqJCNJowpTIwPV1Nlbl79xzbSNd2FUsdk/HZde3tVfHxkd9a57L9Htm2im2az1bw79yl7pPP3WsclXD8F8Tn5/PPP5sOHcoMCQmorz/4/v0tkjRYLAPd3TWJiVF79uz8lH3yxSGHAAA4AuQQJj45JCIimHq7HDe9/lhycrTdv9MGw+nQULlQ6BIRseHJk0vU/Pn5AZ0uVyaTiMVrCgt301ex37lTt3lz0Jo17tXV+bbDCNuPbPUQBNHff3L9eqmnp1tWVsz09A3u9ZKkob7+oEy2VioV9/T8RFfS01Mrl/uKRB4kabBYBo8e3SOVin18RDU1BRxDELbgZLt1ZnN/QUGCl5fHtm0bX77ssLtehujo0OjoUMbM5OToR48arQeUbKMui2WgtDTt2LG91otXVuYUFSVZz6HOrthugu1WCwSCRTeceyxod09mZcUwrum3rna1di7H75HtLwJbkxadz7Nzl73Xlve/Ap67jsHV1dnu6y+3bFG4ujqr1ZsiIoIVCplE4uXs7BQY6FNXV2r9vO+P2CdfHHIIAIAjQA5h4pNDRCLP5uZKmUyyZo17erp6crLbbrGxsTa7d48QBJGYGPV///fbzExPcXEKPYD+6acf1OpNL17oJyY6ExOjKiqyqfkymcRgOPP69bVDhzKtK2HUSU+z1UMQRFra9ufP20ymruTk6H37krnLk6Rh//6UV6+uXr16PDg4gK4kOTnaaNSbTF0kaTh9er9KpXz2rHVysjs7O/Yjhqq2W3fs2N6MjB1v3lyvrs7Pzo61u14GlUppm0Ns19veXhUZGUIQRHi44s6dOmrm/fv1eXnx3d0179/fKivL0OlyX726mpMTl5GxY2rqWklJqsHw4XqViIgNBEHExYUPDdUvLAw6OQnsbprFMuDuLuTTU3zmWwsM9Hn2rJVt8dXauWy/RyRpuHjxR7bssdT9zLNzl73Xlv2/Ap67zpqTk2BhYZCjwJ07dUlJqh07Nre3Vw0MnKIudPyUffLFIYcAADgC5BAmPjlEKHTZs2fnxETn5GT3nj07MzNj7Babm+sTCl3s/p0eHb1CTU9Odru5uVLTCoXsjz9+paZHRprlcl9q2tfXu77+oMUyyKiE7SNbPQRBPH/+4W6W0dFWqVTMXZ4kDfPzA0+eXGpt1Tk7O9GVDA//ShcICQl4/LiRmn7z5vpHDFVtty4oSErdkjE9fcPHR2R3vfxRK5qaulZWlhEVFTI52U0QhNHYvmWLoq6udH5+QKkMJAjC1dVZJPKUydbK5X4SiYggCBcXZ29vz8BAn+DggKGhC729P+fkxBEEMTRUn5UVMzV1XSxeY3fT5ub6Fj08vOghZLsHkoVCl3fv7A8BV3Hnsv0ekaSBuk99z56d1DDabg7hs5N5du7n6LVl/69g0V3HfxPGxtoaGsqSklTFxSkGw5lnz1r/859L+/YlR0RsePFC/yn75ItDDgEAcATIIUx8coiPj2hq6ho1/ddfXV5edi4mIUnD27e91sfF2cYN9EdXVxez+cMFGGZzPz2AMBhOBwVJg4MD6EP4HJVw1GN9sdDcXB896GEr395e5eMjUqlC8/LiCatRnfUlHELhP8syVsFzq223ztXVhR6+CATf2V0vf9SK0tPVVVV7qWvcqTmzszd//DFLq9Us2tS//urKzo7dtm3j7dtn6a+Ghy8rlYF2y09MdNJfcfcUpbOzWq3eVFycQj3Xy2TqLClJpc8VWBMKXdhuO17Fncv2e/TgQcP33ycSBFFQkHDyZBHJkkO4m0rh37nL22uf478CPruO9vhxo0QiKi1Ns/stdY7I1dV57VqvoCAp8d9wLpf7BgVJ79+v/+h98sUhhwAAOALkECY+OWTHjs30hRYmUyd97Jnh2bNWudyP/+BDLvd9+rSJmh4ZaVEoZHQZi2Xg/PkD1iviGN2y1UMQxNTUdWp6aKieHmmxlffxEf35ZxP572PhjPVKpeKRkWZq+vnzNo4hkYeHG30Bm9Goty7J2LqAAJ+JiU5qmnqEru16Pw7PSuwWo67Ip79qaCjLz4+3Lj8z0xMVFUKShocPG2Jjw/n0lNncX16uFQi+M5m65ucHdu2KiI0NDwkJOHu2xO4R9IAAn9FR1it8Vmvnsv0excZuGRqqJwjCZOqiBrsfnUP4d+6y95rdj5/yXwGfXUd5//6WWr358uXy4uKU7u4aji6wXdG9e+etA8ZS98kXhxwCAOAIkEOY+OSQ9vaquLhwo7HdZOrKyNhRVpZht1hTUwWfw+30R50uV6MJMxr1JlNnUpKqtraQml9amjY52f3gQYP14MPb2/POnbrXr6/ZfmSrhyCI3Ny4ycnu0dHWyMiQM2eKudcrFq8ZGDg1PX2jpCSVbahaXJwSFxc+Pt7x8mXH7t0qjiGRRhNWVJT05s11o1GflradLmm7dWVlGVlZMSZT56tXV+lr3riHqnbvU6cXXPRyEe4ydke3W7cGd3Qct545PHw5MNCHJA2NjYcOHkzn7m6zue/SpcMKhezIkRy6wPh4R3m5VqVStrRU0qHCWnq6urm5km0zV2vnsv0eMcIDx7Tt/uf+iq1zP0ev2f34Kf8V8Nl1JGl48+Z6cnJ0QUECSRrm5vo0mrDGxkO2xU6f3k/XQPz31OL+/Sn0Mwb47xOdLtfDQ1hZmcPR1ysGOQQAwBEghzDxfI9hVdVeb2/PtWu9SkpSra9dsZaQENneXsV/8GE295eUpEokXr6+3uXl2vn5D1eq1NQUeHl5bNjg399/kl7q/PkDa9a4SyQi249s9RAEceFCmbe3p6+vt06XS18Jw1a+paVSIvESi9c0N1eyDVVnZnq0Wo2np5tMJmlt1XEM8kZGWrZt2ygUuqxb53ftWg1d0nbr3r3rzcuLF4k8/P0lV68et7teBpVKqVIpF+21TzkfYv3V5cvl69dL6cv0nZ2dXr7sqK8/SJ0GSUiItD66zDiK7OLiTJIGrVbz/feJ1L0BBEG0turi47fKZGtJ0mA0tldW5kREbLB9X3Vb29HExCi2hq3WzmX7PbJdli09Llfnfo5es/vxU/4rWHTXzc31Xbz4Y0CAT3V1Pr2Z79717t27S6VS9vT8RK3OaNTHx0fu2hVBnb+amOikrqN7/fpaWVmGl5dHWVnG69fX+O8Td3dhT0+thwfXdWIrBjkEAMARIIcw8cwhi3r4sEGh8P+4WxpguSx6ooP/P7pCkjRkZcU8etRIryUvL14gEHh6ulFvmN6zZ6d1NKUWkUrFBEG4uDjv35/CaGRMTFh+fnx//8lFf1oslgGFQvbwoZ034q1Wi/4ecZ8PWfbO/Yp6jW3X5ebG5eTEUVflMdy6dUqt3kydzcvKijlzpph6AIBE4iUQfJeWtp0u+fJlR0FBAuPeD+59cvhwlru78PDhrBXeD3YhhwAAOALkEKZlySGzszdDQ+W//37+i/+5/SLYxnnw6e7fr9+4cR3HS7I/t5Xs3FXze7TyvbZqdt1nghwCAOAIkEOYlut8CAAAOCbkEAAAR4AcwoQcAgCwuiGHAAA4AuQQJuQQAIDVDTkEAMARIIcwIYcso4yMHT09tdQ0x/3BbN/a3n7A525jhqQk1ZMnl2zn2y4bFxf++HHj7OzN6ur89HT1UttGKypKKi/Xzs3Zf4oa21Zz7Ma2tqOuri63b5/lKPPkySU3N9cHD76hW9gBPhpyCACAI0AOYeKTQxiDUR8f5hMzFxYGNZowvf4Y2+Jf/M/wx1lqy+/fr5dIvOgo8hG12eYQPl9ZO3u2JC4unGMVRUVJ1IssamoKVCqlXO576FDm1JSdtzHwbL/FMnDiRMHevbsWXYr495OabP39d39lZc66dX5DQxcyM2OMxna7xUymLoVCVldXGhsbvujN0F/vjx/AckEOAQBwBMghTEs9H3Lv3nmdLtd2/thYm5+f2O6g8OsdCH5Ey2/fPpuVFbNobTzPOfDMIRy10cXS09UXLpQdOJCuUMioV629eXNdKhV3dBwfG2srKkrKyNjBv23cayTsPUOWXCyH9Pb+vHHjuqKipOnpGyRpMJm6EhIih4d/ZRQzGtuDgwPOnz9Akoa7d+t27Yp4+7aHsWf4NA/g24EcAgDgCJBDmJaaQ7KyYoxGvd2vtFpNQ0OZ7fyvd9i3vC3nUxthEzZ4poJFKxwba/PwEK5b58eoxMdHJJNJamsLZ2Z6ltQ2Pl/dvXvObjutZ/79d39b21GVSpmYGPX4caP14pOT3fHxW0+cKKCTRl/fyYAAnytXjqanq6l32xkMp1Uq5R9/MOPKZ+pEgK8RcggAgCNADmFaUg4ZG2uzfrcXg15/LDk52nY+PRCcnx/Q6XJlMolYvKawcDd9R4HFMqjT5UqlYpHI88yZYu7xbk9PrVzuKxJ5kKTBbO4vKEjw8vLYtm3jy5cddLG6ulK53NfDw62qai/3qhkVWiyDR4/ukUrFPj6impoCtpZER4dGR4fats06HrAlBz5H6+lKBAKB7W60/bhoQnj+vE2t3hwbG257/dXNmz/L5X6//XZkfn5gSW1ja4y1iorsRXNIerq6oCDhyZNLdtdlsQz8/HNhVlaMydRZUJCgVAZSkWNo6IJE4jUwcIokDf/zP82bN6+vqMimzvN8RPsBVjfkEAAAR4AcwrSkHHLgQHpf30m2b8fG2mQyie18euT3008/qNWbXrzQT0x0JiZGVVRkU/PPnCmOjg599qx1crJbq9Vwj6qTk6ONRr3J1EWShmPH9mZk7Hjz5np1dT79quPffjuiVAYODV2YmrpWXq7lXjWjwtOn96tUSqol2dmxbC1RqZS2OYSxsbbLstVGjbZt51ssA+7uQrbFl5RDkpOjL1wo4xiaFxQk7Nmzk3/beG5aRMQGgiDi4sKHhuoXFgadnASLNphNRsaO6up8s7mfnmMwnKZudCFJg9ncd+RIjlar4d82gG8HcggAgCNADmHin0NmZnq2bFEsLAyyFZib6xMKXWzn0wNBhUJGXz8zMtIsl/tS00plIH1BzuvX17hH1dY3DAQFScfG2kjSMD19g757fvPmoHv3mK9VZls1o8KQkAC6JW/eXP+IISxHDqGlpW0fHDxtvUhnZzU13dFxnL69ZG6uj89x/ZmZHp6H/zmC0FLbxr1GqsLe3p9zcuIIghgaqs/Kipmaui4Wr7HbEtvWsm0Cn/3P599SuxXgq4YcAgDgCJBDmPjnkF9+2ffLL/s4Crx922t9/J5GD/tcXV3M5g8XRJnN/XRoEQr/mU8udnTf+vC8q6sLPbIUCL6jZrq5udo+Q5Zt1YwKGS2xviyKJ4JHDhkauiCTSerrD9IlVapQi2Xwl1/2yWQS+lm0ExOdSmUg226hP46MNEskXou2h6NJ1vN5to2jBtq2bRtv3z5LfzU8fJneHLZtsbv3GNP8o0VnZ7Vavam4OIX6uTWZOktKUunzZgDfDuQQAABHgBzCxDOHWCwDwcEB1PX3bJ49a5XL/Wzn02NEudz36dMmanpkpEWhkFHTfn7ikZEWanp09Ap3DrH+GBDgMzHRSU3//Xf/f9fiZ/sCDbZVMyqUSsUjI83U9PPnbR9x4Jwjh0xP39i6NZiaNhrbf/658MaNn2JjwwmCOHGiYMsWRWRkyKtXV+nyDx82xMaG29bM+Hjx4o8aTRjPtvEZxPNpG3e/UKqr862/amgoy8+Pty4/M9MTFRVid6dRE2/f9kxMdDIqNxhOP3/eRn8cGDi1YYP/5cvl1mXM5v7ycq1A8J3J1DU/P7BrV0RsbHhISMDZsyXv3vUutU8BvnbIIQAAjgA5hIlnDtHrj+XlxXOXaWqq4L5AX6fL1WjCjEa9ydSZlKSqrS2k5u/bl7xzZ8T4eIfRqE9J2cY/h5SVZVB3ML96dZW+VaCmpiAyMuTp06bXr6+VlWVwr5pRYXFxSlxc+Ph4x8uXHbt3q9haYvc+dbrCsbE2u1vx+PHF0FA5NX3nTt22bRu3bFH095+kzslotZqCggTrMzmNjYcOHkxn23b6o0qlPHeulOdwJCsr5s8/m+iPY2Nttl3Gp23c/WL3q61bgzs6jlvPHB6+HBjoQ7Jcl0WShrVrvQSC7+LjI60rrK0tlEi89uzZOTR0Yf/+lM2bg+iESZIGs7nv0qXDCoXsyJEcurbx8Y7ycq1KpWxpqaSztE6X6+EhrKzM4bnrAL5eyCEAAI4AOYSJZw6JjAxZ9N3VCQmR7e1VtvPp4aDZ3F9SkiqRePn6epeXa+fnP1wQNT19Q6vVeHq6yeV+XV0n7N5kwqiK8u5db15evEjk4e8vuXr1wxh3fn7g2LG9MplEIvE6dWo/96oZFc7M9FAtkckkra06tuG1SqVUqZS28//441eCICIignt7f3Zzc338+CL91d9/95eXa/Pz4w2GMzExYUFB0ra2owsLg3/88auzsxNJGiyWwcrKnNBQeWurjrobOyEhsru7xu6237t33sXFmSQNJVE2AAAC4UlEQVQNTU0VMpmEIyEwDA9ftj55smPHZuvbY/i3jbtfbL+6fLl8/XqpxfLh5iJnZ6eXLzvq6w9SJ3y4r8uyNTPTU1W118ND6O8voU+IUbRazfffJ46OXqEqaW3VxcdvlcnWkqTBaGyvrMyJiNhQUpJKkgZ3d2FPT62Hh50rCQFWGeQQAABHgBzCtNT3h7B5+LBBofDn82wlu+jR7dOnTQqF/xf/s/1xUlO3nzq1n9oJ5eVaV1dn+jC/QCDYtGndyEhLYmLU+fMH3r+/5evrTRCEUOhCn7QhScN//nNJq9VQ9zDs2bPT9rYZqVRMEISLi/P+/SkkacjMjPn9d+ZN+bY4rsiy/sezbTxrs252VlbMo0f/vBskLy9eIBB4erp1dZ1ga/CiG2UydRYW7s7NjWMrEBMTlp8f399/0u6P5eHDWe7uwsOHs774jw3A54YcAgDgCJBDmJYlh8zO3gwNlfMZELNJS9s+MdH54oV+586I48fzSHtD5y/+txwA4GuEHAIA4AiQQ5iW63zIJ2pt1YnFa/z8xAcOpNu98gcAAD4OcggAgCNADmFykBwCAACfCXIIAIAjQA5hov4+AQDA6vbF/9wAAHzjkEOYJGX3vvhfRwAA+Kzci+988T83AADfOOQQAAAAAABYacghAAAAAACw0pBDAAAAAABgpSGHAAAAAADASkMOAQAAAACAlYYcAgAAAAAAKw05BAAAAAAAVhpyCAAAAAAArDTkEAAAAAAAWGnIIQAAAAAAsNKQQwAAAAAAYKUhhwAAAAAAwEpDDgEAAAAAgJWGHAIAAAAAACsNOQQAAAAAAFYacggAAAAAAKw05BAAAAAAAFhpyCEAAAAAALDSkEMAAAAAAGClIYcAAAAAAMBKQw4BAAAAAICVhhwCAAAAAAArDTkEAAAAAABWGnIIAAAAAACsNOQQAAAAAABYacghAAAAAACw0pBDAAAAAABgpSGHAAAAAADASvt/hRST1UIh1i8AAAAASUVORK5CYII=" alt="" />

代码:(自己写的)

orm.py code

 #/usr/bin/ecv python
#author:evil_liu
#date:
#python_version:python3.x
#description:this molude is used for create database and table.
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey,Date
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy import create_engine
import hashlib
import os
import sys
import getpass
BASE_Dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_Dir)
from lib import ssh
from conf import log
import datetime
user_menu='''
+---------------------+
|:Add User |
|:Login Host |
|:Dlete User |
|:Check Host |
|:Check TeamMember |
|:Exit |
+---------------------+
'''#用户操作菜单 engine = create_engine("mysql+pymysql://root:@192.168.1.106:3306/homework_day13", max_overflow=)
Base = declarative_base() #自定义的类声明sqlorm基类。 class Host(Base):
'''
功能:该类是功能创建主机列表的。
'''
__tablename__="host"
nid=Column(Integer,autoincrement=True,primary_key=True)
ip=Column(String())
port=Column(String()) class Systme_User(Base):
'''
功能:该类主要创建系统用户表格。
'''
__tablename__="system_user"
nid=Column(Integer,autoincrement=True,primary_key=True)
username=Column(String())
password=Column(String()) class HostToSystme_User(Base):
'''
功能:该类主要功能是创建主机和主机系统用户的关系表。
'''
__tablename__="hosttosystem_user"
nid=Column(Integer,autoincrement=True,primary_key=True)
host_id=Column(Integer,ForeignKey("host.nid"))
host_user_id=Column(Integer,ForeignKey("system_user.nid"))
user=relationship("Systme_User",backref="uu")
host=relationship("Host",backref="h") class Board_User(Base):
'''
功能:该类主要功能是创建堡垒机登陆用户表。
'''
__tablename__="board_user"
nid=Column(Integer,autoincrement=True,primary_key=True)
username=Column(String())
pasword=Column(String())
user_status=Column(Integer)##用户的账号状态,为1的时候表示使用状态,为0是锁定状态不能登陆。
user_type=Column(Integer)#堡垒机用户类型。
group_id=Column(Integer,ForeignKey("board_group.nid"))
team=relationship("Board_Group",backref="g") class HostToBoard_User(Base):
'''
功能:堡垒机用户和主机列表多对多的对应关系表。
'''
__tablename__='hosttoboard_user'
nid=Column(Integer,autoincrement=True,primary_key=True)
host_id=Column(Integer,ForeignKey("host.nid"))
host=relationship("Host",backref="hh")
board_user_id=Column(Integer,ForeignKey('board_user.nid'))
board_u=relationship("Board_User",backref="u") class Board_Group(Base):
'''
功能:该类主要是创建堡垒机用户所在的组。
'''
__tablename__="board_group"
nid=Column(Integer,autoincrement=True,primary_key=True)
group_name=Column(String()) class Log_Record(Base):
'''
功能:该类主要创建日志表。
'''
__tablename__='log_record'
nid=Column(Integer,autoincrement=True,primary_key=True)
user_name=Column(String())
sys_user=Column(String())
host=Column(String())
cmd=Column(String())
date=Column(String()) Session=sessionmaker(bind=engine)
session=Session()
def add_host_data():
'''
功能:该函数主要是给host表里添加数据。
:return: 无。
'''
session.add_all(
(
Host(ip='172.17.33.75',port=''),
Host(ip='172.17.33.76',port=''),
Host(ip='172.17.33.77',port=''),
Host(ip='192.168.1.106',port=''),
)
)
session.commit() def add_data_sysuser():
'''
功能:该函数主要作用是给system_user表添加数据。
:return: 无。
'''
session.add_all(
(
Systme_User(username='root',password=''),#
Systme_User(username='evil',password=''),
Systme_User(username='tom',password=''),
Systme_User(username='jack',password='') )
)
session.commit()
def add_data_hosttosystem_user():
'''
功能:该函数主要是给hosttosystem_user表添加数据。
:return:
'''
session.add_all(
(
HostToSystme_User(host_id=,host_user_id=),
HostToSystme_User(host_id=,host_user_id=),
HostToSystme_User(host_id=,host_user_id=),
HostToSystme_User(host_id=,host_user_id=),
HostToSystme_User(host_id=,host_user_id=),
HostToSystme_User(host_id=,host_user_id=),
HostToSystme_User(host_id=,host_user_id=),
HostToSystme_User(host_id=,host_user_id=),
)
)
session.commit() def add_data_board_user():
'''
功能:该函数主要是给board_user表添加数据。
:return: 无。
'''
session.add_all(
(
Board_User(username='ella',pasword='202cb962ac59075b964b07152d234b70',group_id=,user_type=,user_status=),
Board_User(username='roy',pasword='202cb962ac59075b964b07152d234b70',group_id=,user_type=,user_status=),
Board_User(username='john',pasword='202cb962ac59075b964b07152d234b70',group_id=,user_type=,user_status=),
Board_User(username='david',pasword='202cb962ac59075b964b07152d234b70',group_id=,user_type=,user_status=),
Board_User(username='benson',pasword='202cb962ac59075b964b07152d234b70',group_id=,user_type=,user_status=),
Board_User(username='adam',pasword='202cb962ac59075b964b07152d234b70',group_id=,user_type=,user_status=),
)
)
session.commit() def add_data_hosttoboard_user():
'''
功能:该函数主要给表hosttoboard_user添加数据。
:return: 无。
'''
session.add_all(
(
HostToBoard_User(board_user_id=,host_id=),
HostToBoard_User(board_user_id=,host_id=),
HostToBoard_User(board_user_id=,host_id=),
HostToBoard_User(board_user_id=,host_id=),
HostToBoard_User(board_user_id=,host_id=),
HostToBoard_User(board_user_id=,host_id=),
HostToBoard_User(board_user_id=,host_id=),
HostToBoard_User(board_user_id=,host_id=),
HostToBoard_User(board_user_id=,host_id=),
HostToBoard_User(board_user_id=,host_id=),
HostToBoard_User(board_user_id=,host_id=),
)
)
session.commit() def add_data_board_group():
'''
功能:该函数主要作用是给board_group表添加数据。
:return:无。
'''
session.add_all(
(
Board_Group(group_name="DBA"),
Board_Group(group_name="NETWORK"),
Board_Group(group_name="OPERATION"),
)
)
session.commit()
def add_data_log_record(u,sys,ip,cmd,date):
session.add(Log_Record(user_name=u,sys_user=sys,host=ip,cmd=cmd,date=date))
session.commit()
def init_db():
'''
功能:初始化数据库和表格。
:return: 无。
'''
Base.metadata.create_all(engine)
add_host_data()
add_data_sysuser()
add_data_hosttosystem_user()
add_data_board_group()
add_data_board_user()
add_data_hosttoboard_user() def hash(x):
'''
功能:该函数主要是用户输入密码进行md5解析。
:return: 返回账号密码的解析的md5值。
'''
M=hashlib.md5()
M.update(bytes(x,encoding='utf-8'))
return M.hexdigest()
def outer(func):
'''
功能:该函数主要用户操作菜单权限验证。
:param func: 传入函数。
:return:
'''
def inner(x,y):
if y==:
ret=func(x,y)
return ret
else:
print('\033[31;1m %s \033[0m'%'Permission Denied !!!!')
return inner
def check_accout(user,pwd):
'''
功能:该函数主要功能是验证用户的账号密码是否正确。
:param user: 用户账号。
:param pwd: 用户密码。
:return: True表示用户账号密码正确,反之错误。
'''
res=session.query(Board_User).filter(Board_User.username==user).all()
log_obj=log.Logger("login.log","login")##记录用户登录日志。
if res:
if pwd==res[].pasword and res[].user_status==:#查看用户账号是否锁定。
log_obj.log_in().info("the user %s login successful!"%user)
return res[].user_type
else:
log_obj.log_in().info("the user %s login fail!"%user)
return False
else:
log_obj.log_in().info("the user %s login fail!"%user)
return False
@outer
def add_user(x,y):
'''
功能:该函数主要实现管理员给堡垒机添加新用户。
:param x: 当前登录用户的名字。
:param y: 当前登录用户的类型。
:return:
'''
host_list_id=[]#主机host_id的列表。
ret=session.query(Board_User).all()
booard_user_id_list=[i.username for i in ret]#生成堡垒机用户ID列表。
while True:#判断添加用户是否有效。
add_username=input("Entre add username>")
if add_username not in booard_user_id_list:
print("the username %s is vail!"%add_username)
break
else:
print("sorry the username: %s is exits,try another!"%add_username)
add_password=hash(input("Entre the user of password>").strip())#密码MD5加密。
ret=session.query(Board_Group).all()
nid_list=[i.nid for i in ret]
print("The user group list".center(,"-"))
for i in ret:
print(i.nid,i.group_name)
while True:#用户输入的group_id是否合法。
add_group_id=input("Entre the group of number for user>")
if add_group_id.isdigit() and int(add_group_id) in nid_list:
break
else:
print("input invalid number !")
continue
ret_1=session.query(Host).all()
host_id_list=[i.nid for i in ret_1]
print("The Host IP LIST".center(,"+"))
for i in ret_1:#输出主机的nid和主机IP
print(i.nid,i.ip)
while True:#可以进行选择多个主机给一个堡垒机用户。
host_id=input("Entre the host number for the user or entre q exit > ")
if host_id.isdigit() and int(host_id) in host_id_list:
if int(host_id) in host_list_id:#避免管理员给用户添加的主机的多次的情况。
print("Do not add the same IP for user!try again")
continue
else:
print("the IP add successful!")
host_list_id.append(int(host_id))
continue
elif host_id=='q':
break
else:
print("sorry you entre a invalid number!try again.")
continue
while True:
add_user_type=input("Entre user_type:1:admin 2:common user >")
if add_user_type.isdigit() and add_user_type in ["",""]:
break
else:
print("sorry you input invalid number! tyr again.")
#往board_user表里插值.默认添加的用户的用户类型只能普通用户。
session.add(Board_User(username=add_username,pasword=add_password,
group_id=int(add_group_id),user_type=int(add_user_type),user_status=))
session.commit()
nid=session.query(Board_User.nid).filter(Board_User.username==add_username).first()
for k in host_list_id:#往add_data_hosttoboard_user插值。
session.add(HostToBoard_User(board_user_id=nid[],host_id=k))
session.commit()
print("add the username:%s successful!"%add_username) def login_host(x,y):
'''
功能:该函数主要是当前登录堡垒机用户,登录主机。
:param x: 用户名。
:param y: 用户类型。
:return:
'''
ret=session.query(Board_User).filter(Board_User.username==x).first()
print("%s"%'host list'.center(,"*"))
host_list=[i.host.ip for i in ret.u]
for i,j in enumerate(host_list,):
print(i,j)
print('*'*)
choice_1=input("Please entre number which host you want to login >")
if choice_1.isdigit and < int(choice_1) <len(host_list)+:
host_ip=host_list[int(choice_1)-]#主机IP。
ret=session.query(Host).filter(Host.ip==host_ip).all()
username_list=[i.user.username for i in ret[].h]
print("%s"%'username list'.center(,'-'))
for i ,j in enumerate(username_list,):
print(i,j)
print('-'*)
choice_2=input("Entre number which user you want to login > ")
if choice_2.isdigit and <int(choice_2) < len(username_list)+:
user=username_list[int(choice_2)-]
pwd=session.query(Systme_User.password).filter(Systme_User.username==user).first()
ret_3=ssh.run(host_ip,user,pwd[])#调用ssh模块。进行主机登录。
add_data_log_record(x,user,host_ip,ret_3,datetime.datetime.now())#将用户操作的记录,写入数据库。
exit()
else:
print("sorry you entre invalid number!")
else:
print("sorry you entre invalid number!")
@outer
def delet_user(x,y):
'''
功能:该函数主要实现管理删除堡垒机用户。通过锁定用户状态,来实现用户的删除。1表示登陆状态,0表示锁定状态。
:param x: 当前登录用户。
:param y: 当前用户类型。
:return: 无。
'''
username_list=[]
ret=session.query(Board_User).filter(Board_User.user_status==).all()#输出所有未锁定用户。
print("%s"%'the user list'.center(,'*'))
for i in ret:
print(i.username)
username_list.append(i.username)
while True:#判断用户输入的用户名是否合法。
lock_user=input("Entre the username which you want to delete >").strip()
if lock_user not in username_list:
print("sorry you entre invalid username try again!")
else:
break
session.query(Board_User).filter(Board_User.username==lock_user).update({"user_status":})#对堡垒机用户进行锁定。
session.commit()
print("operation successful!") def check_host(x,y):
'''
功能:该函数主要作用是查看当前登录的堡垒机用户的下得服务器列表。
:param x: 用户名。
:param y: 用户类型。
:return: 无。
'''
ret=session.query(Board_User).filter(Board_User.username==x).first()
print("%s"%'host list'.center(,"*"))
for i in ret.u:
print(i.host.ip)
print('*'*)
def check_team_member(x,y):
'''
功能:该函数主要作用查看当前用户所在组的成员。
:param x: 登录用户。
:param y: 当前用户类型。
:return: 无。
'''
ret=session.query(Board_User).filter(Board_User.username==x).first()
mem=session.query(Board_User.username).filter(Board_User.group_id==ret.group_id,
Board_User.user_status==).all()#查找未锁定用户。
print("%s"%"TeamMember list".center(,'-'))
for i in mem:
print(i[])
print("-"*)
men_func_dic={
'':add_user,
'':login_host,
'':delet_user,
'':check_host,
'':check_team_member,
}#用户菜单映射。
def oper_menu(usrname,ret):
'''
功能:该函数用户操作函数。
:param usrname: 用户名。
:param ret: 用户类型。
:return: 无。
'''
log_obj=log.Logger("command.log","command")
while True:
print(user_menu)
choice=input("Entre your choice >")
if choice.isdigit() and <int(choice) <:
men_func_dic[choice](usrname,ret)
log_obj.log_in().info(" the user excute command %s"%men_func_dic[choice].__name__)
else:
print("goobye")
exit()
def main():
'''
功能:该模块的主调用函数。
:return: 无。
'''
choice_2=input("if you first run this program,please Initializate database?(yes or no)").strip()
if choice_2=="yes":
init_db()
while True:
usrname=input("Entre your login username >")
password=hash(getpass.getpass("Entre your login password >"))#用户密码MD5验证。
ret=check_accout(usrname,password)
if ret:
oper_menu(usrname,ret)
else:
print("your username or passowrd is wrong, try again!")
continue
if __name__ == '__main__':
main()

SQLALchemy(连表)、paramiko的更多相关文章

  1. SQLAlchemy多表操作

    目录 SQLAlchemy多表操作 一对多 数据准备 具体操作 多对多 数据准备 操作 其它 SQLAlchemy多表操作 一对多 数据准备 models.py from sqlalchemy.ext ...

  2. Day13 SQLAlchemy连表操作和堡垒机

    一.数据库操作 1.创建表.插入数据和一对多查询 #!/usr/bin/env python # -*- coding: utf-8 -*- # Author: wanghuafeng from sq ...

  3. sqlalchemy 获取表结构。

    from sqlalchemy.engine import reflection insp = reflection.Inspector.from_engine(engine) colums=insp ...

  4. SQLAlchemy 关联表删除实验

    本实验所用代码来源于官网文档 from sqlalchemy import Table, Column, Integer, String, ForeignKey from sqlalchemy.orm ...

  5. Python数据库(三)-使用sqlalchemy创建表

    首先需要安装sqlalchemy根据所需情况调用数据库接口,对数据库进行操作pymysql:mysql+pymysql://<username>:<password>@< ...

  6. sqlalchemy多表查询

    from datetime import datetime from sqlalchemy import Column,Integer,String,Boolean,DateTime,ForeignK ...

  7. flask的orm框架(SQLAlchemy)-创建表

    # 转载请留言联系 ORM 是什么? ORM,Object-Relation Mapping.意思就是对象-关系映射.ORM 主要实现模型对象到关系数据库数据的映射. 优点 : 只需要面向对象编程, ...

  8. sqlalchemy根据表名动态创建model类

    作用如题,直接上代码吧,另外还支持 copy一张表的表结构,新建表并获得model对象 # coding: utf-8 import traceback from sqlalchemy import ...

  9. 如何使用sqlalchemy获取表的主键、以及每一个字段名和对应类型

    使用sqlalchemy获取到的结果只包含数据,不包含字段,那么我们如何获取到对应字段和其属性呢?以及如何获取某张表的主键呢? # -*- coding:utf-8 -*- # @Author: Wa ...

  10. sqlalchemy多表联合查询(inner outer join 左右连接)详解

    #按用户名摸糊查询trans_details.query.join(Uses).filter(Users.username.like('%xx%'))#select xxx from trans_de ...

随机推荐

  1. 如何获取域名的ip地址

  2. PHP7 错误处理

    最近学习了下PHP7新特性教程,记录了一些学习笔记. PHP 7 改变了大多数错误的报告方式.不同于 PHP 5 的传统错误报告机制,现在大多数错误被作为 Error 异常抛出. 这种 Error 异 ...

  3. .htaccess下Flags速查表

    Flags是可选参数,当有多个标志同时出现时,彼此间以逗号分隔. 速查表: RewirteRule 标记 含义 描述 R Redirect 发出一个HTTP重定向 F Forbidden 禁止对URL ...

  4. ORACLE行转列通用过程

    create or replace procedure row_to_col(tabname in varchar2,                                   group_ ...

  5. Java集合类学习笔记(Queue集合)

    Queue集合用于模拟队列(先进先出:FIFO)这种数据类型. Queue有一个Deque接口,代表一个"双端队列",双端队列可以同时从两端来添加.删除元素,因此Deque的实现类 ...

  6. ios企业应用部署

    最近公司要整一套企业内部用的应用,ios版本不上线要求可以随时下载使用,先是申请了企业者开发账号,然后发布应用,部署在自己服务器上供用户下载安装. 第一步:准备好应用相关的东西,基本上就是两个文件,x ...

  7. POJ 3463 有向图求次短路的长度及其方法数

    题目大意: 希望求出走出最短路的方法总数,如果次短路只比最短路小1,那也是可取的 输出总的方法数 这里n个点,每个点有最短和次短两种长度 这里采取的是dijkstra的思想,相当于我们可以不断找到更新 ...

  8. MicroERP软件更新记录2.0

    本次更新: 版本:2.0 内容:人力资源日常管理.工资薪酬.绩效考核 下次更新: 版本:2.1 内容:客户关系管理 开发载图: 截图(部分):

  9. Android WebView useragent

    今天介绍一下Android WebView UserAgent, User-Agent(简称UA)是HTTP请求头部用来标识客户端信息的字符串, 包括操作系统, 浏览器等信息.为了建立手机客户端的信息 ...

  10. Activity Intent相关FLAG介绍

    先首先简单介绍下Task和Activity的关系   Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity ...