外观
生物行为与逻辑
一只灰狼在远处漫无目的地游荡,忽然停下脚步,转头锁定了你——这一连串行为背后,是一套基于"重要性竞争"的行为选择系统。生存战争的生物AI不使用复杂的行为树,而是用简洁的优先级机制实现了丰富的生物AI。
核心架构
重要性竞争机制
生存战争的生物AI不使用复杂的行为树,而是使用重要性竞争:
每帧,所有行为计算自己的重要性数值,数值最高的那个行为被激活,其余行为全部暂停。
生物在同一时刻只能做一件事——要么追击,要么逃跑,要么漫步,不会同时进行。优先级高的行为会完全压制低优先级行为,所以狼不可能边追边嚎叫。
状态机
每个行为内部使用状态机管理自己的状态切换。状态机有三个关键动作:
- 进入状态 — 刚切换到这个状态时执行一次
- 状态更新 — 每帧持续执行
- 离开状态 — 切换到其他状态前执行一次
生物分类
| 类别 | 说明 |
|---|---|
| 陆地掠食者 | 狼、熊、虎、狮等陆地肉食动物 |
| 陆地普通生物 | 牛、马、鹿、羊等陆地植食动物 |
| 水生掠食者 | 鲨鱼、虎鲸等水中掠食者 |
| 水生普通生物 | 鲈鱼、食人鱼等水中普通生物 |
| 鸟类 | 鸽子、麻雀、鸭等飞禽 |
分类直接影响追击目标选择:掠食者的"自动追击类别"会包含对应的猎物类别。
行为组件全览
游戏中共有约 26 种行为组件,每个生物只会拥有其中一部分:
| 行为 | 功能 | 常见拥有者 |
|---|---|---|
| 追击攻击 | 发现并追击目标,发动攻击 | 掠食者 |
| 逃跑 | 受伤后寻找安全地点逃跑 | 多数陆地生物 |
| 寻找玩家 | 中立生物主动寻找玩家 | 部分中立生物 |
| 躲避玩家 | 从玩家附近逃离 | 胆小的生物 |
| 随机漫步 | 无目的的随机行走 | 所有陆地生物 |
| 飞行漫游 | 鸟类随机飞行 | 鸟类 |
| 游泳漫游 | 水生生物随机游动 | 鱼类 |
| 兽群跟随 | 跟随兽群中心移动 | 群居动物 |
| 牛群驱赶 | 被驱赶时移动 | 牛 |
| 躲避火焰 | 远离篝火 | 多数生物 |
| 飞行逃跑 | 遇到危险飞走 | 鸟类 |
| 凝视 | 盯着目标看 | 多种生物 |
| 嚎叫 | 夜间嚎叫 | 狼 |
| 产卵 | 鸟类产蛋 | 鸭、鸡等 |
| 跟随召唤物 | 跟随主人 | 被驯服的生物 |
| 甩骑手 | 未驯服的马甩人 | 野马 |
| 坐骑响应 | 响应骑手指令 | 被驯服的马 |
| 顽固坐骑 | 饥饿时拒绝移动 | 饥饿的坐骑 |
| 泥地打滚 | 猪在泥地打滚 | 猪 |
| 离水挣扎 | 鱼离开水后跳跃 | 鱼类 |
| 进食 | 寻找并吃掉食物 | 多种生物 |
| 鲸类呼吸 | 浮出水面呼吸 | 鲸类 |
| 游泳逃跑 | 水生生物逃跑 | 鱼类 |
追击与攻击行为
这是游戏中最核心的战斗AI,决定了掠食者如何发现、追击和攻击目标。
关键参数
| 参数 | 数值 | 说明 |
|---|---|---|
| 最大攻击距离 | 1.75 格 | 近战攻击的有效范围 |
| 主动攻击最低血量 | 40% | 生命值低于 40% 时不主动发起攻击 |
| 碰撞触发追击范围 | 7 格 | 被碰撞后追击的距离 |
| 碰撞追击持续时间 | 7 秒 | 碰撞触发的追击持续多久 |
| 被攻击后追击范围 | 30 格 | 被打后追多远(必定反击时) |
| 被攻击后追击时间 | 60 秒 | 被打后追多久(必定反击时) |
| 目标在范围内触发时间 | 3 秒 | 目标在视野内持续 3 秒才发起追击 |
| 追击行为重要性 | 200 | 用于行为竞争的优先级 |
目标必须在视野内持续 3 秒才会被追击,快速闪过的目标不会触发,给了玩家潜行溜走的机会。
三种追击触发方式
方式一:自动追击(视野发现)
- 白天和夜间的追击范围不同(夜间通常更大)
- 目标评分公式:
距离越近评分越高。
方式二:碰撞触发
- 生物与你擦肩而过时,有一定概率触发追击
- 追击范围 7 格,持续 7 秒
- 这种追击不是持久的——7 秒后就会放弃
方式三:被攻击反击
被攻击后的反击分两种情况:
| 反击概率 | 追击范围 | 持续时间 | 是否持久 |
|---|---|---|---|
| 概率 < 100% | 7 格 | 7 秒 | 否 |
| 概率 = 100% | 30 格 | 60 秒 | 是 |
当反击概率是 100% 时,追击范围从 7 格暴增到 30 格,持续时间从 7 秒暴增到 60 秒,而且变成持久追击——这就是为什么打了某些生物后它会死命追你。
攻击判定
攻击是否命中需要同时满足:
- 两个生物的碰撞盒有重叠
- 目标在攻击方向的前方扇形区域内(面向方向点积 > 0.25)
- 射线检测距离 < 1.75 格
点积 > 0.25 大约对应前方 75 度的扇形区域。生物只能攻击正前方约 75 度内的目标。
击杀后行为
当追击的目标死亡时,如果该生物有进食行为,会在 1-3 秒后移动到尸体位置进食。
逃跑行为
触发条件
| 触发条件 | 说明 |
|---|---|
| 生命值下降 | 受到伤害后 |
| 攻击者在 6 格内 | 距离足够近才有威胁 |
| 高分贝噪音 | 听到巨大响声也会逃跑 |
逃跑重要性
低血量逃跑的重要性(300)高于追击的重要性(200),受伤严重的生物会优先逃跑而非反击。打得过就打,打不过就跑。
寻找安全地点
逃跑时,生物会搜索 30 个候选位置,选择评分最高的作为逃跑目标:
- 距攻击者越远越好
- 距兽群太远会扣分(不想离群太久)
- 距噪音源越远越好
- 水方块有惩罚(陆地生物不愿跳入水中)
兽群行为
兽群中心计算
每个生物定期计算自己所属兽群的中心位置:
只有距离在"兽群范围"内的同名称同伴才参与计算。
距离与重要性
| 距兽群中心距离 | 重要性 | 说明 |
|---|---|---|
| ≤ 10 格 | 0 | 不触发 |
| > 10 格 | 1 | 极低 |
| > 12 格 | 3 | 低 |
| > 16 格 | 50 | 中等 |
| > 20 格 | 250 | 极高 |
距离兽群越远,归队的重要性越高。20 格时重要性达到 250,高于追击的 200——离群太远的掠食者会放弃追击,先回兽群。
呼叫同伴
被攻击时,生物会呼叫 16 格范围内的同兽群同伴来帮忙。
这就是为什么攻击一只狼会引来整群狼——16 格范围内的同伴都会被呼叫过来一起攻击你。
坐骑行为
坐骑响应
被驯服的坐骑有 5 级速度:
| 等级 | 速度值 | 说明 |
|---|---|---|
| 0 | -0.33 | 后退 |
| 1 | 0 | 停止 |
| 2 | 0.33 | 慢速行走 |
| 3 | 0.66 | 中速奔跑 |
| 4 | 1.0 | 全速飞驰 |
速度衰减:
- 最高速度维持 8-12 秒后自动减速一级
- 最大速度 0.75 秒无碰撞时自动降速
- 停滞时(速度为 0 且碰撞变化小)0.75 秒后自动加速到 1 级
骑手寻找范围:
- 主动寻找骑手:7 格
- 等待状态:6 格
甩骑手
未驯服的马会试图把骑手甩下来:
| 行为 | 说明 |
|---|---|
| 乱跳 | 随机乱跑 + 频繁跳跃 |
| 狂奔 | 快速直线冲刺 15 格 |
| 呆立 | 呆立不动,每 2 秒随机切换行为 |
概率:
- 5% 概率直接把骑手甩下
- 25% 概率伤害骑手(0.05 伤害)
- 25% 概率随机切换甩人方式
顽固坐骑
当坐骑饱食度为 0 时,会变得"顽固":
- 骑手发出移动指令时,摇头并发出痛苦的声音
- 拒绝移动
- 持续时间:随机 60-120 秒
- 随机概率触发
饿着肚子的坐骑不会听话。
其他行为详解
躲避火焰
| 参数 | 值 |
|---|---|
| 检查间隔 | 1 秒 |
| 忽略概率 | 1.5% |
| 高分时重要性 | 250 |
躲避火焰有两种模式:
- 远离:直接朝远离篝火的方向走
- 绕行:围绕篝火转圈
1.5% 的概率生物会无视火焰冲过来——这就是为什么偶尔有动物会穿过你的篝火攻击你。
凝视行为
| 参数 | 值 |
|---|---|
| 触发延迟 | 8 秒后随机触发 |
| 持续时间 | 6-12 秒 |
| 凝视玩家概率 | 100% |
| 凝视其他生物概率 | 25% |
凝视玩家时评分 ×100,所以生物更容易盯着玩家看。这就是为什么你总觉得动物在看你——因为它们真的在看。
嚎叫行为
| 参数 | 值 |
|---|---|
| 触发条件 | 夜晚(天光 < 0.1) |
| 触发概率 | 1.5% × 每帧 |
| 持续时间 | 5-6 秒 |
| 传播范围 | 10 格 |
产卵行为
| 参数 | 值 |
|---|---|
| 寻路范围 | 0.5 格 |
| 行走速度 | 0.4-0.6 |
| 产卵时间 | 3 秒 |
| 产卵位置 | 前方 3 格,有随机偏移 |
进食行为
| 参数 | 值 |
|---|---|
| 觅食范围 | 16 格 |
| 搜索间隔 | 2-4 秒 |
| 进食时间 | 4-5 秒 |
| 饱食度增加 | +1 |
| 饥饿时速度 | 0.5-0.7 |
| 不饿时速度 | 0.5 |
离水挣扎
鱼离开水 3 秒后开始疯狂挣扎:
- 重要性设为 1000(全游戏最高)
- 使用噪声函数计算摆动角度
- 2.5% 概率每帧跳跃一次
鱼离水后的挣扎是全游戏最高优先级的行为——比任何行为都高,确保鱼一定会拼命想跳回水里。
鲸类呼吸
鲸鱼需要定期浮出水面呼吸:
饱和函数(sat(x))等价于clamp(x, 0, 1),把值限制在 0 到 1 之间。当空气值从 0.75 降到 0 时,呼吸的重要性从 0 线性增加到 400。这是全游戏第二高的优先级,仅次于鱼的离水挣扎。
寻路系统
寻路状态
| 状态 | 说明 |
|---|---|
| 停止 | 不移动 |
| 直接移动 | 直线朝目标走(无障碍时) |
| 搜索路径 | 寻找绕开障碍的路径 |
| 沿路径移动 | 按路径点逐点前进 |
| 随机移动 | 找不到路径时随机乱走,最多 3 次 |
| 卡住 | 完全无法移动 |
沿路径行走时速度被限制为 0.75,即使生物的最高速度大于 0.75。这就是为什么生物在复杂地形上看起来比平地上慢。
寻路拥堵机制
为了防止大量生物同时寻路导致卡顿,系统有"寻路拥堵"机制:
- 每次路径搜索增加拥堵值
- 拥堵值每 0.08-0.12 秒衰减 20
- 拥堵值超过 500 时,新的寻路请求会被跳过
当区域内生物太多时,寻路会变慢。这是一种性能保护机制。
影响因素系统
生物有多种属性因素影响其行为和属性:
| 因素 | 说明 |
|---|---|
| 力量因素 | 影响攻击力等 |
| 速度因素 | 影响移动速度 |
| 饥饿因素 | 影响饥饿相关行为 |
| 韧性因素 | 影响伤害抵抗 |
| 其他因素 | 攻击速度、挖掘速度、追击范围等 |
因素的累积方式:
乘法因素相乘叠加,加法因素相加叠加。多个增益的效果是相乘的,所以两个 +20% 的速度增益加起来不是 +40%,而是 ×1.2 × 1.2 = +44%。
重要性优先级总览
| 行为 | 重要性 | 触发条件 |
|---|---|---|
| 离水挣扎 | 1000 | 鱼离水 > 3 秒 |
| 鲸类呼吸 | 0-400 | 空气值 < 0.75 时线性增长 |
| 低血量逃跑 | 300 | 生命值低于低血量阈值 |
| 躲避火焰 | 250 | 火焰评分 > 0.5 |
| 兽群归队(>20格) | 250 | 离兽群中心超过 20 格 |
| 追击攻击 | 200 | 有目标或被攻击 |
| 普通逃跑 | 100 | 受伤或有噪音 |
| 兽群归队(>16格) | 50 | 离兽群中心超过 16 格 |
| 凝视 | 低 | 8 秒后随机触发 |
| 漫步 | 极低 | 默认行为 |
优先级最高的是生存必需的行为(呼吸、挣扎),其次是安全相关(逃跑、躲避火焰),然后是攻击和社交,最低的是漫步等默认行为。
写给开发者
开发者概览
如果你计划开发模组或修改生物AI,以下技术细节将帮助你快速理解系统架构,避免踩坑。
核心文件索引
| 文件 | 职责 |
|---|---|
ComponentBehavior.cs | 行为抽象基类 |
ComponentBehaviorSelector.cs | 行为选择器(重要性竞争) |
StateMachine.cs | 状态机框架 |
ComponentChaseBehavior.cs | 追击/攻击行为 |
ComponentRunAwayBehavior.cs | 逃跑行为 |
ComponentHerdBehavior.cs | 兽群行为 |
ComponentSteedBehavior.cs | 坐骑行为 |
ComponentPathfinding.cs | 寻路系统 |
ComponentLocomotion.cs | 移动控制 |
ComponentFactors.cs | 影响因素 |
CreatureCategory.cs | 生物分类 |
关键常量速查表
| 常量 | 值 | 文件 |
|---|---|---|
| 最大攻击距离 | 1.75 | ChaseBehavior |
| 主动攻击最低血量 | 0.4 | ChaseBehavior |
| 碰撞追击范围 | 7 | ChaseBehavior |
| 碰撞追击时间 | 7 | ChaseBehavior |
| 被攻击追击范围 | 30 | ChaseBehavior(必定反击) |
| 被攻击追击时间 | 60 | ChaseBehavior(必定反击) |
| 目标触发时间 | 3 | ChaseBehavior |
| 兽群呼叫范围 | 16 | HerdBehavior |
| 寻路拥堵阈值 | 500 | Pathfinding |
| 寻路速度限制 | 0.75 | Pathfinding |
| 坐骑速度等级 | 5 级 | SteedBehavior |
| 甩骑手成功概率 | 5% | DumpRiderBehavior |
模组扩展接口
| 钩子 | 用途 |
|---|---|
OnChaseBehaviorStartChasing | 追击开始时 |
OnChaseBehaviorStopChasing | 追击结束时 |
OnChaseBehaviorAttacked | 攻击命中时 |
ChaseBehaviorScoreTarget | 目标评分时 |
CallNearbyCreaturesHelp | 呼叫附近生物 |
FindHerdCenter | 查找兽群中心 |
OnEatPickable | 进食时 |
OnCreatureAttackHit | 攻击命中 |
OnFactorsUpdate | 影响因素更新 |
IsPredator | 判定掠食者 |
行为选择流程图
ComponentBehaviorSelector.Update()(每帧)
│
├── 遍历所有行为组件
│ └── 取 ImportanceLevel 最高的 → 胜者
│
├── 胜者.IsActive = true(激活)
└── 其余 behavior.IsActive = false(停用)
│
▼
胜者.Update(dt)
│
├── 状态机 TransitionTo()
│ └── Enter → Update → Leave
│
└── 通过移动控制下发移动指令
└── 寻路系统寻路
└── 直接移动 / 搜索路径 / 沿路径移动IyDnlJ/nianooYzkuLrkuI7pgLvovpEKCj4g5LiA5Y+q54Gw54u85Zyo6L+c5aSE5ryr5peg55uu55qE5Zyw5ri46I2h77yM5b+954S25YGc5LiL6ISa5q2l77yM6L2s5aS06ZSB5a6a5LqG5L2g4oCU4oCU6L+Z5LiA6L+e5Liy6KGM5Li66IOM5ZCO77yM5piv5LiA5aWX5Z+65LqOIumHjeimgeaAp+ernuS6iSLnmoTooYzkuLrpgInmi6nns7vnu5/jgILnlJ/lrZjmiJjkuonnmoTnlJ/nialBSeS4jeS9v+eUqOWkjeadgueahOihjOS4uuagke+8jOiAjOaYr+eUqOeugOa0geeahOS8mOWFiOe6p+acuuWItuWunueOsOS6huS4sOWvjOeahOeUn+eJqUFJ44CCCgojIyDmoLjlv4PmnrbmnoQKCiMjIyDph43opoHmgKfnq57kuonmnLrliLYKCueUn+WtmOaImOS6ieeahOeUn+eJqUFJ5LiN5L2/55So5aSN5p2C55qE6KGM5Li65qCR77yM6ICM5piv5L2/55SoKirph43opoHmgKfnq57kuokqKu+8mgoKPiDmr4/luKfvvIzmiYDmnInooYzkuLrorqHnrpfoh6rlt7HnmoTph43opoHmgKfmlbDlgLzvvIzmlbDlgLzmnIDpq5jnmoTpgqPkuKrooYzkuLrooqvmv4DmtLvvvIzlhbbkvZnooYzkuLrlhajpg6jmmoLlgZzjgIIKCiQkClx0ZXh0e+iiq+a/gOa0u+eahOihjOS4un0gPSBcdGV4dHvph43opoHmgKfmnIDpq5jnmoTooYzkuLp9CiQkCgo+IOeUn+eJqeWcqOWQjOS4gOaXtuWIu+WPquiDveWBmuS4gOS7tuS6i+KAlOKAlOimgeS5iOi/veWHu++8jOimgeS5iOmAg+i3ke+8jOimgeS5iOa8q+atpe+8jOS4jeS8muWQjOaXtui/m+ihjOOAguS8mOWFiOe6p+mrmOeahOihjOS4uuS8muWujOWFqOWOi+WItuS9juS8mOWFiOe6p+ihjOS4uu+8jOaJgOS7peeLvOS4jeWPr+iDvei+uei/vei+ueWajuWPq+OAggoKIyMjIOeKtuaAgeacugoK5q+P5Liq6KGM5Li65YaF6YOo5L2/55So54q25oCB5py6566h55CG6Ieq5bex55qE54q25oCB5YiH5o2i44CC54q25oCB5py65pyJ5LiJ5Liq5YWz6ZSu5Yqo5L2c77yaCgotICoq6L+b5YWl54q25oCBKiog4oCUIOWImuWIh+aNouWIsOi/meS4queKtuaAgeaXtuaJp+ihjOS4gOasoQotICoq54q25oCB5pu05pawKiog4oCUIOavj+W4p+aMgee7reaJp+ihjAotICoq56a75byA54q25oCBKiog4oCUIOWIh+aNouWIsOWFtuS7lueKtuaAgeWJjeaJp+ihjOS4gOasoQoKIyMjIOeUn+eJqeWIhuexuwoKfCDnsbvliKsgfCDor7TmmI4gfAp8LS0tLS0tfC0tLS0tLXwKfCDpmYblnLDmjqDpo5/ogIUgfCDni7zjgIHnhorjgIHomY7jgIHni67nrYnpmYblnLDogonpo5/liqjniakgfAp8IOmZhuWcsOaZrumAmueUn+eJqSB8IOeJm+OAgemprOOAgem5v+OAgee+iuetiemZhuWcsOakjemjn+WKqOeJqSB8Cnwg5rC055Sf5o6g6aOf6ICFIHwg6bKo6bG844CB6JmO6bK4562J5rC05Lit5o6g6aOf6ICFIHwKfCDmsLTnlJ/mma7pgJrnlJ/niakgfCDpsojpsbzjgIHpo5/kurrpsbznrYnmsLTkuK3mma7pgJrnlJ/niakgfAp8IOm4n+exuyB8IOm4veWtkOOAgem6u+mbgOOAgem4reetiemjnuemvSB8Cgo+IOWIhuexu+ebtOaOpeW9seWTjei/veWHu+ebruagh+mAieaLqe+8muaOoOmjn+iAheeahCLoh6rliqjov73lh7vnsbvliKsi5Lya5YyF5ZCr5a+55bqU55qE54yO54mp57G75Yir44CCCgojIyDooYzkuLrnu4Tku7blhajop4gKCua4uOaIj+S4reWFseaciee6piAyNiDnp43ooYzkuLrnu4Tku7bvvIzmr4/kuKrnlJ/nianlj6rkvJrmi6XmnInlhbbkuK3kuIDpg6jliIbvvJoKCnwg6KGM5Li6IHwg5Yqf6IO9IHwg5bi46KeB5oul5pyJ6ICFIHwKfC0tLS0tLXwtLS0tLS18LS0tLS0tLS0tLS18Cnwg6L+95Ye75pS75Ye7IHwg5Y+R546w5bm26L+95Ye755uu5qCH77yM5Y+R5Yqo5pS75Ye7IHwg5o6g6aOf6ICFIHwKfCDpgIPot5EgfCDlj5fkvKTlkI7lr7vmib7lronlhajlnLDngrnpgIPot5EgfCDlpJrmlbDpmYblnLDnlJ/niakgfAp8IOWvu+aJvueOqeWutiB8IOS4reeri+eUn+eJqeS4u+WKqOWvu+aJvueOqeWutiB8IOmDqOWIhuS4reeri+eUn+eJqSB8Cnwg6Lqy6YG/546p5a62IHwg5LuO546p5a626ZmE6L+R6YCD56a7IHwg6IOG5bCP55qE55Sf54mpIHwKfCDpmo/mnLrmvKvmraUgfCDml6Dnm67nmoTnmoTpmo/mnLrooYzotbAgfCDmiYDmnInpmYblnLDnlJ/niakgfAp8IOmjnuihjOa8q+a4uCB8IOm4n+exu+maj+acuumjnuihjCB8IOm4n+exuyB8Cnwg5ri45rOz5ryr5ri4IHwg5rC055Sf55Sf54mp6ZqP5py65ri45YqoIHwg6bG857G7IHwKfCDlhb3nvqTot5/pmo8gfCDot5/pmo/lhb3nvqTkuK3lv4Pnp7vliqggfCDnvqTlsYXliqjniakgfAp8IOeJm+e+pOmpsei1tiB8IOiiq+mpsei1tuaXtuenu+WKqCB8IOeJmyB8Cnwg6Lqy6YG/54Gr54SwIHwg6L+c56a756+d54GrIHwg5aSa5pWw55Sf54mpIHwKfCDpo57ooYzpgIPot5EgfCDpgYfliLDljbHpmanpo57otbAgfCDpuJ/nsbsgfAp8IOWHneinhiB8IOebr+edgOebruagh+eciyB8IOWkmuenjeeUn+eJqSB8Cnwg5ZqO5Y+rIHwg5aSc6Ze05ZqO5Y+rIHwg54u8IHwKfCDkuqfljbUgfCDpuJ/nsbvkuqfom4sgfCDpuK3jgIHpuKHnrYkgfAp8IOi3n+maj+WPrOWUpOeJqSB8IOi3n+maj+S4u+S6uiB8IOiiq+mpr+acjeeahOeUn+eJqSB8Cnwg55Sp6aqR5omLIHwg5pyq6amv5pyN55qE6ams55Sp5Lq6IHwg6YeO6amsIHwKfCDlnZDpqpHlk43lupQgfCDlk43lupTpqpHmiYvmjIfku6QgfCDooqvpqa/mnI3nmoTpqawgfAp8IOmhveWbuuWdkOmqkSB8IOmlpemlv+aXtuaLkue7neenu+WKqCB8IOmlpemlv+eahOWdkOmqkSB8Cnwg5rOl5Zyw5omT5ruaIHwg54yq5Zyo5rOl5Zyw5omT5ruaIHwg54yqIHwKfCDnprvmsLTmjKPmiY4gfCDpsbznprvlvIDmsLTlkI7ot7Pot4MgfCDpsbznsbsgfAp8IOi/m+mjnyB8IOWvu+aJvuW5tuWQg+aOiemjn+eJqSB8IOWkmuenjeeUn+eJqSB8Cnwg6bK457G75ZG85ZC4IHwg5rWu5Ye65rC06Z2i5ZG85ZC4IHwg6bK457G7IHwKfCDmuLjms7PpgIPot5EgfCDmsLTnlJ/nlJ/nianpgIPot5EgfCDpsbznsbsgfAoKIyMg6L+95Ye75LiO5pS75Ye76KGM5Li6Cgo+IOi/meaYr+a4uOaIj+S4reacgOaguOW/g+eahOaImOaWl0FJ77yM5Yaz5a6a5LqG5o6g6aOf6ICF5aaC5L2V5Y+R546w44CB6L+95Ye75ZKM5pS75Ye755uu5qCH44CCCgojIyMg5YWz6ZSu5Y+C5pWwCgp8IOWPguaVsCB8IOaVsOWAvCB8IOivtOaYjiB8CnwtLS0tLS18LS0tLS0tfC0tLS0tLXwKfCDmnIDlpKfmlLvlh7vot53nprsgfCAxLjc1IOagvCB8IOi/keaImOaUu+WHu+eahOacieaViOiMg+WbtCB8Cnwg5Li75Yqo5pS75Ye75pyA5L2O6KGA6YePIHwgNDAlIHwg55Sf5ZG95YC85L2O5LqOIDQwJSDml7bkuI3kuLvliqjlj5HotbfmlLvlh7sgfAp8IOeisOaSnuinpuWPkei/veWHu+iMg+WbtCB8IDcg5qC8IHwg6KKr56Kw5pKe5ZCO6L+95Ye755qE6Led56a7IHwKfCDnorDmkp7ov73lh7vmjIHnu63ml7bpl7QgfCA3IOenkiB8IOeisOaSnuinpuWPkeeahOi/veWHu+aMgee7reWkmuS5hSB8Cnwg6KKr5pS75Ye75ZCO6L+95Ye76IyD5Zu0IHwgMzAg5qC8IHwg6KKr5omT5ZCO6L+95aSa6L+c77yI5b+F5a6a5Y+N5Ye75pe277yJIHwKfCDooqvmlLvlh7vlkI7ov73lh7vml7bpl7QgfCA2MCDnp5IgfCDooqvmiZPlkI7ov73lpJrkuYXvvIjlv4Xlrprlj43lh7vml7bvvIkgfAp8IOebruagh+WcqOiMg+WbtOWGheinpuWPkeaXtumXtCB8IDMg56eSIHwg55uu5qCH5Zyo6KeG6YeO5YaF5oyB57utIDMg56eS5omN5Y+R6LW36L+95Ye7IHwKfCDov73lh7vooYzkuLrph43opoHmgKcgfCAyMDAgfCDnlKjkuo7ooYzkuLrnq57kuonnmoTkvJjlhYjnuqcgfAoKPiDnm67moIflv4XpobvlnKjop4bph47lhoXmjIHnu60gMyDnp5LmiY3kvJrooqvov73lh7vvvIzlv6vpgJ/pl6rov4fnmoTnm67moIfkuI3kvJrop6blj5HvvIznu5nkuobnjqnlrrbmvZzooYzmupzotbDnmoTmnLrkvJrjgIIKCiMjIyDkuInnp43ov73lh7vop6blj5HmlrnlvI8KCioq5pa55byP5LiA77ya6Ieq5Yqo6L+95Ye777yI6KeG6YeO5Y+R546w77yJKioKCi0g55m95aSp5ZKM5aSc6Ze055qE6L+95Ye76IyD5Zu05LiN5ZCM77yI5aSc6Ze06YCa5bi45pu05aSn77yJCi0g55uu5qCH6K+E5YiG5YWs5byP77yaCgokJApcdGV4dHvnm67moIfor4TliIZ9ID0gXHRleHR76L+95Ye76IyD5Zu0fSAtIFx0ZXh0e+i3neemu30KJCQKCj4g6Led56a76LaK6L+R6K+E5YiG6LaK6auY44CCCgoqKuaWueW8j+S6jO+8mueisOaSnuinpuWPkSoqCgotIOeUn+eJqeS4juS9oOaTpuiCqeiAjOi/h+aXtu+8jOacieS4gOWumuamgueOh+inpuWPkei/veWHuwotIOi/veWHu+iMg+WbtCA3IOagvO+8jOaMgee7rSA3IOenkgotIOi/meenjei/veWHu+S4jeaYr+aMgeS5heeahOKAlOKAlDcg56eS5ZCO5bCx5Lya5pS+5byDCgoqKuaWueW8j+S4ie+8muiiq+aUu+WHu+WPjeWHuyoqCgrooqvmlLvlh7vlkI7nmoTlj43lh7vliIbkuKTnp43mg4XlhrXvvJoKCnwg5Y+N5Ye75qaC546HIHwg6L+95Ye76IyD5Zu0IHwg5oyB57ut5pe26Ze0IHwg5piv5ZCm5oyB5LmFIHwKfC0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLXwKfCDmpoLnjocgPCAxMDAlIHwgNyDmoLwgfCA3IOenkiB8IOWQpiB8Cnwg5qaC546HID0gMTAwJSB8IDMwIOagvCB8IDYwIOenkiB8IOaYryB8Cgo+IOW9k+WPjeWHu+amgueOh+aYryAxMDAlIOaXtu+8jOi/veWHu+iMg+WbtOS7jiA3IOagvOaatOWinuWIsCAzMCDmoLzvvIzmjIHnu63ml7bpl7Tku44gNyDnp5LmmrTlop7liLAgNjAg56eS77yM6ICM5LiU5Y+Y5oiQ5oyB5LmF6L+95Ye74oCU4oCU6L+Z5bCx5piv5Li65LuA5LmI5omT5LqG5p+Q5Lqb55Sf54mp5ZCO5a6D5Lya5q275ZG96L+95L2g44CCCgojIyMg5pS75Ye75Yik5a6aCgrmlLvlh7vmmK/lkKblkb3kuK3pnIDopoHlkIzml7bmu6HotrPvvJoKMS4g5Lik5Liq55Sf54mp55qE56Kw5pKe55uS5pyJ6YeN5Y+gCjIuIOebruagh+WcqOaUu+WHu+aWueWQkeeahOWJjeaWueaJh+W9ouWMuuWfn+WGhe+8iOmdouWQkeaWueWQkeeCueenryA+IDAuMjXvvIkKMy4g5bCE57q/5qOA5rWL6Led56a7IDwgMS43NSDmoLwKCj4g54K556evID4gMC4yNSDlpKfnuqblr7nlupTliY3mlrkgNzUg5bqm55qE5omH5b2i5Yy65Z+f44CC55Sf54mp5Y+q6IO95pS75Ye75q2j5YmN5pa557qmIDc1IOW6puWGheeahOebruagh+OAggoKIyMjIOWHu+adgOWQjuihjOS4ugoK5b2T6L+95Ye755qE55uu5qCH5q275Lqh5pe277yM5aaC5p6c6K+l55Sf54mp5pyJ6L+b6aOf6KGM5Li677yM5Lya5ZyoIDEtMyDnp5LlkI7np7vliqjliLDlsLjkvZPkvY3nva7ov5vpo5/jgIIKCiMjIOmAg+i3keihjOS4ugoKIyMjIOinpuWPkeadoeS7tgoKfCDop6blj5HmnaHku7YgfCDor7TmmI4gfAp8LS0tLS0tLS0tfC0tLS0tLXwKfCDnlJ/lkb3lgLzkuIvpmY0gfCDlj5fliLDkvKTlrrPlkI4gfAp8IOaUu+WHu+iAheWcqCA2IOagvOWGhSB8IOi3neemu+i2s+Wkn+i/keaJjeacieWogeiDgSB8Cnwg6auY5YiG6LSd5Zmq6Z+zIHwg5ZCs5Yiw5beo5aSn5ZON5aOw5Lmf5Lya6YCD6LeRIHwKCiMjIyDpgIPot5Hph43opoHmgKcKCiQkClx0ZXh0e+mAg+i3kemHjeimgeaAp30gPSAKXGJlZ2lue2Nhc2VzfQozMDAgJiBcdGV4dHvnlJ/lkb3lgLwgPCDkvY7ooYDph4/pmIjlgLx9IFxcCjEwMCAmIFx0ZXh0e+WFtuS7luaDheWGtX0KXGVuZHtjYXNlc30KJCQKCj4g5L2O6KGA6YeP6YCD6LeR55qE6YeN6KaB5oCn77yIMzAw77yJ6auY5LqO6L+95Ye755qE6YeN6KaB5oCn77yIMjAw77yJ77yM5Y+X5Lyk5Lil6YeN55qE55Sf54mp5Lya5LyY5YWI6YCD6LeR6ICM6Z2e5Y+N5Ye744CC5omT5b6X6L+H5bCx5omT77yM5omT5LiN6L+H5bCx6LeR44CCCgojIyMg5a+75om+5a6J5YWo5Zyw54K5CgrpgIPot5Hml7bvvIznlJ/niankvJrmkJzntKIgMzAg5Liq5YCZ6YCJ5L2N572u77yM6YCJ5oup6K+E5YiG5pyA6auY55qE5L2c5Li66YCD6LeR55uu5qCH77yaCgokJApcdGV4dHvlronlhajlnLDngrnor4TliIZ9ID0gMyBcdGltZXMgXHRleHR76Led5pS75Ye76ICF6Led56a7fSAtIFx0ZXh0e+i3neWFvee+pOi3neemu30gKyAxLjUgXHRpbWVzIFx0ZXh0e+i3neWZqumfs+a6kOi3neemu30gLSA0IFx0aW1lcyBcdGV4dHvmsLTmlrnlnZfmg6nnvZp9CiQkCgotIOi3neaUu+WHu+iAhei2iui/nOi2iuWlvQotIOi3neWFvee+pOWkqui/nOS8muaJo+WIhu+8iOS4jeaDs+emu+e+pOWkquS5he+8iQotIOi3neWZqumfs+a6kOi2iui/nOi2iuWlvQotIOawtOaWueWdl+acieaDqee9mu+8iOmZhuWcsOeUn+eJqeS4jeaEv+i3s+WFpeawtOS4re+8iQoKIyMg5YW9576k6KGM5Li6CgojIyMg5YW9576k5Lit5b+D6K6h566XCgrmr4/kuKrnlJ/nianlrprmnJ/orqHnrpfoh6rlt7HmiYDlsZ7lhb3nvqTnmoTkuK3lv4PkvY3nva7vvJoKCiQkClx0ZXh0e+WFvee+pOS4reW/g30gPSBcZnJhY3sxfXtufSBcc3VtX3tpPTF9XntufSBcdGV4dHvlkIzkvLTkvY3nva59X2kKJCQKCuWPquaciei3neemu+WcqCLlhb3nvqTojIPlm7Qi5YaF55qE5ZCM5ZCN56ew5ZCM5Ly05omN5Y+C5LiO6K6h566X44CCCgojIyMg6Led56a75LiO6YeN6KaB5oCnCgp8IOi3neWFvee+pOS4reW/g+i3neemuyB8IOmHjeimgeaApyB8IOivtOaYjiB8CnwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tfAp8IOKJpCAxMCDmoLwgfCAwIHwg5LiN6Kem5Y+RIHwKfCA+IDEwIOagvCB8IDEgfCDmnoHkvY4gfAp8ID4gMTIg5qC8IHwgMyB8IOS9jiB8CnwgPiAxNiDmoLwgfCA1MCB8IOS4reetiSB8CnwgPiAyMCDmoLwgfCAyNTAgfCDmnoHpq5ggfAoKPiDot53nprvlhb3nvqTotorov5zvvIzlvZLpmJ/nmoTph43opoHmgKfotorpq5jjgIIyMCDmoLzml7bph43opoHmgKfovr7liLAgMjUw77yM6auY5LqO6L+95Ye755qEIDIwMOKAlOKAlOemu+e+pOWkqui/nOeahOaOoOmjn+iAheS8muaUvuW8g+i/veWHu++8jOWFiOWbnuWFvee+pOOAggoKIyMjIOWRvOWPq+WQjOS8tAoK6KKr5pS75Ye75pe277yM55Sf54mp5Lya5ZG85Y+rIDE2IOagvOiMg+WbtOWGheeahOWQjOWFvee+pOWQjOS8tOadpeW4ruW/meOAggoKPiDov5nlsLHmmK/kuLrku4DkuYjmlLvlh7vkuIDlj6rni7zkvJrlvJXmnaXmlbTnvqTni7zigJTigJQxNiDmoLzojIPlm7TlhoXnmoTlkIzkvLTpg73kvJrooqvlkbzlj6vov4fmnaXkuIDotbfmlLvlh7vkvaDjgIIKCiMjIOWdkOmqkeihjOS4ugoKIyMjIOWdkOmqkeWTjeW6lAoK6KKr6amv5pyN55qE5Z2Q6aqR5pyJIDUg57qn6YCf5bqm77yaCgp8IOetiee6pyB8IOmAn+W6puWAvCB8IOivtOaYjiB8CnwtLS0tLS18LS0tLS0tLS18LS0tLS0tfAp8IDAgfCAtMC4zMyB8IOWQjumAgCB8CnwgMSB8IDAgfCDlgZzmraIgfAp8IDIgfCAwLjMzIHwg5oWi6YCf6KGM6LWwIHwKfCAzIHwgMC42NiB8IOS4remAn+WllOi3kSB8CnwgNCB8IDEuMCB8IOWFqOmAn+mjnumpsCB8CgoqKumAn+W6puihsOWHjyoq77yaCi0g5pyA6auY6YCf5bqm57u05oyBIDgtMTIg56eS5ZCO6Ieq5Yqo5YeP6YCf5LiA57qnCi0g5pyA5aSn6YCf5bqmIDAuNzUg56eS5peg56Kw5pKe5pe26Ieq5Yqo6ZmN6YCfCi0g5YGc5rue5pe277yI6YCf5bqm5Li6IDAg5LiU56Kw5pKe5Y+Y5YyW5bCP77yJMC43NSDnp5LlkI7oh6rliqjliqDpgJ/liLAgMSDnuqcKCioq6aqR5omL5a+75om+6IyD5Zu0KirvvJoKLSDkuLvliqjlr7vmib7pqpHmiYvvvJo3IOagvAotIOetieW+heeKtuaAge+8mjYg5qC8CgojIyMg55Sp6aqR5omLCgrmnKrpqa/mnI3nmoTpqazkvJror5Xlm77miorpqpHmiYvnlKnkuIvmnaXvvJoKCnwg6KGM5Li6IHwg6K+05piOIHwKfC0tLS0tLXwtLS0tLS18Cnwg5Lmx6LezIHwg6ZqP5py65Lmx6LeRICsg6aKR57mB6Lez6LeDIHwKfCDni4LlpZQgfCDlv6vpgJ/nm7Tnur/lhrLliLogMTUg5qC8IHwKfCDlkYbnq4sgfCDlkYbnq4vkuI3liqjvvIzmr48gMiDnp5Lpmo/mnLrliIfmjaLooYzkuLogfAoKKirmpoLnjocqKu+8mgotIDUlIOamgueOh+ebtOaOpeaKiumqkeaJi+eUqeS4iwotIDI1JSDmpoLnjofkvKTlrrPpqpHmiYvvvIgwLjA1IOS8pOWus++8iQotIDI1JSDmpoLnjofpmo/mnLrliIfmjaLnlKnkurrmlrnlvI8KCiMjIyDpob3lm7rlnZDpqpEKCuW9k+WdkOmqkemlsemjn+W6puS4uiAwIOaXtu+8jOS8muWPmOW+lyLpob3lm7oi77yaCgotIOmqkeaJi+WPkeWHuuenu+WKqOaMh+S7pOaXtu+8jOaRh+WktOW5tuWPkeWHuueXm+iLpueahOWjsOmfswotIOaLkue7neenu+WKqAotIOaMgee7reaXtumXtO+8mumaj+acuiA2MC0xMjAg56eSCi0g6ZqP5py65qaC546H6Kem5Y+RCgo+IOmlv+edgOiCmuWtkOeahOWdkOmqkeS4jeS8muWQrOivneOAggoKIyMg5YW25LuW6KGM5Li66K+m6KejCgojIyMg6Lqy6YG/54Gr54SwCgp8IOWPguaVsCB8IOWAvCB8CnwtLS0tLS18LS0tLS18Cnwg5qOA5p+l6Ze06ZqUIHwgMSDnp5IgfAp8IOW/veeVpeamgueOhyB8IDEuNSUgfCDpmo/mnLrlv73nlaXngavnhLAgMjAg56eSIHwKfCDpq5jliIbml7bph43opoHmgKcgfCAyNTAgfCDljbHpmannrYnnuqfpq5ggfAoK6Lqy6YG/54Gr54Sw5pyJ5Lik56eN5qih5byP77yaCi0gKirov5znprsqKu+8muebtOaOpeacnei/nOemu+evneeBq+eahOaWueWQkei1sAotICoq57uV6KGMKirvvJrlm7Tnu5Xnr53ngavovazlnIgKCj4gMS41JSDnmoTmpoLnjofnlJ/niankvJrml6Dop4bngavnhLDlhrLov4fmnaXigJTigJTov5nlsLHmmK/kuLrku4DkuYjlgbblsJTmnInliqjniankvJrnqb/ov4fkvaDnmoTnr53ngavmlLvlh7vkvaDjgIIKCiMjIyDlh53op4booYzkuLoKCnwg5Y+C5pWwIHwg5YC8IHwKfC0tLS0tLXwtLS0tLXwKfCDop6blj5Hlu7bov58gfCA4IOenkuWQjumaj+acuuinpuWPkSB8Cnwg5oyB57ut5pe26Ze0IHwgNi0xMiDnp5IgfAp8IOWHneinhueOqeWutuamgueOhyB8IDEwMCUgfAp8IOWHneinhuWFtuS7lueUn+eJqeamgueOhyB8IDI1JSB8Cgo+IOWHneinhueOqeWutuaXtuivhOWIhiDDlzEwMO+8jOaJgOS7peeUn+eJqeabtOWuueaYk+ebr+edgOeOqeWutueci+OAgui/meWwseaYr+S4uuS7gOS5iOS9oOaAu+inieW+l+WKqOeJqeWcqOeci+S9oOKAlOKAlOWboOS4uuWug+S7rOecn+eahOWcqOeci+OAggoKIyMjIOWajuWPq+ihjOS4ugoKfCDlj4LmlbAgfCDlgLwgfAp8LS0tLS0tfC0tLS0tfAp8IOinpuWPkeadoeS7tiB8IOWknOaZmu+8iOWkqeWFiSA8IDAuMe+8iSB8Cnwg6Kem5Y+R5qaC546HIHwgMS41JSDDlyDmr4/luKcgfAp8IOaMgee7reaXtumXtCB8IDUtNiDnp5IgfAp8IOS8oOaSreiMg+WbtCB8IDEwIOagvCB8CgojIyMg5Lqn5Y216KGM5Li6Cgp8IOWPguaVsCB8IOWAvCB8CnwtLS0tLS18LS0tLS18Cnwg5a+76Lev6IyD5Zu0IHwgMC41IOagvCB8Cnwg6KGM6LWw6YCf5bqmIHwgMC40LTAuNiB8Cnwg5Lqn5Y215pe26Ze0IHwgMyDnp5IgfAp8IOS6p+WNteS9jee9riB8IOWJjeaWuSAzIOagvO+8jOaciemaj+acuuWBj+enuyB8CgojIyMg6L+b6aOf6KGM5Li6Cgp8IOWPguaVsCB8IOWAvCB8CnwtLS0tLS18LS0tLS18Cnwg6KeF6aOf6IyD5Zu0IHwgMTYg5qC8IHwKfCDmkJzntKLpl7TpmpQgfCAyLTQg56eSIHwKfCDov5vpo5/ml7bpl7QgfCA0LTUg56eSIHwKfCDppbHpo5/luqblop7liqAgfCArMSB8Cnwg6aWl6aW/5pe26YCf5bqmIHwgMC41LTAuNyB8Cnwg5LiN6aW/5pe26YCf5bqmIHwgMC41IHwKCiMjIyDnprvmsLTmjKPmiY4KCumxvOemu+W8gOawtCAzIOenkuWQjuW8gOWni+eWr+eLguaMo+aJju+8mgoKLSDph43opoHmgKforr7kuLogMTAwMO+8iOWFqOa4uOaIj+acgOmrmO+8iQotIOS9v+eUqOWZquWjsOWHveaVsOiuoeeul+aRhuWKqOinkuW6pgotIDIuNSUg5qaC546H5q+P5bin6Lez6LeD5LiA5qyhCgo+IOmxvOemu+awtOWQjueahOaMo+aJjuaYr+WFqOa4uOaIj+acgOmrmOS8mOWFiOe6p+eahOihjOS4uuKAlOKAlOavlOS7u+S9leihjOS4uumDvemrmO+8jOehruS/nemxvOS4gOWumuS8muaLvOWRveaDs+i3s+WbnuawtOmHjOOAggoKIyMjIOmyuOexu+WRvOWQuAoK6bK46bG86ZyA6KaB5a6a5pyf5rWu5Ye65rC06Z2i5ZG85ZC477yaCgokJApcdGV4dHvlkbzlkLjph43opoHmgKd9ID0gXHRleHR7Y2xhbXB9KDAsIDQwMCwgXHRleHR7c2F0fShcZnJhY3swLjc1IC0gXHRleHR756m65rCU5YC8fX17MC43NX0pKQokJAoKPiBg6aWx5ZKM5Ye95pWwYO+8iGBzYXQoeClg77yJ562J5Lu35LqOIGBjbGFtcCh4LCAwLCAxKWDvvIzmiorlgLzpmZDliLblnKggMCDliLAgMSDkuYvpl7TjgIIKPgo+IOW9k+epuuawlOWAvOS7jiAwLjc1IOmZjeWIsCAwIOaXtu+8jOWRvOWQuOeahOmHjeimgeaAp+S7jiAwIOe6v+aAp+WinuWKoOWIsCA0MDDjgILov5nmmK/lhajmuLjmiI/nrKzkuozpq5jnmoTkvJjlhYjnuqfvvIzku4XmrKHkuo7psbznmoTnprvmsLTmjKPmiY7jgIIKCiMjIOWvu+i3r+ezu+e7nwoKIyMjIOWvu+i3r+eKtuaAgQoKfCDnirbmgIEgfCDor7TmmI4gfAp8LS0tLS0tfC0tLS0tLXwKfCDlgZzmraIgfCDkuI3np7vliqggfAp8IOebtOaOpeenu+WKqCB8IOebtOe6v+acneebruagh+i1sO+8iOaXoOmanOeijeaXtu+8iSB8Cnwg5pCc57Si6Lev5b6EIHwg5a+75om+57uV5byA6Zqc56KN55qE6Lev5b6EIHwKfCDmsr/ot6/lvoTnp7vliqggfCDmjInot6/lvoTngrnpgJDngrnliY3ov5sgfAp8IOmaj+acuuenu+WKqCB8IOaJvuS4jeWIsOi3r+W+hOaXtumaj+acuuS5sei1sO+8jOacgOWkmiAzIOasoSB8Cnwg5Y2h5L2PIHwg5a6M5YWo5peg5rOV56e75YqoIHwKCj4g5rK/6Lev5b6E6KGM6LWw5pe26YCf5bqm6KKr6ZmQ5Yi25Li6IDAuNzXvvIzljbPkvb/nlJ/niannmoTmnIDpq5jpgJ/luqblpKfkuo4gMC43NeOAgui/meWwseaYr+S4uuS7gOS5iOeUn+eJqeWcqOWkjeadguWcsOW9ouS4iueci+i1t+adpeavlOW5s+WcsOS4iuaFouOAggoKIyMjIOWvu+i3r+aLpeWgteacuuWItgoK5Li65LqG6Ziy5q2i5aSn6YeP55Sf54mp5ZCM5pe25a+76Lev5a+86Ie05Y2h6aG/77yM57O757uf5pyJIuWvu+i3r+aLpeWgtSLmnLrliLbvvJoKCi0g5q+P5qyh6Lev5b6E5pCc57Si5aKe5Yqg5oul5aC15YC8Ci0g5oul5aC15YC85q+PIDAuMDgtMC4xMiDnp5LoobDlh48gMjAKLSDmi6XloLXlgLzotoXov4cgNTAwIOaXtu+8jOaWsOeahOWvu+i3r+ivt+axguS8muiiq+i3s+i/hwoKPiDlvZPljLrln5/lhoXnlJ/nianlpKrlpJrml7bvvIzlr7vot6/kvJrlj5jmhaLjgILov5nmmK/kuIDnp43mgKfog73kv53miqTmnLrliLbjgIIKCiMjIOW9seWTjeWboOe0oOezu+e7nwoK55Sf54mp5pyJ5aSa56eN5bGe5oCn5Zug57Sg5b2x5ZON5YW26KGM5Li65ZKM5bGe5oCn77yaCgp8IOWboOe0oCB8IOivtOaYjiB8CnwtLS0tLS18LS0tLS0tfAp8IOWKm+mHj+WboOe0oCB8IOW9seWTjeaUu+WHu+WKm+etiSB8Cnwg6YCf5bqm5Zug57SgIHwg5b2x5ZON56e75Yqo6YCf5bqmIHwKfCDppaXppb/lm6DntKAgfCDlvbHlk43ppaXppb/nm7jlhbPooYzkuLogfAp8IOmfp+aAp+WboOe0oCB8IOW9seWTjeS8pOWus+aKteaKlyB8Cnwg5YW25LuW5Zug57SgIHwg5pS75Ye76YCf5bqm44CB5oyW5o6Y6YCf5bqm44CB6L+95Ye76IyD5Zu0562JIHwKCuWboOe0oOeahOe0r+enr+aWueW8j++8mgoKJCQKXHRleHR75pyA57uI5YC8fSA9IFx0ZXh0e+WfuuehgOWAvH0gXHRpbWVzIFxwcm9kIChcdGV4dHvkuZjms5Xlm6DntKB9KSArIFxzdW0gKFx0ZXh0e+WKoOazleWboOe0oH0pCiQkCgo+IOS5mOazleWboOe0oOebuOS5mOWPoOWKoO+8jOWKoOazleWboOe0oOebuOWKoOWPoOWKoOOAguWkmuS4quWinuebiueahOaViOaenOaYr+ebuOS5mOeahO+8jOaJgOS7peS4pOS4qiArMjAlIOeahOmAn+W6puWinuebiuWKoOi1t+adpeS4jeaYryArNDAl77yM6ICM5pivIMOXMS4yIMOXIDEuMiA9ICs0NCXjgIIKCiMjIOmHjeimgeaAp+S8mOWFiOe6p+aAu+iniAoKfCDooYzkuLogfCDph43opoHmgKcgfCDop6blj5HmnaHku7YgfAp8LS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLXwKfCDnprvmsLTmjKPmiY4gfCAxMDAwIHwg6bG856a75rC0ID4gMyDnp5IgfAp8IOmyuOexu+WRvOWQuCB8IDAtNDAwIHwg56m65rCU5YC8IDwgMC43NSDml7bnur/mgKflop7plb8gfAp8IOS9juihgOmHj+mAg+i3kSB8IDMwMCB8IOeUn+WRveWAvOS9juS6juS9juihgOmHj+mYiOWAvCB8Cnwg6Lqy6YG/54Gr54SwIHwgMjUwIHwg54Gr54Sw6K+E5YiGID4gMC41IHwKfCDlhb3nvqTlvZLpmJ/vvIg+MjDmoLzvvIkgfCAyNTAgfCDnprvlhb3nvqTkuK3lv4PotoXov4cgMjAg5qC8IHwKfCDov73lh7vmlLvlh7sgfCAyMDAgfCDmnInnm67moIfmiJbooqvmlLvlh7sgfAp8IOaZrumAmumAg+i3kSB8IDEwMCB8IOWPl+S8pOaIluacieWZqumfsyB8Cnwg5YW9576k5b2S6Zif77yIPjE25qC877yJIHwgNTAgfCDnprvlhb3nvqTkuK3lv4PotoXov4cgMTYg5qC8IHwKfCDlh53op4YgfCDkvY4gfCA4IOenkuWQjumaj+acuuinpuWPkSB8Cnwg5ryr5q2lIHwg5p6B5L2OIHwg6buY6K6k6KGM5Li6IHwKCj4g5LyY5YWI57qn5pyA6auY55qE5piv55Sf5a2Y5b+F6ZyA55qE6KGM5Li677yI5ZG85ZC444CB5oyj5omO77yJ77yM5YW25qyh5piv5a6J5YWo55u45YWz77yI6YCD6LeR44CB6Lqy6YG/54Gr54Sw77yJ77yM54S25ZCO5piv5pS75Ye75ZKM56S+5Lqk77yM5pyA5L2O55qE5piv5ryr5q2l562J6buY6K6k6KGM5Li644CCCgoKIyMg5YaZ57uZ5byA5Y+R6ICFCgo8ZGV0YWlscz4KPHN1bW1hcnk+5byA5Y+R6ICF5qaC6KeIPC9zdW1tYXJ5PgoKPiDlpoLmnpzkvaDorqHliJLlvIDlj5HmqKHnu4TmiJbkv67mlLnnlJ/nialBSe+8jOS7peS4i+aKgOacr+e7huiKguWwhuW4ruWKqeS9oOW/q+mAn+eQhuino+ezu+e7n+aetuaehO+8jOmBv+WFjei4qeWdkeOAggoKIyMjIOaguOW/g+aWh+S7tue0ouW8lQoKfCDmlofku7YgfCDogYzotKMgfAp8LS0tLS0tfC0tLS0tLXwKfCBgQ29tcG9uZW50QmVoYXZpb3IuY3NgIHwg6KGM5Li65oq96LGh5Z+657G7IHwKfCBgQ29tcG9uZW50QmVoYXZpb3JTZWxlY3Rvci5jc2AgfCDooYzkuLrpgInmi6nlmajvvIjph43opoHmgKfnq57kuonvvIkgfAp8IGBTdGF0ZU1hY2hpbmUuY3NgIHwg54q25oCB5py65qGG5p62IHwKfCBgQ29tcG9uZW50Q2hhc2VCZWhhdmlvci5jc2AgfCDov73lh7sv5pS75Ye76KGM5Li6IHwKfCBgQ29tcG9uZW50UnVuQXdheUJlaGF2aW9yLmNzYCB8IOmAg+i3keihjOS4uiB8CnwgYENvbXBvbmVudEhlcmRCZWhhdmlvci5jc2AgfCDlhb3nvqTooYzkuLogfAp8IGBDb21wb25lbnRTdGVlZEJlaGF2aW9yLmNzYCB8IOWdkOmqkeihjOS4uiB8CnwgYENvbXBvbmVudFBhdGhmaW5kaW5nLmNzYCB8IOWvu+i3r+ezu+e7nyB8CnwgYENvbXBvbmVudExvY29tb3Rpb24uY3NgIHwg56e75Yqo5o6n5Yi2IHwKfCBgQ29tcG9uZW50RmFjdG9ycy5jc2AgfCDlvbHlk43lm6DntKAgfAp8IGBDcmVhdHVyZUNhdGVnb3J5LmNzYCB8IOeUn+eJqeWIhuexuyB8CgojIyMg5YWz6ZSu5bi46YeP6YCf5p+l6KGoCgp8IOW4uOmHjyB8IOWAvCB8IOaWh+S7tiB8CnwtLS0tLS18LS0tLS18LS0tLS0tfAp8IOacgOWkp+aUu+WHu+i3neemuyB8IDEuNzUgfCBDaGFzZUJlaGF2aW9yIHwKfCDkuLvliqjmlLvlh7vmnIDkvY7ooYDph48gfCAwLjQgfCBDaGFzZUJlaGF2aW9yIHwKfCDnorDmkp7ov73lh7vojIPlm7QgfCA3IHwgQ2hhc2VCZWhhdmlvciB8Cnwg56Kw5pKe6L+95Ye75pe26Ze0IHwgNyB8IENoYXNlQmVoYXZpb3IgfAp8IOiiq+aUu+WHu+i/veWHu+iMg+WbtCB8IDMwIHwgQ2hhc2VCZWhhdmlvcu+8iOW/heWumuWPjeWHu++8iSB8Cnwg6KKr5pS75Ye76L+95Ye75pe26Ze0IHwgNjAgfCBDaGFzZUJlaGF2aW9y77yI5b+F5a6a5Y+N5Ye777yJIHwKfCDnm67moIfop6blj5Hml7bpl7QgfCAzIHwgQ2hhc2VCZWhhdmlvciB8Cnwg5YW9576k5ZG85Y+r6IyD5Zu0IHwgMTYgfCBIZXJkQmVoYXZpb3IgfAp8IOWvu+i3r+aLpeWgtemYiOWAvCB8IDUwMCB8IFBhdGhmaW5kaW5nIHwKfCDlr7vot6/pgJ/luqbpmZDliLYgfCAwLjc1IHwgUGF0aGZpbmRpbmcgfAp8IOWdkOmqkemAn+W6puetiee6pyB8IDUg57qnIHwgU3RlZWRCZWhhdmlvciB8Cnwg55Sp6aqR5omL5oiQ5Yqf5qaC546HIHwgNSUgfCBEdW1wUmlkZXJCZWhhdmlvciB8CgojIyMg5qih57uE5omp5bGV5o6l5Y+jCgp8IOmSqeWtkCB8IOeUqOmAlCB8CnwtLS0tLS18LS0tLS0tfAp8IGBPbkNoYXNlQmVoYXZpb3JTdGFydENoYXNpbmdgIHwg6L+95Ye75byA5aeL5pe2IHwKfCBgT25DaGFzZUJlaGF2aW9yU3RvcENoYXNpbmdgIHwg6L+95Ye757uT5p2f5pe2IHwKfCBgT25DaGFzZUJlaGF2aW9yQXR0YWNrZWRgIHwg5pS75Ye75ZG95Lit5pe2IHwKfCBgQ2hhc2VCZWhhdmlvclNjb3JlVGFyZ2V0YCB8IOebruagh+ivhOWIhuaXtiB8CnwgYENhbGxOZWFyYnlDcmVhdHVyZXNIZWxwYCB8IOWRvOWPq+mZhOi/keeUn+eJqSB8CnwgYEZpbmRIZXJkQ2VudGVyYCB8IOafpeaJvuWFvee+pOS4reW/gyB8CnwgYE9uRWF0UGlja2FibGVgIHwg6L+b6aOf5pe2IHwKfCBgT25DcmVhdHVyZUF0dGFja0hpdGAgfCDmlLvlh7vlkb3kuK0gfAp8IGBPbkZhY3RvcnNVcGRhdGVgIHwg5b2x5ZON5Zug57Sg5pu05pawIHwKfCBgSXNQcmVkYXRvcmAgfCDliKTlrprmjqDpo5/ogIUgfAoKIyMjIOihjOS4uumAieaLqea1geeoi+WbvgoKYGBgCkNvbXBvbmVudEJlaGF2aW9yU2VsZWN0b3IuVXBkYXRlKCnvvIjmr4/luKfvvIkKICAgIOKUggogICAg4pSc4pSA4pSAIOmBjeWOhuaJgOacieihjOS4uue7hOS7tgogICAg4pSCICAgICDilJTilIDilIAg5Y+WIEltcG9ydGFuY2VMZXZlbCDmnIDpq5jnmoQg4oaSIOiDnOiAhQogICAg4pSCCiAgICDilJzilIDilIAg6IOc6ICFLklzQWN0aXZlID0gdHJ1Ze+8iOa/gOa0u++8iQogICAg4pSU4pSA4pSAIOWFtuS9mSBiZWhhdmlvci5Jc0FjdGl2ZSA9IGZhbHNl77yI5YGc55So77yJCiAgICDilIIKICAgIOKWvArog5zogIUuVXBkYXRlKGR0KQogICAg4pSCCiAgICDilJzilIDilIAg54q25oCB5py6IFRyYW5zaXRpb25UbygpCiAgICDilIIgICAgIOKUlOKUgOKUgCBFbnRlciDihpIgVXBkYXRlIOKGkiBMZWF2ZQogICAg4pSCCiAgICDilJTilIDilIAg6YCa6L+H56e75Yqo5o6n5Yi25LiL5Y+R56e75Yqo5oyH5LukCiAgICAgICAgICDilJTilIDilIAg5a+76Lev57O757uf5a+76LevCiAgICAgICAgICAgICAgICDilJTilIDilIAg55u05o6l56e75YqoIC8g5pCc57Si6Lev5b6EIC8g5rK/6Lev5b6E56e75YqoCmBgYAo8L2RldGFpbHM+
