diff --git a/AGENTS.md b/AGENTS.md index d43435b4a..b0e781aa8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,5 +1,19 @@ # 项目通用开发规则 +- `CodexOutput/` 仅用于本地开发文档、评审及验证产物,不得纳入 Git 提交/推送、服务器上传、部署或发布包;不得使用 `git add -f` 强制加入。已被 Git 跟踪的内容仅取消跟踪,保留本地文件及现有修改。 + +- 2026-10-10用户要求开发后读取并执行:[PlayFab到KV-存量核查纠偏与开发后检查执行要求](CodexOutput/PlayFab到KV-存量核查纠偏与开发后检查执行要求-2026-10-10.md)。开发会话完成当前批次后必须读取本文,将存量核查纳入已有唯一TODO;后续每批开发及独立AI复核完成后执行其中第六部分的受影响范围自检,本轮核查纠偏完成后再做最终汇总检查,并在既有实施日志记录范围、证据和未闭合项。不能仅记录“已读”或用AI报告代替开发端检查;已有匹配hash的评审复用,不每批重复全工程扫描。发现超出已审边界的问题先补完整方案评审,不扩大业务重构或删除许可。检查通过且仍有已授权工作时继续,不停等用户催促。 + +- 2026-10-10用户明确要求持续执行:阻塞解除后,只要下一步工作仍在当前客户端侧且已有授权,就立即继续,不能因阶段汇报、更新文档、完成一个检查点/模块或本批审核通过而结束执行、等待用户再说“继续”。按唯一TODO串行推进;必要方案评审和独立AI代码复核由当前侧主动完成,复核通过后继续下一项,已有匹配hash的报告复用。遇到局部阻塞先保留证据并继续不依赖它的已授权工作;只有确实需要用户裁决/外部交付且无其他可推进项、用户明确暂停,或授权范围内工作全部完成时才停止,并说明具体原因。此规则覆盖旧的逐模块停下等人工review节奏,不免除编码前完整方案评审,不扩大1:1迁移、服务器只读、保留工作树及暂不打包边界。 + +- 2026-10-09最新用户授权:因人工难以阅读整批差异,使用独立AI代码review承接本次模块review,参考裁决后继续后续。模块仍串行,编码前完整方案评审不省略;每模块代码与必要验证完成后由AI复核,发现问题先修本模块,通过后继续。已有匹配当前hash的独立AI报告优先复用,不重复送审;未定业务合同、行为差异或必须由用户裁决的问题仍集中说明。本授权不构成服务器修改、业务优化、整文件回滚或打包许可,也不冒充正式全链验收。 + +- 2026-10-09用户再次确认:PlayerKV精简仍受全流程1:1平移规则约束,不是架构升级或业务重构授权。只核减本次迁移新增且已被等价替换的重复实现;先列原版→当前→目标的方法、数据及顺序对照,再评审实施。已知行为偏差必须列入唯一模块TODO,未验证不得宣称无漂移;不因服务器暂未交付擅自改变业务、永久冻结功能或扩大改造范围。 + +- 当前执行边界(2026-10-08本轮用户指令):保留旧 PlayFabUserService、AggUserService 原实现,新增 KV 服务承接迁移功能;保留现有改动,不整文件回滚。下条此前记录的“最终删除旧类”不构成本轮删除许可,也不作为当前方案前提。先区分既有共用接口、原类行为差异和KV专用实现;冲突范围完成具体方案评审后再改,不继续向旧PF添加KV职责。核对记录见 CodexOutput/upserver/B3BatchMigration/M2/M2-保留旧PF决议与当前评审工作树核对-2026-10-08.md。 + +- PlayFabUserService 是迁移完成后要移除的旧实现,不是 KV 的宿主或最终双后端架构。迁移期间保留旧类仅用于原行为对照及尚未迁出的有效消费者;不得再为 KV 加接口、partial、验证构造器或加载分支。KVUserService / AggKVUserService / DevKVUserService 独立承接原能力,相关消费者与有效验证迁完后删除旧 PF 实现及其迁移残留。保持原业务行为不等于永久保留旧类;不整文件回滚,不覆盖用户编辑,不提前删除仍在使用的功能。 + - KV模式的迁移目标是由KV管理器及其接线承接原PlayFab相关能力,不只迁个人存档;等级榜、公开资料、好友和匹配是原PlayFab调用的既有功能,不得当作新增产品需求、默认延期或直接转交服务端。先核客户端已有KV能力及等价调用映射;只有明确证实缺少必要能力时,才把具体接口证据集中写入沟通文档。不得反复要求用户确认“是否存KV”、新ID或原邮件流程。已审同合同替换连续实施,确有新合同或架构差异时一次合并评审,避免逐功能送审。 - 整个迁移流程、所有阶段与批次均只做平移,不限于 M2。全部迁移完成前,仅修改完成迁移所必需的存储、身份和接口接线,保留原业务规则、调用顺序、同步/异步方式、返回值、异常处理和界面流程。不得夹带额外业务修正、优化或代码重构;不得以“更安全”“更合理”或“顺手修复”为由改变原逻辑。 - 发现原有业务缺陷、代码结构问题或可优化点,统一记录到迁移完成后的待办,不在任何迁移阶段穿插处理。必须等整个迁移流程全部完成后,再由用户另行授权修正;单个阶段完成不构成提前修正的许可。此前方案或评审包含此类扩展时,以此规则及用户最新要求为准。 @@ -7,3 +21,41 @@ - 在满足已确认的功能、正确性和必要安全边界的前提下,优先选择最简单、最直观、最容易维护的实现。抽象应服务于实际调用者;不要为假设中的扩展增加接口、适配器、管理器、状态机或重复保护层。 - 修改代码前完成相关方案的完整评审,记录裁决和开发边界。评审新增抽象时,说明它解决的具体问题、实际调用点,以及为何复用或小幅修改现有实现不足;无法说明必要性的层次不要引入。 - 同一事实保持单一来源,同一业务流程避免多重开关和重复状态。迁移中的临时路径须登记,最终通关前恢复或清理;最终代码删除闲置实现,但保留仍在使用的原有功能。 +- 原设计是迁移基准,尽量做到 1:1 平移:优先复用原方法、业务调用链和初始化入口,仅替换必要的数据来源、身份值和存储接口。不得以迁移为由过度设计、升级架构,或另建与原流程并行的解码、模块装配、初始化和状态管理体系。只有经源码证实无法复用的具体差异才进入集中评审,说明最小改动及行为影响;不得先增加层次再要求原业务适配。已经引入的重复实现须列入方案修订,完整评审并验证等价后再替换和清理,不能直接删除仍在使用的代码。 +- 2026-10-08历史节奏(已由2026-10-09独立AI模块review授权、2026-10-10持续执行规则替代):原要求每模块完成后停下等人工review。当前仍按模块串行、先完整评审再编码,提供原版对照/代码入口/差异/验证,模块问题先修本模块;独立AI复核通过后继续,不再机械等待人工回复。 + +## C# 代码格式 + +- `[Inject]` 必须单独占一行,被标注的字段、属性或方法声明从下一行开始;不得写成 `[Inject] public ...`。新增或修改注入声明时遵守此规则,保留已有的换行格式;不因此批量重排无关代码。 +- 字段必须显式声明访问修饰符,类内部使用的字段优先写 `private`,不要依赖省略修饰符时的默认可见性。例如写 `private readonly ...`、`private static ...`、`private ...`。此规则指访问级别,不要求给变量名增加前缀或改名。 +- 按实际消费者选择最小必要访问级别:跨类调用、依赖注入、接口或继承确需 `internal`、`protected`、`public` 时保留对应权限,不得为了统一为 `private` 而破坏现有调用。构造器也须核对创建位置;局部变量、参数及不允许访问修饰符的显式接口实现不套用字段规则。不批量调整无关代码。 +- `if`、`else if`、`else` 分支必须使用大括号,即使只有一条语句也不省略;条件、分支语句不能挤在同一行,不写 `if (...) return ...;` 或 `{ statement; }`。 +- 使用大括号的代码块采用换行格式:左、右大括号各自独立成行,块内语句逐行书写并缩进。方法、构造器、属性访问器及控制流块均保持清晰展开,不用一行多个语句压缩代码;不改变条件、执行顺序或原业务行为。 + +```csharp +[Inject] +public ICustomServerMgr customServerMgr +{ + get; + set; +} + +[Inject] +public IPlayerSaveStore SaveStore +{ + get; + set; +} + +private readonly PlayerKVRuntimeSelection selection; +private PlayerKVGameSessionHandle handle; +``` + +条件分支示例: + +```csharp +if (!IsAuthorized) +{ + return ELoginStep.Api; +} +``` diff --git a/Client/Assets/ABPackage/pkgFirstPackage/Fonts/Multilingual_General/fangzheng SDF.asset b/Client/Assets/ABPackage/pkgFirstPackage/Fonts/Multilingual_General/fangzheng SDF.asset index 0482dafd4..882789f40 100644 --- a/Client/Assets/ABPackage/pkgFirstPackage/Fonts/Multilingual_General/fangzheng SDF.asset +++ b/Client/Assets/ABPackage/pkgFirstPackage/Fonts/Multilingual_General/fangzheng SDF.asset @@ -14891,6 +14891,156 @@ MonoBehaviour: m_Scale: 1 m_AtlasIndex: 9 m_ClassDefinitionType: 0 + - m_Index: 15896 + m_Metrics: + m_Width: 74.171875 + m_Height: 73.5625 + m_HorizontalBearingX: 1.3125 + m_HorizontalBearingY: 69.65625 + m_HorizontalAdvance: 80.984375 + m_GlyphRect: + m_X: 297 + m_Y: 392 + m_Width: 75 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 9 + m_ClassDefinitionType: 0 + - m_Index: 26326 + m_Metrics: + m_Width: 74.265625 + m_Height: 76.953125 + m_HorizontalBearingX: 3.390625 + m_HorizontalBearingY: 72.46875 + m_HorizontalAdvance: 81 + m_GlyphRect: + m_X: 581 + m_Y: 775 + m_Width: 75 + m_Height: 78 + m_Scale: 1 + m_AtlasIndex: 9 + m_ClassDefinitionType: 0 + - m_Index: 20728 + m_Metrics: + m_Width: 76.46875 + m_Height: 76.859375 + m_HorizontalBearingX: 2.109375 + m_HorizontalBearingY: 72.640625 + m_HorizontalAdvance: 80.984375 + m_GlyphRect: + m_X: 581 + m_Y: 872 + m_Width: 77 + m_Height: 78 + m_Scale: 1 + m_AtlasIndex: 9 + m_ClassDefinitionType: 0 + - m_Index: 15337 + m_Metrics: + m_Width: 76.859375 + m_Height: 75.890625 + m_HorizontalBearingX: 1.40625 + m_HorizontalBearingY: 71.1875 + m_HorizontalAdvance: 81.03125 + m_GlyphRect: + m_X: 581 + m_Y: 583 + m_Width: 78 + m_Height: 77 + m_Scale: 1 + m_AtlasIndex: 9 + m_ClassDefinitionType: 0 + - m_Index: 20500 + m_Metrics: + m_Width: 75.75 + m_Height: 75.59375 + m_HorizontalBearingX: 2.203125 + m_HorizontalBearingY: 70.625 + m_HorizontalAdvance: 81.03125 + m_GlyphRect: + m_X: 669 + m_Y: 679 + m_Width: 76 + m_Height: 76 + m_Scale: 1 + m_AtlasIndex: 9 + m_ClassDefinitionType: 0 + - m_Index: 15891 + m_Metrics: + m_Width: 73.875 + m_Height: 76.859375 + m_HorizontalBearingX: 1.453125 + m_HorizontalBearingY: 73.125 + m_HorizontalAdvance: 81 + m_GlyphRect: + m_X: 675 + m_Y: 774 + m_Width: 75 + m_Height: 78 + m_Scale: 1 + m_AtlasIndex: 9 + m_ClassDefinitionType: 0 + - m_Index: 16992 + m_Metrics: + m_Width: 75.578125 + m_Height: 73.078125 + m_HorizontalBearingX: 2.59375 + m_HorizontalBearingY: 69.171875 + m_HorizontalAdvance: 81.03125 + m_GlyphRect: + m_X: 587 + m_Y: 203 + m_Width: 77 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 9 + m_ClassDefinitionType: 0 + - m_Index: 20038 + m_Metrics: + m_Width: 75.234375 + m_Height: 74.921875 + m_HorizontalBearingX: 2.40625 + m_HorizontalBearingY: 70.796875 + m_HorizontalAdvance: 80.984375 + m_GlyphRect: + m_X: 677 + m_Y: 871 + m_Width: 76 + m_Height: 76 + m_Scale: 1 + m_AtlasIndex: 9 + m_ClassDefinitionType: 0 + - m_Index: 24062 + m_Metrics: + m_Width: 78.359375 + m_Height: 74.5625 + m_HorizontalBearingX: 1.0625 + m_HorizontalBearingY: 70.4375 + m_HorizontalAdvance: 81.046875 + m_GlyphRect: + m_X: 582 + m_Y: 391 + m_Width: 79 + m_Height: 76 + m_Scale: 1 + m_AtlasIndex: 9 + m_ClassDefinitionType: 0 + - m_Index: 29882 + m_Metrics: + m_Width: 75.671875 + m_Height: 76.859375 + m_HorizontalBearingX: 2.234375 + m_HorizontalBearingY: 71.28125 + m_HorizontalAdvance: 80.984375 + m_GlyphRect: + m_X: 582 + m_Y: 486 + m_Width: 76 + m_Height: 78 + m_Scale: 1 + m_AtlasIndex: 9 + m_ClassDefinitionType: 0 m_CharacterTable: - m_ElementType: 1 m_Unicode: 95 @@ -18784,6 +18934,46 @@ MonoBehaviour: m_Unicode: 40154 m_GlyphIndex: 35026 m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 21024 + m_GlyphIndex: 15896 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 31454 + m_GlyphIndex: 26326 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 25856 + m_GlyphIndex: 20728 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 20465 + m_GlyphIndex: 15337 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 25628 + m_GlyphIndex: 20500 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 21019 + m_GlyphIndex: 15891 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 22120 + m_GlyphIndex: 16992 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 25166 + m_GlyphIndex: 20038 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 29190 + m_GlyphIndex: 24062 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 35010 + m_GlyphIndex: 29882 + m_Scale: 1 m_AtlasTextures: - {fileID: 9062298255324323703} - {fileID: 3190520084594781521} @@ -19037,6 +19227,46 @@ MonoBehaviour: m_Y: 669 m_Width: 97 m_Height: 96 + - m_X: 287 + m_Y: 382 + m_Width: 94 + m_Height: 93 + - m_X: 571 + m_Y: 765 + m_Width: 94 + m_Height: 97 + - m_X: 571 + m_Y: 862 + m_Width: 96 + m_Height: 97 + - m_X: 571 + m_Y: 573 + m_Width: 97 + m_Height: 96 + - m_X: 659 + m_Y: 669 + m_Width: 95 + m_Height: 95 + - m_X: 665 + m_Y: 764 + m_Width: 94 + m_Height: 97 + - m_X: 577 + m_Y: 193 + m_Width: 96 + m_Height: 93 + - m_X: 667 + m_Y: 861 + m_Width: 95 + m_Height: 95 + - m_X: 572 + m_Y: 381 + m_Width: 98 + m_Height: 95 + - m_X: 572 + m_Y: 476 + m_Width: 95 + m_Height: 97 m_FreeGlyphRects: - m_X: 0 m_Y: 937 @@ -19110,10 +19340,6 @@ MonoBehaviour: m_Y: 862 m_Width: 3 m_Height: 2 - - m_X: 281 - m_Y: 957 - m_Width: 742 - m_Height: 66 - m_X: 291 m_Y: 763 m_Width: 79 @@ -19122,18 +19348,6 @@ MonoBehaviour: m_Y: 857 m_Width: 10 m_Height: 5 - - m_X: 380 - m_Y: 953 - m_Width: 643 - m_Height: 70 - - m_X: 196 - m_Y: 382 - m_Width: 188 - m_Height: 4 - - m_X: 287 - m_Y: 382 - m_Width: 97 - m_Height: 93 - m_X: 373 m_Y: 285 m_Width: 16 @@ -19154,26 +19368,14 @@ MonoBehaviour: m_Y: 96 m_Width: 11 m_Height: 95 - - m_X: 483 - m_Y: 381 - m_Width: 540 - m_Height: 1 - m_X: 564 m_Y: 97 m_Width: 13 m_Height: 94 - - m_X: 577 - m_Y: 193 - m_Width: 446 - m_Height: 93 - m_X: 672 m_Y: 95 m_Width: 351 m_Height: 2 - - m_X: 675 - m_Y: 95 - m_Width: 348 - m_Height: 928 - m_X: 768 m_Y: 0 m_Width: 255 @@ -19186,38 +19388,90 @@ MonoBehaviour: m_Y: 477 m_Width: 3 m_Height: 1 - - m_X: 482 - m_Y: 573 - m_Width: 541 - m_Height: 2 - - m_X: 572 - m_Y: 381 - m_Width: 451 - m_Height: 288 - - m_X: 579 - m_Y: 193 - m_Width: 444 - m_Height: 476 - - m_X: 659 - m_Y: 193 - m_Width: 364 - m_Height: 830 - m_X: 474 m_Y: 669 m_Width: 88 m_Height: 94 + - m_X: 196 + m_Y: 382 + m_Width: 91 + m_Height: 4 + - m_X: 381 + m_Y: 382 + m_Width: 3 + m_Height: 93 - m_X: 562 m_Y: 765 - m_Width: 461 + m_Width: 9 m_Height: 92 - - m_X: 571 + - m_X: 281 + m_Y: 959 + m_Width: 742 + m_Height: 64 + - m_X: 281 + m_Y: 957 + m_Width: 290 + m_Height: 66 + - m_X: 380 + m_Y: 953 + m_Width: 191 + m_Height: 70 + - m_X: 482 m_Y: 573 - m_Width: 452 - m_Height: 96 - - m_X: 571 - m_Y: 765 - m_Width: 452 - m_Height: 258 + m_Width: 89 + m_Height: 2 + - m_X: 675 + m_Y: 95 + m_Width: 348 + m_Height: 574 + - m_X: 754 + m_Y: 95 + m_Width: 269 + m_Height: 669 + - m_X: 659 + m_Y: 764 + m_Width: 6 + m_Height: 1 + - m_X: 673 + m_Y: 193 + m_Width: 350 + m_Height: 476 + - m_X: 759 + m_Y: 95 + m_Width: 264 + m_Height: 766 + - m_X: 762 + m_Y: 95 + m_Width: 261 + m_Height: 928 + - m_X: 665 + m_Y: 861 + m_Width: 2 + m_Height: 1 + - m_X: 667 + m_Y: 956 + m_Width: 356 + m_Height: 67 + - m_X: 483 + m_Y: 381 + m_Width: 89 + m_Height: 1 + - m_X: 579 + m_Y: 286 + m_Width: 444 + m_Height: 95 + - m_X: 668 + m_Y: 476 + m_Width: 355 + m_Height: 193 + - m_X: 670 + m_Y: 286 + m_Width: 353 + m_Height: 383 + - m_X: 667 + m_Y: 476 + m_Width: 356 + m_Height: 97 m_fontInfo: Name: PointSize: 0 @@ -19579,7 +19833,7 @@ Texture2D: m_ColorSpace: 1 m_PlatformBlob: image data: 1048576 - _typelessdata: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070a0907040000000000000000000000000000000000000000000000000000000000000306070808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080807050200000000000000000000000000000000000000020608080d0e0f101111121211100e0c08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070707070707070707070604000000000000000000000000000000000000000004060707070707070707070606030000000000000306070707070707070707070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060809131313131313131313130908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080e09090703030608091212121212121212120d0c0a07020000000000000005080a0b1111111111111111110a0a0804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111314161613100b050000000000000000000000000000000000000000000000000000060c1012131515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151414110e080200000000000000000000000000000003090e1214151a1b1c1d1e1e1f1e1e1d1b181514120e0903000005050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11131414141414141414141313100c0700000000000000000000000000000001070c101314141414141414141413120f0b060000060c10121314141414141414141313100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131516202020202020202020201615130f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e0e08070501000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708070502000000000000000000000000000000000000000000000000000000000000000407090a08070502000000000000000002080e1114141b1615130f0f1315161f1f1f1f1f1f1f1f1f1a1917130e0700000000060c111517181e1e1e1e1e1e1e1e1e171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060809080706040100010000000000000000000000000000000000000000000000000000000000000000000000040c13181d20212322201c160e090300000000000000000000000000000000000000000000030a11171c1f2021212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121201e19140d0500000000000000000000000000060e151a1e21222728292a2a2b2b2b2b2a282521211e1a140e090c1212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212120a09070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d20202020202020202020201f1c18120b03000000000000000000000000030b12181d1f202020202020202020201f1c17110a0a11171c1f202020202020202020201f1c18120b0300000000000000000000000000000000000000000000000001050707070501000000000000000000000000000000060e151b1f21222d2d2d2d2d2d2d2d2d2d22211f1b150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14171a1b1b1414110d08020000000000000000000000000000000000000000000000000000000000000000000000000002090e12141514120e0902000000000000000000000000000000000000000000000000000000050b101316161414110e08020000000001070c14191e20212823221f1b1b1f22222b2b2b2b2b2b2b2b2b2726231f19120a02000910171d2124242a2a2a2a2a2a2a2a2a2423201c17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131516151413110d070d0c0b0908070604000000000000000000000000000000000000000000000000000000040d161d24292c2d302f2c27211a140c070000000000000000000000000000000000000000030c151c23282c2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2a251e170e050000000000000000000000060f1820262b2e2f3335363737383838373635322e2d2a251f1a18191f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f171614100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d2d2d2d2d2d2d2d2d2d2c28231d150c0300000002000000000000030d151d24292c2d2d2d2d2d2d2d2d2d2d2b28221c14151c23282c2d2d2d2d2d2d2d2d2d2d2c28231d150c0300000000000000000000000000000000000000000002080d11131413110d080200000000000000000000000006101820262b2e2f393939393939393939392f2e2b262018100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a1f2426272821201e19140c070100000000000000000000000000000000000000000000000000000000000000000003090e141a1e2021201e1a140d0500000000000000000000000000000000000000000000000000070f161c20222321201e19140d050000060b12181e252a2d2e34302f2c27262b2e2f38383838383838383833322f2a241c141212121b22282d303137373737373737373731302d28221a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151b1f22222220201d181b1a191716151413100c070d0c0b090807060400000000000000000000000000000000010c161f282f35393a3d3c38332a251f18120b030000000000000000000000000000000000000a151e262e34383a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3936302920170d02000000000000000000030e18212a31373a3b40414243444445454443413f3b3a36312a2525262b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2323201c160f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c161f282f35393a3a3a3a3a3a3a3a3a3a38342e271e150b0306060f0908060300010b151f272f35383a3a3a3a3a3a3a3a3a3938332d261d1e262e34383a3a3a3a3a3a3a3a3a3a38342e271e150b0000000000000000000000000000000000000000050d13191e2021201e19130d0500000000000000000000040e18222a32373b3c464646464646464646463c3b37322a22180e0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0907040000000000000000000000000000000000000000000305060707050100000b141d242b303334342e2d2a251e18120b0300000000000000000000000000000000000000000000000000000000000001080d151a1f252a2d2e2d2a251f170f05000000000000000000000000000000000000000000000007111921272c2f302e2d2a251e170e060a11171d24293036393b413c3b383232373b3c454545454545454545403f3b352e261c1e1e1b242c34393d3e4444444444444444443d3c39332c231a100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920262b2e2f2f2d2c2924282725242322201f1c181b1a191716151312100c070d0b0a080707040100010000000007131d28313a4145474948443d363028231d150c090300000000000000000000000000000006111c2630383f44464848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484746413b32291e14080000000000000000000915202a333c4247484d4e4f505151525151504e4b4846423b36303132383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838302f2c27211a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e28313a40454747474747474747474645403930271d120f12131b1615130f0a07121d273139404547474747474747474746443f382f262630383f444647474747474747474645403930271d1207000000000000000000000000000000000000080e171e252a2d2e2d2a251e170e080000000000000000000a15202a343c434749535353535353535353534947433c342a2017171717171717171717171717171717171717171717171717161613100b050000000000000000000000000000000000060b0f12131413110d0808111d262f363c4041413b39363029231d150d0903000000000000000000000000000000000000000000000000000000040c131920262b30363a3b3a36302921170e04000000000000000000000000000000000000000000050e19232b32383b3d3b39363029201711141c22282f353b4146474e4948433d3c4347495252525252525252524d4b4740382e2b2b2b2b2c363e45494b5151515151515151514a49443e352c22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d19222a32373b3c3b3a39352f35343231302e2d2c2923282725242321201f1c181b191817151413110d080d0c0b09080d18242f3a434b515456544f46423b342e271e1a140c0700000000000000000000000000000c17232e38424a505354545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454524c443b3025190e0200000000000000020e1a26313c454e53555a5b5c5d5d5e5e5e5e5d5b5854534d46423b3e3f4545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545453d3c38332c231a0f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a434b5153535353535353535353514b42392e23181c1f202822211f1b150c18242f39434b5153535353535353535353504a42382d2e38424a5053535353535353535353514b42392e23180c000000000000000000000000000000000006111a20293036393a39363029201a11080000000004080a0a0f1b26323c464e53556060606060606060606055534e463c3226242424242424242424242424242424242424242424242424242322201c160f070000000000000000000000000000020a11171b1f2021201d19130e1a232f3841474c4e4e4746413b342f271f1a140b0600000000000000000000000000000000000000000000000001080d161e242931373b42464846423b332920160c0200000000000000000000000000000000000000020d17202b353d4448494746413b3228231c1d262d333940454c52545b56544f47464e54555e5e5e5e5e5e5e5e5e5a57524a403538383838343e485055575d5d5d5d5d5d5d5d5d575550473e33281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a343c434749484745404342403f3e3c3b3a38342f353332312f2e2d2c2823272625232221201d191b1a19181615141d2935414b555d60636059524d454039302a251f18120b03000000000000000000000003101c28343f4a545c60616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161615e564c41362a1e11050000000000000006121e2b37424e575f626668696a6a6b6b6b6a696865615e57524d454a4c5252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252524a48443d352c21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424b555d606060606060606060605c544b40342822282b2d352f2e2b2620181d2935404b555d606060606060606060605b544a3f33343f4a545c606060606060606060605c544b4034281c10040000000000000000000000000000030a1117232b323a41464746413a322c231a0d0400050b10141617151f2b37434e585f626c6c6c6c6c6c6c6c6c6c625f584e43373030303030303030303030303030303030303030303030303030302f2c2721191107000000000000000000000000020b141b22272b2d2e2d29241e17202c35414a52585a5b54524c454039312a251f17110a02000000000000000000000000000000000000000000040c13191f282f353c42474d5254524d453b32281e13080000000000000000000000000000000000000008131e29323d474f545654524c443d342e262b2f383f444b51565e61676360594f4e585f626b6b6b6b6b6b6b6b6b66635c524745454545454545505a61646a6a6a6a6a6a6a6a6a64615a5044392d20140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313c464e54555553514b504e4d4c4a49484745404341403f3e3c3b3a38342e343331302f2d2c292428272624232220232c3945515d676d706b615e57514b423d363128231d150c030000000000000000000006121f2c3844505c666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685e5246392d201407000000000000000814212e3a47535f6a6e7374757677777878777674726e69615e575157595e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e56554f473d33271c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545d676d6d6d6d6d6d6d6d6d6d665c5145382c2d333839423c3b37322a221f2c3845515d676d6d6d6d6d6d6d6d6d6c665b5044414144505c666d6d6d6d6d6d6d6d6d6d665c5145382c1f130600000000000000000000000000040c151c2328353d444c5254524c443e352c1f160c0810171c20232422212e3b47535f6a7679797979797979797979766a5f53473d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3b38332b23190f0500000000000000000000000a141d262d3337393a393530282029323e47525c646767615e56514b433e363128231c140c0600000000000000000000000000000000000000060d161e2429313a41454d53575e615e574d443a3024190d040000000000000000000000000000000000050e1925303a444f596063615e564f443f3830373d424a50555d60686e746f6b6054545f6a6f787878787878787878736e6357515151515151515155616c71777777777777777777706c6155493c3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f39434e585f6262605d555c5b5a5857565553514b4f4e4d4c4a49484644404241403e3d3b3a39352f35343231302e2d2c37424d57606d797c756e69605c544f46423b342e271e150b000000000000000000000713202d3a4653606d787b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a6e6154473b2e211408000000000000000815222f3b4855626e7c80818283848485848483817e7b756e69605b62656b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6360594f44382c20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6676797a7a7a7a7a7a7a7a796d6053463a2f383f44464e4947433c342a202d3a4753606d797a7a7a7a7a7a7a7a786c60534e4e4e4e53606d787a7a7a7a7a7a7a7a796d6053463a2d201307000000000000000000000000060e161e262e343f474f565e615e564f473e31281d13111a22282d30312f2e2f3c4955626f7c868686868686868686867c6f62554a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4948443d352b21160b0000000000000000000006111b262f383f44464746413a32282f3b44505a646e74746e68605c555046423b342e261e180f0802000000000000000000000000000000020a111720282f353e434c51575f62696e695e564c41352920150a00000000000000000000000000000000020d17202a36414c56606b706e686059504a423c43474f545b60676d737a817d6f635855626f7c8585858585858585858073665e5e5e5e5e5e5e5e5e5e64717e8384848484848484837e7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b555f6a6f6e6d676a69686765646361605c555c5b5a5857565453514a4f4e4c4b4a484745414342403f3e3c3b3a383946535f69738089817b726d666059534d45403930271d12070000000000000000000915222f3c4855626f7c87878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878784776b5e5144382b1e11050000000000000c1926333f4c5966727f8c8e8f909091919191908e8b87817b6f6a626d72787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878706b6055483c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798686868686868686868074675a4d4138424a50535b55534e463c342b3744515d6a778386868686868686867c6f625a5a5a5a5a5a64717e86868686868686868074675a4d4134271a0e0100000000000000000000080f18202830383f44515960686d6861594f433a2f24181a242c33393c3d3b3a373c4955626f7c889393939393939393887c6f62575757575757575757575757575757575757575757575757575757575756544f473d33271c10040000000000000000081217222d384149505354524c443a2f38414d56616c7480817a726d67615a534d443f38302a2119130c0500000000000000000000000000050b141c2228323a41454f555d60696e767b6e685d52463c32261b0d0400000000000000000000000000000008131e29323a46525e68707d7a706b605c544d444e535960666c71797f868e82756a5f56626f7c89919191919191918d81746b6b6b6b6b6b6b6b6b6b6b6b727f8b909090909090908b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c676f7c7b7a797776757372716f6e6d676a69686665646261605c545c5a5958565554524c504e4d4c4b49484745434f59616e7b86928e867f79706b615e57514b43392e23180c0000000000000000000915222f3c4855626f7b88949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949184776b5e5144382b1e1105000000000004111d2935414c566875828e9b9c9d9d9e9e9e9d9c9b99938e857c6f68727f8485858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585847d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939393939393938d8074675a4d413f4a545b6068625f584e463d353744515d6a778490939393939393887b6f6767676767676767717e8a9393939393938d8074675a4d4134271a0e0100000000000000000109111a212a323a424a505b626b707a706b61554b4135291e1d2c363e44494a4847423c4955626f7c88959f9f9f9f9f9f95887c6f6363636363636363636363636363636363636363636363636363636363636360594f44382c2013070000000000000007111a2427333f49535b60615d564c41383f49535e68707d8a8e857f79716c615e57504a423c332a251e170e070000000000000000000000060e161d262d333d444c525961676d737b82857a6d61584e43372b1f160c0100000000000000000000000000050e1925303a44505a616d7a85857d736d665f5750585f626b70787e848c9294887c6f6256626f7c89959e9e9e9e9e9a8d8078787878787878787878787878787f8b989d9d9d9d9d978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7986888685848381807f7d7c7b7a787776747372716f6e6d666a696766646362605d565d5b5a5957565553514b55616b75828f9998928c847d756e69605c554b4034281c100400000000000000000915222f3c4855626f7b8895a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19e9184776b5e5144382b1e110500000000000613202c3945525d687784919ea8a9aaaaababaaa9aba49f9791847a6d73808c919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191918a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0a0a0a0a09a8d8074675a4d4144505b666c756f6a5f584f473e3344515d6a7784909da0a0a0a095887c747474747474747474747e8a97a0a0a0a09a8d8074675a4d4134271a0e01000000000000000009131b232b333c444c545c606d727d857d70675d51453d3027262f3e4850555755534d454955626f7c8895a2acacacaca295887c70707070707070707070707070707070707070707070707070707070707070706b6054483b2f221609000000000000061019232c363e44505b656c6d685d53493f44505b656e7a859298928c847e756e69605c544e453f36302920191006000000000000000000070f1820282f383f444f565d606b707a80878f8d80746a5f53473e31281d1307000000000000000000000000020c17202a36414c56616c75818e91877f786e69605b626a6f767d838b91969f9b8e8175685e626f7c8995a2abababab9f9286848484848484848484848484848485929faaaaaaaaa4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a989892918f8e8d8b8a89888685848281807f7d7c7b79787775747371706e6d686b69686765646361605d555c67707d8a949ea29f969189827b736d675c5145382c1f130600000000000000000915222f3c4855626f7b8895a2aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa9e9184776b5e5144382b1e110500000000000714212d3a4754606d7a86939facb6b7b7b8b7b7b6b5afa9a1968d817473808c999e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acadada79a8d8074675a4d454f59606c78817c6f6a605950443f44515d6a7784909daaadada89b8e8181818181818181818181828f9ca9adada79a8d8074675a4d4134271a0e0100000000000000020b1b252d353d454d565d666d747f879184796d60594f42392e2d3842505a6164625f574e4955626f7c8895a2afb9b9b2a5988b7f7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d706356493d3023160a0000000000050f18222b353e48515b606c787a6d655b50444e58606c77828f97a19f96918a827b726d665f575146413a322b2217110a02000000000000091119222a323a424a505960686d747d848d929992877c6f625a50433a2f24180d03000000000000000000000008131e29323a46525e68717e8a9399928c837b726c656d727c828990959ea1a99f92867a6e61626f7c8995a2afb8b8aea2989291919191919191919191919191919297a2adb7b7b1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424e576774808d9aa29f9d9c9b9a989796949792908f8e8d8b8a898786858382817f7e7d7b7a797776757372716f6e6d676a696d7984919ea6aea8a09e938f867f796d6053463a2d20130700000000000000000915222f3c4855626f7b8895a2adadadadadadadb4b6bababababababab5b1afadadadadadadadadadb6b7bcbababababababbb6b5adadadadadadadadadadadadadadadadadadadadadadadadadadaa9e9184776b5e5144382b1e110500000000000a1623303d495663707c899aa4afbbc0c4c4c4c4c3c0bbb2a99f92867a73808c99a6abababababababababababababababababababababababababababababababababababababababababababababa3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a4d4d57616b73808c857c706b615a504941515d6a7784909daab7b6aa9e938e8d8d8d8d8d8d8d8d8d8d8f949fabb7b3a79a8d8074675a4d4134271a0e01000000000000000a141d2d373f474f575f686d78808b92968d80746b60544a4034333f4a54616c706e6960584f55626f7c8895a2afbbc0b3a79b918b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a84786b5e5145382b1e1200000000040e17212a343d47505a626d738082776c60584e555f6a727f8b949fa9a8a19e948f867f786e6a625b524c443d3428221c140b030000000009121a232b343c444c545b606b707a818a91969fa3999083766c61554b41352920150900000000000000000000010d1925303a44505a616d7a85929ea39f9590867e776e727f878f949da0a7adaea3998c7f7265626f7c8995a2afbcbeb4aaa29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2a9b3bebeb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a7784919eaaacaaa9a8a6a5a4a2a9a29f9d9c9b999897959a9392908f8d8c8b89888785848381807f7e7c7b7a787776747f8c96a0acbab2aca59e98928c8073675a4d4034271a0d01000000000000000915222f3c4855626f7b8895a0a0a0a0a0a0a0a0a7a9afb7c0cbc7bcb3aaa4a2a0a0a0a0a0a0a0a0a0a9abb0b8c2cdccc1b8b0aaa8a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09e9184776b5e5144382b1e110500000000000c1926323f4c5965727f8c98acb6b2b4b7b8bdc3ccccc4bbaea3998b7f73808c99a6b3b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a4b555f69707d889392867d716c605b534b515d6a7784909daab7baafa59e9b9a9a9a9a9a9a9a9a9a9a9c9fa6b0bbb3a79a8d8074675a4d4134271a0e0100000000000006111b262f3f49515960696e7a828d929f9f93887d6f665c51443b3844505b66707d7b6f6a615955626f7c8895a2afbbc3b8ada39b989696969696969696969696969696969696969696969696969696969696969184786b5e5145382b1e12000000030d162029333c464f59616c727f8b8b7f726a5f545c676f7c86929fa6b0b2aca69e98928c837c726d615e564e463e332d261d150c03000009121b242c353d464e565e666c737d848e939ea1a8ab9f948a7e71675d51453c31261a0e0500000000000000000005111d2a36414c56616c75818e97a1ada79f98928b827b727c89949fa6acb1b9b5ab9e9184786c626f7c8995a2afbcc5bcb4aeababababababababababababababababadb3bbc5beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8896a0acb8b7b6b4b3b2b0afb3adabaaa9a7a6a5a4aca49f9e9d9c9a99979695989291908e8d8c8a8988868584828186929fa8b2bdbdb8afa79f92857a6e6154473b2e21140800000000000000000915222f3c4855626f7b889393939393939393939b9da5afbac6c1b5aaa199959393939393939393939c9fa6b0bcc7c6bbb0a69e9b939393939393939393939393939393939393939393939393939393939184776b5e5144382b1e11050000000004101d2935404b556875818e9ba6a6a5a7aaacb2babfc7cbbfb5ab9c8f8275808c99a6b3bdc4c4c4c3bcb8b7b2b2b2b8babec4c4c2bcb8b6b2b2b2b4b8bfc4c4c1bab6b4b2b2b4b6bac1c4c4c4bfb8b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a515d676e7b85929a9892867e736c655d554d5d6a7784909daab7c1b7afaaa8a7a7a7a7a7a7a7a7a7a7a9abb0b8c0b3a79a8d8074675a4d4134271a0e010000000000000b17222d3841515b626b707b848f949da4a49a9183786d60564d42394653606c7884857c706c625b626f7c8895a2afbbc9bfb5ada7a5a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39e9184786b5e5145382b1e120000010b151f28323b454e58606b717e889392867c6e665c606d79839098a3aeb8bdb9b0aaa29f9590867f756d68605850443f382f271e150d0309121b242d363e474f585f686d787f8791969da5adb2b0a69e9184796d60574d42372b22170b0000000000000000000713202d3946525e68717e8a939ea9b3b1aaa29f948f867f78828f9cabb4bcc3b9aca096897d70636f7c8995a2afbccec5bebab8b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8babec5cdbeb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b5565727f8c98a8b2bdc4c2c1c0bebdbcbebab8b7b5b4b3b2b0b6afacabaaa8a7a6a4a3aaa29f9e9c9b9a989796949792918f8e9298a2aebac3c0b5aba0958b7f72685e5246392d20140700000000000000000915222f3c4855626f7c878787878787878787878e939da9b6c2bdb1a4998f8987878787878787878790949fabb7c4c3b6aa9e938f878787878787878787878787878787878787878787878787878787878784776b5e5144382b1e1105000000000613202c3945515d677784919a9999999a9da0a8adb5bfcac5b8ab9e928578808c99a6acb2bac4c3b9b1acaaa5a5a5abaeb4bcc2b9b1aba9a5a5a6a8adb6bfc1b7afa9a7a5a5a8aaafb7c1c9bfb5ada7a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a5b606d79839097a2a298928a80776d675f575d6a7784909daab7c3c1bab6b4b4b4b4b4b4b4b4b4b4b4b5b7bbc2c0b3a79a8d8074675a4d4134271a0e010000000000030f1b27333f4953626d727d8591969fa6aeaca0958c7f72695e5246444f5964717e8a92867e726d63626f7c8895a2afbbc8c7bfb8b3b2b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ab9e9184786b5e5145382b1e12000007121d27313a444d575f6a707d86929a989083786d606b74808d95a0aab4bfc9c1bcb4aea79f98928b827a6f6a615a504a423930271f150d121b242d363f485059606a6e7a828c9399a1a8afb9bdb9ada1978d8073695f53473e33281c100400000000000000000714212e3a4754616d7a85929ea5afbbbcb4aea69f98928c837f8b99a3aebac7bdb2a89a8e8174666f7c8995a2afbccbc3bcb8b7b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b7bbc2cabeb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6776828f9ca9b6c2cecfcecdcbcad0cac6c5c3c1c1c0bebdc0bbb9b8b6b5b4b2b1b0b4aeacaaa9a8a6a5a4a2a9a29f9d9c9b9fa2aab4bfc7bbafa4999083786d60564c41362a1e110500000000000000000613202d394653606c787a7a7a7a7a7a7a7a7a7a818e9ba7b4c1bcafa295897d7a7a7a7a7a7a7a7a7a82909ca9b6c3c2b5a89b8f827a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a6d6054473a2d21140700000000000714202d3a4753606d7a868e8d8c8c8c8d91969ca3adb8c2c6b9ada297877b808c989ea1a8b2bdbcb1a7a09d9898989fa2aab4bcb1a79f9d9898999ca4adb8baafa59e9b98989b9ea5afbac3b8ada39b98978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d80746758626d74818e95a0a9aaa39f928d81796e6960596a7784909daab7c3c0b9b5b3b2b2b2b2b2b2b2b2b2b2b5b6bac1c0b3a79a8d8074675a4d4134271a0e01000000000005121f2b3744505b65727f879297a0a8b0b8b1a79f92867b6e61594f4854606b7783909892877f736e626f7c8895a2afbbc8cfc7c1bebcbababababababababdbdbdbdbdbdbdbdbdbdbdbabababababababab7ab9e9184786b5e5145382b1e1200000c18232f39434c565e696f7c859298a39f958c7f736a707d88939fa7b1b8bdc3c9c6bfbab1aaa29f948f847c716c605b544a423931271f151b242d363f48505a616b707c848f949fa4abb2bac1c9beb2a99f92877b6e625a5044392d20140800000000000000010e1a2734414d5a6774808d95a0abb8c1c5bfbab0aaa29f95908687929facb9c5c4b8ab9e9285796d6f7c8995a2afbcc3b9b1acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a9abb0b8c2beb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9c5d2dcdbd9d8d5ccc3bdb8b7b4b6b8babebcbebfc0c2c2c0bfbebcbfbab8b7b6b4b3b2b1afb3adabaaa9a7acaeb4bcc6beb2a99f93877c6f665c50443b3025190e02000000000000000006121f2b3844505b666c6d6d6d6d6d6d6d6d6d74818d9aa7b4c0bbaea295887b6f6d6d6d6d6d6d6d76838f9ca9b6c2c1b5a89b8e82756d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d675d5145392c20130600000000000915222f3c4855626f7c828180807f7f81848c919ca6b0bbc7beb3a996897c808b8b9196a1acb9b8aca095918b8b8b9298a2aeb8ab9f95908b8b8c919ca8b4b6a99e938e8b8b8e939eaab6c0b3a79b918b8b8a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d807467606a727f8b939da7b1b4aea49c938f837b706b626a7784909daab7c0b6aea9a7a6a6a6a6a6a6a6a6a6a6a8aaafb7c0b3a79a8d8074675a4d4134271a0e0100000000000613202d394653606c78839098a2a9b2bac2baaea2988e81756b60544e5863707d8995a099928b80746d6f7c8895a2afbbc8c5bdb6b1b0aeaeaeaeaeaeaeaeb1b2b7bec6c9c9c3bab4afaeaeaeaeaeaeaeaeaeab9e9184786b5e5145382b1e120004101c2934404b555d686e7b849197a2aaa79f92867c6e7a8591969da0a7acb1b9bdc4cac3bcb4aea69e9691867e746c665c544b433931271e232c363f48505a626c717d8591969fa6afb5bdc4cbc4beb9aea3998f82766c6155493c3023160a00000000000000000714212d3a4754606d7a83909daab3becacac2bcb4aea7a099929299a3aeb4bcc5b9ada297897d706f7c8995a2afbcbcb1a7a09d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9c9fa6b0bbbeb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a99a3aebac0c8d0d8e5d9cec3bab1acaaa8aaabadb3b0b1b2b4b5b7b8b9bebcbebfc0c2c3c1c0bfbdbcbebab8b7b5b4b8babfc6c5b9ada1978d80746a60544a3f32291e1408000000000000000000030f1c28333f4a545b6060606060606060606774818d9aa7b4c0bbaea295887b6f6260606060606976838f9ca9b6c2c1b5a89b8e827571717171717171717171717171717171717171716d68606060606060605d554b4135291d110400000000000815212e3a47535f6a6f76757373737274787f8c949fabb7c4beb1a4978b7e7c7f7f84919eabb7b7aa9d91837f7f7f86929fabb6a99d90837f7f7f8c99a6b2b4a79b8e817f7f818e9ba8b4beb2a5988b7f7f7f7b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d807467626f7c86929fa5afb9bfbaaea59e9590857d726d6a7784909daab7b9aea49d9a999999999999999999999b9ea5afbab3a79a8d8074675a4d4134271a0e01000000000005121f2b3744505b656e7b86929fa6b0bcc5bfb4aa9e93897c6f635a54606a76828f9ca7a39f928d81786f7c8895a2afbbc7bdb3aba5a3a1a1a1a1a1a1a1a1a4a6acb4bec8c5bab1a9a3a1a1a1a1a1a1a1a1a1a19e9184786b5e5145382b1e120006131f2c3845515c676d7a839196a1a9b3aea399908378797f848a91959da0a8adb2babfc5c6bfbab0a8a198928b80786d665d554b433930272b353e48505a626c717e879297a1a8b0bbc0c7c6bfbbb3ada8a09e948a7d7064574a3d3124170a00000000000000000613202c3945525d686f7c8998a2aebac6d3cec6bfbab1aba39f9f9f9fa2aab4bebeb3a99a8e81746f7c8995a2afbcb8aca095908d8d8d8d8d8d8d8d8d8d8d8d8d8d90949fabb7beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a546774818e9aa2aaaeb6bec6d0dad4c8bdb1a8a09d9b9d9fa2a9a3a4a6a7a8aaabadb3afb1b2b4b5b6b8b9bbc0c0c1c6c5c4c2c1c5c6cac5bcb0a69e91847a6d60584e42382e20170d02000000000000000000000b17222d38424a5053545454545454545a6774818d9aa7b4c0bbaea295887b6f62555454545c6976838f9ca9b6c2c3b6aa9d90837e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7a6d61545454545454514b433a2f24180d01000000000006121f2b37434e585f62696867666666666d76828f9ca9b6c2bfb2a5988c7f72727683909da9b6b5a99c8f8276727885919eabb4a79b8e8174727b8794a1aeb1a4978a7e72727e8b98a4b1b9aca093867972726e695f53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074676875828f97a2adbac1cbc0b7afa7a09792877f756d7784909daab7b5a99d928d8c8c8c8c8c8c8c8c8c8c8e939eaab6b3a79a8d8074675a4d4134271a0e010000000000030f1b27333f49535f69727f8b949faab4bfc5bcafa59d9083766c6158626f7c89949fabafa49c938e82797c8895a2afbbc1b6aba199969494949494949494979aa2acb7c3bfb4a99f9794949494949494949494949184786b5e5145382b1e12000714202d3a4753606d79829095a0a8b2bcb4ab9f958b7f7272787e838a91959ea1a8aeb4bcc1c9c1bab2aaa39f928d81786d675d554b42392f333d47505a626c717e879299a2a9b2bac2cbc2bdb5aea9a19e96918a837d7063574a3d3024170a000000000000000004111d2935414c56606c7985929fabb8c5d2d8d0cac3bdb5ada297929298a2aebac4b7ab9e9184786f7c8995a2afbcb7aa9d9083808080808080808080808080808082909ca9b6beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6678848e92989da4acb4bec8d1d1c5b8aca095918e909297959697999a9c9d9ea2a9a3a4a5a7a8aaabacafb6b3b5b9c0c8cfced2d3cabfb4aa9e948a7e71675d51463d30261c0e05000000000000000000000006111c262f383f44464747474747474e5a6774818d9aa7b4c0bbaea295887b6f62554847505c6976838f9ca9b6c2c4b8ab9f95908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b887c6f6255494747474745413a31281d1307000000000000030f1b26313c464e53555d5b5a5959545c64717e8a97a9b3bec0b3a6998d80736a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d65615f574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d807467616e7a85929fabb8c5d2c9c1b9b1a9a199928c81797784909daab7b3a79a8d807f7f7f7f7f7f7f7f7f7f818e9ba8b5b3a79a8d8074675a4d4134271a0e010000000000000b17222d38414d57606c77828f98a2aebac3c1b8ab9f958a7e71665f6a75828f9ba6b0bbaea59d948e817c8895a2afbbbeb1a5998f8987878787878787878a909aa6b2bfbcafa3978d87878787878787878787878784786b5e5145382b1e12000e1b2834414e5b6774818e949fa7b1bac4bdb1a79f92867b6e6d71787e848b91969fa2aaafb9bdc4c4bcb4aea49d938e82796d675d544a41383c464f59616c717e879399a3abb3bbc4c6bfbab1aba39f97918b847e78706b6155483c2f2316090000000000000000010d19242f3a44505b657784909daab7c3d0cdc7c4c3c0b8ab9f928585929fabb8c5b9aca196887b6f7c8995a2afbcb4a79a8d8074747474747474747474747474747f8b98a5b2beb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d787e81858d929ba2acb6bfcad0c4b7aa9d91838183858688898b8c8d8f909297949697999a9c9d9e9fa4aca7a9aeb6c0cbd6d8cfc6baaea2988f82756c61554c41342b1e140a000000000000000000000000000a141d262d3338393a3a3a3a3a414e5a6774818d9aa7b4c0bbaea295887b6f62554843505c6976838f9ca9b6c2c8bcb1a79f9d9797979797979797979797979797979797979795887c6f6255493c3a3a3a39352f281f160c01000000000000000a15202a343c434748504e4d4d4c4a54616e7b8797a2adbac0b4a79a8d81746a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6055534d453b31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675e6874808d9aa7b3c0cdd3cbc3bbb3aba39f9285797784909daab7aea295887c737373737373737373737e8a97a4b1b3a79a8d8074675a4d4134271a0e0100000000000006111b262f3c44505b656e7b86929fa7b1bcc8bcb1a79e9184796d626f7c87939facb9bfb9aca0968a7e7c8895a2afbbbcb0a396897d7b7b7b7b7b7b7b7b7e8a97a4b1bdbaaea194877b7b7b7b7b7b7b7b7b7b7b7b7a6e6154473b2e211408000a1724303d4a5763707d8a929da7b1bcc6c2baaea2988e81756b656c71787e848c92989ea5acb2bac0c6bfbaaea59e948f82796d665c53493f444e58606b717e879399a4abb4bdc5c3bcb4aea79f99928d857e78716c6661594f44382c20140700000000000000000008131e27333f49536a7683909da9b6c3cbc2bcb7b6b3b5ab9b8e81818e9ba9b3bebdb2a8988b7e727c8995a2afbcb4a79a8d8174676767676767676767676767727f8b98a5b2beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c666d71747a808b909ba4aeb8c2cdc5b8ac9f92867b77787a7b7d7e7f818284858688898b8c8d8f9092939a969a9da4aeb9c5d1d1c6bdb1a79f92867b6e615a50433a2f22190c0200000000000000000000000000020b141c22282b2d2d2d2d2d34414e5a6774818d9aa7b4bbbbaea295887b6f62554843505c6976838f9ca9b6c2cdc3b9b1abaaa4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a295887c6f6255493c2f2d2d2c29241d160d040000000000000000040e18222a31394045474c4a464046525e697885929fabb8c1b4a79a8e81746a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d605346423b33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675664717e8a97a4b1bdcadad5cdc5bdb5a89b8e82757784909daab7aea295887b6f6666666666666666717e8a97a4b1b3a79a8d8074675a4d4134271a0e01000000000000000a141d27333f49535f69727f8b95a0acb8c1c2b9aca0968b7f726975818e9aa4afbbbdb2a89e9184787c8895a2afbbbbafa295887c6f6e6e6e6e6e6e707d8996a3b0bcb9ac9f9386796e6e6e6e6e6e6e6e6e6e6e6e685e5246392d201407000916232f3c4855616b74808d95a0aab4bfcabeb4aa9e93897d706660666d71797f868e939ea1a8afbabec5c0b7afa69e948f82786d655b50444c565f6a707d879299a4abb5bdc6c0b9b1aaa39f959087807a726d66605b544f473e33281c1004000000000000000000010b17222d43505d697683909ca9b6c3c2b9b1aba9a6aca3998a7e7d8997a1adb9c1b5a89b8e82757c8995a2afbcb4a79a8d8174675a5a5a5a5a5a5a5a5a5a65727f8b98a5b2beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c6064676d747e8b929ca6b0bbc4c7baaea3989083786d6d6e707173747577787a7b7c7e7f818283858688898d929da9b5c1cecbbfb5ab9f958b7f72695e53483e31281e1007000000000000000000000000000000020a11171c1f202121212734414e5a6774818d9aa7afafafaea295887b6f62554843505c6976838f9ca9b6c2cfc5bbb3adaba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a295887c6f6255493c2f2221201d18130c04000000000000000000000c18232f39434b515359575145424d576a7784909daab7c1b4a79b8e81746a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a312921170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a63707c8996a3afbcc9cfc9c5c4bcb1a7978b7e717784909daab7aea295887b6f6a6a6a6a6a6a6a6a717e8a97a4b1b3a79a8d8074675a4d4134271a0e0100000000000000020b17222d38414d57606d7883909da5afbcc6bdb2a89e9184796e7b87929facb6c0b9ada1968b7e717c8895a2afbbbbafa295887c6f626161616163707d8996a3b0bcb9ac9f9386796c61616161616161616161615e564c41362a1e1105000714202c38444f59606d79839098a3aebac3c5bcafa59d9083786d605c60676d737b818991969da5adb3bcc3c1b8b0a69e948e81776c605a50525d686e7c859299a3abb5bdc7c0bbafa7a098928b837c736d67605c54504a423e352c21160b0000000000000000000000061d2a3643505d697683909ca9b6c3bcb1a79f9d999f9f92867a7885929eabb8c4b7ab9e9184787c8995a2afbcb4a79a8d8174675a5a5a5a5a5a5a5a5a5a65727f8b98a5b2beb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424a5053555d606c73808c949fa9b2bec7bfb4aa9f958c7f726a6263646667696a676d6e70717274757778797b7d808d9aa7b3c0d0c7bbaea3999083786c60574d42362c1f160c000000000000000000000000000000000000060b0f12131420282e34414e5a6774818d9aa2a2a2a2a2a295887b6f62554843505c6976838f9ca9b6c2c9beb3a9a19e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c95887c6f6255493c2f221613110d07010000000000000000000004101c2934404b555c6066635b514b505c6976838f9ca9b6c1b4a89b8e81756a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a2d20170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8995a2afbccdc4bdb9b8b9aca095877a6e7784909daab7aea295887c777777777777777777777e8a97a4b1b3a79a8d8074675a4d4134271a0e01000000000000000006111b262f3b44505c66707d89939eaab4bfc3b9ada1968b7e74818d99a3afbebeb3a99e9184796f7c8895a2afbbbbafa295887c6f625554545663707d8996a3b0bcb9ac9f9386796c6054545454545454545454524c443b3025190e020004101c28333e45515c676f7c86929fa7b1bcc8c1b8aca0958b7f72685d555d60696e757d848e939fa2a9b1b9c2c1b8b0a69e938d80736c61575b606d7a849197a2abb5bdc5bdb5afa59d9590867f786f6a605d55504a443f382f2c231a10050000000000000000000000101d2a3643505d697683909ca9b6c3b7ab9f95908d929990837675818e9bacb6c0b9aca196877a7c8995a2afbcb4a79a8d8174676666666666666666666666727f8b98a5b2beb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f44464b515a606c77828f97a1acb6c0c6bcb1a79f92867b6e655b58595a5c555d606163646667696a676d6e7984919eaab7c4c7bdb1a89f92877c6f665b50453b31241a0d040000000000000000000000000000000000000000030616202a323a3f414e5a6774818d9595959595959595887b6f62554845505c6976838f9ca9b6c2c6b9ada197928f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f887c6f6255493c2f221d13040100000000000000000000000006131f2c3845515c676d726d605c544b5c6975828f9ca8b5c1b4a89b8e81756a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbc4bbb2adabacaa9d908377687784909daab7b7aa9d91848484848484848484848384919eabb7b3a79a8d8074675a4d4134271a0e010000000000000000000a141d28343f4a54606b75828f98a3aebac5bdb2a89e91847b86929fabb5c0b9ada1978b7f726f7c8895a2afbbbbafa295887c6f625554545663707d8996a3b0bcb9ac9f9386796c605454545454545453514b46413b32291e14080000000b16212934404b555f6a727f8c95a0acb8c1c8bcb1a79f92857a6d605651575e616b7079818a9297a0a7b0b8c1c2b8afa59c928a7e70695f626d75818f96a0a9b3bdc5bcb3aba39f938e837c726c665f58514c443f38332d261d1a11080000000000000000000003090e1d2a3643505d697683909ca9b6c3b6a99d90838087918c7f72717e8b9aa4afbbbdb2a8968a7d7c8995a2afbcb4a79a8d8074737373737373737373737373737f8b98a5b2beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e262e34383a4145505b656d7a85919aa4afbbc3c2baaea3989082776c60564c4e4f4b5153555658595a5c555f6a73808d96a0acb8c5c0b5aba0958c80736a5f544a3f33291f120800000000000000000000000000000000000000000006121d28323c444b4f515a677481888888888888888888887c6f62555252525c6976838f9ca9b6c2c5b8ab9e92858383838383838383838383838383838383838383827b6e62554841392f251a0f040000000000000000000000000714202d3a4753606d797f756d665d555b6875828e9ba8b5c1b4a89b8e81756a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbbdb2a9a19e9fa3998d80736a7784909daab7b8aca09691909090909090909090909196a1acb9b3a79a8d8074675a4d4134271a0e01000000000000000000020b17232e38424f59616e7b86929fa9b3bec4b9aca19691849198a3aebdbeb3a99e9185796d6f7c8895a2afbbbbafa295887c6f626161616163707d8996a3b0bcb9ac9f9386796c6161616161616161605d554b40352920170d02000000050c18232f39434e58606d7883909da5afbcc5c3baada2978d8073685e524d525961676d747e8590959fa6afb7c1c1b7aea49f92857b6e666a727f8b939ea8b2bbc5bbb3aaa299928b81796e6a605b544e45413a342e28221c140b0800000000000000000000050d141a1e2a3643505d697683909ca9b6c2b6a99c8f83767c84887b6e6e7a86939facb9bfb2a6998c7f7c8995a2afbcb6aa9d90838080808080808080808080808080828f9ca9b6beb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2f353f49535e68707d88939fa8b2bdc7bfb4aa9f948b7e72685e52464240454748494b4c4e505c666f7c87929fa8b2bdc7bbafa4999184796d60584e42382d21170d000000000000000000000000000000000000000000000b17232e3a444e565c5e5f616e7b7c7c7c7c7c7c7c7c7c7c796d605f5f5f5f5f6976838f9ca9b6c2c1b5a89b8e827676767676767676767676767676767676767676766e695f59534b41372c201408000000000000000000000006121e2b37424d5764717e8a81786d675d556875818e9ba8b4c1b4a89b8e81756a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb9ada19691929997897c6f6a7784909daab7bdb2a8a09d9d9d9d9d9d9d9d9d9d9d9ea1a8b2bdb3a79a8d8074675a4d4134271a0e010000000000000000000006111c26303d46535e6973808c97a2adbac5bdb2a8a0969196a0aab4bfb9ada1978c7f72676f7c8895a2afbbbbafa295887c6f6e6e6e6e6e6e707d8996a3b0bcb9ac9f9386796e6e6e6e6e6e6e6e6e6d675d5145392c201306000000000007121d27313c44505c666f7c89939eaab4becabeb3a99f92867a6e61574d464f555d606c717b838f949ea5afb7c1c0baaea2989083786d6f7c86929fa5afbac4bcb3a9a29892877e746d675f58504a423c352f28231c17110a0200000000000000000000050f171f252a2d3643505d697683909ca9b6c2b6a99c8f83766f797f7269687784919eaab7c1b4a89b8e817c8995a2afbcb8aba095908d8d8d8d8d8d8d8d8d8d8d8d8d8d8f949fabb7beb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f242d38414c56606b74808d96a0abb5c0c6bcb0a69f92857a6e61594f4238383a3b3d3e424d57606d78839099a3afbac3beb2a89f93877c6f675c51463c2f261c0f05000000000000000000000000000000000000000000020f1b27333f4b5660676b6b6b696e6f6f6f6f6f6f6f6f6f6f6d676b6b6b6b6b6b6b76838f9ca9b6c2c1b5a89b8e82756b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b68655d53483d3124180c00000000000000000000000814212e3a47535f697683908e82796d675d6874818e9ba7b4c1b4a79b8e81746a7683909da9b6b5a99c8f82766d7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb8ab9e918486929285796d6a7784909daab7c3bab2acaaaaaaaaaaaaaaaaaaaaaaabacb2bac0b3a79a8d8074675a4d4134271a0e0100000000000000000000000a141e2a36424d57606d7a85929fa9b3bec4bab2a8a09da0a8b2bcbeb3a99e9285796d626f7c8895a2afbbbcb0a396897d7b7b7b7b7b7b7b7b7e8a97a4b1bdbaaea194877b7b7b7b7b7b7b7b7b7b796d6053473a2d2014070000000000010b151f28343f4a54606b75818e98a2aebac4c5baaea2988d8074695e5246434b515a61696e79828e939ea5afb8c2beb3aaa0958c7f7377829098a3aeb7c1bdb3a9a29792867d716d605c554e443f382f29241e17110b060000000000000000000000030d17212931363a3b43505d697683909ca9b6c2b6a99c8f8376676d726d636875818e9ba8b4c1b6aa9d90837c8995a2afbcbcb1a7a09d99999999999999999999999999999c9fa6b0bbbeb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c10131b262f3a444f59606d79849199a4afbbc4c2baada2978e81756b60544a3f342d2e343f4a545f69727f8c959fabb5c0c0b6aca0968d80746b60554b40342a1d140a0000000000000000000000000000000000000000000004111d2a37434f5c677277787878787878787878787878787878787878787878787878828f9ca9b6c2c1b5a89b8e817878787878787878787878787878787878787878787878756f65594d4034271b0e0100000000000000000004101c2834404b54626e7b8894948f82796d676874818e9ba7b4c1b4a79b8e81746a7683909da9b6b6a99c8f827a7a7a85929eabb4a89b8e817a7a7c8895a2aeb1a4988b7f7a7a7f8b98a5b2b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827d868e8275676a7784909daab7c3c0b9b5b3b2b2b2b2b2b2b2b2b2b2b4b6bac1c0b3a79a8d8074675a4d4134271a0e010000000000000000000000020c1a25313b45515d67737f8c97a2adbac5c3bab2acaaacb2bac3b9ada1978c7f7267626f7c8895a2afbbbeb1a5998f8987878787878787878a909aa6b2bfbcafa3978d878787878787878787877f7265594c3f3226190c000000000000030d17232e38424f59616e7b86929fa8b2bdc9bfb4aa9f92867b6e61564c41414550575f676d79818e939ea6b0b9c3bcb1a79f92867b7e8b949faab4bfbeb4aba29792857c706b625a514b433c332d261d19130c060000000000000000000000000009141f29333b42464848505d697683909ca9b6c2b6a99c8f8376696066635b65727f8b98a5b2beb8ac9f92857c8995a2afbcc3b9b1abaaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a9abb0b8c2beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050a141d29323d45515d676f7c87939fa9b2bec9beb3a99e93897d6f665c50443a30313944505c666e7b86929fa7b1bdc7bbafa49a9184796d60594f43392e22180b020000000000000000000000000000000000000000000005111e2b3844515e6b778485858585858585858585858585858585858585858585858587929facb9c5c5b9ac9f928785858585858585858585858585858585858585858585858175685b4e4235281b0f0200000000000000000006131f2c3845515c6673808d9a9f949082796d6674818e9ba7b4c1b4a79a8e81746a7683909da9b6b7ab9f948f8787879297a1adb6aa9e938e8787888e98a4b0b3a79b918b87878b919ba7b3b9aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d242d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82757c857e79706b7784909daab7c0b6aea8a6a5a5a5a5a5a5a5a5a5a5a8aaafb7c0b3a79a8d8074675a4d4134271a0e0100000000000000000000000009141f2935414c55606d7a85929faab3becac3bdb8b7b8bdc3beb3a99e9285796d60626f7c8895a2afbbc1b6aba199969494949494949494979aa2acb7c3bfb4a99f979494949494949494948c7f7265594c3f3226190c0000000000000006111c26303d46525e68727f8c96a1adb9c4c6bbaea3998d8073685d5245393e454d555d676d78818e949fa7b1bcc3baaea398908385929ea6b0bcc0b6aca39992857c6f6a6059504540393128221c140b080100000000000000000000000000020e1a25313b454d535455555d697683909ca9b6c2b6a99c8f8376695c595556636f7c8996a9b3bebaaea2988a7d8a97a4b0bdc4c3bcb8b6b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b7bbc2c4beb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e12141517202935404b55606a74808d97a1adb9c2c5bcafa59d9083786d60564c413539434e58606d78839098a2aeb9c3beb2a89f93887d70675d51473d30271d1007060400000000000000000000000000000000000000000002121f2c3945525f6c78859292929292929292929292929292929292929292929292929299a3afbbc7c7baaea39992929292929292929292929292929292929292929292928f8275695c4f4236291c0a020000000000000000000713202d3a4653606d7985929ea69f948f82786d75818e9ba8b4c0b4a79a8d81746a7683909da9b6bbb0a69f9c9393939ea1a9b3baafa59e9b93939598a0aab5b7aca39b989393989ba3adb8b9aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f353a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82756f7b7e847d757784909daab7b9aea49d9a989898989898989898989b9ea5afbab3a79a8d8074675a4d4134271a0e01000000000000000000000000030d19242f3a45525d6873808c98a2aebac7cec8c5c4c5c8c6b9ada1978c7f72675d626f7c8895a2afbbc7bdb3aba5a3a1a1a1a1a1a1a1a1a4a6acb4bec8c5bab1a9a3a1a1a1a1a1a1a1a1988c7f7265594c3f3226190c00000000000000000a141e2a36414d56606d7984919ea9b2bec9bfb5ab9f92857a6d60544a40343b434c555c666d78828f95a0aab4bfbfb4aa9f94909297a1adb8c2bbafa49a92877d706a60584f473f342f271f17110a0200000000000000000000000000000005121e2a36424d575e61616161697683909ca9b6c2b6a99c8f83766961616161616d7a8797a2adbabfb4aa998c7f8c99a5b2b7b7b7b7b7b7b7b7b9bdc0c0c0c0c0c0bdb9b7b7b7b7b7b7b7b7b1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e20212020242f39434e58606d7a84919ea6b0bdc6c1b8aca0958b7f72685e52463c404b55606a737f8c959faab4bfc0b6aca1968d81746b60554b40342b1e151a1312100c07000000000000000000000000000000000000000b141c2c3945525f6c7885929e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa3abb5c0cbcbbfb4aba39f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9c8f8275695c4f4236221b140b020000000000000005121e2a36424d5764717e8a97a1ada69e948e817475818e9ba8b4c0b3a79a8d80746a7683909da9b6c2b8b0aba9a0a0a0abadb3bbc1b7afaaa8a0a0a2a4aab2bcbeb5aca7a4a0a0a5a7adb5bfb9aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a40454753606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82756a76828f8a817a83909daab7b5a89d928d8c8c8c8c8c8c8c8c8c8c8e939eaab6b3a79a8d8074675a4d4134271a0e010000000000000000000000000008131e2935414c56606d7a85929fabb5c0cbd4d1d0d1cabeb3a99e92857a6d6055626f7c8895a2afbbc8c5bdb6b1b0aeaeaeaeaeaeaeaeb1b2b7bec6d0ccc3bab4afaeaeaeaeaeaeaea5988c7f7265594c3f3226190c0000000000000000020c1925303b45515c66727f8b97a1adb9c5c6baaea2988c7f72665c5144383b41464b545c666d79839098a2aebac2bcb0a69f9c9ea1a9b3bebcb0a69f93887e716b605853504a42382e23170d0600000000000000000000000000000000000714212d3a46535e696e6e6e6e6e7683909ca9b6c2b6a99c8f83766e6e6e6e6e6e6d7885929fabb8c0b4a79a8d818d9aa7abababababababababadb2bac4cfcec4bab2acabababababababababa4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e2d2c2927313d45515d67717e8a949eabb5bfc8bcb1a79f92857a6d61584e4345515d676f7c87929fa7b1bcc6bbafa49a9184796d60594f43392f22202127201f1c18120b030000000000000000000000000000000009121c262e3645525f6c7885929fababababababababababababababababababababababacafb5bdb9b9b9b9bdb4aeacababababababababababababababababababababa89c8f8275695c4f42332d261d140a000000000000000714212d3a46535f6976828f9ca9b3b0a69d938c7f75828e9ba8b5c0b3a69a8d80736a7683909da9b6c3c2bbb7b6adadadb8b9bec4c4c1bab6b4adadaeb0b5bcc4c4beb7b3b1adadb2b3b8bfc4b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a434b515353606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82756e7b8793938e8585929fabb8b3a69a8d807f7f7f7f7f7f7f7f7f7f818e9ba8b4b3a79a8d8074675a4d4134271a0e0100000000000000000000000000010d19242f3a45525d6873808d99a3afbbc7d3deddd2c6b9ada1978c7f72675d55626f7c8895a2afbbc8cfc7c1bebcbababababababababdbfc3c8d0d8d5ccc5bfbcbabababababab2a5988c7f7265594c3f3226190c00000000000000000008141f2834404b54606d7984919ea9b3bec9beb4aa9e9185796d6053463b444c525459545d676e7b86929fa6b0bbc2b8b0aba9abadb3bbbeb4aa9f948c7f736c616064605c544a3f34281e150b00000000000000000000000000000000000815212e3b4854616e7b7b7b7b7b7b83909daab6c3b6a99d90837b7b7b7b7b7b7b797783909daab6c2b5a89b8f828f9b9e9e9e9e9e9e9e9e9e9ea1a8b2bdc9c9bdb2a8a19e9e9e9e9e9e9e9e9e9e978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17212930363a3b3a39352f2935414c55616c76828f99a3aebbc5c3baada2978d80746a5f53474d57606d79839199a3aeb9c2bdb2a89f93887d70675d51473d31282a2d2e342d2c28231c150c03000000000000000000000000000006101b242e384047525f6c7885929fabadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadada89c8f8275695c4f443f382f261b11060000000000000815222e3b4855616e7b87939facb9b8afa59f93877d818e9ba8b5c0b3a6998d80736a7683909da9b6b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b555d605d606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827574818d9a9e97929297a2adbaaea295887c727272727272727272727e8a97a4b1b3a79a8d8074675a4d4134271a0e01000000000000000000000000000008131e2935414c56616e7b86929facb9c3ced9d5c9beb3a99e92857a6d605555626f7c8895a2afbbc8c5bdb6b1b0aeaeaeaeaeaeaeaeb1b2b7bec6d0ccc3bab4afaeaeaeaeaeaeaea5988c7f7265594c3f3226190c000000000000000000020c18232e3945515c67727f8c97a1adb9c6c5b9ada1978a7d7064574d424c565e6166605d5f69727f8b949fabb7c1c2bcb7b6b8b9bec5baaea2989082786c60656c716d665c50443c30271c120700000000000000000000000000000005121f2b3845525e6b7885888888888890959fabb8c4b8ab9f9590888888888888887d75828e9ba8b5c1b6aa9d908390919191919191919191919196a1adb9c5c5b9aca19691919191919191919191918b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c162029333b4246484745403a312f3a43505a626e7b87929fa9b3bec9beb3a99f92877c6f62594f535e6974808d95a0abb3bbbfb5aba0968d80746b60554b40352b3036393b413a38342e271e150b00000000000000000000000000030d18222d37404a52585f6c7885929fa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09c8f8275695c53504941382d22170b0100000000000d1a2733404d5a6673808d9aa4afbbc0bbafa499928583909daab7bfb2a6998c7f736a7683909da9aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d67606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82757a86929fa9a19e9fa2a9b3beaea295887b6f6565656565656565717e8a97a4b1b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010d1924303a46525e6975828f9ba8b1bdc8d4d2c6b9ada1978c7f72675d5155626f7c8895a2afbbc7bdb3aba5a3a1a1a1a1a1a1a1a1a4a6acb4bec8c5bab1a9a3a1a1a1a1a1a1a1a1988c7f7265594c3f3226190c0000000000000000000007121d2934404b55606d7985929eabb5bfc9beb3a99c8f8275695e5246525e686e736d6760626d76828f9ca6b0bbc6c7c4c3c5c6c7bcb1a79f92867b6e66686e777e786d60584e42392e23180c02000000000000000000000000000005121f2b3845525e6b788591949494949d9fa7b1bcc8bcb1a79f9d9494949494948a7d73808d9aa6b3c0b7ab9e9184848484848484848484848484919eabb7c4c4b7ab9e918484848484848484848484847e7164574a3e3124150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b151e28323b454d525453514b433a32313e47535f6973808d97a1adb9c3c5bbafa3998f82756b605454616e7b8690949ea1a9afb8aea3999184796d60594f433a2f323b4146474d4644403930271c12070000000000000000000000010b151f2a343f49525c64676c7885929393939393939393939393939393939393939393939393939394939393939393939393939393939393939393939393939393939393939393938f8275695b605b53493f33271d12070000000000111e2b3744515e6a77849196a0a7b1b9c0b5aba297929095a0acb8bfb2a5988c7f726a7683909d9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b55606d7a716c6d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82757f8c98a2aeadababadb3bbbbaea295887c727272727272727272727e8a97a4b1b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000008131e2a36424d5763707d8995a0acb8c5d1c9beb3a99e9285796d60554b55626f7c8895a2afbbc1b6aba199969494949494949494979aa2acb7c3bfb4a99f979494949494949494948c7f7265594c3f3226190c00000000000000000000000c18232f3945515d67727f8c99a3aebbc7c4b9ac9f93877b6e61544d57616e7a8079716c66626f7c88939eaab6c3ced0cfd1d1c4b7ab9f958b7e71696c707a828a7f736a5f544a4034281e140a000000000000000000000000000005121f2b3845525e6b7885919ea1a1a1aaabb1b9c3cdc2b9b1aba9a1a1a1a1a1968a7d727f8c98a5b2bfb6a99c908378787878787878787878787a8794a1adbab9aca09386787878787878787878787878716c6155493930271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d27303a444d575e61605d554c443b3337424d57606d7a85929ea7b1bcc8c0b5ab9e94897d6f635a535e696e7c828b92979ea5aca69f92877c6f675d51473d31343d444c52545a53514a42392e23180f060000000000000000000007121d27313c46515b646e737078858686868686868686868686868686868686868686868686868687878686868686868686868686868686868686868686868686868686868686868686827569656c655b5044392f23180c02000000000915222f3c4855626f7c8491959fa7b1b9bdb3a9a29f9da0a7b1bcbeb2a5988b7f726a7683909191919191919191919191919191919191919191919191919191919191919191919191919191919191919186796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6773807e716d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827884919eaab4b9b8b8babec5c0b3a6998d807f7f7f7f7f7f7f7f7f7f818e9ba7b4b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000020e1a25303b4854606b7784919daab7c4d0c6b9ada1978c7f72675d514955626f7c8895a2afbbbeb1a5998f8987878787878787878a909aa6b2bfbcafa3978d878787878787878787877f7265594c3f3226190c000000000000000000000007121d2935404b55616d7a86929facb9c4c7bbafa4998c7f736658525e6974808c847e78706b6a75828f9ba7b1bcc8d4dcd3c7bbb0a69d9083766c6d747d858f92877c6f665c51443c30261c11060000000000000000000000000005121f2b3845525e6b7885919eabaeaeb6b8bcc3cbd4cbc2bcb8b6aeaeaeaea3968a7d717e8b97a4b1beb7aa9d9184776b6b6b6b6b6b6b6b6b6e7a8794a1adbab9aca09386796d6b6b6b6b6b6b6b6b6b6b64615a514b43392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f39434c565e696e6d675e564d453c333c45515d67717e8b95a0acb8c2c7bdb0a69d9083766c6154575f6a6e777e858e939da09f948c7f736a60554b4035343f464e565e6167605c544a40342821180c030000000000000000040d18232f39434e58626d73807d76797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a797a7a797a7a7a7a7a7a7a7979797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d7177776c60554b4034291e1308000000000815212e3a47535f6a6f7b8390959fa7b1b9bbb3adabaaacb1b9c3beb1a4978b7e71687581848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985867b6e798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827e8a96a1acb6bec3c5c6cacfc1b4a89c928d8b8b8b8b8b8b8b8b8b8b8e939ea9b6b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000009141f2c38444f5965727f8b98a5b2becbc5b8ab9e9285796d60554b4955626f7c8895a2afbbbcb0a396897d7b7b7b7b7b7b7b7b7e8a97a4b1bdbaaea194877b7b7b7b7b7b7b7b7b7b796d6053473a2d2014070000000000000000000000010c18242f3946525e6875828e9ba8b2bdc9c0b5ab9d9184776a5f57616e7b8692918b837d756e6f7c8895a0acb8c5d1ddd0c3b7ab9f94897d706f79818a9297999083786d60584e42382e23170b0300000000000000000000000005121f2b3845525e6b7885919eabb8bbc3c4c8cdd4ddd4cdc8c4c3bbbbbbb0a3968a7d707d8a96a3b0bdb8ab9e9285786560606060606060616e7a8794a1adbab9aca09386796d606060606060606060606060605c554b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081117222d38414b555d686e7b796d685e574d453c35414c55606d7883919da6b0bcc7c1b8ab9f958a7d70665c50575f656c717a81899196979082786d60584e4339394045505860686e746d665c51443e33291e150b00000000000000010c161f2934404b555f6a727f8b8a827c736d6d6d6d6d6d6d757878787878787878776d6d6d6d6d6e7a8380736d6d6d6d6d6d717e807a736d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d73797e847e71675c51453a3025190d0300000006121f2b37434e585f696e7a8390959fa7b1b9bebab8b7b8bcc3cbbdb0a4978a7d71646f757777777777777777777777777777777777777777777777777777777777777777777777777777777777777777776d665c5044382b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e5864717e8a908379798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82838f979fa4acb1bbc0c7cfd0c4b9aea49c99989898989898989898989b9ea5afbab3a79a8d8074675a4d4134271a0e010000000000000000000000000000000004101d2935404b55616e7a8794a1adbac7c1b4a79b8e8174675d514c5255626f7c8895a2afbbbbafa295887c6f6e6e6e6e6e6e707d8996a3b0bcb9ac9f9386796e6e6e6e6e6e6e6e6e6d675d5145392c20130600000000000000000000000007121d2a36414c5663707d8996a1acb9c7c7b8aca095887b6e625e6974818d989e959089827b747784909daab7c3cfd4c8bcb1a79c8f8276737c848e939ea1a0958c7f736a5f544a3f34281f140900000000000000000000000005121f2b3845525e6b7885919eabb2b2b7b9bdc4ccd6ccc4bdb9b7b2b2b2b0a3968a7d707c8996a2afbcb9ac9f9286796d6d6d6d6d6d6d6d6d6e7a8794a1adbab9aca09386796d6d6d6d6d6d6d6d6d6d6d6d6d6d675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a2327333f49535c676d7a84837a6e695f574e463c3a44505c66707d8a949fabb7c1c7bcb1a79d9184786d60554e535b60686d747d848c92857b6e665c50463c3a424b515a626a6f7a80786d605a50453b30271d120700000000000007131d28313a45515c676f7c8692948f878079706b6060697582848585858585858583776a606b707b848f867a6e616060616e7a858d86807a736d67606060606060606060606060676d727a7f858b9084796d60564c4135291f1409000000030f1b26313c464e575e686d7a839095a0a7b1bbc4c5c3c5c8cec9bcb0a396897d706365686b6b6b6b6b6b6b6b6b6d797b7b7c7d7d7e7e7e7e7d7c7b7976706b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b605c544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a768390958c80788693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827e858e939aa0a7afb5bdc3cbcabfb6aea8a6a5a5a5a5a5a5a5a5a5a5a7a9afb7c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000006131f2c3945515d67727f8c98a5b2bfcbc4b7ab9e9184786a5f53565e61626f7c8895a2afbbbbafa295887c6f626161616163707d8996a3b0bcb9ac9f9386796c6161616161616161605d554b4035291d1104000000000000000000000000010d1925303a4653606c7884919eacb6c0c8bdb1a8998c7f7366616e7b86929fa7a09d948f86807a7f8c99a8b2bdc9d1c4b8ab9f95897c787f8791969da5ada79f92877c6f665c50443b31251a0d04000000000000000000000005121f2b3845525e6b7885919ea5a5a5abacb2bac4cec4bab2acaaa5a5a5a5a3968a7d707b8895a1aebbbbafa399877a7a7a7a7a7a7a7a7a7a7a7b8794a1aebab9ada09386797a7a7a7a7a7a7a7a7a7a7a7a7a796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19222c353e44505b656d79829090837b6e695f584e463c3f4a54616c7683909ca6b0bdc7c2b8aca0958b7e71675d514950565e616b707980867e70695e544a3f3a434c545c606c717c848d80736c61574d43392e23180f0600000000010d18242f3a43505a606d798390989f99928d847d746d676a7783909191919191919185786b6d727d8591968d8074695f616c75818e97928d867f79716c666058535353535960666d72797f858c9197968c7f72685e52463b31261a0e040000000a15202a343c454d565d686d7a839095a0a9b2bcc6d0d1d4d9c8bcafa295897c6f62565b5e5e5e5e5e5e5e5d677683878889898a8a8b8b8a8a898885827d736d63595e5e5e5e5e5e5e5e5e5e5e5e5e5e5e53504a42382e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626f7b88949f92877c8895a2afbbb3a79a8d8074675a626f7c8895a2afbbb5a89b8f82757a818890959fa3abb1b9c0cac8bfb9b4b3b2b2b2b2b2b2b2b2b2b2b4b6bac1c0b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000004101d2935404b55606d7985929eabb8c5d1c5b9aca196887b6f62555e686e686f7c8895a2afbbbbafa295887c6f625554545663707d8996a3b0bcb9ac9f9386796c605454545454545453514b433a2f24180d010000000000000000000000000008131f2b3844505b66737f8c9aa4afbbc8c3b7aa9d908377696a74818e99a3aeaca69e99928d857f8c96a1adb9c5cbbfb4aa9d908376818c9299a0a8afb9aea3999083786d60574d42362a20160c010000000000000000000005121f2b3845525e6b788591999999999ea1a8b2bdc9bdb2a8a09e9999999999968a7d707a8794a1adbac0b5ab978c8786868686868686868686878d97a3afbcbbaea2968b868686868686868686868686868686796c5f5246392c1f13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212b343e47515b606c77818e949591847b6f6a5f584e453b42505a636f7c89949eabb5c0c8bdb1a89e9184796d60554b444c525960676d737a706c61574d423b444c555d666d747e8791928a7e70695f554b40342821180d0300000004111d2935404b55616c74808d95a0aaa39f96918980796f6a7783909d9e9e9e9e9e9285786d757f8792979f92867b6e6167707d8a939e9f98928c847e786f6a605d55565e616b70787f858c92979ea19f92857a6d61574d42362a20150a000000030e18222a333b444c565d686d7a839097a1aab4bdc7d2ddd8ccc0b6ac95887b6e62554f51515151515153606d7a86929595969797979797979698928f897f736b6054515151515151515151515151515146443f3830261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d6774808d9aa3999083909daab6c0b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82756d747c838d9299a0a7aebabec5cec4c1c0bebebebebfbab8b5b5b5b5b5b5b5b5b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010c131f2c3945515d67727f8c97a1adb9c6d2c9bdb2a8998c7f726658616e7a6f6f7c8895a2afbbbbafa295887c6f625f5f5f5f63707d8996a3b0bcb9ac9f9386796c605f5f5f5f5f5f5f595751493f35291e120600000000000000000000000000030f1c28333f4a54616e7b87939facb9c6c5b8aca095887b6e6f7c87939fabb5b8b0aba39f93877c84919eabb7c4c7baaea3988b7e727d87939fa8b2babfb5ab9f958c7f72695e53463e32281e13080000000000000000000005121f2b3845525e6b78858c8c8c8c8c9196a1acb9c5b9aca096918c8c8c8c8c8c8a7d707a8793abb4bfc7bda89e97949393939393939393939394979fa9b4c0beb2a79d96939393939393939393939393939285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a333d46505a626d73808d939ea09691857c6f6a5f574d453e4854606b75828f99a4afbbc6c3b9ada1968c7f72675d514541464f555c60686e68615a50453c454d565e676d78808b92999f92857b6e675c51453e332a1f150b0100000613202c3945515d67707d8a929da7aeafa8a19e928d837c717783909daaababab9e92857879818c9399a2a3998e81756a6d7a84919ea5aaa29f96918b837c746d676061686e757d838b92979fa2a9ada2978d8074695f53463d32271b0f030000000610182129323a434c565e686e7b859198a2abb5c0ccd7d4c8bbafa49a877a6d61544744444444444a5663707d8999a3a2a3a3a4a4a4a4a3aaa29f9c93877c6f635649444444444444444444444444443a38342e261e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985929faba0959095a0acb8c0b3a79a8d8074675a626f7c8895a2afbbb5a89b8f8275686a6f79808791959da4adb3bcc2cbcdcccbd0c6bcb4aeaca8a8a8a8a8a8a8a8a8a79a8d8074675a4d4134271a0c04000000000000000000000000000007121d2935404b55606d7985929ea9b3bec9d5cec2b5a99c8f827667606a77837c6f7c8895a2afbbbbafa295887c6f6c6c6c6c6c6c707d8996a3b0bcb9ac9f9386796c6c6c6c6c6c6c6c6c65625b51463a2e22160900000000000000000000000000000b17222d3846525e697683909da9b6c3c8bcb1a7988b7e7176828f99a4afbdc1baaea3988e8175828e9ba8b5c1c5b8ac9f92867a6d74808d96a0acb9c1bdb1a79f92867b6e615a50443a2f24190c03000000000000000000000c1925323f4c5865727f7f7f7f7f7f84919eabb7c4b7aa9e91847f7f7f7f7f7f7f7b6e798699a3aebac7bab0a8a3a0a0a0a0a0a0a0a0a0a0a0a1a3a9b1bbc5c4b9afa7a2a0a0a0a0a0a0a0a0a0a0a0a09f9285796c5f5246392c1f130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313b454e58616c727f8b929da5a8a19792857c6e695f574d44434f59626f7c87939faab4bfc9bdb2a89e92857a6d60554b403d434b51565e615e5650483e464e575f686d79828d929fa3a2979083796d605a50453c31271d120700000714202d3a4753606d7a858d92989fa2aaaeaca49d9590867e7783909daab6b8ab9e92857b838e939fa4abab9f93877c6f74818d96a1adb4aea9a19e959087807a6f6b6c707a818990959ea1a9adb3b3a99f92867b6e61584e43372b1f130600000000060f172028313a444c565e696f7c869299a4afbbc1ccd2c6b9ac9f9386796d6053463a383834404b556673808c99abb5b0b0b1b1b1b1b0b4aeaca49a8e817568554b403438383838383838383838382d2b28231c140c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e5864717e8b97a2ada7a09da0a7b1bcc0b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82756860666d737c838d929fa2a9b1b9c1ccd2d6cabfb4aaa29f9b9b9b9b9b9b9b9b9b9b9a8d8074675a4d4134241e160e04000000000000000000000000010d18242f3945515d67727f8c97a1adbbc5cfdad2c5b8ac9f9286796d626f7c8983797c8895a2afbbbbafa295887c79797979797979797d8996a3b0bcb9ac9f938679797979797979797979726d62574a3e3125180b000000000000000000000000000006111c2a36424d5766727f8c99a8b2bdc8c1b5a89b8e82757d8a949fabb5c0beb2a99f92867b727f8b98a5b2bec1b5a89b8e8275686d7984919ea5afbbc2baaea2988f82766c61564c4135291e150a000000000000000000000b1824313e4a56626d72727272727683909ca9b6c2b6a99c8f83767272727272726e697986929facb9c5c2bab3afadadadadadadadadadadadaeafb4bbc3cdcbc1b9b2aeadadadadadadadadadadadac9f9285796c5f5246392c1f13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57606a707e87939fa4aeb2a9a19791847b6e695e564c4347535f6a74818e98a3aebac6c4b9ada2978c7f72675d5145393940454c5254524c443e464e585f696e7a838f949da4aea9a0958d80746c61574e43392f24180c00000613202c3945515d676e7b80868d92989fa3abaea7a098928a8083909daab6b9ac9f92878590959ea5aeaba39f998f83767d88939fa8b2b9bab2ada79f99938d847d73747d858e939da0a7adb3babeb9aea3998e81756a6054473b2e2215080000000000050e161f28323a444d57606a707d87939fa6b0bac4cfc5b8ab9e928578665c5044382b2c3845515c677683909ca9abaaabadb2babebdbfbab6ac9e918478675c5145382c2b2b2b2b2b2b2b2b2b2b2221201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a7683909da9b3b1acaaacb1b9c3c0b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827568545c606a6f79808a92979fa7afbbc0c7d0c6baaea298928e8e8e8e8e8e8e8e8e8e8e8d8074675a4d4135302820160c02000000000000000000000004101d2935404b55606d7985929ea9b3becdd6e0d3c7baaea398897d706674808d8e817c8895a2afbbc5b9ac9f9287868686868686868687939facb9c6b9aca09389878686868686868686877f7265594c3f3226190c0000000000000000000000000000000e1a25303b4855626e7b8896a0acb8c5c5b8ab9f92857984919da6b0bdc7b9ada1978d8073707c8996abb5c0c1b5a89b8e82756867707d89939da9b3bebfb4aa9e948a7e71685d52453d30261c11060000000000000000000915222e3a46515b6265666666697683909ca9b6c2b6a99c8f8376696666666666616c7885929fabb8c5d2c5bfbbbab9b9b9b9b9b9b9b9b9b9babcc0c5cdd5d3cbc4bebbb9b9b9b9b9b9b9b9b9b9b8ac9f9285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f696f7c869299a4afb6bbb3a9a19691847b6e685e554b414e58616e7b86929faab4bfcabeb3a99e9285796d60554b4035343b41464746413c454e585f6a6f7b8490959fa6aebab1a79d928a7e716a5f554b4035291d10040004111d2935404b555e696e747a80868d92999fa6adaaa29f928d9095a0acb8baaea399929297a0a7aaa39f99928e87817a84919a9ea2a9acb2b9b9b1aba49f96918780818a92979ea5acb1b9bdb9b3adaaa29f93897c6f6256493c2f2316090000000000000a141d2c363e45494e58616c727f8c949ea8b2bdc7c3b7aa9d9084776a544a3f342f2f3a4653606d7986929f9f9e9e9ea1a9adb3bcc5c6b9ac9f93867a6d6053473a2f2f2f2f2f2f2f2f2f2f2f2f2e2d29251e160e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c88959fabbbbcb8b6b8bcc3cbc0b3a79a8d8074675a626f7c8895a2afbbb5a89b8f8275685c515860676d747e8590959ea5afb5bdc7c5b8ac9f92868182828282828282828282827e7164584b45413a32281e130800000000000000000000000613202c3945515d67727f8c97a1adbbc5cfdedfd6cbbfb4aa998c80736d798592938d808d99a6b3c0c7bbafa3999292929292929292929399a4afbbc7c7bbafa3999292929292929292928c7f7265594c3f3226190c0000000000000000000000000000000914212e3a47535f6a7784919daab7c4c6baada2978e818e96a0acb8c2bdb0a69e9184796d6e7b8799a3afbbc3b6a99c90837669606b74818e97a1adb9c2bcb0a69e91857a6d60594f42382e23170c02000000000000000006121e29343f4951565859595d697683909ca9b6c2b6a99c8f8376695c595959595f6b7885929eabb8c5cac1bbb7b5b3b3b3b3b3b3b3b3b3b3b3b5b9c0c8d2d1c8bfb9b4b3b3b3b3b3b3b3b3b3b3b3ac9f9285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b859298a2abb5c0c5bbb2a9a19691847a6e675d534946525e6973808d98a3aebac7c5b9ada1978c7f72675d5145392f3036393b393b454d575f6a6f7c859196a0a7b0b8c0b9aea49f92867c6e675d5145392c1f130600010d18242f3a434d575e61686d737a80878f949ea1a9aea49c999da0a7b1bcbfb4aba39f9fa2a9a29f98928d87817b747b82878d92979ea1a8acb2bab5afa8a199938d8e939ea1a9afb8bcb9b2aca9a19e98928e898074675a4e4134271b0e000000000006111b262f3e485055575759606c77828f96a1abb5c0c2b5a99c8f8276695c4f433c3c3c3c4956636f7c89989892919191969fa2a9b3bec8bbafa49a877a6e6154473c3c3c3c3c3c3c3c3c3c3c3c3c3a3935302820160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b1bdc7c4c3c4c8cdcdc0b3a79a8d80746763636f7c8895a2afbbb5a89b8f8275685c5a5a555c606c717b838e939fa4abb5c0c6baaea2988d807575757575757575757575716c625a54524c443a3024190d0100000000000000000004111d2935414b55606d7985929ea9b3becdd2d1d2d5d0c3b6a99c908376707d8a979f9386939facb9c6cbc0b5aba39f9f9f9f9f9f9f9f9f9fa4abb5c0cccbc0b5aba39f9f9f9f9f9f9f9f988c7f7265594c3f3226190c00000000000000000000000000000006121f2b37434e586673808d99aab4bfcabeb3a99e938e939ea8b2bdc0b5ab9f948b7e71676d7986929facb9c4b7ab9e9184786b59616d7a85929ea6b0bdc2b9ada1978e81746b60544a3f34281f14090000000000000000010d18232d373f464c565e6165697683909ca9b6c2b6a99c8f83766965656565605d6b7884919eabb7c4c1b8b0aaa8a6a6a6a6a6a6a6a6a6a6a6a8aeb6c0cacabfb6aea8a6a6a6a6a6a6a6a6a6a6a6a69f9285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c919fa3abb3bcc5c4bbb2a8a0969083796d655b50444d57616e7a86929fabb5c0c9beb3a99e9285796d60554b4034292a2d313b444d575f696f7c859197a0a8b1b9c2ccc0baaea2989083796d6053473a2d201407000007131d28313b454d53565e61686e747b828a92979fa6aea8a6aaacb1b9c3c6bdb4aeaca8a19e98928d86817b746e696e767b80858b91969ea1a8adb3bbb2aba49f999a9da5adb3bbbab2ada8a09e97918c86817c746e64584c3f33261a0d00000000000b17222d3841505a616464615b656d7a849199a3afbbc0b4a79a8d8174675a4e49494949494c5966737f89878685848485889297a2adbac6c0b6a194887b6e615549494949494949494949494949494746413a32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b959fabb5c0ccd0d1d4d9cdc0b3a79a8d80746d7070707c8895a2afbbb5a89b8f82756860676767676767696e79818c9399a4afbbc7bfb4aa9d928c80736d686868686868686867676767605d564c4135291d11040000000000000000020c16202c3945515d67727f8c97a1adbbc5c9c6c5c6c9cfc5b9ac9f92867975818e9ba49a939aa4afbbc8d1c7bdb5afacacacacacacacacacacafb5bdc7d2d1c7bdb5afacacacacacacaca5988c7f7265594c3f3226190c000000000000000000000000000000020f1a26313c4956636f7c8998a2aebac6c5bbafa59e9b9ea5afbac3bbafa3999083786c60667884919eabb7c4b9ac9f928679675c5e68717e8b949fabb5bfbeb3a99f93887c6f665c50443b30251a0e00000000000000000006111b252d3946525e686d72727683909ca9b6c2b6a99c8f837672727272726d676b7784919eaab7c4bbb0a69e9c999999999999999999999a9da4aeb9c5c4b9aea49c999999999999999999999999999285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4b57636d737f8b9299a2a9b3bbc5c4bab2a89f958e81776c605a5046525e6874818d99a3afbbc7c5b9ada1978c7f72675c5145382c262f3a434c565e696e7b859297a1a9b2bac3c7c0bbafa9a19a938c807366594d4033261a0d0000010c161f29333b4246535d65686a6a6e767e858f949fabb5b3b6b8bcc3cbcfc6bfb5aba196918c85807b746e696a6a68696e73797f848b91969fa2a9afb7b5afaca6a7a9afb9bcb4aea8a19e96918b857f7a746f6a645c52473c3024170b00000000030f1b27333f4953616c71716c605d686f7c86929facb9bfb2a5998c7f7266595555555555555555626f7c7c7b79787877787c85929fabb8c5bbaea194887b6e6155555555555555555555555555555554524c443a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78839099a4afbbc6d1dce0dacdc0b3a79a8d80747a7c7c7c7f8b98a5b1beb5a89b8f8275686d737373737373737373747f87939facb9c6c6bcaea49c928b7f747373737373737373737373736d685d5245392c201307000000000000000008131e2935414c56606d7a85929ea9b3bec5beb9b8b9bec5c7baaea398897c7986929faca49fa4acb6c0ccd8cfc7c0bbb9b9b9b9b9b9b9b9b9b9bbc0c7d0d9d9cfc7c0bbb9b9b9b9b9b9b2a5988c7f7265594c3f3226190c000000000000000000000000000000000913202d3a4653606d7985929facb8c5cdc1b7afaaa8aaafb7c1beb2a99f92877c6f655b6a7783909daab6c3bbaea39986796d6056626c76828f99a3aebbc4bbafa49a9083786d60574d42362a1b11060000000000000000000714212e3a4754616d7a7f7f7f84919eabb7c4b7aa9e91847f7f7f7f7f7f796d6a7784919daab7c4b7aa9e948f8c8c8c8c8c8c8c8c8c8c8d929da8b5c1c1b4a89c928c8c8c8c8c8c8c8c8c8c8c8c8c8c86796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16232f3b47525b636d737e879297a2a9b3bbc5c3bab1a79e938c80736c61584e4c56616e7b86929facb6bebab8b1a99e9185796d6053473a2d2d38414b555e686e7b849197a1a9b2bbc3c6beb6afa59e96918880796d6053463a2d201307000000040d17212931404d59656f7576767676767a828f99a3afbbc3c4c8cdd5d4c7bbafa49991847f7a76767676767676756f61676d72787e848b92979ea5afbdbbb9b3b4b6babeb4aaa29f96918b847e79736d68626058524a41362b1f14080000000005121f2b3744505b65717e7e746d67606d7a86929facb9c0b5ab978a7d71645f6262626262626262626a6f6f6e6d666b6b6a74818e9aa7b4c1bbaea194887b6e62626262626262626262626262626262615e564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666f7c87939fabb4bfcbd7e2dacdc0b3a79a8d80747d8989898b919ba7b3c2b5a89b8f82756d7a808080808080808080808083909daab6c3cec0b6aea49f9287818080808080808080808080807a6d6054473a2d21140700000000000000010d1925303945525d68727f8c97a1adbbc1bbb3adabadb3bbc5bfb4aa988c7f7e8b98a2aeafacafb6bec7d2cec5bcb6b1afadadadadadadadadb0b2b7bdc6cfcbc2b9b3afadadadadadadada5988c7f7265594c3f3226190c0000000000000000000000000000000006121f2c3844515c6676828f9ca9b5c2d0c9c1bab6b4b6bac1c6b9ada1978d80746a5f53697683909ca9b6c3bfb5a093877a6d60545a626e7c87929fa8b2bdc0b6aca0958c7f72695e5246382d22170b0000000000000000000916222f3c4955626f7c888c8c9196a1acb9c5b9aca096918c8c8c8c8c877a6d6a7784909daab7c2b5a89c8f8280808080808080808080808d9aa6b3c0bfb3a6998c80808080808080808080808080807f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a354049525b636c717d859297a2a9b3bbc5c2b9afa59c928a7e716a60564c535e6974818e9aa4afb3adaba7a09d978b7f7265584c3f32333f49535d676e7a849196a1a9b3bbc4c4bcb4aca49f938f847d736d665c5145382c1f130600000000050f172835424f5b6875818383838383838387929facb9c5d2d4d9dfd2c6b9ac9f9387838383838383838383838175685d60666d71797f858e939eabb5c0c6c0c1c2c0b6aca298928c847e79716d67615d56544e4641382f241a0e03000000000613202d394653606c78838a80796e696f7c8999a3afbbbbafa399887c6f626a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f727f8c99a5b2bfbbaea194887b6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54606a74818e99a3aebac6d1dcdacdc0b3a79a8d80747d8a9696989ba3acb7c2b5a89b8f82756e7b878d8d8d8d8d8d8d8d8d8d90959fabb8c4d1c8bfbbafa399928d8d8d8d8d8d8d8d8d8d8d8d877b6e6154483b2e2115080000000000000005111d2935414c56606d7a85929fa9b3beb8b0a9a19ea1a9b3bec1b5a89b8e81828f9caab4bbb9bbc0c7d0d9c7bcb3aba5a2a0a0a0a0a0a0a0a0a4a6acb4bdc8c4b9b0a8a2a0a0a0a0a0a0a0a0988c7f7265594c3f3226190c0000000000000000000000000000000004101c2834404a5466727f8c99aab4bfcad6cbc6c7c0bbb9bbbcb0a69e91847a6d60585c6976828f9ca9b5c2baada194877a6e6154535f6a73808d96a1adb9c2beb1a79f92867b6e6153493f33271b0f0300000000000000000916222f3c4955626f7c8895989ea1a8b2bdc9bdb2a8a09e9898989894877a6d6a7784909daab7beb1a4988b7e737373737373737373737a8794a1adbab9aca093867973737373737373737373737373726d63574b3e3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d19242e374049515a616b707c859297a2a9b3bbc5c1b7aea49f92867c6f685d524d57626e7b87939faca9a29f9a95908b868073665a4d40333c44505b656d79839096a0a8b2bbc5c3bbb2aaa29a938c817a706b605c544b4034281c10040000000000111e2b3744515e6a7784909090909090909299a3afbbc5c6cacfd7d4c7bbafa499939090909090909090909084786b5e545c60676d727a818e99a4afbbc7cccdc8bbafa49a92867f79726d66605c55524c47433d342f261d1308000000000713202c38444f5964707d8a928d837b6f727f8c98abb5c0b9ac9f9286796d626f7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c808d9aa7b3c0bdb0a3978a7e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424e58616e7b86929faab4bfcbd7dacdc0b3a79a8d80747d8a97a3a5a7acb5bec2b5a89b8f82756e7b87949a9a9a9a9a9a9a9a9a9d9fa7b1bcc8d4d7cbc0b5aba39f9a9a9a9a9a9a9a9a9a9a9a94877b6e6154483b2e211508000000000000030e18212d3946525e6873808c97a2adbbbdb0a69e979297a1adb9c5b8ab9f928587929facb9c5c6c8ccd2d9cdc1b6aba199969393939393939393979aa2acb7c2bfb3a89e969393939393939393938c7f7265594c3f3226190c00000000000000000000000000000000000c18232e3c4956636f7c8998a2aebac6d3d1c7bdb5afacafb4aa9f948a7e71675d515c6875828f9ba8b5c2baaea194877b6e61544e58606d7984919ea6b0bbb2ada69f988e8275655b5044372b1f120500000000000000000916222f3c4955626f7c8895a2abacb2bac4cec4bab2acaaa5a5a5a094877a6d6a7783909daab6beb1a4988b7e7166666666666666666e7a8794a1adbab9aca09386796d66666666666666666666666666635b51463b2f22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252e3740485059606a6f7c859297a2a9b3bcc6bfbaaea39891847a6d605b51535f6a75828f9b9f9c97928d88837e7a736e63584b3f3c454f59606c77818f95a0a8b2bac4c3bab2a9a19892887f756d686059514b42392e23180c000000000004111e2b3744515e6a7784919d9d9d9d9d9d9fa3abb5b4b8b9bec5cdcfc6bfb5aba49f9d9d9d9d9d9d9d9d9d9184786b5c605c555c6069707d86939facb9c6cbd0c6b9ac9f93877c736d67605c54514b46413a37322b221d140b01000000030e16222f3b4854606b7683909d9590857d76828f9ca9b6c2b7aa9d908477676b78848888888888888888888888888888888888888d929da9b5c1beb2a69a908a88888888888888888888888888888888887e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3c46535e6974808d98a3aebac7d2ddcdc0b3a79a8d80747d8a97a4b0b3b7bec7c2b5a89b8f82756e7b8794a1a6a6a6a6a6a6a6a6aaabb1b9c3cdd8dcd1c7bdb5afaca7a6a6a6a6a6a6a6a6a6a194877b6e6154483b2e21150800000000000009141f2a36414d56616d7a85929fa9b3beb5ab9e948f85929eabb8c5baada297929299a3afbbc4ced4d8ddd6cabdb1a5998f8987878787878787878a909aa6b2bebbafa2968c878787878787878787877f7265594c3f3226190c00000000000000000000000000000000000713202d3a4653606d7985929facb8c5d2cbc0b5aba39fa3aba2988f82766c61554c5b6875828e9ba8b5c1bbaea194887b6e615548515d67717e8a949fabafa9a19e948f8780786c605346392d2013060000000000000109111a222f3c4955626f7c8895a2afb9bdc4ccc8ccc4bdb9b7b2b2ada094877a6d6a7783909daab6beb1a4988b7e716b6b6b6b6b6b6b6b6e7a8794a1adbab9aca09386796d6b6b6b6b6b6b6b6b6b6b6b636059514940352a1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c252e363e474f58606a6f7c859297a2aab4bdc7bfb4aaa1968f81756d62584e58626f7c889494908b85817c77726d68635c524739424d57616b737f8c939ea7b1bac3c3bab2a8a09691867e736d615e564f45403930271d1207000000000004111e2b3744515e6a7784919da9a9a9a9a9aca8a8a8a8abadb3bbc5c6bcb4aeaca8a8a8a8a9a9a9a9a9a99e9184786b666d66605b666e7b859299a4afbbbfbec3c4bbafa49a8e81756c6156514a45403935302b272019100b020000000009151f2b37434e5863707d89959f9f9791877f86929facb9c1b4a89b8e8175686b78849195959595959595959595959595959595959a9da4aeb9c5c2b6aba29a97959595959595959595959595959595958b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2a36424d57616e7a86929facb6c0ccd8cdc0b3a79a8d80747d8a97a4b0bdc3c9cbc2b5a89b8f82756e7b8794a1aeb3b3b3b3b3b3b3b6b8bcc3cbd4d4cfcbcfc7c0bbb9b4b3b3b3b3b3b3b3b3aea194877b6e6154483b2e2115080000000000020e1a26313946525e6873808d98a2aebbbbafa4998f82808d9aa7b3c0beb3a9a2989298a0a8b2bdc9d5e2e8d5c9bcafa296897d7a7a7a7a7a7a7a7a7e8a97a4b0bdbaada093877a7a7a7a7a7a7a7a7a7a796d6053463a2d201307000000000000000000000000000000000006121f2c3844515c6676838f9ca9b6c2cfc7bbafa39992999f9f92867b6e615a504f5b6875828e9ba8b5c1bbaea194887b6e6155484b55616c76829099a3a39f96918a827b736c655b5044372b1f12050000000000010a131b232c343c4955626f7c8895a2afbbbcbbbbbbbbbbbbbbbbbbbaada094877a6d6a7783909daab6beb1a4988b7e787878787878787878787a8794a1adbab9aca09386787878787878787878787878786f6b6054483b2f22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242d353d464e585f6a6f7c859298a3abb5c0c6bcb2a89e938b7f726a605554606a76828d88837e79746f6a65605d56524a40404a545f69707d88939fa5afb9c3c3bab2a8a09691847c716c635b524c443d342e271e150b00000000000004111e2b3744515e6a7784919daab6b6afa59e9b9b9b9b9ea2a9b3bebfb4aaa39f9b9b9b9b9ea5afb6b6ab9e918478676d79706b606c78828f97a1abb5b7b3b1b6b8bcb6ac9e938a7e71685d52463b342e29241e1b150f070000000000020e1a26313b4754606a76828f9ca7a9a199928b9298a3aebabeb4aa988c7f72656b7884919ea2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a7a9aeb6c0cbc8bdb4aba6a3a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b1a25313b46525e6874818e9aa4afbbc8d4cdc0b3a79a8d80747d8a97a4b0bdbebebebeb5a89b8f82756e7b8794a1aebabababababac0c3c4c8cdd4d0c8c3bfbec4c5c7c5c0c0c0c0c0c0c0c0baaea194877b6e6154483b2e211508000000000005121e2a36424d57616e7b86929faab4beb4ab9f93877c7e8b98abb5bfc5b8ac9f92869196a0acb9c1d0d9e3d5c8bbafa295887c6f6d6d6d6d6d6d707d8996a3b0bcb9ac9f9386796d6d6d6d6d6d6d6d6d6d675c5145382c1f1306000000000000000000000000000000000004101c2834404a546774808d9aa7b3c0d1c5b9ac9f92868f94958c7f72695e53484f5b6875828e9ba8b5c1bbaea194887b6e61554843505a626f7c87929f99928d847e766e69605b53493f33271b0f0300000000000a131c252d353e464e56626f7c8895a2afb8afafafafafafafafafafafada094877a6d6a7783909daab6c3b8ac9f92868585858585858585858585929eabb8c5baada1958a858585858585858585858585857d6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121b232b343c464e585f6a6f7d869299a4afbbc0c4baafa59f92867c6f675d5158636f7d807b76716d67625f5854524c43403844515c666e7b85929aa4afb8c1c3bab2a8a09691847b6f6a615a5146413a3228231d150c0300000000000004111e2b3744515e6a7784919daab7b6aa9e938e8e8e8e9297a2adb9baaea398928e8e8e8e939eaab6b7ab9e9184786d79837d706a727f8b949fa9b3b5aca7a5aaacb1b9afa59e92857a6d61574d42362a1e19130f0a0400000000000006121e2b37424d57626f7c88949fabb3aba39f989fa3aab4bfbaaea298897c6f626b7884919eabafafafafafafafafafafafafafafafb3b5b9c0c8d2cfc6bdb6b2b0afafafafafafafafafafafafafafa4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36414c56626e7b87939facb9c4cecdc0b3a79a8d80747d8a97a4b0b2b2b2b2b2b2a89b8f82756e7b8794a1aeaeaeaeaeaeaeb6b7bcc2cbd0c6beb7b2b1b7b8bdc3cccdcdc9c1bbb6b5aeaea194877b6e6154483b2e21150800000000000714212d3a46535f6974808d98a2aeb9baaea3998e81747c8899a3aebbc3b6a99c908284919ea6b0bdc7d2ddd5c8bbafa295887c6f626060606063707d8996a3b0bcb9ac9f9386796c6060606060606060605c554b4034281f14080000000000000000000000000000030606070c18232e3e4b5865717e8b98abb5c0cbbcb0a396897d828a9083786c60574d424f5b6875828e9ba8b5c1bbaea194887b6e6155483e47535f6a74818d9490878079716c625f57504941382d22170b000000000007121c252e373f474f585f686f7c8895a2adaba2a2a2a2a2a2a2a2a2a2a2a2a094877a6d6a7783909daab6c3baaea29892929292929292929292929297a2adb9c6c6b9ada197929292929292929292929292897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091119222b343c464e58606b707e87939fa4aeb8c2c1baaea3999184796d605854606b6f736e6964605d55534e4745413a38424e58606d78839098a2acb6c0c5bbb2a8a09691847b6e6960585048403530282018120b030000000000000004111e2b3744515e6a7784919daab7b5a89b8e8181818185929eabb8b9ac9f9286818181818e9ba8b5b7ab9e91847874818e867c6f7b86929fa6b0b6aca39b989da0a7b1b9ada2978d8073695e53463a3025190d0200000000000000000814212e3a47535f6975828e9ba6b0bdb4aeaca5acaeb4bcc5b8ab9f9285796d606b7884919eabb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8b9bec5cdd6d8cfcdc5beb9b8b7b7b7b7b7b7b7b7b7b7b7b7b1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1925303b47535f6a75828f9ca8b2bdc9cdc0b3a79a8d80747d8a97a4a5a5a5a5a5a5a5a59b8f82756e7b8794a1a1a1a1a1a1a1a1a9abb0b8c2c8beb4aca6a4aaacb2bac3cfccc1b7afaaa8a1a1a194877b6e6154483b2e21150800000000000815222e3b4855616e7b86929da0a7acb2aa9f92867b6e7986929facb9c5b8ab9e92857d8a949eabb5c0ccd7d5c8bbafa295887c6f625554545663707d8996a3b0bcb9ac9f9386796c60545454545454545454524d443b3025190e020000000000000000000000060b0f1213141416222f3c4955626f7c8899a3afbbc7bcb0a396897d767d847c6f665b5045424f5b6875828e9ba8b5c0bbaea194887b6e6155483b434e58616d7a858b827c736d67615a534d443f382f261b110600000000020d19232e3740495159616a6f7a83909da9a19e9595959595959595959595959594877a6d6a7783909daab6c3bfb4aaa29f9e9e9e9e9e9e9e9e9e9e9ea2a9b3becacabeb3a9a19e9e9e9e9e9e9e9e9e9e9e96897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222a343c464f59616c727f8b929da6b0bac4bfb4aba0968d80736a605459606367625f5753514b47433c3935343f4a54606a73808d95a0aab3bec7bdb3a9a09691847a6e695e574e463e3629251e160e0700000000000000000004111e2b3744515e6a7784919daab7ada094877a75757783909daab6b8ab9e9285787575798693a0adb7ab9e9184787e8a9392857b818e98a2aeb8aea49b918b9095a0aab4b3a99f92867b6e61564c41362a1c110b05000000000000000815222f3b4855626e7b87939facb9c1bfbab9b2b9babfc6c2b5a99c8f8276665c6b7884919eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabadb3bbc5cfdacfc5bbb3adabaaaaaaaaaaaaaaaaaaaaaaaaaaa4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2b37424e5763707d8996a0acb9c7d1c0b3a79a8d80747d8a97989898989898989898988f82756e7b879494949494949494949c9fa6b0bcc3b7aca29b979ea0a8b2bdc6c6bbafa59e9b94949494877b6e6154483b2e21150800000000000916222f3c4955626f7c838a90959ea0a8a2988d8074697783909daab7c3b9ada297877b828f99a4afbbc6d1dcc8bbafa295887c6f626161616163707d8996a3b0bcb9ac9f9386796c616161616161616161615e564d41362a1e1105000000000000000000020a11171c1f20202020202d3a4753606d7986929facb9c5beb1a5988b7e7270796f6a5f544a3f424f5b6875828e9ba8b4b4b4aea194887b6e6155483b3c46525e68717e7e766f6a605d555047423c332d261d140a000000000006121e2a354049515b626b707c8490959fa197928988888888888888888888888888877a6d6a7783909daab6c3c5bcb4aeacabababababababababababadb3bbc5cfcfc5bbb3adababababababababababa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222a343d47505a626d73808d949fa8b2bdc6bdb2a89f93877c6f665c5154565a55534d4745403937322c2c3844505c666f7c87939fa7b1bcc5c0b5aba29791847a6e685e564d453c342c2419130c040000000000000000000004111e2b3744515e6a7784919daab7ada094877a6d6d7783909daab6b8ab9e9285786d6d7a8693a0adb7ab9e91847b85929f97918588939faab4b0a69c928b7e839098a3aebaaea3988e8174685e5246382e231c160f080000000000000e1b2834414e5b6774818e98a0a8afbbc0c7c5bec5c7cbc8bcb1a7988c7f7265546b7884919d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9ea1a9b3bec9d5cabeb3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c4653606c7884919eabb5c0cbc0b3a79a8d80747d8a8b8b8b8b8b8b8b8b8b8b8b8b82756e7b8787878787878787878790949fabb7bfb2a69b908b9196a0abb4bfc3b6aa9e938f87878787877b6e6154483b2e21150800000000000815222e3b4754606a6f787d838a91969e9f92857a6d6874818e9ba7b4c1beb3a9968a7d7c87939fabb5bfcbd7c8bbafa295887c6f6e6e6e6e6e6e707d8996a3b0bcb9ac9f9386796e6e6e6e6e6e6e6e6e6e6e685e5246392d2014070000000000000000020b141c22282b2d2d2d2d2d2d3845515c677784919daab7c4c0b3a69a8d8073666c665f584e4238424f5b6875828e9ba7a7a7a7a7a194887b6e6155483b36414c56626c71716c625f58514b433e373128231c150c0300000000000a16232f3b46515b636d727d8691969fa79e92857c7c7c7c7c7c7c7c7c7c7c7c7c7c7c786d6a7783909daab6c3cec5bfbab8b8b8b8b8b8b8b8b8b8b8b8b9bec2c2c2c2c2c2beb9b8b8b8b8b8b8b8b8b8afa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071018222b343e48515b606d78828f96a1abb5bfc3bbafa4999083796d60574d494d4847423c38352f2b262a36414c56606d78839099a4afb9c3c3bbafa39992857b6e685e564d443b332b221a120802000000000000000000000004111e2b3744515e6a7784919daab7aea194887b7a7a7a83909daab6b8ab9e92857a7a7a7b8794a1adb8ab9e9184839098a2a19691939aa4afb3a99f948c80737c86929fa8b2b4aa9f92867a6d61544a3f342c272119110800000000000b1825313e4b5864717e8691959ea5afb6bec6ced2d3d1c5b8aca095887b6e615e6b78849191919191919191919191919191919191919297a1adb9c6d2c6b9ada197929191919191919191919191919191918b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009151f2b3744505b65727f8c99a3afbbc7c0b3a79a8d80747b7f7f7f7f7f7f7f7f7f7f7f7f7f7d706d787b7b7b7b7b7b7b7b7b7b82909ca9b6beb1a4978b7e849199a3aebac2b5a89b8f827b7b7b7b7b786d6053463a2d201307000000000006131f2b37434e5860656c71787e848b91968c7f736865727f8c98a5b2bfbfb2a6998c7f74818e99a3aebbc7d2c9bdb0a3968a7d7b7b7b7b7b7b7b7b7e8b97a4b1bebaaea194877b7b7b7b7b7b7b7b7b7b7b7b6e6154473b2e21140800000000000000000a141d262d3338393a3a3a3a3a3a404b556875828f9ba8b5c2c2b5a89b8f827568605b544e463c3a424f5b6875828e9a9a9a9a9a9a9a94887b6e6155483b3a3a44505a626564625a534e45413a3a3a38342e261e150a00000000000c1925323e4b57636d737f879298a1a8ada1978b7f726f6f6f6f6f6f6f6f6f6f6f6f6f6d666a7783909daab6c3cbc3bcb8b7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b9bbc0c5c5bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222c363f44505c666d7a849199a3aebbc2c0b5aba0958c8073695f5347403b3a37312c29241d222d3946525e68727f8c95a0abb5c0c3baafa59f92877d70695f564d443b3229211910080000000000000000000000000004111e2b3744515e6a7784919daab7b0a3988d888787879095a0acb8b9ada29792878787878d97a3afb9ada1969190959faaa9a19e9fa4acb6ada1978f82776c73808c96a1adb9aea3988c7f72665c50443c38332b23190f05000000000a1724303d4956626c717c838f939fa4acb4bcc6d0dbd0c3b7aa9d908477695f5c69768284848484848484848484848484848484848485929eabb8c1c8c5b8ab9e9285848484848484848484848484848484847e7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953616e7a86929facb9c5c0b3a79a8d80746e72727272727272727272727272706b666d6e6e6e6e6e6e6e6e6e76838f9ca9b6bcafa396897d7c86929fa6b0bcb9ac9f93877c6f6e6e6e6d665c5044382c1f12060000000000030f1b27323c464e535b60666c71787e848b85796d6063707d8a96aab4bfc1b4a89b8e81757b86929fabb5c0cccabeb1a59a8f8a87878787878787878b909ba6b2bfbcafa3978d878787878787878787878783766a5d5043372a1d100400000000000006111c262f383f4446474747474747474d5a6774808d9aa7b3c0c3b6a99d9083766a54504a47474747474f5b6875828d8d8d8d8d8d8d8d8d887b6e615548474747474750565858565047474747474746443f3830261c1106000000000d192633404c5966737f8c9399a2aab2b3a99f92857a6d64646464646464646464646464626a7783909daab6c3c3b9b1acaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8acafb5bdc7bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a2428343f4a545e686f7c87929fa6b0bcc5bdb1a79f92877b6e62594f42382e2b261f1d18202b37434e58616e7a85929fa7b1bdc7bdb1a89d938b7f726b60574d443b322920170f07000000000000000000000000000004111e2b3744515e6a7784919daab7b4a99f98949393939da0a7b1bcbeb3a9a29e93939394979fa9b4bdb2a8a19e9d9fa7b1b2adabacafb6b0a69e92857a6e656d7984919ea9b3b4aa9e9184796d60534a48443d352b21160b000000000815212d3945505a626a6e79818c939aa2aab4bfcad6ccc0b3a6998d8073695f576670767777777777777777777777777777777777777f8c98aaafb8bcc3b8ac9f92867f797777777777777777777777777777706c6155493c3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3846525e6875828f9baab4bfc0b3a79a8d8074676565656565656a6f7b756f6b6563615c6061616161616161616976838f9ca9b6bcafa396897c727f8c949faab4bbafa4999083786c6161605c544a3f34281c10030000000000000a15202b343c444d52545b60666d71797e7e71675d616e7b8798a2aebac3b7aa9d90847774818e99a4afbbc7d4c2b6aba19a969494949494949494979ba2acb7c3c0b4a99f97949494949494949494949083766a5d5043372a1d10040000000000000b17222d38424a505353535353535353535965727f8c98a5b2bfc4b8ab9e918578665c53535353535353535865717e818181818181818181807a6d615453535353535353535353535353535353535353504a42382e23170c000000000a1723303d4a5663707d89949eabb4bcbaada2978d8073717171717171717171717171716e6a7783909daab6c3bcb1a7a09d9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa3abb5c0bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081217232e38424c56606a727f8b949faab3bec3bbaea3998f82756b60544a3f34281e15101b27323a47535f6a74818e98a2aeb9c3c0b5aba0958e81746d62594f453c322920170e0500000000000000000000000000000004111e2b3744515e6a7784919daaaeaeaea9a3a1a0a0a0aaacb1b9c3c5bbb3adaba0a0a0a1a3a9aeaeaeaeb2adaba9abb1b9bdb9b8b9bbb7ab9f948b7e71685e67727f8b97a1adb9ada196897d70635456544f473d33271c100400000005111d29343e4850585f676d777f889298a2aebac6d3d1c4b8ab9e91857b6e695e5e66696a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a727f8c989ea5acb1babaaea298928c847d756e696a6a6a6a6a6a6a6a6a6a64615a5044392d20140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b2a36414c5664717e8a98a2aebac1b4a89b8e8175665c58585858626f7c86817c77716d66615e5654555f5f5f5f5f6976838f9ca9b6bcafa396897c7077828f98a2aebab5ab9f958b7e71675c53504a42382e23170c0000000000000005111e2a36414d565e6162626262666d72716c6262626c7985929facb8c5b9ac9f9286796e7b87939facb9c3cec8bdb3aba5a3a1a1a1a1a1a1a1a1a4a6acb4bec8c5bbb1a9a3a1a1a1a1a1a1a1a1a19d9083766a5d5043372a1d10040000000000030f1c28333f4a545b6060606060606060606064717d8a97a4b0bdc6b9ac9f9386796d60606060606060606060606c71747474747474747474746d686060606060606060606060606060606060606060605c544a3f34281c10030000000916222f3c4854606b75828f99a3aebbbeb3a99f92867e7e7e7e7e7e7e7e7e7e7e7e7e7e7c6e7783909daab6c3b8aca095908f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9299a3afbbbcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444e58626d76828f98a2aebac2bfb5ab9e94897d70665c50443a2f2419131f2b37434e58626f7c87939faab4bec7bbafa3999183796d605b51473d332a20170e050000000000000000000000000000000004111e2b3744515e6a7784919da2a2a2a2a2a2a2a2a2a2aaacb1b9c3c5bbb3adaba2a2a2a2a2a2a2a2a2a2a9a19e9ea1a9b2bec7c4c6bdb2a89c9082766c6464646d7985919eabb8b2a89a8d817466646360594f44382c201307000000000c17222d363e464e555d656c737e86929facb8c5d2d2c6b9ada19791847b6e685d545c5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e63707d868f939da0a7adb3b4aaa29f96918a827b736d6761595e5e5e5e5e5e575550483e33281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1925303b4753606d7985929facb8c5b8ab9f9285796d60534c4e586673808c8e89837e79736e68615f626c6c6c6c6c6c76838f9ca9b6bcafa396897c706e7b86929fabb8bdb1a79e9184796d60554c413830261c1106000000000000000714202d3946525e686e6e6e6e6e6e6e6e6e6e6e6e6e6e7783909daab6c3baaea399887b6e75828e9ba7b1bcc8d4c5bdb6b1b0aeaeaeaeaeaeaeaeb1b2b7bec6d0cdc3bbb4afaeaeaeaeaeaeaeaea99d9083766a5d5043372a1d1004000000000006121f2b3844505b666c6d6d6d6d6d6d6d6d6d6d6f7c8996a2afbcc7bbafa499877b6e6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d665c5044382c1f12060000000713202c38444f59626e7b86929fa9b3bebaaea298928b8a8a8a8a8a8a8a8a8a8a8a8a8a7f727783909daab6c3b7aa9d908382828282828282828282828282828282828282828282828287929facb9bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e29323d46515b616e7b85929fa6b0bcc6bdb0a69d9183786d60554c4135291d15222e3b4754606a75828f99a4afbcc5bdb2a89f92877c6f675d51493f352b21180e05000000000000000000000000000000000009141f293344515e6a77849195959595959595959595959da0a7b1bcbeb3a9a29f959595959595959595959597929197a1acb6c0ccc5b9aca096897c70707070707073808d99a6b3b8ab9e9185787070706b6054483c2f2216090000000006101b242d333c434b535b606c727f8b98a5b2becbd5c9beb3a9a19691837a6d665c5349515151515151515151515151515155616b707b828991959fa2a9afb4aea8a09e938f867f79706b615f57514b51514a49443e362c22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2c3945515d6775818e9baab3bebaada2978a7d7063544a535f6a7784919b95908a857f7a746e696e79797979797979828f9ca9b6bcafa396897d7979797e8b98a5b2bbb9aca1968c7f72675d51453a2f24180d01000000000000000814212e3b4754616e7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b828f9ca8b5c2bfb4ab978a7d706f7c8995a0acb8c6d0cfc8c2bebdbababababababababcc1c2c6cbd2d5cdc5c0bcbababababababab6a99d9083766a5d5043372a1d100400000000000613202d394653606c787a7a7a7a7a7a7a7a7a7a7a7c8895a1aebbccc0b5ab96897d7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786d6053463a2d20130700000004101c27333d47535f6974808d97a2adb9bfb4aaa29f979797979797979797979797978b7f727783909daab6beb1a4988b7e75757575757575757575757575757575757575757575757985929facb8bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17202b343f46525e69717e8b949eaab4bfc1b8aca0958b7f72675d51453a2f241f2b37434e58626f7c89939eabb5c0c7b9aca0968d80736a60554b40372d23190f060000000000000000000000000000000000020e1a25313b454d5e6a77848888888888888888888888889095a0acb8baada297928888888888888888888888888584919aa4afbbc3c4b7aa9e91847e7d7d7d7d7d7d7d7f8c98a5b2b9ada1978b7f7d7d7d7063564a3d3023170a000000000009121b212a313a414b55606d7884919daab7c4d0d4cfc4bbb2a8a0959082786d655b50444b515354545454545454545454545961696e757d838b92979fa4abb2b2aca69e98928c847d756e69605d555048413c39332c241a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b5563707d8a98a2aebabeb3a99b8e8174665c5054626f7c8895a09f9d97918c86817b6e7b8786868686868688939facb9c6b9ac9f938786868687929ea1a9b2bdb2a89e92857a6d60554b4135291d1207000000000000020f1b2835424e5b68758188888888888888888888888888888f949eaab7c3beb1a4978b7e716b7783909daab4bfcad6cfc7c0bbb9b0b0b0b0b0b0b0b0b4b6bac1c9d2d7d3c9c1bbb6b5b0b0b0b0b0a99d9083766a5d5043372a1d10040000000000091623303c4956636f7c8686868686868686868686888e98a4b0bcd2c7b1a5998f89868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164584b3e3125180b000000000b16212b37424d57606d7a85929ea9b3bebcb4aeaca4a4a4a4a4a4a4a4a4a4a4a4988b7f727783909daab6beb1a4988b7e716969696969696969696969696969696969696969696c7985929facb8bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e19222a36424d57626c76828f98a2aebac4bcb1a79e92857a6d60554b413529212e3a47535f6a75828f9ca5afbdc7bdb0a69e9184796d60584e43392f241b110700000000000000000000000000000000000005121e2a36424d575e616e7b7b7b7b7b7b7b7b7b7b7b7b7c83909daab7b8ab9f92857c7b7b7b7b7b7b7b7b7b7b7b7b7d88939fa7b1bcc5b9aca096918a8a8a8a8a8a8a8a8c919ba7b3beb3a99b918b8a8a84776b5e5144382b1e11050000000000090f1a232c3945515d67717e8b95a0acb8c5cbc7c5c7c4bab1a79f948e81776c605a50555c606161616161616161616161616161616b70787f858e9399a0a8b2b9b0aaa39f96918a827b736d67615a534a41362b221a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3a4653606d7985929fabb8c5b8ab9f9285796d60535b6673808d9aa8aba9a19e9892867a6e7b88929292929292939aa4afbbc7bbafa4999392929292979197a1abb5b9ada2978c7f73675d5145392f24180c000000000000020f1b2835424e5b6875818e959595959595959595959595959c9ea6b0bbc7beb1a4978b7e7165717e8b98a2aebac6d1c7bdb5afaca3a3a3a3a3a3a3a3a7a9afb7c1cbd7ccc1b7afaaa8a3a3a3a3a3a39d9083766a5d5043372a1d10040000000000091623303c4956636f7c89939393939393939393939598a0a9b4c0ccc1b6aba199969393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938b7e7164584b3e3125180b00000000050e1a26313c45525d68737f8c97a2adbac5bfbab8b1b1b1b1b1b1b1b1b1b1b1a5988b7f727783909daab6beb1a4988b7e716563636363636363636363636363636363636363636c7985929facb8bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a25303b45505a616e7b86929fa8b2bdc3b9ada2978c7f73675d51453a2f2a36424d57626f7c87939facb9c1c0b5ab9f948a7d70675d51463c31271d1209000000000000000000000000000000000000000714212d3a46535e696e6e6e6f6f6f6f6f6f6f6f6f6f6f7783909daab6b8ab9e9285786f6f6f6f6f6f6f6f6f6f6f6e74808d95a0acb8c1bdb2a8a09e9797979797979797989ba3adb8c4bbada39b98979184776b5e5144382b1e110500000000010b151f2a36424d57606d7984919ea8b1bdc7c0bbb9bbc0c3b9b0a69e938c80736c61585c676d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e727a81879196a0acb9bcb4aea8a09e948f868079706c645c53483c3024180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c3845515c6675818e9babb4bfbaada297897c706356606c7884919eabb8b3ada99c8f82766e7b88959f9f9f9f9f9fa4acb6c0ccc0b5aba49f9f9f9f9e91859199a3aebbb3a99e92857a6d60554b4035291c11060000000000020f1b2835424e5b6875818e9ba1a1a1a1a1a1a1a1a1a1a1a1a8aab0b8c1ccbeb1a4978b7e71646d7a85929facb8c4cbc0b5aba39f97969696969696969b9ea5afbac6d2c6bbafa59e9b969696969696969083766a5d5043372a1d10040000000000091623303c4956636f7c8996a0a0a0a0a0a0a0a0a0a1a4a9b2bbc6d1c7bdb3aba5a3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0978b7e7164584b3e3125180b000000000009151f2935414c56606d7a85929fa9b3becac6c5bebdbdbdbdbdbdbdbdbdb2a5988b7f727783909daab6beb1a4988b7e71707070707070707070707070707070707070707070707985929facb8bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333f46535e6973808c96a1adb9c3beb3a99e92857a6d60554b40352d3a46525e6975818e9aa4afbbc7bbafa4998f82766c61554b40342b1f150b00000000000000000000000000000000000000000815212e3b4854616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b83909daab7b8ab9f92857b7b7b7b7b7b7b7b7b7b7b7b7b7b7983909da5afbcc4bab2acaaa3a3a3a3a3a3a3a3a5a7adb5bfcdbfb5ada7a59e9184776b5e5144382b1e11050000000007121d27313946535e6973808c97a1adbac3bdb5afacafb5bdc2b8afa59f93887e706a5f606d797b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7d84919eaab7c4bfbab2aca69e98928c847d746f64584c4033271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b5464717e8a99a3aebabeb3a99a8d8073675763707d8996a1adb9b9ada1978a7d716e7b8895a1acacacacacafb6bec7d2c7bdb5afacacaca5988c7f87929faab4b9ada2978c7f72675d5145382d22170b0000000000020f1b2835424e5b6875818e9ba8aeaeaeaeaeaeaeaeaeaeaeb5b7bbc1cacabeb1a4978b7e71646774818e9ba8b2bdc7bbafa399928a898989898989898e939ea9b6c2cfc3b6aa9e938f898989898989898983766a5d5043372a1d10040000000000091623303c4956636f7c8996a2adadadadadadadadaeb0b4bbc4cdd7cec5bdb6b1afadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadada4978b7e7164584b3e3125180b0000000000030d1924303a45515d67737f8c97a2adbac6d0d2cfc7c0bbb9b7b7b7b7b7b2a5988b7f727783909daab6c0b3a79a8d807d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d86929facb8bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17212a36424d57606d7984919ea7b1bcc5b9ada2978c7f72675d51453934404b55616e7b86929facb6c0c0b5ab9f93877c6f625a5043392f22190d030000000000000000000000000000000000000005121e2b3845515e6b788488888888888888888888888888889095a0acb8baada2979288888888888888888888888888877b7c89939eaab4bfc4bdb9b7b0b0b0b0b0b0b0b0b2b3b8bdbdbdbdbdb8b7aa9e9184776b5e5144382b1e1105000000000c18232f39434f59616e7b86929fa9b2bec0b5aba39fa3abb1b9c1bbafa49a92867c6f6763707d8787878787878787878787878787878787878787878a9196a0acb9c5cbc4bdb9b0aaa39f96918a8174675b4e4134281b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3a4754606d7a86929facb9c4b7aa9e9184776a5f6775818e9ba8b2bdb5ab9e9185796d6e7b8895a1aeb9b9b9b9bbc0c7d0d9d0c7c0bbb9b9b0a3978a7e808d98a3aebab3a99e9285796d60544a3f33281c0f0300000000020f1b2835424e5b6875818e9ba8b4bbbbbbbbbbbbbbbbbbbbc2c3c7cccfcabeb1a4978b7e716463707d8996a1adb9c5b9ac9f92867e7d7d7d7d7d7d7d818e9ba7b4c1c8bdb2a89b8f817d7d7d7d7d7d7d7d7c6f6256493c2f231609000000000000091623303c4956636f7c8996a2afb9b9b9b9b9b9b9bbbcc0c6cdd6dfd7cec7c1bdbcb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b1a4978b7e7164584b3e3125180b00000000000008131e2935414b55606d7a85929faab4bfcad1c7bdb5afacaaaaaaaaaaaaa5988b7f727783909daab6c3b5a99d928d8989898989898989898989898989898989898989898989899298a3aebabcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a25313b45515d67717e8b959fabb8c3beb3a99e9285796d60544a403845515c6773808d99a3afbec7bbafa3998e81746a5f53473e31271d1007000000000000000000000000000000000000000005121e2b3845515e6b788491949494949494949494949494949da0a7b1bcbeb3a9a29f94949494949494949494949494877b75818e98a3aebac5c9c5c4bdbbb7b5b1b1b1b1b1b1b1b1b1b1b1b1b1b1aa9e9184776b5e5144382b1e110500000004101c2934404b55606b75828f98a2aebbc4bbafa39992999fa7b1b9c0b6aca29891847a6d63707d8a9494949494949494949494949494949494949494979ea0a8b2bdc9d5cec9c1bcb4aea8a19d9083766a5d5043372a1d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945515d6776828f9ca9b5c2b9aca096887b6e626d7a86929facb8bbafa4998d8073666e7b8895a1aeb1b1b1b7b8bdc3ccd2c8c0b9b5b3b1b0a3978a7d7b86929faab4b9ada1978b7e72665b5044382b1f120600000000020f1b2835424e5b6875818e9ba8b4c1c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2beb1a4978b7e7164606c7884919eabb7c4bbafa3998a7e7170707070707783909daab6c3c5b9aca096897c70707070707070706f6a6054473b2e221508000000000000091623303c4956636f7c8996a2afbcc6c6c6c6c6c6c8cdced1d6dce4e0d9d2cdcac9c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6beb1a4978b7e7164584b3e3125180b000000000000020d18242f3a45515d67737f8c98a2aebac7cbc0b5aba39f9d9d9d9d9d9d9d988b7f727783909daab6c3b9aea49d9a9696969696969696969696969696969696969696969696969fa3aab4bfbcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2935404b55606c7883909da7b1bcc5b9ada1978c7f72665c51443a4753606d7985929eabb5c0c0b5ab9f92877b6e61584e43352c1f150b00000000000000000000000000000000000000000005121e2b3845515e6b7884919ea1a1a1a1a1a1a1a1a1a1a1a1aaacb1b9c3c5bbb3adaba1a1a1a1a1a1a1a1a1a1a1a194877b6e7b86929faab4bfcaccc1b8b0aaa8a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49e9184776b5e5144382b1e110500000006131f2c3845515c67707d89939eaab4bfbbafa59f928690959fa7b1bbbeb4aaa0968e81756d707d8a96a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a3aaacb2bac4ced9d9d5cfc6bfbab2a99d9083766a5d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5565727f8b98a8b2bdbdb2a8988b7f7265717e8b98a2aebab9ac9f93877b6e626e7b8895a1a5a5a5a5aaacb1bac3cac0b6aea9a6a5a5a3978a7d73808d98a2aeb5afa99e9184786c605346392d20130600000000020f1b2835424e5b6875818e9ba8b4b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b1a4978b7e71645b6573808d9aa8b2bdc0b5ab9c8f8276686363636e7b8895a0acb8c4c0b5ab9e9184776b636363636363636260584e43382b1f1306000000000000091623303c4956636f7c8996a2afbbbbbbbbbbbbbbbbc0c2c5cbd2dae2d9d2ccc7c6bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb1a4978b7e7164584b3e3125180b0000000000000007131d2935414c55616d7a86929facb6c0c7bbafa3999291919191919191918b7f727783909daab6c3c0b6aea9a7a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3acaeb4bcc6bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18242f3944505b65707d8a95a0acb8c3beb3a99e9184796d605346424d5764717e8a97a1adbdc7bbafa3998e8174695f53463c31231a0d0300000000000000000000000000000000000000000005121e2b3845515e6b7884919eabaeaeaeaeaeaeaeaeaeaeaeb7b8bcc3cbcdc5bebab8aeaeaeaeaeaeaeaeaeaeaea194877b6e73808d98a2aebac6c7bbb0a69e9c979797979797979797979797979797979184776b5e5144382b1e1105000006121e2b37424d57606d7984919ea5afbcbeb3a99e93897d839095a0a9b3bcbcb2a89e938b7f72707d8a96a3aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb0b7b9bdc4ccd0d0d0d0d0d1cbc3b6a99d9083766a5d5043372a1d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3b4855626e7b8896a1acb9c2b5a99c8f82766a7683909daab4bdb1a89c8f827569626e7b889598989898989da0a8b1bdc5b9aea49d9a989898978a7d707a86929facaba39f9b958a7d7064574a3d3124170a00000000020f1b2835424e5b6875818e9ba8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a4978b7e716453626f7c8996a1adb9c6b9ac9f93877b6e615c6673808d9aa7b1bcc7bbafa4998c7f73665956565656565656544e463d32271b0f03000000000000091623303c4956636f7c8996a2afafafafafafafafafb4b5b9c0c8d2d9d0c7c0bbb9afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa4978b7e7164584b3e3125180b00000000000000010d19242f3a46525e6874818d9aa4afbbc5b9ac9f92878484848484848484847e717783909daab6c3c8c0b9b5b3b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b8babfc6cebcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27333f4953616b7783909da7b1bcc5b9ada1968a7e7164584e47535f697683909ca9b3bec5b9ac9f92877b6e61574d42342a2011080000000000000000000000000000000000000000000005121e2b3845515e6b7884919ea5a5a5a5a5a5a5a5a5a5a5a5abadb2bac4c6bcb4aeaca5a5a5a5a5a5a5a5a5a5a5a194877b6e6d7a85929fabb5bfc3b7aa9e948f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a84776b5e5144382b1e110500000814212e3a47535f6973808c96a0acb8bdbaada2978e81747a839197a1aab4b6afa69f9691857a707d8a96a3b0babababababababababababababababababdc3c3c3c3c3c3c3c3c3c3c3c3c3b6a99d9083766a5d5043372a1d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f697884919eabb7c4b8ac9f9286796f7c88959fabbcb8aca095897d7063626e7b888b8b8b8b8b8b9195a0acb8c1b5a99d928d8b8b8b8b8a7d7074818e9aa29f99928e89837d706356493d3023160a00000000020f1b2835424e5b6875818e9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c978b7e716458606c7884919eabb7c4bbafa4998b7f7265606d7985919eabb8c3c6b9ac9f93877b6e61544a4a4a4a4a4a4947433d342b20160a00000000000000091623303c4956636f7c8996a2a2a2a2a2a2a2a2a2a2a7a9aeb6c0cbd2c7bdb5afaca2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978b7e7164584b3e3125180b000000000000000008131e2935414c56626e7b87939facb9c4bbafa399887c7777777777777777716c7783909daab6bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222d38414f5964717e8a95a0acb8c5bdb2a99c9083766a5f544953626e7b88949fabbbc5bbb0a69b8e8175695f53453b3122180e000000000000000000000000000000000000000000000005121e2b3845515e6b788491989898989898989898989898989ea1a8b2bdbfb4aaa29f98989898989898989898989894877b6e6874808d99a3aebbc2b5a89c8f827e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7063574a3d3024170a0000000815222f3b4855626e7b8692989ea5acb1b0a69f92857a6e6e7b859198a2aeaca49f948f847c6f707d8a96a3b0b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a99d9083766a5d5043372a1d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d576774818e9aabb5c0baaea398897d74818d9aa7b1bbb3a99d9184786c60606d7a7e7e7e7e7e7e7e83919daab7c0b3a69a8d807e7e7e7e7e7b6e6e7b879398928d87817c76706b6054483c2f22160900000000020f1b2835424e5b6875818e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8b7e7164585b6574808d9aaab4bfc0b5ab9d9083766963707d8a97a1adb9c4beb3a99c8f8276695e53463d3d3d3d3d3c3b38322b22190f0400000000000000091623303c4956636f7c8995959595959595959595959a9da4aeb9c5ccc0b5aba49f9595959595959595959595959595959595959595959595959595959595959595959595959595959595959595958b7e7164584b3e3125180b0000000000000000010d1925303a47535f6976828f9ca8b2bdc0b5ab9a8e8174676a6a6a6a6a6a646a7783909daaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3e4653606c7884919daab3b8b3aeab9f94887c6f6255505b6573808d99a6b0bbbfb7ab9f94887c6f62574d4233291f1006000000000000000000000000000000000000000000000005121e2b3845515e6b78848c8c8c8c8c8c8c8c8c8c8c8c8c8c9196a1adb9baaea298928c8c8c8c8c8c8c8c8c8c8c8c8c877b6e616e7b86929facb9bfb7aa9e91847971717171717171717171717171717171706b6155483c2f2316090000000714202d3a4753606d797f868e939da0a8aa9f948b7e7168696f7c86929fa4a29a938c827a6f6a707d8a96a3a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99d9083766a5d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313d4a5764707d8a99a3afbbbfb4aa9a8d807985929fa9acafada2978b7e72655b5d686d72727272727276828f9ca9b6bcafa396897c72727272726e696975828f8b85807b756f6a6360594f44382c20130700000000000d192633404c5966737f838383838383838383838383838383838383838383838383827d7063565363707d8a98a2aebac6b9ac9f93877b6e6975828f9ca9b3b5b8b9ada2978a7e7164574d4236303030302f2e2b27201910070000000000000000091623303c4956636f7c8888888888888888888888888d929da9b5c2c7bbafa49993888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888887e7164584b3e3125180b00000000000000000008131e2b37424d5763707d8a96a1adb9c5b8ac9f92867a6d605e5e5e5e5e5d6a7783909da2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a296897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f2b3844505b66717e8b98a2adabaaa29f9b988e8174685b53606c7884919eaaacaeb5b2a89c8f82766a5f53453b3121170d000000000000000000000000000000000000000000000000000b1825323e4b5865717e7f7f7f7f7f7f7f7f7f7f7f7f7f7f84919eabaeaeac9f92867f7f7f7f7f7f7f7f7f7f7f7f7f7f796d606975818e9ba8b2b4aeaca096897d706464646464646464646464646464646361594f44382c20140700000006131f2c3845515c676d737b818991959fa2989083776c60606a717e8a929c97928880786d6863707d8a969d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9083766a5d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914212d3a4754606d7a86929facb9bab7aa9d90837f8b92979c9fa4ab9f9285796d6053565d6065656565656976838f9ca9b6bcafa396897c7065656565615e63707d847f7a736e69626058544f473d33271c100400000000000c1825323e4b57636d7376767676767676767676767676767676767676767676767676706b615553606d7985929facb8bebaafa49a8b7e726e7b87939faaa6a9abadab9f9285796d6053473b312523232323221f1b160f070000000000000000000714202d3a4753606d797c7c7c7c7c7c7c7c7c7c7c7c808d9aa7b4c0c6b9ac9f93877c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6d6154473a2e211407000000000000000000020e1a26313c4653606c7884919eabb5b8b6aea2988b7e7265584e5151515d6a778390959595959595959595959595959595959595959595959595959595959595959595959595959595959595897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54606d7985929fa29f9b98928e8a868174685b56636f7c8992989c9fa3abaca1968a7d7064584e4333291f0f06000000000000000000000000000000000000000000000000000b1724313d4a56626c71727272727272727272727272727783909da1a1a1a19e928578727272727272727272727272726d675d626f7c8996a0a7aba39f9d9a8e8275685e5757575757575757575757575757554f473e33281c100400000004101c2934404b555c60696e757d848c929892867b6e655b58616c73808d9490857d736c665e63707d8a909090909090909090909090909090909090909090909090909090909090909090909090909083766a5d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d687783909daab3adaba89f93867d80858a8f93999e998d8073675d514c5254585858585c6976838f9ca9b6b6afa396897c70635858585454606b7079726d67615e57544e48443d352b21160b0000000000000a16222f3b46515b6366696969696969696969696969696969696969696969696969696361594f515c6775828f9ca8b3b3aeabac9c8f827573808d929897999c9ea1a79a8d8074675d514538291f1717171615130f0a04000000000000000000000613202c3945515d676d6f6f6f6f6f6f6f6f6f6f6f727f8b98a5b2bec7bbafa499867a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d685e5246392d2013070000000000000000000009151f2b3844505b66737f8c99a3adaba9a7aa9d9083776a5f534744505d6a778388888888888888888888888888888888888888888888888888888888888888888888888888888888888888887d706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3845515d6774818d9a97928e8a85817d79746f645955626f7c81868b8f92999c9f9e9184786d6053463c3220170d00000000000000000000000000000000000000000000000000000915212e3a45505a62656565656565656565656565656a7783909494949494949285786b656565656565656565656565605d55606a7784919d9a989992908e8b877a6e61544b4b4b4b4b4b4b4b4b4b4b4b4a48443e352c21160b00000000000c18232f39434b51575e616b70787f868e8c7f72695f53505a606c78828d837b706b605b54636f7d8383838383838383838383838383838383838383838383838383838383838383838383838383838174675b4e4134281b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566773808d9aaba9a29f9c98988a7d73797d82878c9193877b6e61554b4145474b4b4b505c6976838f9ca9aaaaaaa396897c7063564b4b484f5960666c66605d55534d48433d38332b23190f0500000000000006121e2a3540495157595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c56554f474b5565727f8b98a9a6aaa29f9c9a92857973808385888a8d8f91979695887c6f62554b403529170d0a0a0908060300000000000000000000000004111d2935404b555d606262626262626262626264717e8b97a4b1bebec0b5a194877a6e6262626262626262626262626262626262626262626262626262626262626262626262626262626262626262615e564c4135291d110500000000000000000000030f1c28333f4a54616e7b86929fa19e9c9a999795887c6f6255483c4855626e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2935404b55626f7c888e8985817d7975706d67645d5354606a6f757a7e82868b8f93998c7f73665c5044382b1f1206000000000000000000000000000000000000000000000000000005111d29343f4850565859595959595959595959595d6a7783878787878787878785786b5f595959595959595959595953514e586673808c908d8b888683817e7c786d6053463e3e3e3e3e3e3e3e3e3e3e3d3c38332c231a1005000000000007121d27313940454d535960666d727b8183786c60574d44505b666e7a80796e6961595054606b6f767676767676767676767676767676767676767676767676767676767676767676767676767676746f64594c4033271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3d4a5763707d8a999b9897928f8c89867f726d71767b7f84898275695f534339393a3f3f43505c6976838f9c9d9d9d9d9d96897c706356493f3d474f545b605b54514b46423b38322c272119110700000000000000020d19232e3740464b4c505050505050505050505050505050505050505050505050504a48443d4855626f7b88979c9a9798928f8d8a887c6f7376797b7e80828587898c83766a5f5343392f241805000000000000000000000000000000000000010d18242f3a434b51535555555555555555555764707d8a97a3b0b1b1b1aea194887b6e615555555555555555555555555555555555555555555555555555555555555555555555555555555555555554524c443a3025190d0100000000000000000000000b17222d3846525e6975828f969792908e8c8a88877f7266594c3f47535f6a6e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3947535f6a7582817d7974706d6764605d55534b4e586062676d71757a7e82878b877b6e61544a3f34281c10030000000000000000000000000000000000000000000000000000010c18222d363f454a4b4c4c4c4c4c4c4c4c4c4c4c54616d7a7b7b7b7b7b7b7b7b7b6e61544c4c4c4c4c4c4c4c4c4c4c47454855626e7c8683817e7c797774716f6d665c51443831313131313131313131302f2c28211a1108000000000000010b151f272f343b42464f545c60686e75796d665b50453f4a545e686e746d675f574f444f5960636a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a67645d53483c3024180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3a4754606d7a86918e8b8885827f7c79726d6064696e73787d7c6f62574d42312c2d323643505c6976828f90909090909090897c706356493d353d424a5053504a45413a36312c27211c160f0700000000000000000007121c252e353b3e40434343434343434343434343434343434343434343434343433d3c383a47535f6a788591908d8a888583807e7b776c66666d6e717376787a7d7f7d7063584e4331271d12070000000000000000000000000000000000000007131d28313a4045474949494949494949495663707c8996a3a5a5a5a5a4a295887b6f62554949494949494949494949494949494949494949494949494949494949494949494949494949494949494746413a32281e130800000000000000000000000006111c2a36424d5764717e8a89878583817f7d7b79726d63574a3e434e585f626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262605d554b4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e5865707574706d6663605c5553514b4341464e54555d6064686d71767a7f8073695e5242382e23170b0000000000000000000000000000000000000000000000000000000006111b242d343a3d3e3f3f3f3f3f3f3f3f3f3f46525e686d6e6e6e6e6e6e6e6e6e685e52463f3f3f3f3f3f3f3f3f3f3a3a47535f6a6e797674716f6d66676562605c544a4034282424242424242424242423201c1610080000000000000000030d151d232931363d424a51565e61666d665c544a3f38424c565e6167605d554d453e474f54565d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b59534a41362b2014080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d68778385827f7c7975726f6d66625b575e61666c706f6a5f53453b3120212734414e5a6774808383838383838383837c6f6255493c2f2f383f4446443f38352f2a251f1b16100b0500000000000000000000000a131c232a2f323336363636363636363636363636363636363636363636363636302f2c37434e586875818583807e7b797673716e6c655b5c6062646669686e7072706b6054463c321f150b0100000000000000000000000000000000000000010c161f282f35393a3c3c3c3c3c3c3c3c4955626f7c88959898989898989895887c6f6255493c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a3935302820160c02000000000000000000000000000e1a25303b4653606d787e7c7a78767472706e6d66635b51463a3c464e5355555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554514b433a2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b26323c46545e65696763605c5453514b47454039343c43474c5154565d6165686e72736e63564d4230261c1106000000000000000000000000000000000000000000000000000000000009121b22292e313232323232323232323236414c565e616161616161616161615e564d41363232323232323232322d37424e575f666d66676562605c54585553514a42392e23181818181818181818171614100b0500000000000000000000030b12181f252a303940444d52545c605c544a42382f3b444c52545a53514b433b343d4348495050505050505050505050505050505050505050505050505050505050505050505050505050504e4c4841382f251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56616d7a7875726f6c666562605c54514d53545b6063625f584e4333291f142633404c58646e747777777777777777776f6a6054473b2e262d33383938332d29241d1a140f0a0400000000000000000000000000010a12191e22252629292929292929292929292929292929292929292929292929232326313c4754606d7a797673716e6c65676461605b53505355575a565e6163666360594f44342a200d03000000000000000000000000000000000000000000040d161d24292c2d2f2f2f2f2f2f2f3b4855626e7b888c8b8b8b8b8b8b8b8b887c6f6255493c2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2d29251e160e04000000000000000000000000000009141f2c3845515c666d716f6d686967666462605c5451493f35333c43474849494949494949494949494949494949494949494949494949494949494949494949494949494949494949494745413a31281d1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a34424c545a5c5b5653514a4645403a38352f2b32373a4145474c5254565e616566635c52443b301e140a000000000000000000000000000000000000000000000000000000000000000911181d212425262626262626262625303a444c5254545454545454545454524d443b3025262626262626262626313c454e545c605c54585553514a4b494644403930271c12070b0b0b0b0b0b0b0a0907040000000000000000000000000001070c141a1e272e343b41464a5153514a42392f29323b4146474d47454039312b32383b3c43434343434343434343434343434343434343434343434343434343434343434343434343434341403c362f261d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a46525d686d68686562605b545653504a4242464a50535655534e463c3221181724303c47525c64676a6a6a6a6a6a6a6a6a6260584e43372b1c22282b2d2b28221c18130e09030000000000000000000000000000000000070d121618191d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1716202c3945515d676d6c66676462605b5357555350494446484b4d4c5254565956544f473d3322180e0000000000000000000000000000000000000000000000040c13181d20202222222222222d3a4753606d797f7f7f7f7e7e7e7e7e7e7e7a6d6054473a2d22222222222222222222222222222222222222222222222222222222222222222222222222222221201d19130c0400000000000000000000000000000004101c2834404b545c606463615e565b59575553514a423f372d2a31373a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a39352f281f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1822303942494d4f4e4a4644403a38342e2c292420272b2f35393a4146474c5254585a58524a4032291f0c020000000000000000000000000000000000000000000000000000000000000000060c1115171819191919191919191e29323a41464748484848484848484746413b32291f1919191919191919202a333c424a5053504a4b494644403e3c3a38342e271e150b00000000000000000000000000000000000000000000000000000003090c151c2328303639404446444039302720293036393b413a38352f271f272c2f303737373737373737373737373737373737373737373737373737373737373737373737373737373433302b251d140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935414c565d615d56585553504a4946443f3836383f44464a4947433c342a200f141f2b36414a52585a5d5d5d5d5d5d5d5d5d55544e463c32271b171c1f201f1c17110d0701000000000000000000000000000000000000000002060a0c0d101010101010101010101010101010101010101010101010100a111d2935414b555d60605b5457555350494a4846443f383a3b3e404146474a4c4a48443d352b21100600000000000000000000000000000000000000000000000001070d1113141616161616202c3945515d676d72727272727272717171716d685d5245392c2016161616161616161616161616161616161616161616161616161616161616161616161616161413110d080200000000000000000000000000000000000c18232e39424b5153585654524c4e4c4a4846444039302d2520262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2c29241d160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101e2730373d4142413d3a38342e2c28231f1d18151b1e24292c3035393b4146474c4d4b4740382e20170d000000000000000000000000000000000000000000000000000000000000000000000105090b0b0c0c0c0c0c0c0c0d1720293036393a3b3b3b3b3b3b3b3b3b3936302920170d0c0c0c0c0c0c0e18212a30383f4446443f3e3c3a38342e2f2d2c28231c150c030000000000000000000000000000000000000000000000000000000000030b12181f252a2e34383a38342e271e171e252a2d2e342d2c29241d151b1f22232a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a282724201a130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c5254524c4c4846443f3c3a38342e2a2d3338393d3c3b37322a22180e0e1a242f3841474c4e5050505050505050504947433c342b20150b0f1213120f0b060000000000000000000000000000000000000000000000000000000003030303030303030303030303030303030303030303030303010d18242f3a434b515453504a4b4846443f3e3b3937332d2d2f313036393b3d3f3d3c38332b231a0f0000000000000000000000000000000000000000000000000000000104060709090909111d2935404b555d606565656565656565656564605d564c4135291d1109090909090909090909090909090909090909090909090909090909090909090909090909070705010000000000000000000000000000000000000007121d2730394045464b49474641413f3d3b3a38342e271e1c151a1f2122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222221201d18130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c151e262c31353634302d2c28231f1c1813100c0a0f13191d2024292d3036393b3f403f3b352e261c0e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e2e2e2e2e2e2e2e2e2e2d2a251f170e05000000000000060f181e262e34383a38342e2f2d2c282322201f1c18120b030000000000000000000000000000000000000000000000000000000000000000070c14191c23282c2d2c28231c150c14191e202127201f1d18120b0f1315161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1a18140f0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a41464746413f3c3938332d2d2c28231c22282b2d302f2e2b262018100708131d262f363c40414444444444444444443c3b37322b22190e040306060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a41454746443f3e3b3937332d2e2d2b2722202224252a2d2e3033302f2c27211a110800000000000000000000000000000000000000000000000000000000000000000000010d18242f3a434b5153595958585858585858585854524c443a2f24190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3e3c3a39353033312f2d2c28231c150c090f12141516161616161616161616161616161616161616161616161616161616161616161616161616161616161616161413110d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b212528292823201f1c1813100c0704000001080d1113191d20252a2d2e3233322f2a241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d13191e2021212121212121212121201e19140d050000000000000000060c151c23282c2d2c282322201f1c18161312100c07000000000000000000000000000000000000000000000000000000000000000000000002080e12181c1f201f1c18120b03080d1114141a1413100c0701030709091010101010101010101010101010101010101010101010101010101010101010101010101010100e0d0b080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1620283035393a3935302f2d2b2822201f1c1711171c1f202322211f1b150e0700010b141d242b3033343737373737373737372f2e2b27201910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a3938332d2f2d2b272222201f1b17131518191e202123262322201c160f0800000000000000000000000000000000000000000000000000000000000000000000000007131d28313a4045474c4c4c4c4b4b4b4b4b4b4b4745413a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d31302e2d2925262422201f1c18120b03000206080809090909090909090909090909090909090909090909090909090909090909090909090909090909090909090706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002091015191b1c1b171312100c0704000000000000000104080d1114191e2021252726231f19120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131415151515151515151414110e080200000000000000000000030a11171c1f201f1c17161312100c0707060400000000000000000000000000000000000000000000000000000000000000000000000000000000070c10121312100c07000000010507080e0706040000000000000004040404040404040404040404040404040404040404040404040404040404040404040404040401010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e161e24292d2e2d292422201f1c171312100c060b0f1213171615130f0a04000000020b131a1f2426272a2a2a2a2a2a2a2a2a22221f1b150e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d2d2b282222201f1b171513120f0b0608080e1114141719171614100b0500000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a3f3f3f3f3f3f3f3e3e3e3e3a39352f2820160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20252321201d191917151312100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d0f0f0e0a070604000000000000000000000000000105080e111414191a1917130e080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070808080808080808080705020000000000000000000000000000060c10121312100c060706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607060400000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021201d191513120f0b0606030000000306060a0908060300000000000001080e14171a1b1d1d1d1d1d1d1d1d1d1615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d2021201f1c171513120f0b0606050300000000020507080a0c0a09070400000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d32323232323232323232312d2c29241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10131318161413110d080a0807060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000203010000000000000000000000000000000000000000020507080c0d0c0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131413110d08060603000000000000000000000000000000000000000000000003080b0d0e1111111111111111110908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11131413120f0b06060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d2020262625252525252525252521201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070b09070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080c0b09060100000000000000000000000000000000000000000000000000000100000306060708090a0b0b0c0c0c0c0d0d0d0e0d0d0d0d0d0c0c0b0b0a0909080706040000000000000000000000000000000000000000000000000000000000000000000105070707050100000000000000000000000000000000000000000000000000000000000000010404040404040404040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060706060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11131419191919181818181818181413110d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000102030000040607070707060603000000000000000000000000000000000000000000000000000000000000000002070b0d0d100e0d0b0907060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070707070707070707070706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414191816120d07000000000000000000000000000000000001040607090a0c0d0e060b0f1213141516171818181919191a1a1a1a1a1a1a1a1919191818171615151313100c070a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c0c0c0c0c0c0c0b0b0b0b0707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0e0f10070c10131314141413120f0b060c08080602000000000000000000000000000000000000000000000001080e1317191a1d1b1917161413100c0709070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d1113141414141414141414141413120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212525221e181109010000000000000000000003050609080d1113141617181a1b1c171c1f20212223242425252526262627272727272727262625252424232221201f1c181917130e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708100807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080d0c0a0702000000000000000000000000000000000000000000000000000000000000050b101416171a1c1d1e181c1f20202020201f1c171b181514120e09030000000000000000000000000000000000000000020a12191f2326272a28262422201f1d1818161413110d080907060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d202020202020202020202020201f1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e32312e29231b13090000000000000004060b0f12131518191d202122242527282922282b2d2e2e2f303132323232333333343434343333333332323130302f2e2d2c282326231f19120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d0e0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151c1414110e080200000000000000000000000000000000000000000000000000000000000000000000000000000000020507080f0f0f0f0f0f0f0f0f0f0808060200000000000000000000000000000306060708090a0a0a0b0a0908070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090f1214151a1917130e0800000000000000000000000000000000000000000000000000000000080f161c2022232728292a23282c2d2d2d2d2d2b2822282522211e1a15100b050000000000000000000000000000000000000a141c242b2f3334363533312f2d2c2924252321201d1918161313100c0707060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d2d2d2d2d2d2d2d2d2d2d2d2b27221b140b0202030405050506060504020000000000000000000000000000000000000000000000000000000000020d1720293036393b3f3e3a342d251b110700000001070c1013171b1f20222524292c2d2f31323334362d3338393a3b3c3d3e3e3f3f3f3f4040404140404040403f3f3e3e3d3c3c3b3a38342e322f2a241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d131619191a1312100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e21212921201e19140d050000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151b1b1b1b1b1b1b1b1b1b1514120e090300000000000000000000060b0f12131415161717171717161414110e09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f21222726231f19120a020000000000000000000000000000000000000000000000000008111a21272c2f30343536372e34383a3a3a3a3938332d35322f2e2b261f1c160c0701000000000000000000000000000000030d1c262e363b3f404341403e3c3a38352f32302e2d29252522201f1c18161413100c070806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060b0b0b0b0b0b0b0b0b0b0b0807050200030d161f282f35393a3a3a3a3a3a3a3a3a3a3a3937332d261d140a0f1011111212121312110e0b0706040000000000000000000000000000000000000000000000000008141f29323b4146474c4a463f372d23190e0502090e12181c1f22272b2d2f322f35393a3c3d3f404142433f44464748494a4b4b4b4c4c4c4d4d4d4d4d4d4d4d4c4c4c4b4b4a494848464540403f3b352e261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191e23252627201f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171f252a2d2e362e2d2a251e170e050000000000000000000000000000000000000000000000000000000000000000000000060e141a1e21222828282828282828282822211e1a150e0705010000000000020a11171c1f2021222324242424242321201e1915120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f33322f2a241c140a000000000000000000000000000000000000000000000000050f1a232b33383c3d414243444540454647474746443f43413f3b3a37312c282118120b0300000000000000000000000000010b151f2e3840474c4d504e4c4a49474540413f3c3a393530312f2d2c282323201f1d181514120e09060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121318181818181818181818181514120e090b151f28313a4045474747474747474747474746443f382f261b1b1c1d1e1e1e1f1f1f1f1e1b181413100c0701000000000000000000000000000000000000000000020e1925303b444d5254585651493f352b20170c0c14191d23292c2d3337393c3e41414547494a4b4d4e4f504a505354555657575858585959595a5a5a5a5a5a5a59595858575756555453514b4d4b4740382e24190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242a2f3233342d2c28231c150c050000000000000000000000000000000000000000000000000000000000000000000000000000000000081019212931363a3b433b3936302920170c03000000000000000000000000000000000000000000000000000000000000000000060f181f262a2d2e353535353535353535352f2e2b261f1813110d08030000020b141c22282b2d2e2f3030313131312f2e2d2a25211f1b150d080100000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a31373a3b403f3b362e261c100700000000010507070705010000000000000000000000000b16212b353d44484a4d4f5051514b515353535353504a504e4b4847423c383329241d150d0300000000000000000000000007121d2731404a52585a5d5b59575553514b4d4b49474641403e3c3a38342e302d2c292422211e1a1613120f0b060602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f20252525252525252525252521211e1a14121d27313a434b51535353535353535353535353504941382d2228292a2a2b2b2c2c2c2b2a2825201f1d18120b03000000000000000000000000000000000000000005111e2a36414d565e6165625b51473d32291e14181f252a2f34383a3f4446484b4e4c52545557585a5b5c5d545b60616162636465656565666666676767676666666665656463636261605c555a57524a40352a1f13020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121c252e353b3e40413a38342e271e170e0600000000000000000000000000000000000000000000000000000000000000000000000000000007121a222b333b4246484f4746413b32291e150b0000000000000000000000000000000000000000000000000000000000000000030e18212a31363a3b424242424242424242423b3a37312a21201d19130f0b060a141d262d3338393a3b3c3d3d3d3e3d3c3b3a36302e2b262019130c0400000000000005080a0b0e0d0b08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a333c4347484d4b4740382e22190b020002080d11131413110d080200000000000000000004101c27333d474f54565a5b5c5d5e5f5c60606060605b5e5d5b5855534d48443e352f271f150c0300000000000000000000000c18242f3943525c64676968666462605d555a585654524c4d4b494645403f3c3a39352f2f2e2b2622201f1b1714120e0906040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272b2d32323232323232323232322e2d2a251f18232f39434b555d6060606060606060606060605b53493f3333343536373838383939383735312d2c29241d150d09000000000000000000000000000000000000020c1a232d3946525e686e726d62594f443b30261d232930363940454749505355585a565d606264656667696a6b666c6d6e6f7071717272727273737374737373737372727171706f6f6e6d676b66635c52473b2f1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242e3740464b4c4d4644403930292017110a020000000000000000000000000000000000000000000000000000000000000000000000030b1218242c343d454d53545c54524c443b30271c12070000000000000000000000000000000000000000000000000000000000000009141f2a333b4246484e4e4e4e4e4e4e4e4e4e4847423c332e2d29251f1b1711111c262f383f44464748494a4a4a4a4a494746423c3b373229241e160d05000000060c111517181b1a17140e08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18212a333c464e53555a58524a40342b1d140a050d13191e2021201e19130f0a04000000000000000714202c38444f5960636768696a6b6c666d6d6d6d6c666b6a6865625f57554f45403931271e150b0000000000000000000004101d2935404b55646e73767473716f6d6769676563615e565a585553514b4c494745403e3b3a37312f2d2b2722211e1a1312100c070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d3337393e3e3e3e3e3e3e3e3e3e3e3b3a363129212934404b555d676d6d6d6d6d6d6d6d6d6d6d6c655b50443f404142434444454545464544413e3a38352f271f1b120a01000000000000000000000000000000000a141e2b37434e58616e7a7f726b60564c42382e272f343b42464b5153535b6062656769686d6f7072737475767778797a7b7c7d7e7e7e7f7f7f80808080808080807f7f7f7e7e7d7c7b7b797877736e63574b3a3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232d3640495257595a53514a423b3327221b140b03000000000000000000000000000000000000000000000000000000000000000000040c151d2328363e464e575e6169615e564c42392e231810070000000000000000000000000000000000000000000000000000000000020e1a26313b454d53555b5b5b5b5b5b5b5b5b5b55534d453c3a3935302b27221b18222d38424a505354555657575757575654524d4847433c352f2820170e05000910171d2124252726241f1a130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17212a333c454e585f6266635c52463d2f261c110e171e252a2d2e2d2a251e1b160e090300000000000916222f3c4854606b7074757677787879797a7a7a7979787674726e69636159514b433930271c120700000000000000000006131f2c3845515d67738083817f7d7c7a787674726f6d6869676462605c55585653514b4b4847423f3c3937332d2d2b26201f1c1813100d07040000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f44464b4b4b4b4b4b4b4b4b4b4b4846423b33292c3845515c6776797a7a7a7a7a7a7a7a7a7a776c6053494c4d4e4f5051515152525252514e4b47454039312d241c130a00000000000000000000000000000006111c26303847535f6a7481867d70685e544a3f34313940454d52555c6064656c6f717476787a7c7d7e808182838485868788898a8a8b8b8b8c8c8c8d8d8d8d8d8d8d8c8c8b8b8a8a898887868584807366564c41362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18222b353e48525b636667605c544d453d332d261d150d0400000000000000000000000000000000000000000000000000000000000000040d161e272e344048505860696e766e685e544a40342822180e040000000000000000000000000000000000000000000000000000000005121e2a36424d575f6168686868686868686868625f574d464746413a37332d282328333f4a545b60616263636464646462615e5655534e45413a322920170c09121b22282d30313433302b241d140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172129333b454d575f6a6e736e63584e42382d22171720293036393a3936302c27211a150d08020000000a1723303d4a5663707d808283848485868686868686868583817e7b76706b605d554b42392e23180c0300000000000000000714202d3a4753606d7985908e8c8a88868482807e7c7a787673716f6d67686563605d555855534e4c4946443f3b3a37312d2c2823201d1813100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3841495053585858585858585858585854534d453b312d3a4753606d7986868686868686868686867b6e615556595a5b5c5d5d5e5e5f5f5f5e5d5b5853514b433e362e251c100700000000000000000000000000000b17232e38424f59626f7c8791857a6e665c50443e3c434b51565e61676d7075787b7e81838587888a8b8d8e8f909192939994959697989898989999999a9a9a9a99999999989897969695949892918477685e5246392d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d17202a343d47505a636d73746d665e574f443f382f271f160e060000000000000000000000000000000000000000000000000000000000050e161f2830394045525a616a6f7b827a6e665c51443e342a20160b020000000000000000000000000000000000000000000000000000000714212d3a46535f696e757575757575757575756e695f535254524c46443f38342e2b3844505b666c6d6e6f70707071706f6e6967625f58524c443b33291e15121b242d34393d3e413f3c362f261d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029333b454d575f696e7c80736a60544a3f33281e1e29323a41464746413a38322b261f19130c070105111d2a36414c566975828d8e8f9091929299939393989291908e8b88837d756d675d544a4034282015090000000000000005121e2a36424d5764717e8a989b99979a93918f8d8b89878582807e7c797774726f6d676765625f5759555350494847423d3a38342e2c29241f1c18120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b606565656565656565656565615e574d42362d3a4753606d7a86939393939393939393887b6e61606365666768696a6b6b6b6c6c6b6a6864605d55504840372e22190f0400000000000000000000000003101c28343f4a54616b76828f978f82786d605a5045464e555c60696e73797d8185888b8d909297959798999a9c9d9e9f9fa4aba2a3a4a4a5a5a5a5a6a6a6a7a6a6a6a6a6a5a5a4a4a3a2a2aaa29f96877a6d6154473a2e21140600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c161f29323c464f59626c737f80786e69605950494139312820180f07000000000000000000000000000000000000000000000000000000060e1720283139424b515b636c717c858f82786d605a50463c32281d140a0000000000000000000000000000000000000000000000000000000815222e3b4855616e7b818181818181818181817b6e62565e615e5653504944403936414c56606c787a7b7c7d7d7d7d7d7c7a78746f6a605d564d453b30271c1b242d363e45494b4e4c4741382f251b110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029333b454d575f696e7b85877c6f665b50443a302525303a444c5254524c48433d37312a251e18120b0613202d3946525e687884919b9c9d9e9f9fa3a0a0aaa39f9e9d9b9895908a81796d665c51443c31261a0e000000000000000714202d3a46525e6976828f9caaa6aca49f9e9c9a989697918f8d8b888684817f7c7a7774716e6a686562605b5355534d4a4644403a39352f2c28231d1b15100c07000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c71717171717171717171716e695e53463a2d3a4753606d7a8693a0a0a0a0a0a0a094887b6e616b6f7273747576777778787879787774716d67625a514940342b21160a0000000000000000000000030d17212b3844505c66707d8a949f948d80736c61574d50585f676d737b80858a8e9297989a9c9ea1a9a3a5a6a7a8a9aaabacafb5afb0b1b1b1b2b2b2b3b3b3b3b3b3b3b3b2b2b2b1b1b0afaeb4aea8978a7d7064574a3d2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e28313b444e58606b717e8b8d827b706b605b534b433a322a2119100800000000000000000000000000000000000000000000000000060f182029323a434b545c606d737e8691948d80746c61584e443a2f261c110600000000000000000000000000000000000000000000000000000916232f3c4956626f7c898e8e8e8e8e8e8e8e897c6f635e686d6863605b53514a454046525e6877838788898a8a8a8a8a898784817c756d685e574d42392e23242d363f485056585a58524a41372d231a10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d172029323b454d575e696e7b84919083786c60564c41362a2a36414c565e615e56544f47423c363029241d171114212e3a4754616d7a8796a1a9aaababacafb5adb4aeacaba9a7a79f9d938e82786d60574e42372b1d12070000000000000815212e3b4854616e7b87939facb2b6afacaba9a7a5a9a19e9c9a979992908e8b898684817e7b7875726f6c6565615f575653514a4745403a38342e2b261f1c18120d080100000000000000000000000000000000000000000000000000000000000000000613202d394653606c777e7e7e7e7e7e7e7e7e7e7e7b6e6154483b2e3a4753606d7a8693a0adadadadada194887b6e636f7d7f808182838484848585858584817e79716c635b51463d32271b0f020000000000000000000009141f2935414b55606d7883909da69c928a7e70695f555a616a6f7980868d92979b9ea1a9a7a9abadb3b0b1b3b4b5b6b7b8b9bbc0bcbdbdbebebebfbfbfc0c0c0c0c0c0c0bfbfbebebdbdbcbbbeb3a6998d807366544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a434d565f6a707d87929490857d726c655c554c443c332b221a11080000000000000000000000000000000000000000000000060f18212a323b444c555d666d757f8892989d928b7e716a5f564c42382d22170f06000000000000000000000000000000000000000000000000000916232f3c4956626f7c89959b9b9b9b9b9b96897c6f63676d7a76706c65605c54514b4754616d7a8793959696979797979596918e88817a6e695e544a4034282d363f48505a616467645c52493f352c22180e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323b444d575e696e7b849196958b7e72685e52463c312d3946525e686d68636059534d46413a352f28221c1423303d4a5663707d8996a8b2b7b7b8b9bbc0b9bfbab9b8b6b4b1aba59e948d80736a5f5347392e23180c000000000007131f2c38434f5966727f8c99a4afb0b2b4b5b7b5b3b1b3adaba9a6aba39f9d9b989992908e8b8885827f7c7875726e696763605c5453514b4645403937312c28231d19130d08020000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79868b8b8b8b8b8b8b8b8b8a7d7064574a3d313a4753606d7a8693a0adb9b9b9aea194887b6e6976828c8d8e8f9090919192929291908e8b857e726d63584e43382c1e1308000000000000000000020e1a25303945515d67727e8b95a0aca49f92867b6e675d616c707c848d92989ea2a9abadb3b4b6b8b9bebdbec0c1c2c3c4c5c6c7ccccc7c6c5c4c4c3c3c2c2c2c2c2c2c2c2c2c2c3c3c4c4c5c5c3b6a99c908376665c5044382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071017232e38424b555e696f7c8592999f9792877f776d675e564d453d342c231a1108000000000000000000000000000000000000000000060f18212a333b444d565d676d78818c939aa3a49f92867c6f685d544a3f332821180e030000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2a8a8a8a8a296897c6f636d7985837d78716d66605d55515764717e8a9aa4a2a3a3a3a4a3a8a19e9a938e847b6e665c5144382c353f48505a626c71746e645b51473e342a20170c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a444d565e696e7b849196a19e92857a6d61584e433738444f59616d7a766f6b615f57524c454039332d261d26333f4c5966727f8c99a5b2bfbfbfbfbebebebfc2c5c4c3c1bcb8afa69f92877b6e62554b4034281c1004000000000915222f3b4854606b7784919da1a9a3a5a7a9abacafb5b2b4b6b5b3b5afacaaa7aba39f9d9a9897928f8c8885827e7b7774706d6664605d5553514b47433c38342e29241e19130d0802000000000000000000000000000000000000000000000000000000000713202d3a4653606d79869398989898989898978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e68788591999a9b9c9d9e9e9e9f9f9e9d9b97928b7f726a6054483a3025190d01000000000000000005121e2a36424d57606d7a85929ea7b1aea2989183796d656c717e8691959fa2aaadb3b8b9bec0c3c5c6c9c8c6c4c3c1c0bfbebdbcbbc0bbb9b8b8b7b7b6b6b5b5b5b5b5b5b5b5b6b6b6b7b7b8b9bbb8ac9f9285796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f192228343f4a545d676e7b849197a2a9a199928c81796d685f574f463e352c231a120800000000000000000000000000000000000000050f17212a333c454d565e686d79828e939fa4acaea29891847a6d665b50443e332a2015090000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afb4b4afa296897c6f67727f8c8f8a847e79726d67605d576774818e9aacb6b0b0b0b0b0b2acaba59e969083786d6053463b343e47505a626d717e80746d62594f463c32291e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e686e7b849196a1a8a2978d81746a5f53473e3b4854606b7683837c756e69615e56514b443f382f262935404b556875818e9ba8b4b3b3b2b2b1b1b1b2b5b8babfc6c8c1bbafa3998d8174675c5145382c1f130600000000091623303c4956636f7c899092979597989a9c9e9fa4aba5a7a9abadb3b2b4b6b4b5afacaaa7a9a19e9b9897928e8b8884807d7975716d6764605c55534e46454039352f2a251e19130c070100000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0a4a4a4a4a4a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e6d7a8797a1a7a8a9aaaaabababacabaaa9a19e92877c6f62564c41362a1e110500000000000000000714202d3a46525e6973808d97a1adb9b3aaa0958f82776c717e879298a0a8aeb4b9bec5c6c9c8c5c4c0c0bbb9b7b6b5b3b2b1b0afaeb5afacababaaaaa9a9a9a9a8a8a8a8a8a9a9a9aaaaababacafb5aea298887c6f6255493c2f2216060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b343d44505c666d79839096a1a9b3aba39f938e827a6e6960594f473e362c241a12080000000000000000000000000000000000050e172129333c454d575f696e7a838f949ea5afb6b4aaa1968f82786c605a50453c31261a0e0200000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f6d7a85929c95918b847f79726d6760697784919eaab2b2b2b3b8babdb9b7afa89f958b7e7164574d423c464f59626c717f888b7f726b61584e443a30271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686e7a849196a0a8b2a99f92877c6f62594f42434e58636f7c899089827b746d68605d55504a42382d2c3945515d677784919da9a7a6a6a6a5a5a4a5a6a8acaeb4bcc3cbc0b5ab9f9285796d6053463a2d201306000000000a1724303d4a5763707d81838587888a8c8d8f91939997999b9d9fa2a9a5a7aaacaeb4b5b7b4b3adaba8a9a19e9b9896918d8985827e7a75706d67625f5853514b45413a363029241e18120b06000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb1b1b1b0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e707d8996a9b3b5b6b7b7b7b8b8b8b8b7b3ada3998f8275685e5246392d20130700000000000000000815212e3b4854616e7b86929fa9b3bebcb1a89e938d80737d879299a2aab1babfc6cac7c5c2bcb8b7b4b6afacaba9a8a6a5a4a3a2a1a1a49f9f9e9e9d9d9c9c9c9c9b9b9c9c9c9c9d9d9d9e9f9fa3a1a1aa988b7f7265584c3f2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d47515b606d78828f95a0a8b2bcb5afa59e9490847b6f6b615950483e362c241a1208000000000000000000000000000000050e172029333b454d575f696e7b8390959fa6afbbc0bcb2a89f948d80736c61574e42372b1e120600000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f73808c97a2a09d96918b857f79726d6e7b8896a0a6a5a5a5a7acaeb4bcc1bab1a79d908377695e5246444e58616b717e8b9392877d706a5f564c43392e23180c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a839196a0a8b2bbafa3998f82766c61544a47535f6a75828f9c938f86807a726d67605b544a3f332d3a4753606d7a86939d9c9b9a999998989898999b9fa2aab1b9c3c7baaea298897d7063564a3d2e23170b000000000916232f3c4855616b707577787a7b7d7f81828486888a8c8e90929796989a9d9fa2aaa8aaafb7b9b8b5b3adaba8a8a09e9a98928e8a86817d79746f6a64605c54524c46413a353029241d17110a0200000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9bebdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e727f8c98a5b2b2b1b1b1b5b7bbc1c4c3beb5ab9f92867a6d6154473a2e21140700000000000000000f1b2835424e5b6875818e98a2aeb7c1c3bab0a69c928c80869299a3abb4bcc3cac7c0bbb9b5b1acaaa7aca49f9e9d9b9a989797969594999392919190908f8f8f8f8f8f8f8f8f8f90909191929299949595968e817568544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f59636d74818e949ea7b1bac4c0bbafa69f9691857d706b615a50483e362c241a110800000000000000000000000000030d172029333b454d575f696e7b8490959fa7b0b8c1ccc4bab0a69c928a7e706a5f53473a2e21140800000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f7a85929fa9aca8a19e97918c857f79717e8b989b999998989a9fa2aab4bdc2b8aca095877b6e6154484c565f6a707d87929f9992867c6f685e554b40342822170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d2a3643505d6976839095a0a8b2bac0b5ab9f948a7d70665c514d57626f7c88949e9e99928d857f79716c665b504438343c4956626f7c8992908f8e8d8c8c8c8b8b8b8c8f9298a0a7b1bec7beb4aa9a8d807367544a3f34281c10030000000714202c38444f596163686a676d6f7072747678797b7d7f81838587898b8e909298979b9ea5afbabcb7b6afb2b5b2acaaaaa29f9b98928e8a85807c76716d66605d56524c46413a352f28221c140b08020000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e74818e9ba7a6a5a4a4a5a8aab0b8c1cbc7bbafa3998a7d7063574a3d3024170a00000000000000000e1b2834414e5b6774818e939ea5afb7c1c1b8aea49c928c9298a2abb5bdc6c6bfbab5afaca9a7a09d9a989a9391908e8d8c8b8a8988878686858584848383828282828282828283838384848586868788898a8b8478665c5044382c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b727f8c939da6b0b9c3cccbc1b8b0a8a09792867d706c615a50483e362c231a10060000000000000000000000020b151f29323b454d575f696e7b849196a0a7b1b9c2cacec5bebaaea49f92857b6e6255483b2f22150800000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c73808d98a2aeb6b2aca9a19e97918b847e818e8f8e8d8c8b8b8d9298a2abb4bfbcb1a7978a7d7164574a525e686f7c869299a3a29891847a6d675c51453f34291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b949faab4bfc7bdb0a69e9184796d6055535f6975818e9ba6aba39f98928c847e786c6053464141414b5865727f868584828180807f7f7e7e7e7f82869095a0acb6c0c3b6a99c908376665c5044382b1f120600000004101c28333e474f55575b555d60626b6f74716e6d6e70727476787a7d7f818385888a8e939eaab6b0aba9a2a6a9acaeb4b3aeabaaa29f9b97928d88837e79726d68615e56524c454039332d261d19130c0500000000000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e7783909c9b99989897989c9ea6b0b9c2cbc0b5ab998c7f7366594c403326190d00000000000000000613202d394653606c78818e939ea5afb8c1bfb6aea49c999fa2aab4bdc7c1bcb4aeaba39f9c9795918d8b8986848382807f7e7d7c7b7a7a797878777776767676757575757576767677777878797a7a7b7c7d7e7f796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8692989fa7afb6bec5cdcbc2bab2a9a19892877e716c615a50483e352b22180f05000000000000000000000a141d27313a444d575e696e7b849196a0a8b1b9c2cbcbc3bcb4aea49d9691877e7165584b3e3225180b00000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c7a86929c9fa4acadb2b3ada9a19e96918b8e858281807f7f7f80869299a3aebabfb2a6998c7f736659505a616d7a849198a2abaaa1969082796d605a5045392d21150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313d4a56626c76828f98a2aebac2c2b8aca0968b7f72675d57616e7b87929facb5aeaaa29f96918a7e7164574e4e4e4e4e53606d7979787776747373737272717273757b83909aa4afbbc5b8ac9f9285796d6053463a2d201307000000000b16212c353e44484a4f4b5159636f7d817d7a7774716d686a696e70727477797c7e818e9ba8b0a69f9c96999c9fa3aaaaacb2b4aeaca9a29f9a95908b847f7a736d68615d56514b443f382f2a251e170e09000000000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e7986918f8e8d8b8b8a8b8f949ea6b0bcc7c0b4a79a8d8174675a4e4134271b0e010000000000000006121f2b3844505b666d78818e939ea6b0b8c2bfb6aea8a6acaeb4bcc5bfb8b0aaa29f99928f8b8784817e7c7a787675737271706f6e6e6d6c656b6b6a6a696969696868696969696a6a6a6b6c676d6e6e6f7071726d665c5044382c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b717e8690959fa4acb3bbc3cbccc3bbb3aaa39992877e716c615a50473d342a21170e04000000000000000006111c262f39434c565e696e7b849196a1a9b2bac3cbccc1b9b1aaa29f928d847c716c62564a3d3124170b00000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c7e868b8f939a9ea1a9abb0b3ada8a19e97988e817b73727272747c86929facb9c0b3a69a8d8073675a57626c75828f96a1aab4b2a89f948e81756c6256493d3024170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a45505a616e7b86929fa7b1bdc7bdb2a89e9285796d605e6974818e99a3afbbbbb3aea89e9184796d605a5a5a5a5a5a5a5d676d6d666a69686766666565656566696f7c87939facb9c6baaea298887b6e6155483b2e2215080000000005101a232c33383c3d424854606b76828d8a8784817d7a77736f6d66686d72777d8187929facab9f9490898c8f92989a9ea0a8a9abb1b3adaba79f9d96918c85807a736d68605d55504a423d363029201b12090000000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6f7c86848281807f7e7e7e828f949fabb7c4c1b4a89b8e8175685b4e4235281b0f0200000000000000030f1c28333f4a545c666d78818f949ea6b0b8c2bfb9b4b3b8babfc5beb5ada69e98928d87827e7a7b7a716f6d676a686765646463626164676868696a6a6a6b6b6b6a6a686764625f575e5e555d60616262636465605c544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f59626c717b838d939aa1a9b1b9c1cccdc5bcb4aba39992877e716c61594f463c332920160b02000000000000071117222d38424b555e686e7b849196a1a8b2bbc4ccc7c0bbafa7a098928a80796f6a625a50453a2e21150900000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c717a7e82878c91969c9fa6acaeb2acabaa9e938e857e776e696a75828f9ba8b5c1b4a79a8e8174675b5e69717e8b949ea8b2bcb6aea49d938b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f46535e69727f8b959fabb5c0c3b9ada1978c7f7368616e7b87929fabb5c0c5b9aca1968b7e7166676767676767676767676767676767676767676767676767676a7683909ca9b6c3bfb4aa96897d7063564a3d3023170a000000000008111a21282c2f38444f5963707d89949795918d8a8683807c7975757a7f84898e9299a3afa99c90837d7f8386898d9196999d9fa7aaacb2b1aba9a19e98928d86807a736d67605b544f46413a322d241b100600000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e787977767473727171727683909ca9b6c3c2b5a89b8f8275685c4f4235291c0f0200000000000000000b17222d38424a545c666d78828f949fa6b0b8c2c4c1bfc5c6cabeb5ada39c948f86807a76717b84837a6d675d555b5a59585756616c717374757676777777787777767574716e6965605c54515354555657585853504a42382e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d47505a62696e7880889297a0a7afbbc0c7cec6bdb5aba39992877e716b60584e453b32281d140a0000000000050e192328333f4a545d676d7a849196a0a8b2bac4cdc6beb6afa59e9590867e746d67605850483f34291d110500000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f6d71767b80848a8f949b9fa3abaeb4afa59e98928b827b716c727f8c99a5b2bfb4a79b8e81746859616e7b86929fa6b0bab6aea49d928d81796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222a36424d57606c78839099a4afbbc5beb3a99f92867a6d6974818d99a3afbdc7bdb2a89e9184797474747474747474747474747474747474747474747474747474747173808c99a6b3bfbeb1a5988b7e7265584b3f3225180c0000000000000810161c232f3c4855616b7683909da6a09d9a9993908d89858181868b91959b9fa3abb5ab9f948a7e7376797d8084888c9095999ea0a8acaeb2adaaa29f98928d857f79716c666059524c443e362d22170c00000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d393a4753606d7a8693a0adb9c6bbaea194887b6e6c666a6968666565646673808d99a6b3c0c2b5a89c8f8275695c4f4236291c0f03000000000000000006111c262f38424a545c666d79828f949fa6b0b9c2ccccd2cdc0b7ada39b918c827b736e6e7b84919083796d665c504d4c4b4d5764717e80818283838484848484848382807e7b77716d665f574e4748494a4b4c46443f3830261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b343e4850575f666d737d8590959ea5afb6bec6cec6bdb5aba39992877d706a5f574d443a2f261c1106000000030c17202b353d44505b666d79839096a0a8b2bac4ccc5bcb4aca49f938e837b716c605d554e463f362d22180c0100000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f6365696e73797d83888e92999fa3aaaeafaaa29f948f857e74717e8b98a4b1beb4a79a8e817467606b75818e98a2aeb8b7aea49d928d80776d675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e1a25313b44505b666f7c87939fa9b3bec5baaea2988d80736e7b86929fabb5c0c5b9aca0969083808181818181818181818181818181818181818181818181818181807e717e8a97a4b1bdc0b3a6998d8073665a4d4033271a0d000000000000000714202c38444f5963707d8a959fabacaaaba49f9d9997928e8e92989da0a7acafb4aea69f9c9184796d6d7073777b7f83888c91969a9fa2aaadb2aeaaa29f98928c847e786f6b615e5650483e34281d1105000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a4646464753606d7a8693a0adb9c6bbaea194887b6e615b545c5b5a58585966727f8c99a5b2bfc2b5a89c8f8275695c4f4236291c0f030000000000000000000a141d263038424a545c676d79828f949fa7b1bac4cecfc5bbafa59b918b7f756e696e7b849196958f82786d605b514746535e6978858d8e8f8f90909191919191908f8d8b88837e786e695f584e433c3d3e3f3a38342e261e150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222d363e454d545c606b707b838e939fa4acb4bcc5cdc6bdb5aba39992867c6f695e564c42382d22170f0500000a151e29323d47515b606c78818f959fa8b2bac4ccc4bbb3aaa29a938c81796e69615a514b433c342d241b11060000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f63606c78767170767c81868d92989fa3abafaea69f97928a817a7e8b97a4b1beb3a79a8d807467636f7c89939eaab4b9afa59d928d80746c655c554b4034291c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f28333f4a545f6a74818e97a2adbac3bfb4aa9f92867a74808d99a3aebdc7bdb2a89e9184828d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d80747c8996abb5c0c1b4a79b8e8174685b4e4135281b07000000000000000a16232f3c4855616b7683909da7a8abadb3afacaaa9a29f9b9b9fa3aaacb1b9b4aba39f94908a857d706363676a6f72767b8084898e92989ea1a8b2b4aeaaa29f96918b837d746d68615a5045392d21150800000000000000000000000000000008121a202d3a4653606d798693a0acb9c6bdb0a3978a7d706457525252525253606d7a8693a0adb9c6bbaea194887b6e61554a52525252525966727f8c99a5b2bfc2b5a89c8f8275695c4f4236291c0f03000000000000000000020b141e263039424b555d676d798290959fa8b2bdc9c9beb3a99d928b7f726d6a6e7b859196a19f948e81746d62594f4854616e7b87979b9b9c9d9d9d9e9e9e9d9d9b9a9795908b837b6e6a5f554b403531322d2c28231c150c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101b242d333b424a505961696e79818c939aa2aab3bbc4ccc7bdb5aba29891857b6e685d544a3f332821170c0206111c26303b444f59626d74808d939ea7b1bac3ccc4bbb2a9a29892887f756d675f5750454039312b221b1209000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f63687480827d79736f747b81868d92999fa4acb0a9a29f938e83808d99a6b3bfb3a6998c8073666b7683909ca5afbbb1a79e938d80746e605b534b43392f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b17222d38424e58616d7a85929fa8b1bdc5baaea2988d807b86929fabb4bfc5b8aca0968b7e828f9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8d81747b8799a3afbbc2b6a99c8f8376695c50432f24180d010000000000000a1724303d4a5763707d8a9196989b9fa2a9a9acafb3adaba8a8acaeb4b8bcbaaea399928b837e79706b676767676767696e73777c81868c9196a1a8b2bab3aea8a19e959087817a716c6156493d3024170a0000000000000000000000000000050f1a242e37404653606d798693a0acb9c6bdb0a3978a7d70645f5f5f5f5f5f5f606d7a8693a0adb9c6bbaea194887b6e615f5f5f5f5f5f5f5f66727f8c99a5b2bfc2b5a89c8f8275695c4f4236291c0f0300000000000000000000020c151e273039434b555d676d79839096a0acb9c5c6b9ada1978e81746d6a6e7c859197a1a9a69d928c7f726b60564d5764717d8a97a9a8a9a9aaaaaaabaaaaa9a8a7a7a09d9590857c6e675d51453a2f24201f1c17110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b212930383f444f575e676d757f889298a2a9b2bac4ccc6bdb4aaa19791837a6d665b50443d33291e140a0e17232e38424d56606b727f8b929da5afb9c2ccc4bab2a9a19792867e736d605d554d453e352f271f19100900000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f636d7a868f8a84807b756f747b80868e939aa0a7aeada59d95908d929ca8b5beb2a5988b7f7265707d89949fabb7b3a99f958e81776c605c5049413931271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3c46525e68727f8c95a0acb8c2bfb4aa9f9286818e98a3aebdc6bcb1a79e918479838f9ca7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79a8d81747986929facb9c4b7aa9d9184776a554b4035291d11040000000000000a1623303d495663707d8184888b8f9297999c9fa3ababadb2b4b9babfc5c5b9ac9f92867e77747474747474747474747474747474747a7f849196a1acb9bebab2ada7a09a938e857e7164584b3e3125180b00000000000000000000000000020b17212c3640495153606d798693a0acb9c6bdb0a3978a7d706c6c6c6c6c6c6c6c6c6d7a8693a0adb9c6bbaea194887b6e6c6c6c6c6c6c6c6c6c6c727f8c99a5b2bfc2b5a89c8f8275695c4f4236291c0f030000000000000000000000030c151e273039434b555d676d7a84919eaab7c4c5b8ab9e92857a6d6a6e7c859197a1a9b2afa59f92877d70685e53546773808d9aa6b3b6b6b7b7b7b7b7b7b6b5b3b1aca7a0979184796d60564c4135291d12100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090f181e262e343e454d555d606d727e869297a1a8b2bac3ccc5bcb2a9a0958f82786c60594f453b30261c11162028343f4a545e69707d87939fa4aeb7c1cbc4bab2a8a09791857d716c635b514b433c3329241d150d070000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f66727f8c9896918c87827c7670747b818790959fa2aaafa7a09d999ca4aeb9bdb1a4978a7e716a7683909ca6b0baada2979083796d655b50443f382f271f150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2a36414c56606d7984919da7b1bcc6baaea298928e939eaab4bfc5b8aca0958a7e76838f9ca9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a79a8d81747884919eabb7c4b8ac9f928579675d5145392c2013060000000000000916222f3b4854606b7074787b7e8285898c9092999a9ea1a8a9acafb5b9babaaea399928b838080808080808080808080808080808080808084919eabb7c4c4bdb9b1aca49f979083776a5d5044372a1d11040000000000000000000000000a141d29333e48515b63666d798693a0acb9c6bdb0a3978a7e7979797979797979797979798693a0adb9c6bbaea194887b7979797979797979797979797f8c99a5b2bfc2b5a89c8f8275695c4f4236291c0f03000000000000000000000000030c151e273139434b555d6876838f9ca9b6c2c4b7aa9d9184776a6e7c859197a1a9b2bbbbafa39991857a6e655b5c667683909ca9b6c2c3c3c4c4c4c4c4c3c2c0bcb8b1a9a0968d8073685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151c2328333b434b515b636c717d859196a0a8b2bac3ccc4bbb1a89f948c80736b61574d42382e23171e28323a44505c666e7b859299a4afb6c0c9c4bab2a8a09691857c6f6b615a51454039312a2118120b03000000000000000000000000000000000000000000000000000000000616232f3c4956626f7c8995a2afbcbcafa296897c6f6d7984919ea19e99928f89827d7771757c838b92989fa6aeacaaa6a8aeb6c0beb3aa95897c6f6f7c89949fabb8b0a69f92857b6e675c53493f332d261d150d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b1925303a44515c66707d8a959fabb8c2bfb4aaa29f9b9ea5afbcc6bcb1a79d91847876838f9ca9b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a79a8d81747683909ca9b6c3baaea298867a6d6053473a2d2014070000000000010d18242f3943505a616467696e7275797c7f83868a8e9196999c9fa3abacaeb4b4aba39f95908d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9196a1acb9c5cfc9c3beb6afa99d9083776a5d5044372a1d1104000000000000000000000006111c262f3b45505a636d7370798693a0acb9c6c5b8ac9f9286858585858585858585858586929facb8c5d2c5b8ac9f928685858585858585858585858586929facb9c5c2b5a89c8f8275695c4f4236291c0f0300000000000000000000000000030c151f28313a434c566976838f9ca9b6c2c4b7aa9d9184776e7c859197a1a9b3bbc4c0b5aba1978f82776c60606d7985929facb8c0bfbfbebfc0c4c5c9cfcec8c3bbb2a89f92857a6d6054473a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a1117212931394045515a616b6f7c849196a0a8b2bac4cdc3bab0a69f93887d70695e544a3f34281d24303a444f59606d78829097a1abb5c0c8c4bbb2a8a09691847b6f6a6059504840352f271f180f0701000000000000000000000000000000000000000000000000000000020a1117232f3c4956626f7c8995a2afbcbcafa296897c6f717e8a96a1acaba39f9b948f89837d7870787f868f949fa3abb2b3b5b9c0c6baaea298877a6e75818e9ba6b0b4aa9e948a7e71695e554b41382d221b140b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2834404a54616b7683909da6b0bcc6bcb4aeaca8aaafb7c1c4b8aca0958a7e7176838f9ca7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79a8d817475818e9ba8b4c1bfb4aa94887b6e6155483b2e221508000000000004101d2935404b55616c71706e6d66666d6f73767a7d8184888c9092999c9fa3ababb0aea79f9d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9ea1a8b2bdc5c5c5c5c5c0b6aa9d9083776a5d5044372a1d110400000000000000000000040d17222d38424d57616c737f7c788693a0acb9c6c7baaea3989292929292929292929292929298a2aebac6d3c6baaea298929292929292929292929292929299a3aebac7c2b5a89c8f8275695c4f4236291c0f030000000000000000000000000000030d161f283143505c6976838f9ca9b6c2c4b7aa9d91847773808c929da4aeb7c0c9c7bdb3a99f948b7f7269626f7c8898a2aeb4b3b3b2b2b2b4b7b9bdc4ccd4cdc4baaea2988b7e7165554b4034291c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f272f353f485059606a6e7b849196a0a8b2bbc4ccc2bbafa49a92857b6e665c50443c2f262935414c56616b73808d949fa9b3bdc7c5bcb2a9a19691847b6e695f584f473e3629241d150d0600000000000000000000000000000000000000000000000000000000020b141b22272f3c4956626f7c8995a2afbcbcafa296897c6f7683909da8acaeafaca69f9c95908a837d76727b828c9299a1a8b0b8c2cfc5b8ab9f9285786e7b86929facb9aea3988f82756c61574d43392f261b110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c18232e39424f5963707d89949fabb7c2c6bfbab8b4b6bac1c7bcb1a79d9083786c76838f9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8d817474808d9aa7b3c0bcafa295897c6f6256493c2f23160900000000000613202c3945515d67717e7d7b79777573716f6d6d7174787c7f83868b8f92999c9fa6abadabaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7abacb2b8b8b8b8b8b8b8b8b6aa9d9083776a5d5044372a1d1104000000000000000000010c161f28333f4a545e69717e8a89828f9ca9b5c2cfcbbfb4aaa39f9f9f9f9f9f9f9f9f9f9f9f9fa2aab4bfcad6cabfb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9fa3abb4bfcbc2b5a89c8f8275695c4f4236291c0f03000000000000000000000000000000040d16293643505c6976838f9ca9b6c2c4b7aa9d9184776e73808d929da5afb7c1cbc4bbb0a69f92867b6e65727e8b98aaa9a8a7a6a5a5a5a7abadb2bac1c9d6cabeb4aa9c8f8276675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d2429363e464f585f696e7b849196a1a9b3bcc5ccc0b6aca1979083786d60574d42382d313a45525d68707d88939fa6b0bbc5c6bcb3a9a19691847b6e695e574e463d342c2418120b0300000000000000000000000000000000000000000000000000000000000a141d262d33373c4956626f7c8995a2afbcbcafa296897c6f7c8995989c9fa3aaabb0aba79f9d959089827c75787f8791969fa6b0bdc6c3b6a99d908376737f8c99a3afb3a99f92867b6e615a50453b30271d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303e4854606b7683909ca6b0bbc7cac7c5c1c2c6d0c7b7ab9f958a7d706576828d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d807473808c99a6b3bfbdb0a3968a7d7063574a3d3024170a00000000000714202d3a4753606d79868a88868482807e7c7a777573716f72767a7e82868b90949a9ea2a9acb1b3b3b3b3b3b3b3b3b3b3b5afacacacacacacacacacacacacacacacacacacaa9d9083776a5d5044372a1d110400000000000000000007121d28313944505b666e7b8592948f949faab7c3d0d0c6bcb4aeacacacacacacacacacacacacacaeb4bcc6d0dbd0c6bcb4aeacacacacacacacacacacacacacacaeb4bdc6d1c2b5a89c8f8275695c4f4236291c0f0300000000000000000000000000000000101d293643505c6976838f9ca9b6c2c4b7aa9d9184776a6e73808d939da5afb9c3cdc2baaea2988f82766b74818e9b9d9c9b9a999898989a9ea1a8afb7c1cdd0c5b9ac9f9286796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b1218242c343d464e575e696e7b849197a1aab4bdc7c7beb3a99f958c7f72695f544a3f333a434f59606d7a84919aa4afb8c2cbbfb4aaa29791847b6e695e574d453c342b221a120701000000000000000000000000000000000000000000000000000000000006111b262f383f44464956626f7c8995a2afbcbcafa296897c707d83878b8f92989d9fa7abaeaba7a09d948f87817b727c848f949fabb4bfc2b6a99c8f82797784919eabb5ada2978d8073695e53483e33291e150b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2c38444f5963707d89949fabb7c3ced3d2cecfd2c7beb0a69d9083766b65727f808080808080808080808080808080808080808080808080808080807e71727f8b98a5b2bebeb1a4978b7e7164584b3e3125180b0000000004101c2834404a5464717d8a989892908e8c8a88868482807e7c79777572757a7e83888d92979da0a7adb3bbc0c0c0c0c0c0b5aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9083776a5d5044372a1d11040000000000000000010d18242f39434e58606c788290979f9c9fa6b0bbc7d3d5cec6bfbab8b8b8b8b8b8b8b8b8b8b8b8b8babfc6ced7e2d8cec6bfbab8b8b8b8b8b8b8b8b8b8b8b8b8b9babfc0c0c0c0b5a89c8f8275695c4f4236291c0f0300000000000000000000000000000003101d293643505c6976838f9ca9b6c2c4b7aa9d9184776a646e74818e939ea7b1bbc5cabfb4aa9f948a7d7077849192908f8e8d8c8c8b8c8d91969ea5afbbc4cfc7baaea399897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000107121a222b343c454d575e696e7b859198a2abb5c0cbc5bbb1a79f92867b6e665b50443b414c56616b74818e97a1acb6c0cac2baaea39892857c6f695e574d453b332a22191008000000000000000000000000000000000000000000000000000000000000000b17222d38414950535056626f7c8995a2afbcbcafa296897c6f70777b7e82868b90959a9fa2aaadaca69f9a938e867f787a828f99a3aebac4b7ab9f948f847f8c96a1acb4aa9e92857a6d60574d42362c21170c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1c27333d4854606b76828f9ca7b1bcc8d4dfdbd8ccc0b6ac9f94897d7063626d7274747474747474747474747474747474747474747474747474747474716c717e8b97a4b1bebfb2a5988c7f7265594c3f3226190c0000000006121f2c3844515c6675818e9ba39f9d9b99979992918f8d8a888684827f7d7a78767b80858b90959ea2a9b3becacdcdc7bbafa39992929292929292929292929292929292929292929083776a5d5044372a1d1104000000000000000004101d2935404b55606a727f8c949fa9a9aab0b8c2ccd5ccc3bdb8b7b4b4b4b4b4b4b4b4b4b4b4b4b4b5bac0c8d2dcd3c9c1bab6b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a89c8f8275695c4f4236291c0f0300000000000000000000000000000003101d293643505c6976838f9ca9b6c2c4b7aa9d9184776a5c606d78818f95a0a9b3bec7c6bcb0a69d9184787a88868584828180807f7f7f81848e939ea9b3bec9cbbfb4ab988c7f7265594c3f322619070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081019222a333b454d575f696f7c869299a3afbbc1ccc2baaea3989083786c60564c4145525d68707d8a939da9b2bec7c2b8aea49f92867d706a5f574d453b33292118100700000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b605b53626f7c8995a2afbcbcafa296897c6f64696e72757a7e83888d92989ea1a8adaca49f98928b837c7986929facb9c5bbb0a69f96918c919ca8b2aea2988c7f73675d51453b31241a0f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c38444f5963707d8995a0acb8c5cfdae0d4c8bbafa49a8f82766b605b6265676767676767676767676767676767676767676767676767676767676767707d8a96a3b0bdc0b3a6998d8073665a4d4033271a0d000000000713202d3a4653606d7985929fabacaaa8a6aba39f9e9b99979992918e8c8a878582807d7b7e838f9297a2adb9c6d2cbc3b9ac9f928786858585858585858585858585858585858585858276695d5043362a1d100300000000000000000613202c3945515d676f7c87929fa6b0b5b7bbc2cad3cec3bab2acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a9aeb6c0cbd6cbc1b7afaaa8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79c8f8275695c4f4236291c0f0300000000000000000000000000000003101d293643505c6976838f9ca9b6c2c4b7aa9d9184776a5e5c666d79839097a1acb6c0ccc2b8aca0968a7e797b7a7877767574737272727479818e97a1adb9c6d1c1b4a79a8e8174675b4e412f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f182129333b454d575f6a707d87929fa6b0bac4cbbfb4aa9f948b7f72685e52464e58606d7a84919ea5afbbc4c4bab0a69d928a7e716b60584e453b332921170f06000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c6560626f7c8995a2afbcbcafa296897c6f635e696e726e71767c80858b91969ea1a9adaaa29f959087828f99a3aebac7c2b8b0a8a09e999ca4adb6ac9f92857a6d60554c4133291f12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333d4855616b7784919da9b3bec9d5d7cbc0b5ab9f93877c6f625954606b6f7474747474747474747474747474747474747474747474747474747474747c8996a2afbcc0b4a79a8d8174675a4e4134271b0e000000030f1b27333f495363707d8997a2aaacafb5b1b5afacaaa8a6aba39f9d9b999697918f8d8a8784818285929eabb8c5cec3b9b1ac9f92857f787979797979797979797979797979797979797670665a4e4235291c0f030000000000000007131f2c38434f59606d79849199a3aeb8c2c3c7ccd3d4c8bdb2a8a09e9a9a9a9a9a9a9a9a9a9a9a9a9a9da4aebac5d1c6baafa59e9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8f8275695c4f4236291c0f0000000000000000000000000000000406101d293643505c6976838f9ca9b6c2c4b7aa9d9184776a5e545d676e7b85929aa4afbbc4c8bdb2a89d9083776e6d676a69686766656565666d7985919eabb8c4d0c3b6a99d9083766a554b4035291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f172129333c454e58616b727f8c939ea8b2bdc6c6bcb0a69f92867a6e61574d535f6a74808d96a1adb7c1c7bdb2a89f948d80736c61594f463c332921170f050000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78706b626f7c8995a2afbcbcafa296897c6f63616e7b7f7b76716f74797e848b91969ea1a9aea79f99928f949fabb4bfc6c2c1bab2acaaa6a8adbbafa49a8d8074685d52433a2f231a120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c38444f5965717e8b97a1adb9c6d2d3c7bbafa3998e81756a605456636f7d808080808080808080808080808080808080808080808080808080808080818e9ba8b4c1c1b4a89b8e8175685b4e4235281b0f00000005121f2b3744505b6574818d9a9c9e9fa3aba5a6a8aaacafb5b5afacaaa8a5a9a19e9c999796918e8f9297a2adb9c6c8bcb1a7a09d948f887f726c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493e32261a0d01000000000000000915222f3b4854606b74818e96a0abb0b8bcc3cacfd7d2c5b8aca096918d8d8d8d8d8d8d8d8d8d8d8d8d929da9b5c2cec2b6aa9e938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8275695c4f423629191009000000000000000000000001070c1013141d293643505c6976838f9ca9b6c2c4b7aa9d9184776a5e4b555e69707d88939fa8b2bdc9c3b8aca095897d70635c555c5b5a595958545d6773808d99aab4bfcbc5b8ab9e928578675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17212a333c464f59626d75828f96a1abb5bfcbc2baaea2988d8174695f5359626e7c87929fa8b2bdccc0b5aba1968f82786d605a50473d342a21170f0500000000000000000000000000000000000000000000000000000000000000000005111e2a36414c5664717e7d70676f7c8995a2afbcbcafa296897c6f636873808c87837e7a757072797f848c92979fa4acaba39f9c9fa6b0bdc1bab6b4b7b9b8b7b2b4b8b9ac9f93877b6e61564d453d352c241c130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333d4753606d7985929eabb8c5d1cabfb4aa9f92877b6e62584e5865727e8b8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8e939eaab6c2c2b5a89c8f8275695c4f4236291c0f0000000613202d394653606c79848c8e8f91929996989a9c9e9fa4aba6a8abacafb6b3adaba9a6a8a09e9b9b9ea2a9b3becac5b8aca0959189827c726d635f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5a544c43382d21160a0000000000000000091623303c4956636f7c898f949c9fa6acb1b9bec5cdd1c4b7aa9e9184808181818181818181818181808d9aa7b4c0c1c1b4a89b8e8181818181818181818181818181818181818181818181817f7265584b3f322b221b1209000000000000000000030b12181d1f2027293643505c6976838f9ca9b6c2c4b7aa9d9184776a5e514d57616b74808d96a1adb9c3c8bcb1a79b8e8175685d524f4e4d4d4c4c4b55626f7c8998a3aebac7c6b9ada197867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18212a343e47515b606d7a849199a3aebbc3cabfb4aa9f92877b6e6259606b75828f99a3afbac4c7bbafa49991847a6d665c50483e352b22180f05000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e68768284796d6f7c8995a2afbcbcafa296897c6f636d7a8692938f8b86817d797372797f858d939aa0a8afaca9abb0b8c1b7afa9a7abacb2babfc0c3b6aa9d9083776d675e574f473e362d251c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b161f2c3845515c6773808c99a6b3bfccc7baaea2988e8174695f534b5865727e8b989a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9ea5afbac6c3b6a99c908376695d5043362a1d100000000714202d3a4753606d797e7f8183848688898b8d8f91939997999b9e9fa4acb6b9b8b5b3b2acaaa8a8abadb3bbc5cfc4b7aa9d91847c756f6a66615e5753514a5252525252525252525252504e49433a31261c100500000000000000000915222f3b4854606b6f7d82898f949da0a7adb3bbc1cbc6b9ac9f93877e7474747474747474747474798693a0adb5b5b5aea194887b7474747474747474747474747474747474747474747474726d62564a433d342d241b110800000000000000030d151d24292c2d34343643505c6976838f9ca9b6c2c4b7aa9d9184776a5e51454f59606d7984919ea7b1bcc8c3b8ac9f92867a6d6054474241403f3f4653606d7986929facb8c5c9beb3a995887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222c353f45525d686f7c87929fa7b1bcc8c5bbafa3998f82756b6066707d89949eabb5c0c7bdb1a79f93877d70685e544a3f362c2319100600000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a878d80736f7c8995a2afbcbcafa296897c6f6773808c989f9c98928e8a84807b76727a818891969fa3abb5b7bbc2baafa59e9b9ea1a8afbabfc6b8ab9f958e81796e69605950483f372d251c110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b37424d57626f7c8895a2afbbc8c5b8ac9f92867b6e61574d4b5865727e8b98a5a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a8aaafb7c1cbc3b6aa9d9083776a5d5044372a1d1100000006131f2c3845515c676d7173747677797b7d7e80828486888a8c8f91939aa4afbbb7afaaa8a9abadb3b3b6b8babfc2c5b8aca0959183807b77736e6964605c54524d47434646464646464643423e3831281f150a00000000000000000007131f2c38434f59606b6f767c828990959ea1a9afbbbfc6bbafa49993877e716a676767676767676d7a8693a0a8a8a8a8a8a194887b7373737373737373706b6767676767676767686868686765615e57544e463f362d231a0d040000000000010b151f272f35383a41414143505c6976838f9ca9b6c2c4b7aa9d9184776a5e514445515d67717e8a95a0abb8c4c7baaea3988b7e7165554b403533323844515c667683909da9b6c3cfbcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232935414c56606a727f8c95a0acb8c1cbc0b5ab9e93897c6f636c7883909da6b0bdc7c0b5aba0958c80736b60564c42382e241b1107000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d5765727f8b92877c6f7c8995a2afbcbcafa296897c6f6d7a85929faaaaa39f9b97918d88827d79747d848d9299a3afbbc7bdb2a89e938e91969ea5aeb4bcbcb1a79d938e837b6f6b615a51493f372d23180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222d3a46535f6974818e9aa7b4c1cdc5b8ac9f92857a6d6053474b5865727e8b98a5b1b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b4b6babcbcbcbcb7aa9d9184776a5e5144372b1e1100000004101c2934404b555c6064666869666d717072737577797b7d80828488939facb9afa59e9b9c9ea1a9a6a9acaeb4b5b8b9b1a7a095918c88847f7b75706d66615e57544e48443e393339393635322d261f160d03000000000000000000030f1b27323d474f5960636a6f767d838b92979ea5aeb5bdc0b5aba49992867c6f685d5a5a5a5a606d7a86939b9b9b9b9b9b9b9a8d807f7f7f7f7f7f7f7f7d7063676d6f707173747475757473716e6962605850483f352c1f160c010000000007121d2731394045474e4e4e4e505c6976838f9ca9b6c2c4b7aa9d9184776a5e5144404b55616c7783909da8b2bdc9bfb4aa9c8f8275675d5145392c2834404a546874818e9ba7b4c1cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111924303a444e58606d7883919da5afbcc5c7bdafa59c8f82766a717e8a95a0acb8c1c7bbafa3999083786d60594f443a30261c12090000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f69778390999083787c8995a2afbcbcafa296897c6f727f8c97a2acb2aeaca9a19e99948f8a847f7a798087929facb9c5b9ada1968e81848e939fa3aab2bab9afa59d9590857d716c635b51493f352a1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e58616e7b87929facb9c5d2c7baaea2988a7d7164554b4b5865727e8b98a5b1bec0c0beb9b8afafafafafafafafafafafafafafafafafafafafafafafafafafafafab9e9184786b5e5145382b1e12000000000c18232f39434b515358595b5f6a717e7c77736e696d6f71747a7f85919eabb8aa9e938e8f929797999c9fa3aaa8abadb3b1a7a09d9995908c86827d79736e69626058554f49443e37322a2926211c150d0400000000000000000000000a16212b353d474f545860626b70787e858e939fa3abb4bcbdb5aba39891847a6d60584e4e53606d7a868e8e8e8e8e8e8e8e8e928d8c8c8c8c8c8c8c8c81746e737a7b7d7e7f8081828281807e7b766f6a625a50473e31281e1308000000000c18242f39434b51535a5a5a5a5a5c6976838f9ca9b6c2c4b7aa9d9184776a5e51443a43505a63707d8a96a0acb9c7c5b9ac9f92867a6d6053473a2d232e3f4c5966727f8c99a5b2bfccbfb2a6998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323d44515c66707d89939eaab3becac1b7aa9f94887c6f7783909da7b1bcc9bdb2a99f92877c6f665c50473d32281e140a000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b88959f958b7f7c8995a2afbcbcafa296897c6f7985919a9ea1a8a9acafadaba69f9c96918c85807c85929fabb8bbb0a69e9184797a818b9298a0a8b0b8b7afa7a09792877e726d635b51463a2e221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323a47535f6a75818e99a3afbbc7d3cabfb4aa9b8e8275675d514b5865727e8b98a5b1bec5bbb3adaba2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29e9285786b5f5245382c1f120000000007121d2731394045474b4f59626e7c878884807b7672767b80858c9197a1adafa89b8e818285878a8d909298989b9ea1a9a8abacaaa7a09d99928f8a85807b756f6a636159554f47433c342a2015100a03000000000000000000000000040f19232b353d43484e545960666c717a818b9299a2aab4bdbdb4aaa1968d80746a5f534c53606d79818282828282828282828692999999999999998e8174738087888a8b8c8d8e8e8f8e8d8b87827c716c62594f433a2f24190d01000004101d2935404b555d606767676767676976838f9ca9b6c2c4b7aa9d9184776a5e5144313e4653606c7884919eacb6c0c7baaea3988a7d7064574a3d2f24313d4a5764707d8a97a3b0bdd0c0b4a79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202834404a54606b75818e98a2aebac6c7bbb0a69a8e81747d8995a0acb9c3c5b9ada1968d80736a60544a3f352b20160c0200000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434e586673808c99a79f92867d8a97a4b0bdbcafa296897c717e888a8d9196999d9fa4acacb0aba8a19e98928d889297a2adbab3a99e938a7e716d757e8691969ea6aebab9b1a9a19992887f726d63574a3e3125180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58626f7c87939fabb5c0cbd7d0c5b8ac9f9286796d60534b5865727e8b98a5b1bebeb3a9a29e9595959595959595959595959595959595959595959595959595959595959285786c5f5245392c1f1200000000010b151f272f34383f4953606b75828f96918c87827f83888d92989ea1a9aba39f9c908479787b7d808386898c8f9297989b9fa2a9a9acaba39f9c97928d86817c76706b646159534e463c32261b0f03000000000000000000000000000007101c28333e4850555758545b60686d757e879298a2abb5c0bcb2a89f92877c6f625758585c666d7575757575757575757784909da6a6a6a6a69b8e817476838f959698999a9b9b9b9b9a98948f877e716c61564c4135291d1104000006131f2c3845515d676d7474747474747476838f9ca9b6c2c4b7aa9d9184776a5e5144373744505b65727f8c9aa4afbbc8bfb4aa9a8d807467554c4135292f3c4855626f7b8895aab4bfcac2b5a89b8f8275685c4f4235291c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18232e39424f59616e7a85929faab4bfcac2b9ac9f92867a828f9ca7b1bcc8bcb1a79e9184796d60584e42382e23190e04000000000000000000000000000000000000000000000000000000000000000000000000000915222e3b4854606a7784919eaaa2989184919eaab7c4bcafa296897c6f717a7d8184888c90939a9da0a7acaeadaaa29f9a959fa2a9b3b6aca1978f82756c606c717c848f949ca4aeb4bbb3aba39a938c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1a242e3b4754606a75828f99a4afbdc7d1dcd3c6baaea2988a7d7164544a5865727e8b98a5b1beb9ada297928989898989898989898989898989898989898989898989898989898989898986796c5f5346392c20130000000000030d151d232b3744505b65707d89949e9d9a938f8c90949a9fa2a9a29f9b99928f8a857c706e707376797c7f8285888b8f9297999c9fa3abaca9a19e99928e89837d77706c625f584e43372b1f120705020000000000000000000000000814202d3944505a61646565656565656d717d869299a3afbbc4bbafa3998f82756965656565656568686868686868686a7784909daab2b2b2a79b8e81747885929ea3a4a6a7a7a8a8a7a6a69f99928a7d70685d5245392c20130800000714202d3a4753606d79818181818181818185919eabb8c4c4b7aa9d9184776a5e514437333f4953616e7b87939facb9c6c3b6aa9d908377675d5145392c2d3a4754606d7a8798a2aebac6c3b6a99d9083766a5d50432e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303d46525e6873808d98a2aebac6c7baaea3988f828f949fabb9c3c4b8aca0958b7e71675d51463c30261c11070000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54626f7c8996a0acaaa0969196a0acb9c5bcafa296897c6f686d7174787b7f83878c91959b9fa3abafaeaca6a2abadb3bbafa49a92857a6e615a626a6f7a828c929fa3aab3b5aba29892857c6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2c38444f59626f7c88939eabb5c0cfd9e3d6cabfb4aa9b8e8275665c515865727e8b98a5b1beb8ab9e92857c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c6f6256493c2f23160900000000000004101d2935404b55606c7883909da6aca49f9c989c9fa6acada297928e8b86827e79706b6b6b6b666d6f7275797c7f8285898c909299a3aeb3adaba39f9b94908a837d776f6a5f53473b2e211514120e0903000000000000000000000a1623303c4955616c707272727272727272727d87929facb9c5c0b5ab9f93877b72727272727272727272727272726d6a7784909daab7bfb4a79b8e81747b8797a1adb1b2b3b4b5b5b4b3b0aba39e92857a6d6054473a2f24190d01000714212d3a4754606d7a878d8d8d8d8d8d8d9197a1adb9c6c4b7aa9d9184776a5e5144372d3846525e687683909da9b6c3c5b9ac9f92867a6d6054473a2d2c3945525d687985929facb8c5c4b7aa9e9184776b544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a36414c56616d7a86929fabb4bfcbbfb4aa9e948f949ea6b0bbc8bcb1a79d9083786c60554b40342b1e150a000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6674818d9aa8b2b2a8a09ea0a8b2bdc9bcafa296897c6f636164676a6e72767b7f84898e92999fa3abb5b3afb8babeb4aa9f93887d70685e59585f686d77808a9298a1a9aca39992867d6f6a5f53473b31251a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630384854606b76828f9ca5afbdc7d2dddedbd0c5b8ac9f9285796d60535865727e8b98a5b1beb8ab9e9185786f6f6f6f6f6f6f6f76777879797a7a7a7a797876736f6f6f6f6f6f6f6f6f6f6a6054473b2e22150800000000000006131f2c3845515d67717e8b95a0acb3afaca9a5a9abb0b8ab9f9285817e7a7878787878787878787878787878787878797c7f8286929facb9b9b5afaca69f9c95908a837c6f6255483c2f2722211e1a140d060000000000000000000a1724313d4a5764707e7f7f7f7f7f7f7f7f7f7f83909da9b6c3c7bbafa4998f817f7f7f7f7f7f7f7f7f7f7f7f7f7f726a7784909daab7c1b4a79b8e81747d8a96a9b3b5b4b6b8babfc1c0bdb5ada2978c7f7265554c4135291d1104000714212d3a4754606d7a87939a9a9a9a9a9a9ea1a9b2bec9c4b7aa9d9184776a5e5144372a36414d5666727f8c99aab4bec7bbafa399897c706356493d302935414c566a7784919daab7c4c5b8ab9f928578665c5144382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1925303b46525e6874808d99a3aebac7c6bcb0a69e9c9ea6b0b8c2c4b8ab9f95897d70665b5043392f22190c0300000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929eabb8bab2acaaacb2bac4cebcafa296897c6f63565a61646566696e72777c81868d9299a3abb5c0c5c6baaea2988c80736b656565656565656c737e869297a1a49a92877d706b615e574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3842505a63707d89949fabb7c1d0d1d0d1d4d3c6baaea298897c6f63565865727e8b98a5b1beb8ab9e9185786b62626262626c78828485868687878787868583807b746d6662626262626260584e43372b1f13060000000000000714202d3a4753606d7984919b9fa2a9abaeb3b2b6b7bbb8ab9e918584848484848484848484848484848484848484848484848485929eabb8c5c0bbb9b0aba79f9d958b7e7265584b3f32342e2d2a261f170f060000000000000003101d293643505c6976828b8b8b8b8b8b8b8b8b8b90959fabb8c4ccc0b5ab9e938f8b8b8b8b8b8b8b8b8b8b8b8b8b86796c7784909daab7c1b4a79b8e81747f8c99a6a9a8a8a9acaeb4bcc4c6beb3a99d908377675d5145392c201306000714212d3a4754606d7a8793a0a7a7a7a7a7abadb2bbc4cfc4b7aa9d9184776a5e51443725303c4956626f7c8998a2aebac6c0b5ab988b7f7265584c3f32242f43505c6976838f9ca9b6c2c6baada29786796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2a36414c56616e7b86929facb9c4cfc1b8b0aaa8aab0b8c1c8bcb1a79d9083776b61544a3f31281d10070000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a97a1adb9c4bdb9b7b9bdc4ccc9bcafa296897c6f6356616c7172727272727272757b80879299a3afbbc7c5b8ac9f92857a7272727272727272727272727c85929e9f93877e7272726e695e53463a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616c7683909da6b0bbc9c8c4c3c4c8cdcabfb4aa998c807366555865727e8b98a5b1beb8ab9e9185786b5e565656626f7c88909192999394949498928f8c8680786d665c56565656544e463d32271b0f030000000000050e1724303d4a5763707d868a8e92979b9fa2aaacaeb5b8b9ada197919191919191919191919191919191919191919191919191919297a1adb9c6cbc7c2bcb7b1aba7988b7e7265584b3f3e403b3a36312921170d0300000000000003101d293643505c6976838f9898989898989898989d9fa7b1bcc8d2c7bdb0a69e9b9898989898989898989898989386796c7784909daab7c1b4a79b8e8175828f9b9d9c9b9b9c9fa3aab2bac4c5b9ac9f93867a6d6054473a2d211407000714212d3a4754606d7a8793a0adb4b4b4b4b8b9bec4cdd0c4b7aa9d9184776a5e5144372b2d3a4653606d7985929fabb8c5c1b4a79a8e8174675b4e41302535424e5b6875818e9ba8b4c1cabeb3a994877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303a46525e6974818e9ba8b2bdc9cac1bbb7b5b7bbc1cac5b8aca0958a7d7064594f42382d1f160c000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba5afbcc5c9c5c4c5c9ced5c9bcafa296897c6f635764717e7f7f7f7f7f7f7f7f7f7f8186929facb9c5c6baaea2988f827f7f7f7f7f7f7f7f7f7f7f7f7f818d9a9d90837f7f7f7f7b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202b3844505c66707d8a959fabb8c2c3bcb8b6b8bcc3cbc3b6a99c908376675d5865727e8b98a5b1beb8ab9e9185786b5e524b5865727e8b989e9fa3a0a0a1aaa29f9c99928d82786d60574d494947433d342b20160a0000000000020d17202d363f4855616b70797d81858a8e92989b9fa3abacb1b3a9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea1a9b3bebbbbbbbbbbbbbcb1a5988b7e7265584b494b4d4846423b33291f140900000000000003101d293643505c6976838f9ca5a5a5a5a5a5a5a5a9abb1b9c2cacfd0c1b8b0aaa8a5a5a5a5a5a5a5a5a5a5a59f9386796c7784909daab7c1b4a79b8e8177849192918f8e8e8f9298a1a8b2bdc7bbafa499897c6f6256493c2f231609000714212d3a4754606d7a8793a0adbac0c0c0c4c6c9cfcfcfc4b7aa9d9184776a5e5144372b2b3844505c6676838f9ca9b6c2c3b6aa9d9083776a564c41362a34414d5a6774808d9aa7b3c0d0bbaea295887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36424d5763707d8996a1adb9c5d2ccc7c3c2c3c7cccabfb4aa9d9184786c6053463d2f261c0d04000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a939eaab3becad2d1d2d5d9d5c9bcafa296897c6f635c6976838c8c8c8c8c8c8c8c8c8c8e9299a3afbbc7cabfb4aa9f948f8c8c8c8c8c8c8c8c8c8c8c8c8c8d929da095908c8c8c897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2935404b55606d7884919da7b1bcc3b9b1acaaacb1b9c3c5b9ac9f92867a6d605865727e8b98a5b1beb8ab9e9185786b5e524c566874818e9ba7acaeb4adadb3aeababa39f948d8073695e53463c3b37322b22190f04000000000009141f29333f4850565961676d7074797d81858a8f92999da0a7acaeadababababababababababababababababababababababababababadb3aeaeaeaeaeaeaeaeaeaea5988b7e7265585356585a55534d453b31261a0e02000000000003101d293643505c6976838f9ca9b2b2b2b2b2b2b2b3b3b3b8b9bec5cdcac1bbb6b5b2b2b2b2b2b2b2b2b2b2ac9f9386796c7784909daab7c1b4a79b8e81798888868482828183869196a1acb9c5c0b5ab96897d7063564a3d3023170a000714212d3a4754606d7a8793a0adbac2c2c2c2c2c2c2c2c2c2b7aa9d9184776a5e5144372b28343f4a546773808d9aa6b3c0c5b8ab9f928578685e5246392d33404d596673808c99a6b3bfc9bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b4653606c7884919eabb8c4ced7d3d0cfd0d3d3c6baaea2988b7e72655b5044372c1d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303c4955616c75828f98a2aebac3ced9dee1e5d5c9bcafa296897c6f635c6976838f9898989898989898989a9fa3abb5c0cbd0c6bcb0a69f9c989898989898989898989898989a9da4a7a09d989896897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303945515d67717e8b95a0acb9c2bbb1a7a09da0a7b1bcc7bbaea3998a7d70635865727e8b98a5b1beb8ab9e9185786b5e52525e687784919eaab0b0b1b5b7bbbab8b5afa69f92877b6e6154483c312b27201910070000000000020e1a25303b45505a626564616064666d7074797d82868b90959b9fa3aaadb3b7b7b7b7b7b7b7b7b3adaba4a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1988b7e72655d60626467615f574d42362a1e1205000000000003101d293643505c6976838f9ca6a6a6a6a6a6a6a6a6a6a6abadb3bbc5cfcbc0b7afa9a7a6a6a6a6a6a6a6a6a69f9386796c7784909daab7c1b4a79b8e817a7e7b7977767575767b84919eabb7c4bdb0a4978a7d7164574a3e3124170b000714212d3a4754606d7a8793a0adb6b6b6b6b6b6b6b6b6b6b6b6aa9d9184776a5e5144372b232e3e4b5764717e8a97a4b1bdc6baaea298877a6d6154473a2e323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b3844505b6673808d9aa8b2bdc9d5dfdcdbdcdfd2c5b8ac9f92857a6d6053493f33271a0b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3945505a616e7b85929fa8b2bdc8d4dee9e2d5c9bcafa296897c6f635c6976838f9ca5a5a5a5a5a5a5a5a7acafb5bdbfbfc0c1c2b8b0aba9a5a5a5a5a5a5a5a5a5a5a5a5a5a7a9aeb1acaaa5a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c56606d7984919ea8b1bdbeb3a9a0959095a0acb8c3bfb5ab9a8d8073675465727e8b98a5b1beb8ab9e9185786b5e5254616d7a8796a0a3a3a3a4a9abb0b8c2c0bbafa3998d807467584e43372b1f160f0700000000000005111e2a36424d57626c71716e6c65676463676d70757a7f83898e92989ea1a9acb2b9bdc4c4beb3a9a29f9895959595959595959595959595959595959595959595959595958b7e7269676d6f71736e695f53463a2d21150a000000000003101d293643505c6976838f9999999999999999999999999ea1a9b3becac6baafa59d9b999999999999999999999386796c7784909daab7c1b4a79b8e8174716e6c6669686869717e8b98a4b1bebeb3a996897d7063564a3d3023170a000714212d3a4754606d7a8793a0a9a9a9a9a9a9a9a9a9a9a9a9a9a99d9184776a5e5144373030303c4955626f7c8895a9b2bec9beb4aa96897c6f6356493c30313e4b5864717e8b97a4b1becabeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54626f7c8896a0acb9c5d2dee9e8e1d5c9bdb2a89a8d8174675d5141382d22170800000000000000000000000000000000000000000000000000000000000000000000000000000000000004111c28333e46525e69727f8b96a0acb8c2ccd8e3e2d5c9bcafa296897c6f635c6976838f9ca9b2b2b2b2b2b2b2b3b3b3b3b3b3b3b3b5b9c0bbb7b6b2b2b2b2b2b2b2b2b2b2b2b2b2b4b5babcb8b6b0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232d3946525e68737f8c97a1adbac3b9ada1979083909da7b1bcc3b6a99d908376665c65727e8b98a5b1beb8ab9e9185786b5e525763707d8a9697979696979c9fa6b0b8c2c0b5ab9e9184786a5f53473a2e211508000000000000000714202d3a46525e69717e7d7b797674716f6d6667686d72777c81868c92979ea1a8adb2babfbaada297928b88888888888888888888888888888888888888888888888888888a7e7375787a7c7e807b6e6155483c31261b0f030000000003101d293643505c6976838c8c8c8c8c8c8c8c8c8c8c8c8c9297a1adb9c6c2b6a99d938e8c8c8c8c8c8c8c8c8c8c8c86796c7784909daab7c1b4a79b8e81746862605b545b57626f7c8895a2afbbb9ada197877b6e6154483b2e211508000714212d3a4754606d7a87939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9184776a5e51443d3d3d3d3d4753606d7a8697a1adb9c6beb1a4978b7e7164584b3e3d3d3d4a5764707d8a97a3b0bdcabfb2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3847535f6a7784919eaab7c4d1ddeaebded2c5b9aca196897c6f62554b412f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222a36424d57606d7884919da6b0bbc7d3dee2d5c9bcafa296897c6f635c6976838f9ca9b6bfbcb3adaba6a6a6a6a6a6a6a6a7a9aeb6c0c4c2b9b1aba9a6a6a6a6a6a6a6a6a6a8aaafb8c1bcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17212b37434e58616e7a86929fa9b2bebdb2a89e92857b8895a0acb8c5b8ac9f9285796d6065727e8b98a5b1beb8ab9e9185786b5e525a6673808d8b8a8a89898b8f949fa6b0bbc7b9ada196887b6f6255483c2f221509000000000000030f1c28333f4a54616e7b878a888583807e7c797674716e696a6f757a7f858b91969ea1a8aeb4b8ab9f92857e7c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c7d7e80828486898b8c7f7366584e43372b1f120600000000000b1825313e4b5864717e8080808080808080808080808085929eabb8c5c1b4a79b8e81808080808080808080808080736a7784909daab7c1b4a79b8e8174685b53504a505a626f7c8995a2afc0b5ab9e918578695e53463a2d211407000714212d3a4754606d7a878f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f84776a5e51484a4a4a4a4a4a515d677885919eabb8c4bfb2a6998c7f7366594c4a4a4a4a4a5663707d8996a3b0bcc9c0b3a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2b37434e586774818e9aa7b4c1ced9e5eaded1c4b7ab9e9184786a6054433a2f1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1a25303b44505c66707d8a949fabb7c1ccd7e3d5c9bcafa296897c6f635c6976838f9ca9b6beb3a9a29f99999999999999999a9da4aebbc5bcb1a79f9d9999999999999999999b9ea5afbbbcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333a47535f6a74818e98a2aebbc4b8aca0968b7f7784919daab7c4baaea298887b6f6265727e8b98a5b1beb8ab9e9185786b5e525966727f807f7e7d7d7d7e828f949fabb7c7bdb2a8988b7e7165584b3e3225180b00000000000006121f2b3844505b66737f8c999892908d8b888683807e7b787573706d73797e848b91969fa2aab0ada297928780786f6e6e6e6e6e6e6e6e6e6e6e6e6e6f7174777a7c7e8183868a8b8d8f91939a979084776a5f53473a2e21150a00000000000a1724303d4956626c717373737373737373737373737784909daab7c3bdb0a3968a7d7373737373737373737373736d6a7784909daab7c1b4a79b8e8174685b4e4b515a626c74818e9aa7b4bbafa4998d807467574d42362a1e1205000714202d3a4753606d79828383838383838383838383838383838383838174685b53555656565656565655697683909ca9b6c3c0b4a79a8d8174675a56565656565656636f7c8996a2afbcc9c0b4a79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26313e4b5764717e8a97a7b1bcc8d4e0e1d5c9beb3a9998d807366584e4331281d0b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f28343f4a54616b76828f9ca6b0bbc7d3ded5c9bcafa296897c6f63666976838f9ca9b6baada297928c8c8c8c8c8c8c8c8d929da9b3beb8ab9f95908c8c8c8c8c8c8c8c8c8f939eaab6bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59626f7c87929faab4bfbeb0a69e91847974818d9aa7b4c0bfb4aa988b7e716565727e8b98a5b1beb8ab9e9185786b5e4f59636d74807f747070707177828f9cacb6c0c0b3a69a8d8073675a4d4034271a0d0100000000000613202d394653606c7884919ea29f9c9a979892908d8b8885827f7d7a777372797e848c92989ea6a8a09d99938d837b6f626262626266676d707376797b7e818486898b8e90929898999c9e9fa4a095887c6f6255483d32271b0f00000000000815212d3945505a62646666686b6b6b6b6b6b6b6b6b7683909da9b6c3beb1a4978b7e716b6b6b6b6b6b6b6b6b6666636a7784909daab7c1b4a79b8e8174685b4f555d606c717e8a939da9b5b2a89f93877b6e6255483b31251a0e02000613202c3945515d676d76767676767676767676767676767676767676746f65585f6263636363636363636875828e9ba8b5c1c2b5a89b8f8275686363636363636363636f7c8895a2afbbc8c1b5a89b8e8275685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a14212e3b4754616e7a8795a0acb8c5d1dedfd2c6b9ada197887c6f6255493d3222160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17232e38424f59626f7c88949eaab7c1ccd7d5c9bcafa296897c6f6d736f76838f9ca9b6b8ab9f92858080808080808080808d97a1adb9b6a99d9083808080808080808080818f9ba8b5bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16232f3c4855616b76828f99a3afbcc0b6ac9f948a7d70717d8a97a8b1bdc0b4a79a8d81746765727e8b98a5b1beb8ab9e9185786b5e57606b717e8b8c80786d6765707d8a9aa4afbbc2b5a89c8f8275695c4f4236291c07000000000005121e2a36424d5763707d8a96a1adaca9a7aaa39f9d9a9797928f8c898683807d7a77797f868f949f9a95918c87827e796d6164666c6f7376797c7f8285888b8e909299989a9d9fa3aaa6a8abacafa7998d807366584e43372b1c11060000000005111d29343e48505658656f7578787878787878787878828f9ca9b6c2beb2a5988b7f78787878787878787878726d626a7784909daab7c1b4a79b8e8174685b5961676d747e87929fa5afb1a8a0968e81746a5f53473a2e1f1409000004111d2935404b555d606969696969696969696969696969696969696968655d5f6a6e70707070707070707073808d9aa6b3c0c3b6aa9d90837770707070707070707070707b8895a1aebbc8c2b5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687784919daab7c4d0ddded1c4b8ab9e9185786c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303e4754606a75828f9ca6b0bbc7d3d5c9bcafa296897c6f737f7c76838f9ca9b6b7ab9e918478737373737373737785929eabb8b5a89c8f827573737373737373737e8b97a4b1bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a949faaafb8bbafa49a9083766c6e7a8795a0acb8c3b6a99d9083766665727e8b98a5b1beb8ab9e9185786b565f69707d8792928d82796e696d7a86939facb9c3b6aa9d9083776a5d50442f24180d01000000000714202d3a46525e6975828f9ca8afb6b3b3b4aeaca9a7a9a29e9c999992908d8a8683807d7b828f928d89847f7b76716d686d7175797c7f8386898c8f9298989a9d9fa3aba7aaacaeb4b3b5b7b9b7aa9e9184776a605447382d22170b00000000000c17222d363e454e5b6875818585858585858585858587929facb9c5c5b8ac9f9286858585858585858585857f72656a7784909daab7c1b4a79b8e8174685f626b7079818b9299a3afafa7a0969184796d60574e42372b1e0d030000010d18242f3a434b51535c5c5c5c5c5c5c5c5c5c555d6067615e565c5c5b5955626e7c7d7d7d7d7d7d7d7d7d7d818e9aa7b4c1c5b8ab9e92857d7d7d7d7d7d7d7d7d7d7d7d7e8a97a4b1bdcac3b6a99d9083766a5d5043372a1d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566774818e9aa7b4c1cddadacec1b4a79b8e8174655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2b37434e58626f7c88949eaab7c2cdd8c9bcafa296897c6f7b87878082909ca9b6b7ab9e9184786b69696969696575828e9ba8b5b7ab9e91847868696969696969717e8b97a4b1bcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d6976838d92989ea5abb1aa9f93877c6f62687784919daab7c4b9ac9f9286796d65727e8b98a5b1beb8ab9e9185786b5e686e7b8592999d948f837b6f6a7885919eabb8c4b7ab9e9184786b554b4135291d1104000000000815212e3b4854616e7b87929e9fa4aca6a8abadb2b2b3b3adaba8aba39f9d9a9993908d8985828386817c77726e696e72767a7e8185898c8f9299999c9fa2aaa7aaacafb5b4b6b9b8b6b4b2b5afacaba096897c6f62544a3f33281c0f030000000006111b242d34434f5c6976828f9191919191919191919299a3aebac7c6baaea298929191919191919191918c7f72666a7784909daab7c1b4a79b8e8174686a6e757d848d929fa3abada59e9590847b6e675d51453c31261a0e0000000007131d28313a404547505050505050505050515d676d746d685f584f4e4e5b687481898989898989898989898e939da9b5c2c6b9ada197928989898989898989898989898a909aa6b2bfd0c4b7aa9d9184776a5e51442d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303f4c5865727f8b98a5b2becfdad5c9bdb2a8978a7e716453493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1b27323c4754606a75828f9ca7b1bcc7d4c9bcafa296897c74808d928c90949fabb7b7ab9e91847876767676767676767f8c99a5b2b9ada196877a76767676767676767e8b97a4b1bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7980868e939d9fa7a2988e81756a606774818e9aa7b4c1baaea398887b6e65727e8b98a5b1beb8ab9e9185786b676d7a849197a2a69f9590857c6f7783909daab6c3b9ac9f928679675d5145392c201306000000000d1a2633404d596673808c8f91939a97999c9ea1a8a5a7aaacafb5b5afacaaaba49f9d9998928f909184807c7875767b7f83868a8e9297999c9fa3aba9abaeb4b4b7b9b7b4b2b3adaba9a7a5aba49f9e9c9a8d8073665b5044382b1f1206000000000009121b2936434f5c6976828f9c9e9e9e9e9e9e9e9e9fa3abb4bfcbcabfb4aaa29f9e9e9e9e9e9e9e9e998c7f72666a7784909daab7c1b4a79b8e81746d737c828991969da4afa9a19e938e837b6e695e554b41332a20150900000000010c161f282f35393a4343434343434346505a606d79817a6e6a6159514e5b6874818e9696969696969696969a9da5afbac5c9beb3a9a19e969696969696969696969696979aa2acb7c2d1c4b8ab9e9185786b5e4a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081723303d4a5663707d8996a9b3bec9d5d2c5b9aca096877a6d6154473a2d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e58636f7c89959fabb8c4cec9bcafa296897c7a86929f999c9fa6b0bcb8ac9f928682828282828282828283909daab7bdb2a89c9083828282828282828283909daab7bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d737b818990959e9f92867b6e615865727e8b98acb6c0bfb4aa968a7d7065727e8b98a5b1beb8ab9e918578676d79839096a0a9b0a7a09690837975828f9ba8b5c2baaea398877a6d6054473a2d211407000000000b1724313e4a5764717e80828486888a8d8f919696989b9d9fa3aba8abacb2b5afacaaaaa29f9c9d96918d89858183878b9092999b9fa2a9a9acaeb4b5b8b7b4b5aeacaaa7a5a9a29e9c9a9896999391908e8c84796c605346392d201306000000000000101c2936434f5c6976828f9ca9abababababababacaeb4bdc6d1d0c5bcb4aeacabababababababa5998c7f72666a7784909daab7c1b4a79b8e8174737f878f949ea0a8aeada197928a81796e695e574d433a2f21180e030000000000040d161d24292c2d363636362f3a434e58626c74818e847c706b625b515b6874818e9ba3a3a3a3a3a3a3a3a7a9afb7c0cbcfc5bbb3adaba3a3a3a3a3a3a3a3a3a3a3a3a4a6acb4bec8d2c5b8ac9f928579665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8797a1adb9c6d2d1c4b7aa9e918477685e5246392d1b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323c4854606b7683909da8b2bdc9c9bcafa296897d808c98a2a6a9abb0b8c2baaea398928f8f8f8f8f8f8f8f8f9095a0acb8c4b7ab9f94908f8f8f8f8f8f8f8f9095a0acb8bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b555d60696e757c838a91968c8073695e56636f7c899aa4afbbbeb2a5988b7f7265727e8b98a5b1beb8ab9e9185786d79828f959fa8b2aaa29791847b6e74808d9aa7b3c0bfb4aa94887b6e6155483b2e221508000000000a1723303c4955616c717476787a7c7e80828487898b8e909299989b9ea1a8a7aaacb1b4aeaca8a8a09d9a97928e90939a9c9fa3ababadb3b6b9b8b6afacaaa7aba39f9d9b98969792908e8c8a88868483817f7e796d6053473a2d201407000000000003101c2936434f5c6976828f9ca9abababababababacaeb5bdc6d1d0c6bcb4aeacabababababababa5998c7f72666a7784909daab7c1b4a79b8e81746e7b859298a2abb2b8ab9e92857e746d675e574d453b31281d0f0600000000000000040c13181d20202929222d38414c565f6a717e8b9391867d726d605c546874818e9ba7b0b0b0b0b0b0b0b4b5bac0c9d2d6cdc5beb9b8b0b0b0b0b0b0b0b0b0b0b0b0b1b2b7bec6d0d2c6b9ac9f9386796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687885929eabb8c5d1cec1b4a89b8e817568564c41362a1e0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c38434f5964717d8a96a0acb9c6d1bdb0a3968a7d85929faab4b6b7bcc2cbbfb4aaa39f9c9c9c9c9c9c9c9c9c9da0a7b1bcc7bcb0a69f9c9c9c9c9c9c9c9c9c9da0a7b1bcbcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a434b51575e616a6f787e848c84796d605754606d7a86939facb9c0b4a79a8d817467727e8b98a5b1beb8ab9e91857878828f949fa7b1aba39892857c6f69727f8c98a5b2bfbcafa295897c6f6256493c2f231609000000000814212d3945505a61646769676d6f717375787a7c7f818486898c8e9196979a9da0a7afb6b8b5b2acaaa9a19e9b9d9fa4acacafb5b8babcb3adabaca49f9d9a989992908e8b89878583817f7d7b7978767473716d675d5145382c1f1306000000000003101c2936434f5c6976828f9c9e9e9e9e9e9e9e9e9fa3abb5bfcbcabfb4aaa29f9e9e9e9e9e9e9e9e998c7f72666a7784909daab7c1b4a79b8e8174696f7c869299a4afb5a89c8f82796d655d554d453b33291f160c00000000000000000001070d111314172127333f49535d686f7c86929f9892877f746d665e6874818e9ba7b4bcbcbcbcbcbcc1c2c5cbd2dbdfd6cfc9c6c5bcbcbcbcbcbcbcbcbcbcbcbcbdbfc2c8d0d6d4c8bbafa49a877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566976838f9ca9b6c2cfcbbeb2a5988b7f7265584c3f3025190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323d4653606d7884919eaab4bfcbc2b5a89c8f828f97a2adbcc3c4c7cdd0c6bcb4aeaca9a9a9a9a9a9a9a9a9aaacb1b9bcbcc2b9b0aba9a9a9a9a9a9a9a9a9aaacb1b9bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313d474f54565860656c71797f7e71675d5b5b5d677784919eaab7c2b5a99c8f827669727e8b98a5b1beb8ab9e9185787c869197a0a7aba39992867d6f6a64717e8b97a4b1bebdb0a3968a7d7063574a3d3024170a0000000005111c28333e485055575a555d60626a6769686d707274777a7c7f8284878a8d91959fa4acb6c0bdb8b7b3adaba8a9acafb6b9bbc0c5beb3a9a29f999a93918e8b888683817f7c7a78767472706e6d6669686664605d554b4035291d1004000000000003101c2936434f5c6976828f9292929292929292929299a3aebbc7c6baaea298929292929292929292928c7f72666a7784909daab7c1b4a79b8e8174686a707e87939fa4aeaa9e948e81776c605c52493f372d241a0e050000000000000000000001040b151f29333b44505b656d7a849198a2a299938c81786d686874818e9ba7b4c1c9c9c9c9c9c9d0d1d4d9dfe7e1dad5d2d1c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ccc0b6a194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e192530424e5b6875818e9ba8b4c1cec9beb3a996897c6f6356493c3023160800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161f2b3844505c66727f8c98a3aebac7c3b7aa9e948f949ea9b3beccd0d3d8d8cec6bfbab8b5b5b0afafafafafafafafafafafafb7b8bcb7b6b5b5b5b5b5b5b5b1afafafafafafafa396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f59606368686868676d73716c68686868686875828f9ba8b5c2b7ab9e91847867727e8b98a5b1beb8ab9e9185786f7c8590959ea49992877d706b6063707d8a96a3b0bdbeb1a4978b7e7164584b3e3125180b00000000000c17222c363e45494a4d525e686d7774716d68666568676d6f7275787b7e81848d939aa4afbbc8c5c4beb9b8b4b6b9bbc0c5c7cbc6baada297928c8a8684817e7c79777472706d6869676a6f6f6a60545b595853514b43392f24180c0000000000000a15202a34424f5b6875818585858585858585858587929facb9c5c5b8ac9f9286858585858585858585857f72656a7784909daab7c1b4a79b8e817468616c727f8b929ca5afa69e938d80746e635b51493f362c20160c020000000000000000000007121d27313b454f59606c77818f96a0aaaba49f938e827a6f6a74818e9ba7b4bcbcbcbcbcbcbcc4c5c8ced5dedbd3ccc6c2c1bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081a2734404d5a6773808d9aa6b3c0cdc6b9ada197877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616d7a86929facb9c3c7bbb0a69e9c9ea6adb2bac2cad6dbe0d8cec4bab2acaba3a2a2a2a2a2a2a2a2a2a2a2a3aaacb1b9c2c2c2c2bcb4aeaca4a2a2a2a2a2a2a2a296897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4854606b70757575757575757575757575757575757f8c99a6b2bfb9ac9f93867a6d727e8b98a5b1beb8ab9e9185786a6f7b838e939f93877e716b6666666f7c8995a2afbcbfb2a5988c7f7265594c3f3226190c000000000005101a242c33393c3e4754616d7a83817d7a76736f6a6763636568696e71747a8086939facb9c6c6c3bcb8b7b2afb3b8b9bec4c7c5b8ab9f9285807d7a7774716f6d6668656364686e72777c7c6f62554b4c4b4745403931271d12070000000000030f1b26323c464e59656f7578787878787878787878828f9ca9b5c2bfb2a6998c7f78787878787878787878726d626a7784909daab7c1b4a79b8e8174685a626d73808d939ea6afa59d928d80736d635b51483e32281e1308000000000000000000071018232f39434d57606b727f8c939ea8b2b5afa59d9490847c6f74818e9ba7afafafafafafafafb7b8bcc3ccd5d3c9c1bab6b5afafafafafafafafafafafafafafafafafafafafaea295887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfcbc4b8ab9e918578685d5246392d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3846525d6875818e9ba8b1bdc8c1b8b0a9a19e9ea1a8b0b8c0cad0d8d5c9bdb2a8a19e969696969696969696969696969da0a7b0b8c1cabfb4aaa29f97969696969696969696897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d8282828282828282828282828282828283909daab6c3bbafa49a877a6d727e8b98a5b1beb8ab9e91857873737379818e958b7e737373737373737b8894a1aebbc0b3a69a8d8073675a4d4034271a0d01000000000008121a22282d36414c5665717e8b8d8a86837f7c7874706c66666d72797f858d939aa4afbbbfbab8b1acaaa5a2a6abadb2b7bbc2baada29790837d766f6b6562606063676d71757a7f84898175675d51453e3a38352f271f150b01000000000006121f2b37434e585f6269696b6b6b6b6b6b6b6b6b76828f9ca9b5c2bfb2a6998c7f736b6b6b6b6b6b6b6b6b6968656a7784909daab7c1b4a79b8e8174685c5b606c77818e949fa7aea49c928c7f726d625a50443a3025190d0100000000000000050e19222934404b555e69707d87939fa5afbac0bbafa69f9691857c74818e9ba3a3a3a3a3a3a3a3a3aaacb1b9c3ceccc1b7afaaa8a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a295897c6f6256493c2f23160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcac2b6a99c8f837669564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2935414c56636f7c8995a0acb8c7c6b9ada1979191969fa6aebabfc6ced2c5b9aca196918989898989898989898989898990959fa6afb7c1baaea298928b898989898989898989897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e90959fabb8c4c0b6a094877a6d727e8b98a5b1beb8ac9f92867f7f7f7f7f7f8491837f7f7f7f7f7f7f7f808d99a6b3c0c0b4a79a8d8174675a4e4134271b0e01000000000000081017202d3946525e6876828f9a9993908c8884807c787472797f858c92979fa4acb6b9b4aeaca7a09d9995999ea1a9abb0b9bbb3a9a095908a837c746d68656c7074797e82868c9192867a6d6053473a2f2c29241d150d030000000000000815212e3b47535f6a6f767676767676767676767676828f9ca9b5c2bfb2a6998c7f7676767676767676767676756f6a7784909daab7c1b4a79b8e817468686868656d78828f95a0acaea49c918b7f726c61564c41362a1d1105000000000000020d17202b343d45515c676e7b859299a4afb7c1cbbfb5aba19790837874818e969696969696969696969da0a7b1bcc8c6baafa59e9b9696969696969696969696969696969696969696969696897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a3afbcc9c2b6a99c8f8376695c50433024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303a4854606b7784919dacb6c0c4b8ab9e9185848f949da4aeb4bcc5cdc4b7ab9e91847d7c7c7c7c7c7c7c7c7c7c7c7c838f949ea5afb9b8ac9f92857e7c7c7c7c7c7c7c7c7c7c7a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b9b9b9b9b9b9b9b9b9b9b9b9b9b9d9fa7b1bcc8baada094877a6d727e8b98a5b1bebaaea298928c8c8c8c8c8c9195918c8c8c8c8c8c8c8c8d929ca8b4c1c1b4a79b8e8174685b4e4135281b0e02000000000000000714212e3a4754616d7a86929fa49f9d9996918d8985817e848b92979ea1a9afb6b2acaaa29f9a95918c888c91979c9fa6acafb6b1a7a09d959087817a7273787c81858a8f92999d988a7e7164554c4135291d18120b03000000000000000915222f3c4855626f7c82838383838383838383838285929eabb8c5c4b7aa9e9184828383838383838383838381756a7784909daab7c1b4a79b8e8175757575757575757a84909daab7ada39f93877e71685e5246392d20130700000000000008141f29323d47515b606d79839097a1abb5c0c9c2bbaea39991857b6e748189898989898989898989899195a0acb8c5c2b6aa9e938e8989898989898989898989898989898989898989898989897d706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aebbc8c3b6a99d9083766a5d5043372a1d08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2c38444f5966727f8c9aa4afbbc6b9ac9f93867c828d929fa2aab3bbc4c5b9aca1969082796f6f6f6f6f6f6f6f6f6f7079828e939ea7b1baaea29891857c6f6f6f6f6f6f6f6f6f6d685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a8a8a8a8a8a8a8a8a8a8a8a8a8aaabb1b9c3cdbaada094877a6d727e8b98a5b1bebfb4aaa29f9999999999999ea09d9999999999999999999ca4aeb9c5c1b4a89b8e8175685b4e4235281b0f0200000000000005111e2a36414c5665727e8b99a3afaca9a8a19e9a97918d8b91969ea1a9adb3b4aea8a09e98928e89847f7c80848a8f949b9fa4acafb1aca79f9a938e857f8084898e92979c9fa3aa9b8f8275675d5145392c2013080100000000000000000a1623303d495663707c898f8f8f8f8f8f8f8f8f8f8f9297a1adb9c6c5b9aca096918f8f8f8f8f8f8f8f8f8f8f84786b7784909daab7c3b7ab9e918482828282828282828283909da9b6bbafa49992867a6d6154473a2e2114070000000000020e1925303b444f59626d74818e959fa9b3bdc7c2b8afa59f92877d6f696e7c7c7c7c7c7c7c7c7c7c7c7d83919daab7c4c1b5a89b8e817d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d7a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbad2c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b27323d4854616e7b87939facb9c6bbafa4998c7f79808a9298a1a9b3bbc4bdb2a89f94908279707070707070707070707078818e959fabb8b4aaa19791857c6f6a636363636363605d564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1b5b5b5b5b5b5b5b5b5b5b5b5b6b8bcc3cbc7baada094877a6d727e8b98a5b1bec5bcb4aeaca6a6a6a6a6a6abacaaa6a6a6a6a6a6a6a6a6a8aeb6c0cac2b5a89b8f8275685c4f4235291c0f020000000000000714202d3946525e6876838f9cabb5b9b6b2adaba9a19e9a989ea0a8adb3b9b4aba39f96918b86817c77726f73797d82888f939a9fa3abb5b1aca49f97928b8c91969a9fa2a9acafac9f92867a6d6054473a2f24190d0100000000000000000a1623303d495663707c89969c9c9c9c9c9c9c9c9c9c9ea1a9b3becac9bdb2a8a09e9c9c9c9c9c9c9c9c9c9c9184786b7784909daab7c3b9ada196918f8f8f8f8f8f8f8f8f90959fabb8c0b5aba399877b6e6154483b2e211508000000000005111e2a36414d56606b727f8b939da7b1bbc5c4bab0a69d938b7f726b606a6e7070707070707070707076838f9ca9b6c2c0b4a79a8d817470707070707070707070707070707070707070707070706d685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8793a0b6c0ccc3b7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202d3a46525e6976838f9caab4bfc0b5ab9d908376747e869297a1a9b2bac4bab0a69f948f817d7d7d7d7d7d7d7d7d7d7d7d7d83909da9b6bcb3a9a19792867c6f62565656565654524c443a2f24190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1bec1c1c1c1c1c1c1c1c1c1c1c3c4c8cdcac7baada094877a6d727e8b98a5b1becec5bfbab8b2b2b2b2b2b2b8b8b7b2b2b2b2b2b2b2b2b3b4b9c0c8c6c2b5a99c8f8276695c4f4336291c10030000000000000814212e3b4754616e7a87939facb5b7b8bdb9b7b3adaba7a5aaacb2b9bebaaea399928b847f7a746f6a6662666d71767c82878e9299a3afbbb6afa9a29f98999ea1a8abadb3b9b9aea3988a7e7164564c4135291d110400000000000000000a1623303d495663707c8996a3a9a9a9a9a9a9a9a9a9abadb3bbc5cfcec4bab2acaaa9a9a9a9a9a9a9a9a99e9184786b7784909daab7c3bdb2a8a19e9b9b9b9b9b9b9b9b9b9d9fa7b1bcc7bdb5ab94877b6e6154483b2e21150800000000000714202d3946525e686f7d87929fa5afb9c3c5bcb2a89f948e81746d62595f626363636363636363636975828f9ca8b5c2c1b4a79b8e81746863636363636363636363636363636363636363636363605d564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a869aa4afbbc8c4b7aa9e9184776b5e5144382b1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5765717e8b98a3aebac7b8ab9f95887b6e717c859197a1a8b2bac2b8b0a69e938f8989898989898989898989898a90959fabb8c4bbb3a9a2988e8175685b4e4949494745413a32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbaada094877a6d727e8b98a5b1b9b9b9b9b9babfbfbfbfbfbfc4c5c4bfbfbfb9b9b9b9b9b9b9b9b9b9b9b9b6a99c908376695d5043362a1d10030000000000000c1925323f4c5865727f8b999fa4abaaacb2b5b9bab9b8b4b1b7b9bdc4c5b9ac9f92867e78726d68626058545c60646a6f757c8187929facb9c0bbb3adaba5a6abacb2b8b9b7b3adaba99c8f8275685d5245392c20130700000000000000000a1623303d495663707c8996a3afb5b5b5b5b5b5b5b5b8b9bec5cdd6d5ccc3bdb8b7b5b5b5b5b5b5b5b5ab9e9184786b7784909daab7c3c4bab2adaba8a8a8a8a8a8a8a8a8a9abb1b9c2d0baaea194877b6e6154483b2e21150800000000000814212e3b4754616e7a859199a3aeb7c1c7bdb4aaa1969082786d605b51535556565656565656565b6875828e9ba8b5c1c1b5a89b8e8275685b56565656565656565656565656565656565656565654524c443a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7986939facb9c6c4b8ab9e9185786b5e5245382b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b4754606d7a86929facb8c5bcb1a7998c7f736a6f7c859196a0a8b2bac2b8afa59e9b969696969696969696969696969d9fa7b1bcc8c4bbb3aa9b8e8175685b4e423c3c3a39352f2820160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ada094877a6d727e8b98a5acacacacacacadb9babfc6cfccd1cbc2bcb7b6acacacacacacacacacacacacacaa9d9083776a5d5044372a1d1104000000000003101d2a3643505d6976838d9093999a9da0a8a9acaeb4b8b9bec4c5c9cec7baaea3999286807b756d685d524a54606b6f74787c7f84919eaab7c4c5bebab8b2b3b7b9b6b2acaaa9a19e9a9792867a6d6054473a2d21140700000000000000000a1623303d495663707c8996a3a8a8a8a8a8a8a8a8a8abadb3bbc5cfcec3bab2acaaa8a8a8a8a8a8a8a8a89e9184786b7784909daab7c3ccc4bdb9b7b5b5b5b5b5b5b5b5b5b6b8bcc2cbc7baaea194877b6e6154483b2e21150800000000020f1c2835424f5b6875828e949fa4acb3bcc0b5aba29891847a6d665c51494748494949494949494e5b6874818e9ba7b4c1c2b5a89c8f8275695c4f49494949494949494949494949494949494949494745413a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b657985929facb8c5c4b8ab9e9185786b5e5245382b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c3945525d6875828f9babb5bfc2b7aa9d9184776a6a6f7b849196a0a8b2bac1b7afaaa8a3a3a3a3a3a3a3a3a3a3a3a3a3a9abb1b9c2cdcdc1b4a89b8e8175685b4e4235302d2c29241e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a094877a6d727e8b989f9f9f9f9f9f9fa0acaeb4bcc6d1cdc2b8b0aba99f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9084776a5d5144372a1e11040000000000000a1723303d4a5663707d8083868a8d9196989c9fa3ababadb3b8b9bec4c6bfb4aba298928d87827a6d60544956636f7d8185888c9196a0acb9c5c5c4bfbab8b6afaca9a8a09e9a97928e8985807a6e6154473b2e21140800000000000000000a1623303d495663707c89969c9c9c9c9c9c9c9c9c9c9ea1a9b3bec9c8bdb2a8a09d9c9c9c9c9c9c9c9c9c9c9184786b7784909daab7babababababababababababababababababababababaaea194877b6e6154483b2e21150800000000000714212e3a4754616d7a828d939aa2aab1bbafa49992867c6f685e544b403a3b3d3d3d3d3d3d414e5a6774818d9aa7b4c0c2b6a99c8f8376695c50433d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3a3935302820160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f495f6c7885929fabb8c5c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5664717e8b99a3aebbc5b8aca095887c6f62696e7b849196a0a8b2bbc1bbb6b5b0b0b0b0b0b0b0b0b0b0b0b0b0b6b8bcbcbcbcbcbcb4a89b8e8175685b4e42352821201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b97979797979797979797979797979797979797979797979794877a6d727e8b9393939393939393939fa3aab4bfcbc7bcb0a69f9c9393939393939393939393939393939184776b5e5144382b1e11050000000000000916222f3c4854606b7073777a7d8084888b8f92999b9ea2a9abadb3b8b9bebdb4aaa29f9a908376685d524a5764717d8a9197999ea0a8b2bdbdb8b7b4aeacaca49f9d9996918d8985817d79746e685e5246392d20140700000000000000000a1623303d495663707c898f8f8f8f8f8f8f8f8f8f8f9297a1adb9c6c5b8aca096918f8f8f8f8f8f8f8f8f8f8f84786b7784909daaaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea194877b6e6154483b2e21150800000000000713202d3946525e686d7880889298a0a7aea49f93877d706a5f564c42392e2f303030303034404d5a6773808d9aa6b3b6b6b6a99d9083766a5d5043373030303030303030303030303030303030302d2c29241e160e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d45525e6b7885919eabb8c4c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4754606d7a86929facb9c5bdb1a8998c7f73665f696e7b849196a1a9b3bdc6c3c2bcbcbcbcbcb8b6afafafafafafafafafafafafafafafa89b8e8175685b4e4235281b13110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a877a6d727f868686868686868686879298a3aebac7c4b7ab9f94908686868686868686868686868686868685786b5e5245382b1f12050000000000000714202c38444f59606366686d7074777b7f82868a8e92979a9ea1a9abadb3b8bab4ab9e94897c6f63564c4653606d7884919ea9aaacb2b8b5b2acaaaaa29f9b9a93908c8884807c7974706d66615e564c41362a1e110500000000000000000915222f3c4855626f7c82828282828282828282828285929eabb8bbbbb7aa9d9184828282828282828282828281746a7784909da1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a194877b6e6154483b2e211508000000000005111d2935414c565e666c737e8690959ea59d928b7f726b61584e443a302722232323232633404d596673808c99a6aaaaaaaaaa9d9084776a5d5144372a232323232323232323232323232323232321201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061e2b3844515e6b7784919eaab7c4c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202c3945525d6876828f9cacb6c0c3b6aa9d908377695e5e696e7b849197a2abb5bfcbcec9cdc2b9b1aba9a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29b8e8175685b4e4235281b0f040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d786d6d727979797979797979797a86929facb9c3c2b6a99c9083797979797979797979797979797979797872685c5044372a1e110400000000000004101c27333d474f5456565d606467696e72767a7d8185898d92979a9ea1a9abaeafa3998f82756b60544444505c66727f8c98a3aeb4aeaca8a8a09d9a98928f8b87837f7c7774706d6663605c54524c443b3025190e0200000000000000000815212e3a47535f6a6f757575757575757575757576828f9ca9aeaeaeaea6998c7f7575757575757575757575746f6a77849094949494949494949494949494949494949494949494949494949494877b6e6154483b2e2115080000000000010d1925303a444c545b606c707b838e939f938d80746d62594f463c32291e15161616192633404c5966737f8c999d9d9d9d9d9d9d9184786b5e5145382b1e161616161616161616161616161616161413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909daab7c0c0b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5665727e8b9aa4afbbc3b8ab9f95877b6e61565e696f7c859299a3aebbc0cbd1c7bcb1a79f9d96969696969696969696969696969696968e8175685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e696e7070707070707070707070707070707070707070707070707070706d6662656c6c6c6c6c6c6c6c6875828e9ba9b3b7b5b3ac9f93867a6e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6860574b4034281b0f03000000000000000b16212b353d44484a4c525457575f6165676d7074797d8185898d91979b9fa2aa9f92877c6f62594f443f4a54616d7a86929faaaaa29f9c9896918d8985827e7a76736f6a6763605c5453504a46413b32291e140800000000000000000006121f2b37434e585f62696969696969696969696976828f9ca1a1a1a1a1a1998c7f736969696969696969696967646a77838787878787878787878787878787878787878787878787878787878787877b6e6154483b2e21150800000000000008131e28323a424a505a61696e79818c928f81786c605b51473e342a20170c0a0a0c1926333f4c5966727f8c90909090909090909085786b5f5245382c1f120a0a0a0a0a0a0a0a0a0a0a0a0a0a0a07070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b3b3b3b3ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303b4754616e7a87939facb9b6b4b1a7988b7e726555575f6a707d87929fa4aeb9c3c4c1b8ab9f95908989898989898989898989898989898989898175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e61646464646464646464646464646464646464646464646464646464605c5458606060606060605664707d8a97a2acaaa8a6a5a4998b7e7165606060606060606060606060605e5c574e453a2f23180c0000000000000000050f1a232b33383c3d4145474a4d5355555d6064666d7074797c8085898e92989b988e81746a5f53473d3846525e6874818e9b9d9a98928f8b8884807d7975716e6866625f585653504a46443f3836302920170d02000000000000000000030f1b26313c464e53555c5c5c5c5c5c5c5c5c5c6976828f94949494949494948c7f73665c5c5c5c5c5c5c5c5c5b54616e7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786d6053463a2d201307000000000000020c1620282f383f4450575f676d757f8682796d665b50493f352c22180e0500000b1825313e4b5864717e838383838383838383838276695d5043362a1d1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca6a6a6a6a6a69e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202d3946525e687783909daaacaaa7a9a29c8f8276675d5158606b717e8b929da7b1b9b7b5b2a99d90837d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b454d535457575757575757575757575757575757575757575757575757575753514b4b5353535353535353606d7985929f9f9d9b9a9896998f8275655b50535353535353535353535352504b453c33291e120700000000000000000008111a21272c2f2f35393a3d4246484b5153545c6063666c7074797d81858a8f92867b6e61584e433536414c56626f7c8893908d8985827f7b7774706d6665615e5655534e4946443f3a38342e2a251e170e0500000000000000000000000a15202a343c4347484f4f4f4f4f4f4f4f4f5c697682888888888888888888887f7366594f4f4f4f4f4f4f4f4e525e686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5044382b1f120600000000000000040e161d262d333e454d555d606d727c796d675c544a3f372d231a10060000000a1724303d4956616c71777777777777777777777670665a4e4235291c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f99999999999999999285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566673808c99a39f9d9a9797928f867a6d60544f59626c74818d95a0aaacaaa8a6a99f95897c6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695f53473a2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b4246484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4645403f46464646464645515c6775818e9892908f8d8b89888683786c605346464646464646464646464544403a332a21170c0100000000000000000000080f161c202224292c2d31373a3b4045474a5053545b6063666d7074797d82868073695e52463c31303a47535f6a76828683807d7975726e696763605c5454524c4847433d3a38342e2b28231c19140d05000000000000000000000000040e18222a31373a3c42424242424242424754616e7b7b7b7b7b7b7b7b7b7b7b7a6d60544742424242424242414c565e61616161616161616161616161616161616161616161616161616161616161605c544a3f34281c10030000000000000000040b141c2228333c434b515b626a6f6d675d554b42382d251b1108000000000815212d3945505a61646a6a6a6a6a6a6a6a6a6a69665e54493e32261a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875828d8d8d8d8d8d8d8d8d8d85786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303c4956626f7c89979992908d8b888582807a6e615447505a606d79839098a29f9e9b999697928f83796c636363636363636363636363636363625f574d42372b1e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212931363a3b3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3a38342e393939393934404b5564717e8987858482807e7d7b79776c655b5044373939393939393939393837342f2921180f05000000000000000000000000050b101416191d2021262b2d2f35393a3f44464a5053545c6063676d71757a796d60574d42342a2b37434e58616e7b7a7773706d6765615f575653514b4746413c3b37322d2b28231f1c17110e0802000000000000000000000000000006101820262b2e2f363636363636363946525e686e6e6e6e6e6e6e6e6e6e6e6d685d5245393636363636303b444c525454545454545454545454545454545454545454545454545454545454545453504a42382e23170b00000000000000000000020a1117212a3139404551586062605d554b43392f261c1309000000000005111d28343e485056585d5d5d5d5d5d5d5d5d5d5d5a544c43382d21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e808080808080808080807f7366594c403326190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202d394653606c78858b898683817e7b7976736e685e524645515c676e7b86929a93918e8c8a878583807a6e61565656565656565656565656565655534d453c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e3131313131313131313131313131313131313131313131313131312d2c28232d2d2d2d232e3a4753606d797c7b7977757372706e6d66605b53493f33272d2d2d2d2d2d2d2d2b2a28231e170f060000000000000000000000000000000407080d1113141a1e2124292c2e34383a3f44464a5053555c6064686d6d675d51453b302226323c46535f696e6d686763605c5555534d4a4645403b3936302e2b26201f1c1712100b06000000000000000000000000000000000000060e151b1f21222929292929292a36414d565e6161616161616161616161605d564c4135292929292929323b41464748484848484848484848484848484848484848484848484848484848484846443f3830261c1106000000000000000000000000060f181f282f353f464e545654514b433a31271d140a010000000000000c17222d363e45494b50505050505050505050504e49433a31261c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4955616c7173737373737373737373736d63574b3e3225190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b66727f7f7c797774716e6c6566615e564c41404b555f69727f8b898684827f7d7b7876746e685e52494949494949494949494949494847423c332a1f15090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e2121242424242424242424242424242424242424242424242424242424201f1c1820202020202c3945515d676d6f6e6c656867656361605c54504941382d2217202020202020201f1e1b18120c0500000000000000000000000000000000000000010407090e1214181d2023282c2d3338393f44464b5153565d60605d554b4033291f202a36424d575f61615e565653514b4846423d3a38342e2d2a25211f1b1312100b0603000000000000000000000000000000000000000000040a0f1215151c1c1c1c1c1925303b444d52545555555555555555555554524c443a3024191c1c1720293036393b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a38342e261e140a0000000000000000000000000000060d161d2429343d4348494745413a31281f150b020000000000000006101b242d34393d3e4444444444444444444443423e3831281f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3945505a61646666666666666666666666635b51463b2f23160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54626d72726f6d67676462605b5354524c443b39434d57606c787e7c7a777573706e696967615e564c413c3c3c3c3c3c3c3c3c3c3c3c3b3a37312a21180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151717171717171717171717171717171717171717171717171717171313100c131313111d2935404b555d606361605b535a58565553514a443f382f261b111313131313131312110f0c07010000000000000000000000000000000000000000000000000205070d1113171c1f22282b2e34383a4045474c525453514b43392f20171a26313b454d535554524c494645403b3a36312d2c2823201e1915120f0a06030000000000000000000000000000000000000000000000000000030608090f0f0f0f08141f29323b414647484848484848484848484745413a32281e13080f0e171e252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2b28231c140c02000000000000000000000000000000040c1218222b32383b3c3a39352f281f160d0300000000000000000009121b22282d3031373737373737373737373635322d261f160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d28333e485055575a5a5a5a5a5a5a5a5a5a5957514940352a1e120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3842515b62656562605c5558555350494746413b32303c44505b666c716f6d67686663615e575a54524c443b3030303030303030303030302f2e2b261f180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a070604000006010d18242f3a434b515356545350494d4b4a4846444039332d261d140a000606060606060504030000000000000000000000000000000000000000000000000000000000000104060c1012171c1f23282b2f34383a4145474745403931281d0e141f29333b4246484746413d3a38342e2d2a26201f1c1814110e08060300000000000000000000000000000000000000000000000000000000000000000003030303020d1720293036393b3b3b3b3b3b3b3b3b3b3b3a3935302820160c0200050d14191e2021212121212121212121212121212121212121212121212121212121212121201f1c17110a0200000000000000000000000000000000000107101921272c2e2f2d2c29241d160d0400000000000000000000000910171d2124252a2a2a2a2a2a2a2a2a2a2a2926211c150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222c363e45494b4d4d4d4d4d4d4d4d4d4d4c4b4640372e23190d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3f49515658585653514b4b4846443f3b3936302928333f4a545b606463605d55595754524d4d4746413b3229232323232323232323232322211e1a150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a404547494746443f403f3d3b3a38342e27221b140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b0f12171c1f23292c2f35393a3a39352f281f160c0d18212931363a3b3a3936302d2c2823211e1a1313100c0705020000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e2e2e2e2e2e2e2e2e2e2e2d2c29241e160e0400000002080d1114141515151515151515151515151515151515151515151515151515151515151312100b06000000000000000000000000000000000000000000070f161b1f222321201d18130c0400000000000000000000000000060c111517181d1d1d1d1d1d1d1d1d1d1d1c1a16100a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a242c33393d3e40404040404040404040403e3b352e251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2d373f464a4c4c494745403e3b3937332d2d2a251e222d38424a5053585653514b4c4a484642413b393630292017161616161616161616161514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a3c3b3937332d32302e2d2c28231c17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b1012181c1f24292c2d2d2c29241d160d04060f181f262a2d2e2e2d2a25201f1c1814120e09060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212222222222222222222221201d19130c0400000000000001050708080808080808080808080808080808080808080808080808080808080808070603000000000000000000000000000000000000000000000000040a0f1315161413110d07010000000000000000000000000000000005080a0b11111111111111111111100f0d0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a22282d30313333333333333333333333322f2a231c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b1b252d343a3e3f3f3c3a38342f2f2d2b2722201e19141c262f383f44464b49474540403d3b3a36302e2d2a251e170e090909090909090909090808060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d302e2d2b2722252322201f1c18120b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c1013191d202120201d18120c040000060d141a1e212221201e191313100c070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414151515151515151515151413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000307090907060401000000000000000000000000000000000000000000000404040404040404040403030100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d212324272727272727272727272625231e19120a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b23292e3132322f2d2c292322201f1b1714110d0a141d262d3338393e3c3a39352f302e2d2a2521201e19140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d20202321201f1b171817151312100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080d1113141413100d07010000000003090e1214151413110d080604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708080808080808080808080707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111417181a1a1a1a1a1a1a1a1a1a191916120d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e2224252523201f1c181513120f0b060501020b141c22282b2d31302d2c29242421201e1a1414110e080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111314161413120f0b060a080706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070706040100000000000000000205070807070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b0d0d0d0d0d0d0d0d0d0d0d0c0a06020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d1215181919161413100c070605030000000000020a11171c1f20252320201d18171514120e0907050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070908060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0a0a0a0a0a0a0a0a090704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11131413110d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c0c09070604000000000000000000000000060b0f121318161413110d0708070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070e0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141717171717171717171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002030201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d2021201d18130e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070808080808080808070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306060b090706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002030303030303030303030300000000000000000000000000000000000000000000000000000000000000000000000102030000040607070707060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113141b1413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e202124242424242424242323201c160f0800020202020202020202020202020202020202020202020202020202000000000000000000000000000000000000000000000000000004090c0f0f0f0d0c0b090807060300000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d2c29241d1a140c070100000000000000000000000000000000000000000000000000000000000000000000000001040707090a0a0b0a0a090707050100000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001070d10131415151515151515151413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d0f0f1010101010101010101009080603000000000000000000000000000000000000000000000000000002060a0c0c0e0f10070c10131314141312100c060d0a07060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213120f0b06000000000000000000000000000000000000000000000000000000000000000104060707060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d20212821201d19130c0400000004060708090a0b0b0b0c0c0c0b0a0907060400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000050e171f252a2d2e3131313131313131302f2c27211a110e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d0c0a07020000000000000000000000000000000000000002091015191b1c1c1a191716151312100c060c0b0a09070606030000000000000000000000000000000000000000000000000000020b161f282f35393a39352f2a261f18120b0300000000000000000000000000000000000000000000000000000000000000000001080d111314151617171717161413110d0807040000000000020507080e0b0b0805010000000000000000000000000000000000000000000000000000040c12181d2020212121212121212121201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1015191b1c1d1d1d1d1d1d1d1d1d1d1615130f0a040000000000000000000000000000000000000000000000070d121618191b1c1d1e181c1f202020201f1c171c1a171413100d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f201f1c17110d0802000000000000000000000000000000000000000000000000000001070d1113141413110d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e24292c2d352e2d29251e160e04070c1013131516171718181818181817151312100c070400000000000000000000000000000000000000000000000106090c0c0e0d0c0a09080605030000000000000000000000020d17202930363a3b3d3d3d3d3d3d3d3d3d3c38332c231a1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a1917130e070000000000000000000000000000000000030c141b21252829282726242321201f1c171b191817151413120f0b060d0c0b0a09080706040000010000000000000000000000000a141d28313a41454745413a363129241d150d0903000000000000000000000000000000000000000000000000000000000000040c13191d20212223242424232221201d191613100b050003090e1214151b181715110c04060709090909090909090909090909090909090909090909090d161d24292c2d2e2e2e2e2e2e2e2e2e2d29241e160e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b212528292929292929292929292922221f1b150f070000000000000000000000000000000000000000010a12181e22252627292a2b23282c2d2d2d2d2c282329272420201d18120d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c22282b2d2b28221c19130b06000000000000000000000000000000000000000000000000060b13181d202121201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f35393a413a3935302820160d12181c1f20212323242525252525252422201f1c1813100c070000000000000000000000000000000000000000070d121618191b1a1817161413120f0b060c0b0908070604000009141f29323b4246474a4a4a4a4a4a4a4a4a48443d352c28282828282828282828282828282828282828282828282828282828282626231f19120a010000000000000000000000000000000c151e262c31343635343231302e2d2c2823272625232221201f1c171b1a19181716141312100c070e0d0c0b0a0908070604000006111b262f3a434b5154514b46423b352f271f1a150d0701000000000000000000000000000000000000000000000000000000080d161e24292c2d2f30303131302f2e2d292522201c160c0a0f141a1e2122272524211d171113141616161616161616161616161616161616161616161616161f282f35393a3b3b3b3b3b3b3b3b3a3935302820160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161e262c313536363636363636363636362f2e2b2720191007000000000000000000000000000000000000000a131c232a2f3233343536372e34383a3a3a3a38342e3633302d2c29241d18130c04000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d262d33383938332d29251e17110a020000000000000000000000000000000000000000020a11171d24292c2d2d2c29241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e172029313a4145474e4746413a32281f161d23282c2d2e2f3031313232323231302f2d2c28231f1c18120b0300000000000000000000000000000000010a11181e222526282725242221201f1b171a191716151312100c070e1925303b444d5254575757575757575756554f473d33353535353535353535353535353535353535353535353535353535353533322f2a241c130a0000000000000000000000000000060f1e2730373d414242403f3e3c3b3a38342e343331302f2e2d2b282228272625232221201f1c181c1b1a19181716151413100c070b17222d38414b555d605d55534d454039312b262018130c040000000000000000000000000000000000000000000000000008111a20282f35393a3c3d3d3e3d3d3c3a3935302f2c272117151b1f262a2d2e3431302d29221d202123232323232323232323232323232323232323232323232328313940454748484848484848484746413a32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2830373d4142434343434343434343433c3b37322b22190f040000000000000000000000000000000000050e1c252e353b3e3f4142434445404546474746443f4442403d3a39352f29241d160d0500000000000000000000000000000000000203020000000000000000000000000000000000000a141d262f383f4446443f38353028221c140b07010000000000000000000000000000000002090c141c23282f35393a3a39352f281f160c010000000000000000000000000000000406070a0806060300000000000000000000000000000000000000060f182029323a434c52545b54524c443a31281e272e34383a3b3c3d3e3e3e3f3f3f3e3d3c3a38342e2c28231d150c070000000000000000000000000000000a131c232a2e3132353332312f2e2d2b27222726242321201f1c181b191e2a36424d565e6164646464646464646360594f44414141414141414141414141414141414141414141414141414141414141403f3b352e261c1207000000000000000000000000030e1821303942494d4f4f4d4c4a494846443f42413f3e3d3c3a3938332d35333231302f2e2d2c28232928272524232221201f1d181d1c1b27333f49535d676d67615f57514b433e373129241d160d08000000000000000000000000000000000000000000000005101a232c323a41454748494a4a4a4a494746413d3c3833282320262b31363a3b413e3d39342d292c2d3030303030303030303030303030303030303030303030302f39434b5153545454545454545454524c443a3024190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26303a42494e4f505050505050505050504947433c342b20150a00000000000000000000000000000000020d17202e3740464b4c4e4f5051524b5153535353504a514f4d4a47454039352f281f170f050000000000000000000000000005090d0f100f0d0b08060603000000000000000000000006111b262f38424a5053504a46413a332d261d18120b030000000000000000000000000000060b141a1e262e343a4145474745413a31281e130800000000000000000000000001070c101314171513120f0b0609070604010000000000000000000000070f182129333b444c565d6068615e564c433a3027303940454648494a4a4b4b4b4b4b4b4a484644403a38342e271e1910070000000000000000000000000007111c252d353a3e3f41403f3d3c3b3937332d343231302e2d2c28232726252d3a46525e696e7070707070707070706b60554e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4b4740382e24190e02000000000000000000000009141f2a33424b545a5c5b5a5957565453504a4f4e4c4b4a484746443f4341403f3e3d3c3b3a38342e3534333231302f2e2d2c29242928272b3744505b656d7a756e69605d555047423c352f281f1a1208000000000000000000000000000000000000000000000b17212c353e444c52545556575757565554524c4a48443d342e2c31373b4246484e4b49453f3635393a3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c404b555d606161616161616161615d564c4135291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c37424c545a5c5c5c5c5c5c5c5c5c5c5c55544e463c32271b0f0300000000000000000000000000000008131e293240495157595a5c5d5e5e5f5c606060605c5f5e5c5a5753514b45403a312921170d0300000000000000000000020a1015191c1c1c1a171513120f0b060706030000000000020b17222d38414a545b605b54524c443f382f29241d150d070100000000000000000000020a11171f252a30383f444b515454524c433a2f24190d0200000000000000000000030b12181d1f202422201f1c1718161413110d070a0807050200000000071018212a333b454d565e686d746d685e554b43392f39434b515354565657585858585858575553514a46454039302b221911070000000000000000000000010d18232d373f464a4c4e4d4b4a494746443f42403f3e3c3b3a38342e343331303b4754616e7b7d7d7d7d7d7d7d7d7d70635b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5957524a40352a1f130700000000000000000000020e1a26313c45545d6569686765646361605c545c5a595856555453504a4f4e4d4c4b4a4947464440434241403f3e3d3c3b3a39352f36353435404b55606c7783827b736d67615a534e45403a312c241a1107000000000000000000000000000000000000000004101c28333e474f565d6062636364646362615e5656544f443f38383c43474d53555a585650483f4145474949494949494949494949494949494949494949494949494949515d676d6e6e6e6e6e6e6e6e6d685d5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925313d49545e6569696969696969696969696260584e43372b1f13060000000000000000000000000000010d1925303a44515b63666768696a6b6c666d6d6d6d666b6a696663605d55514b433b33291f150b010000000000000000040c141b2125282929262422201f1c17151312100c060706030a141d27333f49535b666c66615e56504a423c352f271f18120b030000000000000000060b141c222830363d424a50555d60605d564c4135291f1409000000000000000000030d151d24292c2d302e2d2b2822242321201d1819171514120e090b09071019222a333c454d575e686d7a817a6d675d554b4238404b555c60616263646465656565646362605c5453514b433d342b23190e040000000000000000000006121e2a353f495157595b5a585755545350494f4d4c4a494846444042413f3e3d3e4a5764717d8a8a8a8a8a8a8a8a84786b686868686868686868686868686868686868686868686868686868686868686866635c52473b2f23170a0000000000000000000005121e2b37424d57657075757372716f6e6d666a68676664636261605b545c5b5a595856555453514a504f4e4d4c4b4a4948474540444342414045515d67717e8b8f868079716c625f57514b433e362c23190f05000000000000000000000000000000000000000714202c38444f5961686d6f70707170706f6d6868636059504a4243484e53575f616764625a50434c5254565656565656565656565656565656565656565656565656565656606d797b7b7b7b7b7b7b7b7a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835414e5a657075767676767676767676766f6a6054473b2e221508000000000000000000000000000005111e2a36414c56636d7274757677787879797a7a797978777573706d67605d554d453b31271d120700000000000000000c161e262d3235363533312f2d2b282222201f1c1715131210111c262f3844505b656c78746d68605b544e4540393129241d150d060000000000020a11171d262d333b42464f545c60676d6d685d52453b30251a0e0300000000000000010b151f272f35393a3d3b3938332d312f2d2c2924252321201e1a1917151319222b343c464e575f696e7a838e83796d675c544a3f45515c676d6e6f7071717172727271706f6d6665605c554f473d352b20160c020000000000000000000916222e3a46515b6365686665646261605b535b5a5957565453514a4f4e4c4b49484a5764717d8a979797979797918478747474747474747474747474747474747474747474747474747474747474747474736e63574b3f3226190c000000000000000000000714212d3a46535f69758282807f7d7c7b79787775747271706f6d6c666a6968666564636261605c545d5c5b5a585756555453514b51504f4e4d4c56606d79849198928c847e766e6a605d5550483e352b21160b000000000000000000000000000000000000000a16232f3c4855616b707a7b7c7d7d7d7d7c7a7875706b605c544a4e54585f62696e74716c62564c565d6063636363636363636363636363636363636363636363636363636364717e87878787878787878074675a4d4134271a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2936424f5c697582838383838383838383827c6f6255493c2f22160900000000000000000000000000000713202d3946525e68727f818283848585868686868686858482807d7a736d675e574d43392f23180c00000000000000040e1e2830383e414342403e3b3938332d2f2d2c282322201f1c17222d38424d57606c7782817a726c665f58514b433d352f271f17110a020000050b141c22282f383f444d525960666d727a7a6d60574d42362a1f14090000000000000007121d2731394045474a4846443f403e3c3a39352f32302e2d2a2526242220232b343d464e585f696e7b8390958f82796d665b50444653606d797b7c7d7d7e7e7e7e7e7e7d7b7976716d6760594f473d32281e13080000000000000000000c1825313e4a57636d72747372706f6e6c6569686765646361605c545c5a59585655535764717d8a97a3a3a3a39f928681818181818181818181818181818181818181818181818181818181818181818181807366594d4033261a0d000000000000000000000815222e3b4855616e7b888e8d8c8a898786858382817f7e7d7b7a7978777674737271706f6e6d666a696867666564636261605d555d5c5b5a5a595d68727f8c96a19f96918a827b736d67615a50473d33271c10040000000000000000000000000000000000000a1724303d4a5763707d8788898a8a8a89888785817d756d665c545860626a6f757b817e716458525d686d6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f717e8a9494949494948d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79868f8f8f8f8f8f8f8f8f897d7063564a3d3023170a00000000000000000000000000000714212e3a4754616d7a878d8f9091919293999393999392918f8d8a8580796e695e554b4034291c11060000000000020c1620303a42494e4f4f4d4a4846443f3e3c3a38342e2f2d2c282328333f4a545f69727f8b8e857f786f6a605d554f4540393127221b140b05060f171d262d333c424a50575e616b70787e858073695e52463c31261a0e040000000000000c18242f39434b5153575553504a4d4b49474541413f3d3b3a363033312f2d2c353d464f585f6a6e7b8491959f948f81786c605a504d576975828789898a8b8b8b8b8b8b8a8886837e796f6b60594f443a3025190d0100000000000000000c1926323f4c5965727f81807e7d7c7a797876757372716f6e6d666a686766646362605d64717d8a97a4b0b0aea298928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776a5d5144372a1e11000000000000000000000b1825313e4b5864717e8b979a989796999391908f8d8c8b8988878685838281807f7e7d7c7a797877767574737271706f6e6d676b6a6968676665646d7a85929fa9a8a19e948f878079716c61594f44382c2013070000000000000000000000000000000000000d1a2633404d596673808c9596969797969597918e8981786d6060636a6f757c81878d83776a6054606d7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c808c99a1a1a1a19a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929c9c9c9c9c9c9c96897d7063564a3d3023170a00000000000000000000000000000a1724303d4a5763707d8a969b9c9d9e9f9fa4a0a0a49f9e9d9c9998928d847b6e675c5145382d22170b000000000008131e2832424c545a5c5c59575553504a4b4846443f3e3c3a38342e303844505b666e7b869297928b837c736d676059514b433d332d261d170e111721292f383f444e545b60696e757d838b92867b6e61574d42372b20150a000000000004101d2935404b555d606361605b545a575654514b4e4c4a48464242403e3c3a383d474f59606a6f7c849196a0a69e938d80736c6259525e697885919596979798989898979698928f8b847d706b60564c4135291d120700000000000000020f1b2835424e5b6875818e8d8b8a888786848382807f7d7c7b79787775747271706e6d6764717d8a97a4b0bfb4aaa29f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9084776a5d5144372a1e1100000000000000000005111e2a36414d566874818e9ba6a5a4aba49f9e9d9b9a99979695999291908f8e8d8c8b898887868584838281807f7e7d7c7b7a79787776757473727173808d97a2adb2aca69f99928d847e716b6054483b2f221609000000000000000000000000000000000005121e2a36424d576975828f9ca3a3a4a3a3a9a19e9b938c8073686b70767c82878e9295897c6f625663707d89898989898989898989898989898989898989898989898989898989898c929ca8aeaea79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929fa9a9a9a9a9a396897d7063564a3d3023170a00000000000000000000000000000d1a2633404d596673808c99a6a9aaababacafb5b5afacabaaa8aaa29f969083796d60544a3f33281c0f03000000010d1924303a44545e666968666462605b54585553504a4b4846443f3e3b424e58606c78829098a29e9590878079706b605d554e443f382f2920191c2328333b424a50585f666c727b81899095988e8174695f53463c32261b0f040000000006131f2c3945515d676d706e6c6668666462605d555a585654524d4e4c4a484645444f59606b6f7c859196a0a8afa59c928b7e716b6056616e7b8797a1a3a4a4a4a5a5a5a4aaa39f9c9691877d70685e5246392f24180c00000000000000020f1b2835424e5b6875818e99989795999291908e8d8c8a898786858382817f7e7c7b797666717d8a97a4b0bdbcb4aeaca7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79d9084776a5d5144372a1e110000000000000000000714202d3946525e687784919eaab2b0b5afacabaaa8a7a5a4a3aba39f9e9d9c9b999897969594979291908f8e8d8b8a89888786858484838281807f7e7e87929fa9b3bdb9b0aba39f9691897c706356493d3023160a00000000000000000000000000000000000714212d3a46535e697885929eabb0b0b0b0b2adaba59f92867a71777d82898f939a9f9a8e8174685d63707c8996969696969696969696969696969696969696969696969696969696999ca4aeb9b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb6b6b6b0a396897d7063564a3d3023170a0000000000000000000000000005121e2a36424d576975828f9ca8b5b7b8b8b9bbc0c0bbb9b8b7b5b4aea8a0958c7f72665b5044382b1f120600000004111d2935414c566670767573716e6c66676462605c54585553504a4b484a545f6a727f8c949faaa79f99928d847d746d6760585049413a322b22262e343e454d545b606a6f787f868e939da09f92877b6e61584e43372b21160a000000000714202d3a4753606d797d7b79777573716f6d6769676563615e575b59575553514b54606b707d859297a1a9b2b7aea49f92877d6f685e63707d8a96a9b3b0b1b1b1b1b1b1b4aeaca8a19992857a6d61554b4035291d1004000000000000020f1b2835424e5b6875818e9ba5a3aba39f9e9c9b9a989796999391908f8d8c8b898886786d717d8a97a4b0bdbdb5afacaaaaaaaaaaaaaaaaaaaaabadb2b4b4b4b4b4b2adabaaaaaaaaaaaaaaaaaaaaaa9d9084776a5d5144372a1e110000000000000000000814212e3b4754616e7a8796a0acb9bdc0bbb9b8b6b5b4b2b1b0b5afacabaaa9a7a6a5a4a3a2a9a29f9d9c9b9a999897969594989291908f8e8d8d8c8b8b9299a3afbbc5c2bdb5aea3988f82766b6054483b2f22160900000000000000000000000000000000000815212e3b4854616e7b8797a1adb9bdbdbcbeb9b8aea2988a7e7d83898f949c9fa4ac9f92867a6d6063707c8996a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a6a8aeb6bfb3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c2bcb0a396897d7063564a3d3023170a000000000000000000000000000714202d3a46525e697885919eabb8c4c4c5c6c7ccccc7c6c5c4c2bfbab1a79e9184786c605346392d2013060000000713202c3945525d68768282807d7b797674716f6d66676562605c545755535c666e7c86929fa6b0b1aba39f96918880796f6a605b534c443d342730383f4450575e666c727c838b92989ea5aca3998e81756a5f53473d32271b0f050000000916222f3c4955626f7c8888868482807e7c7a78767472706e696a68666462605c545a63707d869297a1a9b2bbc0baaea39991857a6d6566737f8c99a6b2bdbebebebebebebfbab8b2aba1978d8073675d5145382c1f1306000000000000020f1b2835424e5b6875818e9ba8b0b4aeacaba9a8a6a5a4aba49f9e9d9b9a9997969386796d717d8a97a4b0c0b5aba39f9d9d9d9d9d9d9d9d9d9d9ea1a9b2bdc1bdb2a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9084776a5d5144372a1e110000000000000000000b1724313e4a5764717d8a97a8b2bdc8ccc7c6c4c3c2c0bfbebcc0bbb9b8b6b5b4b3b2b1b0afb3adabaaa9a8a7a6a5a4a3a2aaa29f9e9d9c9b9a999897979fa3abb5c0cdc9bdb2a89f92867b6e61594f44382c20130700000000000000000000000000000000000a1724313d4a5764707d8a97a9b3babfc5c6c9c6bfb4aa9a8e818590959c9fa6acafaea2988b7e716463707c8996a3afafafafafafafafafafafafafafafafafafafafafafafafafafb3b4b9bfc0b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a000000000000000000000000000815212e3b4854616e7b8797a1adb9bdbcbcbcbcbdc0c5c7cbd1d0cac3b9ada196897c6f6356493c302316090000000714212d3a4754606d7a878f8c8a888583807e7c797674716f6d6667646260606d78839098a3aeb8bdb5afa8a09a938d847c726c655e564e463f333a424a505a61696e787f8690959fa2aaafb5ab9f93877c6f62594f43382c21160b0000000b1724313e4a5764717d8a9892908e8d8a89878583817f7d7b79777573716f6d66696764707d869299a3abb5bfcbbfb4aba1978f82776c6875828f9ba8b5bbbabbbdc2c4c7cbc7c4bdb3a99f9285796d6053473a2d201407000000000000020f1b2835424e5b6875818e9ba8b4bfbab9b7b6b5b3b2b0b5afacabaaa8a7a5a4a09386796d717d8a97a4b0bbafa39992919191919191919191919196a1adb9c5b9ada196919191919191919191919191919084776a5d5144372a1e11000000000000000004111d2935414c566774808d9aa7b3c0ced7d4d2d1d0cecdcccad1cbc7c5c4c3c2c1c0bfbebcbbbebab8b7b6b5b4b3b2b1b0afb4aeacabaaa9a8a7a6a5a4a4acafb5bdc7cec5b9aca0968c8073695f53473d33271c100400000000000000000000000000000000000d1a2733404d5a6673808d99a6acaeb4b6bac1c9c2b5a89c8f827f8b96a1abb0b9bbb4aa9c8f82756863707c8996a3afbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbfc1c4cac0b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a000000000000000000000000000a1724313d4a5764707d8a97a9b3b1b0b0afafafb0b3b9bbc0c7cfd5c9bdb2a8988c7f7265594c3f3226190c0000000a1723303d4a5663707d899a99979892908d8b888683817e7c797674716e6c6a737f8c959faab4bfc7c0bbb2aca49f9691877f776d68605850443f444c545c606c707b828c92989fa7aeb4bcbbafa49a8f82756b6054483d33271c100400000c1926333f4c5966727f8c999f9d9b99979596918f8d8b89878583817f7d7b79777573716f707d879299a3aebbc7c6bdb2a99e948c7f726a7884919eabaeaeadaeb0b6b7bbc2cacfc5baada2978a7d7064574a3d2e23180c000000000000020f1b2835424e5b6875818e9ba8b4b9b7b2b3b7b8bdbfbdc0bbb9b8b6b5b4b2aca09386796d717d8a97a4b0b9ac9f92878484848484848484848484919eabb8c4b8ab9e9184848484848484848484848484848275695c4f4236291c0f00000000000000000713202c3945525d687784909daab7c3d0dbe0dfdedddbdad8d3ccc6c3c1bebfc1c2c3c5c6cad0cac6c5c4c3c2c1c0bebdbcbbbfbab8b7b7b6b5b4b3b2b1b1b9bbc0c7cfc5bcafa59e9184796d60574d42352b21160b000000000000000000000000000000000005121e2a36424d576976828f9c9f9fa2aaaaafb7c1c3b6a99d90837984919ea9b3bec5b9ac9f92867a6d63707c8996a3afbccac2bbb7b6b6b6b6b6b7b9bdc4cccec5bfbab8b6b6b6b6b6b7b8bdc3c0b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a000000000000000000000000000d1a2733404d5a6673808d99a6a5a4a3a3a3a2a2a3a7acafb5bdc7d1cfc1b4a79b8e8174685b4e4135281b0e0000000d192633404c5966737f8c99acaaa29f9c9a979892908d8b888683807e7b79767c87929fa7b1bcc6cbcbc4beb6afa8a099928c827a6f6a625a50494e565e666d747e8590949fa3aab1babfc5c0b6ac9e94897c6f63594f44382c20140700010e1b2834414e5b6774818e9aa7aaa8a6a4a9a19e9c9a98969892908e8c8a88868482807e7c7a787d86929facb9c5cfc4bbb0a69f92877c6f7a8796a1a2a2a1a1a1a4a9abb0b8c1c9cabeb3a99a8d817467544b4034281c10040000000000020f1b2835424e5b6875818e9ba8b2adaba5a6aaacb1bac3c1bbb7b5b2b5b6baaca09386796d717d8a97a4b0b8ab9e9184787777777777777777777e8a97a4b1bdb0a4978a7e77777777777777777777777777756f655a4d4134281b0f00000000000000000714212d3a4754606d7a86939facb9c4cacfd7dfe6e9e8ddd3c9c1bab6b5b1b3b4b5b7b8babebcbebfc0c2c3c4c6c7ccd2c9d0cac7c5c4c3c2c1c0c0bfbebec5c7cbd1cabfb4aa9e938a7d70675c51453c3123190f0500000000000000000000000000000000000714212d3a46535f69788592999292989b9ea5afbac4b7aa9d9184777f8b97a1adb9c7bbaea3998b7e7164707c8996a3afbcc2b8b0aba9a9a9a9a9aaacb2bac4c5bcb4aeaca9a9a9a9a9aaacb1bac0b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a00000000000000000000000005121e2a36424d576976828f9b9998979796969595979a9fa3abb5c0cbcfc2b6a99c8f8276695c504336291d10000005121e2a36424d576975828f9ca8b4aeaca9a7aaa39f9d9a989892908d8a888582849199a3acafb5bbc0c7cfc7c0bbb2aba39f948f847c716c605b53585f686d78808a92979fa6aeb4bcc2caccc6beb0a69c8f82766b6055483c2f2316090004101c2934404b55697683909ca9b6b5b3b1b2adaba9a7a5aaa29f9d9b99979992918f8d8b8987858284919daab7c4d0cdc1bbaea3999083777d8996969595949495979c9fa6afb7c1cfc3b7aa9d908377665c5145382c1f13060000000000020f1b2835424e5b6875818e9ba8a8a19e999a9da0a8b1bdb8b0aaa8a5a8aaafaca09386796d717d8a97a4b0b8ab9e9185786b6a6a6a6a6a6a6a717e8a97a4b1bdb0a4978a7d716a6a6a6a6a6a6a6a6a6a6a6a69655d54493d3125190c00000000000000000a1724303d4a5763707d8a99a4acb2b9bec5cdd4dce8e3d7ccc1b7afaaa8a4a6a7a9aaabadb3afb1b2b4b5b6b8b9bbc0bdbec0c1c3c4c5c7cbd1cdcccbcacad2d3d7d0c7baaea2988e81756b61554b40332a1f11070000000000000000000000000000000000000815222e3b4855616e7b8888868685878e939eaab6c4b7aa9e9184777985929eabb5c0bfb5ab9c8f827567707c8996a3afbcbdb0a69f9c9c9c9c9c9ea0a8b2bdbfb4aaa29f9c9c9c9c9c9da0a8b1bdb3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000714202d3a46525e6978858f8e8c8b8a8a898989898a8d9299a3afbbc4cec4b7aa9d9184776a5e5144372b1e1100000714212d3a46535e697885919eabb8bab8b6b3b4aeaca9a7aaa39f9d9a9797928f9196a0a49fa4abafb5bdc2c9ccc3bdb5afa69f9691867e736c655c606a6e7a828d929fa2a9b0babfc6cfc7c0bbb4aeaa9f94897d7063564a3d3023170a0006131f2c3845515c677884919eabb8c1c0bdbdb9b8b6b4b2b4aeacaaa8a6aba39f9e9c9a979597918f9196a0acb8c6c8cccbbfb5ab9f948b7e7f8c8b8a89888887888a8f949ea5afbdc7c5b9ac9f9286796d6053463a2d2013070000000000020f1b2835424e5b6875818e9ba8a196918c8d9195a0acb8b0a69e9c989b9ea5afa09386796d717d8a97a4b0b8ab9e9184787575757575757575757e8a97a4b1bdb0a4978a7e75757575757575757575756d675d5a544b42372c21150900000000000000000d1a2733404d5a6673808d999ea0a8adb3bbc2cad7dde3d2c6baafa59e9b98999a9c9d9fa2a9a3a4a5a7a8aaabacafb5b0b2b3b4b6b7b9babfc6cbd1d8d7d7dfddd2c7bdb1a79f92867b6e61594f43392f21180e000000000000000000000000000000000000000814212e3b4754616e7b7d7b7a79797a818e9babb4bfb7ab9e918478737f8c99a3afbbc5b8ac9f9286796d707c8996a3afc0b5ab9f948f8f8f8f8f9196a0acb9baaea298928f8f8f8f8f9195a0acb8b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000815212e3b4854616e7b838281807e7e7d7d7c7c7c7d8087929fa8b2bdc9c4b7ab9e9184786b5e5145382b1e1200000815212e3b4854616e7b8797a1adb9c5c5c3c0bfbab9b6b4b4aeaca9a7a9a29f9c9ea0a49993999fa3abb0b9bdc4cbc7c0bbb0a8a198928b80776d676b707c848f949da4adb3bbc2cbcac2beb6afaaa39f98928d8376695d5043362a1d10000714202d3a4753606d7a86939facb9c6cfcfc9c5c4c2c0bebfbab8b6b4b2b5afacaaa8a6a4a9a19e9c9da0a8b2bbb9bbc0c7c6bdb0a69e928580807f7d7c7b7b7a7b7e828e939eabb5c0c7bbafa399887b6e6255483b2f2215080000000000020f1b2835424e5b6875818e9ba89e91847f8083919daab7aa9e948f8b8e939eaaa09386796d717d8a97a4b0b8ac9f92868282828282828282828283909daab6c3b6a99d90838282828282828282828281796d605347423930261b100400000000000000010e1b2734414e5a677480878c91969ea2a9b0b8c0ccd2d9cfc3b6aa9e938e8b8c8e8f909297959697999a9b9d9e9fa4aba4a5a6a8a9aaacaeb4babfc6cfd8e2e3d7ccc0b5aba0958b7f72695e52473e31271d0f06000000000000000000000000000000000000000714202d3946525e686e706e6d67686e7b8899a3aebab7ab9e9184786e7b86929facb9c5baaea398897d70707c8996a3afbbafa3998f828383838384919eaab7b8ac9f9286828383838383919daab7b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000714202d3a46525e696e7776747372717070706f6f70747e8a96a1acb9c5c5b8ab9e9285786b5f5245382c1f1200000b1724313e4a5764717d8a97a9b3b6b8babebec1c3c5c3c0bfbab8b6b3b3adaba9aaac9f93878e92999fa6acb2bbc0c7cbc2bab2aaa39f928d81796d707d8591969fa6aebabec5cdc5beb9b0aca49f98928d86807a6d6154473a2e211407000915222f3c4855626f7b889aa4afb9bec4cdd5d2d1cbc7c5c5c6c5c3c1bfc0bbb9b7b5b3b1b2adaba9aaacb2b6afacafb6bec3c2b9ada2978c7f7472706f6f6e6e6e7177818e99a3afbbc7c0b5ab978a7d7064574a3d3124170a0000000000020f1b2835424e5b6875818e9ba89d90837774818d9aa7b4a89c8f827f818e9ba8a09386796d717d8a97a4b0baaea398928f8f8f8f8f8f8f8f8f8f90959fabb8c4b8ab9f95908f8f8f8f8f8f8f8f8f8f877a6d6054473a2d211e14090000000000000000010d1a2733404c58646e747a7f848b92979fa6aebbc0c7d0cec1b5a89b8e817e80818284858688898b8c8d8f909193999597989a9b9c9e9fa3aaaeb4bdc6d1dcdcd4c7bbafa4999083786d60574d42352c1f150b000000000000000000000000000000000000000005111e2a36414d565e616361605c606c7986929facb9b7ab9e9184786875828f9ba9b3bebfb4aa998d8073707c8996a3afb9ac9f928679767676767f8b98a5b2b6aa9d908377767676767e8a97a4b1b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a00000000000000000000000005121e2a36424d575e616a69686665646463636262646c7884919eabb7c4c5b8ab9f9285786c5f5245392c1f1200010d1a2734404d5a6773808d9aaca7a9abadb3b2b4b6b8babfc0c2c5c3c0bebab8b5b0a3968a7d81878f949ea0a8afb5bdc3cbc4bcb4aea49c938e827a7d869297a1a8b0b8c0cac9c1bbb3ada69f9a938e86807a736d685e5246392d201307000a1724313d4a5764707d8a97acabadb2bbc4cfcfc6bfbbb9b9bbbfbebfc1c3c4c5c4c2c0bebeb9b8b6b7b8b6aca49fa4acb1b9c3beb3a99f92857a6d636262616162656e7b87929facb9c5beb2a5988b7f7265584c3f3225190c0000000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0bfb4aaa39f9b9b9b9b9b9b9b9b9b9b9d9fa7b1bcc8bcb1a79f9d9b9b9b9b9b9b9b9b9b93877a6d6054473a2d211407020000000000000000000b1824303c48535c64686e72787e858f949da4afb5bdc7cfc6b9ac9f93887f73747677787a7b7c7e7f818283858687898a8b8d8e909192989fa3abb4bfcbd7d5c9bdb2a89f93877c6f665c50453b30231a0d030000000000000000000000000000000000000000020e1925303b444d5254565553515b657885929fabb8b7ab9e9184786b707d8a97a2adbac3b6a99d908376707c8996a3afb9ac9f9286796c6969727f8b98a5b2b6aa9d9083776a6969717e8a97a4b1b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a000000000000000000000000020e1a25303b454d52545d5c5b59585757565656565b6575828f9ba8b5c2c5b8ab9f9285786c5f5245392c1f120003101d293643505c6976838f9a989a9c9fa2a9a5a7aaacaeb4b3b5b8b9bec0c2c5c0b5ab94887b747c828991969fa3abb1b9c0cac6bfbaaea59e948f84879298a2a9b2bac2cac5beb9afa9a19e949087817b736d68615e564c41362a1d1105000c1926323f4c5965727f8c97989ea1a9b2bec9c6bdb5aeacacaeb5b1b3b4b6b8b9bbc0c7d0c9c6c4c2c4bbafa49a939a9fa7b1bcc5baada2978c7f72655b555554535e697683909ca9b6c3c0b3a6998d8073665a4d4033271a0d0000000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0bdbcb4aeaca8a8a8a8a8a8a8a8a8a8aaabb1b9c3cdc2b9b1aba9a8a8a8a8a8a8a8a8a093877a6d6054473a2d2114070000000000000000000008141f2b36414a53565e61666d717b828d929fa4abb5bdc6c8bbafa49a938c7f736d6a676d6e70717274757778797b7c7d7f8081838486889299a3aebac7d3cec5b9ada1968d80746a60544a3f33291f11080000000000000000000000000000000000000000000008141f29323b4146474a4847495f6c7885929fabb8b7ab9e9184786b6d7985929fabb8c5b9ac9f93867a707c8996a3afb9ac9f9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a97a4b1b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000009141f29333b424648514f4e4d4b4b4a4a494949536774818d9aa7b4c0c5b8ab9f9285786c5f5245392c1f120004111d2a3744505d6a778387898b8e90929796989b9d9fa3aaa6a9abadb3b3b5b8baafa499877a6d6f767d848d9299a0a7aebabec5cbc0b7afa69f95919299a3aab3bcc4ccc2bbb3ada59e97928b837c746e69615e56524c443a3025190d01000e1b2734414e5a677480888a8c9197a1adb9c6bfb5aba39f9fa3aba4a6a8a9abacafb6bebfc8d2d1cfc6b9ac9f938790959fabb8c1beb3a99e9184786c605348474d576673808c99a6b3bfc1b4a79b8e8174685b4e4135281b0e0200000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0bfb4aaa39f9b9b9b9b9b9b9b9b9b9b9d9fa7b1bcc8bcb1a79f9d9b9b9b9b9b9b9b9b9b93877a6d6054473a2d21140700000000000000000000030f1a252f3841444c52545c60696e78808b9399a3abb5bdc6c0b6aca49f918c7f736d63606263646667686a666d6e6f717273757677797c86929facb9c5d0c5bcafa59e9184796d60584e42382e21170d0000000000000000000000000000000000000000000000020d1720293036393b3d3b45525f6c7885929fabb8b7ab9e9184786b6674818e9bacb6c0bbafa499897d707c8996a3afb9ac9f9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a97a4b1b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a00000000000000000000000000020d17212930363a3b444341403f3e3d3d3d414d5a6774808d9aa7b3c0c5b8ab9f9285786c5f5245392c1f120003101d2936424f5b6771777a7c7f81838587898b8e909298979a9c9ea1a9a6a9abadac9f9386796c626b7079808790959da4adb3bbc2c9c1b8b0a7a09d9fa3abb4bcc5c7c0bbb0a9a19e938e857e766f6a615e57524c46413a32291e130800000714212d3a4754606d7a7c7d7f85919eabb8c4bbaea3999292999697999b9c9e9fa4acadb5bfcad5cbc3b7aa9d908383909da6b0bbc5b9aca096897d7063544b404a5764707d8a97a3b0bdc2b5a89c8f8275695c4f4236291c070000000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0baaea398928f8f8f8f8f8f8f8f8f8f90959fabb8c4b8ab9f95908f8f8f8f8f8f8f8f8f8f877a6d6054473a2d211407000000000000000000000008131d262f323b41464a50565e666d747f879299a3abb5bdc6beb6afa39c918c7f726d625a5658595a5c545c60616264656768696b74818e99a3aebac7cabeb4aa9e938a7d70675d51463c30261c0f05000000000000000000000000000000000000000000000000050e171f252a2d2e303945525f6c7885929fabb8b7ab9e9184786b64717e8a9aa4afbbc0b5ab998c7f727c8996a3afb9ac9f9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a97a4b1b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000050f171f252a2d2e373635333231313034404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200010e1a27333f4a555f67676d6f727476787a7d7f818386888a8d8f929797999c9fa2a99e928578655b61676d737c838d929fa2a9b1b9c1cac2b9b1acaaacafb5bdc6c6beb6afa69f97928a817a716c625f58524d46413a36302920170c0200000613202c3945515d676d6f707783909daab6c3b9ac9f92878687898b8c8e9091939a9ca3adb8c4cec3b9b1a99d90837c89949eaab7c2bdb2a89b8e8175665c51454855626e7b8895a9b3bec3b6aa9d9083776a5d50442e23180c0000000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0b8ac9f92868282828282828282828283909daab6c3b6a99d90838282828282828282828281796d6053473a2d2014070000000000000000000000010b141d20293036383f444d545c606d727e879299a3abb5bdc7c0bbada39c918b7f726c615a504c4e4f4a5053545657585a5c666f7c87939fabb4bfcbc7baaea2988f82756c61554b41342b1e140a0000000000000000000000000000000000000000000000000000050d14191e20212c3945525f6c7885929fabb8b7ab9e9184786b616d7a87939facb9c1b5a89b8e82757c8996a3afb7ac9f9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a97a4b1b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a000000000000000000000000000000050d141a1e20212a2928262524242734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000a16222e39434d55555d6063656769686e70727477797b7e808285878a8d8f9297979a9184776b5e555d606a6f79808a92979fa7b0b8c0c8c3bcb8b7b9bbc0c7c4bcb4aca49f948f857e756d68625a544e46423b35302a251e170e0500000004111d2935414c555d60626a7783909daab6c2b6a99c8f82787b7c7e80818385878c919ca8b4c0c8bcb1a7a09c8f8376828f9ca6b0bcc4b8ab9f9285796d6053464753606d7a8697a1adb9c4b7ab9e9184786b544b4034281c100400000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0b8ab9e9184787575757575757575757e8a97a4b1bdb0a4978a7e75757575757575757575756d675d5145392c201306000000000000000000000000020b0e171e252a2e343b424a505b626c717e879299a3abb5bec7bfb5ada39f93887e716c61594f46423f444648494a4d57606d7883909aa4afbdc6c7bdb1a79f92867b6e615a50433a2f22190c0200000000000000000000000000000000000000000000000000000002080e12181d2c3945525f6c7885929fabb8b7ab9e9184786b5e687784909daab7c3b7aa9e9184777c8996a3aaaaaa9f9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a97a4aaaaa79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000002090e1214151e1c1b1a18181a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000006111c27313b43434c51545c606a686563636568666d6e717376787b7d808285888b8e9083766a5d4b515860666d747d8590959ea6aeb6c0cbc8c5c4c5c7cbc4bbb3aaa29a938c827a706c615e565047433c363029251e19130c0500000000010d19242f3a434c51545d6a7783909daab6c2b6a99c8f83766e707173757678797f8c99a6b2bfc5b8aca095908f82757c88949fabb7c6baaea298897d7063564945515d677885919eabb8c4b8ab9f928578665c5145382c1f130600000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a093867979797d8a97a4b0b8ab9e9185786b69696969696969717e8a97a4b1bdb0a4978a7d7169696969696969696969605d554b4035291d11040000000000000000000000000000050d14191c232830383f44515a616c707e879299a3acb6c0ccbfbbafa49a92877e706b60584e443b383a3b3c46525e69727f8c95a0acb6c0cbc0b5ab9f958b7f72695e52483e31281d100700000000000000000000000000000000000000000000000000000000030d151d24292c3945525f6c7885929fabb8b7ab9e9184786b566774818e9aa7b4c1b9ac9f93867a7c89969e9e9e9e9e9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a979e9e9e9e9a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000205070811100e0d0c0d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000b151f2931313a44515c666d777572706d6868666462646769696e707376797b7e81848275695c4f454e545c606c707b838f939da4aeb9c3cdd1d0d2d3c9beb3a9a198928880786e68615a524c443f37322a251f19130d080200000000000008131e28313a4145505d6a7783909daab6c2b6a99c8f837669636466686967727e8b98a5b1bec3b7aa9d90838581757683909caab4bfbeb4aa9a8d807367554b414b556a7783909daab6c3baaea29886796d6053463a2d20130700000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386797e837e8b98a4b1b8ab9e9184787676767676767676767e8a97a4b1bdb0a4978a7e76767676767676767676766d675d5145392c2013060000000000000000000000000000060e151b1f2122262e343f48505a616c717e87929aa4afbbbfccc0b6aca39992867d6f6a5f564d433a303a43505a616e7b86929fa7b1bec7c7bbafa3999083786c60574d42362c1f160c00000000000000000000000000000000000000000000000000000000010b151f272f35383a45525f6c7885929fabb8b7ab9e9184786b5e65727e8b98a5b1bebbafa49a887c7c899191919191919186796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a9191919191918d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000004030200010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000040d171f202d3a4653606d7883817f7c7a777573706e69696663616466656c6e717477796d6053473c424b515961696e79818d929da7b1bcc8d4dddfd2c6b9ada19791867e736c665e565046413a322b26201a140d08020000000000000000010c161f282f3544505d6a7783909daab6c2b6a99c8f8376695c58595b5565727e8b98a5b1bebcafa296897d787a6d717e8a98a2aebac3b7aa9d908477675d51454f5c6975828f9ca8b5c2beb4aa94877a6e6154473b2e21140800000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a0938678828f86929facb8b9ac9f92878283838383838383838383919daab7c4b7aa9d91838383838383838383838382796d6053473a2d2014070000000000000000000000000006101820262b2e2f32312e363e48505a616c717e88939fa4aeb7c0c7beb5aba39892857c6e685e554b4238404b55616c75828f98a2aeb9c3c9bdb2a89f92877c6f665b50453b30241a0d040000000000000000000000000000000000000000000000000000000007121d27313940454748525f6c7885929fabb8b7ab9e9184786b5e626f7c8995a9b3bec0b6ac978a7e7c848484848484848484776a5e65727f8b98a5b2b6aa9d9083776a5d64707d84848484848484847f7366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000000050916232f3c4956626f7c898e8b89878482807d7b787573706d67676562626467676d675c5145383940454f575e676d78808d959fabb8c4d1ddded1c4b8ab9e91857c706c605b544d443e363028201b150e09020000000000000000000000040d161e243744505d6a7783909daab6c2b6a99c8f8376695c504d4e5865727e8b98a5b1bebcafa296897c6f6d686d7986929facb8c5b9ac9f93867a6d6054474e5b6774818e9aa7b4c1bbaea195887b6e6255483b2f22150800000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a093877a86929298a3aebabaaea399928f8f8f8f8f8f8f8f8f8f9195a0acb8c5b8aca095918f8f8f8f8f8f8f8f8f8f877a6d6054473a2d211407000000000000000000000000060f18222a32373b3c3f3d3a34363e47505a626c727f8b929ca5afb8c1c7bdb4aaa29791847a6e675d544a3f45515d67707d8a939eaab4bfcbc4b9aca0968d80736a5f544a3f33291f110800000000000000000000000000000000000000000000000000000000000c18242f39434b515354535f6c7885929fabb8b7ab9e9184786b5e606d7a8797a1adb9bfb2a6998c7f7377777777777777777771616165727f8b98a5b2b6aa9d9083776a61616c707777777777777777736d63574b3e3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000000000c1926323f4c5965727f8c98989696918f8c8a8785827f7d7a7774716f6d666764615e574d42362e343e454d555d666c7783909daab6c3d0ddd6cabdb0a3978a7d706a615a504a423b322a251e160e0a040000000000000000000000000000040c1d2a3744505d6a7783909daab6c2b6a99c8f8376695c5353535865727e8b98a5b1bebcafa296897c6f635d6775828e9ba8b5c1bbafa499897c706356494d5a6673808d99a6b3c0bcafa295897c6f6256493c2f23160900000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a4978b7e8b989fa3aab4bfbfb4aba39f9c9c9c9c9c9c9c9c9c9c9da0a7b1bcc8bcb1a7a09d9c9c9c9c9c9c9c9c9c93877a6d6054473a2d2114070000000000000000000000050f18212a343c4347494b4a463f33353e48505a626d73808d939da6b0b9c3c6bcb3a9a1969083796d665c50444e58606d7984919ea5afbcc6c4bbafa59e9184796d60584e42382d21170d000000000000000000000000000000000000000000000000000000000004101d2935404b555d60615e576c7885929fabb8b7ab9e9184786b5e5d687885919eabb8c1b4a79a8e81746b686d6d6d6d6d6d6d6d6d6d6d727f8b98a5b2b6aa9d9083776d6d6d6d6d6d6d6d6d6d6d6d6866635b51463b2f22160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000005121e2a36424d576875828e9ba5a8a09e9b999797918f8c898684817e7c797673716e695e53463a2d28333b45515d67707d8a959fabb8c4d1dddcd0c3b6a99d9083786c60554b41382f292019130c050000000000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f837669606060606065727e8b98a5b1bebcafa296897c6f635565717e8b98a9b2bdc0b5ab988c7f7265594c4c5965727f8c98a5b2bfbcb0a396897d7063564a3d3023170a00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a99c8f828f9caaaeb4bcc6c6bcb4aeaca8a8a8a8a8a8a8a8a8a8a9abb1b9c2cdc2b9b1aba9a8a8a8a8a8a8a8a8a093877a6d6054473a2d21140700000000000000000000050e17212a333c464e5355585651443f38363e48515b636e74818e949ea7b1bac4c5bbb2a8a0958f82786d605b5155606a74808d96a1adb8c1c9beb2a99d93897d70675d51463c2f261c0f05000000000000000000000000000000000000000000000000000000000006131f2c3845515d676d6e69646c7885929fabb8b7ab9e9184786b5e56697683909ca9b6c2b5a99c8f8276696d7a7a7a7a7a7a7a7a7a7a7a7a7f8c99a6b2b7aa9d90837a7a7a7a7a7a7a7a7a7a7a7a7a6d6154514940352a1e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000000714212d3a46535f697885919eabb2acaaa8a6a9a19e9c999993908e8b888583807d7b6e6154483b2e2a36424d57606d7984919ea7b1bcc8d4deddd1c4b8ab9f958b7e71675d51453a2f24190e0802000000000000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f83766d6d6d6d6d6d6d727e8b98a5b1bebcafa296897c6f6356616e7b8796a1adb9c1b4a89b8e8175685b4e4b5864717e8b97a4b1bebdb0a4978a7d7164574a3e3124170b00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4ac9f9286929facb9bfc6cabfb4aaa29f9b9b9b9b9b9b9b9b9b9b9d9fa7b1bcc7bcb1a79f9d9b9b9b9b9b9b9b9b9b93877a6d6054473a2d211407000000000000000000040e172029333c454e585f6265625b50494139363f49525c606d78828f95a0a8b2bcc5c4bab1a79e948d80746d62595c676f7c87939fa8b2bdc7c5b9ada1978e81746b60554b40342a1d140a0000000000000000000000000000000000000000000000000000000000000714202d3a4753606d797b76716d7885929fabb8b7ab9e9184786b5e5b6875828e9ba8b5c1b7aa9d9184776c798687878787878787878787878c919ca8b4b8aca0959087878787878787878787878785786c5f5245372e23190d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000000815222e3b4855616e7b8897a1adb9b9b7b5b3b3adaba8aba49f9d9a989892908d8a85786c5f5245392d3a46525e6973808d96a1acb9c3cdd2d1d2d4c8bcb1a79e92857a6d60564c4135291d120700000000000000000000000000000000000004111d2a3744505d6a7783909daab6c3b6a99c9082797a7a7a7a7a7a7a7a7f8b98a5b2bebcafa296897c6f63565e697885919eabb8c3b6aa9d9083776a564c4a5763707d8a96a3b0bdbeb1a4988b7e7165584b3e3225180b00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4afa3999299a3afbbc7d0c7baaea298928e8e8e8e8e8e8e8e8e8e90959fabb8c4b8ab9f95908e8e8e8e8e8e8e8e8e8e877a6d6054473a2d2114080000000000000000040d162029323b454d575f6a6f726d605b534a423a374044505c666d79839096a1aab4bdc7c3b9b0a69d928b7f726b61606d79849199a1a9afb6bebbafa59e91847a6d60594f43392f22180b020000000000000000000000000000000000000000000000000000000000000a1623303d495663707d87827e797885929fabb8b7ab9e9184786b5e5a6773808d9aa6b3c0b8ab9e9285786679859294949494949494949494999ca3adb8bcb1a7a09d94949494949494949494949285786c5f5245392c1c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000000b1824313e4b5764717e8a97a9b2bec5c4c2bfbeb9b8b5b5afacaaa7aaa29f9c9a9285786b5f52453837424d57616e7b86929fa8b2bdcbc9c5c4c5c9cdc2b9ada1978c7f73685d5245392e23180c00000000000000000000000000000000000004111d2a3744505d6a7783909daab6c3b7ab9f94908686868686868686868b919ba7b3c0bcafa296897c6f6356576875828f9ba8b5c2b8ac9f928579685e524956636f7c8996a2afbcbeb2a5988b7f7265584c3f3225190c00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4b5aba39fa3abb5c0cbd2c5b8ac9f92868182828282828282828283909da9b6c3b6a99d90838282828282828282828281796d6053473a3025190d01000000000000030c161f28323b444d575f696f7c7e736c655c544b433a343f4a545d676e7a849198a2abb5c0ccc1b8aea49f92877d706a606d7a818a91969fa4acb2b3a99e938a7d70685d52473d31271d1006000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c8f8a858186929facb8b7ab9e9184786b5e5965727f8c98a5b2bfb9ada29786796d7985929fa0a0a0a0a0a0a0a0a0a6a8adb5bfc3b9b1acaaa0a0a0a0a0a0a0a0a0a09f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000004111d2935414c566774818d9aa7b4c0cfd1cecfc9c6c4c2c0bbb9b7b4b4aeaca99e9285786b5f5245383a47535f6974818e98a3aebac4c4bdb9b7b9bdc4c9beb3a99f92857a6d60544b4034281c1004000000000000000000000000000000000004111d2a3744505d6a7783909daab6c3bcb0a69f9c939393939393939393989ba3adb8c3bcafa296897c6f6356596673808c99a6b3bfbaaea298877a6d61544955626f7c8895a2afbbbfb2a6998c7f7366594c403326190d00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4b0a69e9c9ea6b0b9c3ccc4b8ab9e9184787575757575757575757e8a97a4b1bdb0a4978a7e75757575757575757575756d675e564c41362a1d11050000000000030c151e28313a444c565e696e7b858b80776d665d554c443a38424b555e686f7c869299a4afbbc0cac0bbafa39992867c6e68686d757d848e939aa0a8ada1978e81756c61564c41352b1f150b0000000000000000000000000000000000000000000000000000000000000004111d2935414c566875818e9b98928e9298a2aebab7ab9e9184786b5e5864717e8b97a4b1bebeb3a994877a6e7985929facadadadadadadadadb2b4b8bfc7cbc3bcb8b7adadadadadadadadadab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000613202c3945525d687784909daab7c0c7cfd9d5cbc3bcb8b7b7b8bdc0bfbab8ab9e9185786b5e524536414c56626e7b87929faab4bfc4bab2adabadb2bac2c5baada2978c7f73665c5145382c1f150a000000000000000000000000000000000004111d2a3744505d6a7783909daab6c3c2b8b0aba9a0a0a0a0a0a0a0a0a0a5a7adb5bfc9bcafa296897c6f63565764717e8a97a4b1bdbfb4aa95897c6f62564955616e7b8894a1aebbc0b3a6998d8073665a4d4033271a0d00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4aa9e948f949ea7b1bac4c4b8ab9e9185787070707070707070717e8a97a4b1bdb0a4978a7d7170707070707070707070706d685e5246392d20130700000000020b151e273039434c565e686e7b8491928d81786d675d564c443a3a434d565f6a707d87939fa5afb8c2cbc0b5aba29891847a6d66606c707a818891969fa39e92857a6d615a50443a2f23190d03000000000000000000000000000000000000000000000000000000000000000713202c3945525d687784919ea29f9a9fa2aab4bfb7ab9e9184786b585764707d8a97a3b0bdbbaea295887b6f7985929facb8babababababababfc0c4cad1d5cdc8c4c3babababababababab8ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000714212d3a4754606d7a86939fa7afb5bdc7d1cec3b9b1acaaaaacb1b3b6b9b8ab9e9185786b5e52453946525e6874818e99a3afbcc6bdb2a8a19ea1a8b0b9c2beb3a99e9185796d6053463c31261a0f020000000000000000000000000000000004111d2a3744505d6a7783909daab6c3cac2bcb7b6adadadadadadadadadb2b3b8bfc7c9bcafa296897c6f635655626f7c8895aab4bfbdb0a4978a7d7164574a54616d7a8794a0b6c0c0b4a79a8d8174675a4e4134271b0e01000000020f1b2835424e5b6875818e9b9f9d90847774818d9aa7b3a6998d80737e8a97a1a19c8f828f959fa8b2bdc5b8ab9e92857d7d7d7d7d7d7d7d7d7d808c99a6b3bfb3a6998c807d7d7d7d7d7d7d7d7d7d7d7d7a6d6154473a2e211407000000000a141d263039434b555d686e7a8491969c938e82796d685d564c443b3b444e58616b727f8c939da6b0bac4c7bdb3aaa0968f82786d6061686d747d848d9299938a7e71685e52483e32281e110700000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8796a0acaba7acaeb4bcc4b7ab9e9184786a646063707c8996a3afbcbcafa396897c707985929facb8c4bdb9b7b6b6b6b7b8bdc3cccec5bebab8b6b6b6b6b9babfc5b8ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000a1723303d4a5663707d8990959fa3abb5c0cbc8bcb1a7a09d9da0a8a7aaacafab9e9184786b5e5145404b55616e7a86929fabb5c0c0b5aba19691969fa6b0bcc5b9ada1978a7e7164584e43372b1f12060000000000000000000000000000000004111d2a3744505d6a7783909daab6c3d0cdc7c4c3b9b9b9b9b9b9b9b9b9bec0c3c9d0c9bcafa296897c6f635654616d7a8798a2aebabeb2a5988b7f7265584c53606d7a869aa4afbbc1b4a79b8e8174685b4e4135281b0e02000000020f1b2835424e5b6875818e92929290847774818d9aa7b3a6998d80737e8a94949493877a839096a1abb5c0b9ada19792898989898989898989898c929ca8b4c1b4a89c928c8989898989898989898989897d7063574a3d3024170a00000006111b262f38424b555d676d7a839096a0a59e948f837a6d685e564c443b3c464f59626d74818e949fa8b2bcc6c5bcb2a89f948d80736c615d606b70798087908e81756c61564c41362c20160c0000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a8b2b8b4b8babfc6c5b8ab9f92857c76716d666f7c8895a2afbbbdb0a3978a7d707985929facb8bab2acaba9a9a9aaacb2bac3c5bcb4aeaba9a9a9a9acaeb4bdb8ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000713202d3a4653606d787e838b9299a3afbbc0c5b8aca095909195979a9d9fa3ab9e9184786b5e514545515c6773808d98a3aebdc7bbafa399918490949fabb7c2beb3a99d9083766a5f53473a2e21160a0000000000000000000000000000000004111d2a3744505d6a7783909daab6c3ccc4bdb9b7b2b2b2b2b2b2b2b2b2b5b6bac1c9c9bcafa296897c6f6356525d687985929facb8c0b3a6998d8073665a4d53606c7986939facb9c1b5a89b8e8275685b4f4235281c0f02000000010e1b2834414e5b6774808585858585827674818d9aa7b3a6998d80737e878787878786787a849199a3afbbbeb3a9a19e96969696969696969696999ca4aeb9c4b9aea49c9996969696969696969696968a7d7063574a3d3024170a0000000b17222d38414a545c676d79839095a0a8afa69f9590837a6d685e564c443a3e47515b606d78829096a1aab4bfcac4bab0a69d928a7e716a5f5960676d737c83847a6d615a50443a30241a0d040000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfc1c5c7cad0c6baada2979289837e79736e7b8895a1aebbbeb1a4978b7e717985929facb8b2a8a19e9c9c9c9da0a8b2bdbeb4aaa29f9c9c9c9c9fa3abb4b8ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000006131f2c3845515c666d71787f87929fa4aebac3b7aa9d908384878a8d909299999c9184776b5e51444653606d7985929eaab4bfbfb4ab9f92877c82909ca6b0bbc4b8ab9f95887b6e6255483d32271b0f0300000000000000000000000000000004111d2a3744505d6a7783909daab6c3c4bab2acaaa5a5a5a5a5a5a5a5a5a8aaafb7c1ccbcafa296897c6f63564c566a7784919daab7c1b4a79b8e8174685b4e505b657985929facb8c2b5a99c8f8276695c4f4336291c100300000004111d2935414c56646e747878787878767074818d9aa7b3a6998d8073797b7b7b7b7b7b766f7c87929fa6b0bcbbb3adaba3a3a3a3a3a3a3a3a3a3a6a8aeb6bfcabfb6aea8a6a3a3a3a3a3a3a3a3a3a3968a7d7063574a3d3024170a0000030f1b27333f49535c666d79828f959fa7b1b8b0a79f9590837a6e685e564c443a3f44515c666d7a849198a2aebac0cac2b8aea49f92867c6f685e555d606a6f797b6e685d52483e32281e110800000000000000000000000000000000000000000000000000000000000000000005111d2a36414c566875828f9ba8b5bec5c7cbd1d6cabeb3a9a29f95908b85807a7b8794a1aebabeb1a5988b7e727985929facb8aca196918f8f8f9196a0acb8baaea298928f8f8f8f9299a3aeb8ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000004101c2834404b545c60656c727e8b929da8b2bdb8ab9e91857a7a7d808386898d909184776b5e51424d5764717e8a97a1adbcc6baaea3998e81747c89949fabb7c3bcb1a7998c807366584e43382b1f130600000000000000000000000000000004111d2a3744505d6a7783909daab6c3bdb2a8a09e9898989898989898989b9ea5afbac6bcafa296897c6f6356505d697683909ca9b6c2b5a99c8f8276695c4f495f6b7885929eabb8c3b6a99c908376695d5043362a1d10030000000613202c3945525d686d6e6e6e6e6e6e6e6e74818d9aa7b3a6998d80736e6e6e6e6e6e6e696a727f8c949faab4bfbeb9b8b0b0b0b0adadadadadadb0b2b6bdc6cfc7beb7b3b1adadadadadadadadada3968a7d7063574a3d3024170a000005121f2b3744505b656d78818f949fa7b1b9c2b9b1a7a09590837a6e685e564c4339404a545e686f7c86929fa4aeb8c2cac0baaea29891847a6d665c515860666d6e695f564c41362c20160c000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687884919eabaeb3b9bbc0c7cfcfc5bbb3ada79f9d97918c827a8794a0adbabfb2a5998c7f727985929facb7ab9e918482838284919daab7b8ab9f92868283838287929facb8ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000000c18232e39424b51535b606c74808d96a0abb5b9ada1978f82757074777a7d80838684776a5e5146525e6976828f9ca9b3bec0b5ab9f92867b6e76828f9ca7b1bcc2b7aa9e9184776a6054473b2e22150900000000000000000000000000000004111d2a3744505d6a7783909daab6c3b9aca096918b8b8b8b8b8b8b8b8b8e939eaab6c3bcafa296897c6f63564f5c6875828f9ba8b5c2b6aa9d9083776a5d50525e6b7885919eabb8c3b6aa9d9083776a5d5044372a1d11040000000714212d3a4754606d7a7b7b7b7b7b7b7b7b7b818e9ba8b4a79a8e817b7b7b7b7b7b7b7b6e616c78828f98a2aebac3c6beb5aca7a4a0a0a0a0a0a0a3a5abb4bdcebeb5aca6a4a0a0a0a0a0a0a0a0a0a0968a7d7063574a3d3024170a00000613202d394653606c77818e939ea6b0b9c2cbc2b9b1a7a09590837a6d685d554b4339424c565f6a717e8a929da6b0bbc4cabfb4aaa1968f82786d60594f545c60625f574d443a30241a0e05000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a87969a9fa2aaacafb5bdc6cecdc5bebab1aba9a1998d807a8693a0b6c0bfb2a6998c7f737985929facb3a6998c807676767f8b98a5b2b6aa9d90837776767885919eabb8ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000007121d273039404549505a606d79849199a4afbbb3a99e948b7e726a676d7073767a7c6f6255494754616e7b87939facb9c5bbafa4998d817469707d8995a0acb8c5b9aca096897c6f6256493c30251a0e02000000000000000000000000000004111d2a3744505d6a7783909daab6c3b7aa9e91847f7f7f7f7f7f7f7f7f818e9ba8b5c1bcafa296897c6f63564e5b6774818e9aa7b4c1b7ab9e9184786b544a515e6b7784919eaab7c4b7aa9d9184776a5e5144372b1e06000000000b1825323e4b5865717e8888888888888888888e939eaab5a99d938e8888888888888885786c666e7b86929fa8b2bdc2b7aca39b98939393939393979aa2abb6bfbcaca29b9893939393939393939393938a7d7063574a3d3024170a00000b1824313e4b5764717e8a939aa2aab2bac3cbcbc3b9b1a7a09590837a6d675d554b423a444e58616c74808d949fa9b2bdc7c6bcb2a89f948d80736c61574d505355534d453c32281e120800000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c84898e92989c9fa3abb4bcc6d0cfcac2bcb8b3a4988b7e79869aa4afbbc0b3a6998d80737985929facb3a6998c807369727f8b98a5b2b6aa9d9083776a6b7885919eabb8ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000007121c27303940444648515d676f7c87939fa8b2bbb0a69f92867c6e66606366676d6f6a5f53474c5665727f8c99a4afbbc6b9ac9f93877b6e616b7783909daab4bebdb2a8998d807366574d42362a1e1205000000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f837672727272727272727e8b98a5b1bebcafa296897c6f63564d5a6773808d9aa6b3c0b8ab9f928578665c50515e6a7784919daab7c4b7ab9e9184786b5e51452d22170b000000000b1825323e4b5865717e8b95959595959595959b9ea5afbaafa59d9a9595959595959285786c5f69737f8c96a0acb8b7b1a79b908b8686868686868a909aa5b1b2b4aa9b908b8686868686868686868686867d7063574a3d3024170a00000a1724303d4955616c737f889298a1a8b1b9c2cbcbc3b9b1a8a0959082796d675c544a3f3c46505a606d78829096a1abb5c0cbc4bab0a69c928a7d70695e544a464847423c332a20160c0000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a6f787d81858a8f9299a2aab4bfcad6d5cdc8beb3a996897c7986939facb9c0b3a79a8d80747985929facb3a6998c807366727f8b98a5b2b6aa9d9083776a6b7885919eabb8ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000000c18232e39424a5153545355606a73808d96a0acb9baaea2989083786d6057555c60625f584e46525e687683909cabb5c0bdb2a89c8f8275695f65717e8b98a2aebac3b7aa9d908377695e52463a2d201407000000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f837669656565656565727e8b98a5b1bebcafa296897c6f63564c5966737f8c99a6b2bfbaaea29886796d6053515d6a7784909daab7c3b8ab9e9285786b5f493f33271b0f030000000b1825323e4b5865717e8b98a1a1a1a1a1a1a1a8aaafb7c0b7afa9a7a1a1a1a1a19f9285786c57606d7984919da7acaba79f988b7e797a7a7a7a797d8a97a3a4a5a6a2988b7e797a7a7a7a7a7a7a7a7a7a79786c605346392d20130600000815212d3945505a636d737e869196a0a7b1b9c2cacbc3bab1a79f958f82796d665c5044403e44505c666e7a849199a3afbbc1ccc2b8aea49f92857b6e665c51443e3a37312a21180e0400000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f656c7074797e82879298a2aebac6cfc9c6c4baada297877a7986929facb9c0b4a79a8d81747985929facb3a6998c807366727f8b98a5b2b6aa9d9083776a6b7885919eabb8ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000004101c2834404a545c6061605b58606d7984919ea5afbbb4aa9f958c7f72695f53515355534e464754616d7a86939facb9c6b9ada196897d706357606d7a85929fabb8c5b8aca095877b6e6154483b2e211509000000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f8376695c5858585865727e8b98a5b1bebcafa296897c6f63564c5865727f8b98a5b2bebeb4aa94877a6d6154505d6a7683909da9b6c3b8ac9f928579655b5044372b1f12050000000b1825323e4b5865717e8b98a4aeaeaeaeaeaeb5b6bac1c9c0bab5b4aeaeaeaeab9f9285786c5f5c66707d8a959fa19e9995908b83776d6d6d6d75828f95969798999b92867a6d6d6d6d6d6d6d6d6d6d6d6d6c665b5044382b1f1206000005111d28343e48515b636c717c8490959fa7b0b8c1c9ccc3b9b1a79f948f81786d605c52483f3f4a545e686f7d87929fa5afbac4cac0baada2979083786d605a50453b30261f180f0600000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e535b6063676d71757a86929facb8c5c4beb9b8b2ab9f9285787985929facb8c1b4a79a8e81747985929facb1a6998c807366727f8b98a5b2b6aa9d9083776a6b7885919eabb1ab9f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000006121f2c3844515c666d6e6c65686667707d89939da9b3bcb1a79f92867b6e655b50474947433f4a5465717e8b99a4afbbc4b8ab9e9184786c60535d6774818e9ba9b3bebcb1a7988b7e7165584b3e31261a0e020000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f8376695c5555555865727e8b98a5b1bebcafa296897c6f63564b5864717e8b97a4b1bebbaea194887b6e6155505d6a7683909da9b6c3b9ac9f9386796c605346392d2013060000000b1825323e4b5865717e8b98a4b1bbbbbbbbbbc1c2c6ccd2cbc5c2c1bbbbbbb8ab9f9285786c6368686c7683909d96918c88837f7a6d6868686e7b878788898a8c8d8e8e8174676868686868686868686864605b544a3f33281c0f030000000c17222c364049515a616a6f7b8390959fa6afb7c1c9cbc2b9b0a69e938e81746e635a50473e424c56606b727f8c939ea8b2bdc6cabeb3a99f958d80746c61574d42382e23170d0400000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c41495053555d6064687885929fabb8c4bbb2adaba5a99d9083767985929facb8c1b4a79b8e81747985929fa4a4a4998c807366727f8b98a5b2b6aa9d9083776a6b7885919ea4a4a49f9285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000713202d3a4653606d787b79777573706e74818e97a1adb9baaea3989082776c60564d413b3844505b6675828f9babb5c0bdb2a8998d8073665b505563707d8997a1adb9c1b4a89b8e817568574d42372b1e12060000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f837669626262626265727e8b98a5b1bebcafa296897c6f63564a5764717d8a97a4b0bdbbaea295887b6f6255505d697683909ca9b6c3bbafa49a867a6d6053473a2d2014070000000b1825323e4b5865717e8b98a4b1b3b3b3b3b3b6b8bcc3cbc2bcb7b6b3b3b3b3ab9f9285786b70757575757d89969184807b767575757575757571797a7c7d7e7f8081827c757575757575757575757575716c615549382d22170b0000000006101b242e37404850585f696e7a838f949ea5afb7c1c9cbc2b8b0a69d938c80736c62594f463c444f59626d75828f96a0abb4bfcbc5bbb1a79d928a7e70695e544a3f34281f160c0100000000000000000000000000000000000000000000000000000000000000000000000000030e18222a2f383f44464b5153566c7885929fabb8beb2a9a19e989e9b8e81757885929fabb8c1b4a89b8e817579859297979797978c807366727f8b98a5b2b6aa9d9083776a6b78859197979797979285786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000a1623303d495663707d878583817f7d7b787a85919eabb8bfb4aa9f948b7e72685e52463d394653606c7985929eabb8c5b9aca096887c6f62544a53606d7985929eabb8c4b8ab9e918478695f53473a2d2114080000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f83766f6f6f6f6f6f6f727e8b98a5b1bebcafa296897c6f63564a5763707d8a96a3b0bdbcafa296897c6f6356505c6976838f9ca9b6c2c0b6a094877a6d6154473a2e2114070000000b1825323e4b5865717e8b98a4a6a6a6a6a6a6aaabb1b9c2b8b0aba9a6a6a6a6a69f928578707d818282828186918481818182828282828282817e71717e818282828281818282828282828282828282817e7164574b3e31241806000000000009121c252e363e464e575e686d79828f939ea5afb7c1cacac1b8afa59c928b7e716b61584e453d47515b606d7a849199a3aebac1cdc2b9aea49f92857b6e665c50443d31281d120700000000000000000000000000000000000000000000000000000000000000000000000000000610181d262d3337394045525f6c7885929fabb8b9ada197918b91968c7f737885929fabb8c1b4a89b8e817579868a8a8a8a8a8a8a807366727f8b98a5a9a9a99d9083776a6b78858a8a8a8a8a8a8a85786c5f5245392c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000003101c28343f4a5466737f8c92908e8c8a87858383909daab7c3bcb0a69f92857b6e61594f423c4955626f7c8897a2adb9c4b7aa9e9184776a5f5344505c6675818e9babb5c0b9ada196887b6e6155483b2e2215070000000000000000000000000004111d2a3744505d6a7783909daab6c3b6aa9d90837c7b7b7b7b7b7b7b7b808c99a6b3bfbcafa296897c6f6356495663707c8996a3afbcbcb0a396897d706356505c6976838f9ca9b6c2baaea194877b6e6154483b2e2115080000000b1825323e4b5865717e8b98999999999999999d9fa7b1bcb0a69f9c999999999999928578717e8b8e8e8e8e9296918e8e8e8e8e8e8e8e8e8e8d807473808d8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8073675a4d4034271a0d0100000000000a131c242c343c454d565d676d79818e939ea5afb8c1cacac1b7aea49f92877d706a5f574d433f45525d686f7c87929fa6b0bbc4cbc0baada2979082786d60584e43392f24180d040000000000000000000000000000000000000000000000000000000000000000000000000000060b141b22272b2f3545525f6c7885929fabb8b8ab9e91857f848a8a7e717885929fabb8c1b5a89b8e8275717e7e7e7e7e7e7e7e7c6f65727f8b989c9c9c9c9c9083776a64707d7e7e7e7e7e7e7e7e7064574a3d3124170d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000006121f2b3844505c6676828f9c9d9b99969792909095a0acb8c5c2baaea2988e81756b60544a3f4c5965727f8c98a9b3bebfb4aa9a8d807367584e434a5464717d8a99a4afbbbdb2a9988b7e7165584b3e2f24180c0000000000000000000000000004111d2a3744505d6a7783909daab6c3b8ab9f95908888888888888888888c929ca8b4c1bcafa296897c6f63564956626f7c8995a2afbcbdb0a4978a7d7164574f5c6976828f9ca9b5c2bbaea194887b6e6155483b2e2215080000000b1825323e4b5865717e8b8c8c8c8c8c8c8c8c90959fabb7ab9f94908c8c8c8c8c8c8c8578717e8b989b9b9b9fa19e9b9b9b9b9b9b9b9b9b9a8d807473808d999b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a8d8073675a4d4034271a0d010000000000010a121a222a333b444c555d676d78818e939ea6b0b8c2cac9bfbbafa39992867c6f695e554b40414c56606a727f8c949ea9b2bdc7cabeb3a99f948c7f736a60554b40352920160c010000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f243945525f6c7885929fabb8b7ab9e918478787d827c6f7885929eabb8c1b5a89b8e82756c71717171717171716f6a65727f8b9090909090909083776a616c7071717171717171706c6155493f34291e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000713202d3a4653606d7985929faaa8a6a9a29f9c9da0a7b1bcc8cabeb3aa9e93897c6f665c50444d576975828f9ca8b5c2baaea298897c706356493d4754606d7a86939facb9c1b4a79a8e817467554b4035291d100906010000000000000000000004111d2a3744505d6a7783909daab6c3bcb1a79f9d959595959595959595999ca4aeb9c4bcafa296897c6f63564955626f7c8895a2afbbbeb1a4978b7e7164584f5c6975828f9ca8b5c2bbaea295887b6f6255483c2f2215090000000916222f3c4955626f7c80808080808080808083909daab6a99c9082808080808080807f72717e8b98a4a8a8aca5a3a1a1a1a1a5a8a8a8a79a8d807473808d99a6a8a8a8a6a1a1a1a1a2a8a8a8a8a69a8d8073675a4d4034271a0d01000000000000000810192029323a434b555c666d78818f949ea6b0b8c2cbcbc0b5aba29891857b6e675d514540444e58606c77828f97a1abb5c0ccc5bbb0a69f92877c6f675d51453e32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e3945525f6c7885929fabb8b7ab9e9184786c70766f6a7885929eabb8c1b5a89b8e8275686565656565656565656565717e8383838383838383817467656565656565656565656565625b51463a2e221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000916222f3c4955626f7c8898a2aeb4b2b3adaba9aaacb1b9c3ced0c5bcafa59d9083786d60564c535f697885929eabb8c5b8ac9f9285796d6053463a45525d687783909daab6c3b7aa9d908477675d5145392c1f1816120d0700000000000000000004111d2a3744505d6a7783909daab6c3c3b9b1abaaa2a2a2a2a2a2a2a2a2a6a8aeb6bfcabcafa296897c6f63564e55626e7b8895a1aebbbeb1a5988b7e7265584f5c6975828f9ca8b5c2bcafa295897c6f6256493c2f23160900040f1b2530394147545f6a6f737373737373737374818d9aa7b3a6998d8073737373737373726d717e8b98a4b1aba19a9694949494989ba3ada79a8d807473808d99a6aea49c99949494949598a0aab3a69a8d8073675a4d4034271a0d010000000000000000070e172028313a434b545c666d78828f949fa6b0b9c3ccc7bdb4aaa1979083796d605b51483e44505b656d7a859199a4afbbc3cdc2bbafa3999184796d60594f443a2f24190d04000000000000000000000000000000000000000000000000000000000000000000000000040e18222a31373a3c45525f6c7885929fabb8b7ab9e9184786b6369626b7885929eabb8c1b5a89b8e8275727272727272727272727272727276767676767676767472727272727272727272727272726d62564a3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000c1926323f4c5965727f8c98aab4bfbfbebab8b6b7b8bcc3c9cfd0cec1b8aca0958b7f72685e5255616e7b8897a1adb9c2b5a99c8f8276675c514538414c566773808d9aa6b3c0b9ac9f92867a6d6053473a2d2525221e181109010000000000000004111d2a3744505d6a7783909daab6c3cbc3bcb8b6aeaeaeaeaeaeaeaeaeb3b4b9bfc8c9bcafa296897c6f635b5b5b616e7b8894a1aebbbfb2a5988c7f72655b5b5c6975828f9ca8b5c2bcafa296897c6f6356493c30231609000915202c37414b53575f61656c6f74797e7f726974818d9aa7b3a6998d80736666666666666665717e8b98a4b1a59a8f8a888888888b919ba7a79a8d807473808d99a6a89c928d88888888888e98a4b3a69a8d8073675a4d4034271a0d01000000000000000000050e161f283039424a545c666d79828f949fa7b1bac4cec5bcb3a9a0958e81756d635a50463f49535e68707d87939fa7b1bcc6cbc0b5aba0968e81746b61564c4135291f160c0100000000000000000000000000000000000000000000000000000000000000000000000a15202a343c43474851525f6c7885929fabb8b7ab9e9184786b5e5c5f6b7885929eabb8c3b7aa9d90837f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120006121e2b37424d576875828f9ba8b5c2cfcac6c2bcb7b6b8b9bec0c3c5c8bcb1a79f92857a6d61575764717e8a97a9b3bec0b5ab998c7f7266554b40343e4a5764717d8a97a9b3bebbafa399897c6f6356493c3732312e29231b13090000000000000004111d2a3744505d6a7783909daab6c3d0cdc8c4c3bbbbbbbbbbbbbbbbbbbfc1c4cad1c9bcafa296897c6f64686868686e7a8794a1adbabfb2a5998c7f72686868686975828f9ca8b5c2bcafa396897c706356493d3023160a000c1825313d48535d65696e73787c81858a877b6e74818d9aa7b3a6998d8073665a595959595965717e8b98a4b0a3968a7d7b7b7b7b7f8b98a5a79a8d807473808d99a6a6998d807b7b7b7b7c8895a2afa69a8d8073675a4d4034271a0d0100000000000000000000040d161e273038424b545c676d79828f95a0a8b2bcc5cec4bbb1a79e938c7f736c61584e43414c56606b73808d95a0aab4bfcbc7bdb2a89d938a7d70685d52453e31281e130800000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e53555e5e5f6c7885929fabb8b7ab9e9184786b5e5e5f6b7885929eabb8c5b8aca095908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b87796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170e0600000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000814212e3a47535f697885929eabb8c5d1cdc2b8b0aba9abadb3b3b7b8bcc3baada2978d8074695f5a6773808d9aa6b3c0bbafa399897c706356494343434854616e7b8797a1adb9c0b5ab988b7f7265584c43433f3e3a342d251b110700000000000004111d2a3744505d6a7783909daab6c3ccc4bdb9b7b2b2b2b2b2b2b2b2b2b5b6bbc1c9c9bcafa296897c6f7174747474747a8794a0adbabfb3a6998c8074747474747475828f9ba8b5c2bdb0a3968a7d7063574a3d3024170a000e1b2734414d59656f757b7f84898e92988e817474818d9aa7b3a6998d8073665a4d4d4d4d5865717e8b98a4aea295887b6f6e6e717e8a97a4a79a8d807473808d99a6a5988c7f726e6e6e7a8793a0ada69a8d8073675a4d4034271a0d010000000000000000000000040c151e263039424b555d676d7a839096a1a9b3bdc6cdc3b9afa59f93887e706a5f554b41444f59606d79839098a3aebac2cec3baafa59e91847a6d60594f433a2f24190d0100000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f626b6b6b6c7885929fabb8b7ab9e9184786b6b6b6b6b7885929eabb8c5bcb1a7a09d9898989898989898989898989898989898989898989898989898989898989898989898989286796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c3bcb0a396897d7063564a3d302920181006000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000815222f3b4855626e7b8897a1adb9c0c8c7bcb0a69f9c9ea1a9a6aaacb1b9beb3a99f92867b6e61586976828f9ca9b5c2b9ac9f92867a6d60535050505050535e697885929eabb8c1b4a79a8e817467544a50504c4a463f372d23180d01000000000004111d2a3744505d6a7783909daab6c3c4bab2acaaa5a5a5a5a5a5a5a5a5a8aaafb7c1ccbcafa296897c717e8181818181818e9ba8b4c1c3b7aa9d90838181818181818184919eabb7c4bdb0a3978a7d7064574a3d3124170a000f1c2835424f5b687581888c91969a9f9f92867b74818d9aa7b3a6998d8073665a4d4b4b4b5865717e8b98a4aea295887c777777777e8a97a4a79a8d807473808d99a6a5988c7f777777777a8793a0ada69a8d8073675a4d4034271a0d01000000000000000000000000030c151e273039434b555d686e7b849197a2abb4bfcbcbc1bbafa49a92867c6f675d51453f45515c666f7c86929fa6b0bcc6ccc0b9ada1978e81746b61554c4135291d11040000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a6f787878787885929fabb8b7ab9e918478787878786d7885929eabb8c5c3b9b1acaaa5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7b7b7b0a396897d7063564a413a322a22180f090a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000b1825323e4b5865717e8b959da4aeb6c0c4b7ab9f9490919797999da0a7b1bdbaaea3998e81756a5f687885919eabb8c3b7aa9d908377675d5d5d5d5d5d5d5d576976828f9ca9b5c2b6aa9d908377665b5d5d5d585651493f34291e1206000000000004111d2a3744505d6a7783909daab6c3bdb2a8a09e9898989898989898989b9ea5afbbc6bcafa296897c74808d8e8e8e8e8e939eaab6c2c5b8aca095908e8e8e8e8e8e8e9196a1adb9c5bdb0a4978a7d7164574a3e3124170b000c1925323f4c5865727f8b969ea0a8aba3998d8074818d9aa7b3a6998d8073665a575757565865717e8b98a4b1aa9e91848484848484919eaba79a8d807473808d99a6ab9e91858484848483919daab3a69a8d8073675a4d4034271a0d0100000000000000000000000000030c151e273039434c565e696f7c859299a3aebac0caccc0b6aca2989184796d605b5146404b545f6a727f8c949faab4bfcac9beb2a99d938a7d70675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c848484848488939facb9b9ac9f92878484848484797885929eabb8c5cbc3bcb8b7b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2ac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929faaaaaaaaaaa396897d706356524c443c342a211816171818181818181818181818181818181818181818181818181a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200091623303c4956636f7d838d929da4aebac3b6a99c908285878a8d9095a0abb5bfb4ab9f93877c6f6a6d7a8797a1adb9c1b4a79b8e81746a6a6a6a6a6a6a6a6a6a6a73808d9aa6b3c0b8ac9f9285796c6a6a6a6a65625b51463a2e221609000000000004111d2a3744505d6a7783909daab6c3b9aca096918c8c8c8c8c8c8c8c8c8e939eaab6c3bcafa296897c74808d9a9b9b9b9b9ea5afbac6c8bcb1a7a09d9b9b9b9b9b9b9b9ea1a8b2bdc9beb1a4978b7e7164584b3e3125180b000713202d3a4653606d7984919ea9b2b4ab9e928579818d9aa7b3a6998d80736664646464636065717e8b98a4b1aca09691909090909196a1ada79a8d807473808d99a6ada19791909090909195a0acb3a69a8d8073675a4d4034271a0d010000000000000000000000000000030c151e27313a434d575f6a707d87929fa4aeb8c1ccc7beb4aaa0968e81756d62584e44424e58606c78829098a2aebac2c9c2bbafa59e91847a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8891919191939aa4afbbbbafa3999291919191867a7885929eabb8c5d1ccc7c3c2babababababababababababababababababababababababababababebebebebebeb9ac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929d9d9d9d9d9d9d96897d7063615e564e463c332a202324252525252525252525252525252525252525252525252525252734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000915222f3b4854606b6f78808d929da8b2bdb3a79a8d80787a7d80839099a3afbbbbafa49a8f827776767d8996a9b2bebfb2a5988c7f767676767676767676767676767e8b98a4b1bebaaea298887b7676767676726d62564a3e3125180b000000000004111d2a3744505d6a7783909daab6c3b7aa9e91847f7f7f7f7f7f7f7f7f818e9ba8b5c1bcafa296897c74808d9aa7a7a7a8aaafb7c1cbcec3b9b1acaaa7a7a7a7a7a7a7abadb2bac4cfbeb1a4988b7e7165584b3e3225180b0006131f2c3845515c67727f8b97a2adb9ada1978b7e818d9aa7b3a6998d80737171717171706b65717e8b98a4a9a9a8a09e9d9d9d9d9ea1a8a9a79a8d807473808d99a6a7a9a19e9d9d9d9d9da0a7a7a7a69a8d8073675a4d4034271a0d01000000000000000000000000000000030c151f28313b454e58606b717e8a929ca6b0bac3cdc6bcb2a89e938b7f726a60564c4144505b666e7b86929fa7b1bdbdb9b0aba39f968e8174675b4e4134281b0e0100000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c88959e9e9e9fa4acb6c0c0b5aba39f9e9e9e93867a7885929eabb8c5cac1bbb7b5adadadadadadadadadadadadadadadadadadadadadadadadadadadb5b7bbc2cac5b9ac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986909090909090909090897d70686d685f584e453b322c2f30323232323232323232323232323232323232323232323232323234404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120007131f2c38434f5960666d74808d96a0acb9b9ac9f93887d7070737b87929fabb5c0b6ac9f948f83838384919eaab7c4c4b7aa9e91848383838383838383838383838383919daab7c4bfb4aa9d918383838383837f7265584c3f3225190c000000000004111d2a3744505d6a7783909daab6c2b6a99c8f837672727272727272727e8b98a5b1bebcafa296897c74808d9aa7b3b4b4b6bac1c9d3d5cbc3bcb8b7b4b4b4b4b4b4b4b7b9bdc4cccbbeb1a5988b7e7265584b3f3225180c0004101c2834404b55606d7a85929fabb5b3a99d9083828f9ca9b5a89c8f827e7e7e7e7e7e7d7065717e8b989c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9a8d807473808d999a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8d8073675a4d4034271a0d0100000000000000000000000000000000030d161f29333c464f59616c73808d949ea8b1bbc5cec3baafa59f92877c6f685e52463f4a545f69727f8c959fabb4b2aca69f99928d857f7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2ababacafb6bec7c7bdb5afacababa093867a7885929eabb8c5c1b8b0aaa8a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a9aab0b8c2c5b9ac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d2a3743505d6a7683848484848484848484837c6f717a6f6a5f574d443b383c3d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200030f1b27323d474f545c606d7984919ea6b0bbafa49a9184796d6974818e99a3afb5afaca69f959090909196a0acb9c5c5b8aca09691909090909090909090909090909195a0acb8c5c6b8aca09591909090908d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c2b6a99c8f837669656565656565727e8b98a5b1bebcafa296897c74808d9aa7b3c0c1c2c6cbd3dbddd5cec8c5c3c1c1c1c1c1c1c1c4c5c9cfc6c6beb1a5988b7e7265584b3f3225180c00000c18232e3945515d6773808d99a4afb8aca095908f949fabb7aa9e948f8a8a8a8a8a8a827669717e8b8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8d807473808d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8073675a4d4034271a10060000000000000000000000000000000000040d17212a343d47505a606c78828f95a0a9b3bec7ccc1bbaea39991847a6d615a5045424d57606c78839099a3aea8a19e948f87807a726d62564a3d3124180b0000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afb7b9bbc0c7d0cfc7c0bbb9b7ada093867a7885929eabb8c5bbb0a69e9c9494949494949494949494949494949494949494949494949494949c9ea6b0bbc5b9ac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936424e5b667176777777777777777777776f717e857c6f695f564d4444484a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000a16212b353d424a515c67707d8a949fabb5b6aca0968d80736a6e7b87929fababa39f9a999c9d9d9d9ea0a8b2bdc8c8bdb2a8a09e9d9d9d9d9d9d9d9d9d9d9d9d9d9da0a8b1bdc8c8bcb1a7a09d9d9d9d9a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c2b6a99c8f8376695c5959595965727e8b98a5b1bebcafa296897c74808d9aa7b3b9b9c4c5c8ced5ddd4cdc7c4c3b9b9b9b9b9b9b9b9b9b9b9b9b9b9b2a5988b7f7265584c3f3225190c000007121d2935404b55616e7b87939facb9b1a7a09d9c9fa6b0bbb0a69e9c97979797978f837669707d828383838383838383838383838383838383837f72707e808181818181818181818181818181818181807e7064574a3e362c22170c000000000000000000000000000000000000050f18222b353e44505b666d79839197a2acb6c0cccbbfb5aba1968f82756d62574d4244505b666e7c86929fa29f96918a827c746d68625b51463a2e2215090000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc5c7cbd1d8d7d0cac6c5b9ada093867a7885929eabb8c5b7aa9e948f8787878787878787878787878787878787878787878787878787878f949eaab7c5b9ac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26323e4a555f666a6a6a6a6a6a6a6a6a6a6a707d8791857b6e695e564c4f555758585858585858585858585858585858585858585858585858585858585a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000040f19232b3039404b55616b76828f99a3afbbb2a89f92877c6f6974818e99a49f99928e8d929ca9a9aaacb2bac3cecec3bab2acaaa9a9a9a9a9a9a9a9a9a9a9a9a9aaacb1bac3cecec3b9b1acaaa9a9a79a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c2b6a99c8f8376695c5959595965727e8b98a5b1bebcafa296897c74808d9aa7adadadb7b8bdc3ccd4cbc2bcb7b6adadadadadadadadadadadadadadada5988c7f7265594c3f3226190c0000000d18242f3a46525e6975828f9ca9b3b9b1acaaa9abb0b8c1b8b0aaa8a4a4a4a49c8f8376696b7076767676767676787979797979797979767676726d6c7074747779797979797979797674747474747474706c615550483e33281d11050000000000000000000000000000000000000610192328333f4a545d676e7b85929aa4afbbc2cdc6bdb2a89e938b7e71695f544a404a545f6a73808d9698928c847d766f6a615e5651493f34291d12060000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afb4b9bbbfc6cfcec6bfbab8b4ada093867a7885929eabb8c2b5a89c8f827a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a828f9ca9b5c2b9ac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d38434d555b5d5d5d5d5d5d5d575f696f7c86929791847b6e685e555961636565656565656565656565656565656565656565656565656565656565656773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000710191e272f39434f59626f7c87929faab4bbafa3999083786c6e7b87939a938e8781808d99a6b3b7b9bdc3ccd5d5ccc3bdb8b7b6b6b6b6b6b6b6b6b6b6b6b6b6b7b8bdc3ccd5d5ccc3bcb8b7b6b3a79a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c2b6a99c8f837669666666666666727e8b98a5b1bebcafa296897c74808d9aa0a0a0a0aaacb2bac3cdc2b9b0aba9a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0988c7f7265594c3f3226190c00000007131d2a36424d5763707d8a97a1adb9bcb8b7b6b7bbc2cac1bbb7b5b1b1b1a99c8f837669646469696969696b78848686868686868686817569656464646a778386868686868686868276696767676767646464615a5045392d21140800000000000000000000000000000000000000071117222d38424c555f69707d88939fa6b0bbc5cfc4bab0a69f92867b6e665c5144424e58606d7984918e867f79716c625f58524c443f372d23180d010000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2a7a7acaeb5bdc6c6bcb4aeaca7a7a093867a7885929eabb8c1b5a89b8e82756e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e75828f9ba8b5c2b9ac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27313b434a4e50515151514c565e696e7b859198a19691837a6d675d616b707171717171717171717171717171717171717171717171717171717171717173808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000000070c151d27313e47535f6a74818e98a3aebab5ab9f948b7e716a75818e8f87817b747f8b98a5b2bec5c8cec6c6c6c6cec8c5c4c3c3c3c3c3c3c3c3c3c3c3c3c3c4c5c8cec6c6c6c6cec8c5c4c0b3a79a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c2b6a99c8f837673737373737373737e8b98a5b1bebcafa296897c74808d93939393939da0a8b2bdc7bcb0a69f9c93939393939393939393939393939393938c7f7265594c3f3226190c000000010e1a25303b4653606d7985919eabb8c3c4c3c2c4bfbdbbbbbbbbbbbbbbb6a99c8f83767071717171717171717885929292929292928f82757171717171717784919292929292929083767171717171717171716c6155493d3023170a000000000000000000000000000000000000000006111c262f3a434d57616b73808d949fa9b3bec7ccc1baaea2989083786d60584e4245515d67707d88817b736d67615a534e46413a322d251b1106000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c88959b9b9b9fa3abb5bfbfb4aaa29f9b9b9b93867a7885929eabb8c1b5a89b8e82756861616161616161616161616161616161616161616161616875828f9ba8b5c2b9ac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2831383e42434444434c565e686e7b849197a1a8a0959083796d6763707d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e828f9ca9b5c2c5b8ab9f9285786c5f5245392c1f120000000000030b151f2b37434e58616e7b86929faab4bdb0a69e9184796d6f7c88827c756e727f8b98a5b2b9b9b9b9b9b9b9b9b9b9b9b9c5c6c9cfd0d0d0d0d0d0c6c0bcbbb9b9b9b9b9b9b9b9b9b9b9b9b3a79a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c3b7ab9e9184808080808080808080828f9ca8b5c2bcafa296897c74808686868686869196a0acb8c4b7ab9f94908686868686868686868686868686868686867f7266594c3f3326190c0000000009141f2b3844505c6674808d9aa8b2bdc8c6beb7b2b1afafafafafafafafa99c8f83767d7e7e7e7e7e7e7e7e7e86929f9f9f9f9f9d90837e7e7e7e7e7e7e7e85929e9f9f9f9f9e91847e7e7e7e7e7e7e7e7e7e7164574b3e3124180b0000000000000000000000000000000000000000000a141d28313c454f59606d78829097a1acb6c0cccabfb4aa9f958c80736a60544a404b55616b707b756e69605c555047433c353028201b130900000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c888e8e8e8e9299a3aebbbaaea298928e8e8e8e867a7885929eabb8c1b5a89b8e82756d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d75828f9ba8b5c2b9ac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f272d32363139434b555d686d7a839196a1a9b1a79f958f82796d6676838b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f949fabb7c3c5b8ab9f9285786c5f5245392c1f12000000000000030d1a26313c46525e6974808d98a2aebab9ada1968c80736a767b756f6a65727f8b98a5adadadadadadadadadadadadadb8b9bec5cdd6dcdccdc4bbb4b0aeadadadadadadadadadadadadada79a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c3b9aca196918c8c8c8c8c8c8c8c8c8f949eaab7c3bcafa296897c6f797a7a7a7a7a7984919daab7c3b6a99c9083797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786d6053463a2d2013070000000003101c28343f4a54626f7c8896a0acb8c5beb4aca6a4a2a2a2a2a2a2a2a2a29c8f8376828b8b8b8b8b8b8b8b8b9298a2acacacaca095908b8b8b8b8b8b8b8b9297a1acacacaca096918b8b8b8b8b8b8b8b8b85786b5f5245382c1f12000000000000000000000000000000000000000000020b161f2a333e44505c666e7b85929aa4afbbc3d0c6bcb1a79f93877c6f665c5144434f59616a6e6a615e57514b433e373129251e160e090100000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b818181818187929facb9b8ac9f92868181818181797885929eabb8c2b5a89b8f81797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79828f9ca8b5c2b9ac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d0e162028313a434b555d676d7a839095a0a8b2b9b1a79f948f82786d768390989898989898989898989898989898989898989898989898989898989898989c9fa6b0bbc7c5b8ab9f9285786c5f5245392c1f12000000000000000a15202a36424d57616e7a86929faab4bdb2a99f92867a6e6a6e6a625f65727f8b98a0a0a0a0a0a0a0a0a0a0a0a0a0a0abadb3bbc5cfdad6ccbbb2a9a4a1a0a0a0a0a0a0a0a0a0a0a0a0a0a09a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c3bdb2a8a19e9999999999999999999c9ea6b0bbc7bcafa296897c6f6d6d6d6d6d6d7784919daab7c3b6a99d9083766d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d665c5144382c1f120600000000000b17232e384754606a7784919eaab7c4b7aca29a97959595959595959595958f8376828f97979797979797979fa2aab4b9b9b1a7a09d97979797979797979ea1a9b3b9b9b2a8a09e97979797979797979285786b5f5245382c1f1200000000000000000000000000000000000000000000040d182128343f4a545e69707d88939fa8b2bdc7cec3bbafa4999083786d60584e42474f585f625f58524d454039312b262019130c04000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e696e747474747885929fabb8b7ab9e918478747474746d7885929eabb8c5b6aa9e938f8686868686868686868686868686868686868686868686868686868f949eaab7c5b9ac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c162028323a434b555d676d79829095a0a8b1bac3b9b0a69e948e81787683909ca4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a9abb0b8c2ccc5b8ab9f9285786c5f5245392c1f1200000000000000030e1a25303b46525e6873808d98a2aebabaaea2988d807469625f585865727f8b9393939393939393939393939393939ea1a9b3bec9d5cfc4baa9a098959393939393939393939393939393938d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c3c4bab2acaba6a6a6a6a6a6a6a6a6a8aab0b8c1ccbcafa296897c6f63606060606a7784919daab7c3b7aa9d9084776a60606060606060606060606060606060605c544a4034281c1004000000000006111c2b37434e586673808d99a8b2bdb2a69a908a88888888888888888888888276828f9ca4a4a4a4a4a4a4acaeb4bcc5c3b9b1acaaa4a4a4a4a4a4a4a4abadb3bbc5c3bab2acaaa4a4a4a4a4a4a49e9285786b5f5245382c1f120000000000000000000000000000000000000000000000060f17232e38424d57616b74808d96a0abb5c0ccccc0b5aba0958c7f736a5f544a3f464e5355534e46423b342f271f1b150d0802000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e616868686c7885929fabb8b7ab9e9184786b6868686b7885929eabb8c5bbafa59e9b9393939393939393939393939393939393939393939393939393939c9ea6b0bbc5b9ac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a444c555d676d798290959fa7b1bac3c8c0b7afa59d938b7e7683909ca9b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b5b7bbc2cad2c5b8ab9f9285786c5f5245392c1f12000000000000000009141f2a36414c56616d7a86929faab4bfb4aa9f92867b6e61584e5865727f868686868686868686868686868686869297a1adb9c6d2c9bdb2a8988e88868686868686868686868686868686868074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c3ccc4bdb9b7b3b3b3b3b3b3b3b3b3b5b7bbc1cac9bcafa296897c6f635653535e6a7784919daab7c4b7aa9d9184776a5e53535353535353535353535353535353514a42392e23180c000000000000000f1b27323c4955626f7c8896a1acb9b1a4978a7e7c7c7c7c7c7c7c7c7c7c7c7b76828f9ca9b1b1b1b1b1b1b8babfc5cecbc3bcb8b7b1b1b1b1b1b1b1b1b8b9bec5cdccc3bdb8b7b1b1b1b1b1b1ab9e9285786b5f5245382c1f1200000000000000000000000000000000000000000000000006111c26303b454f59606d79849199a4afbbc3cec5bdb1a79f92867c6e665b50443c43474847433c363029231d150d0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b454d53545b5b5f6c7885929fabb8b7ab9e9184786b5e5b5f6b7885929eabb8c5c1b7afaaa8a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a8aab0b8c1c5b9ac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a444c565d676d79828f949fa7b1b9c3c8c0b6aea59d938e81787683909ca9b6bebebebebebebebebebebebebebebebebebebebebebebebebebebebec2c3c7cccfcfc5b8ab9f9285786c5f5245392c1f120000000000000000020d1925303b46525e6874808d98a3aebabbaea3998e81756a5f5353606d78797a7a7a7a7a7a7a7a7a7a7a7a7a7a7985929eabb8c5d1c5b9ada196887c7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79786d6053463a2d201307000000000004111d2a3744505d6a7783909daab6c3c8cec9c5c4bfbfbfbfbfbfbfbfbfc2c3c7ccc8c8bcafa296897c6f635649515d6a7784909daab7c3b7aa9e9184776b5e5147474747474747474747474747474644403930271c1207000000000000000a15222e3b4754606a7884919eabb7b1a5988b7e726f6f6f6f6f6f6f6f6f6f6e76828f9ca9ababababababacafb5bdc7c6bcb4aeacababababababababacafb5bdc7c6bdb4aeacababababababab9e9285786b5f5245382c1f12000000000000000000000000000000000000000000000000000a151e29333e45515d676f7d87939fa8b2bdc1bcb4aea8a0999083786c60534639373a3b3a37312a251f18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b4246484e525f6c7885929fabb8b7ab9e9184786b5e525f6b7885929eabb8c5c9c1bbb6b5adadadadadadadadadadadadadadadadadadadadadadadadadadadb5b7bbc1cac5b9ac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c565e686d79828f949fa6b0b9c2ccbfb6aea49d938e81786c7683909ca9b6c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b8ab9f9285786c5f5245392c1f1200000000000000000008141e2a36414c56616e7b86929fabb5bfb5ab9f93877c6f6257505c666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6e7b8897a1adb9c6d1c4b8ab9e9184786d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d665c5044382c1f1206000000000004111d2a3744505d6a7783909daab6bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbafa296897c6f635649515d6a7784909daab7c3b8ab9e9185786b5e52453a3a3a3a3a3a3a3a3a3a3a3a3a3a38342e271e150b000000000000000006131f2b37434e586774808d9aaab4b5a89b8e8275686262626262626262626976828f9c9e9e9e9e9e9e9e9fa4abb5c0bfb4aaa39f9e9e9e9e9e9e9e9e9fa3abb5c0bfb4aba39f9e9e9e9e9e9e9e9e9285786b5f5245382c1f1200000000000000000000000000000000000000000000000000030c17212935404b55606b73808d96a0acb8b8afaaa29f959189817a6d6054473a2d2e2f2e2b26201a140c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212931363a3b45525f6c7885929fabb8b7ab9e9184786b5e525f6b7885929eabb8c2c2c2c2c2c2b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c2c2c2c2c2c2b9ac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686d7a8390949fa6b0b8c2c7c0bbada49d928d81786c667683909ca9b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ab9f9285786c5f5245392c1f12000000000000000000020d1925303a46525e6874818d99a3afbbbbafa4998e8175695f53545c606060606060606060606060606065727e8b98a9b3bec9cec1b4a89b8e817568606060606060606060606060606060605c544a3f34281c1003000000000004111d2a3744505d6a7783909daaafafafafafafafafafafafafafafafafafafafafafafafafa296897c6f635649505d6a7783909daab6c3b8ab9e9285786b5f52452d2d2d2d2d2d2d2d2d2d2d2d2d2d2c28231c150c030000000000000000030f1b27323d4a5663707d8998a2aeb8ab9e9285786a5f555555555555555c6976828f91919191919191919399a4afbbbaaea3989291919191919191919299a3afbbbaaea3999291919191919191919185786b5f5245382c1f120000000000000000000000000000000000000000000000000000050f18242f39434f59606d7984919da5afaca59e98928c847d756d675d5145392c2122211f1a150e09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d3945525f6c7885929fabb8b7ab9e9184786b5e525f6b7885929eabb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8390959fa6b0b8c2c7beb6afa49c928d80776c66697683909ca9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99f9285786c5f5245392c1f120000000000000000000008131e2a36414d56616e7b87929facb9c0b5ab9f93877b6e62574d50535353535353535353535353535b6575828e9ba8b5c1cfc9beb2a9988b7e716558535353535353535353535353535353504a42382e23170c00000000000004111d2a3744505d6a7783909da2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a296897c6f635649505d6a7783909daab6c1b8ac9f9285796c5f4a3f33282020202020202020202020201f1c18120b03000000000000000000000a13202d3a4653606d7985929facb8ada197887b6e625549494949494e5b68758184858585858585858487939facb9b8ac9f9286848585858585858487929facb9b9ac9f928784858585858585858583776a5d5144372a1e1100000000000000000000000000000000000000000000000000000007121d27313d45515c676f7d89939ea7a09d938e867f78706b605d554c4135291d1514120f0a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e2c3945525f6c7885929fabb8b7ab9e9184786b5e525f6b7885929ea8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d78818e939ea6b0b8c1bdb5aca49f928c80746c655b697683909c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9285786c5f5245392c1f1200000000000000000000020e1925303b46535f6975818e9ba6b0bbbbafa4998e8174695e524646474747474747474747474753606c7885929eabb8c5cec6b9ada197887b6e6255484747474747474747474747474746443f3830261c110600000000000004111d2a3744505d6a77839095959595959595959595959595959595959595959595959595959595897c6f635649505d6a7683909da9b4b4b4ac9f928679665b5044382b1f141414141414141414141312100c0700000000000000000000000006131f2c3845515c6675828f9ca8b0b3a9978a7e7164574b3e3c3c3c4d59656f7578787878787878787885929eabafafa89c8f82787878787878787884919eaaafafa99c90837878787878787878787771675b4f4336291d10000000000000000000000000000000000000000000000000000000010b151f2934404b55606b75818e989f959189817b726d666059514c433a2f24190d080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1f2c3945525f6c7885929fabb3b3ab9e9184786b5e525f6b7885929b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9286796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c666d78818f949ea6b0b8b4aba39a938c80736e605b536976838f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f85786c5f5245392c1f12000000000000000000000008141f2a36424d57626f7c88949fabb7b5afab9f92867b6e6154483b3a3a3a3a3a3a3a3a3a3c4955626f7c8897a1adb9bfc1c2b8ab9e918578695f53473a3a3a3a3a3a3a3a3a3a3a3a3a3a38342e261e150a0000000000000004111d2a3744505d6a77838888888888888888888888888888888888888888888888888888888888887c6f635649505d697683909ca7a7a7a7a7a39986796c605346392d2013070707070707070707070604000000000000000000000000000004101c2834404b5465727f8c98aaa3a2a19a8d8073675a4d40342f3c48535d65686b6b6b6b6b6b6b6b7885929ea2a2a2a29c8f82756b6b6b6b6b6b7784919ea2a2a2a29c9083766b6b6b6b6b6b6b6b6a675f554a3f33271a0e00000000000000000000000000000000000000000000000000000000030d18232f39434f59616e7b8692928c837d756e69605c544f45413a31281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3945525f6c7885929fa6a6a6a69e9184786b5e525f6b78858f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f86796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c666d78828f949ea6b0aaa29992887f736d645c505a677380828282828282828282828282828282828282828282828282828282828282828282828282828282828282828175685b4f4235281c0f0000000000000000000000020e1a26313b47535f6a76828f9ca7aeaba39f9a938d8074675a4d41342d2d2d2d2d2d2d35404b5565727f8c98a9b3b1b3b4b6b4a89b8e817568574d42372d2d2d2d2d2d2d2d2d2d2d2d2d2c28231c150c0300000000000000000815222f3b4855626e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796d605347505d697683909b9b9b9b9b9b9b93867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000c18232e3c4955626f7c889897969595948f8376695c5043362c37414b53595b5e5e5e5e5e5e5f6b7885929595959595958f8275695e5e5e5e6b778491959595959595908376695e5e5e5e5e5e5e5d5b554d43392e22160a000000000000000000000000000000000000000000000000000000000007121d27313d46525e68727f8c867f78706b615e57514a423d352f281f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929999999999999184786b5e515b68748182828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828175685c4f4235291c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424a545c666d78828f949fa6a19892877e726d635b524c58646e7376767676767676767676767676767676767676767676767676767676767676767676767676767676767676756f65594d4134281b0e00000000000000000000000009141f2b37434e5863707d8995a0a39f99928e87827c6f6256493c2f2320202020202c3945515d6776828f9caaa3a5a6a7a9aaa7988b7e7165584b3e31262020202020202020202020201f1c17110a030000000000000000000814212e3a47535f6a6e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d675d5145505c6976828e8e8e8e8e8e8e8e8e877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000713202d394653606c78858b8a898988878684786b5e5145382b2f3941484d4e5252525252525f6b788588888888888888888275695c52525e6b778488888888888888888276695d525252525252514f4a433b32271c11060000000000000000000000000000000000000000000000000000000000010b151f2a36414d56606d78807b726d666059524d4440393029241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c78858d8d8d8d8d8d8d8d84786b5e5159656f747575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575756f65594d4134281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c263038424a545c666d79828f949f9791867d716c625b524947525c64676969696969696969696969696969696969696969696969696969696969696969696969696969696969696968655d53483d3125190c000000000000000000000000030f1b26323c4854606b7783909d99928e87817c756f6a6054473b2e2214141414202d3a4753606d7a869298959698999b9c9e9f95877b6e6154483b2e2115141414141414141414141312100c06000000000000000000000006121f2b37434e585f62626262626262626262626262626262626262626262626262626262626262605d554b404c5965727f81818181818181818181796d6054473a2d211407000000000000000000000000000000000000000000000000000006121f2b3844505b66717e7e7e7d7c7b7a797872685c5043372a272f373c404245454545454855626f7c7c7c7c7c7c7c7c7c7b6e6155484855626e7c7c7c7c7c7c7c7c7c7b6e615548454545454544433f39322920160b00000000000000000000000000000000000000000000000000000000000000030d1925303b44505c666d736e69605c544f46423b342e271e19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f80808080808080807f7266594c535d6568686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868655d53493d3125190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e263039424b545c676d79828f9490857c706b625a514940404a52585a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b59534b42372c201509000000000000000000000000000a15202c38444f5964717e8b928d86817b756f6a6260584e43382b1f13070916232f3c4956626f7c838587888a8b8c8e8f9192918477695e52463a2d20140707070707070707070707060300000000000000000000000000020f1a26313c464e535555555555555555555555555555555555555555555555555555555555555553514b433a4a57626d72747474747474747474746d675d5145392c2013060000000000000000000000000000000000000000000000000000030f1c28333f4a54626c717271706f6e6d6d666860564b4034271d252c313435383838383a47535f6a6f6f6f6f6f6f6f6f6f6e695f534647535f6a6e6f6f6f6f6f6f6f6f6e695f53463a383838383736332e2720170e04000000000000000000000000000000000000000000000000000000000000000008141f28343f4a545c6067615e56514a423d363028231c150c0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323e4b57636d737373737373737373726d63574b4b53595b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c59534b42372c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e273039424b555d676d79828c837b6f6a615950483f373840474c4d4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d48423930251b0f040000000000000000000000000004101c27333d4653606d798585807b746e69625f58544e463d32271b0f030815222e3b4754606a6f77787a7b7d7e808183848687807367574d42362a1e120500000000000000000000000000000000000000000000000000000915202a333c4347484949494949494949494949494949494949494949494949494949494949494745403a3a46515b626568686868686868686868605d554b4135291d11040000000000000000000000000000000000000000000000000000000b17222d3842505a6264656463626261605c54564e443a2f23171a202427282b2b2b2b37434e585f626262626262626262615f574d42434e585f626262626262626262615f574d42372b2b2b2b2a2927221c160e05000000000000000000000000000000000000000000000000000000000000000000020c17232e38424a50535a54524d444039302a251f18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16232f3b46525b6366666666666666666666635b514641484d4e4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d49423930251b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e273039434b555d676d7980796e6960584f473e362d2e363b3f404343434343434343434343434343434343434343434343434343434343434343434343434343434343434342413d3730271e14090000000000000000000000000000000b161f2c3845515c666f7d7a736e69615f57534e47433d342b20160a0006131f2b37434e5860626a686d6f707273747677797a7a6d6054473b30251a0e020000000000000000000000000000000000000000000000000000030e18212a31373a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a39352f353f495157595b5b5b5b5b5b5b5b5b5b54514b433a2f24180d0100000000000000000000000000000000000000000000000000000006111c262f3e4850565858575656555453514a42443c33281d120f14181a1b1f1f1b26313c464e5355555555555555555555534d453b3c464e5355555555555555555555534d453c31261a1f1f1e1d1a16110b04000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f44464d4746423b342e271e1a140c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a3540495257595a5a5a5a5a5a5a5a595751493f373c4041424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242413d3730271e14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e273039434b555d676d736d675e574e463e352d24242b2f3334363636363636363636363636363636363636363636363636363636363636363636363636363636363636363534312c251e150c0200000000000000000000000000000004101c2834404b54606b6f6d68615e57534d47433c38322b22190f0400030f1b27323d464e5456565d60626365666869656c6d6d685d524539291f140900000000000000000000000000000000000000000000000000000000060f1820262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2c29242d373f464a4c4e4e4e4e4e4e4e4e4e4e4745413a31281d130700000000000000000000000000000000000000000000000000000000000a141d2d363e45494b4b4b4a4948474644403930332a21170c04080c0e0f120a15202a343c43474849494949494949494846423b33333c43474849494949494949494846423c332a1f14091211100e0a0600000000000000000000000000000000000000000000000000000000000000000000000000000a151e262e34383a403b3a363028231c150c0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d19242e3740464b4c4d4d4d4d4d4d4d4d4c4b463f372e30343535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534312c251e150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e273139434b555d6066605d554d453d342c231b191f23262729292929292929292929292929292929292929292929292929292929292929292929292929292929292929282825201b140c0300000000000000000000000000000000000c18232e39424f596063615e56524d46423b37312b27201910070000000a15202b343d4347494c5254555758595b535b6061605d564c413529170d030000000000000000000000000000000000000000000000000000000000060e151a1f212222222222222222222222222222222222222222222222222222222222222220201d18252d353a3e3f414141414141414141413a39352f281f160c010000000000000000000000000000000000000000000000000000000000020b1b242d34393d3e3f3e3d3c3b3a3a38342e271e21180f05000000010205030e18222a31373a3c3c3c3c3c3c3c3c3c3b3a3631292a31373a3b3c3c3c3c3c3c3c3c3b3a37312a21180e030504030200000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d342e2d2a251f18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252e353b3e4040404040404040403f3e3a352e252427282929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292825201b140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151f273139434b51535953514b433b332b221a110e1317191a1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b19150f090200000000000000000000000000000000000007121d27303d474f545654524c46423b36312b26201b160f0700000000040f19222b32373b3c414547484a4b4d4e4950535454524c433a2f2419050000000000000000000000000000000000000000000000000000000000000003090f121415161616161616161616161616161616161616161616161616161616161616141311131b23292e3132353535353535353535352d2c29241d160d040000000000000000000000000000000000000000000000000000000000000009121b22292d30313231302f2f2e2d2c28231c150c0f06000000000000000006101820262b2e2f2f2f2f2f2f2f2f2f2e2d2a261f20262b2e2f2f2f2f2f2f2f2f2f2e2d2b261f180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f202721201e19140c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242a2f3233333333333333333333322e2a231c181a1b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b19150f090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151f2831394045474d4745403931292119100802070b0d0d101010101010101010101010101010101010101010101010101010101010101010101010101010101010100f0e0c09040000000000000000000000000000000000000000000b151e2b353d4448494746413a36302a261f1b150f0a0400000000000007101920272b2e2f35393a3c3d3f40413f4446474745413a31281e1308000000000000000000000000000000000000000000000000000000000000000000020608080909090909090909090909090909090909090909090909090909090909090706040911181e2225262828282828282828282821201d18130c040000000000000000000000000000000000000000000000000000000000000000000910171d212425252423232221201f1c18120b030000000000000000000000060e151b1f2122222222222222222222211e1a14151a1f2122222222222222222222211e1a140e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c1012131a1414110e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191e23252627272727272727272625221e18110c0e0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0c090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f282f35393a403a39352f281f170f07000000000001030303030303030303030303030303030303030303030303030303030303030303030303030303030303030202000000000000000000000000000000000000000000000000030c19232b32383b3c3a3935302a251f1a140f0a04000000000000000000070f151b1f2224292c2d2f3032332d3337393a3a39352f281f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d121618191b1b1b1b1b1b1b1b1b1b1413110d07010000000000000000000000000000000000000000000000000000000000000000000000060c111517181818171615141312100c070000000000000000000000000000030a0f12151516161616161616161514120e09090f12141516161616161616161514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070d080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d131619191a1a1a1a1a1a1a1a191816120d07000102020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d332d2c29241d160d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111921272c2f302e2d29251e1a140e0903000000000000000000000000040a0f1315191d20212224252622272b2d2e2d2c29241e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c0e0e0e0e0e0e0e0e0e0e0706040100000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b0c0b0a09080707060400000000000000000000000000000000000003060809090909090909090908070502000002060808090909090909090908070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d0d0d0d0d0d0d0d0d0c0c0a06020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c12181d20202620201d18120c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b20222321201d19130e0902000000000000000000000000000000000306080d1113141517181a171b1f202121201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010101010101010000000000000000000000000000000000000000000000000000000001040607080909090807060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d1013141a1413100d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b0f1315161413110d080200000000000000000000000000000000000000000001040707090a0c060b0f1213141413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010102020100000000000000000000000000000406070d0807050200000000000000000000000000000000000000000000000000000000000000000406070b100706030000000000000000000000000000000000000000000000000000000000010507070a0a0a0a0a0a0a0a0a0a0a070604010000000000000000000000000000000005080a0b0c0c0c0c0c0c0c0c0c0c0b0a08050000000000000000000000000000000000000000000000000000000000000002070a0c0d0e0e0e0e0e0e0e0e0e080705020000000000000000000000000000000000000003060809070d10131415161616151312100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607080808080808080807070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070d07060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000307090907070501000000000000000000000000000000000000000000000000000000000000000003050607070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b0c0d0d0e0e0e0e0d0a07070501000000000000070c1013131a1514120e090200000000000000000000000000000000000000000000000000000000070c101313181d1312100b060000000000000000000000000000000000000000000000000002080d11131416161616161616161616161413110d0801000000000000000000000000060c1115171819191919191919191919171714110c0500000000000000000000000000000000000000000000000000000000070d1316191a1a1a1a1a1a1a1a1a1a1514120e0903000000000000000000000000000000040a0f1315161c181d20202122232322201f1c1812110c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060708070502000000000000000000000000000406070809090909080706040000060c10121315151515151515151413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11141717191a1a1b1b1b1a19171413110d08020000030b12181c1f202621201e1a140e0903000000000000000000000000000000000000000000000001070c12181c1f202529201f1c17110a0200000000000000000000000000000000000000000000040c13191d2021232323232323232323232321201d19130c04000000000000000000000910171d212424252525252525252525252423211c17100800000000000000000000000000000000000000000000000000010a12191e23252627272727272727272721201e1a140d0500000000000000000205070807070f151b1f22222824292c2d2e2f2f2f2f2d2c28231c1c170c07010000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1013141514120e0903000000000000000001070c1013141515161616151312100c0a11171c1f20212121212121212121201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030709090a0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080706040100000000000000000000000000000000000000000000000000000000000000000003030303030303030303020000000000000000000000000000000000030607080809090908070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171c21232426262728282827262421201d19130f0a030c151d23282c2d332e2d2a251f1a140e09030000000000000000000000000000000000000000070c12181d23282c2d32362d2b28231c140c020000000000000000000000000000000000000000040e161e25292d2e30303030303030303030302d2c29241e160d04000000000000000009121a22282d30313232323232323232323231302d28221a12080000000000000000000000000000000000000000000000000a131c242a2f32333434343434343434342e2d2a251f170f05000000000002080e11141414111920272b2e2f352f35393a3b3c3c3c3b3a38342e2d282218120b030000000000040607060400000000000000000000000000000000000000000000000000000003090e12181d1f2021211e1a140d05000000000000030b12181d1f20212223232322201f1c18151c23282c2d2e2e2e2e2e2e2e2e2e2d29241e160e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b0f131516171514120e090807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060709090e1114141413100d07010000000000000000000000000000000000000000000000000000000407090a101010101010101010100f0d0905000000000000000000000500060c1012131415151616151413110d080604010000000000000000000000000000000000000000000000000000000000000000000000000000000008121a22282d30313233343435353433312e2d2a251e1b160f151e272e34383a403b3a36302a261f1a140e090300000000000000000000000000000000060b12181d23292e34383a3e433a38342e261e140a00000000000000000000000000000000000000020c1620283035393a3d3d3d3d3d3d3d3d3d3d3d3a39352f281f160c0100000000000006101a242c34393d3e3f3f3f3f3f3f3f3f3f3f3e3c39332c241a10050000000000000000000000000000000000000000000007121c252e353b3f404141414141414141413b3a36302921170d03000000060b14191e2021201e222b32373b3c4243404547484949494846444039393329241d150d030000070c10131313100c070000000000000000000000000000000000000000000000060b0f141a1d24292c2d2e2d2a251f170f05000000040d0d151d24292c2d2e2f30302f2e2d2c28231f262e34383a3b3b3b3b3b3b3b3b3a3935302820160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b2022232421201e1a171514120e09070604000000000000000000000000000000000000000000000000000000000000000000000000000000040607070d1013141618191e202120201d18120c04000000000000000000000000000000000000000000000000050b101416171d1d1d1d1d1d1d1d1d1c1c1915100a02000000000000020a101511171c1f2021222223222221201d191413110d070100000000000000000000000000000000000000000000000000000000000000000000000000030d1a242c33393c3e3f404041414141403d3a3936302c2721191d2730394045464d4846423b36312b261f1a140e0902000000000000000000000000020a11171d23282f34394045464b5046443f3830261c110600000000000000000000000000000000000008131e28323a41464749494949494949494949494745413a31281e13080000000000000c17222c363e45494b4c4c4c4c4c4c4c4c4c4c4a49453e362c22170c000000000000000000000000000000000000000000020d19242e3740474b4d4d4d4d4d4d4d4d4d4d4846423b33291f140900020a11171e252a2d2e2d2a2b343c4347494f504b5153545556565553514a49453e352f271f150b030b12181c1f201f1c18120b0600000000000000000000000000000000000002080d11171c1f262a2f35383a3b3a36312921170d0300000d161f1f272f35393a3b3c3c3c3c3b3a38342e2c30383f444648484848484848484746413a32281e13080c0c0c0c0c0c0c0c0c0c0c0c0c0c0808060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111921272c2f30302e2d2a252421201e1a161413100c070705010000000000000000000000000000000000000000000000000000000000020507070c10131416181d20202325252a2d2e2d2c29241d160d0400000000000000000000000000000000000000000000080f161c202223292929292929292929292825211b140c0402000000040c141b211c23282c2d2e2e2f2f2f2f2d2c292420201d18130c040000000000000205070808080602000000000000000000000000000000000000000000010b151f2c363e45494a4c4d4d4e4e4e4d4c4a4746413a38322b23232e39424b51535954524d46423b37312a261f1a140d0802000000000000000003090b141c22282e343940454b5153585c53504a42382e23170b0000000000000000000000000000000000010d1925303a444c5254565656565656565656565654514c433a2f24190d010000000005111d28343e4850555758585858585858585858575550483e33281c1105000000000000000000000000000000000000000007131e2a3540495257595a5a5a5a5a5a5a5a5a54524d453b30251a0e040b141c22283036393b3936323c464e54555b5d555d606162626262605c54555045403931271d120c151d23282c2d2c28231d17110a02000000000000000000000000000000050c13191c22282b3136394045474846423b33291f140900030c1f283131394045474848494949484644403a3838424a5053545454545454545454524c443a3024191919191919191919191919191919191514120f0a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232b32383b3c3d3b3a3630312e2d2a2523201f1d181413110d08070401000000000000000000000000000000000000000000010507090e111414181d1f202324292c2d303230363a3b3a39352f281f160c01000000000000000000000000000000000000000008111a21272c2f303636363636363636363635322d261e16070f0807050c161e262d322e34383a3b3b3c3c3c3b3a39352f2d2c29241d160d0800000003090e1214151514120e09030000000000000000000000000000000000000007121d27313e4850555759595a5b5b5b5a595754524c48433d352e2834404b545c6066615e57534d46423c36312a251f19130c07000000000001070d151a1d262d333940454b51545c606569605c544a3f34281c10030000000000000000000000000000000005111d2935414c565e616363636363636363636363605d554c4135291d1104000000000815212d3945505a61646565656565656565656564615a5045392d21140800000000000000000000000000000000000000000a16232f3b47525b6366676767676767676767615e574d42362a1e120d161d262d333b41464746413b434e586062686a6b676d6e6f6f6f6e6d6664615a514b43392f2418161e272e34383a38342e27221b140b0500000000000000000000000000080e161e252a2d33383b42464b515354534d453b31251a0e020b151e313a43434b515354555656565553514a4745404a545c606161616161616161615d564c4135292525252525252525252525252525252522211f1a150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353d4448494a484642403e3b3a3630302d2c292421201d191413110d0806030000000000000000000000000000000306080d111314191e202124292c2d302f35393a3c3f414246474745403931281d120700000000000000000000000000000000000000050f1a232b33383c3d43434343434343434343413e3830281e141b1514120e1e2830383e383f44464748484949484745413f3a39352f281f1a110800050d141a1e212122211e1a150e060000000000000000000000000000000000000c18242f3943505a6164656667676868676664615e56544f473f372c3845515c666d736e69615f57534d46423b363029241e18120b030000040c131820262b2f383f444b51555c60666d71766d665c5044382b1f1509000000000000000000000000000000000713202d3946525e686d70707070707070707070706d675d5145392c201306000000000a1724303d4955616c7172727272727272727272716c6155493c3023170a00000000000000000000000000000000000000000c1925323f4b57636d737474747474747474746e695e52463a2d2014171f282f383f444c5254524c444754606a6f757678797a7b7c7c7c7b7976716c605d554b4035292020283039404546454039332d261d170e08010000000000000000000008121a20283036383f44464d53555d60615e574d42362a1e1308121d2730434c55555d60616263636261605c5453514b505c666d6e6e6e6e6e6e6e6e6d685d52463932323232323232323232323232323232322f2e2b2620180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d474f54565754524d4d4a4846423f3d3a39352f2e2d2a2521201d1913120f0b060401000000000000000004060b101213191d2021252a2d2e2f35383a3c3f404547494b4e4d525453514b43392f24180d010000000000000000000000000000000000000b16212b353d44484a5050505050505050504f4e49423a3020212821201e1a20303a42494e4a505354555556555554524c4b4745403a312c231a11080f171f252a2d2e2e2d2b261f180f080200000000000000000000000000000004101d2935404b55616c717273737474747473706d6863605951493f35414b55606d78807b746e69615f57534d46423b353028231d150c0a080d161d242931373e424a50555c60676d72797e82786d6053463c31261a0e010000000000000000000000000000000714212e3a4754616d7a7d7c7c7c7c7c7c7c7c7c7d796d6054473a2d211407000000000b1824313e4b5764717e7f7f7f7f7f7f7f7f7f7f7e7164574a3e3124170b00000000000000000000000000000000000000000d1a2633404d596673808080808080808080807b6e6154483b2e21192129313a424a50565e615e564d4955626f7c8183848586878889898886837e756d675d51453c322728323a434b5153514b443f382f292019130c04000000000000000005101a242c323a41464a5053575f61676d6e695e53463a3024190d18232e3943555e66676d6e6f6f6f6f6e6d6665605d5553606d787b7b7b7b7b7b7b7b7a6d6154473f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3b3a37312a22180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f59606363615e575a5754524d4c494745403e3a3936302d2c2924201f1c1713100d070401000003070c1013171c1f20252a2d2e30363a3b3e404547494c4b515356585a565e61605d554b4035291d1004000000000000000000000000000000000004101c27333d474f54565c5c5c5c5c5c5c5c5c5c5a544c42382d2e352e2d2a252933424c545a545c60616162626262605d565853514b433e352c231a0d17212931363a3b3b3a37312a2119130c05000000000000000000000000000006131f2c3945515d67717e7f8080818181807f7d7a756f6b635b51483e45515d67727f8b86817b746e69615f57524d46413a342e271e1b1514191f282f353c43474f545b60676d72797f848b8a7d7064574d42372b1d12070000000000000000000000000000000a1724303d4a5763707d89898989898989898989897c6f6256493c2f23160900000004111e2b3744515e6a77848b8b8b8b8b8b8b8b8b8b83776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b78848d8d8d8d8d8d8d8d887c6f6255493c2f22232b333b434b545b60686e685e574d596673808c90919298949595959992908a81796d60584e43372b303a444c555c605c555049413b3329241e160d07000000000000000c17222c363e444c52545b6063696e737a7b6e61564c4135291d111c2834404b556670767a7b7b7c7c7c7b7976726d675f57616e7b87878787878787878074675a4e4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4847433c342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b6f706e69696664615e57595653514b4a4746413d3a39352f2d2b2822201d1813110d070c1012181d1f23282b2d3036393a3e4246474b4b51535659555d6063656769696e6d675d5145392c20140900000000000000000000000000000000000714202c38444f59606369696969696969696969665e54493e393a423b3a3630303b45545e6669666d6e6e6f6f6f6e6d686965605d554f473e352c1f151f29333b4246484847423c332a251e170e07010000000000000000000000000714202d3a4753606d79878c8c8d8e8e8e8d8c8a87827d726d635a50424c56606d7a8592928e87817b746e69615e57524c454039302b26201e252a313a40454e535961666c71797f848b91968f8276695f5347392f24180c0000000000000000000000000000000a1724303d4a5763707d8a969696969696969695897c6f6256493c2f23160900000004111e2b3744515e6a77849198989898989898989083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919a9a9a9a9a9a95887c6f6255493c2f2328353d454d555d666c737a6e695e54576976828f9c9e9fa2aaa2a2aba39f9c938e81746a6054473b2e35414c565d676d67605b534d453e352f281f191109010000000004111c28333e4850565e61666c70767b80858275685d5245392c20131f2c3845515c6776828687888989898886837f796e695f616e7b879494949494948d8174675a5858585858585858585858585858585858585855534e463c31261a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58636f7d7d7b787673716e69686663605d555754524c4a4745413c3938332d2c2924201d1813171c1f24292c2e34383a3c4146474b4d525457555d60636568676d6f727476787a796d6053473b30251a0e02000000000000000000000000000000000916222f3c4854606b707676767676767676767670665a4e4146474e4846423b36424d5766707678797a7b7b7c7c7b7a7875726d6761594f473d31271d25313b454d535455534d453f3630292018120b0300000000000000000000000916232f3c4956626f7c8999999a9a9b9b9a999a938f877f726c61544a525e6873808c979f99928e87817b746e69615d56514b433e3732292930363e434b51585f626b70787e848b91969e9f93877b6e62554b4035291d100400000000000000000000000000000a1724303d4a5763707d8a96a3a3a3a3a3a3a295897c6f6256493c2f23160900000004111e2b3744515e6a7784919da5a5a5a5a5a59d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919ea7a7a7a7a295887c6f6255493c2f2e343f474f575f676d7880857b6e665c5f697885929eabacaeb4afafb5aeaca59d93887c6f6255493c313945525d686d79726c655e575045413a312b231b1309000000000814212d3945505a61686d72787d82878d92867a6d6054473a2f2418202d3a4653606d79869294959696959992908b847b6e66616e7b8794a1a1a1a19a8d8174676565656565656565656565656565656565656565625f584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a77838a878582807d7b787572706d676764615e565754524c4946443f3a39352f2c29241f23282c2f35383a3f4446494c525457565e616467676d6f7275777a7c7e818385877f7265574d42362a1e1205000000000000000000000000000000000a1723303d4a5663707d8283838383838383838276695c4f4c52545b54524d453b46525e69768284868788888988888785827e79706b61594f43392f232a36424d575e61615f575146413a3229241d150d07000000000000000000000c1825323f4b5865727e8b98aba6a7a7a7a7aca49f99938a7e71665c5157616e7a86929fa9a39f99928e86817b736d68605c555047433c35323b414650555d606a6e767d838b91969ea1a9a49a8d8074675d5145392c1f160a00000000000000000000000000000a1724303d4a5763707d8a96a3afafafafafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab2b2b2b2aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb3b3afa295887c6f6255493c30383f44505960696e79828d9083786d60616e7b8897a2adb8babfbbbcbfbbb9afa59a8d817467564c4139434f59606d7a847f776e69615a524c433d352d251b11070000000a1723303c4955616c717a7f848a8f939a998b7e7165554b4035291d232f3c4956626f7c8999a3a2a2a2aba39f9d969083786d616e7b8794a1aeaea79a8d80747272727272727272727272727272727272727272726e6a5f53473a2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54626f7c889597928f8d8a8785827f7c7a7774716d686764605d565653504a4745403a39352f2c2e34383a4045474a505356565e616467696e7174777a7c7f818486898b8d9092908376695e52463a2d201409000000000000000000000000000000000b1825313e4b5864717e8b8f8f8f8f8f8f8f8f86796c5f4e565e6168615e574d434754616e7b87919299949595959597928f8b857d706b61554b4034292d3a46535e696e6e69625b524c443e352f271f19100a0100000000000000030f1b27333f49536774818d9aa7b3b4b4b4b3b6afaba49e9185796d60535f6974818d98a2aeafaba39f99928e86807a726d67615a534e45413e444c525a61676d737c828a90959ea1a8adb2ac9f9285796d6053473d32271b0f02000000000000000000000000000a1724303d4a5763707d8a96a3b0bcbcbcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7bebeb6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f6255493c38424a505a626b707b838f93948d80736b64717e8a97a9b3b7b9bbc0c7cbc7c0b7ab9e918478685d5245404b55606b74818e8b827b716c605d564f473f372d23180d0100000b1724313e4a5764717e868c91969c9fa49c8f8275675d5145392c2225323f4c5865727f8b98abb5afafb4aeaca8a0958b7e71646e7b8794a1aeb6a99c90827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b6673808d9aa19e9c999797918f8c898683807d7a7774706d686662605b5453514b4745403a38383f44464b5153545c606366686d7174777b7e818386898c8e919399989a9c9f93877b6e6154483b31251a0e020000000000000000000000000000000b1825313e4b5864717e8b979c9c9c9c9c9c9286796c5f5860686d756e695e554b4a5764707d8a979fa3aba2a2a2a9a19e9c9792877d70675c5145382c37434e58616e7b7b726d615e564f454039312b221c130a0000000000000005121f2b3744505b657683909da9b6c1c1c1c0c0bbb5ada1978a7d706458616e7b87929faab4bbb5afaba39f98928d857f79716c625f58524c4550565e616c707980878f949da0a7acb2b9baada2978b7e7165594f43382c1e1308000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f6255493c3f4a545c606d717d8590959e9f93887d706873808d9aa6ababacafb6bec2cbc5b9aca196877a6d60544745515d67707d8993948f857e756d68605951493f35291e120600000815222f3b4855626e7b88959ea1a8acac9f92867a6d6053473a2e2e2e35414c566875818e9ba8b0b3b8babab9b1a79c8f8275696e7b8794a1aeb7ab9f94908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7884919eababa9a6a9a19e9b999992908d8a8684807d7a76736f6c6664605d5553514b4644474a5053555d6064666d6f73777a7e8184878a8d909299989b9d9fa4aba7a9a49a8c7f7265574d42362a1e12050000000000000000000000000000000b1825313e4b5864717e8b97a4a9a9a9a99f9286796c5b626a6f7a817b6e675d544a596673808c99a6afb5aeafafb3adaba9a1999184796d6053473a303947535f6a7581857e756d686159514b433c342d251c11070000000000000613202d394653606c7985929facb8c3c4c8cdccc7beb3a99a8e817467606a75818e99a3afbcc6c0bbb5aeaaa39f97928c847e766f6a605d56515a61686e757d848d92999ea6acb1b9bdc4beb3a99d9083776b6054483a3025190d010000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f6255494144505c666d747e879297a0a7a49a91857a6e7683909c9f9e9e9fa4acb1b9c2c9bdb2a895887c6f6255494e58606d7984919e9f97928a817a706b625b51463a2e22160900000814212e3a47535f6a7783909daab2b9aea3988a7d7064574a3d3b3b3b3b45525d687784919da4a4a6acaeb4bcb8ab9e928578676e7b8794a1aebbb0a69f9c9898989898989898989898989898989898989898988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b5563707d8996a1adb8b5b3b2adaba8aba39f9d9a9a93908d8a86837f7c7974706d6764605d55535053545c6063676d7074797c8083878a8e9196979a9d9fa3aba8aaacafb5b4b6ac9d908376695e53463a2d2114090000000000000000000000000000000b1825313e4b5864717e8b97a4b1b6b6ac9f9286796c606d727c848e83796d665c50576975828f9ca8b5c0bbbcbbbeb9b8b3aba1968a7e7164574a3e39424f59626f7c87928b827a706b605d554e463f372d23180d0100000000000815222e3b4855616e7b8898a2aeafb6b8bcc2cbcfc3b6aa9d9083776a626f7c87939fabb5c0cecbc6bfbbb4aea9a29f96918a837c746d68615d606c707a818a91969fa3abb0b8bcc3c9cdc5b8aca095897c6f63564c41362a1e11050000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f62554e4e4e53606d78808b9299a1a9b1aca1978f827578859299929191939a9fa7b1bcc8bcafa396897c7063564b55606a73808d96a0a9a29f938e847d726d62574a3e3125180b000006121e2b37424e5766727f8c99a7b1bcb4aa9a8d817467574d48484848484854606d7a8693989797999fa2aab4b9ada197867a6d6e7b8794a1aebab8b0aba9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6774818e9ba8b2bdc2c0beb9b8b5b5afacaaaca49f9d9a9992908c8985817d7a75716d6763605c5f62666d7075797d8185898d90939a9a9ea0a8a7aaacafb5b4b7b9bbc0c0b8ab9f95877b6e6154483b31261a0e0200000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f928679676d757f8791958f82786d605a5e697885919eabb8bec5c6cacac6c5bdb2a89b8e8174685b4e41404a54616b76828f9a948f857d746d67605851493f352a1e120600000000000b1724313e4a5764717d8a97aaa1a2a9abb1b9c2cdc5b8ab9f928578656b76828f9aa4afb7bbc2c7cacbc6bfbab3ada8a19e949087807a716c676d747e858e939ea1a8afb5bdc2c8cac6c3bcb8b1a79b8e8175685e5246392d2013070000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f62595a5b5a59626e7b85929fa3abb3bbb3a99e938b7e7c8889878684848790959fabb8c5bdb0a3978a7d706457515c676f7c87939fa8b2ada59e9691877f7265594c3f3226190c0000020e1a26313c4855626e7b8895a0acb8b7aa9e918477695e535555555555555663707d898c8b8a8a8c9298a2aebab3a994887b6e6e7b8794a1aebac2bbb7b6b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a85929facb6b7b9bbc0c0c2c2c0bbb9b6b6afacaaaba39f9c9997928e8a86827e7a75706d666a6e74797d81858a8e9297999d9fa4acaaacb2b4b6b9bbc0c1c4c6c6c4c3bcb1a7988c7f7265574d42362a1e120500000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796f7a818b92999e948d80746c61616e7b8797a1adaeb1b8babec5ced0c3b7aa9d9084776a544a3f44515c66707d8a949f9e97918a81796f6a635b51463a2e22160900000000000d1a2633404d596673808c969595959d9fa7b1bcc8c6b9ac9f9386796c707d89949ea1a8abb0b8babfc6cacbc5bebab2aca69f99938d847e757079818a92979ea5adb2bbc0c7c8c5bebab8b1acaca49f92867a6d6154473a2e2114070000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f646667686766646a717e8a929ca6b0babbafa59f92857d7f7d7b7978787b83909daab3bebdb0a4978a7d71645758606d79839199a4afbabaafa89f93877d706356493d3023160a0000000915212e3a47535f697784919daab7b9aca096877b6e615f6161616161616164717e82807e7e7d8086929fa9b3aea295887b6f6e7b8794a1aebaccc7c3c2bcbcbcbcbcbcbebebebebebebebebebcbcbcb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d5664717e8a98a2a7a9abacafb5b3b6b8b9bec0c3c0bbb9b7b5afaca9a9a19e9b98928f8a86827d7974767b80858a8e92989b9ea1a9aaacafb6b7b8bdc0c3c5c4c2c0bebeb9b8b6b4b2aa9d908377695f53463a2d21140700000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286797c848e939fa3a69d928a7e716964707d8a97a9a2a2a4abadb3bcc5d0c5b8ab9f928578665c50444c56606d7884919da6a9a19e928d847c726d63574a3e3125180c00000000030f1c2936424f5c6975828b8988888890959fabb8c4c8bbafa49a877a6d7380878c91969c9fa6acaeb4b9bec5c9cac4bdb9b0aba49f97918a827c838e939ea1a9afb9bdc4c8c3bdb8b4aeaba7a09d9a93908b7f7266594c3f3326190c0000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f717374747473716d6c73808d949ea8b2bdbaada2978f8276706e6c65696f7c8898a2aebabdb0a4978a7d716455606a73808d95a0abb5c0b6aca1968d80746b6054483b2f22160900000006121e2b37424d576773808d9aaab4bdb2a8978a7e7164696e6e6e6e6e6e6e6e6e717573727171737d8997a2adaea295887b6f6e7b8794a1aebac1bbb7b5b0b0b0b0b0b0b7b8bdc3ccc6bfbab8b0b0b0b0a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e6876828f97999a9c9e9fa4aba7a9abadb3b3b6b9babfc2c0bbb9b6b3adabaaa39f9b98928e8a858183888d92979b9fa2aaabadb3b6b9bbc0c4c4c1bfbdb9b7b5b3b1b3adaba9a7a6a49f95887b6e6155483b2e22150800000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f92877e8691969ea5aeaea49f92857b6e6673808c98969595989fa2a9b3becac6baada29786796d605346525e68727f8c96a0acb3ada49d9691877f7266594c3f3326190c00000000000c1926323f4c5965727f7e7d7c7b7c83909da9b6c3ccc0b6a094877a6d6e737b7f848a8f949a9fa2aaadb3b9bec4c9c9c2bdb5afa9a19e938f8990959da5adb3bbc1c8c3bcb8b2acaaa29f9a95908c87837f7b6e6154473b2e2114080000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c717e80818181807e7a756e78828f96a0abb5beb3a99f948b7e7168605b5f6a7885929fabb8bdb0a4978a7d71645c676f7c87929fa7b1bdbbafa49a9184796d60594f44382c201307000000020e1a26313d495663707c8998a2aebab3a69a8d8073676e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b787985929eabafa295887c6f6e7b8794a1aebab8b0aaa8a3a3a3a3a3a3aaacb1bac3bcb4aeaca3a3a3a3a3988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7b87898a8c8e8f919399989a9c9ea1a9a6a9acaeb4b6b9bbbfc3beb9b8b4aeacaaa29f9b97928d90949a9ea1a9abaeb4b8b9bec3c3c0bdb9b7b4b2b2acaba8a6a4a9a19e9c9a999795998c7f7266594c3f3326190c00000000000000000000000000000b1825313e4b5864717e8b97a4b1bebbafa399928b9298a0a8afbbbaaea2989083786d75828d8b8a88888b9297a2adbac6cabeb3a993867a6d60534f59616e7a85929fa8b2bdb9aea8a0978d8074675a4d4134271a0e00000000000c1825313e4a57636d7272706f6e6f7c8995aab4bfcbbaada094877a6d61696e73787d82888e92989ea1a9adb2b9bec4cac7c0bbb2ada59e9b969da0a7afb9bec5c3bcb8b1aba8a09e98928e88837f7b76726e695e52463a2d2014070000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c77848c8d8e8d8c8a86817b707a849199a3afbbbbb0a69e92857a6d6159586a7784919daab7bdb0a4978a7d7164606d79839199a3afb9bdb1a79f93887d70675d51473d32271b1004000000000913202d3a4653606d7985929facb8b6a99c8f83766c798688888888888888888888888888877b7783909daaafa295887c6f6e7b8794a1aebbb0a69e9c9696969696969da0a8b1bdb4aaa39f9696969696968b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e68757a7c7e7f81838486898b8d8f9297979a9d9fa3aba9acaeb5b7b9bdc4bfbab8b4aeaca9a19e9a9c9fa6abadb3b8babec5c0bbb9b6b3b2acaaa8a5a8a19e9c9997959791908e8c8a8987868175685c4f4235291c0f02000000000000000000000000000b1825313e4b5864717e8b97a4b1bebbafa499939196a0aab2bac1beb3aa9f958c80737581807f7d7c7b7e85929fabb8c5d0baada093877a6d605454606b74818e98a2aebac3beb1a79f92857a6d6154473a2e21140700000000000916222e3a46515b6365656362626d798698a3aebac7baada094877a6d615e61666d70767c81868c92979ea1a9adb3babec5cbc4beb9afaaa8a3aaacb1b9c0c4bdb9b1aca79f9d96918b85817c77726e6965615e564d42362a1e11050000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c7a86939a9b9a9999928e867d707c87929fa7b1bcb9ada2978e81746b60546a7784909daab7bdb0a4978a7d71646a73808d95a0abb5c0b5aba0958d80746b60554b40352b21160b000000000006121f2c3844515c6676838f9ca9b6b8ab9e92857868798592949494949494949494949494877b7683909ca9afa295887c6f6e7b8794a1aeb7aa9e948f8989898989899195a0acb8aea39892898989898989897e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d565e686d6f71727476787a7c7e808385878a8d909299999c9fa3ababadb2bac4c7c5bfbab8b3adaba7a9abb0b8b9bec5c6c7bdb5afacaaa6a8a09e9b989696918f8d8b88878583817f7e7c7a79756f65594d4134281b0e02000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9387849198a2abb5c0c5bcb1a79f92877c6f757472706f6f717e8b97aab4bfcabaada093877a6d60545c666f7d89939eaab3bec0b6aca0958b7f72685d5246392d201307000000000006121e2a353f495157595856555c677985929facb8c5baada094877a6d6154545c60646a6f747a80858c91979ea1a9adb3bbc0c7c9c1bbb6b5afb7b8bcc3c4bab2ada7a09d95908a847e7a746f6a65615e5754524d443b3025190e020000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c7c899aa4a7a7aba39f9892867d73808c959faab4beb3a99f93877c6f665c6a7784909daab7bdb0a4978a7d71676f7c87929fa7b1bdbbafa3999183796d60594f433a2f23190f04000000000004101c2834404a546673808c99a6b3b9ada197877a6d7985929fa1a1a1a1a1a1a1a1a1a194877b7683909ca9afa295887c6f6e7b8794a1aeb5a89c8f827d7d7d7d7d7d83919daab7ac9f92867d7d7d7d7d7d7d7b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b444d565e616264666769676d6f717476787b7d808386898c8f92999a9ea1a8b2bbc4cfcac7c5beb9b8b4b6b7bcc2c6c9cfccc0b5aba49f9d9a9796918e8c89878482807e7c7a78767473716f6e6c65655d54493d3125190c00000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f92877b869299a4afbbc1c2bbafa3999083786d67656362626d7a8798a2aebac6baada093877a6d6057606d7883909da5afbcc5bbafa49a9083786d60564c4135291d11050000000000010d18232d373f464a4c4b4a4b556c7985929facb8c5baada094877a6d61544a5053585f62686d73797f848b91979fa2a9afb5bdc7ccc6c3c2bcc3c5c8c9bdb2a8a19e959089837d78726d6762605854524d4746423b32291f1409000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c7f8b98acb6b4b5aeaaa29891847978839098a2aebabbafa49a9083786d606a7784909daab7bdb0a4978a7d716d79849199a3afb9bbb0a69f92877c6f675c51473d31281d1107000000000000000c18232e3d4a5764707d8a97aab4beb3a995897c6f7985929facaeaeaeaeaeaeaeaea194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174707070707683909da9b6ac9f9285797070707070706e695e52463a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f29323b444c52545657595b555d6062656769696e717376797c7f82868a8e9196a1a9b2bec9d5d3cfc9c6c5c0c3c4c7cdd2d5d4c7bbafa49993908d8a8784817f7c7a787573716f6d67696766646261605b53544b42372c21150900000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286797d87939fa5afbac4c0b5ab9f958b7f72685e57555d687985929facb8c5baada093877a6d605f69727f8c95a0acb7c1bdb2a99f93887c6f665c50443a3024190d0100000000000007111c252d353a3e3f3f46525f6c7985929facb8c5baada094877a6d61544744464e53565e61676d72797f858c92979fa3abb5c0cbd2cfcec9d0d1d2c5b9ada196918b837d77716c66605d55544e4846423b3a36302920170d02000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c818e9ba7b4c0bfbbb4aaa0968c7f727b86929fa7b1bcb6aca0958b7e72676a7784909daab7bdb0a4978a7d7174808d96a0abb5beb3a99f948c7f736a60554b40352b1f160c00000000000000000715212e3b4854616e7b8798a2aebab1a4978a7e717985929facadaba8a8a8acaeb4a194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d81746763636a7683909da9b6ac9f9285796c6363636363615e574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d172029323a414647494b4c4e4b515356585a575e616467676d6f72767a7d81849197a1adb9c6d2dad5d0cac7c5c7cad0d5dadfd2c6b9ac9f938783807d7a777572706d6869666462605d555b5957565453504941423930261b100400000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f928679727f8c939ea8b2bdc7bdb1a79f92857a6e61584e566b7885929eabb8c5baada093877a6d60616e7b86929fa7b1bcc4b9ada1968d81746a60544a3f32281e130800000000000000050d1419232a2e31323946525f6c7985929facb8c5baada094877a6d6154473a3c43474c52555d60676d72797f858d9299a3afbbc7d3dcdbd6ddded1c4b8ab9e91847e78706b64605b54514b47433c3a36302d2a251f170e0500000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c83909daab5b7bbc2bcb2a89e918477727f8c95a0acb8beb1a79e9184796d6a7784909daab7bdb0a4978a7d717d89929da8b2bdbaada2979082786c60584e43392f23190d0400000000000000000613202d394653606c7985929facb8b2a5988c7f727985929fa8a19e9b9b9b9fa2aaa194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174675a5d6a7683909da9b6ac9f9285796c5f5656565654524d453b30251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1720293036393a3c3e3f41404547494b4d4d525457555c606366676d70747b85919eabb8c4d1cfc9c6bfbab8babfc6c9ced5d1c4b7aa9e91847b73706d68686563605d565a585554514b4e4c4b494746443f382f30271e14090000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796d75818f96a1abb5c0c3baada2978e81746a60535f6b7885929eabb8c5baada093877a6d606c76828f98a2aeb9c3bbafa59e91847a6d60584e42382e20160c02000000000000050e171e252a2d2e2d2a3946525f6c7985929facb8c5baada094877a6d6154473a31373a41464b51555c60676d727a8087929facb9c5d2dfdfdcddd8cbbeb1a5988b7e726c66605953504a45403a37322d2a25201e19140d050000000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bcafa295897c86929fa4ababb0b8c2b8aca096887c6f7983919da5afbdb9ada1978c7f72687784909daab7bdb0a4978a7d7a84919ea4afb5baafa59f92857b6e665b50463c31271d110700000000000000000005121f2b3744505b657783909daab7b3a69a8d80737985929fa196918f8f8f9298a2a194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174675a5d6a7683909da9b6ac9f9285796c5f575755534e46423b33291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e2f31332f35393a3c3e414246474a4b5153565e676d747e869197a1adb9c6cac4bdb9b4aeacaeb4b9bdc4c9cfc5b8aca09691867f756d685f575654524c4d4b4947454141403e3c3b3937332d261d1e150c020000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c6d7a849199a3afbbc2beb3a99f93877c6f655b5f6b7885929eabb8c5baada093877a6d68717e8b949faab4bfbeb3a99e938a7d70685d52463d30261c0e04000000000000020d1720293036393b39363046525f6c7985929facb8c5baada094877a6d6154473a2e2b30363940454b51555d60686d747e8b98a4b1becbd3d2cfd0d3d2c5b9ac9f92877d70695f564c443f38352f2b27201e1a14110e09020000000000000000000000000000050b101724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8beb1a4988b7e8b9893999c9fa6b0bbbdb2a8988c7f72707d89939eabb4afaaa29f92857a6d7784909daab7bdb0a4978a7d7b838e939fa3abb2a89d938a7e71695e544a3f342b1f150b00000000000000000000030f1b27333f49536875828f9ba8b5b4a89b8e81757985929f9e918482828286929fa194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d81746764646a7683909da9b6ac9f9285796c646464625f584e43372b21170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13191d202123242624292c2d2f3230363a3b3e464e575f686e79818b9298a1a9b2bec6bfbab2adaaa29fa2aaacb2b9bec5c8bdb2a8a098928b827a6e696059504541403e3c3a39352f33312f2e2d2b27221b140b0c03000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c686f7c87929fa7b1bcc5bbafa49a9083786c60556b7885929eabb8c5baada093877a6d6d7a85929ea6b0bcc4b9ada1978e81756c61564c41342b1e140a0000000000000008141e29323b41464746413c46525f6c7985929facb8c5baada094877a6d6154473a2e21252a2f353940454b515b656d7a84919eabb8c4cbc7c5c3c4c7cdc7bbaea39992857b6e685d52463e3329241d1b15120e0905020000000000000000000000000000000810161c2024303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c0b3a79a8d808a8786878f949fabb7c1b4a79b8e81746b75818e99a3aba39f98928c857c6f7784909daab7bdb0a4978a7d7179818b9299a1a9a0968e81746c61574d42382d22190d0300000000000000000000000b17222d414e5a6774818d9aa7b4b5a99c8f82767985929f9b8e8175757784919ea194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174717171717683909da9b6ac9f928579717171716f6a5f53473a2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314161819181d20202325252a343d474f5860696e7a838e939fa2aab2bbc2bcb4aea9a19e9892989ea1a8adb3bbc0c3bab2aaa39f948f847b6f6b615a50483f362f2d2c292426242321201f1b17110a020000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c606a727f8c959faab4bfc0b6ac9f958a7e71675c6b7885929eabb8c5baada093877a6d75818e97a1adb8c2baafa59e91857a6d61594f433a2f22190c02000000000000020e1925303b444c5254524c4847525f6c7985929facb8c5baada094877a6d6154473a2e21191d24292e38424e58606c77828f96a1adb9c6bfbab8b6b7bcc2cbbfb5aba29791847a6d615a50453b30251a0d0a0502000000000000000000000000000000000008111a21282c2f303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bfb2a5988c7f7d7a797b828f9ca9b3beb6a99d9083766a6e7b86929f9e99928e8680796f6a7784909daab7bdb0a4978a7d716d757f8792979f999184796d605a50453b2f261c1007000000000000000000000000061926333f4c5966727f8c99a5b2b6a99d9083767985929f9b8e81746b7784919ea194877b7683909ca9afa295887c6f6e7b8794a1aeb5a99c8f827d7d7d7d7d7e84919eaab7ac9f92867e7d7d7d7d7c6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050707090b070d10131417212a343c464f59606a6f7b8490959da5aeb4bcbfbab0aaa29f96918b858b91969ea1a9afb5bdc3bcb4aea69e9691857d716c625a50483e352c231d181918161413120f0b0600000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c58606c78839098a3aebabdb9afa79e9184796d606b7885929eabb8c5baada093877a707d8a939ea9b0babeb2a89e938a7d70685e52473e31281e10070000000000000005111e2a36414c565e615e5655534e5f6c7985929facb8c5baada094877a6d6154473a2e2114121c28343f4a54606a727f8c949ea8b2bdbcb4aeaca9abb0b8c2c6bdb3a9a0968f82756c62574d42362a1f150b01000000000000000000000000000000000005101a232c33383c3d3d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c706d6c6e7b8897a2adbab7aa9e9184776b6974808d98948f87817b736d676a7784909daab7bdb0a4978a7d71646d727d85909592867c6f675d514b4740382e24190e0200000000000000000000000b1825323e4b5865717e8b98a4b1b7aa9e9184777985929f9b8e81746b7784919ea194877b7683909ca9afa295887c6f6e7b8794a1aeb7aa9e948f8a8a8a8a8a8a9196a0acb8aea398928a8a8a8a8a8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1215151f29333c464e58606b6f7c859196a0a7afbabfbcb4aea69f98928c847e797e848b92979fa4abb1bbc0bfbab0a8a09792867e716c625a50473e352b21170d0b0908060503000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c5f5b666e7c86929fa7b1b2aca59e98928b7e71656b7885929eabb8c5baada093877a75828c92989fa6aeb3aca1968e81746c61564c41352c1f160c00000000000000000714202d3946525e686e6866625f585f6c7985929facb8c5baada094877a6d6154473a2e211419222b3844505c666f7c87929fa6b0babfb4aaa39f9c9fa6b0b8c2c5bbb2a89e948b7e71695e52463e31271d120700000000000000000000000000000000000b16212c353e44484a474a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f62606a7885929fabb8b8ab9e9285786b616e7a869089827c746e68605d6a7784909daab7bdb0a4978a7d7164626b707b838e8b7f726a5f555a58524a40362a1f130700000000000000000000000b1724313e4a5764717d8a97a4b0b8ab9e9185787985929f9b8e81746f7784919ea194877b7683909ca9afa295887c6f6e7b8794a1aebbb0a69e9c9797979797979ea0a8b2bdb4aaa39f979797978d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b1f212227313b454e58606a6f7d869297a0a8b1b9c1bab2aaa29f948f867f79716d71797f858d9399a0a7afb5bdc1bab2a9a29892887e716c61594f473d33291f150b0100000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c5f545f6a737f8c95a0aca8a09e938e857f786c606b7885929eabb8c5baada093877a6d787f8690949fa2aaa49a91847a6d605a50443a30231a0d0400000000000000000814212e3b4754616e7a77736f6a66616c7985929facb8c5baada094877a6d6154473a2e2114202a36424d57606d78839099a3afb8c2baaea3989290949fa6b0b8c2c3bab0a69f92857b6e615a5043392f24180c0200000000000000000000000000000004101c28333e474f555754525763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f62586a7783909daab6b8ac9f9285796c68687380837d756f6a686868686a7784909daab7bdb0a4978a7d71686868696e798182756d68686866635c52473b2f23170a00000000000000000000000a1623303d495663707c8996a3afb8ab9f9285787985929f9b8f817c7b7c84919ea194877b7683909ca9afa295887c6f6e7b8794a1aebab8b0aaa9a4a4a4a4a4a4aaacb2bac3bcb4aeaca4a4a4998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f2f39434d575f6a6f7c869298a1a9b2bac0b8b0a8a098928b827b736d6760666d727a808790959fa4abb2bac2bbb3aaa39a92877e716b61594f453b31271d120700000000000000000000000000000000000000000000000000010b1825313e4b5864717e8b97a4b1beb9ac9f9286796c5f4e58606d7883909da39f969189817b726c665b6b7885929eabb8c5baada093877a6d6d727b828b92989e9f93887d70685d52483e32281e1108000000000000000004111d2935414b5569768284807c77736e697985929facb8c5baada094877a6d6154473a2e211b27323a46525e69727f8b95a0abb5c0b9aea49f9286838f949fa6b0b9c3c1baada2978f82756c61554b4035291e13080000000000000000000000000000000714202c38444f596163605d5663707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f625c6976838f9ca9b6b8ac9f9285797275757579777575757575757575757784909daab7bdb0a4978a7e7575757575757575797575757575736e63584b3f3226190d00000000000000000000000916222f3c4955626f7c8895a2afb9ac9f9386797985929f9e938f8888889196a1a194877b7683909ca9afa295887c6f6e7b8794a1aebac2bbb7b5b0b0b0b0b0b0b7b8bdc3ccc6bfbab8b0b0a6998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222a31373a3c43404b555e696f7c859298a2aab3bbc0b7afa69e9691867f776e69605d555c60686d747c838d9399a1a8b1b9c1bcb4aca39992877d706b60574d43392f24180c06000000000000000000000000000000000000000105090b070d111825313e4b5864717e8b97a4b1beb9ac9f9286796c5f53505c666f7d899399928d847d756e68605b5f6b7885929eabb8c5baada093877a6d60696e777e858f94958d80736b60564c443e352c21170b00000000000000000613202c3945515d677884918d88847f7b777985929facb8c5baada094877a6d6154473a2e231c2b37434e58616e7b86929fa7b1bdbcb1a79d928a7e79828f949fa7b1bcc5beb3a99e948b7e71675d51453a3025190d0200000000000000000000000000000916232f3c4855616b706d685d63707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f625c6976828f9ca9b5b8ab9e9285787f82828282828282828282828282828286929fabb8c3b6a99d908382828282828282828282828282828073665a4d4033271a0d00000000000000000000000815222f3b4855626e7b8895a1aebbafa49986797985929fa59e9b9595959ea1a8a194877b7683909ca9afa295887c6f6e7b8794a1aebaccc7c3c2bdbdbdbdbdbdc4c5c8ced5d0cbc7c5bdb3a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c4347485050515c676e7b849197a1aab3bcc0b6aea59d948f847c726c655f57514b51565d606a6f78808791969fa7afb7c1beb5aba39992867d70695e554b40352922170c000000000000000000000000000000000000060c11151718181d2025313e4b5864717e8b97a4b1beb9ac9f9286796c5f534a54606b75818e8f868079706b615e565b5f6b7885929eabb8c5baada093877a6d605f656c727b828a9083796d605957554f473e33281c1004000000000000000714212d3a4754606d7a87969995918c88837f86929facb8c5baada094877a6d6154473a342e2b2e3b4754606a75828e98a2aeb9bfb4aa9f958d80736d79828f95a0aab3bec5bbb0a69e9184796d60564c4135291e1308000000000000000000000000000713202c38444f5963707d7a6d6663707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160902020204111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110402020202020202020000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f625c6976838f9ca9b6b7aa9e918477828e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a2aebac4b8ab9f95908e8e8e8e8e8e8e8e8e8e8e8e8e8e83776a5d5044372a1d1104000000000000000000000815212e3b4854616e7b8794a1aec0b5a093877a7985929facaaa8a2a2a2abadb2a194877b7683909ca9afa295887c6f6e7b8794a1aebac1bbb7b5b0b0b0b0b0b0b7b8bdc3ccc6bfbab8b0b0a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e53555d5d5b606d79839096a1a9b3bcc5bcaea49c928e827a6f6a605b535d5d5d5d5d5d5860666d737d8490959ea5afbdc7bdb5aba39892857b6e675d51453e33281d1105000000000000000000000000000000000911171d21242524292c2d313e4b5864717e8b97a4b1beb9ac9f9286796c5f5342535d616e7b86827c736d676868686868686b7885929eabb8c5baada093877a6d68686868696e757e847c6e6768686361594f44382c201407000000000000000916232f3c4956626f7c8995a7a09d9995908c9298a3aebac7baada094877a6d615447443f383738444f59626f7c89939eaab4bfbaaea3989083786d676d79839198a2acb6c0c1b9ada1968c7f73685e52463a3025190d010000000000000000000000010b16222f3b4854606b778382786c63707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160f0f0f0f0f111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110f0f0f0f0f0f0f0f0f0d0c0a0602000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f62546a7783909daab6b6a99c8f8376828f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa2aab3bec7bcb1a79f9d9b9b9b9b9b9b9b9b9b9b9b9b9b9083776a5d5044372a1d1104000000000000000000000714212e3a4754616d7a8794a0adbaada094877a7985929facb5b5aeaeaeb5b5aea194877b7683909ca9afa295887c6f6e7b8794a1aebab8b0aaa8a3a3a3a3a3a3aaacb2bac3bcb4aeaca3a3a3998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f626a6a6a6d74818e95a0a9b2bbc5bfb4aa9c928d80786d686a6a6a6a6a6a6a6a6a6a6a6a6a6a6b707a838e939eabb5c0c6bdb4aaa1979083796d605a5045392d21140800000000000000000000000000000009121b22292d30322f35393a3c3e4b5864717e8b97a4b1beb9ac9f9286796c5f534d59656f75757b7675757575757575757575757885929eabb8c5baada093877a757575757575757575797575757575706b6155483c2f23160a000000000000000b1825313e4b5864717e8b97a4acaaa7a09d989fa3aab4bfcbbaada094877a6d615453504a47433c4854606b76828f9ca5afbcbcb1a79f92867b6e665d676e7b86929aa4afbbc4bdb2a99f92857a6d61564c41362a1d1307000000000000000000000007121d2a36424d5763707d898c7f736b707d8a96a3b0bdc8bcafa295897c6f6256493c2f231c1c1c1c1c1c1c1e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d1c1c1c1c1c1c1c1c1c1c191916120d070000000000121f2b3845525e6b7885919eabb8bbafa295887c6f625c667884919eabb7b4a79b8e8175828f9ba8a8a8a8a8a8a8a8a8a8a8a8a8abaeb3bcc5cdc2b9b1aba9a8a8a8a8a8a8a8a8a8a8a8a89d9083776a5d5044372a1d1104000000000000000000000714202d3a4753606d7a8693a0b5c0ada194877a7985929fa8a8a8a8a8a8a8a8a8a194877b7683909ca9afa295887c6f6e7b8794a1aebbb0a69e9c9696969696969da0a8b2bdb4aaa39f969696968d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c15212e3a47535f6a6f767676767f8b939da7b1bbc4c7baaea3988d8076767676767676767676767676767676767676767679828e99a4afbbc7c6bcb3a9a0958e81756c6155493d302317100b0600000000000000000000000006111b242d34393d3e41414547494b4d5864717e8b97a4b1beb9ac9f9286796c5f534e5b68758182828282828282828282828282828187929facb9c5c2b5a89b8f828282828282828282828282828282827d7063574a3d3024170a000000000000000d1a2733404d5a6673808d99a6b3b7b1abaaa5acaeb4bcc6d0baada094877a6d6663605c54534e464f5963707d89949fabb7c1b8aca0958c7f726a5f555f69707e88939fa9b3bec4baaea2988d8073685e52463a2f24180d00000000000000000000000c18232f3a46525e6975828f93877d70707d8a96a3b0bdc8bcafa295897c6f6256493c2f2828282828282828282b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a28282828282828282828282625231e19120a01000000121f2b3845525e6b7885919eabb8bbafa295887c6f62606d7986939facb9b4aa988b7f75828f9ba8b5b5b5b5b5b5b5b5b5b5b5b5b8babec5ced4cbc2bcb8b6b5b5b5b5b5b5b5b5b5b5b5aa9d9083776a5d5044372a1d1104000000000000000000000713202d3a4653606d798699a4afbbaea194877b7985929b9b9b9b9b9b9b9b9b9b9b94877b7683909ca9afa295887c6f6e7b8794a1aeb7aa9e948f8a8a8a8a8a8a9196a0acb8aea398928a8a8a8a8a8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d242f3c4855626f7c8383838386929fa5afb9c3cdc5b9ac9f928683838383838383838383838383838383838383838383838387939facb9c6cfc5bbb1a79e938a7e7164574b3e31241f1c17110a02000000000000000000010c17222d363f45494b4d4b515456585a5864717e8b97a4b1beb9ac9f9286796c5f53535f6c79868e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9299a3aebac7c3b6aa9e938f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8c7f7265594c3f3226190c00000000000003101c28343f4a546875828f9ba8b5c2bcb8b6b2b8babfc6cecabdb1a4978a7e7974706d66625f584e54606b7683909ca6b0bbbbb0a69d9183786d60574e57616c74818e97a1adb9c2beb4aa9f92867a6d61554b4135291c110600000000000000000004101c2934404b55616e7b87929991857a707d8a96a3b0bdc8bcafa295897c6f6256493c35353535353535353535353744515e6a7784919daab7c4c3b6aa9d9083776a5d50443735353535353535353535353533322f2a231c130a000000121f2b3845525e6b7885919eabb8bbafa295887c6f62626f7b8899a4afbaaea298897c75828f9ba8b5c1c1c1c1c1c1c1c1c1c1c1c5c6cad0d7ddd4cdc7c4c3c1c1c1c1c1c1c1c1c1c1b6aa9d9083776a5d5044372a1d11040000000000000000000006121f2c3844505c667986939facb9aea194887b79858e8e8e8e8e8e8e8e8e8e8e8e8e877b7683909ca9afa295887c6f6e7b8794a1aeb5a89c8f827d7d7d7d7d7d84919daab7ac9f92867d7d7d7d7d7c6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f353c4956636f7c899090909299a3aeb7c1cbd3c7baaea398929090909090909090909090909090909090909090909090909399a4afbbc7d4cdc3b9afa5988c7f7265594c3f362d2b28231c140c02000000000000000005111d29343f485056585a555d606264666164717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa3abb4bfcbc6bbb0a69e9b9b9b9b9b9b9b9b9b9b9b9b9b9b988c7f7265594c3f3226190c00000000000006121f2c3844505c667784919daab7c4c8c4c3bfc5c7cbd0d8cbbfb2a69a908a85817d79736f6a5f535763707d89949fabb8c2b7ab9f948a7d70665c5045505a606d7a85919ea6b0bcc5baaea2988c8073675d5145382e23170b00000000000000000006131f2c3845515c6773808d99a1978f82777d8a96a3b0bdc8bcafa295897c6f6256494242424242424242424242424244515e6a7784919daab7c4c3b6aa9d9083776a5d504442424242424242424242424242403e3b352e251c12070000121f2b3845525e6b7885919eabb8bbafa295887c6f6265717e8b98abb5b8ac9f92857975828f9ba8b5b9b9b9b9b9b9b9b9b9b9b9c3c5c8ced5d8cfc8c2bebdb9b9b9b9b9b9b9b9b9b9b6aa9d9083776a5d5044372a1d11040000000000000000000003101c28343f4a5f6c7986929facb9aea195887b748182828282828282828282828282817a7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174707070707683909da9b6ac9f928579707070706e6a5f53473a2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a40454956636f7c89969d9d9fa3abb4bfc9d2d7cbbfb4aaa39f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa4abb5c0ccd7d5cbbfb2a5988c7f7265594c3f433a38342e261e140a00000000000000000915212d3945505a62656769676d6f71736e69717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929fa8a8a8a8a8a8a8a8a8a8a8a8a8acaeb4bdc6d1ccc1b8b0aaa8a8a8a8a8a8a8a8a8a8a8a8a8a5988c7f7265594c3f3226190c0000000000000713202d3a4653606d7986929facb9c1c5c6cad0d2d3d6dce2cec2b7aca29a97928e8985807c6f62555f6975828f9ca6b0bcbbb0a69c8f82766b61544a4b4b525d68717e8a949fabb7c2bfb4aa9f92857a6d60544a3f34281c100300000000000000000714202d3a4753606d7985929ea99f948c7f7d8a96a3b0bdc8bcafa295897c6f62564f4f4f4f4f4f4f4f4f4f4f4f4f4f4f515e6a7784919daab7c4c3b6aa9d9083776a5d504f4f4f4f4f4f4f4f4f4f4f4f4f4f4c4b4640372e23190d0200121f2b3845525e6b7885919eabb8bbafa295887c6f626675818e9ba8b4b4aa9c8f827675828f9ba8acacacacacacacacacacacacb7b8bcc3cbcfc6beb7b2b0acacacacacacacacacacacaa9d9083776a5d5044372a1d110400000000000000000000000c17232e46525f6c7985929facb8aea195887b6e7475757575757575757575757575756d7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d81746763636a7683909da9b6ac9f9285796c636363625f574e42372b1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18242f3a434b51535d636f7c8996a2a9acaeb4bdc6d1d1d1d1c6bcb4aeaca9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9acafb5bdc7d2d1d1cbbfb2a5988c7f7265594c4a4f46443f3830261c1106000000000000000b1724303d4956626c717476787a7c7e807b6e717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb5b5b5b5b5b5b5b5b5b5b5b5b9babfc6cfcececac1bbb6b5b5b5b5b5b5b5b5b5b5b5b5b2a5988c7f7265594c3f3226190c0000000000000815222f3b4855626e7b8899a3acb1b5b8babec3c4c8cdd4ddd3c8beb4aca9a29f9b97918d82756856626e7b87939facb9c2b7ab9f94897c6f6259585858585856616c7683909ca7b1bcc6baada2978c7f72665c5044382b1f12060000000000000007131f2c38434f5964717e8b97a1ada69f92877f8c99a5b2bfc8bcafa295897c6f62575b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5e6a7784919daab7c4c3b6aa9d9083776a5d5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5957514940352a1e120600121f2b3845525e6b7885919eabb8bbafa295887c6f626d7985929eabb8aea3988b7e7175828f9ba0a0a0a0a0a0a0a0a0a0a0a0a0aaacb1b9c3c8beb4aca6a4a0a0a0a0a0a0a0a0a0a0a0a09d9083776a5d5044372a1d11040000000000000000000000061f2c3945525f6c7885929fabb8aea295887b6f686868686868686868686868686868697683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174675a5d6a7683909da9b6ac9f9285796c5f5a5a57554f473e33281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2935404b555d606a636f7c8996a2afb9babfc5c5c5c5c5c5c5c5bfbab9b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b9bbc0c5c5c5c5c5c5bfb2a5988c7f72655955575c53504a42382e23170d030000000000000b1825323e4b5865717e80828487898b8a7e71717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bfb2a5988c7f7265594c3f3226190c0000000000000a1724313d4a5764707d8a979da0a7a8abadb3b6b8bcc3cbd4e0d0c6bebbb3adaba9a19a8e817467636874808d9aa4afbbbeb3a99c8f82766a64646464646464646464707d89959fabb7c4beb3a99e9184786d6053463a2d201307000000000000000915222f3b4854606b7783909da9b3aea3999286929facb9c5c8bcafa295897c6f626368686868686868686868686868686868686a7784919daab7c4c3b6aa9d9083776a6868686868686868686868686868686866635b51463b2f23160a00121f2b3845525e6b7885919eabb8bbafa295887c6f63707d8a97a2adb9ac9f92867a6d75828f93939393939393939393939393939da0a7b1bcc2b7aca29a97939393939393939393939393939083776a5d5044372a1d11040000000000000000000005121f2c3845525f6b7885929eabb8aea295887b6f7474747474747474747474747474746f7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d81746767676a7683909da9b6ac9f9285796c6767676361594f44382c201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a45515d676d76706f7c8996a2afb8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b2a5988c7f72655a616469605c544a3f34281f150b010000000000101d2a3743505d6a76838d8f919695978d8073717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5cecac1bbb7b5b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b8b9bec4cdcbbfb2a5988c7f7265594c3f3226190c0000000000000c1926333f4c5966727f898d9095979b9fa2a9aaabb1b9c3ced7d8d0cdc5bebab8b3a69a8d80736b70717a86929facb6c0baada297897d717171717171717171717171717683909da9b6c3c5b9aca1968a7d7164574a3e3124170b00000000000005111e2a36414d56636f7c8995a0abbbb4aba3989298a3aebac7c8bcafa295897c6f6b707575757575757575757575757575757575757784919daab7c4c3b6aa9d9083777575757575757575757575757575757575736d63574b3e3225190c00121f2b3845525e6b7885919eabb8bbafa295887c6f6975828f9ba9b3b1a79b8e81756875818686868686868686868686868686869095a0acb8beb2a69a908a868686868686868686868686868683776a5d5044372a1d11040000000000000000000005121f2c3845525f6b7885929eabb8afa295887c7b8181818181818181818181818181817d7683909ca9afa295887c7a797b8794a1aeb4a79a8d8074747474747683909da9b6ac9f92857974747474706b6155483c2f23160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18242f3a434f59606d79837d747c8996a2ababababababababababababababababababababababababababababababababababababababababababababababababababa5988c7f7265636c71766d665c50443c31271d120700000000000e1b2734414e5a6774818d9a9ea1a89c8f8276717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5ccc1b8b0aaa8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7abadb3bbc4cfbfb2a5988c7f7265594c3f3226190c0000000000000713202d3a4653606d787d8083878b8e9297999d9fa7b1bcc6d0dbdfd7d0cac6bfb3a6998c8073707d7e818e98a2aebec5b8ab9f92857e7e7e7e7e7e7e7e7e7e7e7e7e7e7e818e9aa7b4c1c9bdb2a89b8e8275685b4f4235281c0f0200000000000714202d3946525e6875818e9ba7b1bcbdb4aaa39fa3aab4bfcbc8bcafa295897c6f707d8282828282828282828282828282828282828286929fabb8c5c5b8ab9f92858282828282828282828282828282828282827f7366594c403326190d00121f2b3845525e6b7885919eabb8bbafa295887c6f6e7b87929facb9aba095897c6f636c7879797979797979797979797979797883909daab7bdb0a4978a7e7979797979797979797979797979786d6053463a2d201307000000000000000000000005121f2c3845525f6b7885929eabb8afa295887c7b888e8e8e8e8e8e8e8e8e8e8e8e8e8b7e7683909ca9afa296897c837f7b8794a1aeb7aa9d908380808080808085919eabb8ac9f928780808080807d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2935414b55606b74808d8a807d89969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e988c7f72656d737e82786d60584e43392f23180d04000000000b1825323e4b5865717e8b98a4adab9e918578717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5c7bbb0a69e9c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea1a9b3bec9bfb2a5988c7f7265594c3f3226190c00000000000006121f2c3844515c666d7073777a7e8285898c90959faab4bfcad6d2cbc6c2c1bfb2a5988c7f7275828b8e939daab4bfc6baada297928b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8e939da9b5c2cec2b5a89c8f8275695c4f4236291c0f0300000000000814212e3b4754616e7b86929facb9c3c6bcb4aeacaeb4bcc6d1c8bcafa295897c6f727f8c8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a2aebac6c6baada297928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8276695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c6f74818e99a3afb1a79d9083776b60666c6d6d6d6d6d6d6d6d6d6d6d6d6d6d7784909daab7bdb0a4978a7d716d6d6d6d6d6d6d6d6d6d6d6d6d6d665c5044382b1f1207000000000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b88959a9a9a9a9a9a9a9a9a9a9a988b7e7683909ca9b6aa9d908390857c8895a2afb8aca095908d8d8d8d8d8d9197a1adb9aea399928d8d8d8d8d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313a45515d67707d8893928d84919292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292928c7f726d757f888c7f726a5f554b40342920160c010000000916232f3c4956626f7c8995a8b2ada197877a717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5c3b7aa9e948f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9197a1adb9c6bfb2a5988c7f7265594c3f3226190c00000000000004101c2834404a545c606366686e7175797c80838998a2aebac6d3c9c1bab6b4b8b1a4988b7e7175828f9a9da5afbcc5cabeb3a9a29f9797979797979797979797979797979a9da5afbac5cfc2b5a89c8f8275695c4f4236291c0f0300000000000c1825323f4b5865727e8b96a0abb4bfcbc6bfbab9babfc6cfd8c8bcafa295897c6f727f8c989b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa2aab4becacabeb3a9a29f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b8f8276695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c6f7c87939fabb5aca0958a7d7164595b60606060606062636363636363636a7784909daab7bdb0a4978a7d7164636363636362606060606061625f584e43392f24180c030000000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b8895a2a7a7a7a7a7a7a7a7a7a4988b7e7683909ca9b6aca09590958f828f9ca8b5bcb1a7a09d9a9a9a9a9a9a9ea1a9b3beb5aba39f9a9a9a998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a434f59606d7984919a9d979192878585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585857f7279818c9392877c6f675c51453d32281e13080000000714212d3a4754606d7a8796a1acb3a996897c717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5c2b5a89c8f82818181818181818181818181818181818181818185919eabb8c4bfb2a5988c7f7265594c3f3226190c000000000000000c18232e39424a515356565e6164666d6f737986929facb8c5cbc1b7afa9a7abada4978a7d7175828f9ca8afb7c0cecfc5bbb3adaba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a7a9afb7c0cbcfc2b5a89c8f8275695c4f4236291c0f0300000000000714202d3a4753606d7a849199a3aebac2cecbc7c5c7cbd1d8d5c8bcafa295897c6f727f8c98a5a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8abaeb4bcc5d0cfc5bbb3adaba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c78839099a4afb1a79d9183786c60535b6265625f606a6f70707070707070707784909daab7bdb0a4978a7d717070707070706f6a605860686d6f6a5f554b4035291e150a0000000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b8895a2aeb4b4b4b4b4b4b4b1a4988b7e7683909ca9b6b1a7a09d9e948f949eaab7c3b9b1acaaa7a7a7a7a7a7abadb3bbc4bdb5aeaca7a7a6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56606b74818e96a1a9a19e92867e7878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878727b838e939f999183796d60594f443a2f24190d0500000613202c3945515d677884919eabb1a4988b7e717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5bbafa295887c7474747474747474747474747474747474747476838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c0000000000000007121c273039404446494d5254545c60636c7985929facb8c5c6baafa59d9b9ea1a996897d7075828f9ca8b5c0c9d2d7cdc5bebab8b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b4b5bac0c9d2cfc2b5a89c8f8275695c4f4236291c0f0300000000000613202c3945515d676f7c86929fa6b0bcc6d0d3d2d3d7dce2d5c8bcafa295897c6f727f8c98a5b2b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b8babec5ced7d7cdc5bebab8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a99c8f8276695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c7f8c949fabb5ab9f958a7e71655b59626d726f6a626f7c7d7d7d7d7d7d7d7d7d84919eabb7bfb3a6998c807d7d7d7d7d7d7d7c6f62626a6f7a7c6f675d51453c30261c110600000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b8895a2abadb3bbc1bcb4aeaca4988b7e7683909ca9b6b9b1acaaa69e9c9ea6b0bbc7c3bcb8b7b3b3b3b3b3b3b8b9bec4cdc6bfbbb9b3b3a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d68707d89939da8b2ada399928b80786d686b6b6b6b6b6b6b6d787b7b7b7b7b7b7b7b7b7b796d6b6b6b6d797b7b7b7b7b7b7b7b7b7b786d6b6b6b6b6b6b6b6b6b6d727d8590959ea5a0958d80746b60564c41352922170b000004111d2935414b556975828f9ca8b3a6998d80737e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5bbafa295887c6f68686868686868686868686868686868686976838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c00000000000000000b151e272e34383a3d4146474a50535f6c7985929facb8c5c2b6a99d938e92979b95897c6f75828f9ca8b5c2cdcdcdcdcfcac6c5bebebebebebebebebebebebebebebec1c2c5cbcdcdcdc2b5a89c8f8275695c4f4236291c0f03000000000004111d2935404b555f6a727f8c949faab4bfcbd6dfe0e3e7e2d5c8bcafa295897c6f727f8c98a5b2bfc1c1c1c1c1c1c1c1c1c1c1c1c1c1c5c6cad0d7e0dfd7cfcac6c5c1c1c1c1c1c1c1c1c1c1c1c1c1c1b6a99c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bcafa295897c85929fa6b0b6aa9d9083786c6056616b727f7c716c76828989898989898989899196a1acb9c1b4a89c928c898989898989898276696d717c8484796d60584e42382e23170b02000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b88959d9ea1a9b3beb4aaa29f9d988b7e7683909ca9b6c3bcb8b7b0aaa8aab0b8c1cccbc5c2c0b9b9b9b9b9b9c3c4c8cdd4d0cac6c5b9b3a6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59606d7a84919ea5afbab5aba39f928d827a6e6960585f5f5f626f7c888888888888888888887c6f625f63707d888888888888888888887c6f625f5f5f5f575e666d747f8791979fa7afa79f93887d70685d52453e33281c100400010d18242f404d5a6773808d9aa6b3a89b8f82757e8b97a4b1beb9ac9f9286796c5f53505f6c7986929facb9c5bbafa295887c6f625b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5c6976838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c0000000000000000030c151c23282c2d3036393b3f44525f6c7985929facb8c5c1b4a79b8e81858a8e92887b6e75828f9ca8b5c0c0c0c0c0c0c0c0c0c0c3c4c7cdcacacacacdc8c4c3c0c0c0c0c0c0c0c0c0c0b5a89c8f8275695c4f4236291c0f030000000000010d18242f3a434e58606c77829098a3aebac3cdd9e4eff3e2d5c8bcafa295897c6f727f8c98a5b2bfc5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c7cbd1d9e1e1d9d1cbc7c5c5c5c5c5c5c5c5c5c5c5c5c5c5c2b6a99c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c828f9ca8b5b0a396897d70655b5e68707d87867e7376828f96969696969696969ea1a8b2bdc4b9aea49c999696969696968f82766d747e87918d80736a5f544a3f34281d140a000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b8890909197a1adb9aea2989290908b7e7683909ca9b6c3c8c4c1bbb7b5b7bbc1cac8c0b9b5b4acacacacacacb6b8bcc2cbc6bfbab8acaca6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4854606b74818e96a1adb7c0bdb5afa49d948f847b6f6a61595055626f7c889494949494949494897c6f625663707d899494949494949494887c6f625552515960696e78818b9299a1a9b1bbafa49a91847a6d605a5044392d2114080000071825323e4b5865717e8b98a4b1aa9d9084777e8b97a4b1beb9ac9f9286796c5c605c5f6c7986929facb9c5bbafa295887c6f625a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5c6976838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c000000000000000000030b12181c1f20252a2d2e3446525f6c7985929facb8c5baada094877a797d8286877b6e75828f9ca8b3b3b3b3b3b3b3b3b3b3b3b6b7bbc2cad4d4cbc3bcb8b6b3b3b3b3b3b3b3b3b3b3b3a89c8f8275695c4f4236291c0f0300000000000007131d28313c44505b656e7b86929fa7b1bcc8d4e0eaf4e2d5c8bcafa295897c6f727f8c98a5b2b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9bbc0c7cfd9d9cfc7c0bbb9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b6a99c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c7e8b98a7b1b1a4978a7e71645b666e7a8592928a8078828f9ca3a3a3a3a3a3a3abacb2bac4cabfb6aea8a6a3a3a3a3a39c8f827678808b929992877c6f665c50443c2f261b11060000000000000005121f2b3845525e6b7885919eabb8afa295887c7b83848485919eabb8ac9f92868384837e7683909ca9b6c3cfd1ccc7c3c2c3c7cccbc0b6aea9a7a0a0a0a0a0a0a9abb1b9c2bcb4aeaca0a0a0998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d89939fa2a9b0bbc0c0bbaea69f9691857c706b615a55626f7c8895a1a1a1a1a1a195897c6f625663707d8996a1a1a1a1a1a195887c6f6255515b626b6f7b838e939fa3abb3bbc0b6aca1968e81756c6155493c3023160a0000091623303c4956636f7c8996aab4ac9f9285797e8b97a4b1beb9ac9f9286796c666d665d6c7986929facb9c5bbafa295887c6f66666666666666666666666666666666666976838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c0000000000000000000000070e161e262e34383a3a46525f6c7985929facb8c5baada094877a6d70757a7e796d75828f9ca7a7a7a7a7a7a7a7a7a7a7a7a9abb0b8c2cdcdc3b9b1abaaa7a7a7a7a7a7a7a7a7a7a7a79c8f8275695c4f4236291c0f03000000000000010c161f27333f49535f69727f8c95a0acb8c1ced8e2ede2d5c8bcafa295897c6f727f8c98a5ababababababababababababababababacafb5bdc7d1d1c7bdb5afacabababababababababababababababa99c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c7b8795a0acb5a99c8f827669606c78828f979f928d8282909ca9b0b0b0b0b0b0b7b9bdc4ccd1c8bfb9b4b3b0b0b0b0a99c8f827a828d929fa3999083786d60574d41382d22170b0200000000000005121f2b3845525e6b7885919eabb8afa295887c6f7777777f8b98a5b2a99c8f82777777707683909ca9b6c3cfdcd7d3d0cfd0d3d1c5b9aea49d9a9393939393939d9fa7b1bcb4aaa295939393938d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d79818a92979fa6afb6bec0b8b0a8a09791867d716c625b626f7c8895a2aeaeaeaea295897c6f625663707d8996a3aeaeaeaea295887c6f62555d606d727d8590959da5aeb5bdc3bcb4aea49d938a7d7164574a3e3124170b00000814212e3b4754616e7a8798a2aeaea298877a7e8b97a4b1beb9ac9f928679696e796d686c7986929facb9c5bbafa295887c7373737373737373737373737373737373737376838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c00000000000000000000020c16202830383f44464646525f6c7985929facb8c5baada094877a6d64686d726d6775828f9a9a9a9a9a9a9a9a9a9a9a9a9a9c9fa6b0bbc7c8bcb1a79f9d9a9a9a9a9a9a9a9a9a9a9a9a9a8f8275695c4f4236291c0f0300000000000000040d17222d38414d57606d7883909da5afbcc6d0dbe7e2d5c8bcafa295897c6f727f8c989e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa3abb5c0cbcbc0b5aba39f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c7783909daab7ac9f93877b6e6b737f8c949fa49c948f90949fabb7bcbcbcbcbcc4c5c9cec7c7c7cac4c1bfbcbcbcb6aa9d9083838f949da4aba0958c7f72695f53493f33271f140900000000000005121f2b3845525e6b7885919eabb8afa295887c6f6a6a727f8b98a5b2a99c8f83766a6a697683909ca9b6c3cfdcdfe0dcdbdcdbcec2b5a99d928d86868686868690959fabb8aea2988a86868686868073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d747e8590949fa4acb3bcc2bab2a9a19892877e726d62626f7c8895a2afbbbbafa295897c6f625663707d8996a3b0bbbbafa295887c6f6260676d757f8791979fa7afbbbfc1bab2aaa29f928d827a6d6154473a2e21140700000714202d3946525e687885929fabb4aa95897c7e8b97a4b1beb9ac9f9286796e7b837a6d6c7986929facb9c5c1b4a79b8e81808080808080808080808080808080808080808084919eabb7c4bfb2a5988c7f7265594c3f3226190c0000000000000000000008131e28323a424a50535353535f6c7985929facb8c5baada094877a6d615d6065606975828d8d8d8d8d8d8d8d8d8d8d8d8d8d90949fabb7c4c4b8ab9f95908d8d8d8d8d8d8d8d8d8d8d8d8d8d8275695c4f4236291c0f03000000000000000006111b262f3c44505c666f7c89939eaab4bfcad6e0e2d5c8bcafa295897c6f727f8c9292929292929292929292929292929292929299a3afbbc7c7bbafa3999292929292929292929292929292929292928f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c73808d99a9b3afa4998c7f736f7d87929fa6aea69e9c9c9fa6b0bcc7c5bdbababababababababababababababcc5b8aca0959090959ea6aeb1a79f92867b6e655b50443b30251a0e02000000000005121f2b3845525e6b7885919eabb8afa295887c6f6969727f8b98a5b2a99c8f83766969697683909ca9b6c3cfd3d2d3d7dce3dacdc0b4a79a8d8078797979797883909da9b6ac9f92867879797979786c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c555d606c717b828d939aa2aab1b9c1bbb3aaa29992887f726d626f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f626a6f7a818c9299a1a9b1b9c0bfbaafa8a098928b80786d685d5246392d201307000005111e2a36414c566a7783909daab1a4978a7e7e8b97a4b1beb9ac9f9286797b848d8074697986929facb9c5c2b6a99d938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9196a1adb9c5bfb2a5988c7f7265594c3f3226190c000000000000000000010d1925303a444c545c60606060606c7985929facb8c5baada094877a6d616060605c65717e808080808080808080808080808082909ca9b6c3c3b6aa9d908380808080808080808080808080807e7165584b3e3225180b000000000000000000000a141d28343f4a54606b75818e98a2aebac4cfdae5d5c8bcafa295897c6f727f8585858585858585858585858585858585858587929facb9c5c5b9ac9f92878585858585858585858585858585858585858175685c4f4235291c0f00121f2b3845525e6b7885919eabb8bbafa295887c6f7c8997a1adb5ab9e9184777a849199a3afb8b0aaa8a9abb0b8bfbab9b0adadadadadadadadadadadadadadafb8bab1a7a09d9da0a7b0b8baaea3989082776c60574d42362a1e1105000000000005121f2b3845525e6b7885919eabb8afa295887c6f7576767f8b98a5b2a99c8f827676766e7683909ca9b6c3cbc7c5c7cbd1d8dacdc0b4a79a8d81746d6d6d6d7683909da9b6ac9f9285796d6d6d6d6c665b5044382b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a434c515a61696e7880889298a0a7afbbc0bcb4aba39a938b7f726d6f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f6c727c848f939fa3abb3bbc2bdb4aea59e9691867e746d665d564c4135291d11050000010d192530424f5b6875828e9ba8b2a5998c7f7e8b97a4b1beb9ac9f92877b849192867b6e7986929facb9c5c6baafa59d9b99999999999999999999999999999999999999999ea1a8b2bdc9bfb2a5988c7f7265594c3f3226190c00000000000000000005111d2a36414c565e666d6d6d6d6d6d7985929facb8c5baada094877a6d6d6d6d6d66626c7174747474747474747474747474747f8c98a5b2bfc0b3a6998d807474747474747474747474747474716c62564a3d3124180f06000000000000000000020b17232e38424f59616e7b86929fa8b2bdc9d5e0d5c8bcafa295897c6f6d727878787878787878787878787878787878787884919daab7c4c3b6aa9d9083787878787878787878787878787878787878756f65594d4134281b0e00121f2b3845525e6b7885919eabb8bbafa295887c6f7985929eabb8aca096897d818f96a1abb5c0bbb7b5b6b7bcbdb4aeaca3a1a1a1a1a1a1a1a1a1a1a1a1a1a1a2abaeb4b1acaaaaacb1b9c1bfb4aa9f948b7e72695e52463a2d201407000000000005121f2b3845525e6b7885919eabb8afa295887c7582838284919daab7ab9e92858283827a7683909ca9b6c3bfbbb9bbbfc6cfd8cdc0b4a79a8d81746760606a7683909da9b6ac9f9285796c606060605b544a3f332820150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313a414550575e666d737e8690959ea5afb6bebdb5aca49f918b7f726f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f777f8791969ea5afb5bdc1bab2aba39f938f847c716c605c544c443a3024190d01000000081a2733404d5a6673808d99a6b3a79a8e817e8b97a4b1beb9ac9f9387849196998f82757986929facb9c5cbc0b7afa9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6abadb2bac4cfbfb2a5988c7f7265594c3f3226190c0000000000000000000713202d3946525e68767979797979797886929facb8c5baada194877a79797979786d60626567676767676767676767676767727f8c98a5b2bfc0b3a6998d80736767676767676767676767676765625a50453a312a21180e0300000000000000000006111c26303d46525e69737f8c96a1adb9c4ced9d5c8bcafa295897c6f62656b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b7784919daab7c4c3b6aa9d9083776b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b68655d53493d3125190c00121f2b3845525e6b7885919eabb8bbafa295887c6f74818e9babb4b2a89e91848f939ea7afbbc0c7c3c2c3c4bfb4aba39f969494949494949494949494949494969fa2aab4b8b6b7b8bcc3c3bbb3aba49f92857b6e6154473b2e211408000000000005121f2b3845525e6b7885919eabb8afa295887c79858f8f9196a0acb8ada297928f8f877b7683909ca9b6bdb5aeacaeb5bdc6d1cdc0b4a79a8d8174675a5d6a7683909da9b6ac9f9285796c5f57575755544e463c32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f353e454d545c606c707b838e939fa4acb4bcbeb6afa39f93887e717c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c75818c9299a0a8afbbc0bfbaafa8a099928b817a6f6a615a504a423a32281e1308000000000b1825323e4b5865717e8b98a4b1a99c8f827e8b97a4b1bebbafa499939196a09e93897d7986929facb9c5cfc9c0bab6b4b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b7b9bdc4cccbbfb2a5988c7f7265594c3f3226190c0000000000000000000714212e3a4754616d7a868686868686868a98a2aebac6bbafa3978c878686868685786b5f585a5a5a5a5a5a5a5a5a5a5a5a65727f8c98a5b2bfc0b3a6998d8073665a5a5a5a5a5a5a5a5a5a5a5a5856504847433c332a201509000000000000000000000a151e2a36424d57606d7984919ea8b2bdc9d5d5c8bcafa295897c6f62585f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6a7784919daab7c4c3b6aa9d9083776a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c59534b42372c20150900121f2b3845525e6b7885919eabb8bbafa295887c6f717d8a99a3aeb9aca196918690959ea5afb5bdc5cecfc7baaea399928a8787878787878787878787878787899298a2aebac3c3c4c8c1b9b1a9a199938d837b6e6154483b2e211508000000000005121f2b3845525e6b7885919eabb8afa295887c7985929c9da0a8b2bdb3a9a29e9c94877b7683909ca9b6b5aba39fa3abb5bfcbcdc0b4a79a8d81746764646a7683909da9b6ac9f9285796c646464646260584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e2429333b424a505a61696e79818c939aa2aab3bbc0bbafa49a92857a7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c707d87929fa5afb9c1bcb4aea59e9691877f756d675f5850443f38302820160c02000000000a1623303d495663707c8996abb5aa9e91847e8b97a4b1bec0b5aba49f9ea0a8a69d90837886929facb9c2c2c2c2c2c2c1c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c2c2c2c2c2c2bfb2a5988c7f7265594c3f3226190c0000000000000000000714212e3a4754616d7a8793939393939395a2aab4bfcabfb3a89e97949393939285786b5f5d5d5d5d5d5d5d5d5d5d5d5d5d65727f8c98a5b2bfc0b3a6998d8073665d5d5d5d5d5d5d5d5d5d5d5d5d5d5d55534e463c31261a0f02000000000000000000030c1a25303b45515d67727e8b96a0acb9c3ced9c8bcafa295897c6f6256525252525252525252525252525252525e6a7784919daab7c4c3b6aa9d9083776a5d5252525252525252525252525252524f4d49423930251b0f0400121f2b3845525e6b7885919eabb8bbafa295887c6f6d7a86929facb9b2a89a8d80838e939fa3abb4bcc4ccc5b9ac9f92867d7a7a7a7a7a7a7a7a7a7a7a7a7a7a7d85929fabb8c5d1cbbfb7afa79f97918780786e695e53463a2d211407000000000005121f2b3845525e6b7885919eabb8afa295887c7985929faaacb2bac3bbb3adaba194877b7683909ca9b6aea3999299a3aebbc7cdc0b4a79a8d8174717171717683909da9b6ac9f92857971717171716f6a6054473b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c1319212930383f4450575f676d757f889298a1a9b2b6ada49f93887e717c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f727f8b939da7b1bbb1aaa29f938e847c726d605d554e463e342e261e160e0400000000000815212e3b4854616e7b8799a3afac9f92857e8b97a4b1bec7bdb5afacaaacb2aca0958b7e86929facb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b2a5988c7f7265594c3f3226190c0000000000000000000714212e3a4754616d7a8794a0a0a0a0a0acaeb4bcc6d0c5bab0a8a3a1a0a09e9285786b666a6a6a6a6a6a6a6a6a6a6a6a6a6a727f8c98a5b2bfc0b3a6998d80736a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a625f584e43372b1f12060000000000000000000009141f2935404b55606d7884919ea7b1bcc8d4c8bcafa295897c6f6256494545454545454545454545454545515e6a7784919daab7c4c3b6aa9d9083776a5d50454545454545454545454545454542413d3730271e14090000121f2b3845525e6b7885919eabb8bbafa295887c6f6776828f9ca9b5b6aa9d908379818b9299a2aab2bac3c7baaea39992857c6e6e6e6e6e6e6e6e6e6e6e6e7b849198a2aebac6c7c0bbada59e9590857d736d665e574d42362a1e1205000000000005121f2b3845525e6b7885919eabb8afa295887c7985929facb8bbc2cac4bdb9aea194877b7683909ca9b6ac9f9286929facb9c2cdc2b5a99c8f827e7e7e7e7e7e84919eaab7ac9f92867e7e7e7e7e7e7c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f171e262e343e454d555d606d737e869297a0a8aea49c928b7f726f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f6d74818e959fa9afa7a098928b817a6f6a625b514c433c3428231c150c040000000000000713202d3a4653606d7986929facaea2988c7f8c98a5b2bfd0c7c0bbb9b7b9b2a9a298918486929fa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a5988c7f7265594c3f3226190c0300000000000000000714212e3a4754616d7a8794a0acacacacb8babfc6ced7ccc2bab3afadacab9e9285786b717777777777777777777777777777777f8c98a5b2bfc0b3a6998d8077777777777777777777777777777777776e6a5f53473a2e21140800000000000000000000020c18242f3944505c66717e8a95a0acb8c3cec8bcafa295897c6f6256493c30383838383838383838383844515e6a7784919daab7c4c3b6aa9d9083776a5d5044383838383838383838383838383534312c251e150c020000121f2b3845525e6b7885919eabb8bbafa295887c6f65727f8b98a7b1b8aba095887b747f879298a1a8b2bac3bfb4aba19791847b6e67616161616161666d7a839096a1aab4bec6bdb5afa39c938e837b706b605c544d453b31251a0e02000000000005121f2b3845525e6b7885919eabb8afa295887c7985929fa9abb0b8c2bab2acaba194877b7683909ca9b5a89c8f828f9ca7b1bcc8c3b7ab9f948f8a8a8a8a8a8a9196a0acb9aea398928a8a8a8a8a8a8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c16202830363c434b515b636c717c859196a0a59d928c7f736d6f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f626d79839097a1a49f9590867e756d6760585145413a312a2217110a030000000000000006121f2b3844505c667884919eabb4aa9a8d808d9aa7b3c0cdd2ccc7c1b9b1a8a09792867d86929c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c988c7f7265594c3f32261e150c02000000000000000714212e3a4754616d7a8794a0adb9b9b9c5c6cad0d7e0d4ccc5bfbbbab8ab9e9285786b7783838383838383838383838383838384919eabb7c4c4b8ab9e918583838383838383838383838383838383837c6e6255483b2f221508000000000000000000000007121d28343f4a54606c7883909da7b1bcc8c9bcb0a396897d7063574d42362a2c2c2c2c2c2c2c2c2c3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372c2c2c2c2c2c2c2c2c2c2c2c292825201b140c03000000121f2b3845525e6b7885919eabb8bbafa295887c6f626e7b8895a0acb8b1a79a8d8073727d869196a0a8b1b9c3bdb3a9a1969083796d655b54545b606d78828f95a0a8b2bcc5bcb4aba39f918c81796e696059514a423b33291f140900000000000005121f2b3845525e6b7885919eabb8afa295887c798592999c9fa6b0bbb2a8a19e9994877b7683909ca9b0a4978a7d8a959fabb8c7c7bbb0a69f9c9797979797979ea0a8b2bdb4aaa39f97979797978d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e28323a4146474747515a616a6f7b8490959e938d80746d626f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f62676e7b8591999a938d837c716d605d554e4746443f382f261b1106000000000000000003101c28343f4a54697683909ca9b5a89b8e828e9ba8b5c1ced1c9c0b8b0a79f9691857d79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8c7f7265594c3f3730271e1409000000000000000714212e3a4754616d7a8794a0adbac6c6d2d3d6dbe2e9ded6d0cbd1c5b8ab9e9285786c798690909090909090909090909090909196a1adb9c5c6b9ada1979190909090909090909090909090909090887c6f6255493c2f2216090000000000000000000000010c17232e3844505b65707d8a95a0acb8c3cec1b5a89b8e8175695e5246392f23181f1f1f1f1f1f2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1f1f1f1f1f1f1f1f1f1f1f1c1b19150f090200000000121f2b3845525e6b7885919eabb8bbafa295887c6f62697784919daab7b8ab9e9285796d707c849196a0a7b1b9c3bbb2a9a0958f81776c605959626d74818e949fa7b1bac4bcb4aaa399928b7f756d675e574f444039302921170d0300000000000005121f2b3845525e6b7885919eabb8afa295887c79868d8d8f949fabb7aca196918d8d877b7683909ca9afa295887c83909dabb5c0cbc2b8b0aba9a4a4a4a4a4a4aaacb2bac3bcb4aeaca4a4a4a49a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444c5254545454545860696e7a8390938e81776c60626f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f625e696f7d8792918880796e6a625a5454545453504941382d22170b0000000000000000000b17232e424e5b6875818e9ba8b4a99d9083909da9b6c3d0c7bfb7afa69e9590847b6f75828282828282828282828282828282828282828282828282828282828282828282828282828282828282827e7164574a48423930251b0f040000000000000714212e3a4754616d7a8794a0adbac5c5c7cbd1d8e1e9e1d8d1cbc7c5b8ab9e9285786c7986939d9d9d9d9d9d9d9d9d9d9d9d9d9ea1a8b2bdc9c9beb3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d95887c6f6255493c2f22160900000000000000000000000006111c27333f4953606c7883909da8b2bdc8c5b9ac9f92867b6e61554b4034291c10121212121e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d121212121212121212120f0e0c0904000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f626673808d99a9b3b9ada1978a7d706a6f7b849095a0a7b1bac3bbb1a79e938c7f736b60606b727f8b929da6b0b9c3bcb4aaa29892877e736d605c554d453d342e271e170f050000000000000005121f2b3845525e6b7885919eabb8afa295887c73808080828f9ca9b3ab9e91848080807a7683909ca9afa295887c7f8b99a3afbbc7cac2bbb7b5b1b1b1b1b1b1b7b9bdc3ccc6bfbab9b1b1b1a79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424c565e6161616161616161686e7a838d81786d6561626f7c8895a2afbbbcafa295897c6f626163707d8996a3b0bcbbafa295887c6f6261616b717e8b847d746d6761616161616161605b53493f33271b0f030000000000000000061a2734404d5a6773808d9aa6b3ab9e9184919eabb7c4cfbfb5ada59d948f837a6e696f75767676767676767676767676767676767676767676767676767676767676767676767676767676767676716c615b59534b42372c2015090000000000000714212e3a4754616d7a8794a0adb9b9b9babfc6cfd7e0d8cfc6bfbab9b8ab9e9285786c7986939faaaaaaaaaaaaaaaaaaaaaaaaabadb2bac4cfcfc4bbb3adabaaaaaaaaaaaaaaaaaaaaaaaaaaaaa295887c6f6255493c2f221609000000000000000000000000000b17222d3844505b65717e8a96a0acb9c4c7bbafa3998d8073675c5145382c1f160a0005111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110505050505050505050202000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f66666f7c8997a1adb9b3a99b8f827568696e7a839095a0a8b2bac3b9afa59f92877c6f68686f7d87929fa5afb8c2bdb4aaa29892867e716c635b514b433b3328231c150c05000000000000000005121f2b3845525e6b7885919eabb8afa295887c6f7373737f8b98a5a7a79c8f827673736d7683909ca9afa295887c7a86929facb9c5d2ccc7c3c2bdbdbdbdbdbdc4c5c8ced5d1cbc7c5bdbdb4a79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545e686d6d6d6d6d6d6d6d6d6d6d7a80796d6d6d6d6d6f7c8895a2afbbbcafa295897c6f6d6d6d707d8996a3b0bcbbafa295887c6f6d6d6d6d6d717e7a706d6d6d6d6d6d6d6d6d6d6c655b5044372b1f120500000000000000000c1926323f4c5965727f8c98a5b2ac9f9286929facb9c5c7bdada39c938e82796e686a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a68655d53483d3125190c0000000000000714212e3a4754616d7a8794a0acacacacaeb4bcc6ced7d1c6bcb4aeacacab9e9285786c7986939facb6b6b6b6b6b6b6b6b6b6b6b7b9bdc4ccd6d6cdc4beb9b8b6b6b6b6b6b6b6b6b6b6b6b6b6afa295887c6f6255493c2f2216090000000000000000000000000006111b27333f4953606d7884919ea9b2bdc9c0b5ab9e9285796d6053473d32271b0f0104111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c737373737985929eabb8b9ac9f92867a6d61686e7a839096a0a8b2bbc1bbafa39991847a6d6d7a849199a3afb7c0bdb4aba39892867d706c625a5145403931292118120b0300000000000000000005121f2b3845525e6b7885919eabb8afa295887c6f6666727f8b989a9a9a9a8f83766966697683909ca9afa295887c76828f9ca9b6c2cec8c0bab5b4b2b2b2b2b6b7bbc2cad4ccc4bdb9b7b2b2a79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c66767a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7d8996a3afbcbcb0a396897d7a7a7a7a7a7e8a97a3b0bdbcafa396897d7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776c605346392d20130600000000000000000b1824313e4b5764717e8a97a4b1afa3999299a3afbbc7c0b5ab9c918c81786d7076777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777756f65594d4134281b0e0200000000000714212e3a4754616d7a87949f9f9f9f9fa3aab4bcc6d0cbbfb4aaa39f9f9f9e9285786c7986939facb9c3c3c3c3c3c3c3c3c3c3c4c5c9cfd6dedfd6cfc9c6c4c3c3c3c3c3c3c3c3c3c3c3c3bbafa295887c6f6255493c2f22160900000000000000000000000000000b17222d3844505c66717e8b96a1adb9c6c7b9ada1978b7e7164594f43382c1e130800111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c1b4a79a8e81808080808084919eaab7bbafa3998b7e71655e686d7a849196a1a9b3bdc0b5aba1968e817475828f96a1abb5c0c0b5aba39992867d706b615a504840342f271f170f07000000000000000000000005121f2b3845525e6b7885919eabb8afa295887c6f6265727f8b8d8d8d8d8d8d82766961697683909ca9afa295887c727f8b98a7b1bcc8c0b6aea9a7a5a5a5a5a9abb0b8c2ccc4bab2acaaa5a5a59a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798687878787878787878787878787878787878787898f99a5b1bdbeb1a5998f8987878787878a909aa6b2bebdb1a5998f8987878787878787878787878787878787878787877a6d6054473a2d2114070000000000000000091623303c4956636f7c8996a2a4aba39f9fa2a9b3bec7bbafa3998c7f746d6676828484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484838175685b4f4235281c0f0200000000000714212e3a4754616d7a8792929292929298a2aab4bfcac7baaea398929292929285786c7986939facb9bbbbbbbbbbbbbbbbbbbbc0c1c5cad2dadbd2cbc6c2c1bbbbbbbbbbbbbbbbbbbbbbbbbbafa295887c6f6255493c2f221609000000000000000000000000000006111b28343f4a54606d7984919eaab4bfc9beb3a99d9083776b6054483a2f24190d01111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4b6a99d938e8c8c8c8c8c9196a0acb9c0b5ab988b7f7265565e686e7b849197a2abb5c0bdb2a89f93887c7f8b949ea9b2bdc1bbafa49992877d706b605950473f3629231d150d0500000000000000000000000005121f2b3845525e6b7885919eabb8afa295887c6f6e6e707d808080808080807f726e6e6e7683909ca9afa295887c6f7b8795a0acb8c5baaea49d9a989898989c9fa6b0bbc7bdb2a8a09e989898988d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939494949494949494949494949494949494949699a1abb6c1c2b6aba199969494949494979aa2acb6c2c1b6aba1999694949494949494949494949494949494949493877a6d6054473a2d21140700000000000000000815222f3b4855626e7b889599989699929297a2adbac5b9ac9f9286796d606b788590909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909084776a5d5144372a1e110400000000000714212e3a4754616d7a868686868686868998a2aebac6c5b9ac9f92868686868684786c7986939facafafafafafafafafafafafb3b5b9c0c8d2d2c9c0bab6b4afafafafafafafafafafafafafafa295887c6f6255493c2f2216090000000000000000000000000000000b17232e3844515c66727f8c98a2aebac7c5b8aca095897c6f63564c4135291d1104111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4baafa59d9a99999999999ea0a8b2bdbeb2a5988b7f726558565e696e7b859299a3afbbc1bbafa49a918486929fa6b0bbc1b8aea49f93877e716b61594f473e352d2418120b030000000000000000000000000005121f2b3845525e6b7885919eabb8b0a3968a7d7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b83909da9afa295887c6f7784909daab7c3b5a99d928d8c8c8c8c8f949fabb7c3b9aca096918c8c8c8c8c8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a3a5abb3bdc7c7bdb3aba5a3a0a0a0a0a0a3a6acb4bdc8c7bdb3aba5a3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a093877a6d6054473a2d21140700000000000000000814212e3b4754616e7a878e8c8b89878685929fabb8c5b9ac9f9286796c5b6b7885919d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9084776a5d5144372a1e110400000000000713202d3946525e686d7979797979797986929facb8c5baada094877a7979797978726c7986939fa2a2a2a2a2a2a2a2a2a2a2a2a6a9aeb6c0cacbc0b7afa9a7a2a2a2a2a2a2a2a2a2a2a2a2a2a2a295887c6f6255493c2f22160900000000000000000000000000000006111c2834404a54606d7a86929fabb5c0c8bcb1a79b8e8175685d5245392c201509111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4c0b7afa9a7a6a6a6a6a6aaacb2bac4beb2a5988b7f7265584d575f69707d87929fa5afbac0b6aca096919298a2aeb8c1bab0a69d928c7f726c61594f473d352c231b120701000000000000000000000000000005121f2b3845525e6b7885919eabb8b1a59a8f8a87878787878787878787878787878787878790959fabafa295887c6f73808d99aab4bfb4a79a8d807f7f7f7f828f9ca9b6c2b7aa9e91847f7f7f7f7f7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acadadadadadadadadadadadadadadadadafb1b6bdc5cecfc5bdb6b1b0adadadadadb0b2b6bdc6cfcec5bdb6b1afadadadadadadadadadadadadadadadadada093877a6d6054473a2d21140700000000000000000713202d3a4653606d788281807e7c7b797e8b97a4b1beb9ac9f9286796c5f6b7885919eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d9084776a5d5144372a1e1104000000000005111d2935414c565e616c6c6c6c6c6c7985929facb8c5baada094877a6d6c6c6c6b686c798693959595959595959595959595959a9da4aeb9c5c6baafa59d9b95959595959595959595959595959595887c6f6255493c2f221609000000000000000000000000000000000c18232e3945525d6874818d99a4afbbc7c3b8ac9f92867a6d6054473c31261a0e111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4c9c0bab6b4b3b3b3b3b3b7b9bdc4ccbeb2a5988b7f7265584c4d57606b727f8b939da8b2bdbeb2a8a09d9fa2aab4bfbcb2a89e948d80746d625a50473e352b231a11090000000000000000000000000000000005121f2b3845525e6b7885919eabb8b6aba19a969494949494949494949494949494949494949d9fa7b1afa295887c6f6f7c8998a2aebab2a5988c7f72727275828f9ca8b5c0b4a79a8d807472727272706b6054483c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9babababababababababababababababcbdc1c7c8c8c8c8c7c2bebcbabababababdbec2c8cecdc8c8c7c1bdbcbabababababababababababababababaada093877a6d6054473a2d211407000000000000000006121f2c3844505c666d76757371706e717e8b97a4b1beb9ac9f9286796c5f6b7885919eabb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7aa9d9084776a5d5144372a1e11040000000000010d1925303a444c52545f5f5f5f5f6c7985929facb8c5baada094877a6d615f5f5e606c798688888888888888888888888888888d929da9b5c1c2b6a99d938e88888888888888888888888888888888887c6f6255493c2f2216090000000000000000000000000000000007121c2935414c56616e7b87939facb9c4c7baaea3988b7e7265574d42372b1c11061e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4c6cbc6c2c1bfbfbfbfbfc4c5c9cec6beb2a5988b7f7265584c454f59626d74818e96a0abb5c0bab2acaaacaeb4bcbfb4aaa0968f82786c605b51483e352c231a1108000000000000000000000000000000000005121f2b3845525e6b7885919eabb8bdb3aba5a3a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a9abb1b9afa295887c6f6d7986929facb8b5a89c8f8275666d7985929fabb8bdb2a8978a7e71656565656360594f44382c201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbec0c3c9c7c7c7c7c7cacbcbc5c2c1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaada093877a6d6054473a2d211407000000000000000003101c28343f4a545c60696866656364717e8b97a4b1beb9ac9f9286796c5f6b7885919eabb8c1c1c1c1c1c1c1c1c1c1c1c1c1c3c3c3c3c3c3c3c3c3c3c3c3c3c3c1c1c1c1c1c1c1c1c1c1c1c1c1b7aa9d9084776a5d5144372a1e110400000000000008131e28323a414647535353535f6c7985929facb8c5baada094877a6d615453525f6c767c7c7c7c7c7c7c7c7c7c7c7c7c7c7c808d9aa6b3c0c1b4a79b8e817c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796d6053473a2d20140700000000000000000000000000000000000d1924303a46535f6975828f9ca8b2bdc9bfb4aa9d908376695f5347382d22170b1e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b2a5988b7f7265584c3f47515b606d79849199a3afbbc3bdb8b7b8babfc5baaea39891847a6d665b50493f362c231a110800000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4bdb6b1b0aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb6b8bcbbafa295887c6f6676838f9ca9b6b8ab9f9285796c6f7c8997a2adbab9aca096877b6e6159595956544f473d33271c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb2b3b8bfc7d1d3d3d3d2c9c0bab5b4aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeada093877a6d6054473a2d2114070000000000000000000c17232e38424a50535d5b59585864717e8b97a4b1beb9ac9f9286796c5f6b7885919eabb4b4b4b4b4b4b4b4b4b4b4b4b4b4b7b9bdc4ccd0d0d0d0cbc3bcb8b6b4b4b4b4b4b4b4b4b4b4b4b4b4b4aa9d9084776a5d5144372a1e1104000000000000020c1620283035393a464646525f6c7985929facb8c5baada094877a6d61544747535f6a6f6f6f6f6f6f6f6f6f6f6f6f6f6f727f8c98a5b2bfc0b3a6998d80736f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d675d5145382c1f1306000000000000000000000000000000000008131e2b37424d5764707d8a96a1adb9c7c6b8ab9f95887b6e62544a3f33281c0f1e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabadadadadadadadadadadadadadadadadadadada5988b7f7265584c3f3f45515d676f7c87929fa8b2bdc8c5c4c5c6c5bbb0a69f92867c6f685d544a3f372d241a11080000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8bebebebebdbababababababababababababababababababebebebbafa295887c6f66737f8c99abb5baada297887c6f727f8c99a9b3beb7aa9e918477695e534c4c4a48443d352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a5a7adb5bfc9d4e0d6cbc0b7afa9a7a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a093877a6d6054473a2d21140700000000000000000006111c2630383f4446504e4d4b5864717e8b97a4b1beb9ac9f9286796c5f6b7885919ea8a8a8a8a8a8a8a8a8a8a8a8a8a8a8abacb2bac4cedad9cdc3b9b1acaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a89d9084776a5d5144372a1e110400000000000000040e161e25292d2e393946525f6c7985929facb8c5baada094877a6d615447434e585f6262626262626262626262626265727f8c98a5b2bfc0b3a6998d807366626262626262626262626262626262605d554b4035291d10040000000000000000000000000000000000020e1a26313c4653606d7884919eabb5c0c5bcb1a7998d8073665b5044382b1f121e2b3744515e6a7784919daab7c3c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919ea0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0988b7f7265584c3f35404b55606a73808c96a0acb8c1cfd0d2cabeb3a99e948b7e726a5f564c42382d251b1208000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2afa295887c6f63707c8999a3aebbb3a9988b7f7276838f9ca9b6bdb6ac9b8e817468574d423f3d3c38332b23190f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939595959595959595959595959595959595959595959595959595989ba3adb8c3cfdcd1c5baafa59d9a95959595959595959595959595959595959595959595959593877a6d6054473a2d211407000000000000000000000a151e262e34383a4342404b5864717e8b97a4b1beb9ac9f9286796c5f6b7885919b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea1a8b2bdc9d5d4c8bcb1a7a09d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9084776a5d5144372a1e11040000000000000000040c13191d20212c3946525f6c7985929facb8c2baada094877a6d6154473c464e535555555555555555555555555965727f8c98a5b2bfc0b3a6998d8073665a555555555555555555555555555553514b43392f24180c0000000000000000000000000000000000000009141f2b3844505c66737f8c99a3afbbb9b4aeab9e9184786c605346392d20131e2b3744515e6a7784919daab6b6b6b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b78859193939393939393939393939393939393939393939393938b7f7265584c3f2f3a434e58606d7984919ea5afbdc6d1d0c7baada2978f82756d62584e443a2f261c130900000000000000000000000000000000000000000005121f2b3845525e6b7885919ea5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a295887c6f626d7986929facb9b4a89b8e81757a86929faaacb2afa49a8a7e7164574b3e31302f2c27211911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79868888888888888888888888888888888888888888888888888888888b919ba7b3c0ccd9cec2b5a99d938e88888888888888888888888888888888888888888888888888877a6d6054473a2d21140700000000000000000000030c151c23282c2d36353e4b5864717e8b97a4b1beb9ac9f9286796c5f6b78858e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9196a1acb9c5d2d1c4b8aca095908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776a5d5144372a1e110400000000000000000002080d11131f2c3946525f6c7985929facb5b5b5ada094877a6d6154473a3c434749494949494949494949494c5965727f8c98a5b2babab3a6998d8073665a4d494949494949494949494949494745403931271d12070000000000000000000000000000000000000003101c28343f4a54616e7b86929facafacaaa29f9a96897d7063564a3d3023171e2b3744515e6a7784919daaaaaaaaaaaa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7884868686868686868686868686868686868686868686868686867f7265584c3f32313d45515c67707d89939eabb5bfbcbcbdb0a69f92857b6e615b51463c32281d140a0100000000000000000000000000000000000000000005121f2b3845525e6b788591989898989898989898989898989898989898989898989898989898989898989895887c6f62677784909daaaeacaa9d9184777d8a999b9ea0a8a59f93877a6d6154473a2e2322201c160f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c66767b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7f8b98a5b2becbd6cabeb3a99a8e807b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786c605346392d2013060000000000000000000000030a11171c1f202a313e4b5864717e8b97a4b1beb9ac9f9286796c5f677480818181818181818181818181818181818184919eabb7c4d1cabfb4aa9d908381818181818181818181818181818181818073665a4d4033271a0d0000000000000000000000000105131f2c3946525f6c7985929fa8a8a8a8a8a094877a6d6154473a32373b3c3c3c3c3c3c3c3c3c3c3f4c5965727f8c98a5aeaeaeaea6998d8073665a4d403c3c3c3c3c3c3c3c3c3c3c3c3a38352f271f150b0100000000000000000000000000000000000000000b17232e3846525e6875828f9ca9a49f9c98928e89847d7063574a3d3024171e2b3744515e6a7784919d9d9d9d9d9d9d9d9083776a5d5044372a1d1104000000000000000000000000000000000000000713202d3a4653606d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79786d6053463a2d2834404b55606b75818e99a3aeafafafb5ab9f948b7e71695e52483f342a20160b020000000000000000000000000000000000000000000005121f2b3845525e6b78848b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b887c6f626874818e9baaa29f9d9c92867a81898c8e919696989b908377685e5246392d201613100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545f6a6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e75818e9ba8b4c1ced1c6baada297897d706e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c665b5044382b1f120600000000000000000000000000060c10121825313e4b5864717e8b97a4b1beb9ac9f9286796c5f646e74757575757575757575757575757575757784919daab7c4ccc7baaea298897d7575757575757575757575757575757575736e63584b3f3226190c0000000000000000000000000006131f2c3946525f6c7985929c9c9c9c9c9c9c94877a6d6154473a2e2b2e2f2f2f2f2f2f2f2f2f323f4c5965727f8c98a1a1a1a1a1a1998d8073665a4d40332f2f2f2f2f2f2f2f2f2f2f2d2c29241d150d0300000000000000000000000000000000000000000006111c2a36414d5664717e8a979e9a938f8b85817c77706b6155483c2f23161e2b3744515e6a77849090909090909090909083776a5d5044372a1d11040000000000000000000000000000000000000006131f2c3845515c676d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d665c5044382b232e39434f59616e7b86929faaa3a3a3a3a4998f82766c61564d42362d22190e040000000000000000000000000000000000000000000000000b1825313e4b5864717e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7a6d6165727f8c97959892918f8d897c7a7d7f828487898c8e8c807366564c41362a1d11070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424e575f62626262626262626262626262626262626262626262626262626d7a86929facb8c2c3c5c5b8ab9f9285796d62626262626262626262626262626262626262626262626262605b544a3f33281c0f03000000000000000000000000000000030b1825313e4b5864717e8b97a4b1beb9ac9f9286796c5f5c64676868686868686868686868686868686e7b8795a0acb8bdbfc1b8ac9f9286796d6868686868686868686868686868686866635c52473b2f23170a0000000000000000000000000006131f2c3946525f6c79858f8f8f8f8f8f8f8f8f877a6d6154473a2e2121222222222222222226323f4c5965727f8c94949494949494948d8073665a4d40332722222222222222222222201f1d18120b0300000000000000000000000000000000000000000000000e1925303b4753606d798592918c87837e79746f6b6361594f44382c20141c2835424f5b687581838383838383838383838174685b4e4135281b0e020000000000000000000000000000000000000004101c2834404b555c6060606060606060606060606060606060606060606060606060605c544a3f34281d27303d46535f6974808d9896969696969693877c6f625a50443b30241b1007000000000000000000000000000000000000000000000000000a1724303d4956626c7172727272727272727272727272727272727272727272727272727272727272727272726d685e63707d898a8987858482817f7b6e707275777a7d7f81847c6f6255493c3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303c454e535555555555555555555555555555555555555555555555555764717e8a98a2aeb4b5b6b8b9b4aa9b8e8175665c55555555555555555555555555555555555555555555555553504a42382d22170b00000000000000000000000000000000000b1825313e4b5864717e8b97a4b1b2b2ac9f9286796c5f52585a5b5b5b5b5b5b5b5b5b5b5b5b5b5565727e8b98a7afb5b1b2b4b5a99c8f8276675c5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a58524a40352a1f130700000000000000000000000000020f1c2835424f5b687581828282828282828282827a6d6054473a2d2114161616161616161926323f4c5965727f878787878787878787878073665a4d4033271a1616161616161616161413100c070100000000000000000000000000000000000000000000000008141f2c3845515c6774818984807b76716d67636059554f473e33281c101b2834414d59656f7577777777777777777777746f65594d4034271a0e0100000000000000000000000000000000000000000c18232e39434b51535353535353535353535353535353535353535353535353535353504a42382e23171e2a36424d57616e7a86898989898989898980746a5f53483e32291f120900000000000000000000000000000000000000000000000000000815212d3945505a62646565656565656565656565656565656565656565656565656565656565656565656565615e56606d7a7f7d7c7a79777574726e69636668686d707275776f6a6054473b2e1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2a333c42474848484848484848484848484848484848484848484848535f6976828f9caaa5a7a8aaabadaea3988a7e7164544a484848484848484848484848484848484848484848484846443f382f261c110600000000000000000000000000000000000b1825313e4b5864717e8b97a4a5a5a5a59f9286796c5f534c4e4e4e4e4e4e4e4e4e4e4e4e4e515d6775828f9c9fa3aba4a6a7a9a8988b7f7265554b4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4b4740382e24190e0200000000000000000000000000020e1b2734414d59656f75757575757575757575756d675d5145392c20130909090909090914202d3a4753606d797b7b7b7b7b7b7b7b7b7b7a6d6054473a2d211409090909090909090907060400000000000000000000000000000000000000000000000000000004101c2934404b55626e7c7d78736e6964605d55544f48443e352c21170b1925313d48535d65686a6a6a6a6a6a6a6a6a6a68655d53483c3024180c00000000000000000000000000000000000000000007121d2730394045464747474747474747474747474747474747474747474747474746443f3830261c111a26313b46525e686f7c7c7c7c7c7c7c7c7c7a6d60584e43362d20170d00000000000000000000000000000000000000000000000000000005111d29343e4850565858585858585858585858585858585858585858585858585858585858585858585858585452525d686d72716f6d686a696765615f5759565d606365686b6260584e43372b1f0c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18212a31373a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b4855626e7b88949697999a9b9d9ea1a99f92867a6d6054473b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3938332d261d140a0000000000000000000000000000000000000b1825313e4b5864717e8b979898989898989286796c5f53464142424242424242424242424754606d7a86909192999697999a9c9d96887b6e6255484242424242424242424242424242403f3b352e261c12080000000000000000000000000000000c1825313d48535d656869696969696969696969605d554c4135291d110400000000000613202c3945515d676d6e6e6e6e6e6e6e6e6e6e6d675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3947535f6a6e706c66615f5753514b48433d38332c231a100515202c37424b53595b5d5d5d5d5d5d5d5d5d5d5b59534b41372c201408000000000000000000000000000000000000000000000b151e272e34383a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a38342e261e140a141f2a36414c565f6a6f70707070707070706d685d52463c32241b0e05000000000000000000000000000000000000000000000000000000000c17222d363e45494b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c47464c565d60656462615e565c5a5955534d4c4c525456595b5e55544e463c32271b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f33404c5966737f8888898a8c8d8f90929794968f8275675d5145392f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2b28221c140b020000000000000000000000000000000000000b1825313e4b5864717e8b8c8c8c8c8c8c8c8c87796c5f534639353535353535353535353b4855626e7c8183848687898a8c8e8f919184786a5f53473a3535353535353535353535353533322f2a241c140a000000000000000000000000000000000915202c37424b53595b5c5c5c5c5c5c5c5c5c5c54514c433a2f24190d01000000000004111d2935404b555d6061616161616161616161605d554c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e585f6263605b54534d4745403938322c28211a1108040f1b25303942484d4f505050505050505050504e4d4841392f251a0f0400000000000000000000000000000000000000000000030c151d23282c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b28231c140c020e1925303b444e585f626363636363636363605d564c41342a201209000000000000000000000000000000000000000000000000000000000006111b242d34393d3e3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a3a434c525459575654524c4f4e4c4846423f414547494c4f514947433c342b20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1e212222222222222222222222222222222222222222323e4b57636d73797b7c7e7f818283858688898a7e7164554b413529222222222222222222222222222222222222222222201f1c17110a02000000000000000000000000000000000000000915222f3c4855626f7c7f7f7f7f7f7f7f7f7f7f7265594c3f322828282828282828282e3a47535f6a6e757678797b7c7e7f81828485807467574e42372b2828282828282828282828282726231f19120a0200000000000000000000000000000000040f1b25303942484d4f4f4f4f4f4f4f4f4f4f4f4745413a31281e1308000000000000010d18242f3a434b51535454545454545454545454514c433a2f24190d01000000000000000000000000000000000000000000000000000000000000000000000000000000010f1a26313c464e53555653504a46423b39352f2c27211c171008000009141e2730373d41424444444444444444444441403c372f271d1309000000000000000000000000000000000000000000000000030b12181c1f2020202020202020202020202020202020202020202020202020201f1c17110a020008141e29323c464e5355565656565656565654524c433a2f22180e0000000000000000000000000000000000000000000000000000000000000009121b22292d303132323232323232323232323232323232323232323232323232323232323232323232322e313a4145474c4a4947464142413f3b3a363135393a3d3f42443c3b37322b22190e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415151515151515151515151515151515151515232f3b46515b63676d6e707172747577787a7b7c7e796d6053473a2f2418151515151515151515151515151515151515151513120f0b060000000000000000000000000000000000000000000815212e3a47535f6a6f727272727272727272726d62574a3e31251b1b1b1b1b1b1b1f2b37434e585f626869666d6e6f717374767779796d6053463c31261a1b1b1b1b1b1b1b1b1b1b1b1a1917130e080000000000000000000000000000000000000009141e2730373d4142424242424242424242423a39352f281f160c010000000000000007131d28313a404547484848484848484848484745413a31281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c4347484a46443f3836312c29241d1b16100b05000000020c151e252c313435373737373737373737373534302c251d150b010000000000000000000000000000000000000000000000000000070c101313141414141414141414141414141414141414141414141414141312100b06000000020d17202a343c43474849494949494949494745413a31281e100600000000000000000000000000000000000000000000000000000000000000000911171d212425252525252525252525252525252525252525252525252525252525252525252525252521282f35393a3f3e3c3a39363034322e2d2a26292c2d303235382f2e2b2720191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080808080808080808080808080808080808121e2a35404951555c606163646667686a676d6e70716d675d5145382c1d130708080808080808080808080808080808080808060603000000000000000000000000000000000000000000000006121f2b37434e585f6265656565656565656565625b51463a2e22160f0f0f0f0f0f1a26313c464e53555b545c606163646667696a666d665c5144382a2015090f0f0f0f0f0f0f0f0f0f0d0c0a07020000000000000000000000000000000000000000020c151e252c313435363636363636363636362d2c29241e160d040000000000000000010c161f282f35393a3b3b3b3b3b3b3b3b3b3b3a39352f281f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222a31373a3b3d3938332d2a261f1d18120f0a04000000000000030c141b202528282a2a2a2a2a2a2a2a2a2a282724201a130b03000000000000000000000000000000000000000000000000000000000004060707070707070707070707070707070707070707070707070707070603000000000000050e18222a31373a3c3d3d3d3d3d3d3d3d3a39352f281f160c00000000000000000000000000000000000000000000000000000000000000000000060c111517181919191919191919191919191919191919191919191919191919191919191919191919161e24292c2d32312f2e2d2a25272622211e1a1d20212326282b22221f1b150e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d19232e3740434b5153555657595a5c555c60616364605d554b4035291d0c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313c464e5355595959595959595959595751493f35291e1206020202000a15202a343c4347484e4a5053545657595b5c545c605c544a403428180e03020202020202020202020000000000000000000000000000000000000000000000000000030c141b202527282929292929292929292921201d19130c0400000000000000000000040d161d24292c2d2e2e2e2e2e2e2e2e2e2e2d2c29241e160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f302d2b28221c1a14100c070100000000000000000002090f15191b1c1d1d1d1d1d1d1d1d1d1d1b1a18140f0901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f30303030303030302d2c29241e160d0400000000000000000000000000000000000000000000000000000000000000000000000005080a0b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c13191d202126242321201d191b191514120e11131416191c1e1615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252e303940454648494b4c4e4f4b515355565753514b43392f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c4347484c4c4c4c4c4c4c4c4c4c4a463f372d23180d0100000000030e18222a31373a3b423f444648494b4c4e4f4a5153514a42392e231806000000000000000000000000000000000000000000000000000000000000000000000000000002090f15181b1c1c1c1c1c1c1c1c1c1c1c1413110d0801000000000000000000000000040c13181d20202121212121212121212121201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f212223201f1c17110e0904000000000000000000000000000004090c0e0f111111111111111111110e0e0c08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b1f2122232323232323232321201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113141917161413110d080c080705020407070a0c0f110908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c1e272e34383a3b3d3e3f414240454748494b4745403931271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222a31373a3c3f3f3f3f3f3f3f3f3f3f3e3a352d251b1107000000000000060f1820262b2e2f2e34383a3b3c3e40414340444644403930271c12070000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0e0f0f0f0f0f0f0f0f0f0f0f0706040100000000000000000000000000000001070d111314151515151515151515151413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f1214151713120f0b0600000000000000000000000000000000000000000202040404040404040404040201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f12151516161616161616161413110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c0b090707050100000000000000000000000205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a0c151d23282c2d2e303133342f34383a3b3d3e3a38352f271f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f32323232323232323232312e29231b13090000000000000000060e151a1f212223282b2d2e303133342e34383a38342e271e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020203030303030303030303000000000000000000000000000000000000000000010406070808080808080808080807060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080a0606030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090a0a0a0a0a0a0a0a070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20222324262723292c2d2e30312d2c29241d150d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f21222626262626262626262625221e18110901000000000000000000030a0f121415171c1f20212324262823282c2d2c28231c150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101313151618191b181c1f20222324201f1d18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f121515191919191919191919191816120d0700000000000000000000000000020608060b101213151618191b181c1f201f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070a0907040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000404040404040404040401010000000000000406070707070707070707070707060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a0b0c070c1013141516181413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090c0c0c0c0c0c0c0c0c0c0b0906010000000000000000000000000000000000000003060708090b0d070c10121312100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c101213171614100b050000000407090a0b0b0b0b0b0b0b0b0b0a0907040000000000000000000000000000000000000000000000000406070b0b0b0b0b0b0b0b0b0b09080603000000000000000000000000000000000000000000000000000000000000000000000005080a0b111111111111111111110e0d0b080301070c101314141414141414141414141312100b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a0b070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f202322201c160f08050b10141617181818181818181818171614100b050000000000000000000000000000000000000000070c101213181818181818181818181615130f0a0400000000000000000000000000000000000000000000000000000000000000060c111517181e1e1e1e1e1e1e1e1e1e1b1a18140f0b12181d1f2020202020202020202020201f1c17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151c23282c2d302f2c27211a110f161c2022232424242424242424242322201c160f080000000000000000000000000000000000030b12181c1f202424242424242424242423221f1b150f0700000000000000000000000000000000000000000000000000000000000910171d2124242a2a2a2a2a2a2a2a2a2a282724201a151d24292c2d2d2d2d2d2d2d2d2d2d2d2d2b28231c140c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406071111111111111111111111111110100e0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d0c0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080e0f10101111121212121212121211110f0e0c09070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e262e34383a3d3c38332b231a1a21272c2f30313131313131313131302f2c27211a1108080808080808080808080808080808080c151c23282c2d313131313131313131312f2e2b272019100700000000000000000000000000000000000000000000000000000009121b22282d3031373737373737373737373433302b251f272f35383a3a3a3a3a3a3a3a3a3a3a3a38342e261e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013131e1e1e1e1e1e1e1e1e1e1e1e1e1d1c1a16110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113141b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a1917130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141b1c1c1d1e1e1f1f1f1f1f1f1f1f1e1d1c1b19161312100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c151c232830383f44464a48443d352b21232b33383c3d3e3e3e3e3e3e3e3e3e3d3c38332b231a1414141414141414141414141414141414151e272e34383a3e3e3e3e3e3e3e3e3e3e3c3b37322b22190f040000000000000000000000000000000000000000000000000006101b242c34393d3e4444444444444444444441403c362f2731394045474747474747474747474746443f3830261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f202a2a2a2a2a2a2a2a2a2a2a2a2a2a2926221c150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080809090909090909090909090909090909090c13191d20212828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282626231f19120a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212728292a2b2b2b2c2c2c2c2c2c2c2b2a29272523201f1c18120f0a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e272e343c424a505356544f473d33292b353d44484a4b4b4b4b4b4b4b4b4b4a48443d352b212121212121212121212121212121212121212730394044464b4b4b4b4b4b4b4b4b4b4947433d342b20150a000000000000000000000000000000000000000000000000000c17222c363e45494b515151515151515151514e4c4841382f39434b51535353535353535353535353504a42382e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d373737373737373737373737373736322d271f170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151616161616161616161616161616161616161e24292c2d35353535353535353535353535353535353535353535353535353535353535353535353535353535353535353533322f2a241c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e343536373738383838393939393838373634322f2d2c28231c1b150c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d151d2329303940444e545c606360594f453b31333d474f545657575757575757575756544f473d332e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e39424a51535757575757575757575756544e463d32271b0f03000000000000000000000000000000000000000000000005111d28343e485055575d5d5d5d5d5d5d5d5d5d5b58534a4135404b555d6060606060606060606060605c544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a4444444444444444444444444443423e3831291f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1e2122222222222222222222222222222222222222282f35393a414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141403f3b352e261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202930363a3b4142434344444545454545454545444442413f3c3a38342e2b262018120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181f272f343c424a51585f666d706b60574d423638444f5960636464646464646464646360594f443b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b404a545c60646464646464646464646260584e43372b1f130600000000000000000000000000000000000000000000000815212d3945505a61646a6a6a6a6a6a6a6a6a6a67645c53483845515d676d6d6d6d6d6d6d6d6d6d6d6d665c5044382b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303940454651515151515151515151515151504f4a433b31271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f181f262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f313a4145474e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4b4740382e24190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29323b4246474e4f4f505151525252525252525251504f4e4c4946444039373128231d150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151d2429313940454e545c606a6f787d70695f53463c3c4854606b70717171717171717171706b60544747474747474747474747474747474747474747474747515c666d717171717171717171716f6a6054473b2e22150800000000000000000000000000000000000000000000000a1724303d4955616c7177777777777777777777746f64584c3a4753606d797a7a7a7a7a7a7a7a7a7a786d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424b51535d5d5d5d5d5d5d5d5d5d5d5d5d5d5b554d43382d22160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212a31373a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c434c52545b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5957524a40352a1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b444d52545a5b5c5d5e5e5e5f5f5f5f5f5f5f5e5d5c5a585653514a47433c342e271e150c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f272f353d434b515860666d737c83877b6e61574d423d4a5663707d7e7e7e7e7e7e7e7e7e7d706356545454545454545454545454545454545454545454545454606d787e7e7e7e7e7e7e7e7e7e7c6f6256493c2f23160900000000000000000000000000000000000000000000000b1824313e4b5764717e838484848484848484848174675b4e43505d6a7683868686868686868686867d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545c606a6a6a6a6a6a6a6a6a6a6a6a6a6a665f554a3e32261a0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009151f2a333c424748494949494949494949494949494949494949494c565d6068686868686868686868686868686868686868686868686868686868686868686868686868686868686868686866635c52473b2f23170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d565e616768696a6a6b6b6b6b6c6c6c6c6b6b6a69676562605c54534e45403930271e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313940454f555c606a6f788087908e8174695f534744505d6a77838a8a8a8a8a8a8a8a8a83776a61616161616161616161616161616161616161616161616161616d7a878a8a8a8a8a8a8a8a8a8174675b4e4134281b0e01000000000000000000000000000000000000000000000c1925323f4c5865727f8b90909090909090908f8376695c5043505d6a76839093939393939393938a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666d777777777777777777777777777671665b4f4236291c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c454d535555555555555555555555555555555555555555555d686d747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474736e63574b3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e747576767777787878787878787877777574726f6d66625f58514b423930271c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f39434b515960676d737c838c929992877b6e61564c41505d6a778390979797979797979083776e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e7a8793979797979797978e8174675b4e4134281b0e01000000000000000000000000000000000000000000000c1925323f4c5865727f8b989d9d9d9d9d9d9c8f8376695c5043505d6a7683909da0a0a0a0a0a0968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798384848484848484848484848483766a5d5043372a1d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d575f626262626262626262626262626262626262626262626d7a818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181807366594d4033261a0d00000000000000000000030608090a07070401000000000000000000000000000000000000000000000000000814212e3b4754616e7b8082828384848585858585858585848382817f7c79746f6a605c544b42392e23180c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b555d606b6f79808790959fa3998e8174685e5246505d6a7783909da4a4a4a4a49d90837a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7b8895a1a4a4a4a4a49a8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5aaaaaaaaa99c8f8376695c5043505d6a7683909da9adadadada3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8690909090909090909090909085796c5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f696e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e7a878e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776a5d5144372a1e110400000000000000040a0f131516171413110d080806020000000000000000000000000000000000000000000b1824313e4b5764717e8a8e8f909191919292929292929291908f8d8b8985817c746d665c544a40342820150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d676d747c848d9299a0a7ab9f92867a6e61554b505d6a7783909daab1b1b1aca095908787878787878787878787878787878787878787878787878787878787888d98a4b1b1b1b1a79a8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2b7b7b6a99c8f8376695c5043505d6a7683909da9b6b9b9b0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002020714202d3a4753606d7a86939d9d9d9d9d9d9d9d9d9d9285796c5f5246392c1f13060202000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c797a87949b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9084776a5d5144372a1e1104000000000000070e151b1f21222421201d191514120e0907060300000000000000000000000000000000030f1c28333f4a546774808d9a9c9d9d9e9e9e9e9f9f9f9f9e9e9d9c9a9897928e8780786d665c51443c32261b0f0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d79808791959fa3abb1aea3988c8073675c51505d6a7783909daab6bdbcb1a7a09d949494949494949494949494949494949494949494949494949494949495989fa9b4bdbdb4a79a8e8174675b4e4134281b0e01000000000000000005080a0b0d0d0d0d0d0d0d0d0d0d0d1925323f4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a3d3024170d0d0d0d0d0d0d0d0d0d0d0d0808060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0e0e0e14202d3a4753606d7a8693a0aaaaaaaaaaaaaaaa9f9285796c5f5246392c1f130e0e0e09080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976828888888888888888888888888888888888888888887c7a8794a1a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79d9084776a5d5144372a1e1104000000000007101820262b2e2f302d2c292422211e1a161312100b06060400000000000000000000000006121f2b3844505b667683909ca9a9aaaaababababababababaaaaa8a7a9a29f9a938d82786d60584e43372b1d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b869299a0a8afb5bdb4aa9e9285796d6053505d6a7783909daab6c3c3b9b1acaaa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a4a9b1bbc6c1b4a79a8e8174675b4e4134281b0e01000000000000060c111417181a1a1a1a1a1a1a1a1a1a1a1a25323f4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a3d30241a1a1a1a1a1a1a1a1a1a1a1a1a1514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101416171b1b1b1b202d3a4753606d7a8693a0adb7b7b7b7b7b7ac9f9285796c5f5246392c1f1b1b1b1b1515120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f95959595959595959595959595959595959595887c7a8794a1adb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aa9d9084776a5d5144372a1e110400000000040e18222a32373b3c3d3a39352f2f2e2b2623201f1c171313100c07060400000000000000000613202d394653606c7985929facb6b7b7b8b8b8b8b8b8b8b8b7b6b5b4b3adaca49f948d80746a5f5347392f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f6974818e98a3aebac0c6b9ada1978a7e7164574d5d6a7783909daab6c3cbc3bcb8b7adadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeb0b4bbc4cdc1b4a79a8e8174675b4e4134281b0e0100000000000810171d21232426262626262626262626262626323f4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a3d30262626262626262626262626262622211e1a150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810161c20232428282828282d3a4753606d7a8693a0adb9c3c3c3c3b8ac9f9285796c5f5246392c282828282822211f1b150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a295887c7a8794a1adbac0c0c0c0c0c0c1c1c1c1c1c1c1c1c1c1c0c0c0c1c1c1c1c1c1c1c1c1c1c0c0c0c0c0c0c0b7aa9d9084776a5d5144372a1e1104000000000a15202a343c4347494a4745413e3b3a37312f2d2b2823201f1c181312100c070603000000000915222f3c4855626f7b8898a2aebac4c4c4c5c5c5c5c5c5c5c4c3c2c0bebab6afa69f93877c6f62554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57616e7b86929fabb5bfc9beb3a99c908376695f535d6a7783909daab6c3d0cdc8c4c3babababababababababababababababababababababababababababababbbcc0c6cdcdc1b4a79a8e8174675b4e4134281b0e010000000008121a22282d303133333333333333333333333333333f4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a3d3333333333333333333333333333332f2e2b261f180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21282c2f303535353535353a4753606d7a8693a0adb9c6d0d0c5b8ac9f9285796c5f5246393535353535352f2e2b26201810060000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9afafafafafafafafafafafafafafafa295887c7a8794a1adb3b3b3b3b3b3b3b8babec5cdccc4bdb9b7b3b3b3b8b9bec5cdccc3bdb8b7b3b3b3b3b3b3b3b3aa9d9084776a5d5144372a1e1104000000030f1b26323c464e53555754524c4b4847423f3c3a38342e2d2c2823201f1c1813120f0b0606020b1825313e4b5864717e8b97aab4bfbabac0bbb9b8b8b9babfc3c4c7cdcac7c0bbafa4998e8174675d5145392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313b46525e6974808d99a3aebbc7c5b7ab9f94887b6e61555d6a7783909daab6c3d0cec8c5c3bababababababababac2c4c7cdc7c7c7c7c8c2bfbdbababababababababbbcc0c6cdcdc1b4a79a8e8174675b4e4134281b0e0100000006101a242c33393d3e4040404040404040404040404040404c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a404040404040404040404040404040403b3a37312a21180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232c33383c3d414141414141414753606d7a8693a0adb9c6d3d2c5b8ac9f9285796c5f5246414141414141413c3b37322a22180e0400000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9b6bbbbbbbbbbbbbbbbbbbbbbbbbbafa295887c7a8794a1a7a7a7a7a7a7a7a7abadb3bbc5c4bab2adaba7a7a7abadb3bbc5c3bab2acaaa7a7a7a7a7a7a7a7a79d9084776a5d5144372a1e110400000006131f2b37434e585f6263605d565855534e4c4946443f3c3a38342e2d2c2823201f1c1714120e101c2834404a546774818d9aa7afaeadadb5afacacabacaeb4b6b7bcc2cbd2ccc0b5ab9f9286796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57616e7b86929facb9c2c7bcb0a6998c7f7366575d6a7783909daab6c3cbc3bcb8b7aeaeaeaeaeaeaeaeaeb6b7bbc2cad4d0c6beb7b2b1aeaeaeaeaeaeaeaeaeb0b5bbc4cdc1b4a79a8e8174675b4e4134281b0e010000000c17222c363e45494b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847423c332a1f1509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c353e44484a4e4e4e4e4e4e4e4e53606d7a8693a0adb9c6d3d2c5b8ac9f9285796c5f524e4e4e4e4e4e4e4e4847433c342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9b6c2cac4c0bfbbbbbbbebfc3c8bbafa295887c7a87949a9a9a9a9a9a9a9a9a9fa2a9b3bebdb2a8a19e9a9a9a9ea1a9b3bebdb2a8a09d9a9a9a9a9a9a9a9a9a9a9084776a5d5144372a1e11040000000815212e3b47535f6a6f706d686764625f57595653504a494645403c3a38342e2d2b2822211e1a151f2c3844515c667683909da3a2a1a1a0a0a39f9f9f9fa3aaa9abb0b8c2cbd2c7baaea3988a7d7063574a3d302417080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303b46525e6974818e9aa6b0bbc7c2b7aa9d918477695f5d6a7783909daab6c3c3b9b1acaaa1a1a1a1a1a1a1a1a1a9abb0b8c2cdc8beb4aca6a4a1a1a1a1a1a1a1a1a1a4aab2bbc6c1b4a79a8e8174675b4e4134281b0e01000005111d28333e48505557595959595959595959595959595959595965727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d706359595959595959595959595959595959595955534d453c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e474f55575b5b5b5b5b5b5b5b5b606d7a8693a0adb9c6d3d2c5b8ac9f9285796c5f5b5b5b5b5b5b5b5b5b55534e463c32261b0f03000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9b6c2bfb8b4b2aeaeaeb1b2b7bebbafa295887c7a878d8d8d8d8d8d8d8d8d8d9297a2adbab9ada196918d8d8d9297a1adb9b8aca096918d8d8d8d8d8d8d8d8d8d8d84776a5d5144372a1e11040000000916222f3c4955626f7c7d7a7774716e6a686562605c545653514b494644403c3938332d2d2b2621202d3a4653606d79869298979695949393999292929298969c9fa6b0b8c2cdcbbfb4aa9a8d8074675a4d413025190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57626f7c88949fabb7c4c5b8aca095887b6e625d6a7783909daab6c3bcb1a7a09d9494949494949494949c9fa6b0bbc7c2b7aca29a9794949494949494949598a0aab5c0c1b4a79a8e8174675b4e4134281b0e0100000814212d3945505a6164666666666666666666666666666666666666727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7066666666666666666666666666666666666666625f574d42372b1e120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f596163686868686868686868686d7a8693a0adb9c6d3d2c5b8ac9f9285796c68686868686868686868625f584e43372b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9b6bfb6ada8a6a1a1a1a4a6acb4bbafa295887c79808080808080808080808085929fabb8b7ab9e918480808085929eabb8b7aa9d918480808080808080808080807f7266594c3f3326190c000000010e1a2734414d5a6774808a8684817e7b7875726f6d666663605c555653514a4946443f3b3a37312e2b2f3c4955626f7c888c8b8a89888787868686858586868990949fa6b0bcc7d0c3b6a99c90837669564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b47535f6a76828f9ca9b3bec8bdb1a8988c7f7265546a7783909daab6c3b8aca095908787878787878787878f949fabb7c4bfb2a69a908a8787878787878787888e98a4b0bcc1b4a79a8e8174675b4e4134281b0e0100000a1723303d4955616c71737373737373737373737373737373737373737f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d73737373737373737373737373737373737373736e695f53473a2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855616b707474747474747474747474798693a0adb9c6d3d2c5b8ac9f92857974747474747474747474746f6a5f53473b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9b6b8ada49c99959595979ba2acb7afa295887c6f747474747474747474747784919daab7b6a99c8f8276747783909daab6b5a89b8e817574747474747474747474726d63574b3e3225180c00000005121e2a36424d576976839093918e8b8885827f7c7976736f6d676663605c545653504a4847423c3a37313c4956626f7c807f7e7d7c7b7a7a7a79797978797a7d8290949fabb7c4cec5b8ac9f928579685e5246392d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37434e5864707d8a97a1adb9c6c2b5a99c8f8276665c6a7783909daab6c3b7aa9d90837b7b7b7b7b7b7b7b7b828f9ca9b6c2bdb1a4978a7e7b7b7b7b7b7b7b7b7c8895a1aebbc1b4a79a8e8174675b4e4134281b0e0100000b1824313e4b5764717e80808080808080808080808080808080808080828f9ca9b5c2c2b6a99c8f8376695c5043505d6a7683909da9b6c3c1b4a89b8e8180808080808080808080808080808080808080807b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8181818181818181818181818e9ba8b4c1cedbd2c5b9ac9f92878181818181818181818181817c6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000020a121d293643505c6976838f9ca9b6b4a89c928c8888888b909ba6b2afa295887c6f6767676767676767676a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756867676767676767676766635b51463a2e22160a0000000714212d3a46535e697885929f9d9a9797928f8c8985827f7c7976736f6d666662605b5455534d4847433c3b4754606a6f737271706f6e6e6d6d6c666c6c676d707882909ca8b2bdc9c6baaea298877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313c4653606d7985919eabb8c4c5b8ac9f9285796d606a7783909daab6c3b6aa9d9083776e6e6e6e6e6e6e76828f9ca9b5c2bcb0a396897d706e6e6e6e6e6e6e7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8f949faab7c3c2b6a99c8f8376695c5043505d6a7683909da9b6c3c2b6aa9e938e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c8e8e8e8e8e8e8e8e8e8e8e939eaab6c2cfdbd3c7bbafa399928e8e8e8e8e8e8e8e8e8e8e8a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000a141c242a3643505c6976838f9ca9b6b2a6998c7f7b7b7b7e8b97a4b1afa295887c6f625a5a5a5a5a5a5a5e6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275685b5a5a5a5a5a5a5a5a595751493f352a1e12060000000815212e3b4854616e7b8797a2aaa7a9a19e9b9898928f8c8986837f7c7976726f6c6665615f5755534e463c434e586062676665646362616060605b5f555d60666f7c8996a1acb9c5cabfb4aa96897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3844505c6673808d9aa8b2bdc7baaea298897c6f626a7783909daab6c3b6aa9d9083776a61616161616976828f9ca9b5c2bcb0a396897d706361616161616d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9999999999999999999999999999999999999c9fa6b0bbc7c2b6a99c8f8376695c5043505d6a7683909da9b6c3c6baafa59e9b999999999999999999999999999999999999968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c999b9b9b9b9b9b9b9b9b9b9ea5afbac6d2ded7cbc0b5aba39f9b9b9b9b9b9b9b9b9b9b968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000020c1c262e363b43505c6976838f9ca9b6b1a5988b7e726e707c8996a3afafa295887c6f62554d4d4d4f4d515e6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275685b4f504d4d4d4d4d4d4c4b463f372e23180d020000000a1724303d4a5763707d8a96a9b3b4b3adaba8aaa29f9c9998928f8c8985827f7c7975726e6967625f584e433d464e54565a595857565554545353504a4b5154606a7884919eabb7c4d0bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54626f7c8996a1adb9c5bfb4aa988c7f72656a7783909daab6c3b6aa9d9083776a5d5454545c6976828f9ca9b5c2bcb0a396897d706356545454606d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a9aab0b8c2ccc2b6a99c8f8376695c5043505d6a7683909da9b6c3cbc1b7afaaa8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5a7a7a7a7a7a7a7a7a8aaafb7c1cbd7e2dcd1c7bdb5afaca7a7a7a7a7a7a7a7a7a3968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000a141e2e3840474b505c6976838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f62554953595b58555e6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275685b595d54524c4441413f3e3a352e251c1107000000000d192633404c5966737f8c99a6b2bfbeb9b8b5b4aeaca9aaa29f9c9998928f8c8985827e7b78746f6a5f53473a3d4347494d4c4b4a494847474746443f40454e586875818e9ba8b4c1cbbeb2a5988b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e384754606a7884919eabb7c4c1b4a89b8e8175686a7783909daab6c3b6aa9d9083776a5d5454545c6976828f9ca9b5c2bcb0a396897d706356545454606d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba8b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b5b7bbc2cacfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0c9c1bab6b4b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2b4b4b4b4b4b4b4b4b6bac1c9d3dde8e3d9cfc7c0bbb9b4b4b4b4b4b4b4b4b0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000006111c2630404a52585a5c6976838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f6255535d656865615f6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756862666a615e564c413633322e2a231c130a0000000004101d2935404b556875828e9ba8b5c1cac6c5c2bfbab8b5b4aeaca9aaa29f9c9997928f8b8884817c6f6255483c32373b3c403f3e3d3c3b3b3a3a393833353f4c5966727f8c99a5b2bfccc0b3a6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2b37434e586774818d9aacb6c0c3b7aa9d908477666a7783909daab6c3b6aa9d9083776a61616161616976828f9ca9b5c2bcb0a396897d706361616161616d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba8b5bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfc2c3c7ccd3cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0d3cbc6c2c1bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbdb0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bababababababababcc0c5cdd5dfe9eae0d8d0cac6c5babababababababab0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000b17232e3842525c6366606976838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f625557656f75726e696a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756a6f73776e685e5246392d25221e18110a010000000006131f2c3945515d677784919daab7c4c5c9ced0cac6c5c2bfbab8b6b4aeaca9a9a29f9b9896918b7e7164584b3e312b2e2f34333231302f2e2d2d2d2b28313d4a5764707d8a97a3b0bdd1c1b4a79b8e8174685b4e4135281b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27323e4a5764717d8a9aa4afbbc5b9ac9f9286796d6a7783909daab6c3b6aa9d9083776e6e6e6e6e6e6e76828f9ca9b5c2bcb0a396897d706e6e6e6e6e6e6e7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba8b5c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c2c3c7ccd4cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0d3ccc6c3c1c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0bdb0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5adadadadadadadadaeafb4bbc3cdd7e2e2d8cec6bfbab8adadadadadadadadada3968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54636e736d6776838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f62555f6975817f7b77737784919daab7b6a99c8f83766a7783909daab6b5a89b8e8175787c80837a6e6154473b31261a120d070000000000000714202d3a4753606d7a86939facb5b7b9bdbfc5c6cad0d0cac7c5c2bfbab8b5b3adaba8a8a1978a7d7064574a3d31242223272625242322212120201f222f3c4955626f7c8895aab4bfcbc2b5a99c8f8276695c4f432e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a14212e3a4754616d7a86939facb9c6bbaea399887b6e6a7783909daab6c3b7aa9d90837b7b7b7b7b7b7b7b7b828f9ca9b6c2bdb1a4978a7e7b7b7b7b7b7b7b7b7c8895a1aebbc1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba8b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b7bbc2cacfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0c9c1bab6b5b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a1a1a1a1a1a1a1a1a1a1a3a9b1bbc5d0dcdbd0c6bcb4aeaca1a1a1a1a1a1a1a1a1a1968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c667380796d76838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f6255616e7b888b8884807c84919eaab7b6a99c8f83766a7783909daab6b6a99d90828084888c8b7f7265574d42362a1e1205000000000000000916232f3c4956626f7c8999a3aba8aaacb2b2b8babfc5ced6d3d2d0cac6c5c2bebab8b5b2a296897c6f6356493c302316161a19181716151414141314212e3a4754616d7a8798a3aebac7c3b7aa9d9084776a544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d687784919daab7c4bfb5ab96897d706a7783909daab6c3b8aca095908787878787878787878f949fabb7c4bfb2a69a908a8787878787878787888e98a4b0bcc1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a9abb0b8c2ccc2b6a99c8f8376695c5043505d6a7683909da9b6c3ccc1b7afaaa8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c9494949494949494949494979fa9b4c0ccd8d6cabfb4aaa29f94949494949494949494948a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986807476838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f625865717e8b9895908d899196a0acb8b6a99c8f83766a7783909daab6b7ab9f95908d919699908376695f53463a2d211409000000000000000b1825323e4b5865717e8b9299989b9ea0a8a6acaeb4bcc5d0dbdfd7d2cfcecfcac6c5bbaea295887b6f6255483c2f2215090d0c0b0a09080807070613202d3946525e687986929facb9c5c5b8ab9e928578665c5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c566875818e9ba8b4c1beb1a5988b7e726a7783909daab6c3bcb1a7a09d9494949494949494949c9fa6b0bbc7c2b7aca29a9794949494949494949598a0aab5c0c1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9999999999999999999999999999999999999c9fa6b0bbc7c2b6a99c8f8376695c5043505d6a7683909da9b6c3c6baafa59e9b999999999999999999999999999999999999968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8787878787878787878787878d97a3afbcc8d5d3c6baaea298928787878787878787878787877d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89897d76838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f62566874818e9ba09d99969ea0a8b2bdb6a99c8f83766a7783909daab6bcb1a79f9d9a9ea19f95887b6e6155483b30251a0e020000000000000b1824313e4b5764717e8386898c8e919696999fa2aab4bfcad6d3ccc6c3c1c0c3c6c8bfb5ab94877b6e6154483b2e21150801000000000000000005111e2a36414c566b7784919eaab7c4c6b9ac9f9386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303f4c5965727f8c98a5b2bfc0b3a6998d80736a7783909daab6c3c3b9b1acaaa1a1a1a1a1a1a1a1a1a9abb0b8c2cdc8beb4aca6a4a1a1a1a1a1a1a1a1a1a4aab2bbc6c1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8f949fabb7c3c2b6a99c8f8376695c5043505d6a7683909da9b6c3c3b6aa9e938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d797a7a7a7a7a7a7a7a7a7a7a7b8794a1aebac7d4d2c5b8ac9f92867a7a7a7a7a7a7a7a7a7a7a7a796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000003101c28343f4a5466727f8c91857a828f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f625e697784919eaaaaa6a2aaacb2bac2b6a99c8f83766a7783909daab6c2b9b1aba9a7abaca7988c7f7265574d42362a1e12050000000000000a1724303d4955616c71777a7c7f818487898c9298a2aebac6d3c9c1bab6b5b3b6b9bbbbaea399867a6d6053473a2d201407000000000000000000010d19253043505c6976838f9ca9b6c2c7bbafa499877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081724313d4a5764707d8a97a3b0bdc1b4a79b8e81746a7783909daab6c3cbc3bcb8b7aeaeaeaeaeaeaeaeaeb6b7bbc2cad4d0c6beb7b2b1aeaeaeaeaeaeaeaeaeb0b5bbc4cdc1b4a79a8e8174675b4e4134281b0e0100000b1825313e4b5864717e80808080808080808080808080808080808080828f9ca9b6c2c2b6a99c8f8376695c5043505d6a7683909da9b6c3c1b5a89b8e8180808080808080808080808080808080808080807b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d6e6e6e6e6e6e6e6e6e6e6e7a8693a0adb9c6d3d2c5b8ac9f9285796e6e6e6e6e6e6e6e6e6e6e6d675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c6675828f978e81828f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f62616e7b8796a0acb7b3afb7b8bdc3c2b6a99c8f83766a7783909daab6c3c2bcb7b6b3b7b6a99d908376695e52463a2d2014080000000000000815212d3945505a6164676d6f7275777a7d7f86929facb8c5ccc1b7afaaa8a6aaacafb6ac9f928679675d5145392c20130600000000000000000000081b2835414e5b6874818e9ba7b4c1ccc0b5ab95887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a9b3bec2b5a89c8f82756a7783909daab6c3d0cec8c5c3bababababababababac2c4c7cdd4dcd8d0c8c2bfbdbababababababababbbcc0c6cdcdc1b4a79a8e8174675b4e4134281b0e0100000a1724303d4956616c71737373737373737373737373737373737373737f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d73737373737373737373737373737373737373736e6a5f53473a2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686d6f6f6f6f6f6f6f6f6f6f6f7a8693a0adb9c6d3d2c5b8ac9f9285796f6f6f6f6f6f6f6f6f6f6f6d675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929f938e86929facb8b1a5988b7e7265707c8996a3afafa295887c6f6264717e8a97a8b2bdbfbab8babfc6c2b6a99c8f83766a7783909daab6c3c6bfbab9babfb8ab9f95877b6e6154483b3024190d01000000000005111d28343e485055555d60636568686d707884919eabb7c4c6baafa59e9b9a9d9fa4acaa9e9285786b554b4035291d1004040404040404040404040d1a2733404d5a6673808d99a6b3c0d2bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8697a2adbac3b6aa9d9083776a7783909daab6c3ccc4bdb9b7b1b1b1b1b1b1b1b1b1b7b8bcc3cbd5d2c8c0b9b5b3b1b1b1b1b1b1b1b1b1b3b8bec7cdc1b4a79a8e8174675b4e4134281b0e0100000815212d3945505a6164666666666666666666666666666666666666727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7066666666666666666666666666666666666666625f574e42372b1e120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7b7b7b7b7b7b7b7b7b7b7b7c8895a2afbbc8d5d2c5b8ac9f92867c7b7b7b7b7b7b7b7b7b7b7c796d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8998a29e989298a2aebab1a5988b7e7265707c8996a3afafa295887c6f626774818d9aa7b4bcb4aeacaeb4bcc2b6a99c8f83766a7783909daab6c3bcb4aeacaeb4bcb1a7988b7f7265564c4135291d11040000000000000c17222c363e45494b51535659565e616b7884919eabb7c4c3b6aa9e938e8d90939a9a9d9d9184776a5e51442f24180d1111111111111111111111111825323f4b5865727e8b98a5b1becabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677885929fabb8c4b7aa9e9184776b7783909daab6c3c4bab2acaba4a4a4a4a4a4a4a4a4aaacb1b9c3cecac0b6aea8a6a4a4a4a4a4a4a4a4a5a7adb5bec9c1b4a79a8e8174675b4e4134281b0e01000005111d28343e485056585a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a65727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d70635a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e453c31261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8888888888888888888888888e99a4b0bdc9d6d3c7baaea298928888888888888888888888887d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000003101c28343f4a5466727f8c99aaaaa29fa2aab4bfb1a5988b7e7265707c8996a3afafa295887c6f62687784909daab7b2aaa29fa2aab4bfb6a99c8f83766a7783909daab6bfb4aaa39fa3aab4b6a99c8f8276685d5245392c20130700000000000006101a242c343939404547494c4c525e6b7884919eabb7c4c1b5a89b8e818083868a8d90939083766a5d5043372a1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e24313e4a5764717d8a97a4b0bdcabeb2a5988b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b556a7784909daab7c3b8ab9e9285786b7783909daab6c3bdb2a8a19e9797979797979797979da0a7b1bcc8c5b9aea49c9a9797979797979797989ba3adb8c3c1b4a79a8e8174675b4e4134281b0e010000000c17222d363e45494b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847423c332a2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c959595959595959595959599a0aab5c1ccd9d6cabfb4aaa29f95959595959595959595958a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6676828f9ca9b4aeacaeb4bcbeb1a5988b7e7265707c8996a3afafa295887c6f626d7a86939facb2a8a0989298a2aebab6a99c8f83766a7783909daab6baaea3989298a3abb5ac9f92867a6d6054473a2e23180c0000000000000009121a22282d2f35393a3c3f41515e6b7884919eabb7c4bfb2a5998c7f73777a7d8084868a8275695c4f42362a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a303d4a5763707d8a96a3b0bdc9bfb3a6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f43505c6976838f9ca9b6c2b9ac9f928679677783909daab6c3b9aca196918b8b8b8b8b8b8b8b8b9095a0acb8c5c1b5a89c928d8b8b8b8b8b8b8b8b8b919ba7b3bfc1b4a79a8e8174675b4e4134281b0e0100000006101b242d34393d3e3f44464a4a4a4a4a4a4a4a4a4a4a4a4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a4a4a4a4a4a4a4a4a4a4a4a4a494743403b3a37312a21180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a2a2a2a2a2a2a2a2a2a2a4aab2bcc6d2dddbd0c6bcb4aeaca2a2a2a2a2a2a2a2a2a2968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929fabb8bab8babfc5beb1a5988b7e7265707c8996a3afafa295887c6f63707d8a9aa4afaca0969186929facb8b6a99c8f83766a7783909daab6b9ac9f92869299a3afafa3998a7e7164544a4034281c1004000000000000000910171d1d24292c2d303045515e6b7884919eabb7c4bfb2a5998c7f72686d7074777a7d7e7164574b3e373737373737373737373737373737373737373c4956636f7c8996a2afbcc9c0b4a79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c2935424f5c6875828f9ba8b5c2bbafa399867a6d7783909daab6c3b7ab9e91847e7e7e7e7e7e7e7e7e83909daab7c3c0b3a69a8d807e7e7e7e7e7e7e7e7f8b98a5b1bec1b4a79a8e8174675b4e4134281b0e010000000009121b22282e38424a5053575757575757575757575757575865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063575757575757575757575757575756544e463d322b2620180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5aeaeaeaeaeaeaeaeafb0b5bcc4ced8e3e2d8cec6bfbab8aeaeaeaeaeaeaeaeaea3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8998a2aebac6c5c6cad0beb1a5988b7e7265707c8996a3afafa295887c6f6773808d9aacb6aa9e918484919daab7b6a99c8f83766a7783909daab6b5a99c8f8287929facb5ab9b8e8175665c5144382c1f12060000000000000000060c1112181d20202b3845515e6b7884919eabb7c4bfb2a5998c7f7266616467686d71716c6155494444444444444444444444444444444444444444444855626f7b8895a2aebbd2c1b5a89b8e8275685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1c0b5ab94877a6d7783909daab6c3b6aa9d9083777171717171717176828f9ca9b5c2bcb0a396897d71717171717171717a8793a0adbac1b4a79a8e8174675b4e4134281b0e01000000000009101c28343f4a545c60646464646464646464646464646465727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d706464646464646464646464646464646260584e43372b1f150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bbbbbbbbbbbbbbbbbdc1c6ced6e0eaeae0d8d0cac7c5bbbbbbbbbbbbbbbbb0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c99a3aebbc4cfd3d6cbbeb1a5988b7e7265707c8996a3afafa295887c6f677683909da9b4a79a8e8184919daab7b6a99c8f83766a7783909daab6b5a89b8e8182909ca9b6ab9f9285796d6053463a2d2013090000000000000000000001070d10131e2b3845515e6b7884919eabb7c4bfb2a5998c7f72665957565e616464615a504c5151515151515151515151515151515151515151515154616e7b8794a1b6c0ccc2b5a99c8f8276695c4f4336291c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0baaea194877b6e7783909daab6c3b6aa9d9083776a64646464646976828f9ca9b5c2bcb0a396897d706464646464646d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e01000000000006121f2b3844505c666d717171717171717171717171717171727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d717171717171717171717171717171716f6a6054473b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2b2b2b2b2b7b8bdc3ccccd2d8e0e8f2f2eae2dbd6d3c9c0bab5b4b2b2b2b2b0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b86929fa9b2bec9d5d8cbbeb1a5988b7e7265707c8996a3afafa295887c6f6d7a86929facb1a7978a7e84919daab7b6a99c8f83766a7783909daab6b5a89b8e817f8c99a8b2ada297897c706356493d31261a0e0200000000000000000000000104121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c4c52545757555156585d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d606d7a879aa4afbbc8c3b6aa9d9083776a5d50442d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0bbaea194887b6e7783909daab6c3b6aa9d9083776a5d5858585c6976828f9ca9b5c2bcb0a396897d706358585858606d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000000000713202d3a4653606d787e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d818e9ba7b4c1c2b6a99c8f8376695c5043505d6a7683909da9b6c3c0b3a6998d807d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5a5a5a5a5a5aaacb1bac3ced9e5f1f2fafcf4ede2d6cbc0b7aea9a7a5a5a5a5a5a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a73808d97a1adb9c3ced9cbbeb1a5988b7e7265707c8996a3afafa295887c6f707d8a99a3aeaca095877a84919daab7b6a99c8f83766a7783909daab6b5a89b8e817c8896a0acb3a99a8d807367574d42362a1e120500000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c4146474a4b515b62656a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6c7986939facb9c6c4b7aa9e9184776b544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfbbaea295887b6f7783909daab6c3b6aa9d9083776a5d5252525c6976828f9ca9b5c2bcb0a396897d706356525254606d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a868a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8e939da9b6c2c2b6a99c8f8376695c5043505d6a7683909da9b6c3c1b4a89c928d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8175685b4f4235281c0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c989898989898989da0a8b1bdc8d4e1edf9f9f8f9eaddd1c5baaea49d9a989898989898968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58606d7a84919ea8b2bdc8d4cbbeb1a5988b7e7268707c8996a3afafa295887c6f74808d9aabb5aa9d90847784919daab7b6a99c8f83766a7783909daab6b5a89b8e827784919eaab7aa9d918477695f53463a2d21140700000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f393a3e4a56626d72777777777777777777777777777777777777777777777777777885929fabb8c5c5b8ab9f928578665b5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfbbafa295887c6f7783909daab6c3b6aa9d9083776a5f5f5f5f5f6976828f9ca9b5c2bcb0a396897d70635f5f5f5f606d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a869397979797979797979797979797979b9da5afbac6c2b6a99c8f8376695c5043505d6a7683909da9b6c3c5b9aea49c999797979797979797979797979797978e8275685b4f4235281c0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c8c8c8c8c8c8c8c9195a0acb8c5d1deebefedecede8dbcec2b5a99d928d8c8c8c8c8c8c8c8a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000020f1a26313c45515d67727e8b96a0acb8c3cecbbeb1a5988b7e7575757d8996a3afafa295887c6f7784919eaab4ab9a8d807784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275818d9aaab4aca095887b6e6155483b2e23180c00000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33323f4c5865727f838484848484848484848484848484848484848484848484848387929facb9c5c6b9ac9f9386796c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfbcafa295897c6f7783909daab6c3b6aa9d9083776c6c6c6c6c6c6c76828f9ca9b5c2bcb0a396897d706c6c6c6c6c6c6d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0a4a4a4a4a4a4a4a4a4a4a4a4a4a7a9afb7c1cbc2b6a99c8f8376695c5043505d6a7683909da9b6c3cac0b6aea8a6a4a4a4a4a4a4a4a4a4a4a4a4a4a49b8e8275685b4f4235281c0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c7f7f7f7f7f7f7f7f84919daab7c4d0dde8e3e0dfe0e3dacdc0b4a79a8d807f7f7f7f7f7f7f7f7b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000a15202935414b55606d7884919da7b1bcc8d0c3b6a99d9083818181828f9ca9b5afa295887c6f7b8796a0acaea3998a7d7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82757d8a98a3aeb1a8988b7f7265544b4034281c1004000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33313e4b5864717e8b909090909090909090909090909090909090909090909090909299a3afbbc7c8bbafa49a877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfbcafa295897c6f7783909daab6c3b6aa9d9083787878787878787878828f9ca9b5c2bcb0a396897d78787878787878787a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0adb0b0b0b0b0b0b0b0b0b0b0b0b4b6bac1c9cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0c8c0b9b4b3b0b0b0b0b0b0b0b0b0b0b0b0b0a89b8e8275685b4f4235281c0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a6f727272727272727b86929facb9c5d2dfdcd7d3d2d3d7dccfc2b5a89c8f8275727272727272726e695f53463a2d211407000000000000000000000000000000000000000000000000000000000000000000030d18242f3a44505c66707d8a95a0acb8c3cec4b8ab9f95908e8e8e8f949fabb7afa295887c717e8b98a8b2ac9f92867a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82757a86929facb5a89c8f8275665c5145382c1f1306000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332f3c4956626f7c89959d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb5c0cbccc0b6a194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa296897c6f7783909daab6c3b9ac9f928785858585858585858587929facb9c5c5b8ac9f9286858585858585858585929fabb8c5c1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0adb9bdbdbdbdbdbdbdbdbdbdbdc1c2c6cbd2cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0d1cac5c1c0bdbdbdbdbdbdbdbdbdbdbdbdb5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58606265656565656c76828f99a3afbbc7d4d9d1cbc7c5c7cbd1d0c3b7aa9e94897d70666565656565615f574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000007131d28343f4a54606c7883909da7b1bcc8c8bcb1a79f9d9b9b9b9c9fa6b0bbafa295887c75828e9ba8b5a99c8f83767784919daab7b6a99c8f83766a7783909daab6b5a89b8e827576828f9ca9b6ac9f9285796d6053463a2d201308000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332d3a4753606d7a8696a1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacafb5bdc7d1d2bbaea295887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa296897c6f7783909daab6c3bbafa399929292929292929292929299a3afbbc7c6baaea2989292929292929292929298a2aebac6c1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0adb9bfbfbfbfbfbfbfbfbfbfbfc2c3c7ccd3cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0d3cbc6c2c1bfbfbfbfbfbfbfbfbfbfbfbfb5a89b8e8275685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e54565959595d67717e8a949fabb5c0cbd7cfc7c0bbb9bbc0c7cfc7bbb0a69d9083786d605659595955534d453b31261a0e0200000000000000000000000000000000000000000000000000000000000000000000010c17232e3844505b65717e8a95a0acb8c4cdc2b9b1aba9a8a8a8a9abb0b8bbafa295887c7985929fabb3a9998c7f727784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275727f8c98a9b3aea298897d706356493d3025190d010000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332c3945515d677884919eabb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b9bbc0c7cfd9c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909daab6c3c0b5aba39f9f9f9f9f9f9f9f9f9f9fa3abb5c0cbcabfb4aaa29f9f9f9f9f9f9f9f9f9fa2aab3becac1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0adb2b2b2b2b2b2b2b2b2b2b2b2b5b7bbc1cacfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0c9c1bab6b4b2b2b2b2b2b2b2b2b2b2b2b2b2a89b8e8275685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b343d4347494c4d57606d7984919ea6b0bdc7d1cbc3bdb5afacafb5bdc7ccc1b8aca0958b7e72685d524c4c4846423b33291f140900000000000000000000000000000000000000000000000000000000000000000000000006111c27333f4953606c7883909da9b2bec9cbc2bcb8b6b4b4b4b5b7bbc2bbafa295887c7c8997a2adada197887c6f7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756f7c8897a1adb4aa998d807366564c4135291d11050000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332935404b556976828f9ca9b5c2c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c5c7cbd1c9c9c9bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909daab6c3c7bdb5afacabababababababababacafb5bdc7d1d0c6bcb4aeacabababababababababaeb3bcc5d0c1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0a6a6a6a6a6a6a6a6a6a6a6a6a6a8aab0b8c1ccc2b6a99c8f8376695c5043505d6a7683909da9b6c3cbc1b7afaaa8a6a6a6a6a6a6a6a6a6a6a6a6a6a69b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32373b3c46535f6973808d96a1adb8c2cfcdc3b9b1aba39fa3abb5c0cbc8bcb1a79e92857a6d60574d423b3a36312921180d03000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3844505b65717e8b97a1adb9c6d0cdc8c4c3c1c1c1c2c2c2c2bbafa295887c7f8c99a9b3ab9e9185786c7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756c7885929eabb6aa9d908377685e5246392d2013070000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33242f414d5a6774808d9aa7b3c0cdd0d0cfc9c6c5bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909daab6c3cfc7c0bbb9b8b8b8b8b8b8b8b8b8b9bbc0c7cfd9d7cec6bfbab8b8b8b8b8b8b8b8b8b8babec5cec9c1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a869399999999999999999999999999999c9ea6b0bbc7c2b6a99c8f8376695c5043505d6a7683909da9b6c3c6baafa59e9b9999999999999999999999999999998e8275685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272e39424f59616e7b86929fa8b2bdcad4c8bcb1a7a0999299a3afbbc4cec3b9ada1978d8073695f53463d2f2a261f180f06000000000000000000000000000000000000000000000000000000000000000000000000000006111b27333f4953606d7984919eaab4bfcbd6cbc3bcb8b7b5b5b5b5b5b5afa295887c83909ca9b5ab9b8e8174657784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756575828e9ba8b5ac9f93867a6d6154473a2e2114070000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f3326323f4b5865727e8b98a5b1becfd6cdc5beb9b8afafafafafafafafafafafafafafafafafafafafafafa4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909daab6bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcc3c4c8cdd4ddd9d1c9c4c0bfbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8f949eaab7c3c2b6a99c8f8376695c5043505d6a7683909da9b6c3c2b6aa9e938e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8175685b4f4235281c0f02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101c2834404b54616b75828f98a3aebac4cfcfc7b8aba0959086929fa8b2bdc9c9beb3a99f92867b6e61594f42382d22170b06000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3845515c66737f8c98a3aebac7cec3b9b1acaaa9a9a9a9a9a9a9a296897c86929fa8aba4998a7e716a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e827568727e8b98a9ababa3998a7d7064574a3d3124170a0000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f3326303d495663707c8996a9b3becacfc5bbb3adaba3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909daab0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b6b8bcc3cbd4d1c7bfb8b4b2b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a79a8e8174675b4e4134281b0e0100000000000713202d3a4653606d787f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f828f9ca8b5c2c2b6a99c8f8376695c5043505d6a7683909da9b6c3c1b4a89b8e817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c19232c3845515c66707d8a949eaab4bfccd1c7bdb0a69d90837f8c96a1acb9c3cdc5baaea3998f82756b60544a3f33281d13070000000000000000000000000000000000000000000000000000000000000000000000000000000006111b2834404b54616d7a86929facb8c3c8bcb1a7a09d9c9c9c9c9c9c9c9c998c808c91969a9e9f93867a6d6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275686e7b8897a19e9b99928d8074675a4d4134271a0e0000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33262e3a4754616d7a8797a2adb9c6c9beb3a9a19e9696969696969696969696969696969696969696969696968b7f7265584c3f3225190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909da3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3aaabb1b9c3cdc9bfb5ada7a5a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39a8e8174675b4e4134281b0e01000000000006121f2c3844515c666d737373737373737373737373737373737f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d73737373737373737373737373737373706c6155493c3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2a36424d56606d7984919ea6b0bcc6d1cbc0b5ab9e93897d7984919ea7b1bcc8cbbfb4ab9e93897d70665b50443a2f24180d03000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3946525e6875818e9ba7b1bcc5b8aca095908f8f8f8f8f8f8f8f8f8a7e8084888d9196908376686a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275686a78859297928e8a86827e7164574b3e3124180b0000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33262d3946525e687885929eabb8c5c6b9ada19792898989898989898989898989898989898989898989898989897f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909696969696969696969696969696969696969d9fa7b1bcc8c4b8ada39c989696969696969696969696969696969696968e8174675b4e4134281b0e01000000000004101c2834404a545c60666666666666666666666666666666727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7066666666666666666666666666666664615a5044392d2014080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303846525e69727f8c96a0acb8c1cfd3c7bbafa3998f8275717e8a95a0acb8c2d0c6bdafa59d9083786c60554b4035291f14090000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414c56636f7c8995a0acb8c3b7aa9d9083828282828282828282827b73777c8084898c8073666a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275686875828d8985817d7a76716c6155493d3024170a0000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33262a36414c56697683909ca9b6c3c5b8ab9e92857d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c7077838989898989898989898989898989898989898990959fabb8c4c0b4a79c918c898989898989898989898989898989898989898174675b4e4134281b0e010000000000000c18232e39424a5153595959595959595959595959595965727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d70635959595959595959595959595959575550483e33281c0e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424f59616e7b86929fa8b2bdcad6cabeb3a99f92877b6e6c7883909da6b0bec7cfc1b8aba0958b7e71675d51453b31251a0b02000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303a4854606b7783909dabb5c0b4a79a8e81767676767676767676766e696a6f73787c807c6f626a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756864717e807c7974716d6864615a5045392d2115080000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33262530414e5b6774818e9aa7b4c1c6b9ac9f93867a7070707070707070707070707070707070707070707070706e695e53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c706f7c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d83909daab6c3bfb2a5988c7f7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c6e6255483b2f22150800000000000006111b242d30394044464c4c4c4c4c4c4c4c4c4c4c4c4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574c4c4c4c4c4c4c4c4c4c4c4c4c4a49443e36302920170c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606b75818e98a2aebac3ced3c6baada2978d80746965707d89949facb6c0ccc8bcb1a79e9184796d60574d42362a1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2c38434f5965727f8c99a3afbbb8ab9f9285796d6969696969696969615f6062656c6f746f6a5f6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e827568616c71736f6c6664605d565550483e34281d1105000000000000000105090b121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332626323f4c5965727f8c98a5b2bfc7bbafa499887c6f6363636363636363636363636363636363636363636363615e574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c706a6f70707070707070707070707070707070707076828f9ca9b5c0bcb0a396897d707070707070707070707070707070707070706e6a5f53473a2e2114080000000000010c17222d363f45494b50505050505050505050505050505865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063575050505050505050505050505050504746413a32291e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222b3844505c666f7d89939eaab4bfccd5c9bdb2a89f92857a6d61606b76828f9aa4afbbc6cdc3b9ada1978c8073695e53463d2f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b27323d4754616e7b86929facb9baada2978a7d7064555c5c5c5c5c5c555354535b606267625f586a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275685a61646662605b5454524d49453e362c22170c00000000000000060c111517181e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332624303d4a5763707d8a96aab4bfcac0b5ab978a7e71645756565656565656565656565656565656565656565654534d453b31251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c70636263636363636363636363636363636363636976828f9ca9b4b4b4b0a396897d70636363636363636363636363636363636363625f584e43372b1f1206000000000005111d29343f485056585d5d5d5d5d5d5d5d5d5d5d5d5d5d5d65727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d70635d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d54524c443a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202935414c56606d7883909da5afbcc5d0d2c5b9aca1968c7f72685e59626f7c87939faab4bfcbc9beb2a99f92867b6e61584e41382d22170b010000000000000000000000000000000000000000000000000000000000000000000000000000000a16202d3946525e6876828f9cabb5beb3a99b8e8175675d514f4f4f4f4f484d575e616161616161616a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275686161616161616161615e574d42362a241b10060000000000000911171d212425292b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f3329222e3b4854616e7b8798a2aebac6bfb3a6998c807366594d49494949494949494949494949494949494949494846423b33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c706356565656565656565656565656565656565c6976828f9ca7a7a7a7a7a396897d7063565656565656565656565656565656565655534e463c31261a170d03000000000915212d3945505a626569696969696969696969696969696969727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d706969696969696969696969696969696969615e564c41362a1d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d1b26323946525e68727f8b95a0acb7c1ced4c8bcb1a79e9184796d6056535f6a75818e98a3aebac5cfc4baaea2988e81756a6053493f33271d12070000000000000000000000000000000000000000000000000000000000000000000000000000070f161e2a36414d5664717e8b99a3aebbb8ac9f92867a6d6053474343434346535e696e6e6e6e6e6e6e6e7784919daab7b6a99c8f83766e7783909daab6b5a89b8e82756e6e6e6e6e6e6e6e6e6e695e52463a2d20140700000000000009121b22292e313236363845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f36362f2d394653606c7985929facb8c5c1b5a89b8e827568544a3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3b3a36312921170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c7063564a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4f5c6976828f9a9a9a9a9a9a9a96897d7063564a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4847433c3e3931291f150b000000000b1724303d4956626c7176767676767676767676767676767676767f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7676767676767676767676767676767676766d685e5246392d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2b37434e58616d7a85929ea7b1bcc9d3cfc6b8ab9f958a7e71675c514e58616e7b86929fa9b3becacabfb4aa9e93897c6f655b5044392f24180c0200000000000000000000000000000000000000000000000000000000000000000000000007101920272b303b4754606d7a86929facb9baaea2988a7e7164544a3f34363b4854616e7b7b7b7b7b7b7b7b7b84919eaab7b6a99c90827b7b7b83909daab7b5a89c8f827b7b7b7b7b7b7b7b7b7b7b6e6154473b2e211408000000000006111b242d343a3d3e43434345515e6b7884919eabb7c4bfb2a5998c7f7266594c4343433c3a3744505b657783909daab6c3c3b7aa9d908477665c5044383030303030303030303030303030303030302e2d2a251f1c161008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c706356535353535353535353535353535353535c6976828d8d8d8d8d8d8d8d8d897d706356535353535353535353535353535353535353504f4a433b31271c11050000000b1825323e4b5865717e838383838383838383838383838383838384919eaab7c4c2b6a99c8f8376695c5043505d6a7683909da9b6c3c4b7aa9d91838383838383838383838383838383838383827a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a47535f6a74818d97a2adb9c3cdd1c6bdafa59d9083766c61554b46535e6973808d97a2adbac4cfc6bcafa59d9083786c60554b4035291f14090000000000000000000000000000000000000000000000000000000000000000000000040f19222b32373b3c45525d6876828f9ca9b5bfb4aa9b8e8275665c50443d3d46535f6c798787878787878787879196a0acb9b7ab9f94908787879095a0acb8b7aa9e948f8787878787878787878784776b5e5144382b1e1105000000010c17222d363f454a4b50505050515e6b7884919eabb7c4bfb2a5998c7f726659505050504847433f49536875818e9ba8b4c1c5b9ac9f9286796d6053463a3131313131313131313131313131313131313131302f2c27211a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c70635f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f65727f818181818181818181817c6e625f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5b554d43392d22160a0000000d1a2633404d596673808c909090909090909090909090909090909196a0acb9c5c2b6a99c8f8376695c5043505d6a7683909da9b6c3c5b8aca095919090909090909090909090909090909090877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a43505a626f7c87939fa9b3becbcbcbbfb4ab9e93897c6f635a5043424d57616d7a85929fa8b2bdc9cec1b8ab9f958a7e71675d51453b3025190e04000000000000000000000000000000000000000000000000000000000000000000000a16202b343d4347494a4c5665727e8b98a7b1bcb8ab9f9285796d60534a4a4a4a535f6c798692949494949494949ea0a8b2bdbcb0a69f9c9494949da0a7b1bcbbb0a69e9c9494949494949494949184776b5e5144382b1e110500000005111d29343f485056585c5c5c5c5c5e6b7884919eabb7c4bfb2a5998c7f72665c5c5c5c5c55534e464c5966737f8c99a6b2bfc7baaea399887b6e6255483d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3c38332c231a100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c706c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d72747474747474747474746e6a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a665f554a3e32261a0e0000000d1a2633404d596673808c999c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ea0a8b2bdc9c2b6a99c8f8376695c5043505d6a7683909da9b6c3c8bcb1a7a09d9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c94877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b55616c76839099a4afbbbfbfbfbfbaaea3998e81756b6054483e3b46525d68727f8c96a1adb9bfbfbfbcb1a79e9184796d60564d42362a20150a000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e5456565656616e7b8795a0acb8baada297897c6f635656565656565f6c7986929fa1a1a1a1a1a1aaacb2bac4c2b8b0aba9a1a1a1aaacb1b9c3c1b8b0aaa8a1a1a1a1a1a1a1a19e9184776b5e5144382b1e11050000000915212e3a45505a62656969696969696b7884919eabb7c4bfb2a5998c7f72696969696969625f584e4a5764717d8a97abb5c0cbbfb4ab978a7d7064574a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a48443d352c21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897d797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797771665b4f4236291d100000000d1a2633404d596673808c99a6a9a9a9a9a9a9a9a9a9a9a9a9a9a9aaacb2bac4cec2b6a99c8f8376695c5043505d6a7683909da9b6c3cec3b9b1acaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d67717e8a949fabb5b2b2b2b2b2b3a99f92867b6e61594f433635414c56606d7984919ea7b1b2b2b2b2b2ada1968c7f73695e52463c32271b0f03000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58606263636363697784909daab7beb3a9998d807366636363636363626c7986929facaeaeaeaeaeb7b9bdc4cccbc2bcb7b6aeaeaeb7b8bcc3cbcac1bbb7b5aeaeaeaeaeaeaeaa9e9184776b5e5144382b1e11050000000b1724313d4a56626c71767676767676767884919eabb7c4bfb2a5998c7f767676767676766f6a5f575757626f7b8899a3afbbc7bfb2a5998c7f7266595757575757575757575757575757575757575757575756554f473d33271c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bec6b9ac9f93878686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868683776a5d5044372a1d110000000d1a2633404d596673808c99a6b3b6b6b6b6b6b6b6b6b6b6b6b6b6b7b9bdc4cccfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0cbc3bcb8b7b6b6b6b6b6b6b6b6b6b6b6b6b6b6aea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d57606d7984919ea6a5a5a5a5a5a5a5a5a2978d8073695f53473d32303a45515c67717e8b95a0a5a5a5a5a5a5a5a89f92867b6e61584e43372b1f130600000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a6f707070707073808d9aa6b3c0b6aa9d908377707070707070706f6a7986929facb9babababac4c5c9ced6d4cdc7c4c3bababac3c5c8ced5d3ccc7c3c2babababababab7aa9e9184776b5e5144382b1e11050000000b1825323e4b5865717e828383838383838286929facb8c5c4b7aa9e9184828383838383827c6f62646464646d7986929facb9c5c1b4a79b8e81746864646464646464646464646464646464646464646464646361594f44382c201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bec7bbafa499939292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929084776a5d5144372a1e110000000d1a2633404d596673808c99a6b3bfc3c3c3c3c3c3c3c3c3c3c3c3c4c5c9ced6cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0d5cec8c5c4c3c3c3c3c3c3c3c3c3c3c3c3c3baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6973808d97989898989898989898989892857a6d60574d42342b2934404b55606c78839098989898989898989898988e81746a6054473b2e22150800000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c7d7d7d7d7d7d808c99a6b3bfb9ac9f93887e7d7d7d7d7d7d7d7c6f7986929facb9bababcc6c8ccd2d5cec8c5c4bdbababababac5c6cacfd7d7d3d0ccc7c3c2bababab7aa9e9184776b5e5144382b1e11050000000d1a2733404d5a6673808d8f8f8f8f8f8f8f9298a3aebac7c5b9aca096918f8f8f8f8f8f897c6f6f70707070707784919daab7c4c3b6a99d908376707070707070707070707070707070707070707070707070706b6155483c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2beccc0b5aba49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9084776a5d5144372a1e110000000d1a2633404d596673808c99a6b3b8b8b8b8b8b8b8b8b8b8b8b8b8b8babec5cecfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0cdc5bebab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8aea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b868c8c8c8c8c8c8c8c8c8c8c8c8c8b7f72685d52453b3122232f3944505b66707d8a8c8c8c8c8c8c8c8c8c8c8c8c877c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000003101d2a3643505d6976838989898989898c929ca8b4c1bbafa49a938a8989898989898981757986929facadadadafb9bbc0c7ccc3bdb8b7b0adadadadaeb8b9bec5cdd7d3cac1bbb7b5adadadadaa9e9184776b5e5144382b1e11050000000d1a2733404d5a6673808d999c9c9c9c9c9c9fa3aab4bfcbc8bdb2a8a09e9c9c9c9c9c96897c6f7c7d7d7d7d7d7d83909daab6c3c5b8ac9f92867e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bed2c7bdb5afacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaa9d9084776a5d5144372a1e110000000d1a2633404d596673808c99a6abababababababababababababababaeb4bcc5d0c2b6a99c8f8376695c5043505d6a7683909da9b6c3d0c5bbb3adababababababababababababababababa194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f786d60564c4133291f1d28333f4a54616b717e7f7f7f7f7f7f7f7f7f7f7f7f7f7d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909696969696999ca4adb9c4c0b6aca49f979696969696968e81757986929fa0a0a0a0a3acafb6bec3bab2acaaa3a0a0a0a0a1abadb3bbc5cfccc1b8b0aaa8a0a0a0a0a09e9184776b5e5144382b1e11050000000d1a2733404d5a6673808d99a6a9a9a9a9a9acaeb4bcc6d0cec3bab2acaaa9a9a9a9a296897c74808a8a8a8a8a8a9095a0abb8c4c6baaea298928a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a85786b5e5245382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2becbd0c7c0bbb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b7aa9d9084776a5d5144372a1e110000000d1a2633404d596673808c999e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2aab4becac2b6a99c8f8376695c5043505d6a7683909da9b6c3cabeb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e94877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3b4854606b707272727272727272727272727272726d665c51443a30211817222d38424f59626d7172727272727272727272727272706b6054483c2f2216090000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca3a3a3a3a6a8adb6bfcac7beb6afaca3a3a3a3a3a39b8e81757986929494949494969fa4acb6bdb2a8a09e9794949494949ea2a9b3becac7bbb0a69e9c9494949494949184776b5e5144382b1e11050000000d1a2733404d5a6673808d99a6b3b6b6b6b6b8babfc6ced8d5ccc3bdb9b7b6b6b6afa296897c74808d97979797979da0a7b1bcc8cabfb4aaa29f9797979797979797979797979797979797979797979797979185786b5e5245382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bec3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c5c5c5c5c5c5c5c5c5c5c5c5c5c4c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b7aa9d9084776a5d5144372a1e110000000d1a2633404d596673808c919191919191919191919191919191919298a2aebac6c2b6a99c8f8376695c5043505d6a7683909da9b6c3c6baada297929191919191919191919191919191919191877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f596063656565656565656565656565656565605c544a4032281e0f111c262f3e47505a6265656565656565656565656565656360594f44382c2014070000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca9b0b0b0b3b4b9bfc8d1d0c7c0bbb9b0b0b0b0b0a89b8e8175798787878787878789939aa4afb8aca096918a87878787879297a2adb9c4c3b7aa9e948f8787878787878784776b5e5144382b1e11050000000d1a2733404d5a6673808d99a6b3c0c2c2c2c5c7cbd0cccccccccec8c5c4c2c2bcafa296897c74808d9aa3a3a3a3aaabb1b9c3cdd0c5bcb4aeaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39e9185786b5e5245382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b9babfc6cfd2d2d2d2ccc4bdb9b7b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6aa9d9084776a5d5144372a1e110000000c1926323f4c5965727f858585858585858585858585858585858586929fabb8c5c2b6a99c8f8376695c5043505d6a7683909da9b6c3c5b8ab9f92858585858585858585858585858585858585857b6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323d474f545659595959595959595959595959595953514a42392e20160c0a141d2c353f485056585959595959595959595959595956544f473d33271c10040000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca9b6bcbcbfc1c4cacacacad2ccc8c6bdbcbcbcb4a89b8e8175757a7a7a7a7a7a7a7d86939facb7aa9e91847d7a7a7a7a7b85929ea8b2bdc2b5a89c8f827a7a7a7a7a7a7a7a6d6054473a2d211407000000000d1a2733404d5a6673808d99a6b3bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbcafa296897c74808d9aa7b0b0b0b6b8bcc3cbd5d7cec5bfbab8b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ab9e9185786b5e5245382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9acaeb4bdc6d1dcdacfc4bab2adaba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99d9084776a5d5144372a1e110000000b1825313e4a57626d7278787878787878787878787878787878787f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7878787878787878787878787878787878786e685e5246392d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353d4448494c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4644403930271c0e04020b1a232d363f454a4b4c4c4c4c4c4c4c4c4c4c4c4c4c4a48443d352b21160b000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca9b6bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb4a89b8e8175686d6d6d6d6d6d76828f9aa4afb8aca096918a81746d6d727f8c96a1adb9c3b7aa9e94897c6f6d6d6d6d6d6d685d5245392c201307000000000d1a2733404d5a6673808d99a6b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3afa296897c74808d9aa7b3bdbdc3c4c8cdd2d2d2d2d0cac6c5bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb8ab9e9185786b5e5245382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b989d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb4bfcbd7d5c9bdb2a8a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9084776a5d5144372a1e110000000916222e3a46515b62656b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d706b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b615e564d41362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232b32383b3d3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a38342e271e150b000008111b242d343a3d3e3f3f3f3f3f3f3f3f3f3f3f3f3f3d3c38332b231a0f05000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca9b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a89b8e8175686161616167717e8a949facb6bdb2a8a0968c7f7265616d7984919ea7b1bcbbb0a69d9083786c61616161605d564c4135291d1104000000000d1a2733404d5a6673808d99a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a296897c74808d9aa7b3c0c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c4b8ab9e9185786b5e5245382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b909090909090909090909090909090909090909090909090909090909299a3aebac7d3d2c5b9ada19691909090909090909090909090909090909090909090909083776a5d5144372a1e1100000006121e29353f495157595e5e5e5e5e5e5e5e5e5e5e5e5e5e5e65727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d70635e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e54524d443b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111921272c2f303232323232323232323232323232322d2c28231c150c0300000009121b22292e313232323232323232323232323232302f2c27211a110800000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39b8e8175685b5458606d7984919ea6b0bebdb0a69e9184796d605c67717e8b95a0acb8c1b8ab9f958a7e71665c545454524c443a3024190d01000000000d1a2733404d5a6673808d99999999999999999999999999999999999999999999999996897c74808d9aa7b3b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ab9e9185786b5e5245382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717e838383838383838383838383838383838383838383838383838383838387929facb9c5d2c7bcb1a79e918483838383838383838383838383838383838383838383838174685b4e4135281b0e000000010d18232d373f464a4c52525252525252525252525252525865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063575252525252525252525252525252524746413b32291f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b202223262626262626262626262626262626201f1c18120b0300000000000911181d212425262626262626262626262626262322201c160f080000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d6976839097979797979797979797979797979797979797979797978e8175685b545f6a73808d96a1adb8c0b5ab9f948a7e71675c55606c7883909da6b0bcbcb1a79e9184796d60554b4745413a32281e130800000000000d1a2733404d5a6673808c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c897c74808d9aa7abababababababababababababababababababababababababababababababababababababab9e9185786b5e5245382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303c4955616c71767676767676767676767676767676767676767676767676767676767b86939facb9c6cdc4b8ab9f95897c7676767676767676767676767676767676767676767676746f65594d4034271a0e0000000007111b252d353a3e3f454545454545454545454545454c5865727f8b98a5b2b9b9b6a99c8f8376695c5043505d6a7683909da9b6c0bdb0a3968a7d7063574a45454545454545454545454545453b3936302920170d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b101316161919191919191919191919191919191312100c070000000000000000060c1115171819191919191919191919191919171614100b05000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d6976838a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8175685b5c666f7c87929fa8b2bdbbafa3998f82766c6155505b66707d8a949fabb7c2b9aca1968b7f72675c51453935302820160c0200000000000a1723303d4a5663707d8080808080808080808080808080808080808080808080808080807b74808d9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9e9185786b5e5245382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3945505a61646a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6773808d9aa4afbbbfc0beb2a99d9083766a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a68655d53483c3024180c00000000000a131b23292e31323838383838383838383838383f4c5865727f8b98a5acacacaca99c8f8376695c5043505d6a7683909da9b3b3b3b0a3968a7d7063574a3d383838383838383838383838382e2d2a251f170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c07060400000000000000000000000105090b0b0c0c0c0c0c0c0c0c0c0c0c0c0c0a0907040000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c6f6255606d78839099a3afb8bcb2a89f92877c6f625a504a54616b7683909ca7b1bcb9b2a89e9184796d6053473a2d241e160e040000000000000916222f3c4854606b707373737373737373737373737373737373737373737373737373736e74808d92929292929292929292929292929292929292929292929292929292929292929292929292929292929185786b5e5245382b1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111c28333e485055575d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d54606d7985929eacb6b1b2b3b5ada1978a7e7164585d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b59534b41372c2014080000000000010a11181e2225262b2b2b2b2b2b2b2b2b2b2b323f4c5865727f8b989f9f9f9f9f9f9c8f8376695c5043505d6a7683909da6a6a6a6a6a3968a7d7063574a3d302b2b2b2b2b2b2b2b2b2b2b2b21201e19140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b6f707070707070707070707070707070707070707070707070706f6a605865727f8b92989ea5acb1aca1968d80736a5f5348424f5963707d8a95a0acb2aca9a19e968b7f7265584c3f3225190c04000000000000000714202c38444f5960636666666666666666666666666666666666666666666666666666666673808585858585858585858585858585858585858585858585858585858585858585858585858585858585858584776a5e5144372b1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222c363e45494a5050505050505050505050505050505050505050505050505c66727e8b97a1a9a3a4a5a7a8aa9e9184796d60535050505050505050505050505050505050505050504e4d4841392f251a0f0400000000000000070d121618191f1f1f1f1f1f1f1f1f1f25323f4c5865727f8b92929292929292928f8376695c5043505d6a76839099999999999999968a7d7063574a3d30241f1f1f1f1f1f1f1f1f1f1f1414110e080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060708090a0a0b0c0c0c0d0d0d0d0e0e0d0d0d0d0d0c0c0b0a0a09080706040100000000000000000000000000000000000000000000000000000000000007131f2c38444f5960636464646464646464646464646464646464646464646464646462605853606d7980868e939da0a7a59e9184796d60584e433e4653606c7883909da8a8a09e96918c857f7265584c3f3225190c000000000000000004101c27333d474f5456595959595959595959595959595959595959595959595959595959636e73787878787878787878787878787878787878787878787878787878787878787878787878787878787878787772675b4f43362a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a242c33393c3e434343434343434343434343434343434343434343434653606d7984909297949697999a9b9d988c7f72665c5144434343434343434343434343434343434343434341403c372f271d13090000000000000000000106090b0c1212121212121212121925323f4c5865727f868686868686868686868275695c4f43505d6a76838d8d8d8d8d8d8d8d8d8a7d7063574a3d30241712121212121212121212080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607060b0f12131415161717181819191a1a1a1a1a1a1a1a1a1a19191818171616151413100d070b08070502000000000000000000000000000000000000000000000000030f1b27323d474f54565757575757575757575757575757575757575757575757575755544e515d676d737b818990959e9e938a7d70675d51463c3744505b65717e8b96a09d96918b847f79726d62564a3e3124180b0000000000000000000b16212b353d44484a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d525c63666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a6760564b3f33271b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a22282d30313737373737373737373737373737373737373737373b4855626e7c8284858688898a8c8d8f9091867a6d60544a4034373737373737373737373737373737373737373534302c251d150b01000000000000000000000000000005050505050505050b1824313e4a56626d72797979797979797979797570655a4e3f4b5865727f808080808080808080807c6e6255483b2f22150805050505050505050500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10131317171b1f2021222323242525262626272727272727272726262625252423222120201d181a181514120e090300000000000000000000000000000000000000000000000a16212b353d4448494a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4947434b555d60696e757d838b92978e81756b61554b4034333f4953606d79849195908a847e79726d67625b51463a2e221509000000000000000000050f1a232b33383c3d40404040404040404040404040404040404040404040404040404a52585a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5b564e44392e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171c2123242a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2e3a47535f6a6e7677787a7b7c7e7f808283848073685d5242392e232a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a282724201a130b0300000000000000000000000000000000000000000000000915222e3a46515b62656c6c6c6c6c6c6c6c6c6c69655e54493d4a56626d72737373737373737373736e6a5f53473a2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d12181c1f202322272b2d2d2e2f303131323233333334343434343433333332323131302f2e2d2c2924272521211e1a14100c06000000000000000000000000000000000000000000040f19232b32383b3c3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3c3b39434b51575e616b70787e858d857a6d61594f43392f2d3844505c66727f8b8a837e78716d67605d5551493f34291e12060000000000000000000008111a21272c2f30333333333333333333333333333333333333333333333333333840474b4d52525252525252525252525252525252525252525252525252525252525252525252525252525252525252514f4b443b32281d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c111417171d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1f2b37434e585f62696a676d6e70717274757678736e64564c4130271c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1a18140f090100000000000000000000000000000000000000000000000006121e29343f495156585f5f5f5f5f5f5f5f5f5f5c5a544c423a46515b626566666666666666666666625f574e42372b1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d23282c2d302d3337393a3b3c3d3d3e3f3f3f40404040414140404040403f3f3e3d3d3c3b3a39352f34312e2d2a251f1c17110a03000000000000000000000000000000000000000007111921272c2f30313131313131313131313131313131313131313131313131312f2e313940454d535960666d727a807e71685e52473e312828343f4a54606d79827d78716d66605c55514b433f372d23180d010000000000000000000000080f161c202223262626262626262626262626262626262626262626262626262e353b3f404545454545454545454545454545454545454545454545454545454545454545454545454545454545454544433f39322920160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080a0b1010101010101010101010101010101010100f1a26313c464e53555c555d606163646667686a6b67645c52443a2f1e150b10101010101010101010101010101010100e0e0c08040000000000000000000000000000000000000000000000000000010d18232d373f464a4c535353535353535353534f4e49423a343f495156585a5a5a5a5a5a5a5a5a5a55534e453c31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d161e24292e34383a3d403f44464748494a4a4b4b4c4c4d4d4d4d4d4d4d4d4d4d4c4c4b4b4a49494847454043413e3b3a36312c28231c150c060000000000000000000000000000000000000000070f161b1f2223242424242424242424242424242424242424242424242424242222272f353b42464f545c60686d74716c61564c41352c1f232e3845515d676d75706c65605c54514b45403a312d251b110600000000000000000000000000050b101416171a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1c242a2f3233393939393939393939393939393939393939393939393939393939393939393939393939393939393939393736332e2820170e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000404040404040404040404040404040404000915202a333c4347484f4b5153555657595a5c5d5e5a58524a4032281e0c030404040404040404040404040404040404020100000000000000000000000000000000000000000000000000000000000006111b252d343a3e3f4646464646464646464642413d37302d373f464a4b4d4d4d4d4d4d4d4d4d4d4847423c332a201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111920282f35394045464a4d495053545556565758585959595a5a5a5a5a5a5a5a59595958585756555453514b4f4d4b4846423b38342e261e180f060000000000000000000000000000000000000000040a0f1315161717171717171717171717171717171717171717171717171716151d242931363d424a50565d616764615a50443a30231a1c2935404b555d606963605b53504a454039352f281f1b1309000000000000000000000000000000000407090a0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d12191f2326272c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b2a27231d160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212a31373a3b4340454748494b4c4d4f50524d4c4740382e20160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b23292e3132393939393939393939393635312c26252d343a3d3f404040404040404040403b3a37312a21180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232b323a41454b5153565a535b60606162636464656566666667676767676766666665656464636261605d555c5a5854534d46443f38302a21180f06000000000000000000000000000000000000000000030709090a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a090b12181f252a30383f444c52545a575550483e32281e1118242f39434b51535c57535049443f38342e29241d160d09010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e1317191a1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17120b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f2f35393a3b3d3e3f41424345403f3b362e261c0d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e2224252c2c2c2c2c2c2c2c2c2c292825211b1b23292e3132333333333333333333332f2e2b2620180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1a232c353d444c52545c60636769656c6d6e6f707071727272737373737474737373737372727170706f6e6d676a696764615e5753504a423c332a21180b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c141a1e262e343a4146474d4a49443e362c20160c121d2731394045474f4a46443f38342e28231d18130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d1212121212121212121212121212121212121212121212121212121212121212121212121212121212121211100e0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f212224292c2d2e303133343537383433302b241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12151819202020202020202020201c1b19151011181d2224252727272727272727272722211e1a150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17202c353e474f565d60666d70737677797a7b7c7d7d7e7e7f7f808080808080808080807f7f7e7e7d7c7c7b7a79777674716e6965605c544d453c332a1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090c141c23283035393a413e3c39332c241a0e040b151f272f35383a423d3937332d28231c18120d070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090f121415181d1f202223242627292a2b2726231f19120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c131313131313131313130f0f0d0904060c121518181a1a1a1a1a1a1a1a1a1a1514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323e474f5960686d73797d80828486878889898a8b8b8c8c8c8d8d8d8d8d8d8d8d8c8c8c8b8b8a89888786858482807e7b77726d665f574d453c2f261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e24292d2e3431302d28221a120800030d151d24292c2d36302d2b27221b17110c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0b0b0a070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608070c101314151618191a1c1d1f1a1917130e080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606060606060606060302000000000106090b0c0d0d0d0d0d0d0d0d0d0d08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a444f59616b707a8085898d8f919299949596979798989999999a9a9a9a9a9a999999989897979695949892918f8d8b87837e786e695f574d42382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b13191d2021272423211c171008000000030b12181d1f202924201f1b17110b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205090e121415171818171413110d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a0b0c0e0f10120d0d0b0703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c56616b707d858d92989a9c9e9fa3aba2a3a3a4a5a5a5a6a6a6a6a7a7a6a6a6a6a6a5a5a4a3a3a2aaa29f9d9c9a9795908b837b6e695f544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1113141a171614100b05000000000001070c1013141c1713120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090a090704000000000000000000000000000000000000000000000000000000000000000000000003090e12141a1e21212424242321201d19130f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010304000004060707080808090909090909090909090808080707060400000403010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e68707d8792979fa2aaa9aaacafb5afb0b0b1b1b2b2b3b3b3b3b3b3b3b3b3b3b2b2b1b1b0afafb4aeacaaa9a7a7a09d9590857b6e665b5044382b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070e0b0a0804000000000000000000000406070f0a06050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131516171614100b050000000000000000000000000000000000000000000000000000000000000000070c141a1e21252a2d2e303131302e2d29241f1b17110a02000000000000000000000000000000000000000000000000000000000003060607070707070707070707070604000406070707070707070707070707060400000000000000000000000000000000000000000001060606060606060606060100000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0e1011070c1013141415151515161616161616161615151515141313100c07100f0e0d0b09060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070808070504101c2934404b55616d7a859299a2a9aeb3b5b7b9bbc0bcbcbdbebebfbfbfc0c0c0c0c0c0c0c0bfbfbfbebebdbcbbbfbab8b7b5b3b1aca7a0979083786c6053463a3024190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f22232323201c160e090300000000000000000000000000000000000000000000000000000000030b12181f252a2d31363a3b3d3e3e3d3a3935302b27221b140b040000000000000000000000000000000000000000000000000000060b0f1213141414141414141414141313100c101313141414141414141414141313100c0700000000000000000000000000000002070b0d0d131313131313131313130e0d0b07030000000000000000000000000000000000000000000000000000000000000000000205090e121415181a1b1c1d1e181d1f20212222222222232323232323222222222121201f1c181e1d1c1b19181513120f0b0604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141514120e131f2c3845515c6774818d97a1abb3babec2c4c5c7c7c5c3c2c1c0bfbebdbdbcbcbcbcbcbcbdbdbebfc0c1c2c3c4c5c6c5c4c2c0bcb8b1a9a0958a7e7164564c4135291d11040000000000000000000000000000000000000000000000000000000407090a0f0f0f0f0f0f0f0f0f0c0b0906010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070808080808080808080808080808080808080808080808080808080808080808080808080808080808080808070502000000000000000000000000000000000000000000000007101920272b2e2f302f2c27211a150c070100000000000000000000000000000000000000000000000000050c151d232831363a3b4246484a4b4b4a4746413a37332d261d160e040000000000000000000000000000000000000000000000020a11171c1f2020202020202020202020201f1c181c1f2020202020202020202020201f1c18120b03000000000000000000000001080e1317191a202020202020202020201a1a17130e0801000000000000000000000000000000000000000000000000000000000002090e12141a1e2121252628292a2b24292c2d2e2e2f2f2f2f2f303030302f2f2f2f2e2e2e2d2c28232a2a2928262422201f1c1713100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e202121211e1a14202d3a4753606d7985929fa9b3bdc5cacec8c6bfbab8b7b6b4b3b2b1b0b0b0afafafafb0b0b0b1b2b3b4b5b6b7b9bbc0c7c8cdc8c3bbb1a79c8f8376685d5245392c20130700000000000000000000000000000000000000000000000000050b101416171b1b1b1b1b1b1b1b1b181815120d06000000000000000004060708080602000000000000000000020303040505050606050302000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151414110e08020000000000000000000000000000000000000000040f19222b32373b3c3d3c38332b261f18120b0300000000000002060a0c0d0c0706040100000000000000050e161e272e343b4246484d53545757575654524c46443f382f2820160e04000000000000000000000000000000000000000000020b141c22282b2d2d2d2d2d2d2d2d2d2d2d2d2c2823282c2d2d2d2d2d2d2d2d2d2d2d2d2c28231d150c03000000000000000000020a12191f2326272d2d2d2d2d2d2d2d2d2d2726231f19120b02000000000000000000000000000000000000000000000000000001070c141a1e20252a2d2e3133343637372f35393a3a3b3b3b3c3c3c3c3c3c3c3c3c3c3b3b3b3a3a38342e3737363433312f2d2b28221f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e2e2d2a251f24313d4a5764707d8a97a2adbbc5cfccc3bcb8b4aeacaaa9a8a6a5a4a4a3a3a2a2a2a3a3a3a4a4a5a6a7a8a9aaacafb5b8bcc3cbcdc3b9ac9f92867a6d6054473a2d2114070000000000000000000000000000000000000000000000000810161c2023242828282828282828282524221d1811090100000000070c1013131514120e0903000002060a0c0c0e0f1011111212121211100e0b080705020000000000000000000000000000000000000000000000000000000000000002020202020202020202020202020202020200050d13191e20212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121201e19140d05000000000000000000000000000000000000000a16202b343d4347494a48443d373129241d150d0903000000070d12161919191413110d080100000000050e172028303940454d5354575e6163646463615d56535049413a322820160c0200000000000000000000000000000000000000000a141d262d3338393a3a3a3a3a3a3a3a3a3a3a38342e34383a3a3a3a3a3a3a3a3a3a3a3a38342e271e150b0b0b0b0b0b0b0b0b0b0b141c242b2f3334393939393939393939393433302b241d140b01000000000000000000000000000000000000000000000000030b12181f252a2d31363a3b3e4041434444454045474748484848494949494949494948484848474645404544434241403e3c3938332d2c28231d150c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202930363a3b3b3a36312b2733404d5a6673808d99a9b3becdcec3b9b1acaaa39f9d9c9b9a9997979796969595969697979798999a9b9c9e9fa3abacb1b9c3cdc7bbafa3998a7d7064574a3d31241706000000000000000000000000000000000000000000000008111a21282c2f3035353535353535353532312e29231b13090000030b12181c1f2022211e1a150e06070d121618191b1c1d1e1e1f1f1f1f1e1d1b181414110e0802000000000000000000000000000000000000000000000000000004090c0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e171e252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2a251f170e050000000000000000000000000000000000020b1b27323d464e545656554f47423c352f271f1a140e08020a12191e2325262621201d19130e090300040d172029323a424b51575e6166696e707171706d6864605b534c443a32281e140a0000000000000000000000000000000000000006111c262f383f44464747474747474747474746454039404546474747474747474747474645403930271d18181818181818181818181c262e363b3f4046464646464646464646413f3c362f261d12080000000000000000000000000000000000000000000000060d151d242930363a3b4246484b4d4e4f5051524b515354555555555556565656565655555555545453514b5151504f4e4c4b4846443f3a38342e271e17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29323b4246474846423b37332d434f5c6976828f9ca9b5c2d0c6bcb1a7a09d9892908f8e8d8c8b8a8a8989898989898a8a8b8c8d8e8f909192999da0a7b1bbc5cbc0b5ab998d8073665a4d402e23170c0000000000000000000000000000000000000000000005101a232c33383c3d4242424242424242423f3d3a342d251b1106030c151d23282c2d2e2d2b261f180f12181e22252628292a2a2b2b2c2c2c2b2a282521201e19140e09030000000000000000000000000000000000000000000002091015191b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1720293036393a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3936302920170d02000000000000000000000000000000000a141d2b37434e586062636159534d454039312a251f19140d131c232a2f3233322d2c29241e1a140f0a0b161f29323a444c545c60696e73787b7d7e7e7d7a76706c655e564c443a30261c11060000000000000000000000000000000000000b17222d38424a50535353535353535353535353514b424b51535353535353535353535353514b43392e232525252525252525252525252e3840474c4d535353535353535353534d4c4740382f24190e03000000000000000000000000000000000000000000060f171f272f353b4246484d535458595b5c5d5e5e555d60616162626262626363636362626262616161605c545e5d5d5c5b59575553504a464540393028221c140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b444d525454534d46443f3844515e6b7784919eaab7c4cabfb4aaa095918986848381807f7e7d7d7d7c7c7c7c7d7d7d7e7f8081828384868a9095a0a9b3bec9c2b5a99c8f827669544a3f34281c10030000000000000000000000000000000000000000000b16212c353e44484a4e4e4e4e4e4e4e4e4e4b4a463f372d23180d0d151e272e34383a3b3a37312a21181c232a2f3233353636373838383939383635312e2d2a251e1a140d050000000000000000000000000000000000000000030c141b2125282929292929292929292929292929292929292929323a414647484848484848484848484848484848484848484848484848484848484848484848484848484848484848484746413b32291f140800000000000000000000000000000006111c262f384754606a6f706b615f57514b433e36312a251e191c252e353b3e403f3a39352f2a251f1a15141d28313a444c565e666d737b8084878a8a8a8986837d776d685e564c42382e23170b0200000000000000000000000000000000030f1c28333f4a545b6060606060606060606060605c544b545c6060606060606060606060605c554b40343232323232323232323232323236404a52585a606060606060606060605a58524a40362b1f13070000000000000000000000000000000000000000040e172129313940454d5254575e61646667696a6a6b6c676d6d6e6e6e6f6f6f6f6f6f6f6f6f6f6e6e6e6d6d666b6b6a6a6967666462605b5453514b423e332d261d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d565e61615e575350494540525f6b7885929eabb8c5c6baaea29891837d797776757372717170706f6f6f7070707171727374757677797d839097a1adb9c6c4b7aa9e918477665c5044382c1f1206000000000000000000000000000000000000000004101c28333e474f55575b5b5b5b5b5b5b5b5b585651493f34291d0d161f2730394045464847423c332a21252e353b3e3f4142434444454545454443413e3b3936302a251f170f08000000000000000000000000000000000000020c151e262c313435353535353535353535353535353535353535303a444c52545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454524d443b3025190e0200000000000000000000000000000b17222d3842505a626f7c7d756e69605d554f46423b36302a251f2e3740464b4c4c4745413a36312b26201b262f3a434c565e686d7880868d91969697979993908a827a6d685e544a3f34281f14090000000000000000000000000000000006121f2b3844505b666c6d6d6d6d6d6d6d6d6d6d6d665c515c666d6d6d6d6d6d6d6d6d6d6d6d675c51453e3e3e3e3e3e3e3e3e3e3e3e3e3e3e47525c64676c6c6c6c6c6c6c6c6c6c67645c52473c3023170b00000000000000000000000000000000000000020c162029333b434b51575e6167696e7173747677777878797a7a7b7b7b7b7c7c7c7c7c7c7c7c7b7b7b7b7a797978787776757473716f6c6664605c5450443f382f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e6e6963605b53514b505c667986929facb9c5c5b8ac9f92867b706d66696867666464646363626263636464646566676869676d707a85929eabb8c5c5b9ac9f9286796d6053463a2d20130700000000000000000000000000000000000000000714202c38444f59616368686868686868686865625b51463a2e22161f283139434b515355534d453c332a2e3740464b4c4e4f5051515252525251504e4b4746413b36312921191108000000000000000000000000000000000009141e2730373d414242424242424242424242424242424242424242414c565e6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161615e564d41362a1e110500000000000000000000000000030f1c28333f4a54616c768289827b736d676159534d46413b36302a3140495157595954514c46423b37312b262d38414c555e686d7a828c92989ea1a8a4aba49f9c948f837a6d665c50443b3025190e020000000000000000000000000000000613202d394653606c787a7a7a7a7a7a7a7a7a7a796d6053606d797a7a7a7a7a7a7a7a7a7a796d60534b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b58646e7379797979797979797979746e64584c3f33261a0d0000000000000000000000000000000000000008131e28323b454d555d60696e73777b7e80818283848585868687888888888889898989898988888888878786868584848382817f7e7b7975716d66615a504a42382d22170b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56616e7b7b75706c65605d5553606d798698a3aebac7c1b5a89b8e8176726f6a6864605d565757565656565656575758595a5b5c555c606873808d99a6b3c0c7bbafa399877b6e6154483b2e21150800000000000000000000000000000000000000000916232f3c4855616b70757575757575757575726d62564a3d31241f28313a434b555c60615f574e463c333040495157595b5c5d5d5e5e5f5f5f5e5d5b5854524c46423b332b2319100700000000000000000000000000000004101b26303942494d4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f525e686d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685e5246392d201407000000000000000000000000010c161f2b3844505b66707d8a938f868079706c615e57524c46413a363a43515b636665605d55534d47433c3732333f49535d676d7a8390949fa3aaadb2b1b5afaca69e959082786d60564d42362a1e1308000000000000000000000000000000091623303c4956636f7c868686868686868686868073665a667380868686868686868686868174685b58585858585858585858585858585858585a677380868686868686868686868074675a4d4134271a0e010000000000000000000000000000000000010d1924303a444d575f676d747b8084878b8c8e8f9091919293999494959595959596969696959595959494949992929190908f8e8c8a8885827e79716c605b544a3f332821160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d68748086827d78726d67615e606d798693a0b4bfcbc5b9ac9f9287827f7c7874716d6866625f585653514b4a4a4a4b4c4d4e4f4b515663707d8996a3b0bccbc0b5ab95897c6f6256493c2f23160900000000000000000000000000000000000000000a1724303d4a5763707d8181818181818181817f7265584b3f322528313a434b555d676d6e695f584e453b3842515b63666869696a6b6b6b6c6c6b696864615e56534d453d352b22190d0400000000000000000000000000000915212c37424b54595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c55616d7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6e6154473b2e21140800000000000000000000000007131d2834404b55606c7883909d99928d847d756e69615e56524c4642414c56636d73726d67615e57534e47433c3a44505b656d798390959fa6aeb4b9bdbdc0bbb9b0a79f948c7f72695e52463a3025190d010000000000000000000000000000091623303c4956636f7c8993939393939393938d8073665a6673808d93939393939393938e817468656565656565656565656565656565656565656773808d93939393939393938d8074675a4d4134271a0e01000000000000000000000000000000000005111d2935414c565f696e7981868d919697999a9c9d9d9e9f9fa4a0a1a1a1a2a2a2a2a2a2a2a2a2a2a1a1a1aba39f9e9e9d9d9c9a999797928f8a847e746c665b50443d33271c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d7a86928f89847e79736d68616d798693a0acb9d1c7baaea399928f8c8885817e7a76726f6a6763605c5454524c4746414142404855616e7b8894abb5c0c7bdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000c1926323f4c5965727f8c8e8e8e8e8e8e8e8e8175685b4f423529323a434c555d676d797b6e6a5f574d453f4a54636d72747576777778787878777674716e68615e574f473d342b1f160c01000000000000000000000000000c1925313d49545d65686868686868686868686868686868686868686868626a77838787878787878787878787878787878787878787878787878787878787878787878787878787878787878785786b5e5245382b1f120000000000000000000000010d18242f3845515c67717e8b95a0a39f96918a827b746e68615e56534d47525d68737f7f7a746e69625f58534e47444f59606c77828f95a0a8b0babfc6c9cfccc7c1b9b0a69f92867b6e61564c41362a1d11050000000000000000000000000000091623303c4956636f7c8996a0a0a0a0a0a0998d8073665a6673808d99a0a0a0a0a0a09b8e817471717171717171717171717171717171717171717173808d9a9f9f9f9f9f9f9a8d8074675a4d4134271a0e0100000000000000000000000000000000000713202d3946525d686e7b838d92999ea0a8a6a7a9aaaaababacafb5aeaeaeaeafafafafafafafafaeaeaeaeb5aeacababaaa9a8a7a6a9a29f9b96918a81786c60594f44382c20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c66727f8c989c95918b85807a746e6d798693a0acb9c6cbbfb4aba39f9c9997918e8a86837f7c7874706d6664605d5654524c4746414753606d7a8699a3afbbbbb9b1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000c1926323f4c5965727f8c989b9b9b9b9b9b8e8275685b4f4235323b444c565d676d7982857c6e695f574d44505c66727f8182838484858585858483817e7a746e6960594f463d31281d1207000000000000000000000000020e1b2834414d59656f7575757575757575757575757575757575757575756f6a77839094949494949494949494949494949494949494949494949494949494949494949494949494949494949185786b5e5245382b1f12000000000000000000000004111d2935414b55606d7984919ea7aea8a19e938f86807a736d68615e575353606d7a868c85807b756f6a625f58534e56606b73808c949ea7b1bac2cbc7c5c2c3c4c7c2baaea2988d8074685e5246392d20150a0000000000000000000000000000091623303c4956636f7c8996a2adadadada6998d8073665a6673808d99a6adadadada99c90827e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e828f9ca9acacacaca79a8d8074675a4d4134271a0e010000000000000000000000000000000005121e2b37424d57616d7a8490959fa3abacb2b3b4b5b6b7b8b8b9bbc0bbbbbbbbbbbcbcbcbcbcbcbbbbbbbbbabfbbb9b8b7b7b6b5b4b2b3adaba8a19e938d80746b6054483c31261b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7984919ea7a09d97928c86817b75798693a0acb9c6d1c6bdb4aeaca9a9a19e9b9992908c8884817d7975716d6865615e5654524c47515d677986929facb5afacaaa6998c7f7366594c403326190d00000000000000000000000000000000000000000c1926323f4c5965727f8c98a5a8a8a8a89b8e8275685b4f42333b444c565e686d79828f91847b6e695e564c53606d79868e8f9090919192929291908e8b86817b706b60584e43392f24180d000000000000000000000000020f1c2935424f5c68758182828282828282828282828282828282828282827c6f7783909da1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19e9185786b5e5245382b1f1200000000000000000000010d13202c3945515d67727f8b96a1acbab2aca69e98928d86807a746e69625f5b65727f8c98928d86817c756f6a625f585d68707d88939fa6b0b9c3c7c0bbb9b5b6b7bcc2bfb4aa9f92867a6d6154473c32261b0f0300000000000000000000000000091623303c4956636f7c8996a2afb9b9b3a6998d8073665a6673808d99a6b3b9b9b7ab9f94908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f949fabb7b9b9b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000714212d3a46535f6974818e96a0a7aeb5b9bdbfc1c2c3c4c3c3c2c1c0c0bfbfbfbebebebebebebfbfbfbfc0c1c2c2c3c4c4c3c3c2c1bfbebab8b2ada59d92897d7063584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b38434e5864717e8a96a1adaca9a19e98928d87817c8895a2afbbc8d8cfc6bfbab9b6b2adababa39f9c9996918d8985827e7a76716d6865615e565452556c7885929fa8aba39f9d9a988d8074675a4d4134271a0e01000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2b4b4a89b8e8275685b4f423b454d565e686d7a8390949691847b6e685e5555626f7b88999c9c9d9e9e9e9f9f9e9c9b99928e857d706a60554b4035291b110600000000000000000000000613202d394653606c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f897d707783909daaaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeab9e9185786b5e5245382b1f120000000000000000000004111d2935414c55606d7a85929ea8b2bdbdb9b0aaa39f98928d86807b756f6a606c7884919e9f99928e87827c756e6a61606d7a84919aa4afb8c1c3bdb5afaca9a9abb0b9c1baaea2988c7f7265584e43372b1f130600000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c7bcb0a69f9c98989898989898989898989898989898989898989898989c9fa6b0bbc7c0b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000815222e3b4855616e7b87939fa8b1bbbfc6c9c7c5beb9b8b7b6b5b4b4b3b2b2b2b2b1b1b1b1b2b2b2b2b3b3b4b5b5b6b7b8b9bec3c4c7cac6c4bdb9aea49d9083766a5f53473a2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a7683909da8b2b8b3adaaa39f99928e888e99a4b0bdc9d8cfc6bfbab9babeb9b8b5afaca9a8a19e9a98928e8a86827e7a76726d6865605d566b7885919e9b989992908d8b888175685b4e4235281b0f02000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f42454d575e686e7a8390959fa19691847a6d675c5764717d8a97aba9aaaaababababaaa9aba39f9792877c6f675d5145382d22170b00000000000000000000000613202d394653606c7986939b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b96897d707783909daab6bababababababababababababababababababababababababababababababababababab8ab9e9185786b5e5245382b1f12000000000000000000000613202c3945515d6773808c97a1adbac4c9c1bcb4aeaaa29f98928d87817c716c707d8a96a0aba39f9a938f87827c746e6b75818e96a1acb6c0c3bab1aba39f9c9c9fa6afb7bfb4aa9d9083776a5f53473b2e21150800000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0cdc2b9b0aba9a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a9abb0b8c2ccc0b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000005111d2a36414c566673808d99a4afbac3cbcac1bbb7b3adabaaa9a8a8a7a6a6a5a5a5a5a4a4a5a5a5a5a6a6a7a7a8a9a9aaabadb3b6b7bcc2cbcfc9c0b8ab9f95887b6f6255483c2f22150700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57626f7c89959fabbac4beb9b4aeaba39f9b9599a0aab5c1cdd1c6bdb4aeacaeb4b7b9bdbbb9b6b2adabaaa29f9b99928f8b86837e7a76716d68646a778491918e8c898683817e7b786c605346392d20130600000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f424d575e696e7a8390959fa7a8a0969082796d605b6673808c99a6b3b7b7b8b8b8b8b7b6b5aea9a2999184796d6053493f33271b0f03000000000000000000000613202d394653606c7986939fa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a396897d707783909daab6c3c5bebab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ab9e9185786b5e5245382b1f12000000000000000000000714212d3a4754606d7a859299a3aebbc7d3cfc6bfbab4aeaaa29f99928e887e7176828f9ca8b2afaca49f9a938e87817b737d89939ea8b2bec3b9b1a8a099928f90949ea5afbdb8aca095887c6f6255493c2f24190d01000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0cccbc2bcb7b6b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b5b7bbc2cacdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000713202d3946525e687784919dabb5c0ccccc1b8b0aaa9a19e9d9c9c9b9a99999998989898989898989999999a9b9b9c9d9d9ea1a9a9abb1b9c1cad4c8bcb1a7998c7f7366594c402f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e6975818e9ba7b1bcc7c9c6bfbab5afaca8a2a4aab2bcc6d7cbbfb4aba39fa3abaaacb2b6b9bbbdb9b7b4aeababa39f9c99938f8b86827e7a75706d77838784817f7c7a7774716f6c665b5044382b1f120600000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f46525e696e7b849095a0a7b1b2a89f948e81756e636875828f9ba8b5b8b8b7b8b9bec4c3bfbbb3aba1968b7f72655b5044372b1f1205000000000000000000000613202d394653606c7986939facb5b5b5b5b5b5b5b5b5b5b5b5b5b0a396897d707783909daab6c3bcb4aeababababababababababababababababababababababababababababababababab9e9185786b5e5245382b1f12000000000000000000000613202c3945515d67717e87929facb9c5d0d8d1cbc6bfbab4aeaba39f96897d707b87939facb9bbb6afaca49f99938e868083909da5afbac4bbb1a7a095918782838e939eabb5bcb1a7998c807366564c4135291d1104000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0ccd4cdc7c4c3bebebebebebebebebebebebebebebebebebebebebebebec2c3c7ccd4cdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000714212e3a4754616d7a8795a0acbdc7cec3bab0a69e9c979290908f8e8d8d8c8c8c8b8b8b8b8b8b8c8c8c8c8d8e8f8f90919297979d9fa7b0b8c1cfcdc2b5a99c8f827669554b4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b86929facafb5b9bdc4c7c7c0bbb9b4afb0b5bcc4ced3c7baaea39992999a9ea0a8a9acafb6b9bbbebab8b5aeacaba49f9c99928f8b86827d79747c7a7775726f6d67676562605b544a3f33281c0f0300000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f4854616e7b849196a0a7b1b9bab0a69e938c80736c677784919eaaacababaaabadb3b5b9c0c5bdb2a89e9184786c605346392d201306000000000000000000000613202d394653606c7986939facb9c2c2c2c2bfbfbfc1c2c2c2bcb0a396897d707783909daab6beb4aaa29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9185786b5e5245382b1f120000000000000000000004111d2935414c55616c737f8c99aab4bfcad6cdc7c4c3c5bfbab5afa49a887b74808d9aa4afbbc5c0bbb6afaba49f98928c9095a0acb7c1beb3a9a09590837c7676818e99a4afbbb6aa9d908377685d5245392c201307000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0ccccc4bdb9b7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b7b8bcc3cbcdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000a1623303d495663707c8996a7b1bcd0c8bdb1a89e948f88858483828181807f7f7f7f7e7e7e7e7f7f7f7f8080818282838485878a90959ea6b0bdc7d1c5b8ab9e928578675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d969b9fa3abacb2b7bbc2c7c7c5c1bbbdc1c6cedfd2c5b9ac9f9286898d9196999d9fa4acacafb5b9bbbfbbb9b5afacaba39f9c98928f8a85807c77726d6763605d55585553504a42382d22170b0000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f4754606d7a838f949fa6b0b9c2b9afa59c928a7e716d7a86939f9f9f9e9e9e9ea1a9a9aeb6c0c4b9aca196887c6f6255493c2f221609000000000000000000000613202d394653606c7986939facb9c5bebab8b2b2b2b5b6bac1bcb0a396897d707783909daab6baaea298929191919191919191919191919191919191919191919191919191919191919191919185786b5e5245382b1f1200000000000000000000010d19242f3a43505a616e7b8798a2aebac7cbc2bcb7b6b8b9beb9ac9f9386797a85929facaeb4b9bdc4c0bbb5afaaa29f999da0a7b1bcc6b9ada19790837a6f6a6e7b87939facb9b9ac9f93867a6d6054473a2d211407000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0cec4bab2acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7aaacb1b9c3cec0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000b1825323e4b5865717e8b98a4b1becec5b8aca0958f827b7877767575747373727272727171727272727373747475767677787a7d838f949eabb5c0cbc6b9ada197877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727f84898f92999ea1a8aab0b9bbc0c7cad0c9cdd2d8d6c9bcafa396897d7c8084888c90939a9c9fa3abacafb5b9bbc0bbb9b5afacaaa39f9b97928d88837e7a746f6a625b514846443f382f261c11060000000000000000000000000000000000000306070c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f45515d676d79828f949fa7b1b9c1b7aea49f92857b6f7c899a9a939292919192979a9da4aeb7c1bdb2a8988c7f7265594c3f32261908000000000000000000000613202d394653606c7986939facb9bbb3adaba5a5a5a8aaafb7bcb0a396897d707783909daab6b8ab9f92868585858585858585858585858585858585858585858585858585858585858585858583776a5d5144372a1e11000000000000000000000008131e28313e46525e697985929facb8c5c2b9b0aba9abadb3b8ab9e9185787e8b949a9fa2aaadb2b8bcc3c0bbb4aeaca6aaacb1b9c3baafa59e92857b6e685f697683909da9b6bbafa4998a7d7063574a3d30241708000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c9bdb2a8a09e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9da0a7b1bcc8c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccc4b7aa9d9184786e696a696968676666666565656565656565666666676868696a6a686d7078828f99a3afbbc7c9beb3a995887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313d4a56626d72787d82868c91969c9fa6acafb5babfc6cacfd6dbded1c4b7ab9e91847e76777b7f83878b8f92999c9fa3abacafb6b8bcc0bbb9b4aeaca9a19e9a95908b85817c726d62574a3938332d261d140a0000000000000000000000000000000000060c101213131926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f414c555d676d79828f959fa7b1babfbaaea2989083787e898887868585858485878d929da5afbbc2b5a89b8f8275685c4f423024190d010000000000000000000613202d394653606c7986939facbeb3a9a29f9898989b9ea5afbab0a396897d707783909daab6b2a5988b7f787878787878787878787878787878787878787878787878787878787878787878787771675b4f4336291d100000000000000000000000010c161f2a36424d576b7885919eabb8c4bcb0a69f9c9ea1a9ada99d9083767d82888d92989ea1a8acb1b8bcc3bfbab8b3b7b8bcc3c3b6aa9e93897d70695e576673808c99abb5c0b5ab998c807366594d403025190d010000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c5b9aca096918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9095a0acb8c5c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0ccbfb2a6998c7f73665f575d5c5b5a5a595959585858585858595959595a5b5c5c5d565d60666e7b87929facb9c5cfbcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222e3a46515b62656c70757b7f848a8f949b9fa3abaeb4b9bec5cad0d6d2c5b9ada196918a837c7472767b7e82868b8f92999c9fa4acacb1b8b9bebfbab9b3adaba7a09d98928d887f7265594c3f3228221c140b02000000000000000000000000000000030a11171c1f20201f26323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f42434c555d676d79839095a0a8b2bcbeb3aa9f958d807b7c7b7a7979787877787b808d939eaab6c3b7aa9d9084776a564c4135291d11040000000000000000000613202d394653606c7986939facbaada297928c8c8c8e939eaab6b0a396897d707783909daab6b2a5988b7f726b6b6b6b6b6b6b6b6b6b6f7c7e7e7e7e7e7e7e7e7b6e6b6b6b6b6b6b6b6b6b6b6b6a675f554a3f33271a0e000000000000000000000000040d1a253045525e6b7885919eabb8c4b7ab9f949092979fa2a99b8e827570767c81858c91969da0a7abb1b8bcc3c5bfc3c5c8cec1b5a89b8e81756b60575663707d8999a4afbbb5a99c8f827669564c41362a1e11050000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c4b7aa9e9184818181818181818181818181818181818181818181818183909daab7c3c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c9bdb0a3968a7d7063544d504f4e4e4d4c4c4c4c4b4b4b4b4c4c4c4c4d4d4e4f4f504c52545e697683909ca9b6c3cabdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4951535b6063686e73787d82888e92999fa2aaadb3babec5cbd0c9bdb2a8a19e949087817a726e72767a7e82868b8f939a9da0a7abadb3b9bbc0beb9b8b1abaaa29f94887b6f6255483c2f2217110a02000000000000000000000000000000030c151c23282c2d2d2b28323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f423a434b555d676d7a839096a1aab3bdbcb1a79d92897d706f6d6c666b6b6b696e75818f9baab4bfb8ac9f928579685d5245392c2013070000000000000000000613202d394653606c7986939facb8ab9f92857f7f7f818e9ba8b5b0a396897d707783909daab6b2a5988b7f72655e5e5e5e5e5e5e5e6673808b8b8b8b8b8b8b8b7e71645e5e5e5e5e5e5e5e5e5e5d5b554d43392e22160a00000000000000000000010509091f2b3845525e6b7885919eabb8c3b6a99c9083858c92979f998d8073666a6f747a7f848a90959d9fa7acb1b9bdc3ccd1d4c9bcafa296897c6f6a625a54606d7a86939facb9b8ab9e928578685e5246392d2013070000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1b4a79b8e817474747474747474747474747474747474747474747474808d9aa6b3c0c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bcafa295897c6f6256494342424140403f3f3f3f3e3e3f3f3f3f4040414142434341454d576773808d9aa6b3c0cbbeb1a5988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232d373f41495053565e61666c70767c81878d92989ea1a9aeb3babfc6cbc4bab2ada69f99938e857e776e696d71767a7e83878c90959a9ea1a9acafb5b9bec3bcb8b2a89c8f82766a5f53473a2e21150600000000000000000000000000000000000a151e262e34383a3938332d3f4c5965727f8c98a5b2bfb5a89b8e8275685b4f42444c545c605d686e7b849198a2abb5c0b9aea49e9184796d61605b5f5e575e63707c8998a2aebabaaea298877a6d6054473a2d2114070000000000000000000613202d394653606c7986939facb7ab9e91847872727e8b98a4b1b0a396897d707783909daab6b2a5988b7f726569696969696969656673808c9797979797978b7e71646565666564615e56514a514f4a433b32271c1106000000000000000000060c1115181f2b3845525e6b7885919eabb8bfb2a5988c7f7a7f858d92988b7e72655f62686d72797e838a90959da0a7acb2bac3ced9d1c4b8ab9e91847c716c605c5d677784909daab7b9ada197877a6d6154473a2e2114070000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1b4a79b8e817468686868686868686868686868686868686868686873808d9aa6b3c0c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6255483c36353433333332323232323232323333333435353630353e4b5865717e8b98a4b1becbbfb2a6998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252d2f383f44464d52545b60636a6f757b80868c92979fa2aaaeb4bbc0c7c4bdb9b0aba49f97928b827b736d66686d71767b7f83888d92979c9fa4abadb2b7bcb9ada1968a7d7164584e43372b1f12070605030000000000000000000000000006111c2630383f444646443f383f4c5965727f8c98a5b2bfb5a89b8e8275685b4f444c565e666d6661696f7c869299a4afbbc0b9aca0968d80736a5f534a524d53606d7985929facb8bfb4aa95887b6e6255483b2f2215080000000000000000000013202d394653606c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727176767676767676716d73808c99a4a4a4a4978b7e716e72727272716e68605c544a403f39322920160b0000000000000000000911181d2224252b3845525e6b7885919eabb8bfb2a5988c7f72727a80868e8a7d706357565d60666d71787d838a90959ea0a8b2bdc8d4d2c5b9ada19691867e746d665d6874818e9ba7afaca69f96897c706356493d3023160a0000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1b4a79b8e8174685b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6773808d9aa6b3c0c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6255483c2e2d2a25262626252525252525262626262728292924303d4a5663707d8996a3b0bcc9c0b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b1d262d33373b41464a5053585f62696e747a80858c92989fa3aaafb5bdc1c8c2bdb5afa9a29f9490867f786f6a6165696e72777c80858a8f93999ea1a9abb1b4aa9e9184786d6053463c31261b141413120f0b0600000000000000000000000c17232e38424a505353504a45414c5965727f8c98a5b2bfb5a89b8e8275685b4f4c565e686d79706b616a707d87939fa5afbabdb2a89f92877c6f62594f4144505c667683909ca9b6bcafa296897c6f6356493c3023160900000000000000000008111a2d394653606c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727e828383838383827f7173808c99a6b1b1a4978b7e717c7f7f7f7f7d7a746d665c51443a302519170e04000000000000000009121b23292e3132323845525e6b7885919eabb8bfb2a5988c7f72686d737b81867c6f62554c52545c60656c70777d838a9196a0acb9c5d2d5c9bdb2a8a198928b81786d6765727e8b98aba49f9b948f8a7e7165584b3e3225180b0000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1b4a79b8e817468616161616161616161616161616161616161616773808d9aa6b3c0c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6255483f3a3936302e2b26201f1c1718191919191a1a1b1c1c232f3c4956626f7c8995a2afbcc8c1b4a89b8e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090b141b22272b3036383f44464e53575e61686d73797f858d92989fa3abafb8bdc3c7c0bbb3ada69f98928c837c736c665e61666a6f74797d82878c91979d9fa7aca3988c7f72665c5044382a20202020201f1b17110a02000000000000000003101c28343f4a545c60605b54524c4c5965727f8c98a5b2bfb5a89b8e8275685b4d565e686e7a837d706a606b727f8c939ea8b2bdbbafa3998f82766b6153493f4a546774818d9aa7b4bdb0a3978a7d7064574a3d3124170a0000000000000000050e1a232c334653606c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c8f8f8f8f8f8d807373808c99a6b3b1a4978b7e737f8c8c8c8b8a8680786d60564c41362a1d1105000000000000000006111b242d343a3d3f3f3f45525e6b7885919eabb8bfb2a5988c7f726560696e747b796d605347454a51535b60646b70787e84919eaab7c4d1dacfc4bab2aaa39f928e82796e686f7c89999f9a938f89837d716c62564a3d3124170b0000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1b4a79b8e81746e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e73808d9aa6b3c0c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6255504a4746413c3b37322d2c2823201d1813110d080e0f15222f3c4855626f7b8895a2aebbc8c2b5a99c8f8276695c4f4336291c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d2d2d33383c43474d53565e61676d737a80868e92999ea5acb1babfc6c5bebab0aaa39f9590877f786e69615a5f62666d70757b80848a90959b9f9f92867a6d61544a3f342d2d2d2d2d2d2b27221b140b020000000000000006121f2c3844505c666d6c66605d56545965727f8c98a5b2bfb5a89b8e8275685b565e686e7a8390867c6f69636d75818f96a1abb5c0b5ab9f94897d70655b50444c5965727f8c98a5b2beb1a4988b7e7165584b3e3225180b00000000000000020d17202c353e4453606c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c989c9c9c9a8d807373808c99a6b3b1a4978b7e75818e98999899928d8074685e5246392d20130700000000000000010c18232d373f454a4b4b4b4b525e6b7885919eabb8bfb2a5988c7f7265575e61696e6d675c51453940444950535961656c727f8c98a5b2bfcbd5d2ccc4bcb4aea59d948f837a6e6d7a8692928e87827c76706b625a50453a2e2115090000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c2b5a89b8f817b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b818e9aa7b4c1c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f63605c5454524c4847433d3a38342e2c2924201d1913110d15222e3b4855616e7b8894a1aebbc7c3b6aa9d9083776a5d50442f24180d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3a3a3a3a3a3a3b42464c52555d60686d737b81878e939da0a8aeb4bcc1c9c2bcb4aea7a099928c827b716c605d555c6064696e73797e83888e92998e8174685e52423a3a3a3a3a3a3a3937332d261d140a000000000000000713202d3a4653606d7879726d6862605865727f8c98a5b2bfb5a89b8e827568575e696e7a83919591847b6e67606d7a849199a3afbbbdb0a69d9083786c6053494a5764717d8a97a4b0bdb2a5998c7f7266594c3f3326190c0000000000000009141f29333e474f55606c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5a9a69a8d807373808c99a6b3b1a4978b7e7784909da5aba39f92867a6d6154473a2e2114070000000000000005111d29343f49515658585858585e6b7885919eabb8bfb2a5988c7f72655958575f61605c554f473d34383f44464f535b6875818e9ba8b4c1cfc9c5c4bec5bfbaafa69f9590847b6f77848d86817b756f6a63615950483f34291d11050000000000000000000001071623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c3b6aa9e938f88888888888888888888888888888888888888888888888e939da9b5c2c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887c736f6d6664615e5655534e4a46443f3a39352f2c2924201d1914212e3b4754616e7a8794a1b6bfbab8b6ab9e9185786b554b4035291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303940454647474747474747474747474b51565e61696e747b828991959fa2aaafb9bdc4c6bfbab1aba39f9490857e756d675f5753575e61666d71767c81868d887c6f62564c474747474747474746443f382f261b11060000000000000a1724303d4a5763707d847f7a746f6a6565727f8c98a5b2bfb5a89b8e8275685e696e7b849195a0969083796d60686f7c87929fa7b1bdb8aca0958a7e71655b50495663707c8996a3afbcb3a69a8d8073675a4d4034271a0d010000000000020e1a25303b454f5961636c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7985929facb5afa3998a7e7164574b3e3124180b000000000000000915222e3a45515b626565656565656b7885919eabb8bfb2a5988c7f72656565656565656360594f44382d33373e45515d677784919eaab7c4c4bdb9b8b1b9bbbfb8b0a7a09691857c7481807b746e6a626058554f473f362d22180c01000000000000000000040c131823303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c6bbafa59e9b94949494949494949494949494949494949494949494949a9da5afbac5c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc3b6aa9d9083807c7975716d6866625f585653504a4745403a39352f2d292520212d3a4754606d7a879aa4afb4aeaca9ab9f928679675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424b5153535353535353535353535353535353575e616a6e757d848c92989ea5adb2bac4cbc3bdb5aea69f98928b81796e69615a5353545c60646a6f757b8082766a605353535353535353535353504941382d22170b000000000005121e2a36424d576774808d8c86817c77726d727f8c98a5b2bfb5a89b8e827568696e7b849196a0a7a0958f82756d626b73808c95a0abb5bcb1a79d9184786c60534855626f7b8895abb5c0b4a79a8e8174675b4e4134281b0e01000000000005111e2a36424d57616b706b7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7b8898a3aebab5ab998d8073665a4d4033271a0d000000000000000b1824313d4a56626d727272727272727885919eabb8bfb2a5988c7f72727272727272726f6b6054483b2f272d3a4754606d7a86939facb9c4bbb2adaba4acaeb5bdb9b1a8a19792857c74736e69625f57544e48443e352d241b1106000000000000000000040d161d2429303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0ccc1b7afaaa8a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a7a9afb7c0cbc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc4b8aca095908c8985827e7a76736f6a6763605c5453514b4745413a3935302d292d394653606c7986939fa9aaa39f9c999992867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545c6060606060606060606060606060606060606060626b70787f868f939ea1a8b2bdc9cfc6bfbbb0aaa29f938e837b706c606060606060606062696e747670606060606060606060606060605b53493f33271b0f03000000000714212d3a46535f6977849198928e89837e7a747f8c98a5b2bfb5a89b8e8275696e7b849196a0a8b1a79e938c7f726a606d79839199a4afbbb8aca0958a7d7063584e54616d7a8799a4afbbb5a89b8f8275685c4f4235291c0f0200000000000714202d3a46525e69707d707986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7d8a96aab3bbb4a79b8e8174685b4e4135281b0e020000000000000c1825323f4b5865727f7e7e7e7e7e7e7f85929fabb8c1b5a89b8e817e7e7e7e7e7e7e7e7d6f6356493c30232f3c4956626f7c899aa4afbbbdb2a9a19e989fa3abb3bbbab2a9a19792857c6f6a5f57534e47433d38332c231b1209000000000000000000010c161f282f35393c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0ccc9c1bbb6b5aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb4b5bac0c9cdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc8bcb1a7a09d9997928e8b86837f7c7874706d6664605d5554524c4746413a3935303844505b667885929f9c9998928f8c8986837a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d727b828a9196a1adb9c5d2d1cbc2bcb3aea59e9590857e736d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c655b5044372b1f1205000000000815222e3b4855616e7b8896a09f9b95908b8581818e9aa7b4c1b5a89b8e82756e7b849196a0a8b2b9b0a69f92877c6f68666f7c87939faab3bcb1a79c8f82766a605453606c7986939facb9b6a99c8f8376695c504336291d060000000000000814212e3b4754616e7b867c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7f8c99a1a9b3b5a89b8e8275685b4f4235281c0f0200000000000613202d394653606c79868b8b8b8b8b8b8b9298a2aebac3b6aa9e938e8b8b8b8b8b8b8b8b8174675a4e41342e333e4b5865717e8b98acb6c0b9ada196918b9299a1a9b1b9bbb3a9a29792857c6f695f564c433a302c28211a11090000000000000000000007131d28313a4145474956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1c1c1c1c1c1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbc1c1c1c1c1c1c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdcdc3b9b1acaaa9a29f9b9993908c8884807d7975716d6764605d5654524c4746413a393f4a5e6b788491928f8c898683807d7a766d685e5246392d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a797d85919eabb8c4d1dcd7cec5bebaafa7a098928a807a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776c605346392d20130600000004101c2834404b5465727e8b98a8aca7a09d98928e8e939da9b6c1b5a89b8e82756e7b849197a1a9b3bcbbaea39991847a6d606a74818e98a2aebab7ab9f94887c6f6255505b667885929eabb8b7aa9d9084776a5d51442d22170b000000000005111e2a36424d5665727f8b84798693a0adb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e818c9297a1adb5a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939898989898989fa2aab3bec6bbafa59e9b989898989898988d8174675a4e45404140404d5a6773808d9aa6b3c0b8ab9e91847e879297a0a7b0b8bbb3a9a29792857b6e685e554b42392e23180c0800000000000000000000010d18242f3a434b51545156636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdd5cbc3bcb8b6b3adababa49f9d9996918d8985817d7a75716d6865615e5654524c474541515d6a77838985827f7c797673706d67615e564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a67748086868686868686868686868686868686868686868686868686868a9196a1adb9c5d2dfe0d7d0cac1b9b1aaa29f928d87868686868686868686868686868686868686868686868686867b6e6154483b2e21150800000006131f2c3845515c6675828f9ca8b5b1acaaa29f9a9a9da5afbac1b5a89b8e8275696e7b859197a1aab4bfb5aba1968e81756b616d7a85929fa9b2bbb0a69a8e8174675d51546a7784909daab7b7ab9e9184786b5e4a3f33281c0f03000000000714202d3a46525e697683908e818e9aa7b4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7e7f85929eabb5a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939fa5a5a5a5a5abaeb3bcc5ccc1b7afaaa8a5a5a5a5a5a59a8d8174675a53514b4e4d4b4f5c6875828f9ba8b5c2b5a99c8f82767d8591959fa6afb7bbb3a9a19791847a6e675d544a4034281c10040000000000000000000004111d2935414b555d605d55636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cddad5cdc8c4c3bebab8b5afaca9a8a19e9a97928e8a86827e7a76716d6865615d5654514b4a5764717e7c7976726f6d666663605d55524c443a3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d93939393939393939393939393939393939393939393939393979ea1a8b2bdc9d5e1e9e1dbd6cbc3bcb3aea49d9a93939393939393939393939393939393939393939393939393877b6e6154483b2e2115080000000713202d3a4653606d7985929facb8bcb8b4aeaca7a7a9afb7c0c1b5a89b8e827568696f7c859298a2aebabdb2a89e938a7d706768727f8c97a1adb9b8ab9f9285796d60535c6976838f9ca9b6b8ab9f928578665b5044382b1f1206000000000814212e3b4754616e7b8793928e929da9b5b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174818e9ba7b4a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939facb1b1b1b1b8babec5ced3c9c1bbb6b5b1b1b1b1b1a79a8d81746762605c555b595856566a7784919daab7c0b3a79a8d8074707b838f949da5afb7bbb3a9a1969083796d665c5144382c1f1206000000000000000000000613202c3945515d676d6762636f7c8996a2afbcc0b3a6998d8073665a6673808d999b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cddad4ccc7c3c2c5c6c5c0bbb9b6b2acaba9a29f9b98928f8b86827e7a76716d6864605d555355616c716f6d666663605c545653514b46413a32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a4abadb2bac4cfdae5eaeae6ddd5cec5bebaaea8a6a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094877b6e6154483b2e2115080000000a1623303d495663707d8998a2aebac7c5bfbab8b4b4b6bac0c9c1b5a89b8e8175706d6a6f7c86929fa4aeb8baafa59e9184796d606d7984919ea9b3baaea2988a7e7164565b6875828e9ba8b5b9ac9f9386796c605346392d20130600000005111e2a36414d5665727f8b9a9d9a9da5afbab7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939facb9bebebec5c6cad0d7dbd3ccc6c3c1bebebebeb4a79a8d81746e6e6d67696866646361687985929facb8beb1a5988b7e72696e7a828e939da5afb7bbb2a8a0958f82796d6053463a2d201307000000000000000000000714212d3a4754606d7a716c636f7c8996a2afbcc0b3a6998d8073665a6673808d8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdd4cac2bbb7b5b8babec4c5c6c3bdb9b7b3adabaaa39f9b99928f8b86827e7a76716d6764605c5a616462605c545653514b4a4745403935302820160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7adadadadadadadadadadadadadadadadadadadadadadadb0b8b9bdc4ccd6e0e0deddddddddd7d0cac0b9b5b3adadadadadadadadadadadadadadadadadadadadadadada194877b6e6154483b2e211508000004111d2935414c566773808d9aaaafb5b7bcc2c5c5c1c1c2c6cbd2c6b9ac9f9387827d78736e717e8a929ca5afbab9aca1968d80746a67727f8b97a1adb9b3aa9c8f8276685e5b6774818e9aa7b4bbafa49a877a6d6054473a2d2114070000000714202d3946525e687683909caca7a9afb7c0b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939facb7b7b7b7b9bbc0c7d0d7cdc5bebab8b7b7b7b7b4a79a8d81747a7b7978767473716f6e6d7a8798a2aebabfb4ab96897d7063686d78818e939ea5afb7b3a9a19791847b6e6154483b2e21150800000000000000000006131f2b38434e586673807e716a6f7c8996a2afbcc0b3a6998d8073665a64717e8282828282828282828282828282828282828282828282828282828282828282828282828282828282828282827e7164584b3e3125180b000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdccc2b8b0aba9abadb3b7b9bdc3c5c5c4bebab8b4aeacaba39f9c99928f8b86827e7a75706d6763605b5353504a494645403d3a39352f29251e160e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bdc4c5c9cfd6dfd9d4d1d0d0d0d0d0d0d2cac5c1c0bab9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9aea194877b6e6154483b2e21150800000713202c3945525d687784909c9fa3ababb0b7b8bdc3c6cacfd7d4c7bbafa499938f8a847f7b7573808d939ea8b2beb2a89f92877c6f626d7985929eabb5b9ac9f93867a6d615a6773808d9aa6b3c0b6a194877b6e6154483b2e2115080000000814212e3b4754616e7b87939facb4b5bac0c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939fabababababacafb5bdc7cfc5bbb3adababababababa79a8d81747f8886848381807e7c7b797c8895aab4bfbaaea399877b6e615d666d78818e939ea5afa9a29792857c6e695e52463a2d23190f0400000000000000000815222e3b4754606a7784867c6f6f7c8996a2afbcc0b3a6998d8073665a616c71757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575716c6256493d3024170a000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc7bbb0a69f9c9fa2a9abadb2b7b8bcc3c4c6c5bfbab8b5aeacaba39f9c99928f8b86827d79746f6c65615f5753514b454039312c29241d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c5c7cbd1d2d5daddd5cec8c5c3c3c3c3c3c3c5c7cbd1cdc6c6c6c6c6c6c6c6cfcac6c5c3c3c3c3c3c3c3c3c3baaea194877b6e6154483b2e21150800000714212d3a4754606d7a868b8f92999c9fa6aaacb2b8b9bec5cdd7ccc0b5aba49f9c96918c87827d77818f96a1acb6bbafa3998f82756a6773808d99a4afbbafa4998b7e71645466737f8c99a6b2bbaea295887b6f6255483c2f221509000005111e2a36414c5665727f8b99a4afbbc2c5cbc4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939e9e9e9e9e9e9fa4abb5c0cabeb3a9a29f9e9e9e9e9e9e9a8d8174808d9391908e8c8b89878584919eabb8c4b9ac9f9286796f6d6769666c78818e939ea5a29792857c6f6a5f574d433d352b21160a0000000000000003101c28343f4a54626f7c8991847a6f7c8996a2afbcc0b3a6998d8073665a5a6164686b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6864625a5045392d211508000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc3b7ab9f948f92979a9ea1a8aaacb1b6b8bcc3c5c7c5bfbbb9b5afacaba39f9c98928e8a85817c78736e6964605d55514b43392f2318120d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b9babfc6cfd8dfd5cbc3bcb8b7b6b6b6b6b6b9bbbfc6cfd7d3d3d3d3d3d7cdc5bebab8b6b6b6b6b6b6b6b6b6b6aea194877b6e6154483b2e21150800000713202c3945525d686d7a7e82868b9094999ea0a8abadb3bbc0c8d2c7bdb5afaca8a19e99928e81757a84919aa4afbbb5ab9e94897c6f626e7b87939facb9b5ab9b8e8275665c65727e8b98a5b1bcafa296897c6f6356493c3023160900000714202d3946525e687683909cabb5c0ccd1d1c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986919191919191919399a4afbbc6baada29792919191919191918d8174818e9b9e9c9b99979698929196a1adb9c5b8ab9e92857e7b7a787674737178818e939e9892857c6f6a5f5756544f473d32271b0f0300000000000006121f2b3844505c6674808d968e81757c8996a2afbcc0b3a6998d8073665a54606b6f78787878787878787878787878787878787878787878787878787878787878787878787878787878787878756f65594d3e34291d1105000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc2b5a99c8f8285898d9196999da0a7aaabb1b7b8bdc3c5c7c5c0bbb9b5afacaaa39f9b97928e8984807b76716d67605c554b4034291c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaeb4bdc6d1d9cec3b9b1acaaaaaaaaaaaaacaeb5bdc5ced6dfe8e6dbcfc5bbb3adabaaaaaaaaaaaaaaaaaaaaaaa194877b6e6154483b2e211508000004111d2935414c565d676d71757a7e83888c91969a9ea1a9aeb6c0cbd0c7c0bbb9b2adaba39a8d8073707d88939fa8b2bdb0a69c8f82766b6975828f9ca8b2b8ab9f9285796d6064717e8a97a4b1bdb0a3968a7d7063574a3d3024170a00000814212e3b4754616e7a87939facb9c6d2ddd1c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f03000000000005121e2b3845515e6b78848484848484848487939facb9c5b8ab9f928584848484848484848075828f9ca8a9a7a6a4aaa39f9ea1a9b2bdc6b9ada297928a88868583817f7e7c7a818e9b92867c6f6d6769686360594f43382c1f13070000000000000713202d3a4653606d7985929e938b7e7d8996a2afbcc0b3a6998d8073665a56636f7d858585858585858585858585858585858585858585858585858585858585858585858585858585858585858175685b4f4235281c0c00000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887c797d8084888c9095989d9fa7aaacb1b7b9bdc4c6c7c5c0bbb9b4aeaca9a29f9a96918c88837e79746d675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9a9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb4bfcbd4c8bcb1a7a09d9d9d9d9d9d9fa3abb3bcc4cdd6dee2d6cabeb3a9a29f9d9d9d9d9d9d9d9d9d9d9d9d94877b6e6154483b2e2115080000010d1924303a444c555d6064686d72767b7f84898d92979da4aeb9c5d1d2ccc7c4bdb9b5a5988c7f726b74808d96a0acb8b7aa9f94897c6f63707d8a96a0acb9aea298897c706363707d8a96a3b0bdb0a4978a7d7164574a3e3124170b00000c1825323f4b5865727e8b99a4afbbc7d2ddd1c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f03000000000004111d2a3743505c6872787878787878787885919eabb8bfb2a5988c7f7878787878787878737683909da9b6b4b3b1b4aeacabadb2bbc4cabeb3a9a29e97959791908e8c8a888785929b8e817d7b7a7876746f6b6054483b2f221509000000000004101c2934404b5563707d8997a19f92867e8a97a4b1bdc0b3a6998d8073665a5663707d8991919191919191919191919191919191919191919191919191919191919191919191919191919191918f8376695c504336291d1003000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f7074787c8084888c9095999da0a8abadb2b8babec5c7c7c5bfbab8b3adaba8a09e9994908b8581796d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d90909090909090909090909090909090909090909090909299a3aebac7d1c5b8aca0959090909090909299a2a9b3bbc4ccd6ded3c6baada2979290909090909090909090909090877b6e6154483b2e211508000008131e28323a41464c5154565e6165696e73777c80858d929da9b5c1ceccc7c3c2bfbdb0a4978a7d71646d7984919ea6b0bdb0a69b8e8275696c7884919eaab7b3aa998c807366636f7c8996a2afbcb1a4988b7e7165584b3e3225180b00000b1724313e4a5764717d8a949fabb5c0ccd7d1c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f030000000000020f1b27333f4b5660686b6b6b6b6b6b6b7885919eabb8bfb2a5988c7f726b6b6b6b6b6b6b6b7884919eabb7bfbfbebfbab8b8b9bdc4cdcfc5bbb3adaba3a9a19e9c9b9997959792979e938e8a88868583817d6f6356493c30231609000000000006131f2c3845515c6774818e9ba9a2989185919eabb8c4c0b3a6998d8073665a5663707d89969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9c8f8376695c504336291d1003000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f63676a6f73777b7f83888c91959a9ea1a8abaeb3b7bcc2c6c9c7c5bebab8b2acaaa69f9c988f8276675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f83838383838383838383838383838383838383838383838387929facb9c5d0c3b7aa9d90838383838383879297a1a9b2bac4ccd6d2c5b8ab9f928583838383838383838383838383837b6e6154473b2e21140800010d1925303a444c5254575a555d60626567676a6f7478808d9aa7b3c0cac2bbb7b5b2b7b5ab96897c6f6367707d8a949eabb5b9ac9f92877b6e65737f8c99a8b1b6a99c8f837666626f7b8895a2aebbb2a5988b7f7265584c3f3225190c00000a1623303c4955616c76829099a4afbbc5d0d1c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f030000000000000b17232f3a444e565c5e5e5e5e5e5e6b7885919eabb8bfb2a5988c7f72655e5e5e5e5e5d677985929facb1b3b4b6b7b9bbc0c7c9cfd6d7cdc5beb9b8b0b2adaba9a7a6a4a9a29fa2a59e9b969a9391908b7e7164584b3e3125180b00000000000714202d3a4753606d7985929fabaaa1979197a1adb9c6c0b3a6998d8073665a5663707d8996a3abababababababababababababababababababababababababababababababababababababa99c8f8376695c504336291d1003000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6258606266696e72777b7f84888d91969a9fa2aaabb0b8b9bec5c8cac6c4bdb9b7b0aa9e94897c6f62554b4034291c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825313e4a57636d7277777777777777777777777777777777777777777777777884919eabb7c4c7baaea194877b77777777777d859197a1a8b2bac4ccd2c5b8ac9f92857c777777777777777777777777776e685e5246392d2014070005111d2a36414c565e61646669676d6f7174736e6266727f8c98a5b2bfc2b8b0aba9a5aaaca499877b6e61616b75828f99a3aebbafa3998c8073656f7b8895a0acb8ac9f9285796d616e7b8794a1aebab2a5998c7f7266594c3f3326190c00000814212d3944505a626f7c87939faab4bfcad1c4b7ab9e91847876767e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000007121d28323c444b504d575e6163636b7885919eabb8bfb2a5988c7f72656363636363616d7a8798a2aba4a6a8a9abacafb5bdbec6d0d7d0cac6c5c1bdbeb9b8b6b4b2b1b3adabadafaaa8aca49f9e968a7d7063574a3d3024170a0000000004111d2935414c5664717d8a98a2aeb3a9a19ea1a9b3bec9c0b3a6998d8073665a5663707d8996a3b0b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b6a99c8f8376695c504336291d1003000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f62555455575f6165696e73777c8084898e92989c9fa6abadb3b9bbc0c7cac9c7beafa59c8f82756a605443392f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222e3a46515b63656a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6b7884919eabb7c4c7baaea194877b6e6a6a6a6b707c859196a1a8b2bac4ccc7baaea29892857b6e686a6a6a6a6a6a6a6a6a6a615e564d41362a1e1105000713202d3946525e686d717375787a7c7e8080736765727f8c98a5b2bfbbb0a69f9c999da09f9386796d6059626e7b86929fabb5b5ab9e9184786c6a7784919daab7aea298897c6f626e7a8794a1adbab3a6998d8073665a4d4033271a0d000004101c28333e47545f6a74818e98a2aebac5d0c5b9ac9f928683838384919eaab7b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f03000000000000010c16202a323a3a46535e696e7070707885919eabb8bfb2a5988c7f727070707070706e6e7b8893999698999b9c9e9fa4abacb4bec8cdc5bebab8b4b6b7b9bbbfbebfbdbebab8babab6b4b6afaca295887c6f6255493c2f221609000000000713202c3945525d6875828f9baab3bbb3adabadb3bbc4cfc0b3a6998d8073665a5663707d8996a3adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadada99c8f8376695c504336291d1003000000000000000000000000000406070f1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f625548494d5355575f61666a6f73787c81858b90949a9ea1a9acafb6babec5c0b6ac9e93887c6f62584e4331271d120708040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2a353f495157595d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5e6b7884919eabb7c4c7baaea194877b6e615d59606a6f7b849196a1a8b2bac4cabfb4aaa19791837a6d665c5d5d5d5d5d5d5d5d54524d443b3025190e02000714212e3a4754616d7a7e80828486898b8d85786865727f8c98a5b2bfb7ab9f948f8c91969a918578665c535f6974818d99a3afb9aca196897c706673808c99a8b2b4aa988b7f72656d7a8793a0b5bfb3a79a8d8074675a4d4134271a0e0100000b17222b37434e58616e7b86929fa9b3becac7baaea398929090909196a0acb9b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000000050f1820212e3b4854616e7b7d7d7d7d85929fabb8c1b4a79a8e817d7d7d7d7d7d7d7b6f7c848688898b8c8e909193999aa2acb7c2c5bbb3adaba7a9aaacaeb5b1b3b4b6b7b9bbc0bec0c0bbb3a994877b6e6154483b2e211508000000000714212d3a4754606d7a86929facb9c4beb9b8b9bec4cdccc0b3a6998d8073665a5663707d8996a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09c8f8376695c504336291d10030000000000000000000001070c1013141b1b2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6255483c4246484d5355585f62656c6f74797e83888d92979c9fa4acaeb4b9bbafa49a8f82756a6054463d321f15171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18232d373f464a4c505050505052585a5d5d5d5d5d5d5d5d5d5d5d5d5d5e6b7884919eabb7c4c7baaea194877b6e615d5d585f696e7b849196a1a8b2bdc9c6bcb3a9a0958f82786d605a505050505050504746413b32291f14080000091623303c4956636f7c898d8f91939a9897877a6d65727f8c98a5b2bfb5a99c8f827f84898e9083776a5c605c616e7b87929fabb5b2a89a8d8174666f7c8896a0acb4a79b8e8174686d798699a3aebbb4a79a8e8174675b4e4134281b0e010000050f1b26323c46525e68737f8c97a2adbac6cbbfb4aaa39f9c9c9c9ea0a8b2bdb0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f03000000000000000008121a25323f4c5865727f898989899297a2adbac2b5a99d938e898989898989897f726f78797b7c7e80818384868a909aa6b2bfbeb3a9a29f9a9c9e9fa3aba4a6a7a9abacafb5b1b3b4b6ada29786796d6053463a2d201307000000000b1825323e4b5865717e8b98a3aebac7c9c6c4c6c9cfd6ccc0b3a6998d8073665a5663707d8993939393939393939393939393939393939393939393939393939393939393939393939393939393938f8376695c504336291d1003000000000000000000030b12181d1f2028282834414d5a6774808d9aa7b3c0c5bbaea295887b6f6255483c363a3c4247484e53535b6063676d71767b80858a8f939a9fa2aaacb2ab9f93877c6f62584e43342b28282423201c171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c252d353a3e3f44444447525c64676a6a6a6a6a6a6a6a6a6a6a6a6a6a6b7884919eabb7c4c7baaea194877b6e6a6a6a6a6a6a696e7b849196a1adb9c5cec5bbb1a79f948d80736c61584e43444444443b3936302920170d0200000714202d3a4753606d7986929c9e9fa4a996897c6f65727f8c98a5b2bfb5a89b8e8175777c8185817568666d665e6974818e99a4afb8ab9e9285796d6a7784919eaab7aa9d91847767667986929facb9b4a89b8e8175685b4e4235281b0f020000000a15202a36414d56606d7a85929faab4bfcbc6bcb4aeaca9a9a9aaacb2babcb0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f030000000000000008121a242c363f4c5865727f8b9696969fa2a9b3bec5baafa59d9a9696969696968c7f7265666d6e707173757678797e8a97a4b1bdbaada297928e8f9192999697999b9c9e9fa4aba4a6a8a9ab9f928578665c5145382c1f1306000000000d1a2733404d5a6673808d96a1adb9c1ced2d1d2d5dad9ccc0b3a6998d8073665a5663707d878787878787878787878787878787878787878787878787878787878787878787878787878787878787878276695c504336291d10030000000000000000030d151d24292c2d35353535414d5a6774808d9aa7b3b9b9b9aea295887b6f6255483c2f2d31373a3c4347495053555d60646a6e73797d82878d92989ea0a8a4998e81756a5f53463c3235353531302d28221a120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c232a2e313237373f4c58646e737676767676767676767676767676767884919eabb7c4c7baaea194877b767676767676767676767b84919eabb7bec4cdc3b9b0a69d928a7e716a5f554b403537372e2d2a251f170e0500000006131f2c3845515c677783909daaacafa4988b7e7165727f8c98a5b2bfb5a89b8e82756a6f747a7c6f6c71796d68626e7b87939facb9ada197897c6f6774808d9aacb6ac9f93867a6d6c7885929fabb8b5a89b8f8275685c4f4235291c0f02000000040e1925303b45515d6773808d98a3aebac7cfc6bfbab9b6b6b6b7b9bdc3bcb0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000009121a242c363e48505965727f8b98a3a3abadb3bbc5cbc0b7afa9a7a3a3a3a3a3988c7f72655c6061636566686966717e8a97a4b1bdb8ab9f92858183848687898b8c8e909193999698999b9d9e9d9184776a544b4034281c1004000000000714212d3a4754606d7984919ea5afbcc5d0dbdfe1e6d9ccc0b3a6998d8073665a53606d787a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d6053473a2d2014070000000000000000010b151f272f35393a42424242424d5a6774808d9aa7acacacacaca295887b6f6255483c2f22262b2d3237383f44464b5153585f62666d71767b80858b91969c9f93877c6e62584e4342424242423d3c39332c241a100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a11181e2225262a34404d5a6773808383838383838383838383838383838387929facb9c5d0c3b6aa9d9083838383838383838383838384919eabadb3bbc0c8c2b8aea49f92867c6f675d51453e332921201e19140d050000000004101c2934404b556774818d9aa7b4b3a69a8d807367727f8c98a5b2bfb5a89b8e82756862676d6f6d757e847a6d616975828f9ca9b2b3a99a8d807367707d8a9aa4afafa499897c6f6b7885919eabb8b5a99c8f8276695c4f4336291c10030000000008141f2935414b55616e7a86929facb6c0ccd1cbc7c5c3c3bfbfbfbfbfbcb0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f03000000000009121b242c363e48505a616c737f8c99a6b0b8babec5cdcfc9c0bab5b4b0b0b0b0a5988c7f7265606266656362605d65727f8b98a5b2beb7aa9d9083777677797b7c7e808183848688898b8d8e9091938f8376695c50432e23180c00000000000613202c3945515d67707d89939eaab4bfcad6e0ebe6d9ccc0b3a6998d8073665a505c666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d675d5145392c201306000000000000000007121d2731394045474e4e4e4e4e4e5a6774808d9a9f9f9f9f9f9f9f95887b6f6255483c2f221a1e21262b2d3337394045474e53545c6064696e747a7f848a8f948e81756a5f534e4e4e4e4e4e4e4a49443e362c22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d1216181c2936424f5c6975828f9090909090909090909090909090909299a3aebac7d1c4b8aca0959090909090909090909090909196a19ea1a9aeb6c0cac0baaea2989183796d605a50453b31251a110e08020000000000000c18232f3f4b5865727e8b98abb5b5a89b8e827568727f8c98a5b2bfb5a89b8e8275685c606b707a818a8e81746a64707d8a96a1adb7aa9d918477696d7a86939facb5ab988b7e726b7784919eaab7b6a99c908376695d5043362a1d100300000000020d18242f3a46525e6874818e9aa4afbbc8d4ccc4bdb9b7b2b2b2b2b2b2b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000020b1b242d363e48505a616c707e87929facb9c5c3c2c2c2c2c2c2c2c2c1bcbcbcb2a5988c7f72656a6f7372706f6d686a73808d99a6b3c0b6a99c8f837669666d6e707173747678797b7c7e8081838586888175685b4f4235281c07000000000004111d2935414b55606b74818e98a2aebac4cedae5e6d9ccc0b3a6998d8073665a535e696e72727272727272727272727272727272727272727272727272727272727272727272727272727272727272716c6155493d3023170a00000000000000000c18242f39434b51535b5b5b5b5b5b5b6774808d929292929292929292887b6f6255483c2f221512151b1b22272b2f35393c43474b5153575f61676d72787d8288877b6e61585b5b5b5b5b5b5b5b575550483e33281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090f1c2936424f5c6975828f9c9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb4bfcbd4c8bcb1a7a09d9d9d9d9d9d9d9d9d9d9d9d9ea19791979ca4aeb8c1cabfb4aaa0958e81746c61574d42362a21170d03000000000000000716232f3c4956626f7c8999a3afb6aa9d9083776a727f8c98a5b2bfb5a89b8e827568666d737d848e9393877c6f626d7984919eabb8aca095877b6e687784909daab4a79a8d81746a7784909daab7b6a99d9083766a5d5043372a1d1004000000000007131d2a36414c56626e7b87939facb9c4cec4bab2acaaa5a5a5a5a5a5a5a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807575808c99a6b3b1a4978b7e7575808d9aa7b3a89c8f8275695c4f4236291c0f03000000000a141d2d363e48505a616c717e879299a3aebab8b6b6b6b6b6b6b6b6b6b6b6b6b6b2a5988c7f72656f7c807e7d7b7a797776818e9ba7b4c1b5a89b8e8275686060616364666869666d6e7071737576787a7b7c6e6255483b2f2215080000000000010d18242f3a434f59616e7a86929fa8b2bdc9d5dfe6d9ccc0b3a6998d8073665a54616e7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7164574b3e3124180b0000000000000004101d2935404b555d606868686868686868738087868686868686868686877c6f6255483c2f22150a0a0f11171b1f24292c3137394045464d53555d60666c70767c7e71696868686868686868686864615a5044392d2014080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca8a9a9a9a9a9a9a9a9a9a9a9a9a9acaeb4bdc6d1d9cdc3b9b1acaaa9a9a9a9a9a9a9a9a9a9a9ab9e91858d929ca6b0b9c3c5bcb1a89d938a7e71695e53463f33291f1409000000000000000714202d3a4753606d7a86929facb8ab9e92857867727f8c98a5b2bfb5a89b8e82756a6e79808791969e999082766c6673808c99a7b1b1a8978b7e716774818d9aa7b4a99c9083766a7783909daab6b7aa9d9084776a5d5144372a1e11040000000000010e1925303b47535f6975828f9ba9b2bdc9bdb2a8a09e999999999999999996897d707783909daab6b2a5988b7f727f8c98a5b2aa9d9183818183909daab7b6a99d9083818183919daab5a89c8f8275695c4f4236291c0f0300000006111b262f3e48505a616c717e879299a3abb4b1aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a5988c7f7265727f8b8b8a888785848284919eabb8c0b3a79a8d80746f6d686a6967666463616061636566686a676d6e6e6a5f53473a2e21140800000000000007131d28313d46525e68727f8c96a1acb9c3ced9e5d9ccc0b3a6998d8073665a5663707d898c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8276695c504336291d100300000000000006131f2c3945515d676d7575757575757575757579797979797979797979796f6a5f53473a2e211717171717171717181d1f262b2e34383c42464c51545b60646a6f716c7175757575757575757575706c6155493c3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca8b5b6b6b6b6b6b6b6b6b6b6b6b6b9babfc6cfd8dfd5cbc3bcb8b6b6b6b6b6b6b6b6b6b6b6b5a89b8e81808d939ea7b1bcc6c3baafa59f92857b6e615a50453b30251a0e0200000000000006131f2c3845515d677784919eaab7ada297867a6d727f8c98a5b2bfb5a89b8e82756e7c838d9399a1a89f948a7e71676e7b8895a0acb4a79b8e817468717d8a97a9b2ab9e928578687683909da9b6b7aa9d9184776a5e5144372b1e110400000000000008141e2b37424d5763707d8996a1adb9c5b9aca096918c8c8c8c8c8c8c8c8c897d707783909daab6b2a5988b7f727f8c98a5b2aca095918e8e9095a0acb8b7ab9f95908e8e9195a0acb5a89c8f8275695c4f4236291c0f030000000b17222d3841505a616c717e879299a3abb4b1a79f9d9c9c9c9c9c9c9c9c9c9c9c9c9c9c988c7f726673808c9896959892918f9196a1adb9c2b5a89c8f827d7b7a7877767472716f6e6d666968666563626062625f574e42372b1e1206000000000000010c161f2a36414c56606d7984919ea8b1bdc8d4dfd9ccc0b3a6998d8073665a5663707d8996999999999999999999999999999999999999999999999999999999999999999999999999999999998f8376695c504336291d10030000000000000714202d3a4753606d798181818181818181818180736c6c6c6c6c6c6c6c6c625f584e43372b232323232323232323232323232323282c31373a41454a5053585f6265717e818181818181818181817e7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca8b5bebebebebebebebebebebebec5c6cacfd7dfe3d9d1cac4c0bfbebebebebebebebebebeb5a89b8e8279828f95a0aab4bfcac0baada2978f82766c62574d42362a1e120500000000000004101d2935404b556875828f9ba8b5b3a995887b6f727f8c98a5b2bfb5a89b8e8275798490959fa4abb0a69e9184796d697784919daab7ab9e918478696e7a8796a1adada197877a6d7683909ca9b6b7ab9e9184786b5e5145382b1e1205000000000000020e1a26313c4653606c7884919eabb8c3b7aa9e91847f7f7f7f7f7f7f7f7f7f7b6e7783909daab6b2a5988b7f727f8c98a5b2b1a7a09d9b9b9da0a7b1bcbcb1a79f9d9b9b9da0a8b1b5a89c8f8275695c4f4236291c0f030000030f1b27333f4953616c717e879299a3abb5b8ab9f95908f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8c7f726774818d9aa3aaa29f9d9c9ea1a8b2bdc3b7aa9e948f8a8887858482817f7e7c7b797876757372706f6d68665e54453c31261a0e0200000000000000040d1925303b45515c67717e8a95a0acb8c3ced9d9ccc0b3a6998d8073665a5663707d8996a3a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59c8f8376695c504336291d10000000000000000714212d3a4754606d7a878e8e8e8e8e8e8e8e8e83776a5f5f5f5f5f5f5f5f55534e463c3130303030303030303030303030303030303030302f35383f44464e535a6774808d8e8e8e8e8e8e8e8e8c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca8b1b1b1b1b1b1b1b1b1b1b1b1b1b8b9bec5cdd7dbd1c7bfb8b4b2b1b1b1b1b1b1b1b1b1b1b1a89b8e827579839198a2aebac0cabeb3a99f948b7e71695e52463a2d201407000000000000000c18242f404d5a6673808d99a6b3b1a5988b7f7c7c808d9aa7b3c0b5a99c8f827c7c808d9aa7afb5b9ada1968c7f726773808d99a9b2aca196877b6e687885919eabb3a996897c6f76838f9ca9b6b8ab9e9185786b5e5245382b1f12050000000000000009151f2b3844505b6673808d9aa7b1bcb8ac9f92857a7272727272727272726e697783909daab6b2a5988b7f727f8c98a5b2b9b1acaaa8a8aaacb1b9c3c2b9b1aba9a8a8aaacb1bab5a89c8f8275695c4f4236291c0f03000005121f2b3744505b65717e879299a3abb5bdb6a99d9083828383838383838383838383838383827e716875828e9ba8b4aeacaaa9abadb2bac4c7bbb0a69e9c97959892918f8d8c8a898786848381807e7d7b7a7670665a4e4135281c0900000000000000000008141e2934404b55606c7884919da8b1bdc8d4d9ccc0b3a6998d8073665a5663707d8996a3b0b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a99c8f8376695c504336291d0d080200000000000714212d3a4754606d7a87939b9b9b9b9b9b9b9083776a5d535353535353534847433d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d434d5a6774808d9a9b9b9b9b9b9b998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca5a5a5a5a5a5a5a5a5a5a5a5a5a5abadb3bbc5cfd5cabfb5ada8a6a5a5a5a5a5a5a5a5a5a5a5a59b8e82756e7c86929fa4aebac3c2bbb0a69f92857b6e6154483b2e21150800000000000000071824313e4b5764717e8a97a4b1b3a79b918b89898d929da9b5c1b7ab9f948f89898d929dacafb6beb2a89e9285796d6f7c8896a1adb2a8978a7d716976828f9ca9b1a4988b7e7176828f9ca9b5b8ab9e9285786b5f5245382c1f060000000000000000030f1c28333f4a54626f7c8895a0acb8baaea2988a7d716666666666666666616a7783909daab6b2a5988b7f727f8c98a5b2bfbcb8b7b4b4b7b8bcc3cbcbc2bcb7b6b4b4b7b8bdc2b5a89c8f8275695c4f4236291c0f0300000613202d394653606c79839097a1abb5bdc0b3a79a8d8076767676767676767676767676767676716c6976838f9ca9b6bab8b7b5b8b9bdc4ccccc1b8b0aaa8a3aaa29f9d9c9a999796999291908e8d8b8a88878276695c4f4336291c10030000000000000000020c18232f3944505b66717e8a95a0acb8c4cfdaccc0b3a6998d8073665a5663707d8996a3b0b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a99c8f8376695c504336291d19130c05000000000714212d3a4754606d7a8793a0a8a8a8a8a89d9083776a5d504a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4d5a6774808d9aa7a8a8a8a8a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9898989898989898989898989898989ea2a9b3becad0c4b8ada39c99989898989898989898989898988e82756a717e8a929da8b2bdbab1aaa29f948e8275685b4f4235281c0f020000000000000916232f3c4956626f7c8995a9b3b8ada39b9895959a9da4aeb9c5bbb0a69f9c95959a9da49fa4acb6b9ada1978c7f726a7884919eabb3a69a8d80736773808d99a6b3a6998d807376828f9ca9b5b8ac9f9285796c5f52462e23170c0000000000000000000b17222d3847535f6a7783909dacb6bfb4aa9b8e8174665b5959595959595d6a7783909daab6b2a5988b7f727f8c98a5b2bcbcbcbcbcbcc1c2c6cbd3d1cac5c1c0bcbcbcbcbcbcb5a89c8f8275695c4f4236291c0f03000005121f2b3744505b656e7b85929ea5afbac4b9ac9f92867b6e696969696969696969696969696964616a7784909daab5b6b8b9bbc0c7c9cfd6d3cac1bbb7b5b0b4aeabaaa9a7a5a4aba39f9e9c9b999896958f8275685c4f4235291c0f0200000000000000000007121d28333f4a54606c7884919da8b2bdc9d5ccc0b3a6998d8073665a5663707d8996a3a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49c8f8376695c5043362d2a251e160e050000000714212d3a4754606d7a8793a0adb4b4b4aa9d9083776a5d56565656565656565656565656565656565656565656565656565656565656565656565656565656565a6774808d9aa7b3b4b4b3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9297a2adb9c6cdc0b4a89c918c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8275686c74818d96a0abb4aea79f98928b827b6e6154483b2e211508000000000000000714212e3a4754616d7a8797a2adbab5ada7a5a2a2a7a9aeb6c0cbc2b8b0aba9a2a2a6a49a939aa4afbbb3a99e9185796d75818e9ba8b4a99c90837665717e8a97abb4a89b8e827575828f9ca8b5b9ac9f9286796c5f4a3f34281c1003000000000000000006111c2b37434e5865727f8c9aa4afbbb8ab9e9285796c60534c4c4c4c505d6a7783909daab6b2a5988b7f727f8c98a5afafafafafafafb4b6bac1c9c8c0b9b4b3afafafafafafafa89c8f8275695c4f4236291c0f030000030f1b27333f49535e69707d8a939da8b2bdbaaea3998e81756a6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b7885919ea6a8a9abacafb6bec0c8d2d6cec9c5c4bfbdbebab8b7b5b4b2b1b5afacaba9a8a6a5a39a8e8174675b4e4134281b0e01000000000000000000010b17222d3844505b66717e8a96a1adb9c5d0ccc0b3a6998d8073665a5663707d8996979797979797979797979797979797979797979797979797979797979797979797979797979797978f8376695c50433a3936302820160c0200000714212d3a4754606d7a8793a0adbac1b6aa9d9083776a636363636363636363636363636363636363636363636363636363636363636363636363636363636363636774808d9aa7b3c0bfb3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7f85929eabb8c5ccbfb2a6998c7f7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7063606d79849199a3aba39f9590867f776e695e52463a2d201407000000000000000713202d3946525e687885929fabb8beb8b3b1afafb3b5b9c0c8d2cac2bbb7b5afafac9f9386939fa9b3b9ada1978b7f72727e8b98a9b3ab9f9285796c6f7b8899a3aeaa9d90837775828f9ba8b5bbaea3998679665c5044382c1f120600000000000000050c131b26313c4754616e7b87939facb9b9ada197897c6f6256493f3f44505d6a7783909daab6b2a5988b7f727f8c98a3a3a3a3a3a3a3a3a8aaafb7c1c0b6aea8a6a3a3a3a3a3a3a3a39c8f8275695c4f4236291c0f030000000b17222d38414d57616b74818e96a1adb9bfb4ab9e93897c787878787878787878787878787878787079869298999b9d9e9fa4acaeb6c0caccc4bdb9b7b2b3b5b6b8b9bebcbebdc0bbb9b7b6b4b3b1a6998d8073665a4d4033271a0d000000000000000000000006111c28333f4a54606d7984919eaab4bfcaccc0b3a6998d8073665a5663707d898a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8276695c504a4746413a32281e130800000714212d3a4754606d7a8793a0adbac3b6aa9d90837770707070707070707070707070707070707070707070707070707070707070707070707070707070707070707074808d9aa7b3c0bfb3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855616b707272727272727272727272727272727884919eabb7c4c7baaea194877b7272727272727272727272727272706b605d676f7c87929fa099928c837b726c655e574d42362a1e12050000000000000005111d2935414c566a7783909daab6c3c3bfbebcbcc0c1c5cbd2dad4ccc7c3c2bcb5a89b8e828e97a2adbab3a99e9184796e7b8897a2adaea298887b6e6e7986929facab9f92857875828e9ba8b5bfb5a09386796d6053463a2d201307000000000000050e171e252a2d3a46525e697783909daab6beb3a9998c7f7366554b403544505d6a7783909daab6b2a5988b7f727f8c9696969696969696969b9ea5afbab9aea49c999696969696969696968f8275695c4f4236291c0f0300000006111b262f3b454f59606d7a84919ea7b1bcbdafa59f9285848484848484848484848484848484847d7a878a8b8d8e9091939a9ca4aeb9c5c4bab2acaba5a7a8aaabadb3b0b1b4b6b7b7b8babebdb2a5988c7f7265594c3f3226190c0000000000000000000000000b17222d3844505c66727f8c98a2aebac7d2c0b3a6998d8073665a55616e7a7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d706357575754524c443a3025190d01000714212d3a4754606d7a8793a0adbac4b7aa9d91847d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d818f9ba8b5c2bfb3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59616365656565656565656565656565656b7884919eabb7c4c7baaea194877b6e6565656565656565656565656563605955606a737f8c959590867f786e69605b534d453b30251a0e0200000000000000010d192530424f5c6875828f9ba8b5c2cac5c1c0bebec2c4c7cdd4d5cdc8c4c3bcafa295897c85929fa9b3b9ada1968c7f7b7c85929fabb4aa988b7f7b7b7c84919eaaaea298897c7b828f9ca8b5b9ada093867a6d6053473a2d2014070000000000020c1720293036393a424d576673808d99aab4bfb6a99c8f8376675d51454044505d6a7783909daab6b2a5988b7f727f898989898989898989898e939eaab6b4a89c928d898989898989898989898275695c4f4236291c0f03000000000a141d29333e45515d67717e8a959fabb8c1baada297929191919191919191919191919191918a7e797c7d7e80828385878d929ca8b5c1bdb2a8a19e989a9b9d9ea2a9a3a4a8aaaaaaabaeb4b0b1a4978b7e7164584b3e3125180b00000000000000000000000006111c28343f4a54606d7a85929facb6c0ccc0b3a6998d8073665f6263686e71717171717171717171717171717171717171717171717171717171717171717171717171717171717171706b63636363615e564c41362a1d1105000714212d3a4754606d7a8793a0adbac5b8aca0969189898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898f939eaab6c3bfb3a6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e474f5557585858585858585858585858585e6b7884919eabb7bbbbbaaea194877b6e6158585858585858585858585856544f4e58606d7883908d837c726d665f575049413b33291f1409000000000000000000081a2734414d5a6774808d9aa7b3c0c0b9b4b3b2b2b6b7bbc2cacbc3bcb8b6b2aea195887b808c97a2adbab2a89c918c88889297a2adb3a79b918b8888889196a0acb3aa998e89888f949eaab7baada093877a6d6054473a2d211407000000000008131e29323a4146474c4c5663707c8998a2aebab9ac9f9286796d60534c4c4c505d6a7783909daab6b2a5988b7f727b7c7c7c7c7c7c7c7c7c7d818e9ba8b4b3a6998d807c7c7c7c7c7c7c7c7c7c7c6f6255483c2f2215090000000000020b17212935414c55606c7883909da6b0bbbeb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e978a7e716e70727375767879808d9aa6b3c0b9aca196918c8d8f9092979596989b9e9d9d9fa2aaa3a5a3978a7d7064574a3d3124170a000000000000000000000000000c17232e3845525d6874808d9aa4afbbc8c1b4a79b8e8174676a6e707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070706d685e5246392d201307000714212d3a4754606d7a8793a0adbac8bdb2a8a09d96969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969b9ea5afbbc6bfb3a6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c353e44484a4b4b4b4b4b4b4b4b4b4b4b4b515e6b7884919eabafafafafaea194877b6e61544b4b4b4b4b4b4b4b4b4b4b4a484444515c666f7c8680796f6a605c544d443f382f2921170d030000000000000000000c1926323f4c5965727f8c98a5b2bfb6aea8a6a5a5a9abb0b8c2c3b9b1abaaa5a5a195887b7a85929faab4baada39c9995959fa2a9b3b8ada39b989595959ea0a8b2bcaaa09995959c9ea6b0bbbaada093877a6d6054473a2d21140700000000010d1925303a444c5254595959606d7985929facb8baaea398897c706359595959595d6a7783909daab6b2a5988b7f726e70707070707070707073808c99a6aeaea4978b7e717070707070707070706f6a5f53473a2e211508000000000000050f19242f3a44505b656f7c89949fabb7c2bcb3adababababababababababababababa4978a7e7164636566686a6773808d9aa6b3c0b7ab9e91847f808283858688898b8e93909092989597989a96897c6f6356493c302316090000000000000000000000000006111c2935414c56616e7b87939facb9c5c5b8ab9f9285796d6e7c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7a6d6154473a2e211407000714212d3a4754606d7a8793a0adbacec3bab2acaaa3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a8aaafb7c1ccbfb3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232c33383c3d3f3f3f3f3f3f3f3f3f3f3f45515e6b7884919ea2a2a2a2a2a2a194877b6e6154483f3f3f3f3f3f3f3f3f3f3d3c38404a54606a6f7b736d665f58504a423c332d261d170f05000000000000000000000b1824313e4b5764717e8a97a4b1b9aea49c9998989c9fa6b0bbbcb1a7a09d98989895887b73808c98a2aebab5ada7a5a1a1abadb3bcbeb5ada7a5a1a1a1aaacb2babcb2aaa4a2a1a8aab0b8c1baada094877a6d6154473a2e2114070000000005111d2a36414c565e61666666666675828f9ca8b5bfb4aa998c7f73666666666666666a7783909daab6b2a5988b7f726563636363636363636673808c99a2a2a2a2978b7e71646363636363636363625f584e43372b1f12060000000000000008131e27333f4953606b76828f9ca6b0bcc5bebab8b7b7b7b7b7b7b7b7b7b7b7b7b1a4978a7e716457585a5b556774818e9aa7b4c1b6a99c8f8376747577787a7b7d7e818e83838587888a8c8d8f887b6e6255483b2f22150800000000000000000000000000000d19242f3a46535f6976828f9ca9b3bec6baaea2988a7e7173808a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a897d7063564a3d3023170a000714212d3a4754606d7a8793a0adbac6ccc3bdb8b7b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b5b6bbc1c9ccbfb3a6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21282c2f30323232323232323232323845515e6b788491959595959595959594877b6e6154483b323232323232323232302f2e39424e5860696e69605c544e443f383027221b140b050000000000000000000000091623303c4956636f7c8996abb5b4a89c928d8b8b8f949fabb7b8aba095908b8b8b8b887b6e7a86929facb8bfb8b4b2aeaeb8babec5c7beb8b3b1aeaeaeb7b8bdc3c4bcb5b1afaeb5b7bbc1cabaada194877a6e6154473b2e211408000000000713202d3946525e686d7373737373737f8b98a5b2beb5a99c8f8276737373737373736f7783909daab6b2a5988b7f726558565656565656596673808c9595959595958b7e7164585656565656565655534e46443b32271d1106000000000000010b17222d38414f5963707d89949fabb7c4cac6c5c4c4c4c4bcbcbcbcbcbcbcbcb1a4978a7e7164574b4d4f5b6875828e9ba8b5c1b5a89b8f827568686a676d6e707b8491857c787a7c7d7f8082837a6d6154473a2e211407000000000000000000000000000008131e2b37424d5764717e8a97a1adb9c6beb4aa9c8f827573808d9696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696897d7063564a3d3023170a000714212d3a4754606d7a8793a0adbac6cccec8c5c4bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcc2c3c6ccccccbfb3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810161c2023242525252525252525252b3845515e6b788488888888888888888888877b6e6154483b2e2525252525252525232227303d464e575e615e57514b423c342e261e17110a020000000000000000000000000815212e3b4854616e7b8799a4afb3a6998d807f7f828f9ca9b6b6aa9d90837f7f7f7f7f7a6d74818e9aa6b0bcc4c0bfbbbbc5c4c1c1c1c1c1c1bebbbbbbc1c1c1c1c1c1c1c1bcbbc1c1c1c1c1baada194877a6e6154473b2e211408000000000714212e3a4754616d7a7f7f7f7f7f7f808d9aa7b4c0b8ac9f92867f7f7f7f7f7f7f7f7c7783909daab6b2a5988b7f72655e5e5e5e5e5e5e5e66738088888888888888887e71645e5e5e5e5e5e5e5e5e5e5b554d44392e22170b0000000000000006111b262f3d4854606b7683909ca8b2bdc9d3ccc4bdb9b7afafafafafafafafafa4978a7e7164574b434f5c6976828f9ca9b5c1b4a79b8e8174685c555d676d7a83919692867e726f70727475776d685d5246392d2013070000000000000000000000000000010e1a26313c4653606d7985929eabb8c3c5b9ac9f92867a73808d9aa3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a396897d7063564a3d3023170a000714212d3a4754606d7a8793a0adbabfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfc3c4c7cdc9c9c9c9c9c9c9ccc7c3c2bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb3a6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10141617181818181818181818222f3b4855626e7c7c7c7c7c7c7c7c7c7c7c7c786d6053463a2d201818181818181817151e2b343d454d5254524d4540393028231c140c0600000000000000000000000000000713202d3a4653606d7986939facafa396897c7274808d9aa7b3b5a89b8e8175727272726d686f7c88949fabb7c4cfcdc4beb9b8b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aea194877b6e6154483b2e211508000000000915222f3c4855626f7b888c8c8c8c8c8d929da9b5c2baaea298928c8c8c8c8c8c8c8b7e7783909daab6b2a5988b7f726b6b6b6b6b6b6b6b6b6b6d7a7b7b7b7b7b7b7b7b7a6d6b6b6b6b6b6b6b6b6b6b6a675f554a3f33271b0e02000000000000000a141d2c38444f5964717e8a96a1acb9c7cec4bab2acaaa2a2a2a2a2a2a2a2a2a2978a7e7164574b44505d6a7783909daab6c0b3a69a8d807367555d676d79839095a09892877f746c6667696a615d564c4135291d110500000000000000000000000000000009141f2c3845515c6673808d9aa7b1bcc7bbafa3998b7e73808d9aa6b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a396897d7063564a3d3023170a000714212d3a4754606d7a8793a0adb3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b7bbc2cad4d6d6d6d3cac1bbb7b5b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0c0c0c0c0c0c0c0c14212e3a47535f6a6e6f6f6f6f6f6f6f6f6f6f6f6d665c5145382c1f130c0c0c0c0c0c0a0c19222b333b42464846423b342e271e17110a0200000000000000000000000000000006121f2c3844505c667885919eabb0a4978a7d7174808d9aa7b3b5a89b8e827568656565605f6a7683909ca9b3bec9c4bbb3adaba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a194877b6e6154483b2e211508000000000915222f3c4855626f7b8895999999999a9da4aebac5bfb4aaa29f999999999999988b7e7783909daab6b2a5988b7f7878787878787878787878787878787878787878787878787878787878787878787771675b4f43362a1d100400000000000000020b1b27323d4653606d7884919eabb5c0c9bdb2a8a09e96969696969696969696968a7e7164574b44515e6b7784919eaab7bfb2a6998c7f73665d676d798290959fa7a299938b80786d675d5d54524c443a3024190d0100000000000000000000000000000004101c2834404b54626e7b8895a0acb8c5c0b5ab9b8f8275808d9aa6b3bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbcb0a396897d7063564a3d3023170a000714212d3a4754606d7a8793a0a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a9abb0b8c2cdd8e3d7ccc1b8b0aaa8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f626262626262626262626262605c544b4034281c1004000000000000071019212930363a3b3a363028231d150c06000000000000000000000000000000000003101c28343f4a546a7784919daab2a5988c7f7274808d9aa7b3b5a89b8e8275685b5858545864717e8a97a1adb9c6beb3a9a19e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b94887b6e6155483b2e221508000000000915222f3c4855626f7b8895a2a6a6a6a7a9aeb7c0cbc5bcb4aeaca6a6a6a6a6a5988b7e7783909daab6b8ab9f928584858585858585858585858585858585858585858585858585858585858585858583776a5e5144372b1e110400000000000000000b161f2b3844505c66727f8c99a3afbbc5b9aca096918989898989898989898989897e7164574b404a546b7885919eabb8beb2a5988b7f7265676d79828f949fa7b1aba49f928d81796d60534746413a32281e130800000000000000000000000000000000000c18232e3947535f6a7784909daab7c2c5b8ac9f928679808d9aa6b3b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bbc0c7d0c9c9c9c9cfc7c0bbb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b0a396897d7063564a3d3023170a000714212d3a4754606d7a879399999999999999999999999999999999999999999999999999999c9fa6b0bbc7d3dfd3c7bbb0a69e9c999999999999999999999999999999999999999999999999998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1a26313c464e5355555555555555555555555553514b42392e23180c0000000000000000070f171f252a2d2e2d2a251f18120b03000000000000000000000000000000000000000c17232e43505d697683909ca9b3a69a8d807374808d9aa7b3b5a89b8e8275685b4f4c4753606d7985919eabb8c4b9ada197918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e887b6e6155483b2e221508000000000915222f3c4855626f7b8895a2aeb2b2b4b5bac0c9d1cec5bfbab8b2b2b2b2b1a5988b7e7783909daab6baada2979291919191919191919191919191919191919191919191919191919191919191919185786c5f5245392c1f1206000000000000000003101c28343f4a54616e7b86929facb9c4b7aa9e91847d7c7c7c7c7c7c7c7c7c7c7c7a6d61544744515c667985929facb8beb1a4988b7e71686d79828f949fa6b0b9b4aaa39892857c6f6255493c35302820160c02000000000000000000000000000000000007121d2b37434e5866737f8c99a7b1bcc7baaea2988a7d808d9aa6acacacacacacacacacacacacacacacacacafb6bec7d2ddd8cfc6bdb5afacacacacacacacacacacacacacacacacaca396897d7063564a3d3023170a000714212d3a4754606d7a878c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c90949fabb7c4d0dcd0c3b7aa9e948f8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c43474849494949494949494949494645403930271d1207000000000000000000050d141a1e2021201e1a140c07000000000000000000000000000000000000000000061c2936424f5c6975828f9ca8b0a79a8d817474808d9aa7b3b5a89b8e8275685b4f4245515c6673808d9aa8b2bdb8ab9e91858181818181818181818181818181818181818181818181818181818181817a6e6154473b2e211408000000000915222f3c4855626f7b8895a2aebbbfc0c4c4c4c4c4c4c4c4c4c4bfbfbfbeb1a5988b7e7783909daab6beb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9285786c5f5245392c1f12060000000000000000000b17232e3846525e6875828f9caab4beb9aca096887b6f6f6f6f6f6f6f6f6f6f6f6d685e52464653606d798698a3aebabdb0a4978a7d716e7a828f949fa6b0b8b3aaa29892867d706a6054473b2e241e160e04000000000000000000000000000000000000000f1a26313c4855616e7b88959fabb8c4bfb4aa9a8e81808d9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa4acb6c0ccd8d1c6bdb5aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f96897d7063564a3d3023170a000714202d3a4753606d798080808080808080808080808080808080808080808080808080808082909ca9b6c3cfd6cabeb4aa9c8f8280808080808080808080808080808080808080808080808080807d706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222a31373a3b3c3c3c3c3c3c3c3c3c3c3c3a38342e271e150b000000000000000000000002090e12141514120e0902000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba5a4a39b8e817574808d9aa7b3b5a89b8e8275685b4f42404b54626f7c8996a0acb9b8ab9f92857975757575757575757575757575757575757575757575757575757575756e685e5246392d201407000000000915222f3c4855626f7b8895a2aeb8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b1a5988b7e7783909daab6c3bcb3adabababababababababababababababababababababababababababababababab9f9285786c5f5245392c1f120600000000000000000006111c2a36414d5664717d8a98a2aebabdb2a8998c7f7266636363636363636363615e564c414754616d7a8794aab4bfbcb0a396897d707a8390949fa6b0b8b3aaa29892867d706b60584e43372b1f130c0400000000000000000000000000000000000000000a15212d3a46535f697683909da9b6c3c4b7ab9e9184808d929292929292929292929292929292929292939aa4afbbc8d4cbbfb5aba39992929292929292929292929292929292929292897d7063564a3d3023170a0006131f2c3845515c676d73737373737373737373737373737373737373737373737373737375828f9ca8b5c2cfd3c6baaea298897c7373737373737373737373737373737373737373737373737373706b6054483b2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f2f2f2f2f2f2f2f2f2f2f2f2d2c28231d150c0300000000000000000000000000020507080705020000000000000000000000000000000000000000000000010e1a2734414d5a6774808d99989796958f827574808d9aa7b3b5a89b8e8275685b4f42394754606a7784919eaab7baada2978a7d7068686868686868686868686868686868686868686868686868686868615e564c41362a1e1105000000000915222f3c4855626f7b8895a2abababababababababababababababababababa5988b7e7783909daab6c3c5bebab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ab9f9285786c5f5245392c1f1206000000000000000000000e1925303b4753606d7985929fabb8bbb6a99d908376685e565656565656565654524c443b4854616e7b8794a1aebabcafa295897c6f7c859297a1a9b2b2a9a19892867d706b60594f463c32271b0f0200000000000000000000000000000000000000000005121e2a36424d5766727f8c99a9b3bec5b9aca1968f828686868686868686868686868686868686868688939facb9c6d2c7bbaea3999287868686868686868686868686868686868686877d706356493d3023160a0004101c2934404b555c6066666666666666666666666666666666666666666666666666666d7985929fabb8c5cdcfc5b8ab9f9285796d666666666666666666666666666666666666666666666666666360594f44382c2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f21222222222222222222222222201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c8c8b8a898887837774808d9aa7b3b5a89b8e8275685b4f4237434e586673808c99a7b1bcb3a99b8e8174665c5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b54524c443b3025190e02000000000915222f3c4855626f7b88959e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e988b7e7783909daab6bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb8ab9f9285786c5f5245392c1f12060000000000000000000008141f2c3845515c6775818e9babb4afacaa9f93867a6e6154494949494949494746413a3c4855626f7b8895a2aeb3b4aea195887b6e6f7c859196a1a8a8a19792867d706b60594f473d342b20150a00000000000000000000000000000000000000000000020e1a26313c4955626f7c8897a1adb9c6bdb2a8988c7f7979797979797979797979797979797979797983909daab6c3d0c5b9ac9f92877a79797979797979797979797979797979797979706b6054483b2f22160900000c18232f39434b515359595959595959595959595959595959595959595959595959626f7c8998a2aebabec0c2c2b5a89c8f8275665c59595959595959595959595959595959595959595959595956544f473d32271b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f12141516161616161616161616161313100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d807f7e7d7c7b7a786d74808d9aa7b3b5a89b8e8275685b4f42323d4855626f7b8895a0acb8b8ab9e9285796d60534e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4746413b32291e140800000000000915222f3c4855626f7b8891919191919191919191919191919191919191919191918b7e7783909daaaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeab9f9285786c5f5245392c1f12060000000000000000000004101c2934404b5564707d8a99a3aba39f9d9b998b7e7164584b3e3c3c3c3c3c3a3936303c4956626f7c8995a2a6a6a7a7a194877b6e6a6f7c849196a0a09691857c6f6b60594f473d352b22190f0400000000000000000000000000000000000000000000000913202d394653606c7885919eabb8c4c2b5a89c8f8275666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6e7b8895a0acb8c4cabfb4aa9c8f8275686c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6360594f44382c201307000007121d2731394045474d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b5466727f8c99aaafb6b2b3b5b7b2a9988b7f7265544a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4948443d352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080909090909090909090909070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855606b7074737271706f6e6d6674808d9aa7b3b5a89b8e8275685b4f42353a47535f6a7784909daab7b9ada297897d706356494242424242424242424242424242424242424242424242423b3936302920170d0200000000000815222f3b4855626e7b848585858585858585858585858585858585858585858585847e7783909da2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29f9285786c5f5245392c1f120600000000000000000000000c18232f3a4753606d7a86929b989992908e8b898175685b4f4235303030302e2d2a303d495663707c899699999a9a9b9b93877a6d606a6e7b8491969691847c6f6a60594f473d352b231a100700000000000000000000000000000000000000000000000005121f2b3744505b6574818e9ba7b4b9b7b4ab9f9285796c605f5f5f5f5f5f5f5f5f5f5f5f5765727f8c98a7b1bbc0bfbaaea2988a7e7164565f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f56544f473d33271c10040000010b151f272f34383a4040404040404040404040404040404040404040404045515c6676828f9c9fa4aca5a7a8aaaca197887b6f62554840404040404040404040404040404040404040404040403d3b38322b23190f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59606367666564636261606774808d9aa7b3b5a89b8e8275685b4f423537434e586673808c99a9b3beb3a99a8d807467584e4337353535353535353535353535353535353535353535352e2d2a251e170e050000000000000814212e3a47535f696e7878787878787878787878787878787878787878787878787871778390959595959595959595959595959595959595959595959595959595959595959595959595959595959285786c5f5245392c1f120600000000000000000000000713202c3945515d6776828f8e8b898684817f7c796d6053473a2d23232323212024303d4a5763707d8a8c8c8d8d8d8e8e8f86796d605f696e7b849190847b6e6a60584f473d352b231a110800000000000000000000000000000000000000000000000000030f1b27333f495364717e8a97a8afacaaa7aba297887c6f625553535353535353535353535f697783909daaacafb5b2b4ac9f92867a6d605353535353535353535353535353535353534948443d352b21160b00000000030d151d23292c2d3333333333333333333333333333333333333333333a4653606d79859091939a96989a9c9d9f9e9185786a5f53473a33333333333333333333333333333333333333333333302f2c2721191107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808070502000000000000000000000004101c27333d474f55565a5958575655545a6774808d9aa7b0b0a89b8e8275685b4f4235313c4956636f7c8997a2adb5afab9e9184786a6054473b2e28282828282828282828282828282828282828282821201e19140d050000000000000006121e2b37424d575f626b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a778388888888888888888888888888888888888888888888888888888888888888888888888888888888888885786c5f5245392c1f1206000000000000000000000004101d2935404b5565727f84817e7c7a7774726f6d675d5145392c1f1616161415212e3b4854616e7b7e7f7f8080818182828276665c575f696e7b84837a6e695f574e463d352b231a11080000000000000000000000000000000000000000000000000000000b17222d3b4854616e7b8796a1a49f9d9b9899928c7f7265594c46464646464646464855616e7b88959c9e9fa4aba5a7a99b8e8175675d5145464646464646464646464646464646463d3b38332b23190f050000000000030b12181c1f2026262626262626262626262626262626262626262e3b4754616e7b81838586888a8b8d8f9192988e817568584e43372b2626262626262626262626262626262626262626262322201b160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e11141415151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151514120e0902000000000000000000000b16212c353d44484a4d4c4b4a49484d5a6774808d9aa3a3a3a39b8e8275685b4f42352d3a4653606d7985929faaaba39f9d96887c6f6255493c2f221b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1414110e08020000000000000000020e1a26313c454d53555e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c6e6255483b2f221508000000000000000000000000010d18242f394a56626d727774726f6d67686562605d554b4035291d1009090714212d3a46535e696e727273737374747575767066544d575e696e7a796d685e574e453c342b23191108000000000000000000000000000000000000000000000000000000000614202d3a46525e69788491989a93918e8b8986837f7265584b3f393939393939404c5966737f8b8d8f91939997999b9d978a7d7064554b4035393939393939393939393939393939302f2c27211911070000000000000001070c1013141a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a202d3946525e686e7476787a7b7d7f8082848587897e7164584b3e31261a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a161613100b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e2021212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121201e1a140d05000000000000000000050f1a232c33383c3d41403f3e3d414d5a6774808d9696969696968e8275685b4f42352b3844505c6675828e9b9d9a9992908d89807366594d4033261a0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0807050200000000000000000000000915202a333c424748525252525252525252525252525252525252525252525252535f696e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e6a5f53473a2e2114080000000000000000000000000007121d2e3a46515b62656a686562605d55585653514b43392f24180c000005121e2a36424d575e6165656666676768686969665e54454d565e686d6d675e564d453c332b22191008000000000000000000000000000000000000000000000000000000000005121e2a36424d576875818e8c898684817f7c7a77726d62564a3d312c2c2c2c2f3c4955626f7c7e80828486888a8c8e909285796d6053463a2f242c2c2c2c2c2c2c2c2c2c2c2c2c2c2322201c160f0700000000000000000000000406070d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d111e2a36414d565e616869676d6e7072747577797a7c7a6d6054473a2d21140a0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0a090704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060b060603050e171f252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2a251f170f0500000000000000000008111a21272c2f303433323134414d5a67748089898989898989898175685b4f423528343f4a5465717e8b93908d8a8683807d796d6053473a2d201407020202020202020202020202020202020202000000000000000000000000000000030e18212a31373a3b4545454545454545454545454545454545454545454545424d575f61626262626262626262626262626262626262626262626262626262626262626262626262626262626262625f584e43372b1f12060000000000000000000000000001121e29343f495156585d5b585653514b4c494745403931271d12070000020e1a25313b454d53545859595a5a5a5b5b5c5c5a544c42444d565e61605c554c443b332a21191007000000000000000000000000000000000000000000000000000000000000020e1a25303e4b5864717e827f7c7a7774726f6d6765625b51463a2e222020222e3b47545f6a6f72747577797b7d7f8183858174675c5145382c1d2020202020202020202020202020161613100b050000000000000000000000000000000000000000000000000000000000000000020e1925303b444d52545b555d606263656769656c6e6f6d685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131813120f0b17202930363a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a36302921170d02000000000000000000080f161c202323272625242f3b4855626e7c7d7d7d7d7d7d7d7d7c6f6255483c2f232e3b4754616e7b878683807d7a7673706d675d5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f38383838383838383838383838383838383838383838313b454d535555555555555555555555555555555555555555555555555555555555555555555555555555555555555555534e463c31261a0f0200000000000000000000000000010d18232d373f464a4c514e4b494745403f3c3a39352f271f150b0100000009141f29333b4246484b4c4c4d4d4e4e4f4f4f4e49423a3b444c525453514b433a322921180f070000000000000000000000000000000000000000000000000000000000000000091724303d4956616c717572706d67686562605d555651493f34291d12131f2b37434e585f62656769676d6f7172747678796d60554b4034281c0c131313131313131313131313130a090704000000000000000000000000000000000000000000000000000000000000000000000008141f29323b4146474e4b51535557585a535b606163605d564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f2025201f1c171f29323b42464748484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484846423b33291f140900000000000000000000050b101416171a1918212e3a47535f6a6e70707070707070706f6a5f53473b2e212d3a46525e69707d7a7773706d676663605d554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000060e151a1e21222b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a333b4246484848484848484848484848484848484848484848484848484848484848484848484848484848484848484847433c332a20150900000000000000000000000000000007111b252d343a3e3f44413f3c3a38352f2f2d2c29241d150d0300000000030d17212931363a3b3f3f4040404141424243413e3830323a41464747454039312820170f060000000000000000000000000000000000000000000000000000000000000000000815212d3945505a6164686563605d55585653514b4a463f372d23180c0f1b26323c464e5455585a555c60626466686a666d665c5143392e23180c06060606060606060606060606000000000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b41404547484a4c4d495053545654524c443a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272b2d312d2b282225303b444d5254545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454524d453b30251a0e0200000000000000000000000407090a0e0d121e2b37424e575f626363636363636363625f584e43372b1f2a36424d57616b706d686763605d555653514b43392f24180c0000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f18212a31363a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b3a37312a21180e030000000000000000000000000000000009131b23292e31323735322f2d2c292423201f1d18120b03000000000000050f171f252a2d2e3232333334343535363635322d20293036393a3a38342f271f160e050000000000000000000000000000000000000000000000000000000000000000000005111d28343e485056585b595654514b4c49474540393a342d251b11060a15202a343c4347494b4d4b51535557595b545c605c544a4030271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e2f35383a3b3d3f413f444647494745413a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b141d262d3337393e3938332d2a36424d565e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161615e574d42362a1e120500000000000000000000000000000001020e1a26313c454e5355565656565656565655534e463c32261b25303b454f596163615e565754514c4a4745403931271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000020608081212121212121212121212121212121212121212120f181f262a2d2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2b2620180f060000000000000000000000000000000000010911181e2225252a282523201f1d18161413100c07010000000000000000050d141a1e212125262627272728282929282521171e252a2d2e2d2c29231d150d040000000000000000000000000000000000000000000000000000000000000000000000000c17222d363e45494b4f4c494745413f3c3a38352f2e29231b130900040e19222a32373b3c3f41404546484a4c4e4a5153514a42392e1e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e202124292c2d2f30322d3337393b3c3a3935302820160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d262f383f44464b46443f382f3a46525e696e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e695e52463a2d20140700000000000000000000000000000000000915202a333c4247484a4a4a4a4a4a4a4a4847433c342a20151f29333e474f555754524c4a4745413d3a38352f271f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000050505050505050505050505050505050505050500060e141a1e212222222222222222222222222222222222222222222222222222222222222222222222222222222222222222211f1a150e060000000000000000000000000000000000000000070d121618191e1b18161413100c0707060400000000000000000000000003090e1214151819191a1a1b1b1c1c1c1c19150c13191d2021201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000006101b242d34393d3e423f3d3a39352f2f2d2c29241d1d18110900000007101920262b2e2f322e34383a3c3e3f4140444644403930271c0c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414181d1f2022242522272b2d2e302d2c29241e160e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151e272f38414950535853504a42383b4754616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b766c5f483b2e2115080000000000000000000000000000000000030e18212a31373a3b3d3d3d3d3d3d3d3d3c3b37322a22180e17202c353e44484a4746413d3a39352f2d2c29241d150d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151515151515151515151515151515151515151515151515151515151515151515151515151515151515151514120f0903000000000000000000000000000000000000000000000106090b0c110e0c0907060400000000000000000000000000000000000000020507080c0c0d0d0d0e0e0f0f100f0d0902080d1113141413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000009121b22282d30313532302d2c292423201f1d1812120c060000000000070e151b1f22222523282c2d2f31332e34383a38342e271e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070c101314151719171b1f20212321201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f273039424a535b6064605b544a4245525f6c7885878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878786796c605346392d2013000000000000000000000000000000000000060f1820262b2e2f30303030303030302f2e2b26201810060e1a232c33383c3d3a3936302d2c2924201f1d18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070809090909090909090909090909090909090909090909090909090909090909090909090909090909090908080602000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000010102020303020000000001050707070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000910171d21242528262321201d18161413100c07010100000000000000040a0f13151618181c1f2022242623282c2d2c28231c150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a060b0f121314161413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161f283139424a545b656c716c665b544a41525f6c7885929494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949386796c605346392d201300000000000000000000000000000000000000060e151a1e2122232323232323232322211f1b150e060008111a21282c2f302e2d2a2521201d191413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111517181c19161413110d070706040000000000000000000000000003060809070c101313151719181c1f201f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608090707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172028313a434b545c666c777e786c665b534a525f6c7885929fa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19f9386796c605346392d2013000000000000000000000000000000000000000003090e12141517171717171717171515120f0a040000000810161c20232421201d191413110d0806040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001050708070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b0f0c0a070604010000000000000000000000000000000000000000000000040607090b070c10121312100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f172029323a434b555c666d78818b81786c655b544a5f6c7885929fabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeac9f9386796c605346392d201300000000000000000000000000000000000000000000020608080a0a0a0a0a0a0a0a09080603000000000000050b101416171413110d0806040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000307090a0907060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c110a090703000000000000000000000000000000000000000000000002080d11141414110d080200000000000000000000000000000000000000000000000000000101020203040405050600000306070707070707070707070706030000060504040303020201000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000406070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d172129323a444c555d676d78818e938e81776c665c545f6c7885929fabb8babababababababababababababababababababababababababababababababababababababababababab9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10131616161413110d0708060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d111314181d161613100b040000000000000000000000000000000000000000050d14191e2021201e19140d05000000000000000000000000000000000001050707090a0b0c0d0e0f0f101011111212130c1012131314141414141414131312100b131212111110100f0f0d0d0b0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b444c565d676d79828e939d938e81786d665c546c7885929fabb8c5cbd1c7c7c7c7c7d2ccc7c6c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c7cbd1c7c7c7c7c7d2ccc7c6b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b2022232320201d18171513120f0b0607050200000000000000000000000000000000000000000000000000000000000000000000000000060b1013191d2021252a2322201b160f07000000000000000000000000000000000000070e171e252a2d2e2d2a251e170e05000000000000000000000003050609080d111314161718191a1b1b1c1c1d1e1e1f1f1f171c1f20202021212121212020201f1c171f1f1f1e1d1d1c1c1b1a1917130e08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070808090808070605030000000000000000000000000000000000000000000000000001010203030404050505060605050505040403030201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b454d565e686d79828f949ea59d938e81786d665d6c7885929fabb8babfc6cfd8d4d9d0c7c0bbb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bbbfc6cfd8d4d9d0c7c0bbb9b9ac9f9386796c605346392d201300000000000000000000000000000000030608090d0d0b070300000000000000000000000000020608080605030000000000000000000000000000000000000000000000000000000000000000010406070b0a08040000000000000000000000000000000000000000000007111921272c2f302f2d2c29242422201f1b171414110e09070502000000000000000000000000000000000000000000000000000000000002060a0f11171c1f24292c2d3237302f2c27211911070000000000000000000000000000000007101920293036393b3936302920170d040000000000000003060b0f12131618191d20212224252627282829292a2a2b2b2c2c23282c2d2d2d2d2d2e2d2d2d2d2d2b28232c2c2b2b2a2a2929282726231f19120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000401070c10131414151515151413120f0b0606040000000000000000000000000000020507080a0b0c0d0e0f101011111212121212121212111111100f0f0e0d0c0b09080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e686d7a838f949ea6afa59d938e81786d676c7885929fabacaeb4bcc6d1dcd2c7bdb5afacacacacacacacacacacacacacacacacacacacaeb5bdc6d1dcd2c7bdb5afacacac9f9386796c605346392d20130000000000000000000000000000040a0f1215151a1917130e080100000000000000000003090e12141513120f0b060000000000000000000000000000000000000000000000000000000003070d111314171614100b0500000000000000000000000000000000000000050e19232b32383b3d3c3a39352f312e2d2b272221201e191514120e09060400000000000000000000000000000000000000000000000205090e12151b1c23282b2f35393a3f443d3b38322b23190f040000000000000000000000000000040f19222b323b41464746413b32291f160c0300000000060b0f12171b1f202225252a2d2e2f31323334343535363737383839392e34383a3a3a3a3a3a3a3a3a3a3a38342e39393837373636353534332f2b241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f1512181d1f20212222222121201f1b171313100c070000000000000000000406090e1214151718191a1b1c1c1d1e1e1e1f1f1f1f1f1f1f1e1e1d1d1c1b1a1a1918161414110e080705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e7a8390959fa6b0b7afa59e938f82796d677885929f9f9fa3aab4bfcbd7ccc0b5aba49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3abb5bfcbd7ccc0b5aba49f9f9f9f9386796c605346392d201300000000000000000000000002080d151b1f21222726231f19120a0200000000000000060e151a1e2122201f1b17110e09040100000000000000000000000000000000000000000000060b0f13181d20212423211c1710080000000000000000000000000000000000020d17202b353d44484949474540403e3b3937332d2e2d2a2522211e1a1413100c070400000000000000000000000000000000000205090e12151a1e21272b2e34383a4145474b504948443d352b21160b00000000000000000000000000000a16212b343d444c5254524c443b31281e150a0000070c11171c1f22272b2d2f323036393a3c3d3e3f4041424243434444454546463f444646474747474747474646443f46464545444443434242403f3b362e261c0d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b201d24292c2d2e2e2f2f2e2d2d2b2722201f1c18120b030000000000070c1013131a1e2021232526272828292a2a2b2b2b2c2c2c2c2c2b2b2b2a292928272625242321201e191413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8490959fa7b0b8c0b7afa59e948f82796d78859292929298a3aebac7d3c7bbafa4999392929292929292929292929292929292929299a3aebbc7d3c7bbafa499939292929286796c605346392d20130000000000000000000001070c141920262b2e2f3433302b241c140a040607080705060f1820262b2e2f2d2b27221b1a15100d0701000000000000000000000000000000000002080e11171b1f24292c2d31302d28221a12080000000000000000000000000000000008131e29323d474f54565653514b4d4a4846443f3e3b3a36302e2d2a26201f1d1813100c070000000000000000000000000205090e12141a1e21262b2e3237383f44464c5254585d56544f473d32271b1001000000000000000000000000030f1b27323d464f565e615e564c433a30261c11060b12181c22282b2d3337393c3f41414647494a4b4c4d4e4e4f4f505151525252534a505353535454545454535353504a535252525150504f4f4e4d4c4740382e1f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e252c312f35383a3b3b3c3b3b3a3937332d2d2c28231d150c070000030b12181c1f20252a2d2e30323334343536363737383838393938383838373736363534333231302e2d2a2521201d19130c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b85929fa7b1b9c2c9c1b7afa69f948f837a788586868686929facb9c5d2c6b9ac9f9387868686868686868686868686868686868686929facb9c5d2c6b9ac9f93878686868686796c5f5346392c2013000000000000000000030b12181e252a31373a3c403f3b362e261c111013141514120f18212a31373a3b3937332d2b26201d18120f0a0300000000000000000000000000040b0f14191b22272b2f35393a3e3c39332c241a11080000000000000000000000000000010d1925303a444f59606362605d555a57555350494a4746423e3b3a36312d2c29241f1c18120f0a030000000000000205090e12141a1e20252a2d31373a3c43474a5053565d60656a6360594f44382c1d120700000000000000000000000007131f2c38434f5960686e685e554b42382e231712151d23282d3338393f4446494b4e4c5254555758595a5b5b5c5c5d5d5e5e5f5f5f605c60606060606160606060605c605f5f5f5e5e5d5d5c5c5b5a58524a4031281d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e2730373d3940454747484848484746443f3e3a38342e271e191007080c151d23282c2d30363a3b3d3e3f40414243434444454545454545454544444443424241403f3e3c3b3936302e2d29241e17110a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f69727f8c98a2aebac7d3c9c1b8b0a69f9590847b787979797a8793a0adbac6c1b5a89b8e8179797979797979797979797979797979797d8996a3b0bcc9c2b5a99c8f827979797979746a5e5145382b1f1200000000000000040a0d151d232930363c4347484d4c4740382e23181d202021201e1a212a333c42474846443f3837312c29241d1a150f0b06000000000000000000070c10161b1f252a2d33373a4145474a49443e362c231a0b020000000000000000000000000005111e2a36414c56606b706f6d6769666461605b535754524d4b4846423d3a38352f2c28231d1a15100b05000206090e12141a1e20252a2d31363a3c4247484e54545c6063686d7277706b605448392f24180c0000000000000000000000000915222f3b4854606b6f7a6e675d544a3f342824171e272e34383f444649505355585b565e616264656667676868696a6a6b6b6c6c6c6c666d6d6d6d6d6d6d6d6d6d6d666c6c6c6c6b6a6a6969686867645c52433a2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b25303942484d4b51535455555554545350494b46454039302b22190f11191e272e34383a3e4246484a4b4c4d4e4f4f5051515152525252525252515150504f4e4d4d4c4b494746413f3a39353028231c150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d57606d7a86929facb8c5d2d3cac2b8b0a79f9691857c706b6d7a8793a0adbac6c1b5a89b8e82756c6c6c6c6c6c6c6c6c6c6c6c6c6c6c707d8996a3b0bcc9c2b5a99c8f82766c6c6c6c6a62584d4135291d10000000000003090e161b1f272f343b41464e53555a58524a40352c24292c2d2e2d2a252a333c454d535553504947423c39352f2b261f1c17110c070100000001070d12181c1f272c3036383f44464b5154575550483e352c1d140a000000000000000000000000000713202d3946525e68707d7c7a787573716e6c656764615e565855534d4a4745403a38342e2b26201c16100b0e12141a1e21252a2d30363a3b4246484d5355586062666d70757a7e837d7063554b4035291d10040000000000000000000004101c2934404b55636f7d84796d665c50443f362c2328303940454a5053535b606265686a686d6f707172737475757676777778787979797979797a7a7a7a7a7a7a7979797979797878777776767575736e64554b4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37424b5359555d60616162626160605b535753514b423d342b21171a232b30394045464a4d52545658595a5b5b5c5d5d5e5e5e5f5f5f5f5f5e5e5e5d5c5c5b5a5958575654524c4b4746413a342e261e150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c45515d677683909da9b6c3d0dcd3cac2b9b1a8a09792867d706d7a8793a0adbac6c1b5a89b8e8275685f5f5f5f5f5f5f5f5f5f5f5f5f63707d8996a3b0bcc9c2b5a99c8f8276695f5f5f5e5850473c3125190d00000000050d141a20272b313940454c52585f6267645c52473e302f35393a3b3a3630313c454d575f62605b53534e4745403937312b28221c18120d0701070d13181c23282c32383b4146495053555d6064615a50473e2f261b1106000000000000000000000005111d2a36414c56616d7a8689868482807d7b797673716e696865615f575753514b4645403937312c28211c161a1e21252a2d30363a3b4246484d5354575f62666a6f74797d81868b8e8174675d5145382c1f14080000000000000000000006131f2c3845515c6774818e82786d605b51483e342e343d424b51545b6063656c6f727476787a7c7d7e7f808181828283848485858586868686868687878787878686868686868585858483838282818073675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825313d48535d6568676d6e6e6f6e6e6d6c656864605c544e463d33291f242c353d424b515357575e6163656667676869696a6a6b6b6b6c6c6b6b6b6b6a6a6969686766656463615e565854524c443f3830271e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202935414b556875828e9ba8b5c1cedbdcd4cbc3bab2a9a19892877c6f7a8793a0adbac6c1b5a89b8e8275685b53535353535353535353535663707d8996a3b0bcc9c2b5a99c8f8276695c5353514d473e352a1f1409000000050f171f252a32383e434b51565e616a6f736e645a504238394045474846423b37424d575f696e6c65625f5753514b47433c38332d29231d18120c13181d24292e34383d44484d52535b6063676d716c61594f41382d22170b00000000000000000000020c13202d3946525e6873808d9893918f8d8a888583807d7b7875716e696763605d5553514b47433c38332c2721262b2d31363a3b4246484d5254575e6166696e73777c8085898e92989285796d6053473b3025190e020000000000000000000714202d3a4753606d7985928d80746d625a50463d383f444f545c60666c7074787c7e81838587888a8b8c8d8e8e8f8f90909191929292939993939393939493939393939993929292919190908f8f8e877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2734414d59656f75797a7a7b7b7b7b7a797775716d6660584e453b31262c363e474f545c606468696e707172737475767677777878787878787878777777767575747372716f6e686965615d56504a423930271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18242f414e5b6774818e9aa7b4c1cddae4ddd4ccc4bbb3aaa299887b6f7a8793a0adbac6c1b5a89b8e8275685b4f4646464646464646464a5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4645413c352c23190e030000030d17212931363d434750555c60686e747c80736c61544a3f434b515354524d453c47535f696e7b78736e6a65605d55534e46443f38342f29241d181d24292f35394044464f54565e61656c70757a7d716b6153493f33271c110600000000000000000008131e2935414c56616d7a86929f9f9e9c999798928f8d8a8784817e7b7774706d6764605c55534e48443e38332e31373a3b4246484d5254575e6165696e72777b8084888d91979b9fa2988a7e7164564c41362a1e1105000000000000000005111e2a36424d5764717e8a97928c7f726c61584e45424a505960666d72787d8185888b8e909297959798999a9a9b9b9c9d9d9e9e9f9f9f9fa4a0a0a0a0a0a0a0a0a0a0a0a49f9f9f9f9e9d9d9c9c9b9a897c6f6356493c302316070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5668758185868788888887878684817e796f6a60574d42362a343e48505960666d7175787b7d7e7f80818282838484848585858585858584848383828180807f7e7c7a7875726d68605c544b43392e23180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071b2734414e5a6774818d9aa7b4c0cddad8d3d0cfcdc5b9ac9f9386796d7a8793a0adbac6c1b5a89b8e8275685b4f4d4d4d4d4d4d4d4d4d4d5663707d8996a3b0bcc9c2b5a99c8f8276695c4f433635312a231a110700000009141f29333b42464e545a61676d727a81878a7d70665c50444b555d60615e574d454f59626e7b8684807b76716d67625f5853504a454039352f2823292f353a40454a5153596063686e73787d81868a7d70655b5044382e23170c0100000000000000010d1924303946525e6873808d98a2acaba8a6aaa29f9c9a9796918e8b8884817d7975706d67625f58554f48443d3b3c4247484d5354575e6165696e72767b7f83888c91969a9ea1a9acaa9c8f8275685e5246392d20150a00000000000000000714202d3a46525e6976828f9c9f93887e716a60574d4c545c606b70797f84898e9297989b9d9fa2a9a3a4a5a6a7a8a8a9a9aaaaababacacacafb5acadadadadadadadacb5afacacacababaaaaa9a9ac988b7f7265584c3f2e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d687885919894949595949992918e8a847c6f695f534638313c46505a616b70797d828587898b8c8d8e8e8f90909191919292929292919191908f8f8e8d8c8b8a898785827e7a736d665c554b4034281f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cdd4cdc7c4c3c2c4b7aa9e9184776d7a8793a0adbac6c1b5a89b8e8275685b5a5a5a5a5a5a5a5a5a5a5a5a63707d8996a3b0bcc9c2b5a99c8f8276695c4f433629251f191108000000020e1a25313b454d535860626c71797f858e939183786d60544a515d676d6e695f574e54616b76828f918d88837e79746f6a64605b54514b454039342f343a41454b51545c60646b6f757b7f84898e929083786c60544a3f34281d12070000000000000004111d2935414c56616d7a86929faab4b7b5b3b3aeaba9a6a8a19e9b9896918d8a85817d79746f6a636159544f4647494d5355575e6165696e72767b7f83878c9095999da0a8abadb3b8ac9f92867a6e6154473c31261b0f03000000000000000814212e3b4754616e7b87939fa49a92867d6f695f56565d666d737d848b91969b9ea1a9a7a9abadb3b0b1b2b3b4b4b5b5b6b7b7b8b8b8b9b9bbc0b9b9bababababab9b9c0bbb9b9b8b8b8b7b6b6b4a79a8e817467544a4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8797a1aaa1a2a1aba39f9d9b9691857b6e61544a3f37434e58616c717d848a8e92979698999a9a9b9c9c9d9d9e9e9e9f9f9e9e9e9e9d9d9c9c9b9a9998979697928f8b8680786d675c51453b30251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cdcbc2bcb7b6b5b6b5a89c8f82756d7a8793a0adbac6c1b5a89b8e8275686767676767676767676767676767707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c140e070000000005121e2a36424d575e616a6f767e848c92989f958b7e71665c505b606d797b6e695f585c66707d8a949e9994908b85817c76706c66605c55514b45403940454b51555d60666d71777c82868c91969b9f958a7e71665c5044392f23180c010000000000000713202c3945525d6873808d98a2aebcc4c2c0bebab8b6b3b2acaba8a8a09e9a98928e8a85817c76706b636059525355575f6166696e72767b7f83878c9095999da0a7aaacb2b8b9bebbafa3998c7f7265584e43372b1f120600000000000007131f2c38434e5866727f8c99a4aca29892857b6e685e5e686d78808891969ea0a8abadb3b4b6b8babebdbebfc0c1c1c2c2c3c3c4c4c4c4c3c3c3c3c3c2c2c2c2c2c2c2c2c2c2c3c3c3c3c3c4c3c3b6aa9d908377665c5144382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a9b3aeaeaeb5aeacaaa8a0978e8174665b50443a47535f6a717e8791969b9ea1a9a4a5a6a7a8a9a9aaaaababababababababaaaaaaa9a8a8a7a6a5a4a9a19e9c98928c82796d60574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cdc2b8b0aba9a8aab0a69a8d80736d7a8793a0adbac6c1b5a89b8e8275737373737373737373737373737373737d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c100300000000000714212d3a46535e696e757c838a91969fa2a79e9184786d6059636d7581847b6f6a60606d7984919ea6a69f9c98928d88827d78726d67605d55514b444b51555d60676d72797e83898e92999ea0a8a79e9184786d60554b4034291e1308000000000004111d2935414c56606d7a85929faab4b5b7b9bbc0c0c3c2c0bdb9b7b4b2acaaaaa29f9b97928d88837d76706b615e5f6266696e72767b7f83878b90939a9d9fa7aaacb1b7b8bdc3c0bbb9b5ab9d9083776a5f53473a2e2115080000000000000915222e3b4854606a7784919dabb4aaa19791847a6e67686d7a828d939aa0a8acb2b8b9bec1c3c5c5c4c2c0bebdbcbbbbbabfbab9b8b8b7b7b6b6b6b6b6b5b5b5b5b5b5b5b5b6b6b6b6b6b6b7b7b8b8ac9f9286796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1bbbbbbbfbbb9b7b2a99f9285796c605346424d57626f7c869299a0a8abadb3b1b2b3b4b5b5b6b7b7b7b8b8b8b8b8b8b8b7b7b6b6b5b4b3b3b2b1b3adabaaa29f948d8073695e52463a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c7bcb0a69f9c9b9ea6a4978b7e716d7a8793a0adbac6c4b7aa9d91848080808080808080808080808080808080818e9ba8b5c1cec2b5a99c8f8276695c4f4336291c100300000000000815212e3b4854616e7b818990959ea1a8aeaca0968b7e7166616b727f8c91857c6f6b68727f8c96a0acb0abaaa29f9a948f8a847e79726d67605c5550555c60676d73797f848b90959b9fa3abacb2aca0968b7e71675c51453a2f24190d02000000000713202c3945525d6873808c98a2a4a6a8abacafb6b4b6b9babfc2c4c1bdb9b7b4aeaca9a29f9a948f8a837d756e686a6f73777b7f83878c90939a9d9fa4acabb1b6b8bcc3bebab8b6afacaaa8a095887c6f6255483c2f221509000000000004101c2934404b55626f7c8996a0acbcb3a9a0969083796d6d7a838f949fa4acb2b9bdc4c6c5c2bfbab9b7b5b3b2b0afaeaeadb4aeacababaaaaaaa9a9a9a9a9a9a8a8a8a8a9a9a9a9a9a9aaaaaaababacaca399887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3bcc3c4c7c7c5c4baada297887b6e62554846535f6976828f98a3abb2b8b9bebebfc0c1c1c2c3c3c4c4c4c5c5c5c5c5c4c4c4c3c2c2c1c0bfbebdbeb9b8b4aea69f92867b6e6154483b2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c4b7ab9f94908f939ea595897c6f6d7a8793a0adbac6c5b8aca096918d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8e939eaab6c3cfc2b5a99c8f8276695c4f4336291c100300000000000a1724303d4a5763707d8a939d9fa7acb2bab2a89d9184786c69707d87939792867d6f6e7b86929fa8b2bcb7b3aeaba69f9c96918b857f79726d67605b60676d727a7f858c91969da0a7acaeb5b9bdb2a89e9184796d60554c4135291e1308000000000714212d3a4754606d7a85929896989a9c9e9fa4aca7aaacaeb4b5b8babec4c4bfbab8b3adaba69f9c959089817a74787c8083888c90939a9d9fa4acacafb6b8bcc0bbb9b6b3adabaca49f9d9996918d8073675a4d4034271a0d010000000006131f2c3845515c6774818d9aa8b2bdbbb2a8a0958f82787a8390959fa6afb6bec3c6bfbbb9b5b4aeacaaa8a6a5a4a3a2a1a1a0a39f9f9e9e9d9d9d9c9c9c9c9c9c9b9b9c9c9c9c9c9c9d9d9d9d9e9e9f9fa4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b556975828f9ca8aeafb6b7bcc2cbcabeb3a996897d7063564a4855616e7b88949faab4bdc4c6c9c8c4c3bfbdbcbbc0bbb9b9b8b8b8b8b8b8b8babfbabbbcbec0c4c6c9c6c5bfbaafa3998c7f7366554b4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c3b6a99c9082828e939d97877a6d6d7a8793a0adbac6c8bdb2a8a09d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9ea5afbac6cfc2b5a99c8f8276695c4f4336291c100300000000000916232f3c4855616b76828f99a3afb9bdc4b8aca0968a7d706e7b859299a19892867d75818e98a2aebac3c5bebab8b0aba8a09e97918c857f79716c656c71797f858c92979ea1a8acb1b9bbbfc6c3b9ada1968c7f72675d51453a3025190d010000000a1724303d4a5763707d838587898b8d8f91939a989a9d9fa3aba8abaeb4b7b9bdc4c5bebab8b0aba79f9d938e858184888c9095999d9fa4acacafb6b9bbbdb9b7b5afaca9a9a29f9b9a93908c8884817d6f6356493c3023160900000000000714202d3a4753606d7985929fabb8c3c4bab1a79f948e81839095a0a7b0bbc0c4bdb9b5aeaca8aba39f9d9b9998979695949493999292919190909090908f8f8f8f8f8f8f8f8f8f909090909091919292939a948d8074675a4d4134271a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677784919ea2a1a2a9abb1b9c2cdbeb1a4978b7e7164584b4c5965727f8c98a6b0bcc6cfcbc3bcb8b6b2b0afaeb5afacacacabababababacaeb4aeafb0b1b4b8b9bec4cdcac0b5ab9d908377675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f8279818d92918578686d7a8793a0adbac6cec3bab2acaaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a8aaafb7c1cccfc2b5a99c8f8276695c4f4336291c100300000000000714202c38444f59626f7c87929faab4bfc8bdb2a89c90837679839197a2aaa29892867f88939faaaeb5b8babfc5c2bbb7b2aca9a19e97928c847e7871787e848c92979ea2a9adb2b8bcc3c7cbc9c6bdb2a89e92857a6d60564c41362a1d11050000000a16232f3c4855616b7077797a7c7e80828486898b8d909299989c9fa2aaaaacb2b8babec5c2bbb7b1aba59e97928e9196999da0a7a9acafb6b9bbb9b8b4b2acaaaba39f9d9997928e8b8783807c78746f6b6054483b2f22150900000000000b1824313e4b5764717e8a97a2aab3bbc4c3b9b0a69e938e90949fa7b1b9c2bebab2acaba39f9c989992918f8d8b8a89888887878686858584848383838383828282828282828283838383838384848585868687878276695c504336291d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693959594969d9fa7b1bcc7beb1a5988b7e7265584b4f5b6875828e9ba8b5c1cec6beb9b1abaaa6a4a2a2a1a49f9f9f9e9e9e9e9f9fa3aaa1a2a3a4a7abadb3bbc2cac6b9ac9f93867a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f837677808c8f8376696d7a8793a0adbac6d5ccc3bdb8b7b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b5b6bac1c9d3cfc2b5a99c8f8276695c4f4336291c1003000000000004101c28333e47535f6a74818e98a3aebac6c3b7ab9f94887c818f95a0a9b3aaa298928c939a9e9fa3abacaeb4b9bbc0c3bdb9b3ada9a19e96918b837e838a91969ea1a9adb3b9bdc4c8cac6c4beb9b8b3ada1978c8073685e5246392d2013070000000714202c38444f5961636a686e6f717375787a7c7e818386898c8f92989a9ea0a8abadb3b9bec4c2bcb8afa9a29e9a9ea1a8aaacb1b6b9bab8b5b3adaba8a8a09e9a9992908c8985827e7a77736f6c656360594f44382c1f130700000000000a1623303d495663707d869298a1a9b2bbc4c2b8afa59e9b9c9fa6b0b9c3bcb3aea8a09e99928f8c89868482807f7d7c7b7b7a7a7979787877777776767676767675757575767676767676777777787879797a7a7b7b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b888a8988888990959fabb7c4beb2a5988b7f7265584c4b556a7784919daab7c4c9beb4aca79f9d9997969594999392929292929292929893949596989a9ea1a9b0b8c2c7bbafa499897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f83766c74808b8074676d7a8793a0adbac6d3d5cec8c5c4c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c1c3c6ccd3dccfc2b5a99c8f8276695c4f4336291c10030000000000000b16212b37434e58616e7b86929fabb4bfc7bcb0a69e91858f939ea7b1bcb4aaa29f989f969192999b9fa2aaacafb5b9bdc4beb9b3ada8a19e95908a90959ea1a8adb3b9bec5c9c7c5bebab8b3adaba9a29f9b92857a6d6154473a2e21140700000004101c28333e474f5557565e6163656769676d6f727477797c7f8285898d91969a9fa2a9adb2bbc0c7c1bbb3adaba7abacb2b7b8b8b5b3adaba8a9a19e9b9896918d8a8683807c7975716e686662605b53544f473d32271b0f0300000000000916222f3c4854606b707d869297a1a9b2bac3c1b7afa9a7a9abb0b9c2b9b1aaa29f96918b86827f7c797775737271706f6e6e6d6d666c6b6b6a6a6a69696969696969696969696969696a6a6a6a6b6b656c6d6d6e6e695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c7f7d7c7b7b7c82909da9b6c3beb2a5988b7f7265584c515d677985929facb8c5c1b7aca29b95908c8a8988878686868585858585858586878788898b8d91979fa6b0bbc7c0b5ab978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f8376696d737f7f72656d7a8793a0adbac6d8cfc6bfbab9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8babec5ced7cfc2b5a99c8f8276695c4f4336291c1003000000000000050f1a26313c46535e6974808d99a3aebac7c2b9ada19791979ea5afb9c3bcb4aeaca59e9184868a8f92989c9fa3abacb2b7bbc2beb9b2aca79f9d979d9fa7acb2b9bec5cac7c0bbb9b3adaba9a19e9a97928e8a877e7265584b3f3225180c000000000b17212c353e44484a4c525456585a5e696e6e6e6e6e6e6f7275797c8084888d92979ea1a9aebbc0c7c5beb9b8b4b7b9bcb3aeaba8a9a29f9b9897928e8b8884817d7a76736f6d6d6d6d6d665c53504948443d352b21160a0000000000000713202c38444f59606b6f7c859197a1a8b1bac3c1bab6b4b6b7bcc2b8b0a7a098928b847f7a7676767676767676767676767676767676767676767676767676767676767676767676767676767676767670606161615f574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a6f73716f6f6e707d8a97a3b0bdbeb2a5988b7f7265584c53606d7a8698a2aebac6bbafa59b908b837f7d7c7b7a7a797979787878787879797a7b7c7d7e81858f949fabb7c5bfb3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f837669636d72796d606d7a8793a0adbac6d1c6bdb4aeacababababababababababababababababababaeb3bcc5d0cfc2b5a99c8f8276695c4f4336291c1003000000000000000a15202a36424d57616e7b86929facb6c0c9beb2a9a19ea1a9adb3bbc2c5bfbab7ab9e91847c7e82868b8f92999ea1a8abb0b8bdc3bdb9b1aba9a4a9abb1b9bdc4cac5beb9b5afaca9a29f9a97918d8985817e7a726d62564a3d3124180b0000000005101a232c33383c3d414647494b54616e7b7b7b7b7b7b7b7b7b7b7b7a777c80858b91979da4afb6bec7cac6c5c1c4beb3aaa29f9c9897928f8b8885817e7b7a7a7a7a7a7a7a7a7a7a7a796d6053463f3838322b23190f0400000000000004101c27333d474f59606a6f7c859196a0a8b1b9c2c6c2c1c3c4c2b9b0a69f9590857f7c82838383838383838383838383838383838383838383838383838383838383838383838383838383838383838276695c5455534d453b31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f6266646262636f7c8996a2afbcbeb2a5988b7f7265584c54616d7a8794aab4bfc3b6aa9e938b7e7773716f6f6e6d676c6c6b6b6b6b6c656c6d6e6f70717479828f9ca9b3bec1b4a79a8e8174675b4e4134281b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f8376695b62666d66606d7a8793a0adbac6cbbfb4aba39f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2aab3becacfc2b5a99c8f8276695c4f4336291c100300000000000000030e1a25313b46525e6974818e9aa4afbbc8c4bbb2ada9a19ea1a9b0b8c2cac5b9ada19690837a757a7e82868c91969c9fa6acb2bac3c2bcb8b6b1b6b7bcc2c9cbc3bbb3adaba39f9c97928d8985817d7975716d68625b51453a2e221509000000000008111a21282c2f3036393b44515d6a77838888888888888888888882756f74797f848d929fa4acb6c0ccd2d1cdc6baaea298928f8c8885827f7b7875717b87878787878787878787877e7165584b3e2d2c272119110700000000000000000b16212b353d474f58606a6f7b849195a0a7b0b9c2cdced0c5bcb1a79f948f837b727d898f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f85796c5f524846423b33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e535559575656636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebac2b5a89b8f82756c6664636261605d555f5f5f5f5f5f5b606061626365676f7c8897a1adb9c2b5a89b8f8275685c4f4235291c0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f8376695c545c605c606d7a8793a0adbac6c7baaea3999292929292929292929292929292929292929298a2aebac6cfc2b5a99c8f8276695c4f4336291c1003000000000000000009141f2a36424d57626e7b87939facb9c5cdc4b9ada19791979fa6b0b8c2c9bdb2a8a0958f82776d71767b7f848a8f949da0a8b2bdc8c8c4c3bdc3c4c7cdcec3b9b1a9a29e99928f8a85817c7874706d6664615d5651493f34291d12050000000000000810171c2023252a2d3744515d6a77849094949494949494948f827568676d7279808b939aa4afbbc2cdd8d2c5b8ab9f9285827f7c7975726f6a686e7b879393939393939393938b7e7165584b3e32251b160f07000000000000000000050f19232b353d464e585f696e7b8390959fa6b0bbc4cfcabeb4aa9f958f82796e707d89969c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9285796c5f52463a36312921170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c4347484c4a4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabeb1a4988b7e71655a5756555453514b525252525249505354545556555f6a7885929eabb8c3b6a99c908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c11151b2734414e5a6774818d9aa7b4c0c2b6a99c8f8376695c4a515354606d7a8793a0adbac6c5b9ac9f9287858585858585858585858585858585858585929fabb8c5cfc2b5a99c8f8276695c4f4336291c10030000000000000000030e1a25303b47535f6a76828f9ca9b3becac4b8ab9e91858f949fa6b0b9c2c4bab1a79e948c7f736b696e73787d82889196a0acb8c5d1d1d0cad0d1d3d4c8bcb1a7a097928d87827e7974706c6663605c5454524c443f372d23180c0100000000000000050b101416191e2a3744515d6a7784909da1a1a1a1a1a19b8f8275685d60676d747f88939fa6b0bcc7d3c7baaea194877b75726f6c6665625f616e7b8794a0a0a0a0a0a0a0988b7e7165584b3e3225180a040000000000000000000000071119232b343c464e575f696e7a8390949fa9b2bec9c6baaea2989083796d67707d8996a3a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99f9285796c5f5246392a261f170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222a31373a3c403e4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabcafa296897c6f63564a49484747454046454545453f44464748494a4e586a7783909daab6c3b7aa9d9084776a5d5144372a1e1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911171d21242734414e5a6774818d9aa7b4c0c2b6a99c8f8376695c50444754606d7a8793a0adbac6c1b5a89b8e8178787878787878787878787878787878787d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c100300000000000000000009141f2b37434e5864717e8a97a2adbac6bfb3a6998c80828f949fa7b1bac3c3b9b0a69f93887d706861666c70767c84919daab7c4d0d7d3d2d2d3d7d1c5b8aca0959085807b75716d6763605b5453504a4746413a322d251b1106000000000000000000000407080e1e2a3744515d6a7784909daaaeaeaeaea89b8f8275685c555d606d737f8c949fabb7c4cfcabdb1a4978a7e716562605b545554616e7b8794a1adadadadada4988b7e7165584b3e3225180b00000000000000000000000000071119222b343c454d575e686d7a829097a1adb9c6c5b8ab9f92867b6e6763707d8996a3b0b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6ac9f9285796c5f5246392c1a140d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f333c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c3c3b3a39352f3838382d3337393a3b3c43505d697683909ca9b6c3b7ab9e9184786b5e5145382b1e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292e313235414e5a6774818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e82756b6b6b6b6b6b6b6b6b6b6b6b6b6b6b707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000020f1a26313c4653606d7985929fabb8c5c2b5a99c8f827a8290959fa8b2bbc5c1bbafa49a92857a6e655b606d727e88939facb9c6d1cbc7c5c5c7cbd1c3b7aa9d908479736e6964605c5553504a46443f3a39353028201b12090000000000000000000000000000111e2a3744515d6a7784909daab7bbbbb5a89b8f8275685c4b515b606c7783909ca8b2bdc2c2c0b4a79a8d8174675a53504a4854616e7b8794a1aebababab1a4988b7e7165584b3e3225180b0000000000000000000000000000071019222a333b454d565e686d7984919eabb8c4bfb2a5988c7f72695f63707d8996a3b0bcc2c2c2c2c2c2bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbec2c2c2c2c2c2b8ac9f9285796c5f5246392c1f0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b1f2123303c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f2e2d2c29242c2c2c22272b2d2d2e3643505c6976838f9ca9b6c2b8ab9e9285786b5f52452e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3e42424e5a6774818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275685f5f5f5f5f5f5f5f5f5f5f5f5f63707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c10030000000000000000000009151f2c3845515c6674818e9babb4bfc5b8ab9f92857979839096a0a9b3bcc6c0b6aca1978f82776c606c727f88939aa4afbbc8c6bfbab9b9bbbfc6c5b8aca0958d80746e645b53514b46443f3a38342e2d29241e160e09000000000000000000000000000004111e2a3744515d6a7784909daab7c3c2b5a89b8f8275685c4f45505b65707d8996a1adb6b6b6b6b6aa9d9083776a544a443f4854616e7b8794a1aebac6beb1a4988b7e7165584b3e3225180b000000000000000000000000000000071018212a333b444c565d677784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc9cdc5beb9b8b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b2b3b8bfc7cfc5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f2223303c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f22201f1d181f1f1f171b1f20212936424f5c6975828f9ca8b5b6b3ac9f9285796c5f4a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222d363f454a4b4f4f4f5a6774818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275685b52525252525252525252525663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c10030000000000000000000004101c2834404b5463707d8a99a3aebac6baaea298887b6e7a849197a1aab4bfc7beb3a99f948c7f726b717e88939aa4acb6c0c4bdb4aeacacaeb5bdc6bcb1a79d928d80736d635a50463c38332d2b2823201d19130c0400000000000000000000000000000004111e2a3744515d6a7784909daab7c3c2b5a89b8f8275685c4f3f4953606b7884919ea9a9a9a9a9a9a99f928578665c5144404854616e7b8794a1aebac7beb1a4988b7e7165584b3e3225180b00000000000000000000000000000000060f182129323a444c556a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bccfc5bbb3adaba3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a5a7adb5bfc9c5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111921272c2f30373c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f221513100c0712120b0f12131c2935424f5c6875828f9ba8aca9aaa29f938679665c5144382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f485056585b5b5b5b6774818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275685b4f4545454545454545454a5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c100300000000000000000000000c18232e3a4753606d7a86929facb9c5beb4aa978a7e716e7b859298a2aebac0c5bbb0a69f92867b6f7d87929aa4acb6bec3bbb2aba39f9fa3abb5bdc3b9aea49d928c7f726c61584e433a2f241f1c1713110d08020000000000000000000000000000000004111e2a3744515d6a7784909daab7c3c2b5a89b8f8275685c4f4d4d4f596875828e9b9c9c9c9c9c9c9c9c9786796d60534d4d4d54616e7b8794a1aebac7beb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000060f1720293244515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bccabeb3a9a19e97979797979797979797979797979797979797979797989ba3adb8c3c5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232b32383b3c433f4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f22150904000005000003050f1c2835424f5b6875828e9ba39f9c9998928f86796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a45505a6265686868686874818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275685b4f4f4f4f4f4f4f4f4f4f4f5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000007131f2c3945515d6776838f9ca9b6c2c0b3a6998d8073696f7c86929fa4aeb9c2c2baaea2988f827b859299a3acb6bec2b9b1a9a199929299a3abb4bdc0b6aea49f93877e706a5f554c41352920170b06050100000000000000000000000000000000000004111e2a3744515d6a7784909daab7c3c2b5a89b8f8275685c59595959596673808c8f8f8f8f8f8f8f8f8f8f877a6d615959595959616e7b8794a1aebac7beb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000050e172b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc6b9ada197928a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b919ba7b3c0c5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b353d444849504c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f22150900000000000000020f1c2835424f5b6875828e9a9992908c8985827f786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313d4a56626c71757575757575818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275685b5b5b5b5b5b5b5b5b5b5b5b5b63707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000004101d2935404b556673808c99a6b3bfc1b5a89b8e8275686a717e8b929da6b0bcc5bfb4aa9f948f859297a1abb4bec1b8b0a7a0979186869299a3abb4bdc0bbafa49992867c6f675d51453e32291f1409000000000000000000000000000000000000000008101e2a3744515d6a7784909daab7c3c2b5a89b8f82756866666666666666707e8383838383838383838383827b6e666666666666666e7b8794a1aebac7beb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc5b8ab9e92857e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7f8b98a5b2bec5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d474f54565d595456636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f22150906060606060606060f1c2835424f5b6875828e8d8a86837f7c7975726d665c5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e81828282828184919eaab7c4c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275686868686868686868686868686868707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c10030000000000000000000000000c18242f3d4a5763707d8a96a9b3bec3b7aa9d9084776a616c74808d949faab4bec6bcb0a69f979297a1a9b3bdc1b8b0a69f9590857c7d879299a3abb5bfc0b5aba29891847a6d605a50443b3025190e0500000000000000000000000000000000000009111a22283744515d6a7784909daab7c3c2b5a89b8f827573737373737373737373767676767676767676767676737373737373737373737b8794a1aebac7beb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9184787070707070707070707070707070707070707070707b8895a2aebbc5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38444f5960636a65615e636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f2215131313131313131313131b2835424e5b68758184807d7a76736f6d6665605c544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d8e8e8e8e8e9196a0acb9c5c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275757575757575757575757575757575757d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c10030000000000000000000000000714212e3a4754616d7a8797a1adb9c5b8ac9f928579685d606d78829098a2aebac1c2b8b0a9a29ea2a9b3bbc2b8b0a69e948f837a6f707e879299a3aebbc1bdb4aaa0968e81756c62564d42362a21170b000000000000000000000000000000000009121b232c333944515d6a7784909daab7c3c4b7aa9d9184808080808080808080808080808080808080808080808080808080808080808080808d9aa7b3c0cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9185786b646464646464646464646464646464646464646f7b8895a2aebbc5b8ac9f9285796c5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b6f76726e69656f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f22202020202020202020202020202d3a4753606d797774706d676663605c5453504a42382e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9a9b9b9b9b9ea0a8b2bdc9c2b6a99c8f8376695c50434754606d7a8793a0adbac6c4b8ab9e9184828282828282828282828282828282828282909ca9b6c3cfc2b5a99c8f8276695c4f4336291c10030000000000000000000000000713202d3946525e687885929eabb8c5baaea298877a6d605c666e7b86929fa6b0bcc6c2bbb3adabadb3bbc3b9b0a69e948f82796e686c707e87929fa5afb9c3bcb2a89e938b7e71695e52463e33281c100400000000000000000000000000000109121b242d363e4449515d6a7784909daab7c3c5b8aca096918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8d929da9b5c1cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9185786c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6f7b8895a2aebbc5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7d837f7b76726f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c3845515d676d676763605d555653504a46443f3830261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7a8a8a8aaacb2bac4cec2b6a99c8f8376695c50434754606d7a8793a0adbac6c5b9ada196918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e90949fabb7c4cfc2b5a99c8f8276695c4f4336291c100300000000000000000000000005111e2a36414c566a7683909da9b6c3bfb4aa95887b6f62545f69717e8b949eaab4bfcac5beb9b8b9bec5bcb1a79f948f82796d675e616c727f8b939ea7b1bcc4baafa59f92857b6e61594f44392d201408000000000000000000000000000109131b242d363e485055575d6a7784909daab7c3c8bdb2a8a09d9999999999999999999999999999999999999999999999999999999999999999999a9da4aeb9c5cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000207111e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9184787878787878787878787878787878787878787878787c8895a2aebbc5b8ac9f9285796c5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c8c87837f7b7d8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c3939393939393939393939393939393935404b555d605d555754514b4946443f3a38342e261e140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4b5b5b7b9bdc4cccfc2b6a99c8f8376695c50434754606d7a8793a0adbac6c9bdb2a8a19e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c9fa6b0bbc7cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000010d192530414e5b6874818e9ba7b4c1bcb0a396897d70635657626c75828f98a2aebac3cecac6c5c6cac5b8aca0958f82796d67696969696d75818e95a0acb8c5c1baada2978e81756c6155493c3023160a000000000000000000000000010a131b252d363f48505a6164626a7784909daab7c3cec3bab2acaaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a7a9aeb6c0cbcbbeb1a4988b7e7165584b3e322518100c060000000000000000000000000000080e13171e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc6b9ac9f93888585858585858585858585858585858585858585858585929fabb8c5c5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566875828e9a93908c8784919eaab7c4beb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f62554846464646464646464646464646464646464646434b5153514b4a4745413e3a38342e2b28231c140c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0c1c4c5c9cececec2b6a99c8f8376695c50434754606d7a8793a0adbac6cfc4bab2adaba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9abb0b8c2cdcfc2b5a99c8f8276695c4f4336291c100300000000000000000000000000081a2733404d5a6673808d99a6b3c0bdb1a4978a7e716457505a616e7b86929fa8b2bdc8d4d2d1d2d0c3b7aa9d90847a7575757575757575757984909daab7c3cabeb3a99e938a7d7064574a3d3124170a0000000000000000000000010a131c252d373f48505a626c706f6a7784909daab7c0c0c0c0bdb8b7b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b5b9c0c0c0c0beb1a4988b7e7165584b3e32251f1c17110a0300000000000000000000020a12191f23262b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc8bbafa49a93929292929292929292929292929292929292929292929298a2aebac6c5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687884919e9f9d98969196a0acb9c5beb2a5988b7f7265584b54616e7b8794a1aebabbaea295887b6f62555353535353535353535353535353535353535353535353535353535353534b49453e362c2217110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0c2c2c2c2c2c2c2c2b6a99c8f8376695c50434754606d7a8793a0adbac6d6ccc4bdb9b8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6b7bbc2cad4cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000c1925323f4c5865727f8b98a5b2bebeb2a5988b7f7265584c535e69727f8c96a0acb8c3cdd8deddd0c3b6aa9d9083828282828282828282828283909daab6c3d0c5bcafa59b8e8175685b4e4235281b0f02000000000000000000000a131c252e373f49515a626c717d7c727784909daab4b4b4b4b4b4b4b4b4b4b5b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b8b9bbb9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b1a4988b7e7165584b3e322d2c28231c150c030000000000000000000a141c242a2f32333744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcccc0b6aca49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2aab4becac5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8796a1aca9a8a09ea0a8b2bdc9beb2a5988b7f72655c5554616e7b8794a1aebabbaea295887b6f6260606060606060606060606060606060606060606060606060606060606060575550483e34281d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4b5b5b5b5b5b5b5b5b5b5a99c8f8376695c50434754606d7a8793a0adbac6d3d6cfc9c5c4c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c3c4c7cdd4dccfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000b1824313e4b5764717e8a97a4b1bdbfb2a6998c7f7366594c4d57606d7984919da7b1bcc8d4dfddd1c4b8ab9f95908f8f8f8f8f8f8f8f8f8f8f9095a0acb8c4d1cec1b4a89b8e8175685b4e4235281b0f02000000000000000000030d1c252e373f49515b626c717e87867f7884909da7a7a7a7a7a7a7a7a7a7a7a8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7abadafaca8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a4988b7e7165584b413e3a38342e261e150d030000000000000008121c262e363b3f404244515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcd2c7beb6afacabababababababababababababababababababababababaeb4bcc5d0c5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a8b2b6b2acaaacb2bac4cebeb2a5988b7f726d67615f616e7b8794a1aebabbaea295887b6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7a8a8a8a8a8a8a8a8a8a8a8a89c8f8376695c50434754606d7a8793a0adbac6d6cdc4bdb9b8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6b7bcc2cbd4cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc0b3a6998d8073665a4d44515c66717d8a959fabb8c2cdd8e0d4c8bcb1a79f9d9c9c9c9c9c9c9c9c9c9c9c9da0a7b1bcc8d4cec1b4a89b8e8175685b4e4235281b0f020000000000000000010b151f2e374049515b626d727f8893928c8384919d9a9a9a9a9a9a9a9a9a9a9a9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9ea1a49f9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a988b7e716558494e4a46443f3830271f150b010000000000020e19242e3840474b4d4f4f515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc9d0c7c0bbb9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8babec5cec8c5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfbdb9b7b9bdc4ccd0c4b7aa9d91837e79736e69626e7b8794a1aebabbaea295887c797979797979797979797979797979797979797979797979797979797979797979716c6155493d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9a9b9b9b9b9b9b9b9b9b9b9b9b9b9b8f8376695c50434754606d7a8793a0adbac6cfc4bbb2adaba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9abb0b9c2cdcfc2b5a99c8f8276695c4f4336291c100300000000000000000000000000091623303c4956636f7c8996a2afbcc0b4a79a8d8174675a4e404a54616c7783909da7b1bcc8d4e0d8cdc3b9b1abaaa8a8a8a8a8a8a8a8a8a8a8aaacb1b9c3cdcecec1b4a89b8e8175685b4e4235281b0f02000000000000000007121d27314049525b636d727f88939a9f948f9195908d8d8d8d8d8d8d8d8d8d8d8f8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d929799938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8b7e71655b535b5753504a423931271d1207000000000007131f2a36404a52585a5b5b5b5e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc9d6cfc9c6c5bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb8ac9f9285796c5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d576976828f9ca9b5c2c6c5c4c5c9ced6d1c5b8aca095918b85807b766e6e7b8794a1aebabcb0a4988e888686868686868686868686868686868686868686868686868686868686868686867e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8276695c50434754606d7a8793a0adbac6c9bdb2a9a19e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c9fa6b0bcc7cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000915222f3c4855626f7b8895a2aebbc1b4a89b8e8175685b4e4242505a63707d89959fabb8c4ced9ded4cbc3bcb8b6b5b5b5b5b5b5b5b5b5b5b5b6b8bcc1c1c1c1c1c1b4a89b8e8175685b4e4235281b0b0500000000000000000c18232f3943525b636d727f8b939aa4a69f9c9d90838181818181818181818181828081818181818181818181818181818085929386818181818181818181818181818181818181818181817d6f6c656a6864605c544b43392f23180c00000000000a17232f3b47525c6366686868686a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc9cdc5beb9b8afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3a47535f697885929eabb3b8b9bec5c6cacfd7d4c8bdb1a8a09d97928d87827c6e7b8794a1aebac0b5aaa0989593939393939393939393939393939393939393939393939393939393939393938a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727f8282828282828282828282828282828282807366594d404754606d7a8793a0adbac6c5b9ada196918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90949fabb7c4cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000815222e3b4855616e7b8894a1aebbc1b5a89b8e8275685b4f423e4854606b7683909da8b2bdc9d5d6ccc4bdb9b7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a89b8e8175685b4e4235281c160f0800000000000004101c2934404b55636d737f8c919fa4acb0aba99f92867d7474747474747474747a86827e787474747474747474747474747e8b979991837b747474747474747474747474767779797a7a7b7b7a7a79787774716d665c554b4034291c1004000000000d1926323f4b58636e7375757575757784919daab7c4bdb1a4978a7e71645763707d8996a3b0bccfc5bbb3adaba2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b88979fa2aaabadb3b8b9bec5cdd7cec3bab1aca9a19e9a938a7d717b8794a1aebac6bcb2aaa4a29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313d4a56626d727575757575757575757575757575757575736e63574b3a4754606d7a8793a0adbac6c4b8ab9e9184828282828282828282828282828282828282909ca9b6c3cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000814212e3b4754616e7a8794a1adbac2b5a89c8f8275695c4f4238444f5964717e8a96a0acb9c6d0cec4bab2acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79b8e8175685b4e42352c2721191108000000000006131f2c3845515c67737f8c919ba3afb6beb7aea39992877d70696767676766737f8c908a85807c77736f6a6767676a707d87929fa09591857c6f6b67676767676c707b7f82848586878787878786868583817e786d675c5145382c1f1307000000000d1a2733404d5a66738082828282828286929fabb8c5bdb1a4978a7e71645763707d8996a3b0bcc9beb3a9a19e95959595959595959595959595959595959595959595959595959595959595959285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a8e92989a9ea1a9abadb3bbc5cfd5ccc3bdb8b3adaca4968a7d707b8794a1aebac7c4bcb5b0aeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222e3a45515b62656868686868686868686868666d6668686866635b52473a4754606d7a8793a0adbac6c1b5a89b8e8275757575757575757575757575757575757d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000714212e3a4754616d7a8794a0adbac2b5a99c8f8276695c4f4343434653606d7884919eaab4bfcbc9bdb2a8a09e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b8e8175685b4e423c38332b23190f05000000000714202d3a4753606d79818891969fa4acb3bbb5aba39992857b6e665c5a606d7984919c97928d8884807c77736f6c6e7c859299a3a7a09792867d6f695f555e68707e868c8f9192989394949494999392908e8a82796d6053473a2e23180c00000004111d2a3744505d6a77838e8e8e8e8e8e9298a2aebac6bdb1a4978a7e71645763707d8996a3b0bcc6b9ada1979289898989898989898989898989898989898989898989898989898989898989898986796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d797e81858a8e92979a9ea1a9b3becad6d5cec8c5beb9b6a396897c707b8794a1aebac7cdc6c0bcbbb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b1a4978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f495156585c5c5c5c5c5c5c5c5c5e686e79726d615e57575249403a4754606d7a8793a0adbac6c1b5a89b8e8275686868686868686868686868686868707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000714212d3a4754606d7a8793a0adbac2b6a99c8f8376695c5050505050505c66727f8b98a3aebac7c5b9aca096918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8175685b504a48443d352b21160b0000000006131f2c3845515c676d747d848d939aa2a9b2bbb5aba2979083786d605864717e8a96a1a19e9a96918c8884807c797a849197a2abb1a9a29892857b6e675c616e7a8692989c9e9fa2aaa1a1a1a1a49f9e9d9b948c7f7266554b4034281c1004000004111d2a3744505d6a7783909b9b9b9b9b9fa2aab4becabdb1a4978a7e71645763707d8996a3b0bcc5b8ab9e92857c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c6f6256493c2f23160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d7175797d8185898e9297a1adb9c6d2d8d1cbc7c5bcafa295897c6f7b8794a1aebac7d3ccc6c3c1c0c0c0c0c0c2c4c7cdc6c6c6d0cac6c5c0c0c0c0c0c0c1c2c5cbc6c6bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232d373f454a4b4f4f4f4f4f4f4f4f59616e7a847e766e69625a524d453f4754606d7a8793a0adbac6c1b5a89b8e8275685c5c5c5c5c5c5c5c5c5c5c5c5c63707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000714202d3a4753606d7a8693a0adb9c3b6a99c908376695d5d5d5d5d5d5d54606d7a86929facb8c5c4b7aa9e9184818181818181818181818181818181818181818181818181817f71655d5d56544f473d33271c100400000004101c2934404b555c606b6f7980889297a1a9b2bcb3a99f958b7f7268606a7683909ca8adaba8a09e9995918c89858490959fa3abb3b3aaa2979183796d6065727f8b98a2aaaaacaeb4adaeaeb5afacabaaa69d908377675c5145382c1f1306000004111d2a3744505d6a7783909da8a8a8a8abaeb4bcc5d0bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9185786f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a6054473b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c555d6064666d7074797d8185929eabb8c5d1cfc6bfbab9baaea195887b6e7b8794a1aebac7c9c1bab6b5b4b4b4b4b4b6b7bbc2cad4cec5bebab8b4b4b4b4b4b4b4b5bac0c9cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3f4242424242404b55616b75818e8b827b716d615e5750464754606d7a8793a0adbac6c1b5a89b8e8275685b4f4f4f4f4f4f4f4f4f4f4f5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000714202d3a4753606d7a8693a0adb9c3b6a99d9083766a6a6a6a6a6a6a6a6a6a6875818e9ba8b4c1c4b7ab9e918478747474747474747474747474747474747474747474747474716d6a6a6a6360594f44382c201307000000000c18232f39434b515960676d737d859196a1aab3bcb1a79f92857a6d626f7c88949fabb9b8b2acaaa7a09d99978f82848c9299a2a9b3b3a9a0958c8073686875818e9baab4b7b8baafaaa8a7a7a8acafb5ac9f9386796d6053463a2d201307000004111d2a3744505d6a7783909daab5b5b5b8babec5cecabdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9185786b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6260584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a434c5154545c6063666d70747d8996a2afbcd1c6bdb4aeacaeb4a194877b6e7b8794a1aebaccc1b7afaaa8a7a7a7a7a7a9abb0b8c2cdc5bcb3aeaba7a7a7a7a7a7a7a9afb7c0cbbdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b23292e3132353535303945515d67707d8993948f867e766e69625a524d54606d7a8793a0adbac6c1b5a89b8e8275685b4f4242424242424242424a5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6a99d9083766e76767676767676767676767d8996a3afbcc5b9aca196887c7676767676767676767676767676767676767676767676767676767676706b6054483c2f2216090000000007121d27313940454f555c606b707c849198a2aebabaada2978c7f726874818e9ba6b0bcc3bab2adabacaaa9998c7f797f879297a2abb5b1a79f92857a6d6976838f9ca9b6c2baafa59e9b9a9a9b9fa3abafa499887b6e6155483b2e221508000004111d2a3744505d6a7783909daab6c1c1c5c6cad0c9c9bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e91847878787878787878787878787878787878787878787878787878787878787878786d675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313a4145474b5153545c60636f7c8996a2afbccbbfb4aba39fa3aba094877a6e7b8794a1aebac6baafa59e9b9a9a9a9a9a9c9fa6b0bbc7beb3aaa29f9a9a9a9a9a9a9a9da5afbac5bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181d22242529232e39424e58606d7984919e9f98928b827b716c615e5754606d7a8793a0adbac6c1b5a89b8e8275685b4f4f4f4f4f4f4f4f4f4f4f5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6a99d9083767b838383838383838383838383909da9b6c3c9bdb2a89e918483838383838383838383838383838383838383838383838383838383837d7063564a3d3023170a00000000010b151f272f343d434b5159616a6f7c86929fa7b1bcb3a99e9184776a75818e9ba9b3bebdb2a8a19e9fa3ab988b7e72737d859299a3aebaaea2988b7f726a7683909da9b6bdb2a89e938f8d8d8e9299a3afab95887c6f6255493c2f221609000004111d2a3744505d6a7783909daab6bcbcbcbcbcbcbcbcbcb1a4978a7e71645763707d8996a3b0bcc6b9ac9f9387858585858585858585858585858585858585858585858585858585858585858585796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a4045464a5056636f7c8996a2afbcc7baaea39992999b9f99867a6e7b8794a1aebac3b6aa9e938e8d8d8d8d8d8f949fabb7c4baaea298928d8d8d8d8d8d8e929da9b5c2bdb1a4978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111518151e2834404b54606a74808d96a0aaa29f948f857e766e695e54606d7a8793a0adbac6c1b5a89b8e8275685c5c5c5c5c5c5c5c5c5c5c5c5c63707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c889090909090909090909090959fabb8c4cec4b8aca09691909090909090909090909090909090909090909090909090909090908a7e7164574b3e3124180b0000000000030d151d2329313940454f585f6a717e8b95a0acb8b9aca096887c6f6f7b8897a1adb9b9ada1969192999c978a7e716b707d87929facb6b4aa9c908376677683909da9b6b9aca0968f8280808187929fa9a296897c6f6356493c30231609000004111d2a3744505d6a7783909daab0b0b0b0b0b0b0b0b0b0b0a4978a7e71645763707d8996a3b0bcc7bbafa499939292929292929292929292929292929292929292929292929292929292929292867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e24292c2e34383a3f4956636f7c8996a2afbcc5b9ac9f9286898e929386796e7b8794a1aebac1b5a89b8e818181818181828f9ca9b6c2b8ab9f9286818181818181818e9aa7b4c1bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507121d27303945515c666f7c87939fa8b2aea69f98928b827b6e665b606d7a8793a0adbac6c1b5a89b8e8275686868686868686868686868686868707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c88959d9d9d9d9d9d9d9d9d9d9fa7b1bcc8d4c8bdb2a8a09e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d978a7e7164574b3e3124180b000000000000030b17222c363e45494b4e58616c7783909daab7bdb2a8998c7f736a7885929eabb8b8ab9e9184868b90938a7d70636b73808d9aa4afb9ac9f92867a6d7683909da9b6b7aa9e918477747475818e9a9b9792897c706356493d3023160a000004111d2a3744505d6a7783909da3a3a3a3a3a3a3a3a3a3a3a3a3978a7e71645763707d8996a3b0bcccc0b5aba49f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e93867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2023282c2e3c4956636f7c8996a2afbcbfb2a5988c7f7d81868b85796e7b8794a1aebabbaea295887c74747474747e8b97a4b1beb7aa9e9184777474747474788693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232e39424e58606d79839099a4afbabab0aaa29f948f84796c60606d7a8793a0adbac6c1b5a89b8e8275757575757575757575757575757575757d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c8895a2a9a9a9a9a9a9a9a9a9abb1b9c2cdd8cec3bab2acaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a4978a7e7164574b3e3124180b00000000000005111d28333e4850555759595a65727f8b98a9b3beb5a99c8f82766a7784919daab7b2a6998c7f7a7f8387897c6f62616e7b87939facb9afa399897c6f7683909da9b6b6aa9d9083776a67717e8b928e8a85817b6e6154473b2e211408000004111d2a3744505d6a7783909696969696969696969696969696968a7e71645763707d8996a3b0bcd2c7bdb5afacababababababababababababababababababababababababababababababa093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d151b1f2223303c4956636f7c8996a2afbcbeb2a5988b7f72757a7f82766e7b8794a1aebabbaea295887b6f676767717e8b97a4b1beb7aa9e9184776b6767676d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2834404b54606a73808c95a0abb5c0c2bcb1a79f93887d70665b606d7a8793a0adbac6c4b8ab9e9184828282828282828282828282828282828282909ca9b6c3cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c8895a2afb6b6b6b6b6b6b6b6b8bcc2cbd2d5d5ccc3bdb8b7b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b1a4978a7e7164574b3e3124180b0000000000000814212d3945505a6164666666666e7a8797a1adb9b8ab9f928578697784909daab7b2a6998c7f7372767b7f7b6e6465697783909daab6b5ab988b7e717683909da9b6b6aa9d9083776a65707d8a85817d79746e695e52463a2d201407000004111d2a3744505d6a778389898989898989898989898989898989897e71645763707d8996a3b0bcc9d0c7c0bbb9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272b2e2f393c4956636f7c8996a2afbcbeb2a5988b7f72686d7276706e7b8794a1aebabbaea295887b6f625a64717e8b97a4b1beb7aa9e9184776b5e5a606d798693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313945515c666f7c87929fa7b1bdc7bfb4aaa0958d80736b6054606d7a8793a0adbac6c5b9ada196918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90949fabb7c4cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c8895a2afbbc3c3c3c3c3bab9b9b9b9c4c5c9ced5cec8c5c4c3c3bbb9b9b9b9b9b9b9b9b9b9bec3c3c3c3c3c3bdb9b9b9b9b1a4978a7e7164574b3e3124180b0000000000000a1723303d4955616c7172727272727885919eabb8baada297877b727784909daab7b2a6998c7f73727272726e6c71717174818d9aa7b4b3a6998c80737683909da9b6b6aa9d9083777171717b7d79747171706c61574d42362a1e11050000000916232f3c4956626f7c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7a6e615663707d8996a3b0bcc9d6cfc9c5c4b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bac5c5c5c5c5c5b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32373b3c46464956636f7c8996a2afbcbeb2a5988b7f7265616569616e7b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f39434e58606d79839099a3afb9c3c5baaea3989083796d605954606d7a8793a0adbac6c9bdb2a9a19e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c9fa6b0bcc7cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c8895a2afbbcfc6bfbab9adacacacacb7b9bdc4ccd6d4c4bbb5b0aeacacacacacacacacacacb1b9babfbeb7b2b0acacacacaca4978a7e7164574b3e3124180b0000000000000b1824313e4b5764717e7f7f7f7f7f7f84919eaab7beb3a99a8d807f7f85919eabb8b5a99c8f827f7f7f7f7f79717e7e7e7e818f9ba8b5b6a99c8f827e7e84919eaab7b7ab9e91847e7e7e7e7e7e7e7e7e7e7d7064574a3d30251a0e020000000815222e3b4754606a6f70707070707070707070707070707070706e685e5663707d8996a3b0bcc9cdc4bdb9b8adadadadadadadadadadadadadadadadadadadadadadafb3bac2d1c6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b343d43474953535356636f7c8996a2afbcbeb2a5988b7f726558585c616e7b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55606a73808d95a0abb5c0c5bbb0a69f92867c6f675c5154606d7a8793a0adbac6cfc4bbb2adaba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9abb0b9c2cdcfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c8895a6b0bbc6bcb4aeaca1a0a0a0a0aaacb2bac4cec6bbb2aaa4a1a0a0a0a0a0a0a0a0a0a0a5acaeb4b4aca6a4a0a0a0a0a0a0978a7e7164574b3e3124180b000000000003101d293643505c6976828c8c8c8c8c8c9196a0acb9c5b5a99d928d8c8c9197a1adb9b7ab9f948f8c8c8c8c877a78858b8b8b8f939eaab6b7ab9f948f8b8b9196a0acb9b9aca196918b8b8b8b8b8b8b8b8b8b83766a5d5043372a1d090000000006131f2b37434e5860626363636363636363636363686363636363615e565663707d8996a3b0bccfc4bbb2adaba0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a1a3a8b0bac5c6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e54565f5f5f5f636f7c8996a2afbcbeb2a5988b7f72655f5f5f616e7b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d676f7c87929fa7b1bdc7beb3a99e948b7f726a5f554b54606d7a8793a0adbac6d6cdc4bdb9b8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6b7bcc2cbd4cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777b88949fabb7bfb4aaa39f94939393939ea0a8b2bdc9c0b5aaa0989593939393939393939393989fa3abaca29a97939393939393938a7e7164574b3e3124180b000000000003101d293643505c6976838f99999999999ea0a8b2bdc5baaea49d9a99999ea1a9b3bebbb0a69f9c99999993877a78859198989b9ea5afbbbbb0a69f9c98989ea0a8b2bdbdb2a8a19e9898989898989898989083766a5d5043372a1d1004000000030f1b27323d464e545656565656565656545e696e756d675f575654524c5663707d8996a3b0bcc9bdb2a9a19e93939393939393939393939393939393939393939394979ea8b3bfc6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e5860626c6c6c6c6c6f7c8996a2afbcbeb2a5988b7f726c6c6c6c656e7b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f59606d79849199a3afb9c3c3b9ada1978f82756d62584e4754606d7a8793a0adbac6c6c6cfc9c5c4c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c3c4c7cdc6c6c6c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d90837776828f9ca7b1baaea3989287868686869196a0acb9c5bcb0a4988e88868686868686868686868b9299a3a69a908a86868686868686867e7164574b3e3124180b000000000003101d293643505c6976838f9ca5a5a5a5aaacb2babebebeb6aea9a7a5a5abadb3bbc4c2b8b0aba9a5a5a093877a7885919ea4a8aaafb7c1c2b8b0aba9a4a4aaacb2bac4c4bab2acaba4a4a4a4a4a4a4a49d9083766a5d5043372a1d1004000000000a15202b343d4347494a4a4a4a4a4a505c666e7b817a6e6a615950494a5663707d8996a3b0bcc5b9ada19691868686868686868686868686868686868686868686878c97a3afbbc6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a6f7979797979797d8996a2afbcbeb2a5988b7f7979797979726e7b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3b4854606b74808d96a0abb5c0c3baafa59e92857a6e615b51464754606d7a8793a0adb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776f7c8995a0acb9ac9f92867b7979797884919eaab7c4bbaea195887c797979797979797979787e86929fa4978a7e7879797979797979776c605346392d201306000000000003101d293643505c6976838f9ca9b2b2b2b2b2b2b2b2b2b2b2b2b6b4b2b2b8b9bec4c0bbb9b2b2b2b2ada093877a7885919eabb5b5b5b5b5b5b5b5b5b6b1b1b7b9bdc4c3bcb8b7b5b5b1b1b1b1b1b1b1a99d9083766a5d5043372a1d100400000000040f19222b32373b3c3d3d3d3d444f59606d78828e847c706c605b534c5663707d8996a3b0bcc4b8ab9e9184797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a8794a1adbac6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c86868686868686929facb9c5c5b9ac9f928786868686867f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c86939ea2a9afb9bdb2a89d938a7d70685e52493f4754606d7a8793a0acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776b7783909dacb6aea3988d80736d6d74818e9ba7b4c1bdb1a4978a7e716d6d6d6d6d6d6f79818b9299a3ab9f92867c6e6d6d6d6d6d6d6c655b5044372b1f1205000000000003101d293643505c6976838f9ca5a5a5a5a5a5a5a5a5a5a5a5a5a9abb0b8c2c6c7bdb5afaca5a5a5a5a5a093877a7885919ea8a8a8a8a8a8a8a8a8a8acafb5bdc7c9c3b9b1acaaa8a8a8a8a8a8a8a8a8a89d9083766a5d5043372a1d1004000000000007101920272b2e2f302d38424c56606b73808c9491867d736c655d555663707d8996a3b0bcc4b8ab9e9185786d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d7a8693a0adb9c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8992929292929299a3aebac7c7bbafa39992929292928b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b828b92979ea5adb3aba0968e81746c61564c413a4754606d7a87939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776a727f8b9aa4afaeaa9f9285796d65717e8b98a9b2bdbfb3a79a8d8074676060606c717c838e939fa3abaea29891847a6d6060606060605b53493f33271b0f03000000000003101d293643505c6976838f98989898989898989898989898989c9fa6b0bbc7c0b5aba49f98989898989893877a7885919c9c9c9c9c9c9c9c9c9c9c9fa3abb5c0c8bcb1a7a09d9c9c9c9c9c9c9c9c9c9c9c9083766a5d5043372a1d1004000000000000070f151b1f222328333f4a545e68707d87939f98928880776d675f5763707d8996a3b0bcc4b8ab9e9185786b6262626262626262626262626262626262626d7a8693a0adb9c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89959f9f9f9f9fa3abb4bfcbcbc0b5aba39f9f9f9f988b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e757e858e939ea1a9a3999184796d60594f443b3a4754606d7a879393939393939393939393939393939393939393939393939393939393939393939393939393938f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776a6e7b87939faaa29f9c988a7e71646e7b8896a1adb2b5aea99d908376675c616c717e8691959ea5aeaea59d9590857c6f635653535353504941382d22170b00000000000003101d293643505c6976828b8b8b8b8b8b8b8b8b8b8b8b8b8b8b90949fabb7c4bbafa499938b8b8b8b8b8b8b877a78858f8f8f8f8f8f8f8f8f8f8f8f9299a3afbbc5b8aca095908f8f8f8f8f8f8f8f8f8f8f8f83766a5d5043372a1d100400000000000000040a0f131e28323a44505b666e7a859199a4a29a938c82796e696163707d8996a3b0bcc4b8ab9e9185786e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e7a8693a0adb9c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2acacacacaeb4bdc6d1d1c7bdb5afacacaca5988b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e616c717a818a91979d9f92877c6f675d51473e323a4754606d7a86868686868686868686868686868686868686868686868686868686868686868686868686868686868276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776a687683909b9898928f8c89827569697884919ea7a5aba39f9d9286796d6064717d8a9298a0a7afaaa29f938e837b6f6b60544747474745413a31281d1307000000000000000a1724313d4a5764707e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f82909ca9b6c3b9ac9f93877f7f7f7f7f7f7f7f79758182828282828282828282828287929facb9c3b7aa9d90838282828282828282828282828073675a4d4034271a0d01000000000000000007101925303a444f59606c78828f97a1abaca49f938f837b706b63707d8996a3b0bcc4b8ab9e91857c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c8895a2afbbc6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afb9b9b9babfc6cfd8d9cfc7c0bbb9b9b2a5988b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b454d525a61686e757e858e93958c7f736a60554b40352c3945525d687679797979797979797979797979797979797979797979797979797979797979797979797979797979797670665a4e4135281c0f02000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776a66737f8c8e8b8885827f7d796d606875818e9b9b99979992918f897c6f62606d78828f96a1aba8a098928b81796e6960595454545454514b433a2f24180d01000000000004111d2935404b55616c70727273777a7e817c72727272727274808d9aa7b3c0b9ac9f928679727272727272726d6f757575797d7b7575757575757985929facb8beb2a5988b7f757575757575757575757575736e64584c3f3326190d0000000000000000040d19222935414c56606b727f8c949fa9b3b6afa69e9591867d7063707d8996a3b0bcc6b9ada19791888888888888888888888888888888888888888888888e99a4b0bdc6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcc0c1c2c6cbd3dbdcd4ccc7c3c2beb2a5988b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b424650565e616c717a81899083786d60584e43392f2935414c565d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493d3225190d00000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776a63707d84827f7c797673706d676065727e8b908e8c8a88868482807b6e6260666d7a849199a39e9691867e746d6760606060606060605d554b4135291d110400000000000613202c3945515d676d75797c8083878b8e82766b6565656774808d9aa7b3c0b9ac9f9286796c65656565686d72767a7e82858a82766b6969696c7985929facb8beb2a5988b7f72696969696969696969696967645c52473b2f23170b00000000000000010c161f2b343c46525e686f7d87929fa6b0bbc0bbb0a89f958d807467707d8996a3b0bcc9beb3a9a19e9595959595959595959595959595959595959595959599a0aab5c1c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afb3b3b4b6bac1c9d3d4cac2bbb7b6b3b2a5988b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e57606d798693a0acb9bdb1a4978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212930363e444c525a61686d747d847b6e665c50463d3128242f3a444c525f60606060606060606060606060606060606060606060606060606060606060606060606060606060605c5a544c42382c21150900000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776d6d6d777875726f6d6d6d6d6d6d6d6d6f7c8583817f7d7b797775736e6d6d6d6d6d6f7c87929f948f847c716d6d6d6d6d6d6d6d6d6d6d675d5145392c20130600000000000714202d3a4753606d798185898d90939a94897d727272727274808d9aa7b3c0b9ac9f9286797272727272717a7f83868b8f9294897d71717171717985929facb8beb2a5988b7f727171717171717171716f6a5f58524a40362b1f13070000000000000008131e28313c46515b616d7a849199a3afb8c2c0b5aba2979083786d63707d8996a3b0bccfc4bbb3adaba1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a2a4aab2bcc6c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2a6a6a6a8aaafb7c1cbccc2b8b0aba9a6a6a5988b7f727b8794a1aebabbaea295887b6f646464717e8b97a4b1beb7aa9e9184776b6464646d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a323b414650565d616b70796e695f544a3f342b1f1e28323a41455353535353535353535353535353535353535353535353535353535353535353535353535353535353534f4e49423a30261b100500000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d90837a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7f8c998f827b7a7a7a7a7a7a7a7a7a7a7a7a7a6d6054473a2d21140700000000000613202c3945515d6775828f98999d9fa49d90837f7f7f7f7f7f82909ca9b6c3b9ac9f93877f7f7f7f7f7f7e79859093999b9f9d90837e7e7e7e7e7e86929facb9c1b4a79b8e817e7e7e7e7e7e7e7e7e7e7c6f62554940382e24190e02000000000000010d19242f3a434e58626d75828f96a1abb5c0c3bbafa49992857b6e6663707d8996a3b0bcc9cdc4beb9b8aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafb0b5bcc4d0c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995999999999b9ea5afbac6c7bbb0a69f9c999999988b7f727b8794a1aebabbaea295887b71717171717e8b97a4b1beb7aa9e9184777171717171798693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a202930363e444c525961656c655f574d42382e22191620282f353946464646464646464646464646464646464646464646464646464646464646464646464646464646464643413d3830281e140a0000000000000000000000000000000713202d3a4653606d798693a0acb9c4b8aca09590878787878787878787878787878787878787878787878787878787878787878787878787878c919c948f8787878787878787878787878783776a5d5144372a1e11040000000004111d2935404b55626e7b87929fabacaca095908b8b8b8b8b8b90949fabb7c4bbafa499938b8b8b8b8b8b84787f8c97a2abaca095908a8a8a8a8a8a9298a3aebac2b6a99d938e8a8a8a8a8a8a8a8a8a8a8073675a4d4034271c12080000000000000004111d2935414c55606a727f8c949ea8b2bdc3bab0a69f93877d70695e63707d8996a3b0bcc3c3c3c3c3c3bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbc3c3c3c3c3c3b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c898d8d8d8d8d8e939eaab6c2c3b7ab9f948f8d8d8d8d8b7f727b8794a1aebabfb2a5988c7f7e7e7e7e7e808d9aa7b4c0b8ab9e91857e7e7e7e7e7e7e8a97a4b1bdbdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e171e252a323a41464f535b605b534d453c30261c100d161e24292c3939393939393939393939393939393939393939393939393939393939393939393939393939393939393635322c261e160c020000000000000000000000000000000713202d3a4653606d798693a0acb9c8bcb1a7a09d93939393939393939393939393939393939393939393939393939393939393939393939393999ca39e9c9493939393939393939393939084776a5d5144372a1e110400000000010d18242f3a47535f6974818e99a3aeb1a7a09d9898989898989c9fa6b0bbc7c0b5aba49f98989898989184787a85929fabb1a7a09d9797979797979fa3aab4bfc6baafa59d9b9797979797979797978d8073675a4d4034271a0d01000000000000000613202c3945515d676f7c87929fa6b0bac4bcb2a89e948c7f736b615763707d8996a3b0b6b6b6b6b6b6b6b6b7b8bdc3ccc8c8c8c8cbc3bcb8b7b6b6b6b6b6b6b6b6b6b6b6b6b6b6ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b808080808080818e9ba8b4c1c2b6a99c8f8280808080807d6f7b8794a1aebac0b4a79b918c8a8a8a8a8a8d929da9b5c2b9ada197918a8a8a8a8a8a8a909aa6b2bfbdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d1419202830353d414950535049413c332a1e150a040c13191d202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292825211b140c04000000000000000000000000000000000713202d3a4653606d798693a0acb9cdc3b9b1acaaa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a5a7adaaa9a1a0a0a0a0a0a0a0a0a0a09d9084776a5d5144372a1e1104000000000007131d2b37424d57616e7b86929fabb5b1acaaa5a5a5a5a5a5a9abb0b8c2cdc7bdb5afaca5a5a5a59e91847873808d99a3afb1acaaa4a4a4a4a4a4acaeb4bcc6cbc0b7afa9a7a4a4a4a4a4a4a4a49a8d8073675a4d4034271a0d010000000000000915212e3a45505a606d7a849199a3aeb8c1bfb4aaa0968f82776c60595663707d8996a3a9a9a9a9a9a9a9a9a9aaacb1bac3cfd8d9cec3b9b1acaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e7373737373737c8996a2afbcbeb2a5988b7f73737373736f6e7b8794a1aebac4b8ada39b9897979797979a9da4aebac5beb3a9a19e979797979797979aa2acb7c2bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e161e24292f383f4446443f382f2a21180c030001080d11131420202020202020202020202020202020202020202020202020202020202020202020202020202020201c1c1915100a0200000000000000000000000000000000000713202d3a4653606d798693a0acb9c6cbc3bcb8b6adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadb2b4b8b7b5aeadadadadadadadadadaa9d9084776a5d5144372a1e11040000000000010e1a26313c46525e6974818e99a4afbbb8b6b2b2b2b2b2b2b6b7bbc2cad4d0c7c0bbb9b2b2b2ab9e9184786e7b87929facb9b8b7b1b1b1b1b1b1b9babfc6cfd2c9c0bab6b4b1b1b1b1b1b1b1a69a8d8073675a4d4034271a0d010000000000000b1724313d4a56626c75818e96a0abb4bfc3baaea29891847a6d655b505663707d89969d9d9d9d9d9d9d9d9d9d9da0a8b1bdc6d1d4c8bcb1a7a09d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d93867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e6166666666666f7c8996a2afbcbeb2a5988b7f7266666666626e7b8794a1aebac9bfb5ada7a5a4a4a4a4a4a7a9aeb6c0cbc4bbb3adaba4a4a4a4a4a4a4a6acb4bec8bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d262d33373937332d261d180f0600000000010407071313131313131313131313131313131313131313131313131313131313131313131313131313131313100f0d0905000000000000000000000000000000000000000713202d3a4653606d798693a0acb9c5c5c5c5c5c3babababababababababababababababababababababababababababababababababababababfc5c5c5c2bababababababababab7aa9d9084776a5d5144372a1e11040000000000000915202a36424d57626e7b87939facb9c4c0b6aea8a6a6a6a9abb1b9c2cdc7beb6afaca6a6a6a69e9184786975828f9ba8b2bdc1b7afa9a7a7a7acafb5bdc7cdc2b9b1aba9a7a7a7a7a7a7a7a69a8d8073675a4d4034271a0d010000000000000b1825323e4b5865717e8b939da5aeb4bcb9afa59f92867c6f685d53495663707d8990909090909090909090909195a0abb5bfcbd1c5b8aca095909090909090909090909090909090909090867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b454d52545a5a5a5a636f7c8996a2afbcbeb2a5988b7f72655a5a5a616e7b8794a1aebac7c7bfb8b4b2b1b1b1b1b1b4b5bac0c8d2cdc4beb9b8b1b1b1b1b1b1b1b2b7bec6cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080b141b22272b2d2b27221b140b0600000000000000000006060606060606060606060606060606060606060606060606060606060606060606060606060606060302000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9babfc6cfc6c6c6c6c6c6cec6bfbab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7aa9d9084776a5d5144372a1e1104000000000000030e1a25303b47535f6975828f9ba8b2bdb9aea49c9a99999d9fa7b1bcc8c0b6aca49f99999999999184786b707d8996a1adb9baafa59e9b9a9a9fa3abb5c0c7bcb1a79f9d9a9a9a9a9a9a9a9a9a8d8073675a4d4034271a0d010000000000000815212e3b4854616e7b838e939fa3aab2b1a79d938b7e716a5f564c4956626f7c838383838383838383838383849199a3aebbc7d0c3b7aa9d9083838383838383838383838383838383838383796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b4246484d4d4d56636f7c8996a2afbcbeb2a5988b7f7265584d54616e7b8794a1aebac7cbc9c4c0bfbdbdbdbdbdc0c2c5cbcbcbcbcfc9c6c4bdbdbdbdbdbdbdbfc2c8cbcabdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f201f1b17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acacacacacacacacacacacacacacacacacacacacacacacacacaeb4bcc6d1dcd3d3d7cec5bcb4aeacacacacacacacacacacacacacacacacacacacacacaa9d9084776a5d5144372a1e11040000000000000009141f2b37424d5763707d8996a1acb9b5a89c928d8c8c90959fabb8c4bbafa49a938c8c8c8c8c8c84786b6c7884919eabb7b6a99e938e8e8e9299a3afbbc4b7ab9f95908e8e8e8e8e8e8e8e8e8d8073675a4d4034271a0d010000000000000714212d3a46535e696e79818b9298a1a8aaa0958e81746c62584e434754606a6f7676767676767676767676767a86929facb9c5c4bfb2a5988c7f7676767676767676767676767676767676766d665c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212930363a3b40404956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3aab4bfcbd7e3dbd0c5bcb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9084776a5d5144372a1e110400000000000000020e1a26313c4653606c7884919eabb7b3a69a8d80808083909da9b6c3b9ac9f93888080808080807f72656573808d99a7b1b4a79b8e81818187929facb9c3b6a99d9082818181818181818181817e7164574a3e3124170b0000000000000005121e2a36424d575e676d747e8691969fa2989083796d605a50463c434e5860626a6a6a6a6a6a6a6a6a6a6a6875828f9baab3b9b8b6b5aa9d9184776b6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a605c544b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e333c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aeb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798692929292929292929292929292929292929292929292929292929298a3aebac7d3e0d6cabfb4aaa29892929292929292929292929292929292929292929292929084776a5d5144372a1e1104000000000000000009151f2b3744505b65737f8c99a7b1aea3968a7d7374808d9aa7b3bab9ac9f9286797373737373726d62626f7b8895a0acb0a396897d747985929facb8bcb2a5988b7f74747474747474747474716c6155493c3023170a00000000000000020e1a25313b454d555c606c717c848f949f92857b6e675d51483f343d464e54565d5d5d5d5d5d5d5d5d5d5664717d8a98a2aeacaba9a8a6a095897c6f63555d5d5d5d5d5d5d5d5d5d5d5d5d5d53514b42392e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e2023303c4956636f7c8996a2afbcbdb2a5988b7f7265584c54616e7b8794a1a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7886858585858585858585858585858585858585858585858585858586929facb9c5d2dfd3c6baaea2988a86858585858585858585858585858585858585858585858583766a5d5043372a1d10040000000000000000030f1b27333f4953616e7b87959faba39f9b8e817474808d9aa7aeaeaeac9f9286796c6666666665625b5f6a7784909da8a5a89a8e81747985929facb0b0b0a5988b7f7267676767676767676764615a5045392d211408000000000000000009141f29333b434b515a626a6f7a828d928a7e70695f554b40362d343d4347495050505050505050505053606d7985929fa49f9e9d9b9998968e8174675d51505050505050505050505050504645403930271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121623303c4956636f7c8996a2afb0b0b0a5988b7f7265584c54616e7b879498989898989898989898989898989898989898989898989898989898989898989898989898989898978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0e0e0b0a08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c666d797979797979797979797979797979797979797979797979797979808d99a6b3c0ccd2d2c5b8ac9f92867879797979797979797979797979797979797979797979797671665b4f4236291c10030000000000000000000b17222d3846535e697783909a989992908d847874808d9aa1a1a1a1a19f9286796c5f595959595751586673808d999b9996969185787985929fa3a3a3a3a3988b7f72655b5b5b5b5b5b5b5b575550483e33281c11050000000000000000030d17212930394045505860686d78808980736c61574d43392f242b32373b3c43434343434343434345515c6774818e969a9391908e8d8b8a88867a6d6054474343434343434343434343433a38342e271e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002091623303c4956636f7c8996a2a3a3a3a3a3988b7f7265584c54616e7b878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f14181a1b171614100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000306070707070707060503000000000000000000000000000000000000000000000000000000000003101c28343f4a545c606c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c687783909daab6c2c4c5c7c2b5a89c8f8275666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a665f554a3e32261a0e0100000000000000000006111b2a36424d5766727f8c8e8b888683817e7874808d949494949494949286796c5f534d4d4c4a4956636f7c89918e8c898784827a798592969696969696968b7f7265584e4e4e4e4e4e4e4a49453e362c22170c00000000000000000000050f171e272e343f464e565e666d737d786d605a50453c31271d20272b2e2f373737373737373734404b5564707d8a898886858382807e7d7b7a6d675d51453937373737373737373737372d2c28231d150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996979797979797978b7f7265584c54606d797f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7b6e6255483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a202427282423211c170f0a04000000000000000000000000000000000000000000000000000000000000000003050609060c101213141414141413120f0b06080705020000000000000000000000000000000000000000000000000b17232e38424a50535f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f616d7a87939facb3b5b7b9babdb2a8988b7f72655f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5b554d43382d22160a00000000000000000000000e1a25313b4855626e7b83817e7c797774716d748087878787878787878787796c5f5346403f394653606c788584827f7d7a78756d79868989898989898989897f7265584c4141414141413e3c39332c241a10050000000000000000000000050c151d2328343d444c545c606b706d665c50483e332a1f15151b1f22232a2a2a2a2a2a2a232f3a4753606d797e7d7b797876757372706f6d675d554c4135292a2a2a2a2a2a2a2a2a2a201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c898a8a8a8a8a8a8a8a8a7f7265584c515d676d72727272727272727272727272727272727272727272727272727272727272727272727272727272727272726e695f53473a2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b141d252b30333531302d28221b160e090300000000000000000000000000000000000000000000000000000000060b0f12131619171c1f202121212120201f1b17181514120e09040100000000000000000000000000000000000000000006111c2630383f444652525252525252525252525252525252525252525252525864717e8b9aa4a5a7a8aaacaeb4aca096887b6e6155525252525252525252525252525252525252525252504f4a433b31271c110500000000000000000000000914212e3a47535f696e7774726f6d666765606d7a7b7b7b7b7b7b7b7b7b7b6e6154473b33323844505b666d79777572706d686963707d7d7d7d7d7d7d7d7d7d7b6e6154483b343434343431302d28221a120800000000000000000000000000030b1218222b323a424a50596063605c544a3f362c21180d0a0f1315161d1d1d1d1d1d1d1f2c3845515d676d71706e6d676a6866656362605d554c433a2f24191d1d1d1d1d1d1d1d1d1313100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7d7d7d7d7d7d7d7d7d7d7b6e6155484b555d606565656565656565656565656565656565656565656565656565656565656565656565656565656565656565625f574d42372b1e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121d262f363c40413e3c39332c27211a140c0700000000000000000000000000000000000000000000000001080d11171b1f20232623282c2d2d2e2e2d2d2d2b27222521211e1a14110d080100000000000000000000000000000000000000000a141e262e34383a464646464646464646464646464646464646464646464e5b6875818e9996989a9c9d9fa3aba59e918477695f5346464646464646464646464646464646464646464643423e3831291f150a00000000000000000000000006121e2b37424d575f626a676562605c54585d686d6e6e6e6e6e6e6e6e6e6e695e52463a2d28333f4a545c676d67686663615e56606b707070707070707070706e695e53463a2d282828282423211c17100800000000000000000000000000000000071019202930383f444f545653504a42382e241a0f060003060809101010101010101d2935404b555d60656361605c555b5a58575554514b433a31281e130810101010101010100706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d686d707070707070707070706e695f5346434b5154585858585858585858585858585858585858585858585858585858585858585858585858585858585858585855534d453c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1b242f3941484c4e4a49443e38322a251f18120b03000000000000000000000000000000000000000000040c13191b22272b2d2f322e34383a3a3a3a3a3a3937332d322e2d2a25201d19130c0400000000000000000000000000000000000000020c141c23282b2d39393939393939393939393939393939393939393943505d6a768386888a8b8d8f91929996989a8d807467574d4237393939393939393939393939393939393939393736322d271f170d03000000000000000000000000020e1a26313c454d53555d5b585553514b4c565d60616161616161616161615e574d42362a222d38424b555c605c55595654524f596063636363636363636363615e574d42362a1e1b1b1b171714110c05000000000000000000000000000000000000070e171e262e343d44484a46443f3830261c12080000000000000404040404000c18242f39434b515358565553514b4f4d4b4a484745413a31281f160c01040404040404040400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c565d6164646464646464646464615f574d423a4145474c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4847423c332a1f1509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202d36414b53595b57555048443d363128231d150c0701000000000000000000000000000000000000070d161e24292d3337393c3f423f4446474747474746443f413e3b3a36312c29241e160d0800000000000000000000000000000000000000020a11171c1f202c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c35424e5b667176797b7d7f8082848687898b8d897d706356493d31262c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a2926221c150d04000000000000000000000000000009151f2a333c424748514e4b49464540434c525454545454545454545454524d453b30251c262f39434b5153514b4c4a4746474f545656565656565656565654534d453b31251a0e0e0e0b0a0805000000000000000000000000000000000000000000050c141c232833383c3d3a38342e261e150a0000000000000000000000000007121d2731394045474b4a4846454042403f3d3c3a39352f281f160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c52545757575757575757575755534d453b3135393a3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3b3a37312a21180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323f48535d646864615a544f46423b342e271e18120b03000000000000000000000000000000000710191f282f35383f4446494c4e4a505354545454535350494e4b4846423b39352f28201a12090000000000000000000000000000000000000000060b1012131f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f26323e4a555e66666d6e7072747577797b7d7e8081786c605346392d201f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16110a03000000000000000000000000000000030e18212a31373a3b44413f3c3a38343a4145474848484848484848484746423b33291f141d27313940454745403f3d3a393d44484a4a4a4a4a4a4a4a4a4a4846423b33291f140900010000000000000000000000000000000000000000000000000000020a111721272c2f302d2c28231c150c0300000000000000000000000000010b151f272f35383a3e3d3b3a38342e3332302f2d2c29241d160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a4146474a4a4a4a4a4a4a4a4a4a4846423b332a292c2d32323232323232323232323232323232323232323232323232323232323232323232323232323232323232322f2e2b261f180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d1925303a44505a646f74716c636059534d4540393029231d150d060000000000000000000000000000060f19222b313a414549505356595b545c606061616060605b535a5854534d4745413a322c241b120900000000000000000000000000000000000000000003060713131313131313131313131313131313131316222d38434c55545c606163656769666c6e707273756c665b5044382b1f12131313131313131313131313131313131310100e0a05000000000000000000000000000000000000060f181f262b2e2f3734322f2d2c282f35393a3b3b3b3b3b3b3b3b3b3b3a36302920170b151f272f34383a38342f302e2d33383c3d3d3d3d3d3d3d3d3d3d3b3a36312921170d03000000000000000000000000000000000000000000000000000000000000060b161c202223201f1c17110a03000000000000000000000000000000030d151d24292c2d32302e2d2c28232725242221201d18130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1620283035393a3d3d3d3d3d3d3d3d3d3d3b3a36312a211d2021252525252525252525252525252525252525252525252525252525252525252525252525252525252525252522211e1a150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a36414c56626c74817d766f6b615e57514b433d342f271f181008000000000000000000000000030d18212b343c434c51535b606265686a666d6d6d6d6d6d6c65696765615e5754524c443e362d241b10060000000000000000000000000000000000000000000000060606060606060606060606060606060605111c27313a43424a51535557585a545b606163656768605b544a3f33281c0f0306060606060606060606060606060606040301000000000000000000000000000000000000000000060e151a1e21222a282522201f1e24292c2d2e2e2e2e2e2e2e2e2e2e2d2a251f170e050d151d23292c2d2c2923232120272c2f303030303030303030302e2d2a251f170f050000000000000000000000000000000000000000000000000000000000000000050b101416171312100c06000000000000000000000000000000000000030b12181d1f20252322201f1c181a1817151413110d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e161e24292d2e313131313131313131312e2d2a261f1811131419191919191919191919191919191919191919191919191919191919191919191919191919191919191919191514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313946525e68717e8b8a837c756e69605c554f454039312a221a1206000000000000000000000009141f29333c464e555d60656c6f72757778797a7a7a7a7a79787674716e6965605d5650483f362d22180e03000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f28313039404446484a4c4d4a50535456585a5b53504a42382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151e1b1816131313191d202121212121212121212121201e1a140d0500030b12181c1f201f1c181714161c20222323232323232323232321211e1a140d0500000000000000000000000000000000000000000000000000000000000000000000000407090a07060300000000000000000000000000000000000000000001070c1013141817151313100c070c0a09070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d20212424242424242424242422211e1a140e0606070c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b18242f39434f59616d7a8592959089827b736d676059514b433c342c2417110a020000000000000000020e1a26313b454e5860676d73787c7f818385868787878786868483817e7b77726d68615a50483f342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f1e272e34383a3b3d3f413f4446484a4b4d4e46443f382f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060808110e0c090706080d1113141515151515151515151414110e090200000001070c10131413100c07070b101316171717171717171717171514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070b0a0807060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314171717171717171717171514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2935404b55606b75818e979f9d938f867f796f6b605c554e463e3627221b140b020000000000000005121e2a36424d57606a6f7a8084898c8e909297939494939992918f8d8b87847f7a706c625a50463c31261a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000040d0c151c23282c2d2e30322d3338393b3d3f40423938332d261d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004010000000000010406070808080808080808080807050200000000000000000406070604000000000407090a0a0a0a0a0a0a0a0a0a080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070a0a0a0a0a0a0a0a0a0a0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3845515d67707d89939ea9a59e98928c847d736d675f58504840332d261d140a000000000000000714212d3a46535f696f7c848c9196989b9d9fa2a9a0a0a0a39f9e9c9a9896918c857e716c62584e43372b1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f2022242522282b2d2e303234352d2b28221c140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070808080808080808080808070502000000000000000000000000000000000000000002030405050606060605020000000000000000000000030608090b0a080500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424e58606d7984919ea5afafaaa29f96918780796f6a615a52443f382f261b1106000000000005121e2b37424d57616e7b8591969ea1a9a8aaabadb3adadb5afacaba9a7a8a09d97928a7e716a5f53473a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101213151719171c1f202123252728201f1c17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607070707070707070707070706040100000000000000000000000000000000000000000000000000000000000004060707070707070707070707070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101213151515151515151515151514120e09030000000000000000000000000000000406070f1011111213131312120f0b0706040000000000040a0f131516181715110c06000000000000000000000000000000000000000000000204050506060606060505040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708090a090807050200000000000000000000010406060605040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545f6a73808d96a0acb7bcb4aea8a099938d837c716c635b504941382d22171007000000000714212d3a46535f6975828f97a1a9adb2b4b6b8babebabac0bbb9b7b6b4b2aca9a19e92877c6f62564c4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a060b0f12131517181a1b13120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b101213141414141414141414141413110d07010000000000000000000000000000000000000000000000000001070c101314141414141414141414141312100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f202121212121212121212121211e1a140d05000000000000000000000001070c1013141c1d1d1e1f1f20201f1e1c181312100c070000070f151b1f22232524211d170c07000000000000000000000000000000000306070a0d0f11121213131313121211100f0c08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141617161414110e09020000000003070b0d0e1112131312110e0b07060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666f7c87929fa8b2bdc6bfbab2aba49f9591867e736e605b53493f332722190d030000000815222e3b4855616e7b88949ea9b2b9bdc1c3c5c6cad0d1cbc7c5c4c2c0bdb8b3ada3998e8275685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606080a0c0d0f060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f202020202020202020202020201d18130c040000000000000000000000000000000000000000000000030b12181d1f2020202020202020202020201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d2e2e2e2e2e2e2e2e2e2e2e2d2a251f170f05000000000000000000030b12181c1f2028292a2b2b2c2c2d2c2b2825201f1c18120b07101920272b2e2f31302d282218120b03000000000000000000000000060b101213161a1c1d1e1f1f2020201f1f1e1d1b191514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607070705030a0f14191e202123242321201e19140f0a0401080e1317191a1d1f20201f1e1b171312100b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953606c78839099a3afbac3c9cac3bdb5afa8a098928a80746c655b50443f342b1f150b0100000c1926323f4c5965727f8c98a6b0bbc4c9cfd0cec8c5c4c3c3c3c5c7cbcec8c5beb5ab9f92867a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c23282b2d2d2d2d2d2d2d2d2d2d2d2d2c29241d160d09090909090909090909090909090909090909090909090d151d24292c2d2d2d2d2d2d2d2d2d2d2d2d2c28231c150c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3b3b3b3b3b3b3b3b3b3b3b3a36312921170d0300000000000000030d151d23292c2d3536373838393939393835312d2c28231c151119222b32373b3c3e3d393428231c150c05000000000000000000020a11171c1f202326292a2b2c2c2c2c2c2c2b2b2a282621211e1a140b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000001080d1113141413110d151a1f252a2d2e2f30302e2d2a251f1b160f0b12191f2326272a2c2c2c2c2a2824201f1c17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b65727f8b959fa7acb2b9bec5ccc7c0bbb1aaa29f928c80776c605b51463d31271d120700020f1b2835424e5b6875818e9ba8b4c1cdd5d0ccc3bdb9b7b6b6b7b9bbc0c7cfcfc6bbafa3998a7d7164574a3e3124170b0000000000000000000000000000000000000306070707050100000000000000000000000000000000000000000000000000000000000203000003060707080809090a0a0a0a0b0b0b0a0a0a0a0909090908070606030000030000000000000000000000000000000000000000000000000a141e262e34383a3a3a3a3a3a3a3a3a3a3a3a39352f281f161616161616161616161616161616161616161616161616151f272f35393a3a3a3a3a3a3a3a3a3a3a3a38342e271e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c273039404446484848484848484848484846423b33291f1409000000000000010b151f272f34383a42434444454646464545423e3a38342e271e1a232b343d4347494b49453e342e271e170e0600000000000000090c141c23282b2d303335373838393939393938383735322e2d2a251f17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506100e0c0a08070604000000000000000000000000000000060b13191d202121201d1920262b30363a3b3c3d3c3b3a36302b272019141d242b30333437393939383734312d2b28231c140c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78828a90959ea0a8adb3bbc0c7ccc3bcb4aea49c928d80746d62594f43392f24180c0204101d2a3743505d6a7683909da9b6c3d0d0c6bebab2acaaa9a9aaacafb5bdc2cacbc0b5ab9a8d8073675a4d4034271a0d01000000000000000000000000000000060b1012131413110d08020000000000000000000000000000000000000001040607090a0c0d0e0f060c1012131415151616161717171717171717171616161615151413120f0b0610070704010000000000000000000000000000000000000006111c2630383f4446474747474747474747474745403a312823232323232323232323232323232323232323232323232323273139404547474747474747474747474644403930271c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424a51535454545454545454545454534d453b31251a0e02000000000007121d2731394045474f5050515252535352514f4b46444039302a232c353d464e5456585650444039302920180f0700000000020b121b1e262e34383a3d40424445454646464645454443423f3b3a363127221b140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131d1b1917151312100c070a08060603000000000000020a11171e24292c2d2e2d2a252a31373b424647494a494746423b38322b221d262e363c3f41444546464544413e3a38342e261e191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c767d838a91969ea1a9afb5bdc3ccc6bfbaaea49d928b7f726b60554b4035291e130800121e2b3845515e6b7884919eabb7c4d1ccbeb4aca8a09e9c9c9d9fa3abb0b8c2ccc2b5a89b8f8275685c4f4235291c0f0200000000000000000000000000020a11171c1f2021201d19130c040000000000000000000000000000030607070d1013141517191a1b1c1d171c1f2021212222232324242424242424242323232322222121201f1c171d1c1413110d080200000000000000000000000000000000000b17232e38424a50535353535353535353535353514b433a32303030303030303030303030303030303030303030303030302f39434b51535353535353535353535353514a42392e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a545c6061616161616161616161615e574d42362a1e120500000000000c18232f39434b51535b5c5d5e5e5f5f605f5e5b5853514a423c332c353d474f58606264615a514a423b322a211910070000000b141d242d30383f4446494d4f50515252535353525251504e4c4846423b332d261d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f202a28262422201f1c1818171513120f0b060a0806080b141c22282f35393a3a393630343c43474d525456575654524d47433d342b232e3840474c4d5052535352514e4a46443f38302b2219100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b606b70787d848b92979fa4abb1bac0cbcabfb6aea49f92877c6f675d51453a3025190d01121f2c3845525f6b7885929eabb8c5cec3baaca29a969190909092999fa6b0bbc7c3b6aa9d9083776a5d5044372a1d1104000000000000000000000000020c141c23282b2d2e2d29241e160e040000000000000000000004060c10121316181d20202224252728292a23282c2d2d2e2f2f303030313131313131303030302f2f2f2e2d2d2b28222a2921201d19130c0400000000000000000000000000000003101c28343f4a545c6060606060606060606060605d554c443c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c404b555d6060606060606060606060605c544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c666d6e6e6e6e6e6e6e6e6e6e6e695e53463a2d2114070000000004101c2934404b555c6068696a6b6b6c6c6c6c6b6864605c544e453c363e474f59606a6f716c605c544c443c332b221911070009131d262f363e424a505356595c5d5e5f5f5f5f5f5f5e5e5d5b5954534d443f382f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272b2d373533312f2d2c2823252321201f1c171817151314191d262d333a4145474746413a3c464e53565e61626363615e56544e463d352b33404a52585a5d5f5f5f5f5d5b5753504a423c342b22180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d384149505961656c71797f858d9399a0a8aebbc0c7c8c0bbafa3999184796d60564c4135291d1105121f2c3945525f6c7885929fabb8c5c8bdb2a89a908a84838383868f949faab7c5c4b7aa9e9184776b5e5144382b1e07000000000000000000000000000a141e262e34383a3a3935302820160c0300000000000000070c1013171c1f202324292c2d2f3132333536372e34383a3a3b3b3c3c3d3d3d3d3e3e3e3d3d3d3d3c3c3c3c3b3a3938332d37362d2c29241e160e04000000000000000000000000000006121f2b3844505c666d6d6d6d6d6d6d6d6d6d6d6d675d564c49494949494949494949494949494949494949494949494949494949515d676d6d6d6d6d6d6d6d6d6d6d6d665c5144382c1f1206000000000000000000000000000000000407090a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0706040100000000000000000000000000000713202d3a4653606d787b7b7b7b7b7b7b7b7b7b7b6e6154483b2e2115080000000006131f2c3845515c676d7576777778797979787875716d665f574e443e485059616b6f7c7e746d665e564d453c342b231910070c1b252f38414850545c606366686a6b6b6c6c6c6c6c6b6b6a6865615e57504941382d22170b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d33373943413f3d3b3a38342e32302e2d2b2822252321201f252a2f383f444c525454524c44434e585f62696e6f706f6e696260584f473d313b45525c64676a6c6c6c6b6a6764605c544e463c342a20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f444f535b60666d727a818791959da4afb5bdc7cbc0b5aba0968c8073685e5246392d20160a121f2c3945525f6c7885929fabb8c5c5b9aca0968a7e777676777a828f9ca9b3bec4b8ab9e9185786b5e52452f23180c00000000000000000000000006111c2630383f44464746413a32281e150b0200000002080d12181c1f23282c2d302f35393a3c3d3f40414243443f44464748484949494a4a4a4a4a4a4a4a4a4949494948484746443f4443433a3935302820160c02000000000000000000000000000713202d3a4653606d787a7a7a7a7a7a7a7a7a7a7a76685d565656565656565656565656565656565656565656565656565656565656606d797a7a7a7a7a7a7a7a7a7a786d6053463a2d2013070000000000000000000000000000050b10131616181818181818181818181818181818181818181818181818181818181413110d08010000000000000000000000000815222f3b4855626e7b8787878787878787878786796c5f5246392c1f13000000000714202d3a4753606d7981838384858586868584827e786e6a5f564c48505a616b707d868b80786e685f574e463d352b22190f151e2d37414a535a61666d707375777878797979797878777675726e69605b53493f33271e14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f4446504e4c4a48464440413f3d3b3938332d32302e2d2b30363d424a50565d60615e564c47535f6a6f777a7c7d7c7b766f6a60594f4339424d57646e7477787979787774716d6660584e463c32261b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333e414950545c60686d747c838d929fa3abb5bec7c7bdb2a89f92857a6d6154473d32271b0f121f2c3945525f6c7885929fabb8c5c4b7aa9e9184776c6969686e7b8897a1adb9c5b8ab9f9285786c554b4034291c100400000000000000000000000b17232e38424a505354524c443a30271d140a0001070c13191d23282c2e34383a3c3f404547484a4c4d4e4f50514a50535454555556565757575757575757565656565555545453504a51504f4745413a32281e1308000000000000000000000000000a1723303d4a5663707d86868686868686868686867a6d636363636363636363636363636363636363636363636363636363636363636b7784868686868686868686867f7266594c3f3326190c00000000000000000000000000070f161c2022232525252525252525252525252525252525252525252525252525252521201d19130c0400000000000000000000000815222f3b4855626e7b8894949494949494949285796c5f5246392c1f1300000000091623303c4956636f7c898f90919192929392918e8b847c6e685d52515a616c717d8692928d827a6e6960584f473d342b21181c27303f49535c646c71787c80828384858586868685858483817f7b736c655b50443b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414950535d5b59575553514a4d4b4a4846443f403f3d3b39383b41464e545b60686d6d685e524855626f7c8387898a8987837c706b60554b4046525e697480838586868583817d786f6a60584e43372b20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272f383f444a51565d616a6f79808b9299a3acb6c0ccc3baaea2988c7f7366584e43372b1f13121f2c3945525f6c7885929fabb8c5c2b5a89c8f8275695a565f697885929eabb8c5b9ac9f928679675c5145382c1f13060000000000000000000003101c28343f4a545c60615d564c43392f261b11060b12181e252a2e34383a3f4446494c4b51535557585a5b5c5d5e545c6060616262636363646464646464636363636262626160605b5e5e5d5c54524c443a3024190d010000000000000000000000000a1723303d4a5663707d89939393939393939393877a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f77849193939393939393938c7f7266594c3f3326190c00000000000000000000000007111921272c2f30323232323232323232323232323232323232323232323232323232322d2c29241e160d04000000000000000000000815222f3b4855626e7b8895a1a1a1a1a1a19f9285796c5f5246392c1f13000000000c1925323f4c5865727f8b989d9e9e9f9f9f9f9e9b9691857a6d60535b626c717e8792989d9490847b6f6a60594f463c332a20232e3942515b646e747e84898c8f90919292929292929191908e8c8780776c60564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b606a68666462605c545a58565453504a4d4b4a484644444d525860666c717a7a6d61544b5865717e8b959596969590877d70675c51454854616e7b879092929292908e8a847c6f6a5f53473c31261b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171d262d333940444c525860676d747f87929aa4afbbc3cabeb4aa9e9184776a6054473b2e2215121f2c3945525f6c7885929fabb8c5c1b5a89b8e8275685b4d576a7783909daab6c3bbafa399867a6d6053473a2d201407000000000000000000020c19232b3844505c666d6d685d554b41382d221711151d24293036394045464a50535659555d606264656668696a6a6b666d6d6e6e6f6f70707070717171707070706f6f6f6f6e6d6c666b6a6a69605d564c4135291d11040000000000000000000000000a1723303d4a5663707d8996a0a0a0a0a0a0a096897d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d84919ea0a0a0a0a0a0998c7f7266594c3f3326190c0000000000000000000000050f19232b33383c3d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3a39352f281f160c010000000000000000000815222f3b4855626e7b8895a1aeaeaeaeac9f9285796c5f5246392c1f1300000005111d2935414c566875818e9ba8aaabacacacababa8a0978d8073655b636d727e879299a2a69f9691857c6f6b60584e453c32282834404a54626d74808b9196999b9d9e9e9f9f9f9f9f9e9e9d9b99928c8073685e5246392d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c767472706e6d666967656361605b545a585654535051565e616a6f787e857f7265544b5a6773808d9aa8a3a79f999185796d6053474a5763707d8a969f9f9f9e9d9a9691867c6f62584e43372b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b141b22272e343a41464e555d606d727e88939fa7b1bcc8c5b9aca096897c6f6256493c2f2316081f2c3945525f6c7885929fabb8c5c1b5a89b8e8275685b505c6976838f9ca9b6c2c0b5a094877a6d6154473a2e2114070000000000000000000a141e2a36414c56606d787a6d675c53493f332723191f272f353a41464b5153545c60636668676d6f707273747576777879797a7b7b7c7c7c7d7d7d7d7d7d7d7d7d7c7c7c7c7b7b7a7978787776766d685d5245392c2013070000000000000000000000000a1723303d4a5663707d8996a3adadadadada59a8f89898989898989898989898989898989898989898989898989898989898989898989899196a1adadadadada5998c7f7266594c3f3326190c00000000000000000000000b16212b353d4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4745413a31281e13080000000000000000000815222f3b4855626e7b8895a1aebabab8ac9f9285796c5f5246392c1f130000000713202d3946525e687784919eaab7b8b8b9b9b8b7b2a99e9184786c606d727f889299a3abb0a8a19792867d6f6a60574e443a2f2c3844515c66727f8b929ea0a8a8aaababacacacacababaaa9aba39f92867a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7883817f7d7b7977757472706e6c666867656361605b5c60686e757c838b8f8275665c555c6975828f9ca8b0b1aba1978a7e7164574b4c5966727f8c99a5acacabaaa8a0989083766a5f53473a2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c232830353d434b515b626c73808c95a0abb8c4c9bdb2a8998c7f7366594c403025190d1f2c3945525f6c7885929fabb8c5c1b5a89b8e8275685b4f5c6875828f9ba8b5c2baaea194877b6e6154483b2e211508000000000000000006111c26303846525e68727f83796d655b50443e352b232b313940454c52545c6064666d6f7275787a7c7d7f80818283848585868787888889898a8a8a8a8a8a8a8a89898989888887878685858483827a6d6054473a2d2114070000000000000000000000000a1723303d4a5663707d8996a3b0b9b9b9b6aba19a96969696969696969696969696969696969696969696969696969696969696969696969ea1a8b2bdb9b9b2a5998c7f7266594c3f3326190c0000000000000000000004101c27333d474f54565858585858585858585858585858585858585858585858585858585854524c433a2f24190d0100000000000000000815222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000714212e3a4754616d7a8796a0acb9c4c5c5c6c5c3b9ada196887b6f6e737f8b939aa3abb4bab2a9a19892867c6f6a5f564c41382d3a4653606d7985929ea5acb2b5b6b7b8b8b9b9b9b8b8b7b6b5aea3998c7f7265594c3f3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a878e8c8a88868482807e7d7b7977757372706e6c66666d727b818790959285796d6060676d7784919eaab7bdb3a99b8e827568554c4a546875818e9ba8b4b9b8b7b2aa9f94887c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b12181e242931394045515a606d7883909da8b2bdc9c2b5a99c8f827669564c41362a1e111f2c3945525f6c7885929fabb8c5c1b5a89b8e8275685b4f5b6874818e9ba7b4c1bbaea195887b6e6255483b2f22150800000000000000000b17232e38424f59616e7a858e81776c605a50473d3328353d434b51565e61666d7075797c7f828486888a8b8d8e8f90919192989394959596969697979797979796969696959595949a9392919190897d7063564a3d302317090000000000000000000000000a1723303d4a5663707d8996a3b0bcc6c7bdb3aba5a3a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2abadb2bac4cfbfb2a5998c7f7266594c3f3326190c000000000000000000000713202c38444f59606365656565656565656565656565656565656565656565656565656565605d564c4135291d110400000000000000000815222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000a1724303d4a5763707d8a96a8b2b7b9bdc4ccd2c9bdb2a9978a7d7173808c919fa4acb5bdc4bbb3aaa29892857c6e685d53493f333d4a5764707d8a97a1adb9bdc2c3c4c5c5c5c5c5c5c4c4c3bfb4ab9c8f827669564c4135291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b889599979992918f8d8b8987868482807e7d7b797775797f868e939a9f97897c6f676d73797986939facb9bbb8ab9e918578675d51505c667784909daab7babfc3bcb0a6998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c13191f272f353f44505c66707d8a96a1acb9c5c5b8ab9f928578685e5246392d201b1f2c3945525f6c7885929fabb8c5c1b5a89b8e8275685b4f5a6774818d9aa7b4c0bcafa295897c6f6256493c2f2316090000000000000003101c28343f4a54606b74818e938c80736c62594f453c343f474f555d60686d73797d8185898c8f9196959798999b9c9d9d9e9fa3aaa1a1a2a2a3a3a3a3a4a4a4a3a3a3a3a2a2a2a2a1a49f9f9e9d998c7f7366594c4031251a0e0200000000000000000000000a1723303d4a5663707d8996a3b0bcc9cfc5bdb6b1b0afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafb8b9bdc4ccccbfb2a5998c7f7266594c3f3326190c000000000000000000000916222f3c4854606b70717171717171717171717171717171717171717171717171717171716d685d5245392c2013110c070705010000000815222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000d1a2633404d596673808c99a6a8abadb2bac3cbcfbfb2a5998c7f727b848e939fa2aab2bac2c5bcb3aaa19791847a6d655b50443b404d5a6773808d9aa9b3bec9cecbc7c5c1bfbebebfc4c6c9c5b8ab9e928578685d5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a3aba39f9e9c9a98969892918f8d8b8987868482818c92989fa4a9998c7f73727a80847c8999a4a8aaafb9ada197877a6d605455606d7986929fa9acaeb4bcc2b5a89b8f8275685c4f4235291c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d151d2429343f4a54616b7884919eabb7c4c6baada297877a6e6154473b2e2828282c3945525f6c7885929fabb8c5c1b5a89b8e8275685b4f5a6673808d99a6b3c0beafa396897c706356493d3023160a000000000000030c19232b3844505c666f7c89939c928b7e716b60574d444044515960676d737a80858a8e9298999b9ea1a8a3a5a6a7a8a9aaabacaeb4aeaeafafafb0b0b0b0b0b0b0b0b0afafafafaeb6afacababa89c8f827569574d42362a1e120500000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6cfc7c2bebcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcc4c5c9cfd6ccbfb2a5998c7f7266594c3f3326190c000000000000000000000a1623303d495663707d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7a6d6054473a2d21141d191413110d0802000815222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000005121e2a36424d576975828f9c9b9b9ea1a8b1b9c3cdbfb3a6998c80736e79818a9298a1a8b0b8c1c5bcb3a9a1968f82776c60574d42434f5c6976828f9ca9b5c2cfc7c0bbb9b4b2b2b2b3b8b9bec4b9ada197877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b5afacaaa8a7a5aaa39f9d9b9a98969892918f8e939fa2aaafa99c8f82787e858d8f828f94949b9ea5afb3a995887b6f626062626f7b88999d9d9fa2aab2bab7aa9d9184776a5e51442d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b1218232e38424f596774818d9aa7b4c0cabeb3a996897c6f6356493c34343434343945525f6c7885929fabb8c5c1b5a89b8e8275685b4f5966737f8c99a6b2b5b3ada3968a7d7063574a3d3024170a0000000000000a151e2a36414c56606d7883909da49f92877d70695f564c4a515b636b6f7980868c91979b9fa2aaa8abacb2b0b2b3b4b5b6b7b8b8babfbabbbbbcbcbdbdbdbdbdbdbdbdbcbcbcbcbbbbc0bbb9b8b8ab9e918578695e53463a2d21140700000000000000000000000a1723303d4a5663707d8996a3b0bcc9d3c9c1bbb6b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b8babfc5ceccbfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b887b6e6255483b2f22202a2621201d19130f0a0815222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000714212d3a46535f69788591908f8e9196a0a7b1bcc8c0b3a79a8d8074676d747e8691969fa6b0b8c1c5bbb2a89e948c7f72695f534644515d6a7784909daab7c3c7bdb5afaca7a5a5a5a6abadb3bbbeb3a995887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bbb9b7b5b3b1b4aeacaaa8a6a5aaa39f9d9c9a9d9ea1a8b2ac9f9287848b9297948f8d87878f939eaab4a296897c6f636a6f6a717e8a9291909298a0a8b2b8ab9e9285786b5f4a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000107111c26303e4b5764717e8a97a4b1bdd0bdb1a4978a7e7164574b4141414141414145525f6c7885929fabb8c5c1b5a89b8e8275685b4f5865727f8b98a5aba8a9a19e978a7d7164574a3e3124170b000000000006111c26303846525e68727f8b95a0aca39992857b6e685e55545c606d727d848c92989ea1a9abaeb4b5b7b9bdbdbec0c1c2c3c4c4c5c7cbd0c8c7c7c7c7c7c6c6c6c6c6c6c6c6c6c6c6d2ccc8c6c5b9ada197877b6e6154483b2e21150600000000000000000000000a1723303d4a5663707d8996a3b0bcc9ccc1b7afaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8acaeb4bcc5d0bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9898989898989898989898989898989898989898989898989895887b6e6255483b2f2c2d37332e2d29251e1a150f15222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000815222e3b4855616e7b8784838282849095a0abb8c4c0b4a79a8d817467606c717c8490949ea6afb7c1c4bab0a69f92867b6e61594f44515e6b7884919eabb7c4c0b5aba39f9b989898999ea1a9b3bdb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b0b2b3b5b7b8babfbab9b7b5b3b1b4aeacaaa8a1969196a1acaea3999290959ea1998d807a7b818f98a2aea396897d70686f7c76738088858483869196a0acb8ac9f928579665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15222f3c4855626f7b8895abb5bfcbbeb1a5988b7e7265584e4e4e4e4e4e4e4e4e525f6c7885929fabb8c5c1b5a89b8e8275685b4f5865717e8b98a19e9b9897928f8b7e7165584b3e3225180b00000000000c17232e38424f59616e7a85929fa7b1aba29791847a6d675c5c666d747f8791969fa2aaadb3b8babec2c4c5c7c5c4c3c2c0c0bfbebebdbcbcbbbbbababababab9b9b9b9b9b9b9b9b9babababbbbbcbeb3a9978a7d7164574a3e2d22170b00000000000000000000000a1723303d4a5663707d8996a3b0bcc9c6bbafa59e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa2aab4bfcabfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a195887b6e6255483b35383a443f3a3935302b261f1c17222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000713202d3a4653606d7879787675757983909daab6c3c0b4a79a8d8174675a616a6f7a828f949ea5afb8c2c1baaea3988f82756b615548525f6b7885929eabb8c5bbafa399928e8c8b8b8c9197a1abb5b1a4978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9baaa3a5a6a8aaacaeb4b1b2b4b6b8b9bebab9b7ab9e9184919eabb4aba39f9da0a7a89b8e82756e7a86929faca3978a7d706e7b87837c7d7c7877767a84919daab7aea39886796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8799a3aebbc7bfb2a6998c7f73665b5b5b5b5b5b5b5b5b5b5b5f6c7885929fabb8c5c1b5a89b8e8275685b4f5764717e8a9797918e8b8885827f7b6e6154483b2e2115080000000003101c28343f4a54606b75818e97a2adb9b3a9a0969082796d65676d78818c9299a0a8aeb4b9bec4c6c5c3c0bfbab9b7b6b5b4b3b2b2b1b0b0afaeaeaeadadadadadadacacacacacacadadadaeaeaeafafb0a6998d807366544a3f33281c0f03000000000000000000000a1723303d4a5663707d8996a3b0bcc9c3b6aa9e938f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a2aebac6bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1aea195887b6e6255483b404547504c4746413a37312b2822222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000006131f2c3845515c666d6d66696867717e8b97a4b1bec0b4a79a8d8174675a585f686d79828f939ea6b0bac3bfb4aa9e948a7d7063594f525f6b7885929eabb8c5b9ac9f9287817f7f7f80859199a3afb1a5988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f989596989a9b9d9fa2aaa4a6a8a9abadb3b0b2b3a69a8d808d99a3afb4aea8a19ea1a89f92867a6d76838f9ca9a3978a7d70727f8c9089827c726d68717e8b97a9b3b4a09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d687986929facb9c5c0b3a6998d8073676767676767676767676767676c7885929fabb8c5c1b5a89b8e8275685b4f5764707d8a8b8885817e7b7975726e695e52463a2d2014070000000006121f2c3844505c666f7d89939ea9b3bebbb2a89f948e81776c6d79828e939fa3abb2babfc5c6c0bbb9b6b3b4aeacaaa9a8a7a6a5a5a4a4a3a2a2a1a1a1a1a0a0a0a0a09f9fa0a0a0a0a0a0a1a1a1a2a3a3a49c8f8376665b5044382b1f1206000000000000000000000a1723303d4a5663707d8996a3b0bcc9c2b5a89b8f818282828282828282828282828282828282828282828282828282828282828282828186929facb8c5bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5bebebebebebebebebebebebebebebebebebebebbaea195887b6e625548434b51535d5954524c47433c38332d2a2f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000004101c2834404b545c60605c5455626f7c8995a2afbcc0b4a79a8d8174675a4e565e676d78818f949fa8b2bcc6bcb0a69d9083766b6054525f6b7885929eabb8c1b4a79b8e8174727272737b87929facb2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875818587888a8b8d8f9092989597999b9d9ea1a9a4a5a7a296897c86929facb9ada1969196a1a3998c7f7274818e9ba7a3978a7d707784919d948f887f72666d7a8797a2adaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566b7885929eabb8c5c0b3a6998d807474747474747474747474747474747885929fabb8c5c1b5a89b8e8275685b4f56626f7c817e7b7875726f6c6565615e574d42362a1e1205000000000713202d3a4653606d7984909da5afb7c1c4bab0a69e938c807379828f949da5afb5bdc4c0bbb9b5afaca9a6aba39f9e9c9b9a9999989797969695949494949493939393939393939393939494949595969697989285796c605346392d201306000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a7575757575757575757575757575757575757575757575757575757575757575757784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1cbcbcac4c0bfbfbfbfbfbfbfc2c4c7cdcbc8bbaea195887b6e6255484b555d606a66615e56534e46443f3836303b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000c18232e39424b515353514b55616e7b8894a1aebbc0b4a79a8d8174675a4e4c555c666d78828f96a0aab4bfc1b8ab9f95897d7063564c5f6b7885929eabb8bfb2a5988c7f72656565697683909ca9b3a69a8d8073675a4d4034271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2834414d59656f75797a7b7d7f8082848587898a8c8e9092979597999b9c94887b83909ca9b6ab9e9184919ea99d91847774818d9aa7a3978a7d707c8995a09f96897d7063687885929fabaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f45525f6b7885929eabb8c5c3b7aa9d90838181818181818181818181818181818186929facb9c5c1b5a89b8e8275685b4f54606a6f74716e69686562605b5354524d453b30251a0e02000000000713202d3a4653606d78818e939ea5afb7c1c2b8afa59c928b7e828f949ea6afbbc0c0bbb6afacaba39f9d9997999291908f8d8d8c8b8b8a898988888787878787868686868686868686878787888889898a8a8b8c887b6e6255483b2f221508000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d686868686868686868686868686868686868686868686868686868686868686b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1cec7bfb8b4b2b2b2b2b2b2b2b6b7bbc2cac8bbaea195887b6e625548515d676d77726d68625f5853504a46413a3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000007121d27303940454646454855616e7b8894a1aebbc0b4a79a8d8174675a4e434b545c666d7a849198a3aebac3bcb1a79c8f8275685e525f6b7885929eabb8beb1a5988b7e726558576774818d9aa7b1a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925313d49535d6568676d6f7072737577797a7c7e7f81838587888a8c8e9091877a808d99a6b3a79b8e818e97a1a095897c74818d9aa7a3978a7d74818e9aa79e9184786c606b7784919eaaaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081f2b3845525e6b7885919eabb8c4c5b8aca095908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9299a3aebac7c1b5a89b8e8275685b4f4e5860626865615f5758555350494846423b33291f1409000000000006121f2c3844505c666d78818e939ea5afb7c1c1b7aea49b908b8f949ea6b0b8c1beb6afaca49f9c9992908d8a888684838281807f7f7e7d7d7c7b7b7b7a7a7a7a7a7a7979797979797a7a7a7b7b7b7c7c7d7d7e7f807c6f6255483c2f221509000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d605b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5e6b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1cabfb5ada7a5a5a5a5a5a5a5a9abb0b8c2cdbbaea195887b6e62554a54606d79837f7a746e6a64605b54524c48444855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000b151e272e34383a3a3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e41424b545d686e7c86929fa8b2bdc2b9ac9f92867a6d61545f6b7885929eabb8beb1a5988b7e7265585966737f8c99a6a8a09c8f8275695c4f4236291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c37424b5359555d6062636567686a686d6f71737576787a7c7d7f81838586797d8a97a8b2a5998c7f85929ea89a8e8174818d9aa7a3978a7d7985929fa2988c7f72655b6a7784919daaaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4c8bcb1a7a09d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9fa3abb4bfcbc1b5a89b8e8275685b4f464e54565b5855534d4b4846443f3b3a36302921170d02000000000003101c28343f4a545c666d78818e939ea5afb7c1bfb6aca39b989c9ea6b0b8c1b9b1aca49f9a938f8a8683807d7b79777675747372727171706f6f6e6e6e6e6d6d6d6d6d6d6d6d6d6d6d6d6d6e6e6e6f7070717172736f6a5f53473a2e211508000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d60544f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f515e6b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1c4b8ada39c999999999999999c9fa6b0bbc7bbaea195887b6e6255515c66727f8b8c86817b76706c66615e56544f4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000000030c151d23282c2d2e3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e41434c51565f6a737f8c96a0acb8c4bbaea3998b7e7265555f6b7885929eabb8beb1a5988b7e7265585965727f8c989b9795918d83766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b25303942494b555d606363636363636363636466686a676d6f71727476787a787a8796a1aca79a8e81808d9aa79e928578818d9aa7a3978a7d7e8b98a29f92857a6d60536a7784919daaaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4cec3b9b1acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7acaeb4bdc6d1c1b5a89b8e8275685b4f424347494e4b4846423f3c3937332d2d2a251f170f05000000000000000c17232e38424a545c666d78818e939ea5afb7c1beb5aca7a4a8aab0b8c0b7afa7a09a938e87827e7a7673716e6d66696867666665646463636261616d797a7a7a7a7a7a7a7a7a7a796d6161616262636364656566625f584e43372b1f1206000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d60544c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c515e6b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1c0b4a79c918c8c8c8c8c8c8c8f949fabb7c4bbaea195887b6e625554606d79849198928e88827d78726d686360595455626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000000030b12181c1f222e3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e424c555d605d606d7984919ea8b2bdbfb5ab9c8f8376675c5f6b7885929eabb8beb1a5988b7e7265585865717e8b918e8a8784807d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e272c3945515d676d707070707070707070707070707070707070707070706f7884919eaba99c90837c8895a0a2978a7d818d9aa7a3978a7e83909da49a8d8074685d5e6a7784919daaaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4d1cbc3bcb8b7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b9babfc6cfcec1b5a89b8e8275685b4f42373b3c413e3b3a37312f2d2b2722201e1a140d05000000000000000006111c263038424a545c666d78818e939ea5afb7c1beb7b3b1b5b7bbc0b6aea59e959187817b7671787f7d7066605c545c5a5a595858575656555c697682878787878787878787878175685b55555656575758595955534e463c31261b0f03000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d6058585858585858585858585858585858585858585858585858585858585e6b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1bfb2a5998c7f7f7f7f7f7f7f828f9ca9b6c2bbaea195887b6e62555c66717e8b96a19f9a948f8a847f7a75706b66615e626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000000050e171f252a2e3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e4a545d676d676266717e8b96a1adb9c5b9ac9f9286796d605f6b7885929eabb8beb1a5988b7e7265585764717e8884817e7a7774706b6155483c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020714202d3a4753606d797d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d75828f9ca8ab9e92857883909da99b8e81818d9aa7a6998d808d959f9f93877b6e62565e6a7784919daaaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4cdcdcec8c5c3c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c5c7cbd1cdcdc1b5a89b8e8275685b4f42352e2f35322e2d2b2622201f1b1714120e0902000000000000000000000a151e263038424a545c666d78818e939ea5afb7c1c3bfbec2c3c1b7aea49d938e837c756e737c838c84796d60564d4f4e4d4c4c4b4a4a49505c6976838f93939393939393938e8275685b4f4849494a4a4b4c4d4847433c342a20150a00000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d656565656565656565656565656565656565656565656565656565656565656b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f938679727272727273808d99a6b3c0bbaea195887b6e6253606d7884919ea8aca69f9c96918c86817c77726e69646e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000000020d17202930363a3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e515c666d7a726d606d7984919eabb7c4baaea398897c70635f6b7885929eabb8beb1a5988b7e72655854616e7a7b7874716e68676361594f44382c2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b888989898989898989898989898989898989898989898377808d99a6ada297877a7f8c99a89f9286818e9ba7ab9e9285929ea79c8f8275695f535e6a7784919daaaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b5a89b8e8275685b4f42352823282522211e1a1513120f0b060502000000000000000000000000030c151e263038424a545c666d78818e939ea5afb7c1cbcbcec3b9afa59d928d81796f7079808790958c7f72685e524641403f3f3e3e3d43505c6976838f9ca0a0a0a0a0a09b8e8275685b4f423c3d3d3e3e3f403c3a37312a22180e0400000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a7272727272727272727272727272727272727272727272727272727272727272727784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c6666666673808d99a6b3c0bbaea195887b6e625b65717e8a96a0acb8b0aba8a09e98928e89847f7b76716e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000009141f29323b4246474855616e7b8894a1aebbc0b4a79a8d8174675a4a54606d78847f756d6873808d99a8b2bdbfb4aa998c8073665f6b7885929eabb8beb1a5988b7e726558525e686e6e726d64615e5657554f473e33281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895969696969696969696969696969696969696969084777e8a97a4b3a996897c7b8896a09f989285929eabaa9f948f92989f95897c6f63574d5e6a7784919daaaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070707121f2b3845525e6b7885919eabb3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a89b8e8275685b4f4235281c1b181514120e090605030000000000000000000000000000000000030c151e263038424a545c666d78818e939ea5afbac6d2c8bcb1a79d938d80746d747d848d92999f92867b6e61574d4236333231313643505c6976838f9ca9adadadada89b8e8275685b4f42353030313232332f2e2b26201810060000000000000000000000000a1723303d4a5663707d8996a3b0bcc9bfb2a5988c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f85929eabb8c5bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60595a6673808d99a6b3c0bbaea195887b6e62606c7883909da8b2bdbbb7b2acaaa39f9b96918c86827e7a7c8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000000020e1925303b444d52545355616e7b8894a1aebbc0b4a79a8d8174675a505c66717e8b8c817a6f6f7c8896a0acb9c2b5a89b8f827568556b7885929eabb8beb1a5988b7e726558585f6a6e7b7f726a5f534d4a48443e352c21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39d9084777c8996abb4a4978a7d7784919895908c8f939eaaa99c8f82858d929083766b6059565e6a7784919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013131414141f2b3845525e6b7885919ea6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69b8e8275685b4f4235281c14141414141413120f0b060000000000000000000000000000000000030c151e263038424a545c666d78818e939ea9b6c2cfc5b8aca0958e8174707a818891969fa3a2988d8174695f53463b302525293643505c6976838f9ca9b6babab5a89b8e8275685b4f423528242425262622211f1b150e06000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9c0b4a79c918c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9297a1adb9c6bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e6264707d8a95a0acbac3c7c4bdb9b4aeaca8a09e99928f8a85828f9ca8b5c2c5b8ac9f9285796c5f5246392c1f130000000005111e2a36424d565e61605c616e7b8894a1aebbc0b4a79a8d8174675a53606d788491938f847c707784919eaab7c4b7aa9e918477675c6b7885929eabb8beb1a5988b7e726558606a6f7c84877c6e625a50433a38332c231a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeb0b0b0b0b0b0b0b0b0b0b0b0b0b0b0aa9d9084777a8799a3aea5988c7f74818d8c87837f818f9ba8a3978a7e7a81878a7d7064636662606a7784919daaaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20202020202b3845525e6b7885919a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8275685b4f42352820202020202020201f1c17110a0200000000000000000000000000000000030c141e263038424a545c666c78818e9ba7b4c1cec4b7aa9d918379747d848e939aa0a8afaa9f92867b6e61564d42362a1d293643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c1718191a1515120f0a0400000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9c4b8ada39c98989898989898989898989898989898989898989898989898989898989898989898989ea1a9b3bec9bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e626b7683909da7b1bcccd3cec9c6bfbab9b2acaba39f9c98928f949eaab7c3c5b8ac9f9285796c5f5246392c1f13000000000714202d3a46525e696e6d66626e7b8894a1aebbc0b4a79a8d8174675a5b65717e8a969e9691867e74818e9ba7b4c1b9ac9f93867a6d606b7885929eabb8beb1a5988b7e7265606a6f7c85918f82766c61564c4135291d1a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeb9b5b3b2b4b6babcbab5b4b2b4b6b7aa9d9084777986929faca69a8d80737e837f7b7674818d9aa7a3978a7d70747b80776c606e736f6a6a7784919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d2d2d2d2d2d3845525e6b78848d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8175685b4f42352d2d2d2d2d2d2d2d2d2b28221c140b0200000000000000000000000000000000020c141e263038424a545b666d7a8793a0adbac6beb1a4988b7e74818a91969fa4acb2bbaea3998e8174695e5246392e23293643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f0b0c0d09080603000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9c9bfb5ada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5abadb3bbc5cfbfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e63707d89959fabb9c3ceded9d5d1cbc7c3bdb9b5afacaaa29f9c9ea6b0bbc7c5b8ac9f9285796c5f5246392c1f13000000000814212e3b4754616e7b79746f6e7b8894a1aebbc0b4a79a8d8174675a606c7883909da8a09892887f7f8b98a5b1bebbafa499887b6f626b7885929eabb8beb1a5988b7e72656b707c859297948a7e71685d52453c2f261b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeaea9a7a5a8aaafb7afa9a7a5a8aaafaa9d9084777884919eaba89b8e82757076726f6f74818d9aa7a3978a7d706f6f736d686873807c77717784919daaaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3a3a3a3a3a3a404c5966737f80808080808080808080808080808080808080808080808080808080808080808080808080807e7164574b3e3a3a3a3a3a3a3a3a3a3938332d261d140a0000000000000000000000000000000000020c141e263038424a54606d7a8693a0adb9c6beb1a4978b7e737f8c95a0a8afb6bebfb5ab9f92867b6e61544b403428293643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9ccc7bfb8b4b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b8b9bec5cdccbfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e6976838f99a4afbbc7d4d9d1c9c4c0bfc1c5c7c0bbb9b3aeaba8aab0b8c1ccc5b8ac9f9285796c5f5246392c1f1300000006121e2b37424d5768748185807c767b8894a1aebbc0b4a79a8d8174675964707d8a95a0acaaa29a938c83909daab7c3c0b5ab968a7d70636b7885929eabb8beb1a5988b7e726c717d869297a19e91857a6d60584e41382d22170b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aea49d9a999b9ea5afa59d9a999b9ea5aa9d9084777783909daaa99d9083767b7c7c7c7c7c818f9ba8a5988c7f7c7c7c7c7a6d6d7a8889837e7984919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d273039404546474747474747474757636d737373737373737373737373737373737373737373737373737373737373737373737373737373716c6155474747474747474747474746443f382f261c11060000000000000000000000000000000000020c141e262f3a4753606d7a8693a0adb9c6beb1a4978b7e717883909da5afbdc7c6bbaea3998d8073665c5145382c293643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcbfbfbfbfbfbfbfbebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebec4bfbfbfbfbfbfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e65717e87939facb9c6d2d1c7bfb8b3b2b4b9babfc6c5bebab8b5b7bbc1cad2c5b8ac9f9285796c5f5246392c1f130000000814212e3a47535f697884918d8883808c99a6b3bfc0b4a79a8d817467606b7683909da7b1b4aca49f959095a0acb8c5beb1a4988b7e71656b7885929eabb8beb1a5988b7e72727e879298a2a9a1978d80746a5f53493f33271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a99d928d8c8e939ea99d938e8c8e939eaa9d90847776828f9ca9ab9e9184788088888888888f939eaaa79b918c888888887d70707d8a95908b8586929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424b51535353535353535353535b6366676767676767676767676767676767676767676767676767676767676767676767676767676764615a53535353535353535353535353504a42382d22170b000000000000000000000000000000000000020c14202d3a4753606d7a8693a0adb9c6beb1a4978b7e71707d89939eabb5c0cbbfb5ab9e9285796d6053463a2e233643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b7b8bcc3cbcbcbcbcbcbcbcdc4beb9b8b2b2b2b2b2b2b2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e626c74808d9aa7b3c0cdc9bfb5ada7a5a7acaeb4b9bdc4c6c5c2c3c7ccd3d2c5b8ac9f9285796c5f5246392c1f130000000815222f3b4855626e7b88969a95908c929ca8b4c1c0b4a79a8d81746763707d89959fabb9beb6afa7a09da0a7b1bcc8bfb2a6998c7f73666b7885929eabb8beb1a5988b7e737f879299a2aab3a99f92877c6f655b5044392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a79a8d807f818e9ba79a8e817f818e9ba89d90847775818e9ba8ac9f928679808d959595959b9ea5afada39b989595958a7d7073808d9a9d98929298a2aeaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545c606060606060606060606060606060606060606060606060606060606060605c55555c60606060606060606060606060606060606060606060606060606060606060605b544a3f33281c0f030000000000000000000000000000000000000714202d3a4753606d7a8693a0adb9c6beb1a4978b7e716b75828f99a4afbbc7c6b9ada1978a7d7063544a3f34283643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5aaacb1b9c1cbd1d8d8dacfc4bbb3adaba5a5a5a5a5a5a5a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62636f7c8996a2afbcc9c4b8ada39b989b9fa3aaacb2b7bbc2c6cad0d7dfd2c5b8ac9f9285796c5f5246392c1f130000030f1c28333f4a5465727e8b98a79f9d999ca4aeb9c4c0b4a79a8d8174676a76828f9ca7b1bcc3c0bbb1acaaacb1b9c3cec1b4a79a8e8174676b7885929eabb8beb1a5988b7f808b9399a3abb4bbafa3999083786c60554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a295887c727d8a97a396897d727d8a97a49d90847774818d9aa7afa399877a808d9aa2a2a2a8aaafb7b5ada7a5a2a2978a7d707683909daaa29f9fa2aab4aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d675c5c676d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c665b5044382b1f12060000000000000000000000000000000000000714202d3a4753606d7a8693a0adb9c6beb1a4978b7e71646e7c87939facb9c2cabeb3a99b8e8175665c5044382b3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d899699999999999999999999999999999999999999999999999999999999999da0a7afbabfc6cfd6d5c9beb3a9a19e9999999999999999998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7b8794a1aebac7c0b3a79b918c8e92989ea1a8abb0b8babfc6ced1d2c5b8ac9f9285796c5f5246392c1f13000006121f2b3844505b6675828f9ba8aba9a6a8aeb6bfcac0b4a79a8d8174676f7c89949ea5acb1b9bec3bcb8b7b8bcc3cbcec1b5a89b8e8275686b7885929eabb8c4b8ab9e91858d929fa4abb4bdc0b5ab9f958b7e71675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a295887b717d8a97a396897d717d8a97a49d90847773808d9aa6b5ab94887b808d9aa7afafb5b6bbc1bfb8b3b2afa3978a7d707a86929facaeabacaeb4bcaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d60606d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786c605346392d2013060000000000000000000000000000000000000714202d3a4753606d7a8693a0adb9c6beb1a4978b7e71646a75818e9ba7b1bcc8c5b8ab9f9285796d6053463a2d3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d898c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c90959da5aeb4bcc4ccd2c6b9ada197918c8c8c8c8c8c8c8c8c8c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bfb2a5988c7f81868c91969c9fa6acaeb4bcbfc8d2c5b8ac9f9285796c5f5246392c1f1300000613202d394653606c7985929eabb8b6b3b4b9bfc8cdc0b4a79a8d80746f717e868e939da0a7adb3bbc0c7c3c5c8ced5cfc2b5a99c8f8276696b7885929eabb8c5b9ada19791979da4afb5bdbeb6afa79f9792857a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a295887b717d8a97a396897d717d8a97a49d908477737f8c99a6afa295897c808d9aa7b3bbbbbbbbbbbbbbbbbbb0a3978a7d707d8999a3afbab8b8babfb9aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a66738086868686868686868686868686868686868686868686868686868686868276696875818686868686868686868686868686868686868686868686868686868686867c6f6255493c2f2216090000000000000000000000000000000000000714202d3a4753606d7a8693a0adb9c6beb1a4978b7e7164626f7c88959fabb8c4c6baaea298887c6f6255493c2f3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000815212e3b4854616e7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f838e939fa3aab2bac2cbc4b8ab9e91857f7f7f7f7f7f7f7f7f7f7c6f6256493c2f231609000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c747a7f848a8f949a9fa2aaaeb6bfcac5b8ac9f9285796c5f5246392c1f1300000916222f3c4955626f7c8897a2adb9c3bfc1c4cad1d2c5b8ac9f9286817c77727b818990959ea2a9afb6bec3cbd1d8dccfc3b6a99c908376696b7885929eabb8c5beb3a9a19ea1a9aebbc0bbb3aca49f9590857d70675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a295887c727d8a97a396897d727d8a97a49d908477727f8c98a5b0a396897d808d9aa7aeaeaeaeaeaeaeaeaeaeaea3978a7d73808d99abb5bebab8babeb9aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d9393939393939393939393939393939393939393939393939393938f8376696875818e93939393939393939393939393939393939393939393939393939393887c6f6255493c2f2216090000000000000000000000000000000004080714202d3a4753606d7a8693a0adb9c6beb1a4978b7e71645f6a7683909da9b6c3cabeb3aa988c7f7265594c3f2e3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000714212d3a46535e696e7272727272727272727272727272727272727272727272727272727272727279818b9298a1a8b0b8c0c6b9ada1978e817972727272727272726f6a6054473b2e221508000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706d72787d82888d92989ca4aeb9c4c5b8ac9f9285796c5f5246392c1f130004101c2834404b5466727f8c99a9b3bdc3c6cad0d7dfd3c6baaea298928e89837f7a757c838b92979fa4acb1babfc6cfd4d0c3b7aa9d9084776a6b7885929eabb8c5c4bbb3adabadb3bbbfbbb0a9a19a938d837b706b61554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a6998d807f818e9ba79a8d807f818e9ba79d908477727e8b98a5b0a4978a7d808d9aa1a1a1a1a1a1a1a1a1a1a1a1a1978a7d7683909da9b6b3adabadb3bcaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09c8f8376696875818e9ba0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095887c6f6255493c2f2216090000000000000000000000000000050b10141617202d3a4753606d7a8693a0adb9c6beb1a4978b7e71645865727f8c98a7b1bcc8c1b4a89b8e817568544a3f343643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f030000000000000000000000000000000000000000000005121e2a36424d575e61666666666666666666666666666666666666666666666666666666666666676d747e8691969fa6afbbc0beb3a99e938e827a6e6866666666666260584e43382b1f1306000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c7063666d70767b81868c929ca8b4c1c5b8ac9f9285796c5f5246392c1f130006131f2c3845515c6676828f9cacacb2b8babec5cdd0d6cabfb4aaa29f9a95908b86817d797e858e939aa0a8aeb4bdc2cad1c4b7aa9e9184776b6b7885929eabb8c5cdc4beb9b8b9bebdb5aea69f97928880786e6961594f43392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a89c928d8b8e939da99d928d8b8e939daa9d908477717e8b98a4b1a4978b7e808d9595959595959595959595959595958a7d7a86929facb2a9a29fa2a9b3aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6adadadadadadadadadadadadadadadadadadadadadadada99c8f8376696875818e9ba8adadadadadadadadadadadadadadadadadadadadadadadada295887c6f6255493c2f221609000000000000000000000000000810171c202324272d3a4753606d7a8693a0adb9c6beb1a4978b7e716458616e7b8895a0acb8c5c3b7aa9d908477665c5044383643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f0f0c0b0906010000000000000000000000000000000000020e1a25313b454d53545959595959595959595959595959595959595959595959595959595959555d606c717c8490949da5afb6bebbafa59e9490837a6e695f58595956544e463d32271b0f03000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c70635c60646a6e747a808c99a6b3bfc5b8ac9f9285796c5f5246392c1f13000713202d3a4653606d7985929a9da0a8abadb3bbbec7d0d0c5bcb4aeaca7a09d98928e8478727a818891959fa3abb0b8c0c8c4b7ab9e9184786b6b7885929eabb8c5d1cfc9c6c4c0bbb1aba39f948f857d736d665e574f473e31271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aea49c99989b9da5aea49d9a989b9da5aa9d908477717e8a97a4b1a5988b7e8088888888888888888888888888888888887d7d8999a3aea8a0979297a2adaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b6a99c8f8376696875818e9ba8b4b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9afa295887c6f6255493c2f22160900000000000000000000000008111a22282d303134343a4753606d7a8693a0adb9c6beb1a4978b7e7164585f697784909daab7c3c5b9ac9f9286796d6053463a3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c1c1c181815120c06000000000000000000000000000000000009141f29333b4246484c4c50555759595959595959595959595959595959595959595959595959595a626a6f7a828e939fa4acb6c0b7afa69f9590847b6f6a60584e4947433d342b20160a00000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c70635653585f62686e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000814212e3b4754616e7a82878c91969a9fa2a9acb5bec9d7cec5bfbab8b1acaaa39c8f8275686d747d848c92999fa6aeb6c0c4b8ab9e9185786b6b7885929eabb8c5d1d2ccc4beb6afa7a099928c827a706b605c544d453e352c1f150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeaea8a6a5a7a9afb6aea9a7a5a7a9afaa9d908477717d8a97a4b0a5998c7f7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b79808d99abaca0969185929fabaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0c6cec5bebab8b8b8b8b8b8b8b8b8b9bbc0c7d0c2b6a99c8f8376696875818e9ba8b4c1d0c7c0bbb9b8b8b8b8b8b8b8b8b8b8babfc6cec6bbafa295887c6f6255493c2f221609000000000000000000000005101a232c33393c3d4141414753606d7a8693a0adb9c6beb1a4978b7e716458576774818d9aa7b4c0c7bbaea399887b6e6155483b3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235292929292524221d1811090000000000000000000000000000030a111617212931363a3b45505a61646666666666666666666666666666666666666666666666666666666666686d78818c939aa4afbbc1b8b0a7a09691857c6f6a60574d4238322b2219100b05000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356494e5356626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000714202d3946525e686e767b7f84898d92979ba3acb7c3cfd7d0cac6c3bcb8b4a6998c807366616b6f797f8690949da4aeb9c5b8ab9e9285786b6b7885929eabb8c5d1c9c0bab2aca49f9591877f786e686159514a423b332c231a0d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeb9b4b3b2b4b6bac0bab5b4b2b4b6b7aa9d908477707d8a97a3b0a6998c7f736e6f707070707070707070707070706e6e7683909da9aa9d918484919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0cfc5bcb3adabababababababababacafb5bdc7c2b6a99c8f8376696875818e9ba8b4c1c7beb6afacabababababababababacaeb4bcc6d0bbafa295887c6f6255493c2f22160900000000000000000000000b17222c363e44494a4e4e4e4e53606d7a8693a0adb9c6beb1a4978b7e7164585865727e8b98a5b1becbbfb5ab96897c6f6356493c3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f42363636363632312e29231b1309000000000000000000000000040d151c2226292a252a303c4955616c717373737373737373737373737373737373737373737373737373737373737373747f88939facb9c6c2b9b1a8a09791857c6f695f53463a2d2423201c1710080000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c70635649434855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130005111e2a36414c565e61696e73777c81858b919ba7b3bfccd6cec9c5c4c5beb3a9978a7d70645960666d737b828d929da8b5c5b8ab9f9285786c6b7885929eabb8c5c8bfb7aea8a19a938d837c726c665e564f4440393029211a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeb6b1afadb1b3b7beb7b2b0adb1b3b7aa9d908477707d8a96a3b0a6998d80736f7c7c7c7c7c7c7c7c7c7c7c7c7c7d796d7a86929facab9a8d8084919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0c6bcb3a9a29f9f9f9f9f9f9f9f9f9fa4abb5c0c2b6a99c8f8376696875818e9ba8b4c1c0b6aca49f9f9f9f9f9f9f9f9f9f9fa2aab4bfcabbafa295887c6f6255493c2f2216090000000000000000000004101c28333e485055575a5a5a5a5a606d7a8693a0adb9c6beb1a4978b7e71645856636f7c8996a9b3becabdb1a4978a7e7164574b424243505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4242424242423f3d3a342d251b110600000000000000000000000d161f272d323536342e313e4a5764717e8080808080808080808080808080808080808080808080808080808080808080808083909daab6c3cbc3bab2a9a19792867b6e6155483b2e31302d28221a120800000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300010d1925303b444c52575e61666a6f74797f8b98a5b1becbccc4bdb9b7b8b9ada197877b6e6154545c606a6e77808d9aa6b3c0b8ac9f9285796c6b7885929eabb8c5bfb5ada49d96918880796f6a605b544d443e342e271e170f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeaba5a3a1a4a7acb4aca6a4a1a4a7acaa9d908477707d8996a3b0a69a8d80737682898989898989898989898989887b707d8a99a3afa3998a7e84919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0bfb4aaa2979292929292929292929399a4afbbc2b6a99c8f8376696875818e9ba8b4c1bbafa49a939292929292929292929298a2aebac6bbafa295887c6f6255493c2f221609000000000000000000000814202d3944505a61646767676767676d7a8693a0adb9c6beb1a4978b7e71645854606d7a8797a2adbac6bfb2a5988c7f7265594f4f4f4f505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4f4f4f4f4f4f4b4a463f372d23180c0100000000000000000008111f2831383e4243403b3a424f5b6875818c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c9095a0acb8c4d1ccc4bbb3a9a298897c6f6256493c3a3d3c39332c241a0f06000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000008141e29323b41464d5354586062676e7b8894a1aebbcec4bab2acaaabadab9e928578695e524c52575f65717e8b97a4b1beb8ac9f9285796c6b7885929eabb8c5b8ada39c928d847d746d675f58504a423b3228231c150c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aba1999694989ba3aca29a9794989ba3aa9d908477707c8996a3afa79a8d80747683909696969696969696969695887b74818d9aabac9f92867a84919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0baaea3988985858585858585858587939facb9c2b6a99c8f8376696875818e9ba8b4c1b9ac9f938885858585858585858586929facb8c5bbafa295887c6f6255493c2f221609000000000000000000000a1623303c4955616c7074747474747474798693a0adb9c6beb1a4978b7e716458525d687885929fabb8c5bfb3a6998c8073665c5c5c5c5c5c5c6976838f9ca9b6c2c1b5a89b8e8275685c5c5c5c5c5c5c5c585651493f34291d1206000000000000000005101a23313a434a4e504d4846424f5b6875828e9999999999999999999999999999999999999999999999999999999999999999999da0a7b1bcc8d4d6cdc4bbb3aa95897c6f62564945474a49443e362c21180e030000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000020d17202930363b4246484e5455616e7b8894a1aebbc9bdb2a8a09e9fa2a99c8f827669574d565d605d64717e8b97a4b1beb8ac9f9285796c6b7885929eabb8c5b4a89c918c8179706b615e564e443f382f292018120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3b4855626e7b8895a1a5998f89878b909ba69a908a878b909baa9d908477707c8996a3afa79a8d81747683909ca3a3a3a3a3a3a3a3a195887b7784919eaaa99d90837784919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f928679787878787878787884919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e91857878787878787878787d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000a1724313d4a5764707e81818181818181818e9aa7b4c1cabeb1a4978b7e7164584c566a7784919daab7c4c0b3a79a8d807469696969696969696976838f9ca9b6c2c1b5a89b8e827569696969696969696965625b51463a2e22150900000000000000000b16212c35434c555a5d5a54524d4f5b6875828e9ba6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6aaacb1b9c3cdd9d5d6cdbcafa295897c6f62564c5254575550483e332a1f15090000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000050e171e252a31363a3d434855616e7b8894a1aebbc5b9aca0969192979d998d8073665a525d686d6864717e8b97a4b1beb8ac9f9285796c6b7885929eabb8bfb2a6998c7f746d686e6e685e52463d31271d170e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424a54626e7b8895a1a396897d7a7e8b98a4978a7e7a7e8b98a49d9084776f7c8996a2afa79a8e81747683909ca9afafafafafafaea195887b7b8896a0acaa998d807784919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c6c6c6c6c6c6c7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786c6c6c6c6c6c6c707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d8d8d8d8d8d8d8e939da9b5c2cabeb1a4978b7e716458505d697683909ca9b6c3c1b4a79b8e817575757575757575757576828f9ca9b6c2c1b5a89b8e8175757575757575757575726d62564a3d3124180b0000000000000004101c27333d47555e666967615e57535b6875828e9ba8b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b8bcc3cbc8c8c8c8c8bcafa295897c6f6256565d6064615a50453c31261a0e0100000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000000050d14191f252a2d323b4855616e7b8894a1aebbc4b7aa9e9184858b90958a7d71645758606d7a756f717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e726d727a7a6e61594f43392f24180c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b666e7b8895a1a295887b717d8a97a396897d717d8a97a49d9084776f7c8996a2afa79a8e81747683909ca9b6b8b8b8b8b8aea195887b7f8c98a8aea298897c7784919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c5f5f5f5f5f6a7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786b5f5f5f5f5f63707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d999a9a9a9a9a9a9da5afbac5cabeb1a4978b7e7164584f5c6975828f9ca8b5c2c4b8ab9e9185828282828282828282828285929eabb8c5c4b8ab9e9184828282828282828282827f7265584b3f3225180c000000000000000714202c38444f59667076736e69625f586875828e9ba8b5bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcbfbfbfbfbfbfbfbfbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbafa295897c6f625f61686d706c61574d42372b1e130800000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000002080d171d21222e3b4855616e7b8894a1aebbc0b4a79a8d80797e8389887b6e6155606a7783827c757e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e72787f8581756b61554b4035291f150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666c787b8895a1a295887b717d8a97a396897d717d8a97a49d9084776f7c8996a2afa79b8e81747683909ca9abababababababa195887b838f999fa29f9286797784919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c5f5352525e6a7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786b5e5252525763707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6a7a7a7a7a7a9afb7c0cbcabeb1a4978b7e7164584e5b6875818e9ba8b4c1c6b9ada197918f8f8f8f8f8f8f8f8f8f8f9297a1adb9c6c5b9ada196918f8f8f8f8f8f8f8f8f8d8174675a4e4134271b0e010000000000000916232f3c4855616b7683807b746f6a626875828e9ba8afafafafafafafafafafafafafafafafafafb7b9bdc4c4bdb9b7afafafafafafafafafafafafafafafafafa295897c6f62696e747a7d70695f53473a2f24190d00000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000009121b22282d30313b4855616e7b8894a1aebbc0b4a79a8d817471777c81776c6054626f7c888f8882808d9aa6b3c0b8ac9f9285796c6b7885929eabb8beb1a5988b7f7c838b92897d70675d51453c31261a0c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78817c8895a2a295887b717d8a97a396897d717d8a97a49d9084776f7c8995a2afa79b8e81747683909c9f9f9f9f9f9f9f9f9f95887b81878d92989c8f82767784919daaaca09386796d6053463a2d20170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c5f5348515e6a7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786b5e52484a5763707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6b3b4b4b4b4b5bac0c9d2cabeb1a4978b7e7164584e5b6774818e9aa7b4c1c9beb2a9a19e9c9c9c9c9c9c9c9c9c9c9c9ea1a9b3bec9c9bdb2a9a19e9c9c9c9c9c9c9c9c9a8d8174675a4e4134271b0e01000000000006121f2b37434e5863707d898d86817c756f6a75828e9ba2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3abacb2babab2acaaa2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a295897c6f6f757b8085887b6e61564c4135291c1106000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000006101b242d34393d3e454855616e7b8894a1aebbc0b4a79a8d8174676a6f746c655b5c6674808d9a948f8d929da8b5c5b8ac9f9285796c6b7885929eabb8c4b7aa9d91838790959e9184796d60574d42372b1e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c88828f9ca9a295887b717d8a97a396897d717d8a97a49d9084776f7c8995a2afa89b8e81757683909292929292929292929292887b757b80858b918c7f727784919daaaca09386796d6053463a302920170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c5f5555555e6a7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786b5e5555555763707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6b3c0c0c0c1c2c5cbd0d0cabeb1a4978b7e7164584d5a6774808d9aa7b3c0cfc4bbb2adaba8a8a8a8a8a8a8a8a8a8a8abadb3bbc5cfcfc4bbb2adaba8a8a8a8a8a8a8a79a8d8174675a4e4134271b0e0100000000010c15212e3b47535f6a76828f99928e88827c7575828e95959595959595959595959595959595959595969ea1a8b2b2a8a09e96959595959595959595959595959595959595897c757c81878d928d8074685d5245382e23170b000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000c17222d363e45494b525255616e7b8894a1aebbc0b4a79a8d817467606267605b53606d7985929e9e9c9a9da4aeb9c5b8ac9f9285796c6b7885929eabb8c5b8aca09591939aa0a0968c8073695f53473d30271c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f949faba5988c7f7d808d9aa6998c807d808d9aa69d9084776f7c8995a2afa89b8e81757682858585858585858585858585857b6e6e737a7f84887c6f7784919daaaca09386796d605346413b32291f14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c61616161616a7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786b616161616163707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6b3c0c3c3c3c3c3c3c3c3c3beb1a4978b7e7164584d5a6773808d9aa6b3c0cdcdc4beb9b8b5b5b5b5b5b5b5b5b5b5b5b8b9bec5cdd7d6cdc4bdb9b8b5b5b5b5b5b5b4a79a8d8174675a4e4134271b0e010000000007131d2a36424d57626f7c88949f9f9b948f88827c818b88888888888888888888888888888888888888899196a1acaca096918988888888888888888888888888888888888b8b7f82888e93999f92857a6d60544a3f34281c10030000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000005111d28343e485056585f5f5f616e7b8894a1aebbc0b4a79a8d8174675f5f5f56545764717d8a97a1aaa8a6a8aeb6c0c5b8ac9f9285796c6b7885929eabb8c5bcb1a7a09d9fa4aca89f92867b6e61594f42392e23180c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e586875828f9b9fa6b0a79b918c8a8d929da89c928c8a8d929daa9d9084776f7c8995a2afa89b8e81757076787878787878787878787878786e6962676d72787d786c7784919daaaca09386796d6054524d443b3025190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796e6e6e6e6e6e6e7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786e6e6e6e6e6e6e707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6b3b7b7b7b7b7b7b7b7b7b7b7b1a4978b7e7164584d5a6673808d99a6b3c0ccd6cfc9c6c4c2c2c2c2c2c2c2c2c2c2c2c5c6c9cfcfcfcfcfcfc9c5c4c2c2c2c2c2c0b4a79a8d8174675a4e4134271b0e01000000010d18242f3a46525e6975818e9ba6aca69e9c938f86837e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d84919eabaa9e91847d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7f858b8f949b9fa4a2988c7f72665c5044382b1f150a0000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000815212d3945505a61646c6c6c6c6e7b8894a1aebbc0b4a79a8d81746c6c6c6c63605f6976828f9ca9b3b5b3b5b9c0c8c5b8ac9f9285796c6b7885929eabb8c5c3b9b1acaaacafb6aea3998f82756b61544a4034281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a7885929eabb0b8ada39b98979a9da4aea49c99979a9da4aa9d9084776f7c8995a2afa89b8e817575757575757575757575757575757575756f6a62666c706c667784919daaaca09386796d62615e564d41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f92867b7b7b7b7b7b7b7b7b84919eaab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e92857b7b7b7b7b7b7b7b7b7e8b98a4b1bebbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6aaaaaaaaaaaaaaaaaaaaaaaaaaa4978b7e7164584d596673808c99a6b3bfccd7d0cac6c5c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c0b4a79a8d8174675a4e4134271b0e0100000004111d2935414b55616e7b86929facb9b0aaa69e9a939087817a726f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7b839096a1acaca0968f82786f6f6f6f6f6f6f6f6f6f6f6f6f747c828b91979c9ea6acafaa9e9184786d6053463c32271b0f0200000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000a1724303d4956616c7178787878787b8894a1aebbc0b4a79a8d8078787878786f6b616e7b87939facb9c2c0c1c5cad2c5b8ac9f9285796c6b7885929eabb8c5ccc3bcb8b7b9bbbfb4ab9e94897d70665c51443a3024190d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8897a1adb9bfb5ada7a5a4a6a8aeb6aea8a6a4a6a8aeaa9d9084776f7c8995a2afaa9e91848181818181818181818181818181818181817c6f6e6f6f6f6f6f7784919daaaca09386796f6f6e685e5246392d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0baaea399928888888888888888889196a0acb9c2b6a99c8f8376696875818e9ba8b4c1b9ada197928888888888888888888b919ba7b3bfbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d999d9d9d9d9d9d9d9d9d9d9d9d9d9d9d978b7e7164584d596673808c99a6b3bfcccec5bebab8b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b4a79a8d8174675a4e4134271b0e010000000613202c3945515d6773808d99a3aebbbbb7b0aca49f99928d857f79706c6262626262626262626b707c849095a0a8b2b2a89e948e81786d65626262626262676d727a81878f939ea1a9aab0b9b9aca1968a7d7164584e43372b1f140900000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825313e4b5864717e858585858585929fabb8c5c5b9ac9f928685858585857d6f6673808d9aa4afbbc8cdced1d6d2c5b8ac9f9285796c6b7885929eabb8c5c4bab2adabadb2babdb0a69d9184786d60564c4135291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a9b3bec9bfb8b3b2b0b3b5b9bfb9b4b3b0b3b5b7aa9d9084776f7c8995a2afaca096918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8a7d707c7c7c7c7c7c7c84919eabafa295897c7c7c7a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0bfb4aba39f9494949494949494949ea0a8b2bdc2b6a99c8f8376696875818e9ba8b4c1beb3a9a19e949494949494949494989ba3acb7c3bbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d90909090909090909090909090909090908b7e7164584d596673808c99a6b3bfd0c5bcb3aeaba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a79a8d8174675a4e4134271b0e01000003101c28343f4a54606d7a85929fabb5bfc7c1beb6afaba39f97928c847d756e69605b53555b656c737d869196a0a7b1babab0a69e938e81786c6055575e616b70797f858e93999ea5adb3b7bbc1bdb2a89c9083766a6054473b3025190e02000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b929292929298a2aebac6c7baaea3999292929292897c706d7985919eacb6c0c6c4c6c9cfd2c5b8ac9f9285796c6b7885929eabb8c5bdb2a8a19ea1a8b2bbb8aca0968c7f72685d52453b31251a0e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d576875818e9ba8b5c1cec5bebab8b3b3b3b3b8b9bebfbdc0bcb7aa9d9084776f7c8995a2afb2a8a09e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b978a7d77838888888888889196a1acb1a4998e8988887f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0c6bdb4aeaca1a1a1a1a1a1a1a1a1aaacb2bac4c2b6a99c8f8376696875818e9ba8b4c1c5bbb3adaba1a1a1a1a1a1a1a1a1a4a7acb5bec9bbafa295887c6f6255493c2f221609000000000000000000000c1925323f4c5865727f838484848484848484848484848484848484837e7064574d596673808c99a6b3bfcabeb3aaa29f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9a8d8174675a4e4134271b0e01000006121f2c3844505c66727f8c97a2adb9babfc6c7c0bbb5afa9a29f96918a827b726c655f57606c777f889298a1a8b1b9c1b8b0a79f9590847a6d615b60696e757d848c92989fa4abafb9bec4c7c7c2b7ab9f94887c6f62564d42362a1e1105000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b989f9f9f9fa2aab4becacbbfb4aba39f9f9f9f96897c70717e8a97a1adbebeb9b8b9bec4cdc5b8ac9f9285796c6b7885929eabb8c5b9ada1969196a1a9b3bdb2a89f92857a6d60574d42362a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f697885919eabb8c4c5bcb3aeaba6a6a6a6abadb3bbc3b9b1acaa9d9084776f7c8995a2afbab2acaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a3978a7d77839095959595959ea1a8b2b5aaa09995958c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0cfc6bfbab9aeaeaeaeaeaeaeaeaeb7b9bdc4ccc2b6a99c8f8376696875818e9ba8b4c1cdc5beb9b8aeaeaeaeaeaeaeaeaeb1b3b7bec7c8bbafa295887c6f6255493c2f221609000000000000000000000b1825313e4a56626d7277777777777777777777777777777777777777706c61554d596673808c99a6b3bfc6baaea2989290909090909090909090909090909090909090909090909090909090909090908d8174675a4e4134271b0e0100000713202d3a4653606d7984919d9fa7acaeb4babec5c7c0bbb3ada8a09e938f857f776e696265727f8b939aa2aab2bac0bbafa69e9590837a6e685f666c727b828a91969fa2aaafb5bdc1c9c6bfbab9b0aba69b8e8175695e52463a2d201407000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a4abababaeb4bcc5d0d1c6bdb4aeacababa396897c707683909da9b3bbb3adabadb3bbc4c5b8ac9f9285796c6b7885929eabb8c4b7ab9e91849197a1adb9baada2978d8073695e53463c31261b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8896a1abb5c0beb3aaa29f999999999ea1a9b3bcb1a7a09d999084776f7c8995a2afbcbdb9b7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b0a3978a7d7783909da2a2a2a2abacb2babcb2aaa4a2998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0c2c2c2c2c2bbbbbbbbbbbbbbbbbbc2c2c2c2c2c2b6a99c8f8376696875818e9ba8b4c1c2c2c2c2c2bbbbbbbbbbbbbbbbbbbec2c2c2c2c2bbafa295887c6f6255493c2f221609000000000000000000000916222e3a46515b62656a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a64615a504d596673808c99a6b3bfc5b8ab9f92868383838383838383838383838383838383838383838383838383838383838383837f7265594c3f3226190c0000000916222f3c4955626f7c858b90959b9fa3abadb3b9bec4c5bebab2aca59e98928b837b726d616d79828f95a0a8b2bbb6afa59d948f837a6e6860696e787f868f939ea0a8aeb4bbc0c7c5bebab4aeaca69f9c9792867a6e6154473b2e211408000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a4b1b8b8babec5ced7d8cfc6bfbab9b8afa396897c707c88959fabbbb3a9a19ea1a9b3bec5b8ac9f9285796c6b7885929eabb8bfb2a5998c7f85929ea8b2bdb3a99f92867b6e61584e43372b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a849199a3afbbbaaea298928c8c8c8c9297a1adb8aca095918c8c83776f7c8995a2afbcbfbbb9b8b8b8b8b8b8b8b8b8b8b8babfbdb0a3978a7d7783909daaafafafb7b9bdc4c5bcb5b2a6998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a99c8f8376696875818e9ba8b4b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6afa295887c6f6255493c2f2216090000000000000000000006121e29343f495156585d5d5d5d5d5d5d5d5d5d58626c71716c625b5d575550474d596673808c99a6b3bfc2b6a99c8f83767676767676767676767676767676767676767676767676767676767676767676726d62574a3e3125180b0000000815222e3b47545f6a6f797e83898e92999fa2a9adb3b9bec4c4bdb9afaaa29f9590867f766e696d79839096a0a9b2aca49f938e82796d68656c727b838b92989ea5acb2babec5c4beb9b3adaaa39f9a94908a85807a6e6154473b2e211408000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60575a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a4b1bec5c6cad0d7e0e1d8d1cbc7c5bcafa396897c74818e9aa7b1b5aba1979197a1adb9c5b8ac9f9285796c6b7885929eabb8beb1a5988b7e7f8b96a0acb9baaea3988e81756a5f53473c32261b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d686f7d87929fa8b1b8ab9f92858080808085929ea6b0aa9d918380807f726f7c8995a2afbdb5aeacababababababababababacaeb4bcb0a3978a7d7783909daab6bbbbc4c5c9cecec7bfb2a6998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99c8f8376696875818e9ba8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a295887c6f6255493c2f22160900000000000000000000010d18232d373f464a4c51515151515151514b555f6a717e7e726d635b504941404d596673808c99a6b3bfc2b6a99c8f8376696969696969696969696969696969696969696969696969696969696969696965625b51463a2e22160900000006131f2b37434e585f676d71767c81868d92979ea1a9adb3babec5c1bcb3aea79f98928b827b706c6d7a849196a1a9a29a938c81786d67686e777f8690949fa2aaafb9bdc4c5bebab3ada9a29f98928e88837e79746e685e5246392d201407000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c6464646673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a4b1b9bbbdc0c6ced6dbd2cbc5c2c1b9afa396897c7a86929facb8afa4999185919eabb8c4b8ac9f9285796c6b7885929eabb8beb1a5988b7e7884919ea7b1bcb4aa9f93877c6f62584e43372b1c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56606b73808d95a0acb8aea2988a7d7373737e8b949fabac9f92867b73726d6f7c8995a2afb5aba39f9f9f9f9f9f9f9f9f9f9f9fa3aab4b0a3978a7d7783909daab6b7b7b9bbbfc6ccc4bdb2a6998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d999c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c8f8376696875818e9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c95887c6f6255493c2f221609000000000000000000000007111b252d343a3e3f4444444444444445515d676f7c86877f736d605b534a424d596673808c99a6b3bfc2b6a99c8f8376695d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d595751493f35291e1206000000030f1b26323c464e555d60656a6f747a80858c91979ea1a9adb3bbc0c5bebab1aaa29f948f857d736d6e7b849197a09892887f746d666b707a828b92989fa6aeb4bcc1c6bfbab3aea9a19e97928d86817b76716d67615e564d41362a1e1105000f1c2835424f5b6875828e9ba8b5c1b9ac9f938679717171717173808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a4adadaeb0b5bcc4ced2c9c0bab5b4adada396897d7f8c98a3aeb9ac9f9387808c99a6b3bfb8ac9f9285796c6b7885929eabb8beb1a5988b7e727e8a95a0acb8bbafa49a8f82756a5f5447382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444f59606d7984919da5afb3aa9d9083786d6c78839099a3aea3998f82766c626f7c8995a2afaea39992929292929292929292929298a3aeb0a3978a7d7783909daaaaaaaaacaeb5bdc4bab2aca6998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8276696875818e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f887c6f6255493c2f22160900000000000000000000000009131b23292e313237373737333d47515b606d798491938b80746c655c544b4d596673808c99a6b3bfc2b6a99c8f8376695c5050505050505050505050505050505050505050505050505050505050504c4a463f372d23180d01000000000a15202a343c434b5153586062686e737a7f858b91979fa2a9afb5bdc2c2bcb4aea69f97928a80786e6f7c85929691867e726d666c737d858f949fa2aab0babfc5c1bcb4aeaaa29f97918c85807a746e6a64605c55524d443b3025190e02000f1c2835424f5b6875828e9ba8b5c1bdb1a4978a7e7e7e7e7e7e7e828f9ca8b5c2bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a0a0a0a2a4aab2bcc6cbc0b7afa9a7a0a0a096897d85919eaab4b1a79c8f827e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e727883909da6b0bbb4ac9f93877c6f62544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323d45515c676f7c89939eaab4aca0958b7e716e6f7c87929facab9e948a7d70666f7c8995a2afac9f92878585858585858585858586929facb0a3978a7d7783909d9e9e9e9e9fa3abb5bdb2a8a09e998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e828383838383838383838383838383838383838383838383838383838280736766727f8283838383838383838383838383838383838383838383838383838383827b6e6255483b2f221508000000000000000000000000010911181e2225252a2a28313b454f59636d75818e969f928c80776d665d554c596673808c99a6b3bfc2b6a99c8f8376695c5958565553514b4e4c4a48474540434343434343434343434343434343433f3e3a352d251b11070000000000040e19222a31394045474e54565e61676d72797f858c92979fa3abb0babec5bfbab0a9a29e928d827a6f6f7d868f847c706c686d78808891979fa6aeb4bcc2c4bdb9b0aaa39f98928c857f7a736e68625f5853514b46413b32291f140800000f1c2835424f5b6875828e9ba8b5c1bfb2a69a908a8a8a8a8a8a8a8f949eaab7c3bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b939393939598a0aab5c0c5baafa59d9a939393938e818e97a1abaeaca095897d7e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e72707d8a949fabaeaaa39f988f8275665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202834404b55606b75818e98a2aeb1a79e91847b7a7a7a818e9ba7b0a69e9184786c6f7c8995a2afa89b8e81787878787878787878787f8c99a5b0a3978a7d77839091919191919299a3aeb9aca09691918c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313d4a56626c717676767676767676767676767676767676767676767676767676767676736e63636d727676767676767676767676767676767676767676767676767676767676766e695f53473a2e2114080000000000000000000000000000070d121618191b262f39434d57606b727f8c939ea49c928d81786d675d56596673808c99a6b3bfc2b6a99c8f8376696766646362605d555b59575553514b4d4b4846443f3e3b3a3631363636363632312e29231b130a000000000000000710191f282f35393d43474c52555d60676d72797f858d92999fa6adb3bbc1c2bbb3ada49d9490857c71707d827a6f6a696e7a828c939aa1a9b0babfc6c0bbb2ada69e98928d857f79726d67615e56534e4745403936302920170d0200000f1c2835424f5b6875828e9ba8b5c1c3b7aca29a979797979797979c9ea6b0bbc7bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8686868686888e98a4b0bdc2b5a99d928e8686868686868e92999fa2a99d9083777e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e726b7683909ca6a39f98928d8680786c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18232e39434f59616e7b86929fa9b3ada19691878787878e939da9b6aca096867a6d6f7c8995a2afa89b8e81756c6c6c6c6c6c6c6c727f8c99a5b0a3978a7d758184848484848487929facb7aa9e918484847f7265584b3f3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a45505a6265696969696969696969696969696969696969696969696969696969696967635c5b6366696969696969696969696969696969696969696969696969696969696969625f574d42372b1e12060000000000000000000000000000000106091017222d38414b555f69707d87929fa5ada49d938e82796d685e566673808c99a6b3bfc2b6a99c8f827675747271706e6d676967666462605d555a575553504a4b4846423f3b3a37312c2725221e18110a010000000000000000070d161d24292c32373b41464b51555c60676d727a80878f949fa2a9b0babfc5beb9aea69f9791867e7270756d686b6f7b848f949fa4acb3bbc2c4bdb5afa8a19e948f86807a736d67605d55524c47433c38342f2a251f170e050000000f1c2835424f5b6875828e9ba8b5c1c8beb4aca6a4a4a4a4a4a4a4a8aab0b8c1ccbbaea195887b6e62616e7a8794a1adbac1bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000713202d3a4653606d787a7a7a7a7a7c8895a2aebbc1b4a79a8e81797a7a7a7a7b81868d92989f978b7e717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e7265707d89949f99928d86807b746c665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303d46525e6973808c97a1adb2a9a19e949494949b9da5afbab2a893867a6d6f7c8995a2afa89b8e81756969696969696969727f8c99a5b0a3978a7d707577777777777784919daaaca09386787777726d62564a3d3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f485056585c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a58525157595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c55534d453c31261a0e0200000000000000000000000000000000060f192327333f49535d676e7b859299a3afb6aea59e948f827a6e685e6673808c99a6b3bfc5b8ac9f92868382807f7e7c7b7a78767472706f6d6769666462605b545754534d4b4847433c38322b23190f070000000000000000000000040c12181d20272b30363a40454b51555d60686d747c828b92979ea6aeb4bcc3c0b8b0a9a19892887f736e616c707d8591969ea6afb6bec4c1bab2aba49f96918a827b736d68605d55514b46413b37312c29231d19140d05000000000f1c2835424f5b6875828e9ba8b5c1cec6beb7b2b1b1b1b1b1b1b1b5b7bbc1cac8bbaea195887b6e62616e7a8794a1adb5b5b5afa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000006121f2c3844505c666d6d6d6d6d6e7b8894a1aebbc0b4a79a8d81746d6d6d6d6e747b80868d92928579717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e72656b76828f928e86817b746e69605b544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a36424d56606d7a85929ea9b3b2adaba1a1a1a1a7a9afb7b9ada093867a6d6f7c8995a2afa89b8e81767676767676767676767f8c99a5b0a3978a7d70686b6b6b6b6b7784919daaaca09386796d6b65625b51463a2e2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222d363f454a4b50505050505050505050505050505050505050505050505050505050504d4b47464b4c5050505050505050505050505050505050505050505050505050505050504847423c332a1f150900000000000000000000000000000000050e18212b353d44505b656d79839097a2abb5c0b7afa69e9490837b6e616673808c99a6b3bfc6baaea29892908e8d8c8b8988868583817f7d7b7a787573716e6c666764615e575855534e48443d352b21160b00000000000000000000000001070d10151b1e252a2f353940454b51565e616a6f767e858f939fa3aab1bac1c2bbb3aaa29a938c80736e707e869297a0a8b0bbc0c6bfbaafa8a199938d847e756e69615e56514b45413a36302b261f1c18120e080200000000000f1c2835424f5b6875828e9ba8b5c1c8c8c8c3bfbdbdbdbdbdbdbdc2c3c7ccc8c8bbaea195887b6e62616e7a8794a1a8a8a8a8a8a396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000003101c28343f4a545c60606060616e7b8894a1aebbc0b4a79a8d81746760606062696e747a80858c7f73717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e726563707d8986817b746e69615e56504a42382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1925303b45515d67727f8c97a1adb9b9b8aeadadadb4b6bac1b9ada093867a6d6f7c8995a2afab9e91858282828282828282828284919daab0a3978a7d70645e5e5e5e6a7784919daaaca09386796d60585651493f34291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3e4343434343434343434343434343434343434343434343434343434343403f3b3a3e3f4343434343434343434343434343434343434343434343434343434343433b3a37312a21180e03000000000000000000000000000000040d17202a333d47505a606c77818f95a0a9b3bdc7c1b8afa59f92867c6f626673808c99a6b3bfcabfb4aaa29f9c9b9a999796959791908e8c8a88868482807e7b797674716e696865625f58544f473d32271b10030000000000000000000000000001040a0f14191d24292f343940454c52585f626c717a828b9298a0a8afbbc0c4bcb4aca49f928d80757e879298a1a9b2bac1c5bdb4aea59e9691878079716c615f57524c454039352f2a251e1a15100c0701000000000000000f1c2835424f5b6875828e9ba8b5bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaea195887b6e62616e7a87949b9b9b9b9b9b9b96897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000c17232e38424a5053535355616e7b8894a1aebbc0b4a79a8d8174675a5353575e61686d737a7f7a6d717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e7265606b727f7b746e69615e57524d443f382f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2935414b55606d7985929eaab4bec4bababfbab8b8b8b8b8ada093867a6d6f7c8995a2afada197918f8f8f8f8f8f8f8f8f8f9196a0acb0a3978a7d70645751515e6a7784919daaaca09386796d605346463f372d23180c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292e3132363636363636363636363636363636363636363636363636363636363634322f2f32333636363636363636363636363636363636363636363636363636363636362f2e2b261f180f06000000000000000000000000000000010c161f29323c454f59616c73808c939ea7b1bbc5c4bab1a79d938b7f726a606673808c99a6b3bfd0c6bcb4aeaca9a8a7a5a4a3a9a19e9c9a99979a93918f8d8a888583807e7b7875726e6a6360594f44382c2013070000000000000000000000000000000002080e13181d23292f353a41464e535a62686e757f8691959ea5afb6bec6beb6afa49c928d82879299a3aab3bbc3c3bbb3aba39f938f847d746d67615a534d46413a352f29241d19140f0a04000000000000000000000f1c2835424f5b6875828e9ba8afafafafafafafafafafafafafafafafafafafafafaea195887b6e62616e7a878e8e8e8e8e8e8e8e8e897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000006111c2630383f4446474855616e7b8894a1aebbc0b4a79a8d8174675a4e474d52565e61686d736d68717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e726559636d726e69615e57524d46423b332d261d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18242f3a45515d67737f8c98a2aebac6c6bcb4aeacacacacacaca093867a6d6f7c8995a2afb2a9a19e9c9c9c9c9c9c9c9c9c9c9da0a8b2b0a3978a7d7064574a515e6a7784919daaaca09386796d6053463a342d251b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911171d212425292929292929292929292929292929292929292929292929292929292927262322252629292929292929292929292929292929292929292929292929292929292922211e1a150e060000000000000000000000000000000008131e28313b444d57606b717e8a929ca5afb9c3c5bcb2a89f958e81746d62586673808c99a6b3bfcccec6bfbab8b6b5b3b2b1afb3adaba9a7a5aca49f9e9c99979892908d8a8784827e7b78706b6054483b2f22160900000000000000000000000000000000000001070d12181d242930353c434750565e616d727c838e939fa4acb4bcc5c0bbaea49d948f9299a3abb4bcc5c1b9b1a9a199928b817a706b605d555046423b363029241d18130d08020000000000000000000000000f1c2835424f5b6875828e9ba2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a195887b6e62606d7a81828282828282828282817c6f6255483c4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000000000a151e262e34383a3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e4142464c52565d60666164717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e7265585b6366615f57534d46423b363028221c140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d2935404b55606d7a85929fabb8c2bfb4aaa29f9f9f9f9f9f9f93867a6d6f7c8995a2afbbb2adaba9a9a9a9a9a9a9a9a9a9aaacb2bab0a3978a7d7064574a515e6a7784919daaaca09386796d6053463a2d201b13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111517181d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1a19171618191d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1514120e090300000000000000000000000000000000010d19242f3a434d565f696f7d86929fa4aeb7c1c7bdb3a9a1969083786d605b596673808c99a6b3bfc5c6c7cac6c5c3c1c0bfbebcbeb9b8b6b4b2b6afacaba8a6aaa29f9c9a9796918e8b88847d706356493d3023160a000000000000000000000000000000000000000001070c12181e252931373e444c525b626a6f79818c939aa2aab3bbc4c0b6aea69e9c9fa3abb5bdc6c1b8b0a7a09792877e756d686059514b433e36312a251e18120d070100000000000000000000000000000f1c2835424f5b6875828e9595959595959595959595959595959595959595959595959595887b6e625d686d75757575757575757575756f6a5f53473b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000000030c151c23282c2e3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e41363a41464c5254595864717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e72655851575955534d46423b36302a251f17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18242f3945525d6874818d9aa6b0bbbaaea2989292929292929292867a6d6f7c8995a2afbcbeb9b8b5b5b5b5b5b5b5b5b5b5b7b8bdbdb0a3978a7d7064574a515e6a7784919daaaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090b0b10101010101010101010101010101010101010101010101010101010100d0d0a0a0c0c1010101010101010101010101010101010101010101010101010101010100808060200000000000000000000000000000000000004111d2935414c555e686e7b859298a3aeb6bfcbc0b5aba29791847a6e665c51596673808c99a6b3b7b8b9bbc0bcbebfc1c2c3c5c6c9c6c4c3c1bfc0bbb9b7b5b3b4aeaca9a7a8a19e9b9893867a6e6154473b2e2114080000000000000000000000000000000000000000000001070c131920262b323b414651585f676d757f889298a1a9b3bbc4c0b8b0aaa8acaeb5bdc6c0b7afa69e9590857d726d615d564f45403a312a261f19130d0701000000000000000000000000000000000f1c2835424f5b687582888888888888888888888888888888888888888888888888888888887b6e62565d606868686868686868686868625f584e433b4855626e7b8895a1aebbc4b8ac9f9285796c5f5246392c1f13000000000000030a11171c222e3b4855616e7b8894a1aebbbdb4a79a8d8174675a4e413430363a4145474c5864717e8b97a4b1bbb8ac9f9285796c6b7885929eabb8beb1a5988b7e7265584b4b4c4846423b36312a251f19140b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414c56626e7b88949fabb7b8ac9f92868585858585858586796d6f7c8995a2afb3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b0a3978a7d7064574a515e6a7784919daaaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676e7a849197a2aab4bfc8c0bbafa39992857c6f685e544b596673808c99a6a9aaabacafb5b0b1b2b4b5b7b8babfbebfc1c4c5c7c8c6c4c2c0bfbab8b6b3b2adaba89d908377685e5246392d20140700000000000000000000000000000000000000000000000002080d151a202930363f464e555d606d737e869297a1a9b2bac4c1bbb7b5b9bbbfc6c0b7afa59e948f837b6f6b625b524c443d352f281f1a140d08020000000000000000000000000000000000000815212e3b4854616e7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796d605352545b5b5b5b5b5b5b5b5b5b5b55534e463c3b4855626e7b8895a1aeb8b8b8ac9f9286796c5f5246392c1f130000000000000000060c15222e3b4855616e7b8894a1aeb0b0b0a79a8d8174675a4e4134252a3035393e4b5864717e8b97a4aeaeaeac9f9285796c6b7885929eabb1b1b1a5988b7e7265584b3f3f3b3a36312a251f1a140e0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a47535f6a76838f9caab4b1a4988b7e79797979797979796d676f7c8995a2a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a3978a7d7064574a515e6a7784919daaaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d13131313131313131313130604010000000000000000000000000000000003080b0d0e111111111111111111100f0d0a05000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a849096a1a9b3bcc6c0b7aea49f92877d706a5f564c4d596673808c999c9c9d9e9fa4aba3a4a6a7a8aaacaeb4b1b3b5b7b9bbbfc0c2c5c6cac6c5c3c0bdb9b2a9998c807366564d41362a1e11050000000000000000000000000000000000000000000000000000030a0e171e252a343c434b515b636c717c859197a1a8b2bac4c7c3c2c5c7cbc0b6aea59d938e82796e6960595146413a3229241d160d090300000000000000000000000000000000000000000714212d3a46535e696e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d675c5145474f4f4f4f4f4f4f4f4f4f4f4847433c343b4855626e7b8895a1ababababab9f9285796c5f5246392c1f130000000000000000000815222e3b4855616e7b8894a1a3a3a3a3a39a8d8174675a4e4134271e2429313e4b5864717e8b97a1a1a1a1a19f9285796c6b7885929ea5a5a5a5a5988b7e7265584b3f332e2d2a261f1a140e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2b37434e5864717e8b98a2aeb5a99c8f8276686c6c6c6c6c6c60626f7c899599999999999999999999999999999999999999999999978a7d7064574a515e6a7784919daaaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e1317191a202020202020202020202013110d070100000000000000000000000001080f14181a1b1e1e1e1e1e1e1e1e1e1d1c1916100a0300000000000000000000000000000000000000000000000000000000000000000613202d394653606c78808c919fa3abb4bcb8afa59c928b7e716b60584e444d596673808c8e8f9091929399959697999a9c9d9fa2aaa4a6a8aaacaeb5b3b5b8b9bec0c3c5c7c6b9ada197887c6f6255493c3025190e0200000000000000000000000000000000000000000000000000000000050d1419222a31394045515a616a6f7c859196a0a8b2bbc4cecbcbc9c0b6aea49d938e81786d675e574f473f3530282018130c040000000000000000000000000000000000000000000005121e2a36424d575e6162626262626262626262626262626262626262626262626262626262605c554b403a42424242424242424242423c3a37312f3b4855626e7b88959e9e9e9e9e9e9e9285796c5f5246392c1f130000000000000000000815222e3b4855616e7b8894979797979797978d8174675a4e4134271b1925313e4b5864717e8b949494949494949285796c6b788592989898989898988b7e7265584b3f3225211e1a140e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1a26313c4753606d7a85929facaca99f92867a6d615f5f5f5f5f56626f7c898c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8a7d7064574a515e6a7784919da8a8a09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f2326272d2d2d2d2d2d2d2d2d2d2d201d18130c0400000000000000000000020b131a202427282a2a2a2a2a2a2a2a2a292926211c150d040000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c747f8b9299a2aab3b0a69d938c80736c62594f463d4a5663707d808182838485868788898b8c8e8f9092989697999b9d9fa3aba6a9abadb3b3b6b9babfb8ab9e9185786c605346392d201308000000000000000000000000000000000000000000000000000000000000020810181f282f3540485058606a6f7b849196a0a9b3bcbebebebeb7aea49d928d80786d665d554d453d3429241e160e07010000000000000000000000000000000000000000000000020e1a25313b454d53545555555555555555555555555555555555555555555555555555555553514b43392e35353535353535353535352f2e2b262f3b4855626e7b8891919191919191919185796c5f5246392c1f130000000000000000000815222e3b4855616e7b888a8a8a8a8a8a8a8a8a8074675a4e4134271b1825313e4b5864717e88888888888888888886796c6b78858b8b8b8b8b8b8b8b8b7e7265584b3f322518120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c3945515d6775818e9ba29f9d9b998b7e7165585252525254616e7b80808080808080808080808080808080808080808080808080807c6e625548515e6a7784919c9c9c9c9386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141c242a2f323339393939393939393939392c29241d160d040000000000000000010b141d252b3033343737373737373737373635322d261f160d03000000000000000001000000000000000000000000000000000000000000030f1b27333f49535b606d727e879298a1a9a69e948e81746e635a50473d3c4854606b70747575767778797a7b7d7e7f8182848587898b8c8e91929997999c9ea1a9a6a9acaeb4b4aa9a8e8174655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000060d161d2429363e464e585f696e7b849197a1a9b3b1b1b1b1afa59d928d80746c665c544b433b332b2219130c04000000000000000000000000000000000000000000000000000009141f29333b42464849494949494949494949494949494949494949494949494949494949464540393027282828282828282828282822211f222e3b4855616e7b8485858585858585858584776a5e5144372b1e110000000000000000000714202d3a4753606d797d7d7d7d7d7d7d7d7d7d7c6f6255483c2f221514212d3a4754606d797b7b7b7b7b7b7b7b7b7b6e6164717e7e7e7e7e7e7e7e7e7e7c6e6255483b2f221508020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b5564707d8a989892908e8c8a8276695c50464646525e696e73737373737373737373737373737373737373737373737373736e6a5f5347515e6a77848f8f8f8f8f8f86796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262e363b3f40464646464646464646464639352f281f160c060400000000000008131d262f363c404144444444444444444443423e3831281f150a00000000000406070e0a0a07040000000000000000000000000000000000000b17222d384149505b636c717d869297a09f948f82786d605c52483f3538444f596063676869696a666d6e6f707173747577797a7c7e80828486888a8d8f9297979a9d9fa3aba9a3988a7d706453493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000040c1218242c343d464e575f696e7b859197a2aaa4a4a4a4a69e938d80746e605b544a423931292119100802000000000000000000000000000000000000000000000000000000030d17212931363a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a38342e271e151c1c1c1c1c1c1c1c1c1c151514212d3a46535f696e787878787878787878787772675b4f43362a1d100000000000000000000613202c3945515d676d707070707070707070706f6a5f53473a2e211513202c3945515d676d6e6e6e6e6e6e6e6e6e6e695f626c717272727272727272726e6a5f53473a2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a4753606d79868a888583817f7d7b6e6154483b36424d575e616666666666666666666666666666666666666666666666666666625f584e434e5a67748082828282828282786c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e19242e3840474b4d535353535353535353535345403a31281d1312100c07000000030f1a252f3841484c4e515151515151515151504e49423a31261c10050000070c1012131b171614100b050000000000000000000000000000000006111b262f383f44515a626b707c859196959082796d665c504940362d333d474f54565a5b5c5d545c60616263646667696a686e6f71737577797b7d808285878a8d909299999c9f92867a6d6053473a2d22170b00000000000000000000000000000000000000000000000000000000000000000000000107121a222b343c454d575f696f7c859298989898989898948e81786c605c504a423830281f170f07000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2c28231d150c0f0f0f0f0f0f0f0f0f0f0908121e2a36424d575f616b6b6b6b6b6b6b6b6b6b6a6760564b3f33271b0e00000000000000000004101d2935404b555d6064646464646464646464625f584e43372b1f12111d2935414b555d60616161616161616161615f575a6264656565656565656565625f584e43372b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c3945515d67717e7d7b79767472706e695e52463a303b454d5254595959595959595959595959595959595959595959595959595955534e463c4c58646e74757575757575756c665b5044382b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36404a52585a606060606060606060605f514b433a2f24201f1c18120b03000814202b36414a53585b5d5d5d5d5d5d5d5d5d5c5a544c42382d21160a030b12181c1f20272423201c171008000000000000000000000000000000000a141d262d333f485059616a6f7b849090837a6d675d544a3f372e242b353d44484a4e4e4f504a505354555658595b5c565e6163646668666d6e717376787b7d808386898c90928f8276675d5145392c1b110600000000000000000000000000000000000000000000000000000000000000000000000000081019222a333c454d575f6a6f7d868b8b8b8b8b8b8b8b82796d665b50443f382f261e160d050000000000000000000000000000000000000000000000000000000000000000050d141a1e212122222222222222222222222222222222222222222222222222222222201f1c18120b030002020202020202020200020e1a26313b454d53555e5e5e5e5e5e5e5e5e5e5e5b564e44392e23170b000000000000000000010d18242f39434b51535757575757575757575755534e463c31261b0f0d18242f3a434b515455555555555555555555534d50565858585858585858585855534e463c31261a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55616c71706e6c65686563615e574d42362a333b4246484d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847433c3c48535c646769696969696969605b544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a17232f3b47525c63666c6c6c6c6c6c6c6c6c6c6c5d554b4035332d2c28231c150c060b1824303c48535c64676a6a6a6a6a6a6a6a6a69665e54493e3226190d0c151c23282c2d34302f2c28211a1108000000000000000000000000000000020b141b2227363e474f5860696e7a83837a6d685d554b42382e251c232b33383c3d414242433f444647484a4b4c4e4f4c5254565859545c6062646669696e717376797c7f8386897f7265554b4035291d0a000000000000000000000000000000000000000000000000000000000000000000000000000000071018212a333b454e58606b6f7c7e7e7e7e7e7e7e7e796d675c544a3f332d261d150c040000000000000000000000000000000000000000000000000000000000000000000003090e121415161616161616161616161616161616161616161616161616161616161313100c07000000000000000000000000000009141f2a333b42464852525252525252525252514f4b443b32281d12060000000000000000000007121d2831394045474a4a4a4a4a4a4a4a4a4a4847433c342a20150a07131d28313a41454748484848484848484848464245494b4b4b4b4b4b4b4b4b4b4847433c342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3943505a61646361605b53595754524d453b30252930363a3b40404040404040404040404040404040404040404040404040403b3a373136414a53585a5c5c5c5c5c5c5c53504a42382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4b58636e737979797979797979797976675d51453d403a38342e271e180f071a2733404c58646f747777777777777777777670665a4e4235291c0e171e272e34383a413d3c38332c231a0d03000000000000000000000000000000020a1117242d353d464e575f686e7a7a6d685e564c433930261c131921272c2f303435362e34383a3b3c3d3e404142414647494b4d4a515355575a575e616467676d6f73767a7d7a6e6154473b2f24180d01000000000000000000000000000000000000000000000000000000000000000000000000000000060f182129333c464f59606a6f71717171717171716d675d554b42382d221c140b0300000000000000000000000000000000000000000000000000000000000000000000000000020507080909090909090909090909090909090909090909090909090909090907060400000000000000000000000000000000030e18212a31363a3b4545454545454545454544433f39322920160b0000000000000000000000010c161f282f35393a3d3d3d3d3d3d3d3d3d3d3c3a37312a22180e04010c161f282f35393a3b3b3b3b3b3b3b3b3b3b3a36393d3e3f3f3f3f3f3f3f3f3f3b3a37312a22180e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313e4850555757555350494c4a4846423b33291f1f252a2d2e33333333333333333333333333333333333333333333333333332f2e2b262f3841484c4e4f4f4f4f4f4f4f46443f382f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a66738086868686868686868686796d6053474a4d4644403930292118121b2834414e5b6774818484848484848484848276695c504336291d18202930394044464e4a48443e352c1f150b010000000000000000000000000000000006121b232c343d454d565e676d6d685e564c433a31271e140a0f161c20222327282923282b2d2e2f303133343036393b3c3e40404446484a4d4d535457555c606366676d706e685e5246392d1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a343d474f5860626565656565656565605d554b43392f261c110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f181f262a2d2e383838383838383838383736332e2820170e04000000000000000000000000040d161d24292c2d313131313131313131312f2e2b26201810060000040d161d24292c2d2e2e2e2e2e2e2e2e2e2e2d2a2d30313232323232323232322f2e2b2620180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2c363e45494a4a4846443f3f3d3b3a3630292117141a1e2021262626262626262626262626262626262626262626262626262622211f1a262f363c4041424242424242423938332d261d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d9393939393939393867a6d605354565a53514a423b3329241d16293643505c6976838f909090909090909085786b5e5245382b1a222a323a424a51535a57554f473e31271d1207000000000000000000000000000000000009111a222b333c444c555d60615e564c443a31281f150c02050b101316171b1b1c171c1f20212223252628252a2d2e30312e34383a3b3e404246484a4b515356555d6063615e564c41362a1e0c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222b353d464e5456585858585858585854514b433a30271d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e141a1e21222b2b2b2b2b2b2b2b2b2b2b2a27231d160e050000000000000000000000000000040c12181d20202424242424242424242422211f1b150e0600000000040c13181d202122222222222222222222211e21242525252525252525252522211f1a150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d1a242c33393d3e3d3b3937332d302e2d2a251f170f090e1214151a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a151412141d252b303334363636363636362d2b28221c140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d999f9f9f9f9f9f93867a6d6059606366605c544d453e352f281f293643505c6976838f9c9d9d9d9d9d9d9185786b5e5245382b232c343c444c545c60676361594f43392f24180c030000000000000000000000000000000000081019212a323b434c515454524c443a32281f160d030000000407090a0e0f060b10121314151718191b191e2021232523282c2d2f3131363a3b3e404547494b51535654524c443b3025190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232b343d4348494b4b4b4b4b4b4b4b4745413a31281e150b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151f1f1f1f1f1f1f1f1f1f1e1d1b17120b040000000000000000000000000000000001070d101314171717171717171717171515120f0a0400000000000001070d1113141515151515151515151514121517181818181818181818181514120f0a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a22282d3031302e2d2b27222421201e1a140d0500020507080d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0808060b131a1f24272729292929292929201f1c17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6acacacaca093867a6d60606b70736d665f57504540393129293643505c6976838f9ca9aaaaaaaa9e9185786b5e5245382227353e464e565e666d74706b61554b4035291f1509000000000000000000000000000000000000070f182029313a4145474746413a322920160d0400000000000000000102000003060708090a0b0d080d1114141618181c1f202224252a2d2e2f34383a3c4045474a4746413b32291e1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071119222b32383b3c3e3e3e3e3e3e3e3e3a39352f281f160c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507081212121212121212121211100e0b060000000000000000000000000000000000000000010406070a0a0a0a0a0a0a0a0a0a090806030000000000000000000001040607080808080808080808080705080a0b0c0c0c0c0c0c0c0c0c08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d2123242422201f1b17171514120e0902000000000000000000000000000000000000000000000000000000000000000000000001080f14181a1b1c1c1c1c1c1c1c13120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3b9b9ada093867a6d6067707d80786e69615a514b433b322a3643505c6976838f9ca9b6b7b7ab9e9185786b5e5245382d333f474f585f686d78817d70675d51453c31261a0d04000000000000000000000000000000000000060e171f282f35393a3a3936302920170e05000000000000000000000000000000000000000000000105070809070c10121315171a1e212123292c2d2f35393a3d3b3936302920170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921272c2e2f32323232323232322d2c29241d160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11141717171513120f0b060807050200000000000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e0f0f0f0f0f0f0f060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d606d79848d837b716c605d554d443c343643505c6976838f9ca9b6c2b8ab9e9185786b5e52452f383f445159616a6f7a828d84796d60574d42372b1f160c01000000000000000000000000000000000000050d161e24292c2d2e2d2a251e170e0500000000000000000000000000000000000000000000000000000000000004060708090e121415181c1f2024292c2d302e2d2a251e170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f2223252525252525252521201d18130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607070707070707070707070604000003050607070808070604000000000000000407090a080806020000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000005080a0b0a08060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010103030303030303000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d6a73808d9590867e746d675e564e463e3543505c6976838f9ca9b6c2b8ab9e9185786b5e5245384149505b626b707c8490948c8073695f53473e31281d120700000000000000000000000000000000000000040c13191d202121201e19130d05000000000000000000000000000000000000000000000000000000000000000000000000020507070c101314181d20202321201e19140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13151618181818181818181413110d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313120f0b060000000000000000000000000000000000000000000203040505050606060606060606050504040301000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013131414141414141414141313100c0b0f1213141415141313100c07060200050b101416171514120f0903000000000000000000000000000000000000010407070d100606030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d6e7c87929f98928a81796e695f584f473f43505c6976838f9ca9b6c2b8ab9e9185786b5e5245424a535b606d727d8691969f92867b6e615a5043392f24180d030000000000000000000000000000000000000001080d1113141413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070d101314171414110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030709090b0b0b0b0b0b0b0b070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f20201f1b17110a020000000000000000000000000000030608090c0e1011111212121313131313131212121111100e0c0a0706040000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20202020202020202020201f1c18171b1f2021212121201f1c1814120e0910161c20232422211f1a150e0802000000000000000000000000000001080d1113141a1d13120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d77829099a3a29f938e837b6f6a6159514943505c6976838f9ca9b6c2b8ab9e9185786b5e52434b545c656c737f879298a1a3988f82766c61554b40352920150a00000000000000000000000000000000000000000001040607070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070a08070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b141b22272b2d2d2b27221b140b020003060809080705020000040a0f131516191b1d1d1e1e1f1f1f202020201f1f1f1e1e1d1c1b19171413100c070100000000000000000000000000000000000000000000000000000000000000030c151d23282c2d2d2d2d2d2d2d2d2d2d2d2c282322272b2d2d2e2e2e2d2c2823211e1a151a21282c2f302f2e2b262019140d07010000000000000000000001070d13191d2021262a201f1c17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a717e8b949fabaea59e9590847c706b625b5149505c6976838f9ca9b6c2b8ab9e9185786b5e524b555c666d77808b9299a2aaaa9f948a7e71675d51453c31261a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060608090a0b0b0c0c0b0a0907070501000000000000000000060b0e10111313131313131313130d0d0b070200000000000000000000000002070a0c0d111111111111111111100f0d0a0500000000000000000000000000000000070e161d262d3337393937332d261d140a0a0f1215151414110e090b0f151b1f21222628292a2b2b2c2c2c2c2c2c2c2c2c2c2b2b2a29282623201f1d18120e08020507080a090704000000000000000000000000000000000000000000000b151e272e34383a3a3a3a3a3a3a3a3a3a3a38342e2d3337393a3a3b3b3a38342e2e2b2620232c33383c3d3b3a37312a251e18120c040000000000000000040c13181e24292c2d33372d2b28221c140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a7a85929ea6b0baafa7a09691867d726d625b51505c6976838f9ca9b6c2b8ab9e9185786b5e4b555d676d78818d929fa3abb4b0a69e9184796d60584e43372b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060708080808080808080808070604000000000000000000000000000000000000000000000000000000000000000000030607080808080808080808080706040100000000000000000000000000000000000000000000060b0f1213151617181818181817161413110d08060300000000040b11171a1d1e2020202020202020201a1917130e0801000000000000000000070e1317191a1e1e1e1e1e1e1e1e1e1d1c1a16100a030000000000000000000000000107101920282f383f444646443f382f261b11151b1f212221201e1a14161b20262b2e2f32353637383838393939393939393938383737363433302d2c29241d19140e121415171614100b030000000000000000000000000000000000000007121d27303940454647474747474747474746454039383f4446474748474645403b3a3731272c353e44484a4847433c363029241d160d090300000000030a0d161d24292f35393a40433938332d261d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada0938679818e97a2adb8c1b9b1a8a19892877f726d625b515c6976838f9ca9b6c2b8ab9e9185786b5e545d676d79818e939ca4afb5bdb9ada1968d80736a5f53473a2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111314151515151515151515151313100c070000000000000000000000000000000000000000000000000000000000060c101213151515151515151515151413110d0801000000000000000000000000000000000000020a11171c1f202223242425252525242321201e1913120f0b0600050e161d22272a2a2d2d2d2d2d2d2d2d2d2726231f19120a02000000000000010a12191f2326262a2a2a2a2a2a2a2a2a2a2926221c150d0400000000000000000000040c1218222b323a4149505353504941382d221c1f262b2e2f2e2d2a251f21272c32373b3c3f41434444454545464646464646454545444443413f3d3a39352f2a251e1a1e20212423201c160f0b0600000000000000000000000000000000000c18232e39424b515353535353535353535353514b424a4950535454545453514b4847423c33323e474f555755534e46413b352f281f1a140b060000060c151a1f282f353a4145474d5046443f382f261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0bdb0a3978a7d8a939fa4acb1bbbfbab2aaa299928b7f726d625b5c6976838f9ca9b6c2b8ab9e9185786b5e5c666d79828f939ea5aebbc0c3bdb2a89f92877c6e6255483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d202121212121212121212121201f1c18120b0300030303030303030303030303030303030303030303030300030a11171c1f202121212121212121212121201d19130c0400000000000000000000000000000000020b141c22282b2d2e2f303132323231312f2e2d2a25201f1c17110a0e1720272e33363739393939393939393934332f2b241c140a0100000000000a131c242a2f32333737373737373737373635322d261f160d030000000000000000060d161d2429343d444c535b60605b53493f3327282b32373b3c3b3a3630292b32383c4347494c4e50505151525252535353535252525151504f4e4c4a47454039363029252a2d2e302f2c281f1b17110b06000000000000000000000000000004101c2834404b545c60606060606060606060605c545156535b6060616161605c5455534e443f3b444f596163625f58524c454039312a261f17110a0a111720262b313a41454c5254595d53504a42382d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0beb2a5988b7f868e939aa0a7aeb5bdbcb4aba39f918b7f726d625a6976838f9ca9b6c2b8ab9e9185786b5c666d78828f949ea6afb7c0bfbbb1aba39f978f8376695c504336291d1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d2e2e2e2e2e2e2e2e2e2e2d2c28231d150c101010101010101010101010101010101010101010101010100c151c23282c2d2e2e2e2e2e2e2e2e2e2e2d2c29241e160d040000000000000000000000000000000a141d262d3338393b3c3d3e3e3f3f3e3d3c3a3936302d2b28221c140b202932393f4344464646464646464646403f3b362e261c120c0c0c0c0c0c121c262e353b3f4044444444444444444443423e3831281f150a00000000000000070f181f282f353f464e565d656c6c655b5044372d33383c4347484746423b33353d44484e5355595b5c5d5e5e5f5f5f5f5f5f5f5f5f5f5e5e5d5c5b595653514b46413b3230363a3b3d3c38332b27221b17110b0600000000000000000000000006131f2c3845515c666d6d6d6d6d6d6d6d6d6d6d665c5b6265656c6d6d6e6e6d6667625f575049414c56616b706e6a615e56514b433e363128231c14151c232831373e434b51565d60666a605b544a3f33281d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada09386797b818891959fa3abb1b9bdb5afa39b918b7f726c626976838f9ca9b6c2b8ab9e9185786b656d78818e949ea6b0b8c1bdb5aea7a099928d857e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a3b3b3b3b3b3b3b3b3b3b3a38342e271e151c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c151e262e34383a3b3b3b3b3b3b3b3b3b3b3a39352f281f160c010000000000000000000000000006111c262f383f444648494a4b4b4b4b4b4a494746413d3938332d261d1727323b444a4f515353535353535353534d4c4740382e241919191919191919242e3840474b4d515151515151515151504e4a433a31261c100500000000030b1218212a31394045515860686d79776c6053463c383f44464e535554524d453b3e474f54585f626568696a6b6b6b6c6c6c6c6c6c6c6c6b6b6a6a69676663605d55524c443c3b4246484a48443e37332d27221b17110a02000000000000000000000713202d3a4653606d797a7a7a7a7a7a7a7a7a796d60626d7278797a7a7b7a7977746e6a605b5349525e68707d7b746e68605d555046423b342e261e1e262e343c434750555d60686d73766c665b5044392e23180c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6e747d838c9299a0a7aebabebbada39f93887f716c6976838f9ca9b6c2b8ab9e9185786b6c77818e939ea6b0b8c0b9b1aba39f9590878079716c6155493d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a414547484848484848484848484645403930272929292929292929292929292929292929292929292929292929292630383f4446484848484848484848484745413a31281e1308000000000000000000000000000b17222d38424a50535556575758585858575654524c4a46443f382f29202e39444d555b5d6060606060606060605a58524a40362b25252525252525252a35404a5257595d5d5d5d5d5d5d5d5d5d5a544c43382d22160a000000030c151d2328333c434b515b626a6f7a827e7064584e43454a5053585f62615e574d4247505960636a6f72747677777878787979797979797878787777767472706d67615e564e46454d525457554f46443f38332d28221c140b080000000000000000000d1a2633404d5966738086868686868686868680746765727f8586878787878684817b736c655b5059616e7a8586817a736d67615a534d443f38302a2930383f444e535a61676d737a8083786c60554b4034281d1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d6b6f797f8790959da4adb3bbbbafa49a93887e716a76838f9ca9b6c2b8ab9e9185786d74808d939da5afb8bfbaafa7a099928c837c736d67615a5045392d2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a434b51545454545454545454545453514b42392e3636363636363636363636363636363636363636363636363636362e38424a50535454545454545454545454514c433a2f24190d010000000000000000000000030f1c28333f4a545b6061626364656565646462615e565753504a423b3229333f4a555f676a6c6c6c6c6c6c6c6c6c67645c52473b323232323232323232323b47525c63666a6a6a6a6a6a6a6a6a69665e544a3e32261a0d0000000b151e272e343e454e555d606d727c848f82766a60544b51545b60646a6f6e695e5246505a616b6f777c7f81838384848585858686868685858584848382817f7d79746e685f584e4d575e61636159535049443f38332d261d1a120800000000000000000d1a2633404d596673808c939393939393938d8174676875828f929994949496918d877f776c6057616b75818e928e868079716c615f57504a423c33333b424a50585f626c717a7f858c8b7e71675c51453a2f24180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d60666d737c838d929fa2a9b1bab6aca49a92867c6f76838f9ca9b6c2b8ab9e918578727f8b929da5afb7bcb4aea59d9591877f786f6a605d5550483e34281d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b555d6061616161616161616161605c544b4043434343434343434343434343434343434343434343434343434343433f4a545c6061616161616161616161605d554c4135291d1104000000000000000000000006121f2b3844505b666c6e6f707171727271706f6d686864605b544c443b3036434f5b677177797979797979797979736e64584c3f3f3f3f3f3f3f3f3f3f3f3f4b57636e737777777777777777777670665a4e4235291c0f000007121d273039404550575f676d757f879194887c6f6256555d60666c70767b7b6e61584e56616c707d83888c8e8f909191929292929292929292929191908f8e8c8986817a6e6a5f54525e696e706b64605b535049443f382f2c241a1006000000000000000d1a2633404d596673808c99a0a0a0a0a09a8d817467687884919ea3a0a1a8a09e99938c7f73695f67707d89939f98928c847e756e69605c544d453f3e454d545c606a6f767e858c92979184796d60554b4135291e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d605c606a6f79808a9297a0a8b0b8b6aca39891857b76838f9ca9b6c2b8ab9e9185787d87929fa4aeb7bbb2aaa29f938e837c736d666058514b433e362c22170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d6e6e6e6e6e6e6e6e6e6e6d665c514f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f505c666d6e6e6e6e6e6e6e6e6e6e6d675d5145392c20130600000000000000000000000613202d394653606c787b7c7d7e7e7e7e7e7d7c7a7875706c665e564c42382e44515d6a77838686868686868686868073675a4d4c4c4c4c4c4c4c4c4c4c4c4c4d596673808484848484848484848276695d5043362a1d1000000c18232e39424b515a616a6e79818b92999b8e8175685f61676d72787d828881756a5f535d68707e879095989b9c9d9e9e9e9f9f9f9f9f9f9f9f9e9e9d9d9c9a9998928e857c6e665c54616e7b7d77706c65605b53504a423e362c22170c000000000000000d1a2633404d596673808c99a6adadada79a8d8174676d7a8796a1acb5aeb2acaba49f93877b6e616d7984919ea5a29f96918a827b726d665f5751454450575f666d737c828b92979fa1968b7f72675d51453a3025190d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b1a2733404d5a6673808d99a6b3c0b9ada093867a6d6053585f676d747e8591959fa6afb7b4aaa19790837a828f9ca9b6c2b8ab9e91857b859299a3afb6b9b1a9a198928a81796f6a605c544e45413a312c241a10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d797b7b7b7b7b7b7b7b7b7b786d605c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c606d787b7b7b7b7b7b7b7b7b7b7a6d6054473a2d2114070000000000000000000000091623303c4956636f7c88898a8a8b8b8b8b8a898785827d786e685e544a3f3444515d6a778490939393939393938d8073675a58585858585858585858585858585b6874818e909090909090909085786b5f5245382c1f120004101c2834404b545c606c717c838e939fa39f92867a6d696e747a7f848a8f93877c6f6258606d7a859299a0a7a7a9aaaaabababacacacacacacabababaaaaa9a7aaa29f979183786d605c6673808a837d78716c65605b5450483e34281d11050000000000000d1a2633404d596673808c99a6b3b9b4a79a8d817467707d8996a8b2b7bcbdb9b5afa4998d80746a73808d96a0acaea8a19e948f867f786e69625b52505a61696e78808790949ea1a9a89e92857a6d60564c41362a1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b2733404d5a6673808d99a6b3c0b9ada093867a6d60534e555c606c707b838f949ea5aeb6b2a99f958e81828f9ca9b6c2b8ab9f9285849197a2abb5b8b0a7a09791867e746d675f58504a423c352f281f1a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e878787878787878787877c6f69696969696969696969696969696969696969696969696969696969696969696969696e7b878787878787878787877f7265594c3f3226190c00000000000000000000000c1925323f4c5865727f8b95969798989897979597918e8a837a6e665c50443844515d6a7784909d9f9f9f9f9f9a8d807367656565656565656565656565656565656874818e9b9d9d9d9d9d9d9285786b5f5245382c1f120006131f2c3845515c666d747e8691959ea5aea3988c7f72727b80858b91969c9a8f82766a6065727f8b97a2abb1b4b6b6b7b7b8b8b7b7b7b7b7b7b7b7b7b7b6b5b4b4aea9a0958a7d7164606d798491908a837d78716c66615a5045392d2114080000000000000d1a2633404d596673808c99a6b3bfb4a79a8d817467727f8c99a5a9abb0b8c2c0b5ab9d9084776f7c87929fa8b2bab2ada69e98928c837b726d605d5b606c717b838c92999fa6adb3ada1978c8073685e52463b31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272b33404d5a6673808d99a6b3c0b9ada093867a6d6053474b515a61696e7a828e939da4aeb6b1a79e938e86929facb9c5baada297929195a0a9b3b7afa69e9590857c716c605c554e443f383029241d160d0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b9494949494949494887c767676767676767676767676767676767676767676767676767676767676767676767676767b8894949494949494948c7f7265594c3f3226190c0000000000000000000004101d2935404b556874818e9ba3a4a4a5a5a4a3a9a19e9b949083786d6053463a44515d6a7784909daaacacaca69a8d807372727272727272727272727272727272727274818e9ba7aaaaaaaa9e9285786b5f5245382c1f12000713202d3a4653606d79808a9298a0a7afb4aa9d9184777f878d92989ea0a89e94897c6f626975828f9ca9b3bdc1c0b9b5b4aeababaaaaaaaaaaaaabacafb5b8bcbfbab1a79b8e82756864717d8a979d95908a837e78716c6155493d3023170a0000000000000d1a2633404d596673808c99a6b3bfb4a79a8d81746875828e99999c9fa6b0bac4b9ac9f93867977839099a3aebac4bdb9b0aaa39f9590867f756d68656c737e8590959fa3abb0b9beb3a99f92867a6d61574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333739404d5a6673808d99a6b3c0b9ada093867a6d605347404550575f686d78818d929ca4aeb6afa59e999299a3aebbc7beb3a9a29f9da0a7b1b7afa59e948f837b6f6a615a514b433c342e29241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a1a1a1a1a1a19c90838282828282828282828282828282828282828282828282828282828282828282828282828282909ca1a1a1a1a1a1988c7f7265594c3f3226190c0000000000000000000006131f2c3945515d677784909daab1b1b1b1b1b0b3adaba69f958b7e7165544b4044515d6a7784909daab7b9b6a99c8f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f83909da9b6b7b7ab9e9285786b5f5245382c1f12000f1b2835424e5b6875818d929fa2aab1b9b8aca096897c7b86929fa2aaacb0a69b8f82756a657884919eabb7c4c0b6aea9aaa29f9e9e9d9d9d9d9e9e9fa3ababb1b9c3b8ab9e918578686a7683909ca7a09d95908a837e7164574b3e3124180b0000000000000d1a2633404d596673808c99a6b3bfb4a79a8d81746777848e8c8c90949fa8b2bdbbafa499877a7e8b949fa9acb2b9bec1bcb4aea79f98928b817a6f6d77808a92989fa7afb5bdc2beb9aea2988d8074695f53463a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f4446444d5a6673808d99a6b3c0b9ada093867a6d6053474343454d565d666d77808d929ca4aeb7afaba39fa3abb5bfcbc5bbb3adabaaacb1b7afa59e938e82796e69605850454043433a39352f281f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5aeaeaeaeab9f94908f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90949fabaeaeaeaea5988c7f7265594c3f3226190c000000000000000000000714202d3a4753606d7a86929facb9bebebebebdbeb9b8b0a79c908376665c514544515d6a7784909daab7c3b7ab9f948f8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b90959fabb8c3b8ab9e9285786b5f5245382c1f12000b1825313e4b5864717e8b96a1adb4bcc3bdb2a89a8d8074808c96a1acb9b9ac9f93877c6f6c7986929facb9c5bdaea49d9a9892919191919191919192999d9fa7b1bcb9ada197877a6d6f7c88949fabaca7a09d958e8175685b4e4235281b0f0000000000000d1a2633404d596673808c99a6b3bfb4a79a8d81746d798381807f829096a0acb9c0b5ab94887b848c91979ea1a8adb3babebfbab1aaa29f938f847c7a818d929fa2aab1bbc0bdb9b2ada9a29f92867b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d384149505350495a6673808d99a6b3c0b9ada093867a6d60534f505050504c545c656c73808d929da5afb7b5aeacaeb5bdc6d1cdc5bebab8b7b8b7afa59e938e81786d675e574e50505050504745413a31281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bababcb0a69f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa6b0bbbabab2a5988c7f7265594c3f3226190c00000000000000000000091623303c4956636f7c8999a3afbbbcc0c2c5cbc9c6c2b9ac9f9286796d60534644515d6a7784909daab7c3bbb0a69f9c98989898989898989898989898989898989898989d9fa7b1bcc5b8ab9e9285786b5f5245382c1f12000713202d3a4653606d7984919eaab4bfcac3b8ab9e9285797984919ea7b1bbafa49a8e81756d7a8699a3afbbc0b5ab9d928d87858484848484848484868990959faab4beb2a995887c6f74818e9ba6b0b8b1aa9f92867b6e6155483b2e2215080000000000000d1a2633404d596673808c99a6b3bfb4a79a8d8174676d767473727884919eaab7baaea194877b7a7f858b91969ea1a9aeb3bbc0bcb4aea59e969186848e939ca4aeb3bcbfbab2ada9a19e97928d887f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b605b535a6673808d99a6b3c0b9ada093867a6d60535c5d5d5d5d5d5d535b606e73808d929da5afbbbbb9bbbfc6cfd8d7d0cac6c5c4bbafa59e938e81786d665d555d5d5d5d5d5d5d54524c433a2f24190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1becdc2b9b0aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9abb0b8c2cdbfb2a5988c7f7265594c3f3226190c000000000000000000000c1925323f4c5865727f8b98abb5afafb4b5b9c0c8d2c7baaea398887b6e62554844515d6a7784909daab7c3c2b8b0aba9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a9abb1b9c2c5b8ab9e9285786b5f5245382c1f120006121f2c3844515c66727f8c98a2aebac6c6b9ada197897d717e8a95a0acb8b6ac9f92867b6e7a8793a0b5c0bbafa4998d807b787877777777777778797d839098a3aebaafa396897c707b86929facb9baaea3988d8174695f53463a2d2114070000000000000d1a2633404d596673808c99a6b3bfb4a79a8d817467646a67666674818e9aa7b4baaea194877b6e72797e848b91979fa2aaafb6bebfbaafa8a0989291959ea5aebabebcb4aea9a19e97918c85807c736d63574b3e3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c65625a6673808d99a6b3c0b9ada093867a6d6065696a6a6a6a6a6a6a6a6a6a6e74808e939eaab6c3c5c7cbd1d8e1e1dbd6d3d2c3b6aa9e938e81786d666a6a6a6a6a6a6a6a6a6a605d564c4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec7bdb3aba5a3a1a1a1a1a1a1a1a1a1a1a1a1a1a9abb0b5b5b5b5b5b2acaaa1a1a1a1a1a1a1a1a1a1a1a1a1a2a4aab3bcc7bfb2a5988c7f7265594c3f3226190c00000000000000000004101d2935404b556874818e9ba3a3a2a3a7a9aeb6c0cbcbbfb4aa96897c7063564944515d6a7784909daab7c3cac2bbb7b6b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b6b8bcc2cbc5b8ab9e9285786b5f5245382c1f120004101c2834404a54606d7a85929facb8c2c9beb3a99a8d80747884919da7b1bbaea3998c80737a8793a0adbab9ac9f93867a6e696b6b6c717a6f6a666d707a86929facb9b0a3978a7d73808d99a3aebbb3aa9f92867b6e61574d42362a1e12050000000000000d1a2633404d596673808c99a6b3bfb4a79a8d817471717171717173808d99a6b3baaea194877b6e676d72797f858c92989fa4acb1bbbfbab2aaa29f9da0a7afb7bfbab0aaa39f96918b847f79746f6a635b51463b2f22160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78716c626673808d99a6b3c0b9ada093867a6d60707576767676767676767676767678828f9ba8b5c2ced3d7dce3eaece6e2dbcec2b5a89b8f8279767676767676767676767676766d685d5245392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec1b6aba19996949494949494949494949494949c9fa6b0bbc2bdb2a8a09e949494949494949494949494949599a1aab5c1bfb2a5988c7f7265594c3f3226190c00000000000000000006131f2c3945515d6777849097969695969a9da4aeb9c2cdbdb0a3968a7d7063574a44515d6a7784909daab7c3d0ccc7c3c2bebebebebebebebebebebebebebebebebebebebec3c4c8cdd1c5b8ab9e9285786b5f5245382c1f1200000c18232e3945525d6874818d9aa7b1bcc7c4b7ab9e918478717e8a95a0acb8b5ab9e9285797a8793a0adbab8ab9f928578675e5e69717e847c726d606876838f9ca9b6b1a4988b7e7985929fabb5baaea2988d8073695e52453b31261a0e020000000000000d1a2633404d596673808c99a6b3bfb5a99c8f827e7e7e7e7e7e7e7e818f9ba8b5baaea194877b6e6160666d72797f858e939aa0a7aeb5bdbcb4aeacaaacb1b9bcb4aea69e98928c847e79726d67625f58514940352a1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d7e716a6673808d99a6b3c0b9ada093867a6d6975828383838383838383838383838383909daab7c3d0dde3e7edf4f7f2e9ddd0c3b6aa9d908383838383838383838383838383837a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebeb1a5998f89878787878787878787878787878f949fabb7c3b9aca0969187878787878787878787878787898e99a4b1bdbfb2a5988c7f7265594c3f3226190c0000000000000000000714202d3a4753606d7a868c8a8a8989898d929da6b0bcc7bdb0a4978a7d7164574a44515d6a7784909daab7c3d0ccc7c3c2bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdc3c4c7cdd1c5b8ab9e9285786b5f5245382c1f12000007121c2935414c56626e7b88959fabb7c6c5b9aca196887b6f7883909da9b2b9ada1978b7e7a8793a0adbab8ab9e9285786b5c666e7b8691877f756d6774818e9ba7b4b1a5988b7f7f8c97a2adbdb3a99f92857a6d61574d42332a1f1409000000000000000d1a2633404d596673808c99a6b3bfb7ab9f948f8a8a8a8a8a8a8a8a8f939eaab6baaea194877b6e61545c60676d727a818790959fa3abb2babfbab8b7b8bcbfb4aaa29f948f868079726d67605d55534e4640372e23190d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d57677380867c6e6773808d99a6b3c0b9ada093867a6d6b7885909090909090909090909090909095a0acb8c4d1deeaf3f8fffff7eaddd1c4b8aba0959090909090909090909090909090877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebcafa396897d7a7a7a7a7a7a7a7a7a7a7a7a7a828f9ca9b5c2b7aa9e91847a7a7a7a7a7a7a7a7a7a7a7a7a7c8995a2afbcbfb2a5988c7f7265594c3f3226190c0000000000000000000815222e3b4855616e7b817f7e7d7c7c7d808d949fabb7c4bdb0a4978a7d7164574a44515d6a7784909daab7c3cac1bbb7b5b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b6b7bbc2cac5b8ab9e9285786b5f5245382c1f120000000d19242f3a47535f6a7683909daab4bfc9bdb2a8988b7f72717e8a96a1adb9b3a99c90837a8793a0adbab8ab9e9285786b606d78829098928b817a6f74808d9aa7acaaa6998c8085919ea9b3b9ada1978c7f73685e52453b3021180e03000000000000000d1a2633404d596673808c99a6b3bfbbb0a69f9c97979797979797979b9ea5afbbbaaea194877b6e615451555d60686e747c838c9299a1a8b2bdc7c5c4c5c6baaea298928b827b736d67605c55514b47433c342e251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6977849083796d73808d99a6b3c0b9ada093867a6d6b7885919d9d9d9d9d9d9d9d9d9d9d9d9da0a7b1bcc8d4e0edf0f5fbf7f2ece0d4c8bcb1a7a09d9d9d9d9d9d9d9d9d9d9d9d9d94877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebbafa295887c6f6e6e6e6e6e6e6e6e6e6e6e75828f9ca8b5c2b7aa9d9184776e6e6e6e6e6e6e6e6e6e6e6e7b8894a1aebbbfb2a5988c7f7265594c3f3226190c0000000000000000000714212d3a46535f696e74727170706f707683909ca9b6c3bdb0a4978a7d7164574a44515d6a7784909daab7c3c1b8b0aaa8a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a9abb0b8c2c5b8ab9e9285786b5f5245382c1f1200000008131e2b37434e5865717e8b98a3aebac7c2b5a89b8f82756d7984919eaab4b7ab9f94897c8995a2afbcb8ab9e9285786b6b73808c949f9f938e847c73808d99a8a09e9b9792859197a1adbcb2a89e92857a6d60564c4133291f0f0600000000000000000d1a2633404d596673808c99a6b3bfc2b8b0aba9a4a4a4a4a4a4a4a4a8aaafb7c1baaea194877b6e6154484b51565e616a6f787f879196a1acb9c5d2d0d2c5b8ac9f92867f766e69605d55514b45403937312a221c130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b88958e817473808d99a6b3c0b9ada093867a6d6b7885919ea9a9a9a9a9a9a9a9a9a9a9aaacb1b9c3cdd9dee0e4eaf1ece6e2dfd9cdc3b9b1abaaa9a9a9a9a9a9a9a9a9a9a9a094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebbafa295887c73737373737373737373737375828f9ca8b5c2b7aa9d9184777373737373737373737373737b8894a1aebbbfb2a5988c7f7265594c3f3226190c00000000000000000005121e2a36424d575f616766646363626774808d9aa7b3c0bdb0a4978a7d7164574a44515d6a7784909daab7c3bbb0a69e9c97979797979797979797979797979797979797979c9fa6b0bbc5b8ab9e9285786b5f5245382c1f12000000010f1a26313c4754606d7a86929facb8c5c5b8ab9f9285796c737f8c98a3aeb7b0a69b8e818e9ba7b4c0b8ab9e92857868707d87929fa6a59e9691867e7f8c999796918e8b8c9297a1a9b3b9aca1968b7f72675d51443a3020170d0000000000000000000d1a2633404d596673808c99a6b3bfc0b6aca49f9f9f9f9f9f9f9f9f9fa4acb6c0baaea194877b6e61544840454c525860666d737c84919eabb7c4d1d2cdc0b3a79a8d80746d615e57514b454039352f2b262018100a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5665727f8c98938a7e73808d99a6b3c0b9ada093867a6d6b7885919eabb6b6b6b6b6b6b6b6b6b6b7b8bcc3cbcad0d1d4d9dfe7e1dbd6d3d2cacbc3bcb8b6b6b6b6b6b6b6b6b6b6b6ada094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec1b4a79a8e818080808080808080808080808084919eaab7c4b8ab9e928580808080808080808080808080808d9aa7b4c0bfb2a5988c7f7265594c3f3226190c000000000000000000020e1a26313b454d53555a59575756596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c3b7aa9e948f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a90949fabb7c5b8ab9e9285786b5f5245382c1f12000000000915202c3945515d6775828f9babb5c0c6baada297887b6e6d7a86929facaaa8a09e9285929facb4b4b4ab9e9285786d7a849199a3afafa8a098928b828e8e8b8784817e808c99a9b3bbb1a79e9184796d60554b4132281e0e050000000000000000000d1a2633404d596673808c99a6b3bfbbafa49a939292929292929292939aa4afbbbaaea194877b6e6154483b3b41464e545c666e7b86929facb8c5c6c5c6c6b9ac9f93887d70695f554b4039342e29241d1a150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d6876838f9c9f92857b808d99a6b3c0b9ada093867a6d6b7885919eabb8bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdc3c5c8ced5ddd7d0cac6c5bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbaada094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec2b5a99d938e8c8c8c8c8c8c8c8c8c8c8c8c8c9196a0acb9c5b9ada197928c8c8c8c8c8c8c8c8c8c8c8c8c8d929da9b5c2bfb2a5988c7f7265594c3f3226190c0000000000000000000009141f29333b4246484e4c4b4a4d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c2b5a89c8f827e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e82909ca9b6c3b8ab9e9285786b5f5245382c1f120000000004111d2935414b5564717e8a99a3afbbc7beb3a9978a7e716875818e9ba09d9996918d898f99a7a7a7a7a79e92857877828f96a1abb5b1a79e938d807e84817e7b77747984919daab3b9aca0958b7e71675c51433a2f20160c000000000000000000000d1a2633404d596673808c99a6b3bfb9ac9f9388868686868686868688939facb9baaea194877b6e6154483b3038414e58606d78839098a2aebabfbab8babfbbafa49a92857b6e675d51453c2f261d18120f0a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929fa2978f82808d99a6b3c0b9ada093867a6d6b7885919eabb0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b7b8bcc3cbd5cdc5bebab8b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ada094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec5baafa59d9a999999999999999999999999999ea0a8b2bdc8beb3a9a19e999999999999999999999999999a9da4aeb9c5bfb2a5988c7f7265594c3f3226190c00000000000000000000030d17212931363a3b413f3e404d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d807371717171717171717171717171717171717174818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000010d18242f3a4754606d7a86929facb9c5c0b3a79a8d807467707d8a9795918c8884807d89969a9a9a9a9a9a9285787f8c949ea9b2b2a8a0958f8178797774716e69717d8a969ea1a9aca69d9083786c60554b4031281d0e04000000000000000000000d1a2633404d596673808c99a6b3bfb4a79a8d807979797979797979808c99a6b3baaea194877b6e6154483b333f49535f6a73808c959faab4bcb4aeacaeb4bcb6aca2979083796d60584e41382d22170b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a5464717e8a99a3a99f948f85919eabb8c4b9ada093867a6d6b7885919ea4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4aaacb1b9c3cec5bbb3adaba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec8bdb4aba6a3a1a1a1a1a1a1a1a1a1a1a1a1a1a9abb0b8c2cdc4bab2acaaa1a1a1a1a1a1a1a1a1a1a1a1a1a3a5abb3bdc7bfb2a5988c7f7265594c3f3226190c0000000000000000000000060f171f262a2d2e343333404d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d807367646464646464646464646464646464646874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000713202c3945525d687683909da9b6c3c2b6a99c8f8376696d7985928d84807c77737a878d8d8d8d8d8d8d8d857a8590949fa3aba9a1969083796d6d66676461677480888d92979c9f9f94897d726d62564d42362a20150a000000000000000000000d1a2633404d596673808c99a6b3bfb4a79a8d81746c6c6c6c6c6c73808c99a6b3baaea194877b6e6154483b3744505b656f7c87929fa7b1b9b0aaa29fa2aab3bcb3a9a0958d80736a5f53493f33271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c6675818e9babb0a69f979197a1adb9c6b9ada093867a6d6b7885919797979797979797979797979797979797979da0a7b1bcc8beb3a9a29f97979797979797979797979797979797979794877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec2b6aba29a97959595959595959595959595959c9fa6b0bbc7bdb2a8a09e959595959595959595959595959699a1abb6c1bfb2a5988c7f7265594c3f3226190c000000000000000000000000060d141a1e2122272a33404d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a57575757575757575757575757575b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000004111d2935414c566673808c99a6b3bfc4b8ab9e918578686673808d8077736f6a6d7980818181818181818180737b828c9299a2a19791847a6e67605c545854646e747b80858a8f939a8f827e7f72695e52463c32261b0c030000000000000000000d1a2633404d596673808c99a6b3bfb4a79a8d807473737373737373808c99a6b3baaea194877b6e6154483b404b55606c78839099a3afb9b0a69f989298a2a9b3bbb1a79f92877c6f655b5044392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929eabb8b0a9a19ea1a9b3bec9b9ada093867a6d6b78858a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9095a0acb8c5baada297928a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebeb2a69a908a888888888888888888888888888f949fabb7c4b9aca0969188888888888888888888888888898f99a5b1bebfb2a5988c7f7265594c3f3226190c0000000000000000000000010b141c242b3033343733404d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d4b4b4b4b4b4b4b4b4b4b4b4b4e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f120000000000010d1924303d4a5763707d8a96a8b2bdc6b9ada197877a6d6c78828f8d827b726c676d747474747474747474736e6f787f8792989892857c6e685e55504a4b525c64696e73797d82879191848a867b6e61584e43372b1e150b0000000000000000000d1a2633404d596673808c99a6b3bfb6aa9d9083808080808080808083909da9b6baaea194877b6e6154483b45515d67717e8a949fabb5b3aa9f9490859297a2abb5bbafa3999083776c60544b4034281c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8997a1adb9bbb3adabadb3bbc4cfb9ada093867a6d63707d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e83909daab7c3b8ab9f92857e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebdb0a3978a7e7b7b7b7b7b7b7b7b7b7b7b7b7b828f9ca9b6c2b7aa9e91847c7b7b7b7b7b7b7b7b7b7b7b7b7d8996a3b0bcbfb2a5988c7f7265594c3f3226190c000000000000000000000008121c262e363c3f404340404d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d403e3e3e3e3e3e3e3e3e3e414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f120000000000000814212e3a4754616d7a8796a1acb9c5beb3a996897c6f727f8c94948f867f776e6967676767676c7178797a7b7b7c7c7e859292857c6f6a61594f443f414a52575f62666d71767b849191968e81746a5f54473e30271d120700000000000000000d1a2633404d596673808c99a6b3bfb8aca095908d8d8d8d8d8d8d8d90959fabb8baaea194877b6e615448404b55606d7984919ea6b0baaea29890827b859299a4afbbb5ab9f948b7e71665c5145382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a9b3bec4beb9b8b9bec4cdc6b9ada093867a6d606b7071717171717171717171717171717171717176828f9ca9b6c2b8ab9e918578717171717171717171717171717171717171716d665c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebbafa295887c6f6e6e6e6e6e6e6e6e6e6e6e75828f9ca8b5c2b7aa9d9184776e6e6e6e6e6e6e6e6e6e6e6e7b8894a1aebbbfb2a5988c7f7265594c3f3226190c00000000000000000000030e19242e3840474c4d504d494d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d4034313131313131313135414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f120000000000000713202d3946525d687884919eabb7c4bdb1a4978a7e717c87929f9f98928b827b716c605c5564717e848586878888888b92989286817c706b61564c41444b51565e616a6e767d8491969e9f93877c6f625a5042392e23180c02000000000000000d1a2633404d596673808c99a6b3bfbcb1a7a09d9a9a9a9a9a9a9a9a9d9fa7b1bcbaaea194877b6e61544845515d67737f8c96a1adb9b1a79f92857b707d87939fa7b1bdb0a69e9184796d60544a3f33281c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d2a3643505d697683909ca5afbbc5c9c6c4c6c9cfd6c6b9ada093867a6d60616364646464646464646464646464646464646976838f9ca9b6c2b8ab9e9185786b646464646464646464646464646464646464605c544b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebbafa295887c74747474747474747474747475828f9ca8b5c2b7aa9d9184777474747474747474747474747b8894a1aebbbfb2a5988c7f7265594c3f3226190c0000000000000000000007131f2b36404a52585a5d595653596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d4034272424242424242835414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000005111d2935414c566975828f9ca8b5c2bfb2a6998c7f7a849199a3aaa29f948f857e746d675f6773808d929894959595989fa298928e867d70685d524a50555c60686d747c828a9196a1a8a49a9082766c61544b4034281e1308000000000000000d1a2633404d596673808c99a6b3bfc3b9b1acaaa6a6a6a6a6a6a6a6a9abb1b9c2baaea194877b6e6154484b55606d7985929ea9b2b8ab9f958b7f726b73808d95a0acb8b9ada1968b7e71665b5044382b1f14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d89939ea9b3becad2d1d2d5dad3c6b9ada093867a6d6053575c646768686868686868686868686868686976838f9ca9b6c2b8ab9e9185786b686868686868686868686868686868605c5553514b42392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec1b5a89b8e818181818181818181818181818184919eabb7c4b8ab9f928581818181818181818181818181818e9ba8b4c1bfb2a5988c7f7265594c3f3226190c000000000000000000000b1723303c47525c64676a6663605c6673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d40342b2b2b2b2b2b2b2b35414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000000010d192430404d5a6673808d99a6b3c0c1b4a79a8e81818e96a1abb4aea69f97928a81796e696976828f9ca3aaa2a2a2a4abaaa29f9892857a6d6054545b60676d727a80878f949ea1a8b2ac9f948a7d70665c51453a3025190d010000000000000d1a2633404d596673808c99a6b3bfc0b5aba39f9f9f9f9f9f9f9f9f9fa3abb5c0baaea194877b6e615448515d67727f8c97a2adbbb0a69d9083786c606d7983919da5afbdb2a89d9184786c6053463b3025190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855606b74818e97a2adbac3ced9dfe1e6d3c6b9ada093867a6d605358646e7474747474747474747474747474747476828f9ca9b6c2b8ab9e918578747474747474747474747474747474746d675c5145403930271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec3b6aa9e938e8d8d8d8d8d8d8d8d8d8d8d8d8d9196a1acb9c5baada297928d8d8d8d8d8d8d8d8d8d8d8d8d8e939eaab6c2bfb2a5988c7f7265594c3f3226190c000000000000000000000d1926333f4c58646e737673706d666673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d4038383838383838383838414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000081825323e4b5865717e8b98a4b1bec5b8ac9f92868e939ea8b2bbbab0a9a29e938e837b706c7885919eabb4aeaeafb1b8b4aeaaa1978b7e72655b60666c71797f858d92999fa6acb2bab0a69e9184796d60564c4135291d1105000000000000061a2633404d596673808c99a6b3bfbbafa3999292929292929292929299a3afbbbaaea194877b6e61544853606d7985919ea9b3b7aa9e94897c6f665c676f7c89939eabb5b8aca0968a7e7164564d41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59616d7a85929fa7b1bcc8d4dee9e0d3c6b9ada093867a6d60535a6774808181818181818181818181818181818185919eabb8c4b8ac9f92868181818181818181818181818181818181796d6053463a2e271e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bcbcbaafa59e9b9a9a9a9a9a9a9a9a9a9a9a9a9a9ea1a8b2bdbcbeb3a9a29f9a9a9a9a9a9a9a9a9a9a9a9a9a9b9ea5afbabcbcb2a5988c7f7265594c3f3226190c000000000000000000030f1b27333f495367738083807c79757273808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d4444444444444444444444444e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000000000a1723303d4a5663707d8996a3b0bcc6baaea2989290949ea1a9afb6bbb3ada59d9590867e737a8797a1adb0b0b6b7bbc2bfbab3a99b8f827568666c71787e848c92979fa3abb0b9bdb9b2aca0968c7f72685e5246392d20130700000000020a11172633404d596673808c99a6b3bfb9ac9f9287868686868686868687929facb9baaea194877b6e61544e5865717e8b97a1adbbb0a69c8f82756a6055606b75828f99a4afbbb2a89c8f8276685e5246392d201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d46525e68727f8b95a0acb8c2cdd8e4e0d3c6b9ada093867a6d60535f6b78858e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9197a1adb9c6baaea398928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e867a6d6053473a2d20150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5afafafafafafaaa8a7a7a7a7a7a7a7a7a7a7a7a7a7abacb2afafafafafb3adaba7a7a7a7a7a7a7a7a7a7a7a7a7a8aaafafafafafafa5988c7f7265594c3f3226190c00000000000000000005121f2b3744505b657683908c8985827e7b808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a51515151515151515151515151515b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000000000815222f3b4855626e7b8895aab4bfc5b9ac9f9287838b92979fa4acb2bab9afa7a09892887f7d8996a9a3a3a4a9abb0b8c2c4b7aa9e9184776a6f787e838b91969fa2a9afb5bdb9b2aca8a09d9590857a6d6154473a2e211407000000020b141b222733404d596673808c99a6b3bfb4a79a8d807979797979797979808c99a6b3baaea194877b6e6154565f6a7783909da9b3b7ab9f94887c6f62585959626f7c87939facb9b9ac9f93877b6e6154473b2f24190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212a36414c56606d7883919da6b0bbc7d3dee0d3c6b9ada093867a6d60535f6b7885929b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea1a9b2bec9bfb4aaa39f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b93867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3a5988c7f7265594c3f3226150c0400000000000000000613202d394653606c7985929998928f8b8786929facb8c5bdb0a4978a7d7164574a47515d6a7784909daab7c0b3a69a8d8073675e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000000000714212d3a4754606d7a8798a3aebac7bbaea39986787e858d939aa0a8aeb9b9b1aaa29a938c849199979696979c9fa6b0bbc5b9ac9f9286796f7c838a91959ea1a8adb3bbb9b2aca8a19e96918a837e70685e5246392d2013070000000a141d262d3337404d596673808c99a6b3bfb4a79a8d81746c6c6c6c6c6c73808c99a6b3baaea194877b6e615a62646f7c88959fabbbb5ab9c8f82766a66666666666a76828f9cacb6bbafa4998b7f7265564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d1925303a44505c66707d8a949fabb7c1ccd7e3d3c6b9ada093867a6d60535f6b7885929ea7a7a7a7a7a7a7a7a7a7a7a7a7a7abadb2bbc4cfc6bcb4aeaca7a7a7a7a7a7a7a7a7a7a7a7a7a7a093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595969e988c7f7265594c3f2f271e160d04000000000000000815222f3b4855626e7b8898a2a29f9b98989298a2aebac6bdb0a4978a7d71645755534d5d6a7784909daab7c0b3a69a8d80736b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b74818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000000000613202c3945515d677986929facb9c5bfb5ab94877a717a818891969da4adb3bbb4aca49f9691928c8b8a898a8f949fa9b3bebaaea399867a6d7984919da0a7acb2bab8b2aca8a19e96918b847e78706c61564c4135291d1105000006111b262f383f44464d596673808c99a6b3bfb4a79a8d807878787878787878808c99a6b3baaea194877b6e61626c7174808d9aa7b1bbafa4998a7d7373737373737373737d8a9aa4afbbb5ab9d908376685d5245392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28343f4a54616b76828f9ca6b0bbc7d3ded3c6b9ada093867a6d60535f6b7885929eabb4b4b4b4b4b4b4b4b4b4b4b4b4b8b9bec4cdd1cec6bfbab8b4b4b4b4b4b4b4b4b4b4b4b4b4ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898991928c7f72655949413930281f160c010000000000000b1824313e4b5764717e8a97aaaeaba8aaa29fa2aab4bfcabdb0a4978a7d716966625f575d6a7784909daab7c0b3a69a8d807777777777777777777777777777777777777777818e9ba7b4c1b8ab9e9285786b5f5245382c1f120000000000000004111d2935414b556b7884919eabb7c4bbaea195887b6e6d747d848d929ea1a9b0b8b4aaa29892867f7e7d7d7d828f97a2adbabfb4ab94877a6d717e8a949facb6bab2aca8a09e96918b847e78716c66615a50443a3025190d0100000b17222d384149505359596673808c99a6b3bfb8ac9f9286858585858585858586929facb8baaea194877b6e6164717e7f85929fabb8b9ac9f9387807f7f7f7f7f7f7f7f7f8087939facb9b8ab9f95877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17232e38424f59636f7c89949eaab7c1ccd7d3c6b9ada093867a6d60535f6b7885929eabb8c1c1c1c1c1c1c1c1c1c1c1c1c4c4c4c4c4c4c4c4c4c4c4c1c1c1c1c1c1c1c1c1c1c1c1b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d848d807a6e615b534b423a31281e13080000000000000d1a2733404d5a6673808d99a6b3b8b5b4aeacaeb4bcc6d0c0b4a79a8d807b77726e6966616a7784909daab7c3b8ab9f9285848484848484848484848484848484848484848486929fabb8c5b8ab9e9285786b5f5245382c1f1200000000000000010d18242f44505d6a7783909daab6c3bcafa295897c6f626b7079808a91979fa6b0aba39892867d73717070717985929fabb8baada194877a6e6c7683909aa4afaea8a09e96918b847e79716d66605b5450483e32281e13080000030f1b27333f49535b6066666673808c99a6b3bfbaaea3989292929292929292929298a2aebabaaea194877b6e616a76838c9297a2adbabbafa499938c8c8c8c8c8c8c8c8c8c8c939aa4afbbbcb1a794877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303e4854606b75828f9ca6b0bbc7d3d3c6b9ada093867a6d60535f6b7885929eabb8c5cecdc4beb9b8b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8b9bdc4cccec6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686e7a7d7c7b7a7a79797878787777767676757575747473737372727171717070706f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f79829093887f736c655c544c433a2f24190d010000000005121e2a36424d576976828f9ca9b5c2c2bfbab8babfc6cecec2b5a99d928d87837f7b77736e697784909daab7c3baada2979291919191919191919191919191919191919191919298a2aebac5b8ab9e9285786b5f5245382c1f120000000000000000071d2a3643505d697683909ca9b6c3bcafa396897c706360676d747d858f949fa6a39992867d706b646363677683909ca9b6baada194877a6e626f7c87939faaa39f96918b847e79726d66605c54504a423e362c20160c02000005121f2b3744505b656c73737373808c99a6b3bfbfb4aaa39f9e9e9e9e9e9e9e9e9fa2aab4bfbaaea194877b6e6a6a7683909da2a9b3bec0b5aba49f99999999999999999999999fa4acb6c0baada094877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2c38434f59626f7c88949eaab7c2ccd8c6b9ada093867a6d60535f6b7885929eabb8c5cfc4bbb2adabababababababababababababababababababababababadb2bac4cfc6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c5666727f898888878686868585848484838382828281818180807f7f7f7e7e7d7d7d7c7c7c7b7b7a7a7a7a797979797878787777777676767a8390949a938c80776d665d554c4135291d1104000000000714202d3a46525e697885929eabb8bfc4c5c6c5c6cad0d8d1c5baaea49d9a95908c8884807b6e7784909daab7c3beb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2aab4bec5b8ab9e9285786b5f5245382c1f1200000000000000030f1c2936424f5c6975828f9ca8b5c2bdb0a3968a7d7063686e6f6f707a828f949f9f92877d706f6f6f6f6f6f75828f9ca8b5baada194877a6f6f6f74818e99a398928d847e78716f6f6f6a60544a443f382f2c241a0e040000000613202d394653606c777f7f7f7f828f9ca9b6b9b1b1b4aeacababababababababacaeb4b1b5b7aea194877b7676767683909da9b3bcc5c7bdb5afaca6a6a6a6a6a6a6a6a6a6a6acafb6bec7baada094877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1b27323d4754606a75828f9ca6b0bbc7d3c6b9ada093867a6d60535f6b7885929eabb8c5c9beb2a9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea1a8b2bdc9c6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c6676828f959494939992929291919090908f8f8e8e8e8d8d8c8c8c8b8b8b8a8a89898988888887878786868686858585848484838383828490959fa49f928d81786d675d5145392c201306000000000815212e3b4854616e7b8797a1acaeb4b7b9bdc4c5c8ced5d6cbc0b6aea9a7a09d9995918c80737784909daab7c3c5bbb3adabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaeb4bcc5c5b8ab9e9285786b5f5245382c1f1200000000000000020f1c2835424f5b6875828e9ba8b5c1bdb1a4978a7e71646e7a7c7c7c7c7d838f9c998d807c7c7c7c7c7c7c7c7c82909ca9b6bdb0a3968a7d7c7c7c7c7e86929f9285807d7c7c7c7c7c7c6f6256493c332d261d1a1108000000000713202d3a4653606d79868c8c8c8f949fabaeaca4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a9aab0aa9d90838383827683909da9b6c3ced0c7c0bbb9b3b2b2b2b2b2b2b2b2b2b3b9bbc0c7d0baada094877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b37434e58626f7c89949fabb7c3cdc6b9ada093867a6d60535f6b7885929eabb8c5c6b9ada197919191919191919191919191919191919191919191919196a1adb9c5c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929fa1a0a0a39f9f9e9e9e9d9d9c9c9c9b9b9a9a9a9999989898979797969695959594949493939399929292919191919090908f91969fa7afa49d938e82796d6054473a2d211407000000000a1724313d4a5764707d8a979c9fa2aaaaacb2b7b8bdc3ccd5d2c8c0bab5b1abaaa7a0988b7f727784909daab7c3cdc5bebab8b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8babec5cec5b8ab9e9285786b5f5245382c1f1200000000000000010e1b2834414e5b6774818e9aa7b4c1beb1a4988b7e7165727f89898989898f949f9c928d89898989898989898990949fabb7beb1a59a8f8a898989898a9299a398928d89898989898986796c60534639221c140b0800000000000713202d3a4653606d79869399999c9fa6aaa39f97979797979797979797979797979797979c9ea6aca095909090867983909da9b6c2c2c2c2c2c2c2bfbfbfbfbfbfbfbfbfbfbfc2c2c2c2c2baada094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323c4754606a76828f9ca7b1bcc8c6b9ada093867a6d60535f6b7885929eabb8c5c4b8ab9e918484848484848484848484848484848484848484848484919eabb8c4c6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8998a2aeadb5aeacabababaaaaa9a9a9a8a8a8a7a7a6a6a6a5a5a4a4a4a3a3a3a2a2a1a1a1a0a0a0a0a39f9f9f9e9e9e9d9d9d9c9c9ea0a8b1bbaea59e948f8376695d5043362a1d10030000000d192633404c5966737f888b8f92989a9ea0a8aaacb2bac3ced9d2cbc5c3bcb8b6b1a4978b7e717784909daab7c3d0cfcac6c5c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c5c6cad0d1c5b8ab9e9285786b5f5245382c1f1200000000000000010e1b2734414e5a6774818d9aa7b4c0beb1a5988b7e7265727f8b959595969c9fa6a49c999595959595959595959c9fa6b0bcbeb6aba19a9695959595979fa3aaa39f9a96959595959386796c605346392d200a020000000000000713202d3a4653606d798693a0a6a9abaea398928b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f949eaaa7a09d9d92867983909da9b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ada094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e5863707d8995a0abb8c4cfbaada194877b6e61535f6b7885929eabb8c5bbafa295887c7878787878787878787878787878787878787878787b8794a1aebac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a5466727f8c99aaa8aaabadb3b3b7b7b7b7b6b6b5b5b5b4b5aba39f9d9d9e9e9fa2aaa1a1a2a3a3a4a5a5a6a7a7a8a9a9aaababaaaaaaa9a9a9aaacb2bbaea59e9590847c6f6255483c2f221509000000000613202d394653606c777c7f8285898d9196999da0a8b2bdc8d4dcd6d1cdc8c4bdb0a3978a7d707784909daab7c3cdc5beb9b8b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8babec5cdc5b8ab9e9285786b5f5245382c1f1200000000000000010e1a2734414d5a6774808d9aa7b3c0beb2a5988b7f7265727f8b98a2a2a2a9abb0aea8a6a2a2a2a2a2a2a2a2a2a9abb0b2b2b2b2b2aba5a3a2a2a2a2a3acafb4aeaca7a2a2a2a29f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb6b9ac9f92867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e828f9ca9b1acaa9f92867983909da9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a094877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323d4854606b7783909da8b2bdc9bfb2a5998c7f72655b5f6b7885929eabb8c5bbafa295887c6f6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6e7b8794a1aebac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c6676828f999a9c9d9fa2a9a7aaacb1b5b9babfc2c1bbaea39992909091919298939495959697979899999a9b9b9c9d9d9e9fa3abb5b6b6b5b7b9b5afa49d938f837a6f6a5f53473a2e2115080000000005121f2b3744505b656c6f7275797d8084888c9196a0acb8c5d1d2cbc5c1c0c1bcafa296897c6f7784909daab7c3c5bbb3adabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabadb3bbc5c5b8ab9e9285786b5f5245382c1f1200000000000000000d1a2733404d5a6673808d99a6b3c0bfb2a5988c7f7265727f8b98a5afafb6b7b7afaaa8a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5acaeb4b3afafafac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9b8ac9f92857971717171717171717171717171717173808d9aa6b3b9ac9f92867983909c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c94877a6d6154473a2e21140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16202c38444f5964717e8a96a1adb9c6c4b7aa9e9184786c605f6b7885929eabb8c5bbafa295887c6f625e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e616e7b8794a1aebac6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79868b8c8e8f909297979a9da0a7a8acaeb4b9bab9ac9f928683838485858687878889898a8b8b8c8d8d8e8e8f9090919299a3afbbc3c2bcb3aba39f928d81796e685f584e43372b1f120600000000030f1b27333f49535b606265676d7074777b7f84919daab7c4d0c8c0b9b5b3b4b8aea295887b6f7784909daab7c3beb3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa2a9b3bec5b8ab9e9285786b5f5245382c1f1200000000000000000d1a2633404d596673808c99a6b3bfbfb2a5998c7f7266727f8b98a5b2bcc2baafa59e9b9898989898989898989898989898989898989898989898989898989fa2aab4bfbcb9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9b8ac9f92857975757575757575757575757575757575808d9aa6b3b9ac9f928679838f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f877a6d6154473a30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d4653606d7984919eaab4bfc5b9aca096897d7063566b7885929eabb8c5bbafa295887c6f625551515151515151515151515151515154616e7b8794a1aebac6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d797d7e7f81828485878a8d9095989c9fa3abacaeb4aea3999287827f7c79787a7a7b7c7c7d7e7e7f808081828283848487929facb9c2bab2a9a299928b80786d675e564e463c31261b0f0300000000000b17222d384149505355555c6063676a6e73808c99a6b3bfcbc0b6aea9a7a7abadab94877b6e7784909daab7c3b9ada1979290909090909090909090909090909090909090909297a2adbac5b8ab9e9285786b5f5245382c1f1200000000000000000d1a2633404d596673808c99a6b3bfbfb2a6998c7f7366727f8b98a5b2bec2b6aa9e938e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9298a2aebac7b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9b9ac9f9287818181818181818181818181818181818183919daab7b9ac9f9286798082828282828282828282828282828282828282828282828282828282828282827a6d60544a42382e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b161f2c3844505c66737f8c98a3aebac7bdb2a89b8e8275685d6b7885929eabb8c5bbafa295887c6f625552525252525252525252525252525254616e7b8794a1aebac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c676d707173747577787a7d8084878b8f92999c9fa3abacaba39992908c8884817d7975717070717272737474757676777e86929facb9bbb0a8a09792877f736c665d554d443c342a20150a00000000000006111b262f383f4446484b515356585f6673808c99a6b3bfc5b9aea49d9a9b9fa2a399867a6d7784909daab7c3b8ab9e9285848484848484848484848484848484848484848485929fabb8c5b8ab9e9285786b5f5245382c1f1200000000000000000d192633404c5966737f8c99a6b2bfbfb2a6998c7f7366727f8b98a5b2bec1b4a89b8e817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f86929facb8c5b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9bbafa399928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9195a0acb8b9ac9f92867974767676767d7e76767676767676767676767676767676767676767676767676766d67605c544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616d7a86929facb8c3c4b9ac9f92867a6d606b7885929eabb8c5bbafa295887c6f625f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f616e7b8794a1aebac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b555d686d6f6e6d666b696e7074777b7e82868a8f92999c9fa4aba39f9c9996918d8a85827e7a75716d67666768686e737f8b9299a3afb6afa69f9691857d726d605b544b433b322a22180e03000000000000000a141d262d3337393c4045464a4e596673808c99a6b3bfc1b5a99d928d8e92979b928679677784909daab7c0b3a69a8d807777777777777777777777777777777777777777818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000d192633404c5966737f8c99a6b2bfbfb3a6998c807366727f8b98a5b2bebeb1a4978b7e72727272727272727272727272727272727272727272727272727885929fabb8c5b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9c0b5aba39f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9da0a7b1bcb9ac9f9286796c686e788087877e716a6969696969696969696969666d7072747575757575757575756d665c5044382b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3846525e6874818e9aa7b1bcc7baaea3988b7e71656b7885929eabb8c5bbafa295887c6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6e7b8794a1aebac6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3a4754606d7a7c7a79787877767574737272757a7e82868b8f939aa4afaca9a8a19e9a98928e8a86827e7a75716d676673808c92999ea5abaca49f948f847c706b625b504a42393129201810060000000000000000020b141b22272b2d2e34383a404d596673808c99a6b3bfc0b3a79a8d8081858a8e9285786b7784909daab7c0b3a69a8d80736a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a74818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bebeb1a4978b7e77777777777777777777777777777777777777777777777777777885929fabb8c5b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9c7bdb5afaca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8aaacb1b9c3b9ac9f9286796b6f7a828c9392867c6f675d5c5c5c5c5c5c59616c70787d7f81828282828282828281786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36414c56626f7c8895a0abb8c6bfb4aa9c908376696b7885929eabb8c5bbafa295887c7979797979797979797979797979797979797979797b8794a1aebac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071724313d4a5764707d898786858483838281807f7e7d7d7c7b7b7e8387939facb9b6b2adabaaa29f9b98928f8b86827e7974706d7a80868e939d9fa39a938c827a6e6a605951443f382f271f170e0600000000000000000000020a11171b1f2023282c33404d596673808c99a6b3bfbdb0a4978a7d74797d818584776b7784909daab7c0b3a69a8d8073675d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec4b7ab9e918483848484848484848484848484848484848484848484848484848387939facb9c6b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb4b9c0c0bbb9b4b4b4b2b1b1b4b4b4b4b4b4b4b1b1b4b4b7b8bcc3beb9ac9f928679727d858f949f989184796d60584e4f4f4f55616b707e84898c8e8e8f8f8f8f8f8f8f887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303a47535f6a7783909daab4bfc6b9ac9f93877b6e6b7885929eabb8c5c5b8ac9f928685858585858585858585858585858585858585858586929facb8c5c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9a939291908f8e8e8d8c8b8a89888888878586929facb8c3bdb9b8b4aeacaaa39f9c98928f8a85817d7873737b8189909598928880786d685f584f473f332d261d150d05000000000000000000000000030b12181c1f20292933404d596673808c99a6b3bfbdb0a4978a7d716d7075797d6f6a7784909daab7c0b3a69a8d8073675a51515151515151515151515151515b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec5b9ada196919090909090909090909090909090909090909090909090909090909399a4afbbc7b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0a6a8aeb6c0c7bfb5ada8a6a5a5aaacb1b9b5ada7a5a5a8aab0b8c1beb5acac9f9286777f8791979fa6a0968e81746a5f5447424d5763707d889196999a9b9b9b9b9b9b9b96897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2b37434e5865727f8b98a3aebac7bbafa49a8b7f726b7885929eabb8c5c7baaea298929292929292929292929292929292929292929292929298a2aebac6c6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1b2734414e5a6774818d9a9f9f9e9d9c9b9a999998979695949993929298a2aeb8b8b9bbc0bfbab8b4aeacaaa39f9b98928e8984807b76757c838a90867e736c665e564e463d3528221c1415130f0a04000000000000000000030d151d23292c2d363636404d596673808c99a6b3bfbdb0a4978a7d716463676d6f6b6a7784909daab7c0b3a69a8d8073675a4d4444444444444444444444444e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec9bdb2a8a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa4abb5c0ccb9ac9f9386796c605346392d2013060000000000000713202d3a4653606d79869398999ca4aeb9c4b8ada39c9998989da0a7b1ada39b98989b9ea6b0bbb7aca39b989387828c9299a1a9b0a89d93887c6f62574d47535f697783909aa1a8a7a8a8a8a8a8a8a5988b7e7265584b3f32251806000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b26323c4754606d7a86929facb8c5c0b6ac9c8f8376687885929eabb8c5cabfb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2aab4bfcac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f2834404a546976828f9ca9ababaaa9a8a7a6a5a5a4a3a2aba49f9f9fa2aaaaababacafb5aeaeafafb0b1b4aeacaaa29f9b96918d88837e7a767d837c716c605b544c443c332b24242423221f1b160f0700000000000000010b151f272f34383a434343434d596673808c99a6b3bfbdb0a4978a7d7164555d6063606a7784909daab7c0b3a69a8d8073675a4d4037373737373737373737414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2becabfb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2a9b3bcc5d0b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d79868b8b8d929ca8b4c0b4a89c918c8b8b9195a0aca79b918b8b8f939eaab6b3a79b918b8b8d8f949fa3abb2baafa59b8f8275695f534855616e7b8895a0acb2b4b5b5b5b5b5b3a69a8d8073675a4d402d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c3945525d6875818e9ba9b3bec5b9ac9f92867a6d7885929eabb8c5d0c6bcb4aeacacacacacacacacacacacacacacacacacacacacacacacaeb4bcc6d0c6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921272c2f3844515c667784919d9fa3ababadb3b4b3b2b1b0b0afb5afa9a29f9c9d9e9e9f9fa4a0a1a2a2a3a3a4a4a5a7acaeaca9a19e9a94908b85807b76706c65605c544a3f3431313131312f2e2b272019100700000000000007121d2731394045474f4f4f4f4f596673808c99a6b3bfbdb0a4978a7d7164575153565d6a7784909daab7c0b3a69a8d8073675a4d40342a2a2a2a2a2a2a2a35414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec7baaea2989292929292929292929292929292929292929292929292929292929297a2a9b3becab9ac9f9386796c605346392d2013060000000000000613202d394653606c777f7e7e808d99a6b3bfb2a6998c7f7e7e83919daaa5988b7f7e818f9ba8b5b1a5988b7f7e818d939ea8b2bdc0b6aa9e93887b6e61554a5764717d8a97a7b1bec1c1c2c2c2bdb5a89b8f82756853493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5663707d8997a2adb9c6bbafa3998b7e717885929eabb8c5cecec6bfbab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8babfc6cecec6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32383b3c4653606d79868f9092999a9fa2a9acafb5b9bebcbbbaada29792909091919293999494959596969798989a9fa3aaadadaba69f9c97928d87827d78716d665c50443e3e3e3e3e3e3c3b38322b22190f0400000000000c18232f39434b51535c5c5c5c5c5c6673808c99a6b3bfbdb0a4978a7d71645c5c5c5c5d6a7784909daab7c0b3a69a8d8073675a4d40342d2d2d2d2d2d2d2d35414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec5b8ac9f92868585858585858585858585858585858585858585858585858585858997a2adbac6b9ac9f9386796c605346392d20130600000000000005121f2b3744505b656c7272727c8895a2afbaaea194877b7276828f9ca9a0938679737f8c99a6b2ac9f9386797275818e96a1acb9c2bbb0a6988b7f7265584c5865727f8b98a5b2beccc4bdb9b8b1afaa9d908477655b5044372b1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4653606d7985929eabb8c5c0b5ab9b8f82757885929eabb8c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b343d4348494b54606d7a808284868a8e92979c9fa3abadb3bbc2b8ab9f92858283848585868687878889898a8a8b8b8e92989ea1a9acb0aba9a29f9a938f8a837e786d60534b4b4b4b4b4b4b4947433d342b20160a0000000004101c2934404b555c606969696969696973808c99a6b3bfbdb0a4978a7d716969696969606a7784909daab7c0b3a69a8d8073675a4d403a3a3a3a3a3a3a3a3a3a414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bebeb1a4978b7e78787878787878787878787878787878787878787878787878787885929fabb8c5b9ac9f9386796c605346392d201306000000000000030f1b27333f49535b6065656f7c8895a2afbaaea194877b6e76828f9ca9a0938679737f8c99a6b2ac9f9386796c6d7a84919ea6b0bbc1b5a99c8f827669564c5966737f8c99a6b2bfc4bab2adaba4a2a29f9285796c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2c3844515c6674818e9aa9b3bec2b8ab9f9285797885929eabb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464f545657575d686d7475777a7d81858a8f92999ea1a9b0b8baada29791847f7b7878797a7a7b7b7c7c7d7e7e7f81868c92979da0a8afb3adaca49f9c95908a8174675b5757575757575756544e463d32271b0f0300000006131f2c3845515c676d7676767676767676808c99a6b3bfbdb0a4978a7e7676767676766d677784909daab7c0b3a69a8d8073675a4d4747474747474747474747474e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bebeb1a4978b7e716f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7885929fabb8c5b9ac9f9386796c605346392d201306000000000000000b17222d384149505358626f7c8895a2afbaaea194877b6e76828f9ca9a0938679737f8c99a6b2ac9f9386796c68707d8a949fabb7c5b8ab9e928578685d52596673808c99a6b3bfbdb2a8a19e9795959598877b6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a5463707d8997a2adb8b5b1aca298897c7885929ea8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f59606364646464646768676d7074797d82878d92979fa6b0bbb3a9a096918c87827d79726d6e6f6f7070717172747a80858b91969fa3abb5b0a69e948f857e776c6464646464646464646260584e43382b1f13060000000714202d3a4753606d79828282828282828284919eaab7c4c3b6aa9d9083828282828282796d7784909daab7c0b3a69a8d8073675a54545454545454545454545454545b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bebfb3a6998c807c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c86929facb8c5b9ac9f9386796c605346392d2013060000000000000006111b262f383f444955626f7c8895a2afbaaea194877b7376828f9ca9a0938679737f8c99a6b2ac9f9386796c616b76828f9cabb4bfb9ada197877a6d6054596673808c99a6b3bfb9ada196918a89888888887c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3a4653606d7985929fababa8a7a09d998d807885929b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b93867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b6f71717171717171717171717171757b80858f949fabb7bbb2a8a09e99938f8a847f7a7471717171717171717173797e848e9299a3afaa9e948f827b7271717171717171717171716f6a6054473b2e2215080000000714202d3a4753606d7a868f8f8f8f8f8f8f9196a0acb9c5c4b8aca095908f8f8f8f8f877a6d7784909daab7c0b3a69a8d807367606060606060606060606060606060606874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec1b4a89c928c8888888888888888888888888888888888888888888888888888889298a2aebac6b9ac9f9386796c605346392d20130600000000000000000a141d262d333c4955626f7c8895a2afbbb3a79a8d80808084919eaaa0938679737f8c99a6b2ac9f9386796c5963707d8a99a3aebabeb3a995887b6e6255596673808c99a6b3bfb8ab9e91847e7c7c7c7c7c7a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121f2c3844515c6675828e9ba29f9b9895908d898378858f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e838f9ca9b6c2bab2acaba49f9c96918c86817e7e7e7e7e7e7e7e7e7e7e7e7e8286929faca89c8f827e7e7e7e7e7e7e7e7e7e7e7e7e7e7c6f6256493c2f2316090000000714202d3a4753606d7a86939c9c9c9c9c9c9ea0a8b2bdc9c8bcb1a7a09d9c9c9c9c93877a6d7784909daab7c0b3a69a8d80736d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d74818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bcbcb9ada49c999595959595959595959595959595959595959595959595959595959fa2aab4bfbcb9ac9f9386796c605346392d2013060000000000000000020b141b222f3c4955626f7c8895a2afbbb5a99d928d8c8c9196a0aca0938679737f8c99a6b2ac9f9386796c60606d7986929facb9bcafa295897c6f6256596673808c99a6b3bfb2a5988c7f726f6f6f6f6f6d685d5245392c201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a5465717e8b9898928f8b8784807d7974818282828282828282828282828282828282828282828282828282828282828282828282828282828282828281796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b8f949fabb7c4c3bdb8b5afaca8a19e98928e8a8a8a8a8a8a8a8a8a8a8a8a8b8e9299a3afaa9e948f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0a9a9a9a9a9aaacb2bac4cecdc3b9b1acaaa9a9a9a093877a6d7784909daab7c0b3a79a8d807a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a818e9ba8b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b0b0b0b0b0ada8a6a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2acaeb4b0b0b0b0ac9f9386796c605346392d201008000000000000000000020a16222f3c4955626f7c8895a2afbbb9aea49d9a99999ea0a8b2a0938679737f8c99a6b2ac9f9386796c605d677784909daab7bcb0a396897d706356596673808c99a6b3bdb0a4978a7d716462626262605d564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3b4854616e7b878d8985827e7b7773706d6f7475757575757575757575757575757575757575757575757575757575757575757575757575757575757575756d675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e979797979797979797979797979797989c9fa6b0bbc7cec8c7c0bbb9b2adaaa39f9a979797979797979797979797979b9fa3abb5b0a69e9c979797979797979797979797978e8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0adb5b5b5b5b7b9bdc4ccd6d5cbc3bcb8b6b5b5ada093877a6d7784909daab7c3b5a99d928d87878787878787878787878787878787878787878e939eaab6c5b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a3a3a3a3a3a3a3a3a3a3a3a3a3a4acafb6afafafafafafb1acaaa3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39f9386796c6053463928221a11080000000000000000000916222f3c4955626f7c8895a2afbbc0b6aea9a7a6a6aaaaaaaaa0938679737f8c99a6b2ac9f9386796c60556875828f9ba8b5bdb0a3968a7d706357596673808c99a6b3bdb0a3978a7d70645755555554524c443a3024190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e697581807c7975716e6967636065686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868605c554b4034291c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a9abb0b8bbbbbbbbbbbbbbbbbdb9b4aeaca7a4a4a4a4a4a4a4a4a4a4a4a4a4a8acafb5bdb8b0aaa8a4a4a4a4a4a4a4a4a4a4a4a49a8e8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0adb9c2c2c2c4c5c9ced6deddd5cdc8c4c3c2baada093877a6d7784909daab7c3b9aea49d9a93939393939393939393939393939393939393939b9ea5afbac5b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b9696969696969696969696969696979fa4acb6c0bbbbbcb1a7a09d969696969696969696969696969696969696969386796c60534639332c231a100500000000000000000916222f3c4955626f7c8895a2afbbbdb2a8a09d9d9d9d9d9d9d9d938679737f8c99a6b2ac9f9386796c605b6774818e9aa7b4bdb0a3968a7d706357596673808c99a6b3bdb0a3978a7d7064574a49494745413a32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57656f7573706d6665615e575653595b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c53514b43392f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba8aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb1b2b7bab8b4b1b1b1b1b1b1b1aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea79a8e8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0adb9bcbcbcc1c2c6cbd2dbdad1cac4c0bfbcbaada093877a6d7784909daab7c3c0b6aea9a7a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a8aaafb7c1c5b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8989898989898989898989898989898a939aa4afbbc8c4b8aca09590898989898989898989898989898989898989898986796c605349443e352c22170b00000000000000000916222f3c4955626f7c8895a2afbbb8aca0969190909090909090908679737f8c99a6b2ac9f9386796c605a6773808d9aa6b3bdb0a3968a7d706360606673808c99a6b3bdb0a3978a7d7064574a3d3c3a3935302820160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b45545d65686663605c5454524d49464d4e4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4745403931271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a4a6acb4bec1bdbdbdb6aea8a6a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19a8e8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0adafafafafb4b6bac1c9d2d1c8bfb8b4b2afafada093877a6d7784909daab7c3c8c0b9b5b3adadadadadadadadadadadadadadadadadadadadb4b6bac1c9c5b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c8073666e7b7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e88939facb9c6c3b6aa9d90837d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d706357575550473e33281c1004000000000000000916222f3c4955626f7c8895a2afbbb7aa9d918484848484848484848378737f8c99a6b2ac9f9386796c605a6673808d99a6b3bdb0a3968a7d706d6d6d6d73808c99a6b3bdb0a3978a7d7064574a3d312d2c29241e160e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2933424b54595c5a5653514a4846423d3a404142424242424242424242424242424242424242424242424242424242424242424242424242424242424242423a38342f271f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e95959595959595959595959595959595959595959595959595959595979aa2acb7bcbdbdb9aea49c99959595959595959595959595959595959595959595959595959595958e8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0a2a2a2a2a2a7a9afb7c1cbcabfb5ada8a6a2a2a2a093877a6d7784909daab7c3d0cbc5c1c0babababababababababababababababababababac1c2c6cbd0c5b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366696e70707070707070707070707070707076828f9cabb5c0c5b9ac9f92867a70707070707070707070707070707070707070706b646464615a5044392d201408000000000000000916222f3c4955626f7c8895a2afbaaea194877b7777777777777777776d737f8c99a6b2ac9f9386796c60596673808c99a6b3bdb0a3978a7e797a7a7a7a79808c99a6b3bdb0a3978a7d7064574a3d3124201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d1721303942494d4f4d494644403b3a36302d343535353535353535353535353535353535353535353535353535353535353535353535353535353535353535352d2c29231d150d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b68758188888888888888888888888888888888888888888888888888888888888a909aa6afafb0b1b1a89c928c88888888888888888888888888888888888888888888888888888888888174675b4e4134281b0e0100000714202d3a4753606d7a86939696969696969b9ea5afbac6c4b8ada39c999696969693877a6d7784909daab7c3c3c3c3c3c3c3c5c7cbd1c6c6c6c6c6cfcac6c5c3c3c3c3c3c3c3c3c3c3c3c3b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c8073717171717171717171717171717171717171717e8a99a4afbbc7bbafa3998b7f7271717171717171717171717171717171717171717171706c6155493c3023160a000000000000000916222f3c4955626f7c8895a2afbaaea194877b6e6c6c6c6c6c6c6c6c6c737f8c99a6b2ac9f9386796c60596673808c99a6b3bfb2a69a908a8686868686868c929ca8b4bdb0a3978a7d7064574a3d312417110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1e2730373d4142403d3a38342e2d2a252027282929292929292929292929292929292929292929292929292929292929292929292929292929292929292929201f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7e8a97a1a2a3a3a4a4a8998c807b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a6e6154473b2e2114080000000714202d3a4753606d7a86898989898989898e939ea9b6c2c0b4a89c918c8989898989877a6d7784909daab6b6b6b6b6b6b6b6b9bbc0c7cfd9d3d7cdc5bebab8b6b6b6b6b6b6b6b6b6b6b6b6b6ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfc2b5a89b8f817e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e87939facb9c6c0b5ab9d90837e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7064574a3d3124170a000000000000000916222f3c4955626f7c8895a2afbaaea194877b79797979797979797979797f8c99a6b2ac9f9386796c60596673808c99a6b3bfb6aca29a97939393939393999ca4aeb9bdb0a3978a7d7064574a3d3124170a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c151e262c31343533302d2c2823201e1a131a1b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e71767676767676767676756e73808c949595969697989896887b6e6e74767676767676767676746e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685e5246392d201b100400000613202d394653606c787c7c7c7c7c7c7c7c818e9ba7b4c1bfb2a6998c7f7c7c7c7c7c7c786d7784909da9a9a9a9a9a9a9a9a9acafb5bdc7d1dbcfc5bbb3adaba9a9a9a9a9a9a9a9a9a9a9a9a9a99e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfc3b6aa9e938f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b9399a4afbbc7c7b8aca095908a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a84776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2afbbafa3978d8786868686868686868686868c919ca8b4ac9f9386796c60596673808c99a6b3bfbdb4aca6a3a0a0a0a0a0a0a6a8aeb6bfbdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b212528292723201f1c1814120e090e0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2b36404a52565e61626262626262626262626262626265717f8283838383838383838275768287878889898a8a8b8b8c84786a74818383838383838383838174686262626262626262626262626262615e56544b42372c211509000006121f2b3844505b666c6f6f6f6f6f6f6f73808c99a6b3bfbdb0a4978a7d716f6f6f6f6f6d667784909d9d9d9d9d9d9d9d9d9d9fa3abb5c0cbd6cabeb3a9a29f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfc6bbafa59e9b9797979797979797979797979797979797979797989fa4abb5c0ccc8bcb1a7a09d979797979797979797979797979797979797979797979184776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2afbbb4a99f97949393939393939393939393999ca3adb8ac9f9386796c60596673808c99a6b3bfc6bdb6b2b0adadadadadadb3b4b9bfc8bdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002091015191b1c1a161312100c0705020001020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1723303c47525c64676b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b73808d8f8f8f8f8f8f8f8f85796d797a7b7b7c7c7d7e7e7f7f7e716b77848f8f8f8f8f8f8f8f8f84776b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b68655d54493d3125190c0000030f1c28333f4a545b606363636363636673808c99a6b3bfbdb0a4978a7d716463636363606a778490909090909090909090909299a3afbbc7d3c6baada297929090909090909090909090909090909085786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfccc1b8afaaa8a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4acafb5bdc7d2cec3b9b1acaaa4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49e9184776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2afbbbbb1a9a3a19f9f9f9f9f9f9f9f9f9f9fa6a8adb5b9ac9f9386796c60596673808c99a6b3bfc0c0c0c0bdb9b9b9b9b9b9bfc0c0c0c0bdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0e0f0d0a070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1926333f4c58646e747878787878787878787878787878787878808d9a9c9c9c9c9c9c9286797878787878787878787878787878787884919c9c9c9c9c9c9c91847878787878787878787878787878787878756f655a4d4134281b0f0000000b17222d38424a50535656565656596673808c99a6b3bfbdb0a4978a7d7164575656565b687581838383838383838383838387929facb9c5d2c5b8ab9f9285838383838383838383838383838383838276695c4f4336291c1000000000000000000c1926333f4c5966727f8c99a5b2bfc1c1c1bbb6b5b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b9bbc0c1c1c1c1c1c1bcb8b7b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1aa9e9184776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2afbbbebbb4afaeacacacacacacacacacacacb2b4b8beb9ac9f9386796c60596673808c99a6b3b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a677480858585858585858585858585858585858586929fa9a9a9a9a9a29889858585858585858585858585858585858587939fa9a9a9a9a99f938785858585858585858585858585858585858275685c4f4235291c0f00000006111c262f383f4446494949494d596673808c99a6b3bfbdb0a4978a7d7164574a494959656f75767676767676767676767682909ca9b6c3cfc4b7ab9e9184787676767676767676767676767676767670665a4e4135281c0f00000000000000000c1926333f4c5966727f8c99a5b2b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5aa9e9184776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2afb1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1ac9f9386796c60596673808c99a6a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d101013131313131313131313130c0c0a06020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060708080808080808080807060401000000000000000000000000000105050505050505050500000000000000000000000000000e1b2834414e5b6774818e929292929292929292929292929292929298a2aeb6b6b6b4aaa19792929292929292929292929292929292929399a4afb6b6b6afa49993929292929292929292929292929292928f8276695c504336291d10000000000a141d262d3338393c3c3c404d596673808c99a6b3bfbdb0a4978a7d7164574a3e48535d65686a6a6a6a6a6a6a6a6a6a727f8c99a9b3bec9c5b9aca196887c6f6a6a6a6a6a6a6a6a6a6a6a6a6a6a69665e54493d3225190d00000000000000000c1926333f4c5966727f8c99a5a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89e9184776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49f9386796c60596673808c999a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1c1d2020202020202020202020191816120d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090c0c0c0c0c0c0c0a090704000000000001070c1013141515151515151515151413110d07010000000000000003070b0d0e12121212121212121209090703000000000000000000000e1b2834414e5b6774818e9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2aab4bfc2c2bcb3a9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa4abb5c0c2c0b5aba49f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9c8f8376695c504336291d1000000000020b141c22282b2d303033404d596673808c99a6b3bfbdb0a4978a7d7164574a3e414b53595b5d5d5d5d5d5d5d5d5d626f7c8897a1adb9c6c9bdb2a8998c7f7366565d5d5d5d5d5d5d5d5d5d5d5d5c5a544c42382c21150900000000000000000c1926333f4c5966727f8c999b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9184776b5e5144382b1e11050000000000000916222f3c4955626f7c889598989898989898989898989898989898989898989898989898989386796c60596673808c8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151c2226292a2d2d2d2d2d2d2d2d2d2d2d2625221e18120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13151619191919191919171614100b050000030b12181d1f2021212121212121212121201d18130c040000000001080e13171a1a1f1f1f1f1f1f1f1f1f1615130f0a0400000000000000000e1b2834414e5b6774818e9aa7ababababababababababababababacaeb4bcc6d0cec5bbb3adabababababababababababababababababacafb5bdc7d2c7bdb5afacababababababababababababababa99c8f8376695c504336291d100000000000020a11171c1f20232633404d596673808c99a6b3bfbdb0a4978a7d7164574a3e3941484d4e505050505050505053606c7885929eabb8c5c7c3b6a99d908376685e5250505050505050505050504f4e49423a30261b100500000000000000000c1926333f4c5966727f8c8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776b5e5144382b1e11050000000000000916222f3c4955626f7c888b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b86796c605763707d81818181818181818181818181818181818181818181818181817c6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f272d323637393939393939393939393933322f2a231c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f151b1f2223252525252525252323201c161008030d151d24292c2d2e2e2e2e2e2e2e2e2e2d2c29241d160d0c0c0c0c0c13191f2426272b2b2b2b2b2b2b2b2b23221f1b160f07000000000000000e1b2834414e5b6774818e9aa7aaaaaaaaaaaaaaaaaaaaaaaaaaaaabadb3bbc5cfc7bdb5afacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaeb4bdc6d1c6bdb4aeacaaaaaaaaaaaaaaaaaaaaaaaaaaaaa99c8f8376695c504336291d1000000000000000060b0f12131a2633404d596673808c99a6b3b8b8b0a4978a7d7164574a3e31373d40424343434343434344505b6575818e9ba8b4bfbab9b7ac9f93877a6e6154474343434343434343434343413d3830281e140a0000000000000000000a1724313d4a5764707e818282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828074675a4d4134271a0e010000000000000714212e3a4754616d7a7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e71655855616b7074747474747474747474747474747474747474747474747474746f6a5f53473b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2831383e424346464646464646464646463f3e3a352e251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272b2e2f32323232323232302f2c27211a110b151f272f35393a3b3b3b3b3b3b3b3b3b3a39352f281f1619191919191d242b303334383838383838383838302f2c27211910070000000000000e1b2834414e5b6774818e9a9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9ea1a9b3bec9c0b5aba49f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb4bfcbbfb4aba39f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9c8f8376695c504336291d1000000000000000000003060d1a2633404d596673808c99a6ababababa4978a7d7164574a3e312c313435373737373737333f495365717e8b98a8b2b4aeacaaa8a49a8b7e7164584b3e3737373737373737373635322c261e160c020000000000000000000a1623303c4955616c7075757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575746e64584c3f33261a0d000000000000000713202d3946525e686d7171717171717171717171717171717171717171717171717171717171716c62564f5961636767676767676767676767676767676767676767676767676767625f584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27313a434a4e5053535353535353535353534c4b463f372e23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32373b3c3f3f3f3f3f3f3f3d3c38332c231a121d2731394045474848484848484848484745413a3128262626262626262f363c3f414545454545454545453c3b38322b22190f0400000000000e1b2834414e5b6774818e909090909090909090909090909090909297a1adb9bfbbafa4999390909090909090909090909090909090909299a3aebabfbaaea39992909090909090909090909090909090908f8376695c504336291d1000000000000000000000000d1a2633404d596673808c999e9e9e9e9e9e978a7d7164574a3e31242427282a2a2a2a2a222d3b4855616e7b8896a1a6aba39f9d9b99978e8175685b4f42352a2a2a2a2a2a2a2a292825211b140c04000000000000000000000814202d39444f5961646868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867645c52473c3023170b0000000000000005111d2a36414c565e61656565656565656565656565656565656565656565656565656565656565625a50474f55575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e463c32261b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d38434d555b5d6060606060606060606060595751493f352a1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b343d4347494c4c4c4c4c4c4c4a48443d352c2118242f39434b515354545454545454545454514b433a2f323232323232323840474c4d5252525252525252524948433d342b21160a00000000000d192633404c5966737f838484848484848484848484848484848385929eabb3b3b3ac9f9387838484848484848484848484848484848387929facb3b3b3ac9f928783848484848484848484848484848484838174675b4e4134281b0e00000000000000000000000d1a2633404d596673808c92929292929292928a7d7164574a3e3124171b1b1d1d1d1d1d212d3a46535f697884919b99979992908e8c8a8884786b5e5145382b1e1d1d1d1d1d1d1c1c1915100a02000000000000000000000004101c28333e474f55575b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a58524a40362b1f130700000000000000010d1925303a444c52545858585858585858585858585858585858585858585858585858585858585650483f44484a4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4847433c342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a26323e4a555f666a6c6c6c6c6c6c6c6c6c6c6c66635b51463a2f22160a000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e54565858585858585856554f473d33271d2935404b555d60616161616161616161605d554b413f3f3f3f3f3f3f3f404a52585a5e5e5e5e5e5e5e5e5e56544f463d32271b0f03000000000c1925323e4b57636d737777777777777777777777777777777777808d9aa6a6a6a6a69f9286797777777777777777777777777777777784919ea6a6a6a6a69e91847777777777777777777777777777777777746f64594c4033271a0d00000000000000000000000c1926333f4c5966727f858585858585858585857d7063574a3d3024170a0f10101010121e2a36424d576875818e8e8c8a888684817f7d7b786c605346392d2013101010101010100f0d090500000000000000000000000000000b17212c353e44494a4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d4c4740382f24190e03000000000000000008131e28323a4146474b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a453f36383c3d41414141414141414141414141414141414141414141414141413c3b37322a22180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936424e5b6671767979797979797979797979726d63574b3e3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e586062656565656565656361594f44382c1f2c3945515d676d6e6e6e6e6e6e6e6e6e6d675d514c4c4c4c4c4c4c4c4c4c525c64676b6b6b6b6b6b6b6b6b6360594f43382c1f1307000000000a16232f3b46515b63666a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a73808d999999999999999285796c6a6a6a6a6a6a6a6a6a6a6a6a6a6b778491999999999999999184776b6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a67645d53483c3024180b00000000000000000000000c1825323e4b57636d7278787878787878787878706b6155483c2f23160a02040404020e1a26313e4b5865717f8482807d7b79777572706e6c655b5044372b1f120504040404040302000000000000000000000000000000000005101a232c33393c3d42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242413f3c362f261d1208000000000000000000020c1620283036393a3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d3a342d2c2f3034343434343434343434343434343434343434343434343434342f2e2b2620181006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a768386868686868686868686867f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a6f72727272727272706b6155483c2f202d3a4753606d797b7b7b7b7b7b7b7b7b796d60595959595959595959595959646e747878787878787878786f6b6054483b2f2215090000000006121e2a3540495157595d5d5d5d5d5d5d5d5d5d5d5d5d5d5d6773808c8c8c8c8c8c8c8c8c86796c5f5d5d5d5d5d5d5d5d5d5d5d5e6b77848c8c8c8c8c8c8c8c8c84776b5e5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b59534a41362b20140800000000000000000000000a16222f3b46515b63666b6b6b6b6b6b6b6b6b6b6361594f44382c2014070000000000091724313d4a56626d71777573716e6d6668666461605b53493f33271b0f030000000000000000000000000000000000000000000000000008111a21282d3031353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353433302b241d140b0100000000000000000000050e161e252a2d2e323232323232323232323232323232323232323232323232323232323232312e2922202324272727272727272727272727272727272727272727272727272722211f1b150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909393939393939393938c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c7f7f7f7f7f7f7f7d7063564a3d3024313d4a5764707d8787878787878787877e72656565656565656565656565656774808585858585858585857c6f6356493c3023160900000000020d19232e3740464b4c51515151515151515151515151515663707d8080808080808080807f72665951515151515151515151515865727f8080808080808080807f72655851515151515151515151515151514e4c4841382f251a0f03000000000000000000000006121e2a353f495157595f5f5f5f5f5f5f5f5f5f57554f473e33281c100400000000000915212e3a45505a62656a68666462605c5459575553504941382d22170b0000000000000000000000000000000000000000000000000000000810171c202324282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282726231f19120b02000000000000000000000000050c13191d202125252525252525252525252525252525252525252525252525252525252524211d181416171b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1515120f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909d9f9f9f9f9f9f9f998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808b8b8b8b8b8b8b8275685b4f423528313d4a5764707d8a949494949494948b7e72727272727272727272727272727274818e91919191919191897c706356493d3023160a000000000007121c252e353b3e40444444444444444444444444444854606b70737373737373737373726d63574b4444444444444444444a56626d72737373737373737373726d62564a4444444444444444444444444441403c362f261d1308000000000000000000000000020d18232e373f464b4c525252525252525252524a48443e352c21170b00000000000005111d29343f485056585e5b59575553504a4c4a4846443f382f261b110600000000000000000000000000000000000000000000000000000000050b101416171c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1a1a17130e0801000000000000000000000000000002080d1113141818181818181818181818181818181818181818181818181818181818181715110c07090a0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9acacacacaca5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c98989898988e8275685b4f423528313d4a5764707d8a97a1a1a1a1a19b8e817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f83909d9e9e9e9e9e96897c706356493d3023160a0000000000000a131c232a2f323337373737373737373737373738444f59606366666666666666666666635b51463b373737373737373a46515b626566666666666666666665625b51463a3737373737373737373737373433302b251d140b010000000000000000000000000007121c252e353b3e3f454545454545454545453d3c38332c231a1005000000000000010c18222d363f454a4b514f4d4a4846443f3f3d3b3937332d261d140a0000000000000000000000000000000000000000000000000000000000000004080a0a0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0d0b0703000000000000000000000000000000000000010507070b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b09050100000001010101010101010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6b9b9b9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a5a5a59b8e8275685b4f423528313d4a5764707d8a97a3aeaeaeaa9e938e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c90959fababababa396897c706356493d3023160a000000000000010a12191e2325262a2a2a2a2a2a2a2a2a2a2a27333d474f54565959595959595959595957514940352a2a2a2a2a2a29343f49515658595959595959595959585651493f34292a2a2a2a2a2a2a2a2a2a2a282724201a130b020000000000000000000000000000000a131c232a2f323338383838383838383838302f2c28211a1108000000000000000006111b242d343a3d3e4442403e3b3a38342e312e2d2b27221b140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3c6bfb2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b2a89b8e8275685b4f423528313d4a5764707d8a97a3b0babbafa59e9b989898989898989898989898989898989d9fa7b1b8b8afa396897c706356493d3023160a0000000000000000070d121619191e1e1e1e1e1e1e1e1e1e1e212b353d44484a4d4d4d4d4d4d4d4d4d4c4b4640372e231e1e1e1e1e232d373f464a4c4d4d4d4d4d4d4d4d4d4c4a463f372d231e1e1e1e1e1e1e1e1e1e1e1b1a18140f080100000000000000000000000000000000010a12181e2225262c2c2c2c2c2c2c2c2c2c2423201c1710080000000000000000000009121b22292e3132373533312f2d2c28232422201f1b17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607090b0b0a09070604000000000000000000000000000000000000000000000000000000000000000000020608080807050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000106090b0c0e1a2633404d596673808c99a6b3a89b8e8275685b4f423528313d4a5764707d8a97a3b0bdc1b7afaaa8a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5aaabb1b9c3bcafa396897c706356493d3023160a00000000000000000002060a0c0d111111111111111111110f1a232b33383c3d4040404040404040403f3e3b352e251c12111111111b252d343a3e3f4040404040404040403f3e3a342d251b11111111111111111111110e0d0b08030000000000000000000000000000000000000000070d121618191f1f1f1f1f1f1f1f1f1f171614100b050000000000000000000000000911181d2124252b28262422201f1c17171513120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070d11131416171817161312100c07000000000000000000000000000000000000000000000000000000000003090f1214151414110d08020000000000000000000000000000000000000000000000010102030304040500000406070707070707070707070707070603000005040403030201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000060d121618191b1b2633404d596673808c99a6b3a89b8e8275685b4f423528313d4a5764707d8a97a3b0bdc9c1bbb6b5b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b6b8bcc3cbbcafa396897c706356493d3023160a00000000000000000000000000000404040404040404040408111a21272c2f3033333333333333333333322f2a231c130a04040409131b23292e313233333333333333333332312e29231b130904040404040404040404010100000000000000000000000000000000000000000000000002060a0c0c121212121212121212120a0a0704000000000000000000000000000000060c111517181e1c1a17151312100c0608060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013181d20202324252422201f1c1812100b0400000000000000000000000000000000000000000000000000060e151a1f212221201e19140d05000000000000000000000000000003060608090a0b0c0d0e0f1010111112070c10121314141414141414141414141312100c06121111100f0f0e0d0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000010911181e22242528282833404d596673808c99a6b3a89b8e8275685b4f423528313d4a5764707d8a97a3b0bdc6bcb4aeacababababababababababababababababacaeb5bdc6bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000080f161c2022232626262626262626262625221e18120a01000000010911181e2224252626262626262626262524221e1811090100000000000000000000000000000000000000000000000000000000000000000000000000000000000505050505050505050500000000000000000000000000000000000000000105090b0b110f0d0b0807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404040404040404040404040404040404040404040404040404040404040000000000000000000000000000000000030b12181c1f24292c2d303131312f2d2c28231c1b160d080200000000000000000000000000000000000000000001070f1820262b2e2f2e2d2a251e170e050000000000000001050707060b0f121315161718191a1b1c1c1d1d1e1e1f181c1f202021212121212121212120201f1c171f1e1e1d1d1c1b1b1a1413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000009131b23292e313235353535404d596673808c99a6b3a89b8e8275685b4f423532313d4a5764707d8a97a3b0bdbfb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3abb5bfbcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000050b101416171a1a1a1a1a1a1a1a1a191816120d0700000000000000060d121618191a1a1a1a1a1a1a1a1a191816120d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b111111111111111111111111111111111111111111111111111111111111110b0b0905010000000000000000000000070c151c23282c2f35393a3c3e3e3d3c3a38342e2c272119130c0400000000000000000000000000000000000000040c1318212a31373a3b3b3936302920170d020000000306080d11131417171c1f202123242526272828292a2a2b2b2c23282c2d2d2d2d2d2e2e2e2d2d2d2d2d2c28232c2b2b2a2a29282727201f1d18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000006111b252d343a3e3f41414141414d596673808c99a6b3a89b8e8275685b4f42403e3b3d4a5764707d8a97a3b0bdbaaea29892929292929292929292929292929292929299a3aebbbcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000407090a0d0d0d0d0d0d0d0d0d0c0c0a06020000000000000000000106090b0c0d0d0d0d0d0d0d0d0d0c0b090601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0c0e0f1011121213131313131313131312121211100f0e0c0a07070401000000000000000000000000000000000000000000000000000000000000000000000000060c111517181e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e181715110c060000000000000000010911191e272e34383a404547494a4b4a4946444039383229241e160e040000000000000000000000000000000000070d161d2429333c4347484746413b32291e140800060b101213191d20212422282b2d2e2f3032333434353636373738382e34383a3a3a3a3a3a3a3a3a3a3a3a3a38342e3838373736363534332d2c29241d150d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000010d18232d373f464a4c4e4e4e4e4e4e596673808c99a6b3a89b8e8275685b4f4d4d4b47464a5764707d8a97a3b0bdb8ac9f92868585858585858585858585858585858587929facb9bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c10131416191b1c1d1e1f1f1f1f2020202020201f1f1f1f1e1d1c1b19171413110d08040100000000000000000000000000000000000000000000000000000000000000000910171d2124242a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2524211d171109000000000000020a131b232b30394044464b5153565758575553514a48443d35302820160e040000000000000000000000000000020810191f282f353f464e535554524c443b3025190d0e11171c1f2025292d2e302d3338393b3c3d3e3f40414243434444454546404446474747474747474747474746443f464545444443424241403a38352f271f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000006121e29343f495156585b5b5b5b5b5b596673808c99a6b3a89b8e8275685b5959595854524d5764707d8a97a3b0bdb1a5988b7f78787878787878787878787878787878818e9ba7b4bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000020507080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12181d1f20232527292a2b2b2c2c2c2c2c2c2c2c2c2c2c2c2b2b2a2927262321201d1913100d0701000000000000000000000000000000000000000000000000000000000009121b22282d30313737373737373737373737373737373737373737373737373737373737373732312e29221b120705010000000a141c252d353d424a5153555d606364646462605c54544f45413a322820160b02000000000000000000000000040c1319222b313a414550585f62615e564c41362a1d141a1c23282b2d3035393a3d403f444648494a4b4c4d4e4f4f5050515152524a5153535454545454545454545353504a5252515150504f4e4e4d4745403931271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020303030303030303030303030303030303030303030304101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c03030303030303030303030303030303030302010000000000000000000916222e3a46515b6265686868686868656673808c99a6b3a89b8e8275686565666665615e575764707d8a97a3b0bdb1a5988b7e726c6c6c6c6c6c6c6c6c6c6c6c6c6c74818e9ba7b4bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000002090e12141514120e09030000000000000000000000000000000000000000000000000000000000000000000000020608080c0b0906010000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f24292c2d30323436373738393939393939393939393938383736363432302d2c2924201d18120c0400000000000000000000000000000000000000000000000000000006101b242c34393d3e444444444444444444444444444444444444444444444444444444444444443e3d3a342d241b13110d080209131c262e373f474f545c6064676d6f7171706f6d66636059524c443a32281d140a0000000000000000000000070e161e2529343c434b515a626a6e6e685e5246392e231f252a2e34383a3d4146474a4d4a505354565758595a5b5b5c5d5d5e5e5f5f5f5c606060606061616160606060605c5f5f5f5e5e5d5d5c5b5a5a53514b43392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d0f1010101010101010101010101010101010101010101010101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332619101010101010101010101010101010101010100f0e0c08040000000000000b1824313e4a56626d72747474747474726d73808c99a6b3a89b8e82756e71727373716e69625b64707d8a97a3b0bdb1a5988b7e73737373737373737373737373737374818e9ba7b4bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000050d141a1e2021201e1a140f0b060000000000000000000000000000000000000000000000000000000000000003090f121415181815120d06000000000000000000000000000000000000000000000000000000000000000000000000060b141b22272b2f35383a3d3f414243444545464646464646464646454545444342413f3d3a39352f2c29241d160d0800000000000000000000000000000000000000000000000000000c17222c363e45494b515151515151515151515151515151515151515151515151515151515151514b4a453f362d21201e19130d101b252e384049515960666d71767a7c7d7e7d7c7975706b605d564c443a2f261b1106000000000000000000071019202830353f464e555d606c717b7a6e61544b4034282a3136383f4446494c52545759545b60616263656667676869696a6a6b6b6c6c666d6d6d6d6d6d6d6d6d6d6d6d6d666c6c6b6b6a6a6969686766605d554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1015191b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f33261d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1b18140f0902000000000c1925323f4c5865727f8181818181817f7273808c99a6b3a89b8e82757b7e7f80807e7b726d6264707d8a97a3b0bdb5a99c8f828080808080808080808080808080808083909daab7bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000060f171f252a2d2e2d2a251f1c17110d0701000000000000000000000000000000000000000000000000000003090e151a1f21222524221d18110901000000000000000000000000000000000000000000000000000000000000000000060f181d262d333739404547494c4e4f5051525252525353535353535252525251504f4e4c4a4745413a39352f281f1a120901000000000000000000000000000000000000000000000005111d28343e485055575d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d585650483f342e2d2a251e1919222d37404a525b626b6f797e8386898a8b8a8885827d756d685d564c41382d22170b0100000000000000040f19222b323a4146515860676d757e858073665c51453831363b42464a505356565e61636668666c6e6f707172737475767677777878797979797a7a7a7a7a7a7a7a7a7a7a797979797878777776757574736d675d5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b212528292929292929292929292929292929292929292929292929292a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f33292929292929292929292929292929292929292929282724201a130b030000000f1c2935424f5c6875828e8e8e8e8e8e827573808c99a6b3a89b8e82757f8b8c8c8c8b867f726a64707d8a97a3b0bdb7ab9f948f8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9095a0acb8bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000060f18212930363a3b3a36302b28221c18130e09020000000000000000000000000000000000000000000003090e141a20262b2e2f32312e29231b13090000000000000000000000000000000000000000000000000000000000000000060f1821292f383f44464b515356585a5c5d5e5e5f5f5f5f5f5f5f5f5f5f5f5f5e5e5d5c5a595654524c47454039312c241b130900000000000000000000000000000000000000000000000815212d3945505a61646a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a65625a5045393a3936302a251f2b343f49525c636d727d848a90929997979798928f89817a6d685d53493f33271e1308000000000000000a16202b343d444c525b626a6f79818b9185796d6053463b3b42464d53545c606367686d70737577797b7c7d7e7f80818282838384848585868686868787878787878787878686868685858484838382818180796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161e262c313536363636363636363636363636363636363636363636363636363743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f363636363636363636363636363636363636363636363534312c251d150b0200000f1c2935424f5c6875828f9b9b9b9b8f827573808c99a6b3a89b8e8275828e9899999992897c6f64707d8a97a3b0bdbbb0a69f9c9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9da0a7b1bcbcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000030e18212a333b42464846423b38332d29241d1a140f0a0400000000000000000000000000000000000003090e141a1f252a31373a3b3f3d3a342d251b0f06000000000000000000000000000000000000000000000000000000000000030c18212a333b41495053555d60636567696a6a6b6c6c6c6c6c6c6c6c6c6c6c6b6b6a6969676563605d5653514b433e362d251b1107000000000000000000000000000000000000000000000a1724303d4955616c7177777777777777777777777777777777777777777777777777777777777777716c62564a464746413a363029313d46515b636e737f8891959c9fa3aba4aaa29f9b938e837a6d655b50443a2f24190d000000000000030f1b27323d464e565e616d727c848e93978a7e7164574d42444d53575e61666d7074777a7d8082848687898a8b8c8d8e8e8f90909191929292999393939393949494939393939a93929292919190908f8e8d887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2830383d4143434343434343434343434343434343434343434343434343434343505d6a7683909da9b6c3ccbfb2a5998c7f7266594c434343434343434343434343434343434343434343434342403d372f271d130900000f1c2935424f5c6875828f9ba7a79b8f827573808c99a6b3a89b8e827784919da6aba39b8e817468707d8a97a3b0bdc2b8b0aba9a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6aaacb1b9c3bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000915202a333c454d5254524d46443f38352f2a251f1b150f0a040000000000000000000000000000030a0f141a1f252a31363c4347484b4a463f372d21180e0300000000000000000000000000000000000000000000000000000000000b151e2a333c454d535b6064676d70727475767778787979797979797979797878787776757472706d6865605d5550483f372d23190b020000000000000000000000000000000000000000000b1824313e4b5764717e838484848484848484848484848484848484848484848484848484848484837e7165584c5254524c46413a3239434f59626d73808c939aa0a8acafb5b1b4aeaca59e958f82776c60564c4135291c1106000000000006131f2b37434e5860686d757f8691969e9c8f8376695f534a50575f61696e74797c8084878a8c8f909298959698999a9a9b9c9c9d9d9e9e9f9fa3a0a0a0a0a0a0a0a0a0a0a0a0a49f9f9f9e9e9d9d9c9c9b978b7e7164584b3e31251808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26303a42494e4f505050505050505050505050505050505050505050505050505050505d6a7683909da9b6c3ccbfb2a5998c7f7266595050505050505050505050505050505050505050505050504e4d4841392f251a0f04000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e827986929facb4aa9e91847766707d8a97a3b0bdbdb2a8a09e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ea1a9b3bebcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000020e1a26313c454e575e615e5753504a45403a36302b26201b16100b0500000000000000000000030a0f151a1f262a30363b42464e5355585651493f332a2015090000000000000000000000000000000000000000000000000000000007121d27303c454d575f656c7175797c7f818283848585858586868686868685858585848382817f7d7a76726d67615a51493f352b1d140a0000000000000000000000000000000000000000000c1925323f4c5865727f8b90909090909090909090909090909090909090909090909090909090908c7f726659565e615e56524c443e404b55606b727f8b929fa4acb1b9bbc0bebfbab8afa79f948b7f72685d5245382e23170c00000000000815222e3b4754606a6f7a828b9299a0a89f93877b6e6155545c60696e757b8085898d919696999b9d9fa3aaa3a4a5a6a7a8a9a9aaaaababacacaeb5adadadadadadadadadadb6afacacacababaaaaa9a8a69a8d8073675a4d402f24190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38424c545a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5d6a7683909da9b6c3ccbfb2a5998c7f72665c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b59534b41372c201408000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e827c8899a3afb9ac9f9286796d707d8a97a3b0bdb8aca096918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9197a1adb9bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000006121e2b37424e575f696e6964605b54514b46423b37312c27211c16100b05000000000000060b0f161b20262b31363b42464d53585f6265625b51453c31261a0e040000000000000000000000000000000000000000000000000000000c18232e39424d575f696e787d8286898b8d8f9091919292929292929292929292929191908f8d8c8986837f79716c625b51473d2f261b110600000000000000000000000000000000000000000c1925323f4c5865727f8b989d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d998c7f7266565e686d68615e56504645515d676f7d87929fa4afb6bec3c7cbd0cac6c1b9b0a69f92857a6d60544a3f34281c1003000000000916232f3c4956626f7c848f949fa3abafa49a8c807366585e666d727b81868d92979a9ea0a8a6a8aaacaeb4b0b1b2b3b4b5b5b6b6b7b7b8b8b9bbbfb9bababababababababac0bbb9b9b8b8b7b7b6b6b5a99c8f827669564c4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925313d49545e656969696969696969696969696969696969696969696969696969696969696a7683909da9b6c3ccbfb2a5998c7f72696969696969696969696969696969696969696969696969696968655d53483d3124180c000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e827e8a97abb3bbafa399877a6d707d8a97a3b0bdb7aa9e91848383838383838383838383838383838385919eabb8bcafa396897c706356493d3023160a0000000000000000000000000000000000030000000000000000000000030e18222e3a47535f6a6e7b76706c66605d55524d47433c38322c27211c16100b050001070c11171b1f272c31373b42464d52575e616a6e726d62574e42372b20150a000000000000000000000000000000000000000000000000000004101c2834404b545f696e7b838a8f9299989a9c9d9d9e9f9f9f9f9f9f9f9f9f9f9f9e9e9d9c9c9a989a93908b857e726d62594f41382d22170b00000000000000000000000000000000000000000c1925323f4c5865727f8b98a5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa5998c7f72665e686d7a756d68615a524d57606d79849199a3afbbc0c7c8c6c0bfc5c6cac2baada2978c7f73665c5044382c1f1207000000000a1724303d4a5763707d8a969ea6aeb4b6ac9e9184776a60686d787f868e92999ea1a9aaacb2b3b5b7b9babfbdbebfc0c1c1c2c3c3c4c3c3c2c2c2c2c1c1c1c1c1c1c1c1c1c1c1c2c2c2c3c3c3c4c3c3b7ab9e918478685d5245392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835414e5a6570767676767676767676767676767676767676767676767676767676767676767683909da9b6c3ccbfb2a5998c7f767676767676767676767676767676767676767676767676767676756f65594d4034271b0e000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e82808d99a2aab3b5ab94877b6e707d8a97a3b0bdb1a5988b7e76767676767676767676767676767676818e9ba7b4bcafa396897c706356493d3023160a0000000000000000000000000106090b0c0f0a070603000000000000000a15202b37434e58626e7c87827d78726d67615e57534e48443d38332c28211c160f0a0d12181b22272b32383c43474d53575e61696e747b7f726a5f53473c32261b0f040000000000000000000000000000000000000000000000000006131f2c3845515c666e7b8590959c9fa3aba7a8a9aaababacacacacacacacacacabababaaa9a8a7aca49f9d97928a7f726b6053493f33271b0f03000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b2a5998c7f7266616d7a85817a716c615d565f6974808d96a0abb5c0c7c0bbb9b4b2b8babec5beb3a99e9285796d6053463a2f24180c000000000613202d394653606c7884919daab4bfb9aca096887c6f696e7a828c92989fa3abadb3b7b8bdbfc2c3c2c0bfbdbcbbbac0bbb9b8b8b7b6b6b5b5b5b5b5b5b4b4b4b4b4b4b4b4b5b5b5b6b6b6b7b7b8b8b9ada196877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976828383838383838383838383838383838383838383838383838383838383838286929fabb8c5d1c4b7aa9e91848383838383838383838383838383838383838383838383838383838175685b4e4235281b0f000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e82828d9298a2aeaea194887b6e707d8a97a3b0bdb1a5988b7e72696969696969696969696969696974818e9ba7b4bcafa396897c706356493d3023160a0000000000000000000000070d121618191c171312100b0600000000030f1b26313a47535f6a75818e8f8a847f7a736e69625f58544f48443d38332c27211b15191d23292d33373d43484e53575f61696e747b8187877b6e62584e43372b21160a000000000000000000000000000000000000000000000000000713202d3a4653606d798491979fa7acaeb5b4b5b6b7b8b8b8b8b9b9b9b9b9b9b8b8b8b8b7b6b5b4b6afaca9a19e91897d70655b5044372b1f1205000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bec3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3bfb2a5998c7f72666b75818e8e857e756d6860626e7b87929fa8b2bdc7beb6afaca7a5abaeb3bcc5b9ada1978a7d7063554b4035291d100400000005121f2b3744505b65727e8b98a2aebabdb2a89a8d80736e7b8490949fa2aaafb5b9bec4c5c4bdb9b7b5b4b2b1afafaeb5afacababaaaaa9a9a8a8a8a8a8a8a7a7a7a7a7a8a8a8a8a8a9a9a9aaaaababacafa896897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9298a2aebac6d2c5b9aca096918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f84776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e827f8086929fabaea194887b6e707d8a97a3b0bdb1a5988b7e72727272727272727272727272727274818e9ba7b4bcafa396897c706356493d3023160a000000000000000000010911181e2225252924201f1c17110e09040106121f2b37434e58626e7b87939c96918b85807b746f6a636059554f48443e38332b272025292f34383f44464f54585f62696e747b81868e928e81756a5f54473d32271b0b02000000000000000000000000000000000000000000000006121e2b37424d5765727f8b95a0a9b1b9bbbfc0c2c3c4c4c5c5c5c5c5c5c5c5c5c5c5c5c4c4c3c2c0c0bbb9b3ada39d9184786c605346392d201309000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2becbcfc6bfbab9b9b9b9b9b9b9b9b9b9b9babfc6cfccbfb2a5998c7f7267707d8a9397928a817a6f6b6b75828f99a3afbac4c0b6aca49f9a999fa2aab3bebeb3a99b8e8275675d5145392c1f1306000000030f1b27333f4953606d7a85929facb8c4b7aa9d9184777b8591969fa6aeb4bbc0c7c9c5bdbab2adaba9a7a5a4a3a2a1a0a39f9f9e9e9d9c9c9c9c9b9b9b9b9b9a9a9b9b9b9b9b9b9c9c9c9d9d9e9e9f9fa3ab988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa2aab4becad5c9bdb2a8a09e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275747f8c99a6aea194887b6e707d8a97a3b0bdb5a89b8e817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f83909da9b6bcafa396897c706356493d3023160a00000000000000000009131b23292e313236302d2b28231c1a15110d0815212e3a47535f6a75818e99a4a09e97928d86817c756f6b636159554f48443d37322b30353940454950535960636a6f747b81868d92999f93877c6f62594f43382c1d140a00000000000000000000000000000000000000000000000814212e3a47535f697784919da8b1bbc2c7cbd1cfd0cec9d1cbc7c5c5c5c5c5c5c6c7ccd2cbcfcfd2ccc8c5beb8aca095897d7063564a3d30251a0e020000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bed1c6bcb4aeacacacacacacacacacacacaeb4bcc6cfbfb2a5998c7f726d7984919ea19e938e847d726f7c89949eabb5c0c8bbafa49a938d8c9298a2aebac4b8ac9f92867a6d6053473a2d201407000000000b17222d3845515d6774818e9aa8b2bdb8aca095897c849197a0a8b0babfc6cbd1c7bdb3aba8a19e9c9a989796959494999292919190908f8f8f8f8e8e8e8e8e8e8e8e8e8e8e8f8f8f909090919192929994948d8074675a4d4134271a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929fa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9abaeb4bcc5d0d9cec4bab2acaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b98a4aea194887b6e707d8a97a3b0bdb6aa9e938e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b90959fabb8bcafa396897c706356493d3023160a000000000000000007111b252d343a3e3f423d3a38342e2b26201d19131f2b37434e58626f7c87939fabaca9a29f99928e88827c76706b636159544f47433c343a41464b51535b60646b6f757c81878d92999fa3a49a8f82756b6054483d2f261b11060000000000000000000000000000000000000306070a0a15222f3b4855626e7b8895a0acbac3cdd3d7cbc6c2c1bdbabfbab9b8b8b8b8b8b9bbc0bcbec4c5c8ced4cfc8bcb1a79a8e817467574d42362a1e12050000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2becbbfb4aaa39f9f9f9f9f9f9f9f9f9f9fa3aab4bdc7bfb2a5998c7f7274808d96a1ada59e9691877f76828f9ca6b0bdc7bcb1a79f9388817f86929fa8b2bdbaaea2988a7d7063574a3d2f24180c0000000006111b2935414b55636f7c8996a0acb9bdb1a89f92859196a0a9b2bac2cad0d7cdc1b6aba19996918f8d8c8a898887878686858584838382828282828281818181818181818282828383838484858586868788888276695c504336291d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b8babec5ced7e0d6ccc4bdb9b7b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6aa9e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdbaafa59e9b989898989898989898989898989898989d9fa7b1bcbcafa396897c706356493d3023160a00000000000000010d18232d373f464a4c4f4a46443f3837312c29241f212e3a47535f6a75828e9aa4afb9b3adaba39f9b948f89837d77706b636059544e463c444c52555c60656c70767c82878e92999fa3abaeac9e94897c6f63594f41382d22170b00000000000000000000000000000004060b10121316161825313e4b5864717e8b97a7b1bcccd5d2c9c1bab6b4b0aeb4aeacababababacacafb5afb2b7b8bdc3ccd5cec3b8ab9e918578695e52463a2d2014070000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bec7baaea398929292929292929292929298a3abb5c0bfb2a5998c7f727c87939fa8b2afa8a199928c828f949fabb8c1c4b8ab9f958c7f74727e8a96a1acb9bfb4aa9a8d807367554b4035291d1004000000000d18242f3a4854606b7784919eaab7c3baaea2989298a0a8b2bbc4ccd1d6d7cabdb1a5998f898482817f7e7c7c7b7a79797878777776767575757575757474747474757575757576767677777878797a7a7b7c7c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb8c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c5c6cad0d7e0e8ded6cec9c5c4c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b7aa9e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdc1b7afaaa8a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a9abb1b9c2bcafa396897c706356493d3023160a0000000000000006121e29343f495156585c5753504a47423c3935302c282f3c4855626f7c87939faaacb1b9bab5aeaca69e9c949089837d76706b6260584e464c565e61676d71787d83898f939a9fa3abaeb4bab0a69c9083766b6153493f33271b0f03000000000000000000000104070c1013171c1f202323222734404d5a6773808d9aa6b3c0ced2c9c0b7afaaa8a3a1a0a39f9f9e9e9f9f9fa4a0a2a5aaacb2bac3ccd2c6b9ada197877b6e6154483b2e2115100c06000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bec5b9ac9f9286868686868686868686868999a3afbbbfb2a5998c7f79839099a4afbabab2aba39f948f949fa6b0bbc7bbb0a69d9083786c6c7884919eabb7c3b6aa9d908377675d5145392c1f13060000000007131d2c38434f596773808d9aaab4bfbeb4aaa29fa2aab2bac3c0c1c5cad2c9bcafa396897d7876747271706f6e6d6d676c6b6b6a69696969666c6d6e6f707070717070706f6f6e6d6c666b6b6c676d6d6e6f6f6a6054473b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb8c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c5c6cacfd7dfe7ddd5cec8c5c3c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b7aa9e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdbcb1a79f9d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea0a8b2bdbcafa396897c706356493d3023160a000000000000000916222e3a46515b62656963605c54534d4745413a38342e424f5c6875828e92989da0a7acaeb5b9b9b0aaa69f9c95908a837d766f6a60584e535e686d73797e848a90949b9fa4acafb5babab9b0aa9f94897d70655b5044372b1f1205000000000000000104070d1013181c1f23282b2d30302f2c35424f5b6875828e9ba8b5c1cecbc0b7aea59e9b9694939892929292929293999495989da0a8b2bac3cec9beb2a9978a7d7064574a3d31241f1c17110d0701000000000000000000000000000c1925323f4c5865727f8b98a5b2bebaaea194877b7979797979797979797987929facb9bfb2a5998c7f7f8c95a0abb5c0c4bdb5afa69f9c9fa6b0b8c2c4b7ab9f94897d70666573808d9aaab4bfb9ac9f92867a6d6053473a2d20140700000000010f1b27323d4956636f7c8998a2aebac5bcb4aeabaeb4bcb9b5b3b5b9c0c8c8bbafa295887c6f6967656463626161605c55555c60686d717577797a7b7c7c7d7d7d7d7d7d7c7c7b7a797876736f6a626161626260584e43372b1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b8b9bec5cdd7dfd5cbc3bcb8b7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5aa9e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb8ab9f95908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9196a0acb9bcafa396897c706356493d3023160a000000000000000b1825313e4a56626d7275706d66625f5754524c464440393d495663707d81868b90959b9fa3abadb3b9b7b0aba79f9d959089827c6f6a5f535b656d7a7f858b91969c9fa6acafb6bbb9b4aeaca69e9c959083796c605346392d201306000000000002080d1113181d2023282c2e34383a3d3d3b383243505d697683909ca9b6c3cfc5baaea49d938e8a878686868585858585868687898b9196a0a8b2bdc8cfbfb2a5988c7f7265594c3f322d2c28231c18120d080200000000000000000000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6c6c6c6c6c6c6c6c7986929facb9c1b4a79b8e8186929fa5adb2bac0c7c0bbb0aba9abb0b8c2c8bcb1a79c8f82766b6063707c8998a2aebabbafa399897c6f6356493c3023160800000000000a13202d3a4653606d7985929facb8c5c5bebab8babeb6aea9a6a9aeb6c0cabbafa295887c6f625a5957565554545351555d676d737a7e81848687888889898a8a8a8a8989888887868482807c776f6a605855544e463c32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929fa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8abadb3bbc5cfd9cec3b9b1acaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb6a99d90838181818181818181818181818181818184919eaab7bcafa396897c706356493d3023160a00000000000004101c2834404b5465727f827d79736e6965605d5653514a47434854606b70757a7f83898e92999ea1a9acb2b8b7b1aba79f9d948f877c6f6255606c78848c92979da0a8abb0b9bbb8b3adaaa39f9b948f89837e776c605346392d20130600000000040c13191d2024292c2e34383a3f4446494948443d44505d6a7783909daab6c3d0c2b5a99d928d817d7b7a7979787878787979797a7c7f849196a0acb9c5cdc0b4a79a8d8174675a4e413c3a38342e29241d19130e09030000000000000000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e615f5f5f5f5f5f6c7986929facb9c3b6a99c9082858e939ea1a8afb9bec4c2bbb7b5b7bbc2cac5b8aca095897d706359606d7986929facb8c0b5ab988c7f7265594c3f2f24190d010000000006121f2b3844505c6676838f9ca9b6c2d0cac6c5bfb6ada49d9a9da4aeb9c5bbafa295887c6f62554c4b4949484746515d676d7980868b8e9192999595969697979796969695949992918f8c89837c6f6a60554b433c342b20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea2a9b3becad4c8bcb1a7a09d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb1a5988b7e74747474747474747474747474747474818e9ba7b4bcafa396897c706356493d3023160a00000000000006131f2c3845515c6675828f8a84807b76726d6864605c54544e474f596063686d72777c81868c92979ea1a8acb2b9b8b1aba2988f82756a5f535b65727f8c97a1a9acb2b7bbb9b1aca9a19e98928e88827d77716c655b5044372b1f1205000000040e161e24292c2f35393a4045464a50535656544f4744515e6a7784919daab7c4cdc0b4a79a8d8175706e6d6c656c6b6b6c6c666d6d6f727984919eaab7c4cec2b5a89b8f8275685c4f474946443f38352f2a251e1a140f0a04000000000000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154535353535f6c7986929facb9bfb2a5998c7f7a818a91969da5adb3bbc1c7c3c2c3c7cccabfb4aa9d9083776b60545c6776838f9ca9b6c1b5a89b8e827568564c4135291d11040000000003101c28343f4a546673808d99a6b3c0d1d6cfc2b8ada49c928d929da9b5c1bbafa295887c6f62554947474747464e58606d79828d92989b9d9fa3aba2a3a3a3a4a3a3a3a2a2aba39f9e9c999590867c6f675d5145382c22190f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c79868e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9297a2adb9c6d1c5b8aca095908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb1a5988b7e72686868686868686868686868686874818e9ba7b4bcafa396897c706356493d3023160a0000000000000713202d3a4653606d79859296918d88837e7a75706d6662605854524f54565d60656b6f757b80858b91969ea0a8adb2b1a79f92857b6e61584e53606d7a85929eaab4bdb5afaca7a09d97928c86817c76706b64605b53493f33271b0f030000020c1620283035393a4045474b5153545c60636360594f44515e6b7784919eaab7c4c9bcafa396897d70636160605b5f5f5f5f5f5c60616267727f8c99a5b2bfccc3b6a99c908376695d4e535553504a45403936302a261f1b150e070000000000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154484646535f6c7986929facb9bfb2a5998c7f72757d848e939ea1a9b0babfc6cfd0d3d3c6baaea2988b7e7265594f5566737f8c99abb5bdb7aa9e918477685d5245392c20130600000000000b17232e3d4a5764707d8a97abb4bfcbd1c7bdb0a69c918c808d9aa6b3c0bbafa295887c6f6255535353535353535f6a74818e949fa2aaaaacafb5afafb0b0b0b0b0b0afafb5afacaba9a79f989184796d6053473a2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818282828282828282828282828282828282828282828282828282828282828285929eabb8c5d0c3b7aa9d90838282828282828282828282828282828282828282828282828282828074675a4d4134271a0e000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb1a5988b7e75757575757575757575757575757575818e9ba7b4bcafa396897c706356493d3023160a0000000000000a1623303d495663707c8998a19e9995908b86827d79746f6a66615e5653515254596063696e73797f848a91969ea1a8ab9f958b7f72695e5c5c5c5d6773808c98a2aeb5aba49f9c95908b85807a746f6a63605953504941382d22170b00000008131e28323a4145474b5153555c6063666d70706b605448515e6b7784919eaab7c4c7bbaea194887b6e6155535350495252524a51535455636f7c8996a2afbcc9c4b7aa9d9184776a5e585f62605c54514b46413a36312b262018100c03000000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f726b707a818991979ea6aeb4bdc4cdd6d2c5b8ac9f92857a6d6054495663707c8999a3afb2acab9f93867a6d6054473a2d21140700000000000615212e3b4854616e7b8799a3aebac7cbc0b5ab9f948c7f7c8895a2aebbbbafa295887c6f62606060606060605c626f7c87939fa6aeb4b7b9bbc0bbbcbcbdbdbdbdbcbcbbc0bbb9b7b5b1aaa1968b7e7265554b4035291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734404d59656f757575757575757575757575757575757575757575757575757575757575757683909da9b6c3ccbfb2a5998c7f757575757575757575757575757575757575757575757575757575746e64584c3f33261a0d000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb6a99d90838181818181818181818181818181818184919eaab7bcafa396897c706356493d3023160a000000000004111d2935414c566673808c99aaaba79f9d98928e8a85807c77726e6864605c5c646769696969676d72797e848b9196a1a3999083786c696969696969696d7a85929facafa499938f89837e79736e68696969696360594f44382c1b11060000010d1924303a444c5254555d6064676d7074797c7d7063584e515e6b7784919eaab7c4c7baada194877a6e61544746443f4545454044464855616e7b8894a1aebbd1c5b8ab9e9285786b555f6a6f6d66605d55524c46423b37322a221e150c020000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f7266676d747d858f939fa3abb2bbc4cfd0c3b6aa9d9083786c605c5253606d7a86929faca8a09e9992897c706356493d3023160a00000000000613202d394653606c7986929facb9c5c7bbafa3999082787b8895a2aebbbbafa295887c6f6d6d6d6d6d6d6d6d666774808d9aa4afbabfc4c5c7c6c4c1bebdbdbdbdbdbfc1c5c6c5c4c2bcb2a89c908376675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1824313c48535d6568686868686868686c71797d7069686868686868686868686868686868686a7683909da9b6c3ccbfb2a5998c7f72686868686868686868686868686868686868686868686868686867645c52473c3024170b000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb8ab9f95908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9196a0acb9bcafa396897c706356493d3023160a00000000000613202c3945525d687683909da9b6b1abaaa39f9b97928d89847f7b75716d66626e74767676767676767676797e8491999f92867c7676767676767676767676808d9aa6ac9f9387827d77767676767676767676706b6054483b2f221609000004111d2935414c565d6064676d7175797d81858983776a6054515e6b7784919eaab7c4c7baada194877a6e6154473b37332d382e34383a4754606d7a8793a0b5bfcbc5b9ac9f928679675d676f7c79726d67615e56534d47433c3430271e14090000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f72665d606b707a828b9299a1a9b2bec9d1c4b8ab9f958e81746e635b515d677783909d9f9b96918c86817b6e6255483b2f221508000000000006121f2b3844505b667784919eaab7c4c0b5ab9f92877b6f7b8895a2aebbbcafa296897d797a7a7a7a7a7a79786d687784919eacb6c0cacdc4beb9b8b4b2b0b0b0b0b1b2b4b8babec5cec4b9ac9f92867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202c37414b53595b5b5b565e616a6f767e84867b6e61585b5b5b5b5b5b5b5b5b5b5b5b5b5d6a7683909da9b6c3ccbfb2a5998c7f72665b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a58524a41362b1f1307000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdbcb1a79f9d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea0a8b2bdbcafa396897c706356493d3023160a00000000000714212d3a4754606d7a86929facb9bcb8b4aeaca9a19e9a95918c86827d79746f748082828282828282828282828286939f928582828282828282828282828283909da9aa9e91848282828282828282828282827d706356493d3023160a00000713202c3945525d686d71757a7d81858a8e9295887c6f62544a5e6b7784919eaab7c4c7baada194877a6e6154473b2e27222c23282d3a4653606d798699a3aebbc7c7bbaea399867a6d606d7985847f79736d68615f57534e46423930261b100400000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f7266595961686d757f879197a1adb9c6d2c8bcb1a79d938d80736d635a556774808d99928e89847f7a756e695f53473a2e2114080000000000030f1c28333f4a546976828f9ca9b5c2bbafa4998d80746f7b8895a2aebbbdb1a5998f8986868686868686867e716d7a8796a0acbec7cac2bbb3adaba7a5a4a3a3a3a4a5a8abaeb3bcc3c7bbaea399897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f3941484d4f545c60686d747c828a918e81746a5f534f4f4f4f4f4f4f4f4f4f4f505d6a7683909da9b6c3ccbfb2a5998c7f7266594f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d4c4741382f241a0e03000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bbbbb9b1aba9a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8aaacb2babbbbafa396897c706356493d3023160a00000000000a1724313d4a5764707d8a99a3afbbc6c6bfbab9b3adaba7a09d99928f8a85807c77838f8f8f8f8f8f8f8f8f8f8f8f9399a297928f8f8f8f8f8f8f8f8f8f8f8f90959fabaca096918f8f8f8f8f8f8f8f8f8f8f8a7e7164574b3e3124180b00000714212d3a4754606d7a7e82868a8e92989b9e9a8d8174665c515e6b7784919eaab7c4c7baada194877a6e6154473b2e21171f181f2c3844515c667986929facb9c5c8bfb5ab94877a6e64717e8a918b85807a746e69625f58544b42372c21150900000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f7266594f565e616d727c84919eabb8c4d1cdc3b9afa59c928c7f726c625964717e8a8c86817d78726d68625f574d42372b1e12060000000000000b17222d414e5b6774818e9aa7b4c1b9ac9f93877b6e6f7b8895a2aebbc1b5aaa19996939393939393938b7e716f7c8895a8b2bdd0c2b8b0a9a19e9a989797979797989b9fa2aab1b9c3bfb5ab988b7f7265584c3f3225190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a434b515960666d727a81878f949e93877c6f62584e43424242424242424243505d6a7683909da9b6c3ccbfb2a5998c7f7266594c4242424242424242424242424242424242424242424242413f3c362f261d130800000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea396897c706356493d3023160a0000000005121e2a36424d576774818d9aabb4b8babec5c7c5beb9b8b1acaba39f9c97928d867983909c9c9c9c9c9c9c9c9c9c9c9fa4a9a29f9c9c9c9c9c9c9c9c9c9c9c9c9d9fa7b1b2a8a09e9c9c9c9c9c9c9c9c9c9c978a7e7164574b3e3124180b0000101d2a3743505d6a76838b8f92989b9fa2aaab9e9285796d60535e6b7784919eaab7c4c7baada194877a6e6154473b2e211407101c2834404a5f6c7885929fabb8c0bbb9aea194887b6e6976828f9c97928c86817b756f6a655d54493d3125190c00000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f7266594c4c525b626a7784909daab7c3d0d4cbc0b7aea49c918b7e716b61616e7b847f7a75706c65615e56534d453c31261a0e02000000000000061a2633404d596673808c99a6b3bfb5a89c8f8275696f7b8895a2aebbc7bcb3aaa5a2a0a0a0a0a0a0988b7e71707d8a96a3b0bdc7bbb0a69f97918e8b8a8a8a8a8a8c8e9298a0a7b1bcc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b555d606b70787f858d93999fa4998f82756a6054473d3235353535353743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f353535353535353535353535353535353535353535353433302b241d140b0100000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a196897c706356493d30231a11080000000714202d3a46525e697784919da3aaabaeb3b6bbc1c9c6c3bcb8b5afaca9a19e93867983909da9a9a9a9a9a9a9a9a9a9acafb3adaba9a9a9a9a9a9a9a9a9a9a9a9a9abb1b9bab2acaaa9a9a9a9a9a9a9a9a9a4978a7e7164574b3e3124180b00000c1925323f4c5865727f8b999fa3aaabaeb3ada1978a7d7063555e6b7784919eaab7c4c7baada194877a6e6154473b2e2114080c18232e45515e6b7884919eabb6b6afacaaa295887c6f6e7b87939fa19e98928d87817c7570655a4d4134281b0f02000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483e46535f6c7986929facb9bfb2a5998c7f7266594c414754606d7a86939facb9c6d2dfd2c9c0b6ada39f92877d70695f696e77726d6863605b53524c47423c332a1f1509000000000000000c1926323f4c5965727f8c98a5b2bfb4a79a8d8174676f7b8895a2aebbc8c5bcb5b1afadadadadada4988b7e71717e8a97a4b1bdc3b7aa9f948f85817f7d7d7d7d7e7f81859095a0acb8c2b5a89b8f8275685c4f4235291c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d757d838b92979fa4abab9e93897c6f62594f43382c2828282a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332828282828282828282828282828282828282828282726241f1a130b020000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a94949494949494949494949494949494949494949494949494949494949494949494897c706356493d332c231a100500000815212e3b4854616e7b878f92989b9fa2aaaaafb8c1cccec8c7c0bbb9b3ada093867983909daab5b5b5b5b5b5b5b5b6b5aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb8b7b5b5b5b5b5b5b5b5aea4978a7e7164574b3e3124180b00000714212e3a4754616d7a86929facb4b8babeb3a99b8e8175675c5e6b7784919eaab7c4c7baada194877a6e6154473b2e211408071e2b3844515e6b7784919eaaa9aca49f9d9a96897c6f73808d9aa4adaaa29f99928e888275695c4f4236291c0f03000c1925323f4c5865727f8b98a5b2bebaaea194877b6e61544b4b4b535f6c7986929facb9bfb2a5998c7f7266594c3f495663707c8999a4afbbc7d4d5d2d1c8bfbbafa39992857b6e675e616a65615e5653504946413a37312a21180e03000000000000000b1825313e4b5864717e8b97a4b1beb4a89b8e8175686f7b8895a2aebbc8cec7c1bdbcb9b9b9b9b1a4988b7e71717e8b98a4b1bec2b5a99c8f82797472717070707172757a83909daab6c3b6aa9d9083776a5d50442f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d79828991959fa2a9afb5afa59c8f82766b6054483b312622222a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332622222222222222222222222222222222211e1a1c1a1a17130e0801000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8888888888888888888888888888888888888888888888888888888888888888888888887d70635649443e352c21160b00000714202d3a4753606d797e82868a8e92989b9ea5afbbc6d2d4d1cbc7c5beaca093867983909da4a6acb4bec2c1b8b0aaa8a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1abadb3bbc2c2bdb5afaca1a1978a7e7164574b3e3124180b00000713202d3946525e6875828f9caab4bfc6c5b8ab9f9285796d605e6b7784919eaab7c4c7baada194877a6e6154473b2e211408111e2b3744515e6a7784919d9f9c999a93918e8b887d707985919eacb6b4aeaba39f9b8e8175685b4e4235281b0f02000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6158585858585f6c7986929facb9bfb2a5998c7f7266594c3f4c5865727f8b98abb5c0cccfc9c6c4c6c9c0b5aba2979183796d655b5e5954524c46443f3836302b261f180f0600000000000000000b1724313e4a5764717d8a97a4b0bdb5a89c8f8275696f7b8895a2aebbc8cac2bbb7b6b5b5b5b5b1a4988b7e71727e8b98a5b1bebcb0a396897d70676564646464646568717d8a97a4b0bdb8ab9e9185786b554b4035291d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d677683909ca0a7adb3bbc0b7ab9f94897c6f63574d42362f2f2f2f3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2d2a261f170f0b07030000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e6d797b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b796d6057554f473e33281c1004000613202c3945515d676d71757a7d81858a8f939eaab6c3cfcfc7c1bdbcb9aca0938679839095979aa2acb7c2bbb0a69e9c959595959595959595959595959595959595959595959ea1a9b3bec0b5aba39f9595958a7e7164574b3e3124180b000005111d2a36414c5664717e8a98a3aebac7c6baaea2988a7d7063546b7784919eaab7c4c7baada194877a6e6154473b2e211408111e2a3744515d6a77849098928f8d8a8684817e7b70707d8a97a1adbebfbab5aca196897d7063564a3d3023170a00000c1925323f4c5865727f8b98a5b2bebaaea194877b6e646464646464646c7986929facb9bfb2a5998c7f7266594c3f49536874818e9ba7b4c1cdc4beb9b8b9bec4bdb3a9a0958f81776c60594f4746413a37332d2a251e1a150e060000000000000000000a1724303d4a5763707d8a96a3b0bdb6a99c8f8376696f7b8895a2aebbcdc2b8b0aba9a8a8a8a8a8a4988b7e71727e8b98a5b1bebaada194877a6e6155575757575756616e7b8894a1aebbb9ac9f928679675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b55626f7c89939eabb5bec5c7bbb0a69b8f8275695f53463c3c3c3c3c3c43505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b3a36312921170d03000000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e676d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d676a6361594f44382c2014070004101d2935404b555d6064676d7175797d818f9ba8b5c2cec5bdb6b1afb2aca09386788388888a909aa6b2bfb7aa9e948f888888888888888888888888888888888888888888889197a1adb9bbafa39992888888887e7164574b3e3124180b0000010d1925303a4754606d7a86929facb8c5cabeb4aa9b8e8174665c6b7784919eaab7c4c7baada194877a6e6154473b2e211408111d2a3744505d6a77838b898583807d7a7774716e6976828f9ca9b3becac0b5ab9e9184786c605346392d20130600000c1925323f4c5865727f8b98a5b2bebaaea194877b7171717171717171717986929facb9bfb2a5998c7f7266594c44505b657783909daab6c3c4bbb3adabadb3bbc1bbb1a79e938c7f736b60564c4136302b27221b19130e0903000000000000000000000a1623303d495663707c8996a3afbcb6a99c908376696f7b8895a2aebbc7bbb0a69f9c9b9b9b9b9b9b988b7e71727e8b98a5b1bebaada093877a6d60544a4a4a4a4b54606d7a8793aab4bfbaaea399867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a4754606a75818e99a3aebbc6cdc2b9ac9f93877b6e61564c48484848484848505d6a7683909da9b6c3ccbfb2a5998c7f7266594c4848484848484848484848484848484848484846423b33291f1409000000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e757676767676767675706d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d6d72767676767676767676706b6155483c2f23160900010d18242f39434b5153555d6064666d707d8a96a3b0bdc7bdb3aba5a3a6aaa09386797b7b7b7e8a97a4b1bdb5a89c8f827b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c85919eabb8b9ac9f92877c7b7b7b796d6054473a2d2114070000000813202c3945515d6775828f9babb4bfcbc5b8ab9e9285796d606b7784919eaab7c4c7baada194877a6e6154473b2e2114080d1a2633404d596673807f7c797673706d686764626e7b87939facb9c4c7bbafa3998c8073665b5044382b1f120600000c1925323f4c5865727f8b98a5b2bebfb2a5988c7f7e7e7e7e7e7e7e7e7e7e87939facb9bfb2a5998c7f7266594c4653606c7985929facb8c5beb3a9a19ea1a9afb7c1b9afa59f93877d70685d52453e32291e17110d0802000000000000000000000000091623303c4956636f7c8996a2afbcb6aa9d9083776a6f7b8895a2aebbc4b7ab9f948f8f8f8f8f8f8f8f8b7e71727e8b98a5b1beb9ada093867a6d6053473d3d3d4653606c798698a3aebabfb4ab94877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d2b38434e58616e7b86929faab4bfcbc7bbafa4998d8074685d5555555555555555555d6a7683909da9b6c3ccbfb2a5998c7f7266595555555555555555555555555555555555555555534d453b31261a0e020000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b75818383838383838382757581868686868686868686868686868686868477727f8383838383838383837d7063574a3d3024170a000007121d2831394045474b5153545c63707d8a96a3b0bdc1b6aba19996999da09386796e6e6f7c8996a2afbcb4a89b8e81756e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e7885919eabb8b9ac9f9286796e6e6e6d675d5145392c20130600000004111d2935414b5564717e8a99a3aebac7c6b9ada297897c6f636b7784919eaab7c4c7baada194877a6e6154473b2e2114080c1925323f4b57636e73726f6d666663615d565c6773808d9aa4afbbc8c5b9ac9f92867b6e61544a3f33281c0f0300000c1925323f4c5865727f8b98a5b2bec0b3a79b918c8b8b8b8b8b8b8b8b8b8b9399a4afbbbfb2a5998c7f7266594c4855616e7b8898a2aebac6b9ada19791979ea5afb9c1bbafa49991847a6d605a50443b3025190c0300000000000000000000000000000916222f3c4955626f7c8895a2afbbb7aa9d9084776a6f7b8895a2aebbc2b6a99c8f8282828282828282827d70727e8b98a5b1beb9ada093867a6d6053473a313844505b667985929facb8b7b6a194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b27323d46535f6974818e98a3aebac6ccc0b5ab9f92867a6d62626262626262626262626a7683909da9b6c3ccbfb2a5998c7f72666262626262626262626262626262626262626262615f574d42362a1e12050000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b778490909090909090857875818e939393939393939393939393939391847774808d909090909090908b7e7164584b3e3125180b0000010c161f282f35393a4045474b5763707d8a96a3b0bdbdb1a5998f898c90959386796d636f7c8996a2afbcb4a89b8e817979797979797979797979797979797979797979797984919eabb8b9ac9f9286796c6262605d554b4135291d1104000000010d18242f3a4754606d7a86929facb9c5cabeb3a99a8d8073676b7784919eaab7c4c7baada194877a6e6154473b2e2114080a16232f3b47525c63666562605c5457545253606d7985929eacb6c0c9bdb2a89c8f8275695e5242382d22170b0000000c1925323f4c5865727f8b98a5b2bec3b8ada39b98979797979797979797979fa4abb5c0bfb2a5998c7f7266594c4a5663707d8996aab4bfc4b8ab9e91858e939ea7b1bbc0b5aba1968e81756c61564c41362a1e150b00000000000000000000000000000915222f3c4855626f7b8895a2aeb8b7aa9d9184776a6f7b8895a2aebbbbafa295887c7575757575757575706b727e8b98a5b1beb9ada093867a6d6053473a2d333f4a5f6b7885929eabacaaaca495887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16202a36424d57616e7b86929fabb4bfcbc7baaea2988c7f726f6f6f6f6f6f6f6f6f6f6f6f7683909da9b6c3ccbfb2a5998c7f726f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695f53463a2d2114070000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b7784919d9d9d9d9d91857875818e9ba0a0a0a0a0a0a0a0a0a0a0a09e91847774808d9a9d9d9d9d9d978b7e7164584b3e3125180b000000040d161d24292c2f35393d4a5763707d8a96a3b0bdbcafa396897d7f84888c86796d636f7c8996a2afbcb9ac9f92878585858585858585858585858585858585858585858688939facb9b9ac9f9286796c5f5554514b433a2f24180d01000000000713202c3945515d6775828f9cacb6c0ccc4b7aa9d918477696b7784919eaab7c4c7baada194877a6e6154473b2e21140807131f2a354049525759585653514a4a474e5864717e8b97a1adbec7c5b9ada1968a7d7064574d422f261c11060000000c1925323f4c5865727f8b98a5b2bec9bfb5ada7a5a4a4a4a4a4a4a4a4a4a4acafb5bdc7bfb2a5998c7f7266594c4c5865727f8b98a5b2bec0b5ab978b7e818e959fa9b3bebdb2a89e938a7e71685e52463e30271d1207000000000000000000000000020815222f3b4855626e7b8895a1acacacaa9e9184776b6f7b8895a2aebbbbafa295887c6f686868686868686365727e8b98a5b1beb9ada093867a6d6053473a2d2d45515e6b7884919ea49f9d9a9a93897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a26313b46525e6974808d99a3aebac7cabfb4aa9e91847c7b7b7b7b7b7b7b7b7b7b7b7b7c83909daab7c3cdc0b3a79a8d807c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6e6155483b2e2215080000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b7784919da9a9a99e91857875818e9ba8aaaaaaaaaaaaaaaaaaaaaa9e91847774808d9aa7a9a9a9a4978b7e7164584b3e3125180b00000000040c12181d202429303d4a5763707d8a96a3b0bdbaada094877a73777b7f83786d636f7c8996a2afbcbbafa3999292929292929292929292929292929292929292929292939aa4afbbb9ac9f9286796c5f534745413a31281d1307000000000004111d2935414c5565717e8b9aa4afbbc8c5b8aca096877b6e6b7784919eaab7c4c7baada194877a6e6154473b2e211408020e19242e3740474b4d4c494644403d4754606a7683909da9b3becbbfb4ab9e9184786d6053463b3020140a000000000c1925323f4c5865727f8b98a5b2becbc7bfb8b3b2b1b1b1b1b1b1b1b1b1b1b9bbc0c7d0bfb2a5998c7f7266594c4e5a6774818d9aa7b4c0bbafa399887c79839097a1acb6c0baafa59e92857a6e615a5043392e23180c0200000000000000000000010b141d222f3b4855626e7b88959f9f9f9f9f9e9184776b6f7b8895a2aebbbbafa295887c6f625c5c5c5c5c5c5865727e8b98a5b1beb9ada093867a6d6053473a2d3744515e6a7784919a9a93908d8a86837c6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57616e7b86929fabb5c0ccc6b9ada1969188888888888888888888888888889095a0acb8c5cec1b5a99d928d888888888888888888888888888888888888888888888276695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b7784919daab6ab9e91857875818e9b9e9e9e9e9e9e9e9e9e9e9e9e9e91847774808d9aa7b3b6b1a4978b7e7164584b3e3125180b000000000001070d10131824303d4a5763707d8a96a3b0bdbaada094877a6d696e73776d66636f7c8996a2afbcc0b5aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa4acb6c0b9ac9f9286796c5f534639352f281f160c010000000000010d19242f3b4754616e7a87939facb9c6c8bdb2a8988b7e726b7784919eaab7c4c7baada194877a6e6154473b2e2114080007121c252e353b3f403f3c3a3836414c56626f7c89959fabbbc5c7baaea3998c7f73665c5044382b1f1202000000000c1925323f4c5865727f8b98a5b2becbcdc9c3c0bfbebebebebebebebebebec6c7ccd2ccbfb2a5998c7f7266594c49536976828f9ca9b5c2b9ac9f9286796e7b85919aa4afbbc1b9ada1978f82756c61554b4034281f14090000000000000000000008131d262f363b4855626e7b88929292929292929184776b6f7b8895a2aebbbbafa295887c6f62554f4f4f4f4f5865727e8b98a5b1beb9ada093867a6d6053473a2e3744505d6a7783908d8a8684807d7a776f6a5f53473b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303b46525e6974818e99a4afbbc7c9bdb2a8a19e95959595959595959595959595959da0a7b1bcc8d1c5b9aea49d9a959595959595959595959595959595959595959595908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b7784919daab7ab9e91857875818e919191919191919191919191919191847774808d9aa7b3beb1a4978b7e7164584b3e3125180b000000000000000104071724303d4a5763707d8a96a3b0bdbaada094877a6d6162666a605c636f7c8996a2afbcc2b9b1aba9a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4abadb3bbc5b9ac9f9286796c5f53463929241d160d04000000000000000814202d3946525e687683909da9b6c3cec2b5a89b8f8275667784919eaab7c4c7baada194877a6e6154473b2e21140800000a131c242a2f3233322f2d2d3946525e6874818e9ba7b1bccdc5b9ac9f92867a6d61544a3f34281c1003000000000c1925323f4c5865727f8b98a5b2bec0c0c0c0c5c7cbd1cacacacec8c5c4c0c0c0c0c0c0bfb2a5998c7f7266594c505b657784919daab7c4b7aa9e91847769707d88939fa7b1bcbeb3a99e948a7d70675c51453b30251a0e000000000000000000030e1a242f3841474855616e7b86858585858585858583776a6f7b8895a2aebbbbafa295887c6f625551515151515865727e8b98a5b1beb9ada093867a6d6053473b3b3b43505c69768284817d7a7774716d68625f584e43372b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d56616e7b87939facb9c2cdc4bab2adaba2a2a2a2a2a2a2a2a2a2a2a2a2a2aaacb1b9c3ced6cbc0b6aea9a7a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b7784919daab7ab9e918578738084848484848484848484848484848484827674808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d6155595d5356636f7c8996a2afbcbcb1a79f9d979797979797979797979797979797979797979797979fa2a9b3beb9ac9f9286796c5f5346392c18130c04000000000000000005111e2a36414c5666737f8c99a9b2bdc9c5b8ab9f9285796d7784919eaab7c4c7baada194877a6e6154473b2e2114080000010a12191f232526252328343f4a54616d7a86929facb9c2c8bcb1a79b8e8175685e5242382e23170b00000000000c1925323f4c5865727f8b98a5b2b4b4b4b4b4b9babfc6cfd5ccc3bdb8b7b4b4b4b4b4b4b4b2a5998c7f7266594c53606c7986929facb9c2b5a89c8f8275696b73808d959faab4bfbbb0a69e9184796d60574d42362a1c1106000000000000000007131f2b36414a52585a5f696e7979797979797979797771626f7b8895a2aebbbbafa295887c6f625e5e5e5e5e5e5e65727e8b98a5b1beb9ada093867a6d605348484848484853606d797774716d686764615e56534e463c32261b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1925303b46535f6975818e9ba7b1bcc8ccc4bdb9b8aeaeaeaeaeaeaeaeaeaeaeaeaeaeb7b8bcc3cbd5dcd2c8c0b9b5b3aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea99c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8a99c8f827a7a808d9aa6b3a89c8f827a7a7f8b98a5aea194887b7784919daab7ab9e9185786e7377777777777777777777777777777777767074808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d61544c514956636f7c8996a2afbcb7ab9f95908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9297a2adbab9ac9f9286796c5f5346392c200701000000000000000000010d1925303c4855626f7c8896a1adb9c5c6baaea298897c6f7784919eaab7c4c7baada194877a6e6154473b2e21140800000000070e1316191a191f2c3844505c66737f8c98a3aebac7c4b8ab9f95897c6f63564c4130261c110600000000000c1925323f4c5865727f8b98a5a7a7a7a7a7a7acaeb4bdc6cec3bab2acaaa7a7a7a7a7a7a7a7a5998c7f7266595354616e7a8798a3aebac0b3a69a8d807367606d78839098a3aebac1b9aca0968c7f72695e5246382d22170b00000000000000000b1724303c47525c64676b6b6b6c6c6c6c6c6c6c6c6c6b6b6b6f7b8895a2aebbbbafa295887c6f6b6b6b6b6b6b6b6a65727e8b98a5b1beb9ada093867a6d6054545454545454545d676d676764615e565754524c47433c342a20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37424d57626f7c89959fabb8c5cfcfc9c5c4bbbbbbbbbbbbbbbbbbbbbbbbbbbbc3c5c8ced5dde4dad2cbc5c1c0bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb6a99c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8aa9e948f87878d929da8b5aa9e948f87878b919ba7aea194887b7784919daab7ab9e9185786b7072727272727272727272727272727272726d74808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d615447444956636f7c8996a2afbcb6a99d90837e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e85929fabb8b9ac9f9286796c5f5346392c201306000000000000000000000815212e3b47535f6a7884919eabb8c4cabeb4aa998c7f737784919eaab7c4c7baada194877a6e6154473b2e21140807090a080705070a0c0d13202d3a4653606d7984919eaab4bfc9beb3a99d9083776b6054443a301e140a0000000000000c1925323f4c5865727f8b989a9a9a9a9a9a9a9fa3abb4bfc8bdb2a8a09e9a9a9a9a9a9a9a9a9a998c7f726661605b626f7c8995aab4bfbeb1a5988b7e72655c666e7b86929fa7b1bebdb2a89f92867b6e61544a3f33281c0f03000000000000000d1a26333f4c58646e74787878787878787878787878787878787c8895a2aebbbbafa295887c78787878787878787771727e8b98a5b1beb9ada093867a6d616161616161616161616161616161616161605c544a3f37322a22180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c4854606a7683909da9b3bec9d5d5d2d1c8c8c8c8c8c7c7c7c7c7c7c7c7c7d0d1d4d8dfe6ece3dcd5d0cdccc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c3b6a99c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8b0a69e9c94949a9da4aeb9b0a69e9c9494989ba3adaea194887b7784919daab7ab9e918578707d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7274808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcb4a89b8e817571717171717171717171717171717171717171717884919eabb8b9ac9f9286796c5f5346392c2013060000000000000000000006121f2b37434e586874818e9bacb6c0ccc2b6a99c8f83767784919eaab7c4c7baada194877a6e6154473b2e2114101416171414110d0806131f2b37434e5864717e8a96a1adbcc6c6b9ada1978b7e7164594f4332291e0c020000000000000c1925323f4c5865727f8b8d8d8d8d8d8d8d8d9299a3aebac5b8aca096918d8d8d8d8d8d8d8d8d8d8c7f72706e6c6568717d8a97a4b0bdc0b5ab96897d7063545f69727f8c95a0acb6b2aca69f988e8175665b5044382b1f1206000000000000010e1a2734414d5a6774808484848484848484848484848484848484919eabb8c4c4b8ab9e918484848484848484848377727e8b98a5b1beb9ada093867a6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5044382c1f18100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c38434e5864717e8a97a1adb9c6d2dfdfded0c9c3c0bebababababababababac3c4c8cdd4dde3dad1cac4c1bfbabababababababababababababababababab6a99c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8b5b0aaa9a1a1a6a8aeb6c0b8b0aaa8a1a1a5a7adb5aea194887b7784919daab7ab9e91857875818c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c847774808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcb4a89b8e817878787878787878787878787878787878787878787884919eabb8b9ac9f9286796c5f5346392c20130600000000000000000000030f1b26323e4b5764717e8a9aa4afbbc8c5b9ac9f9286797784919eaab7c4c7baada194877a6e6154473b2e21141c20222321201e19140d15222e3b4754606a7683909da8b2bdcbbfb4ab9e9285796d6053463d3220170d000000000000000a1623303d495663707d80818181818181818086929facb9c4b7aa9e918480818181818181818181807d797d7b797775737f8c98a5b2bfbbafa499887b6e615557606d7883909aa4aea8a19e94908781786c605346392d201306000000000000020f1c2835424f5b6875828e9191919191919191919191919191919196a1adb9c5c6b9ada1979191919191919191918579727e8b98a5b1bebbaea195887c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d4653606d7985929eabb8c2cdd8dbd0c7beb8b3b2adadadadadadadadadb6b8bcc3cbd4dcd1c8bfb9b4b3adadadadadadadadadadadadadadadadadadada99c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8b5bbb7b5adadb3b5b9c0c8c1bbb7b5adadb2b3b8bbaea194887b7784919daab7ab9e91857875818e999999999999999999999999999991847774808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcb9ac9f92878585858585858585858585858585858585858585858588939facb9b9ac9f9286796c5f5346392c20130600000000000000000000000a14212e3a4754616d7a87939facb9c6c7baaea398897c7784919eaab7c4c7baada194877a6e6154473b2e2121272c2f302e2d2a251e171e2a36424d57626f7c89959fabbac4c7baaea3998c8073675c5145382c1f1305000000000000000916222f3b4854606b7074747474747474747885929fabb8c1b5a89b8e817574747474747474747474707b888785838280828f9ca9b5c2b9ac9f9386796d6462605d666f7c87939fa29f96918a827c746c665b5044382b231a10050000000000020f1c2835424f5b6875828e9b9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea1a9b2bdc9c9beb2a9a19e9e9e9e9e9e9e9e928579727e8b98a5b1bebcb0a4988e88878787878787878787878787878787878787877b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161f2c3844515c6673808d9aa6b0bbc7d3d4c9beb5ada7a5a0a0a0a0a0a0a0a0a0aaabb1b9c3cdd5cabfb6aea8a6a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8b5c2c3c2babac0c1c5cad2ccc7c3c2bababec0c3bbaea194887b7784919daab7ab9e91857875818e9ba5a5a5a5a5a5a5a5a5a5a5a59e91847774808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcbbaea3999292929292929292929292929292929292929292929292939aa4afbbb9ac9f9286796c5f5346392c20130600000000000000000000000713202d3946525e687783909daab6c3cbbfb4aa998c7f7784919eaab7c4c7baada194877a6e6154473b2e212b33383c3d3b3936302920212d3a46535e6975818e9ba7b1bcccc5b9ac9f92867a6e61554b4034281c1004000000000000000713202c38444f596063676767676767676c7885929fabb8c1b5a89b8e827568676767676767676767707d899892908e8c8f949fabb7c4b8ab9e91847873716f6d67696a74818e9898928c847e766f6a605b544a443e352c21160b0000000000020f1c2835424f5b6875828e9ba8ababababababababababababababadb2bbc4cfcfc4bbb2adababababababab9f928579727e8b98a5b1bec0b5aaa09895949494949494949494949494949494949494887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54626e7b88949fabb7c6d1cfc3b8ada39b989494949494949494949d9fa7b1bcc8d0c4b9aea49c99949494949494949494949494949494949494949494908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8b5bababababdbec2c8cfd8d1cac4c0bfbababababaaea194887b7784919daab7ab9e91857875818e9ba8aaaaaaaaaaaaaaaaaaaaaa9e91847774808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000030a1724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcbfb5aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa4acb6c0b9ac9f9286796c5f5346392c201306000000000000000000000005111d2a36414c566673808d99aab4bfcac2b6a99c8f837784919eaab7c4c7baada194877a6e6154473b2e2b353d44484a4746413b32282935414c56616e7b87929facb9c2c7bbb0a69b8e8174685e5243392e23180c000000000000000004101b27323d474f54565a5a5a5a5a5a5f6c7885929fabb8c1b5a89b8e8275685b5a5a5a5a5a5a5a64717e8b979f9d9b999c9fa6b0bbc5b8ac9f928681807e7c7a787674727a85928e867f79716c625f585957554f473e33281c100400000000020f1c2835424f5b6875828e9ba8b5b7b7b7b7b7b7b7b7b7b7b7b7b8b9bdc4cdcec8c5c3beb9b8b7b7b7b7b7ac9f928579727e8b98a5b1bec6bbb2aaa4a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3947535f697683909caab4bfcbccc0b3a79b918b87878787878787878790959fabb8c4cdc1b4a89c928c878787878787878787878787878787878787878787878276695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8aeaeaeaeaeb0b1b6bdc5cfc8bfb8b4b2aeaeaeaeaeaea194887b7784919daab7ab9e91857875818e9b9d9d9d9d9d9d9d9d9d9d9d9d9d91847774808d9aa7b3beb1a4978b7e7164584b3e3125180b00000000000001080e131724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcc4bab2acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7acaeb4bcc5b9ac9f9286796c5f5346392c2013060000000000000000000000010d1925303d495663707c8998a2aebac6c5b8ac9f92857984919eaab7c4c7baada194877a6e6154473b2e323d474f545654524c443d342e3946525e6874808d99a3afbbc7c4b7ab9f94887c6f62564c4130271d12070000000000000000000b16212b353d4448494e4e4e4e4e525f6c7885929fabb8c1b5a89b8e8275685b4f4e4e4e4e4e5966727f8c99a5aaa8a6a9abb0b8c2c6baaea298928e8c8a88878583817f7d8187817b7472706e696a68666361594f44382c20140700000000020f1c2835424f5b6875828e9ba8b5b6b6b6b6b6b6b6b6b6b8babec4c5c9cfcbc3bcb8b7b6b6b6b6b6b6b6b6ac9f928579727e8b98a5b1becbc4bbb5b0aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c2b37424d5765717e8b98a3aebac7cbbeb2a5988b7f7a7a7a7a7a7a7a7a7a83909daab6c3ccbfb3a6998c807a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a6d6054473a2d2114070000000000000f1c2935424f5c6875828f9ba1a1a1a1a1a1a3a5abb3bdc8bfb5ada8a6a1a1a1a1a1a1a194887b7784919daab7ab9e91857875818e909090909090909090909090909090847774808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000020b12191f2324303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcbdb2a8a09e9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9fa2aab4bfb9ac9f9286796c5f5346392c2013060000000000000000000000000813202d3a4653606d7985929facb8c5c7baaea298897c84919eaab7c4c7baada194877a6e6154473b303b444f596063615e564f443f38414b55616d7a86929fabb5c0c8bcb1a79c8f82766a5f53443b301e150b00000000000000000000040f19232b32383b3d4141414145525f6c7885929fabb8c1b5a89b8e8275685b4f424141414e5a6774818d9aa7b4b5b3b5b7bbc2cacabfb4aaa29f9b9997959791908e8c8a8e868482807f7d7b79777573706b6155483c2f23160900000000020f1c2835424f5b6875828e9ba8a9a9a9a9a9a9a9a9a9a9abadb3bbc5d0cec3b9b1acaaa9a9a9a9a9a9a9a9a99f928579727e8b98a5b1becbcbc6c0bcbbbababababababababababababababaaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c4754606d7a86929facb9c5d0c1b5a89b8e82756d6d6d6d6d6d6d7683909da9b6c3ccbfb2a5998c7f726d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d685d5245392c2013060000000000000f1c2935424f5c6875828f94949494949494969aa1abb6c2b8ada39c999494949494949494887b7784919daab7ab9e918578738084848484848484848484848484848484827574808d9aa7b3beb1a4978b7e7164584b3e3125180b00000000010b141d242b3033343d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcb9aca096918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a2aebab9ac9f9286796c5f5346392c20130600000000000000000000000006131f2c3845515c6676828f9ca9b5c2cabfb4aa988c7f84919eaab7c4c7baada194877a6e6154473b36414c56606b706e686059504a4245515d6773808c98a2aebdc7c5b8aca0958a7d7063584e4332291e0c03000000000000000000000007111921272c2f303434343945525f6c7885929fabb8c1b5a89b8e8275685b4f423535424f5c6875828f9ba8b5c1bfc2c3c7ccd4d0c5bcb4aeaca8a6a4a9a19e9c9a98979a93918f8d8b89878583817f7d7063574a3d3024170a00000000020f1c2835424f5b6875828e9b9c9c9c9c9c9c9c9c9c9c9c9fa2a9b3becac8bcb1a7a09d9c9c9c9c9c9c9c9c9c9c928579727e8b98a5b1bebebebebebebebebebebebebebebec2c3c7ccc7c7bbaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c3945525d6875828f9baab4bfcbc5b8ac9f9285796d61616161616a7683909da9b6c3ccbfb2a5998c7f72666161616161616161616161616161616161616161605d564c4135291d11040000000000000f1c2935424f5c68758187878787878787878a8f9aa5b1beb4a89c918c8787878787878787877b7784919daab7ab9e9185786e7377777777777777777777777777777777757074808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000008121d262e363c3f41414a5763707d8a96a3b0bdbaada094877a6d615447414956636f7c8996a2afbcb7aa9e91848181818181818181818181818181818181818181818186929facb8b9ac9f9286796c5f5346392c20130600000000000000000000000004101c2834404b5466737f8c99aab4bfc1beb5a89b8f8184919eaab7c4c7baada194877a6e6154473b3a46525e68707d7a706b605c544d4b55606d7a85929faab4bfc9bdb2a89d9083786c6053463c3220170d00000000000000000000000000070f161b20222327272c3945525f6c7885929fabb8c1b5a89b8e8275685b4f423b3b3f4a546a7683909da9b6bbbfc6c6ccd3dcd7cec5bfbab8b4b3b1b3adaba9a7a5aca49f9e9c9a98969892908e8c83766a5d5043372a1d1004000000020f1c2835424f5b6875828e8f8f8f8f8f8f8f8f8f8f8f8f9297a2adbac6c5b8aca095908f8f8f8f8f8f8f8f8f8f8f8579727e8b98a5b1b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b6b7bbc2cac7bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5664717d8a98a3aebac7c6baaea298897d70635654545d6a7683909da9b6c3ccbfb2a5998c7f7266595454545454545454545454545454545454545454524c433a2f24190d010000000000000714212e3a4754616d7a7b7b7b7b7b7b7b7b7d8a96a3b0bdb2a6998c7f7b7b7b7b7b7b7b7b7b787784919daab7ab9e918578757575757575757575757575757575757575757575808d9aa7b3beb1a4978b7e7164584b3e3125180b000000030e19242e3840474c4d4e4e5763707d8a96a3b0bdbaada094877a6d61544e4e4956636f7c8996a2afbcb4a89b8e817574747474747474747474747474747474747474747884919eabb8b9ac9f9286796c5f5346392c201306000000000000000000000000000c18232e3c4956636f7c8998a3aeb8b5b3adab9e918584919eaab7c4c7baada194877a6e6154473b434f59616e7a85857d736d665e57515d67727f8c97a2adbcc6c5b9ada1968b7e71655b5044372b1f12050000000000000000000000000000040b101316161b1f2c3945525f6c7885929fabb8c1b5a89b8e8275685b4f48484848505b667885919eaaacaeb5b6bbc1cad3d7d0cac6c5c5c1bfbdbeb9b8b6b4b2b6afacaba9a7a5aaa29f9d9b8f8275685c4f4235291c0f02000000000d192633404c5966737f8383838383838383838383838385929fabb8c5c3b7aa9d908383838383838383838383838276727e8b98a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a9abb0b8c2ccbbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4753606d7a86929facb8c5c3beb4aa9a8d807467574d505d6a7683909da9b6c3ccbfb2a5998c7f7266594c4747474747474747474747474747474747474745413a31281e1308000000000000000713202d3946525e686d6e6e6e6e6e6e6e6f7c8895a2afbbb2a5988b7f726e6e6e6e6e6e6e6e6d7784919daab7ac9f92868182828282828282828282828282828282828282828184919daab7beb1a4978b7e7164584b3e3125180b00000007131f2b36404a52585a5b5b5b63707d8a96a3b0bdbaada094877a6d615b5b5b5356636f7c8996a2afbcb4a89b8e817676767676767676767676767676767676767676767884919eabb8b9ac9f9286796c5f5346392c201306000000000000000000000000000713202d3a4653606d7986929facaba8a9a29e9b979186929facb9c5c7baada194877a6e615447414c55616b75818e918780786e696159606d7a85929ea9aeb4babeb3a99e9184796d6053493f33271b0f03000000000000000000000000000000000407090a121f2c3945525f6c7885929fabb8c1b5a89b8e8275685b545454545454606c7986929b9d9fa3abaab0b8c1cccec6bfbab8b8babfbec0c2c4c3c1bfc0bbb9b7b5b3b2b4aeaca79a8d8174675a4e4134271b0e01000000000c1925323e4b57636d7376767676767676767676767676828f9ca9b6c2bdb0a3968a7d76767676767676767676767670727e8b9898989898989898989898989898989898989c9fa6b0bbc7bbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202c3945515d6775828f9cacb6b9b6b3adaa9e918477695f53505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39352f281f160c010000000000000005111d2935414c565e61616161616161626f7c8895a2afbbb2a5988b7f7265616161616161616a7784919daab7aea398928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9196a0acb8beb1a4978b7e7164584b3e3125180b0000000b1723303c47525c646767676767707d8a96a3b0bdbaada094877a6d67676767605d636f7c8996a2afbcb8ab9e91858282828282828282828282828282828282828282828286929facb9b9ac9f9286796c5f5346392c2013060000000000000000000000000006131f2c3845515c677683909ca19e9b9897928f8c889196a0acb9c5c7baada194877a6e61544745515d67707d8a9399938d827b706b6066737f8c939a9fa3abaeb4ada1978b7f72665c5141382d22170b000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e82756861616161616161616e7a878c8f9192999b9ea6b0bbc6c6bcb4aeacacaeb4b2b4b6b8b9bebec0c2c4c4c2c0bebfbab2a6998c7f7366594c403326190d00000000000a16232f3b46515b636669696969696969696969696976838f9ca9b6c2bdb0a3968a7d70696969696969696969696965727e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f949fabb7c3bbaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b5565717e8b9aa4afaca9a9a29f9b96887b6e6255505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2c29241e160d040000000000000000010d1925303a444c5254545454545455626f7c8895a2afbbb2a5988b7f72655854545454545e6a7784919daab7b4aaa39f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9da0a8b2bdbeb1a4978b7e7164584b3e3125180b0000000d1926333f4c58646e7474747474747d8a96a3b0bdbaada094877a74747474746d67636f7c8996a2afbcb9ada197918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9298a3aebab9ac9f9286796c5f5346392c2013060000000000000000000000000004101c2834404b556673808c9897928e8b8885827f7c84919eaab7c4c7baada194877a6e6154474f59606d7a84919ea49f9490857d746d666f7c81878e92999fa2aaa99e9285796d60544a402f261b1106000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e82756e6e6e6e6e6e6e6e6e6e797e80828486888f939eaab6c3bfb4aaa29f9fa3aaa5a7a9abadb3b1b3b5b7b9babfbfc0beb1a4988b7e7165584b3e3225180b000000000006121e2a3540495157595c5c5c5c5c5c5c5c5c5c5c6976838f9ca9b6c2bdb0a3968a7d70635c5c5c5c5c5c5c5c5c5c626f7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f828f9ca9b6c2bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b4754616e7a87939fa39f9c9997928f8b887e716458505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332621212121212121212121212121212121201d19130c040000000000000000000008131e28323a414647484848484955626f7c8895a2afbbb2a5988b7f7265584c484848515e6a7784919daab7bcb4aeaca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8aaacb2bac3beb1a4978b7e7164584b3e3125180b0000010e1a2734414d5a6774808181818181828f9ca9b5c2c1b4a89b8e818181818181796d636f7c8996a2afbcbeb2a9a19e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa3aab4bfb9ac9f9286796c5f5346392c20130600000000000000000000000000000c18232e3d4a5663707d898b8885827f7c7975727784919eaab7c4c7baada194877a6e61544c56616b74818e96a1ada69f97928a80786e6a6f757b81868d92989ea1978c7f72675d5142392e1d140a00000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c2b5a89c8f827b7b7b7b7b7b7b7b7b7b7b7b7b7a7577797b828f9ba8b5c2baaea29892929896989a9c9ea1a9a4a6a8aaacaeb4b2b4b6b0a3968a7d7063574a3d3024170a0000000000020d19232e3740464b4c4b5153535353535353535c6976838f9ca9b6c2bdb0a3968a7d7063575353535353535350535f6a6f72727272727272727272727272727272727273808d9aa6b3c0bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687783909a9992908c8985827e7b716c6256505d6a7683909da9b6c3c3bfb2a5998c7f7266594c3f33261914141414141414141414141414141413110d08010000000000000000000000020c1620283035393a3b3b3b3c4955626f7c8895a2afbbb2a5988b7f7265584c3f3b44515e6a7784919daab7bbbfbab8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b7b8bdbbbbbbb1a4978b7e7164584b3e3125180b000005121f2c3845525f6b78858e8e8e8e8e8f949fabb7c3c2b6aa9e938e8e8e8e8e877a6d636f7c8996a2afbcc3b9b1acaaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6abaeb4bcc5b9ac9f9286796c5f5346392c20130600000000000000000000000000000714202d3a4753606d79817e7b7875726f6c656b7784919eaab7c4c7baada194877a6e6154525d68707d8a939da8b2b0a9a29e928d837b706c6a6e747b80858c919792857a6d60554b4030271c0b0200000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5b7aa9e948f878787878787878787878787878074666d75818e9ba8b4c1b8ac9f92868688898b8d8f91979597999b9e9fa3aba5a7a9abab95887c6f6255493c2f22160900000000000007121c252e353b404b555d6060606060606060606976838f9ca9b6c2bdb0a3968a7d706360606060606060605c54585f6265656565656565656565656565656565656773808d9aa6b3c0bbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566773808d8d8a86837f7c7975726e69625a50505d6a7683909da9b6b6b6b6b2a5998c7f7266594c3f3326190c07070707070707070707070707070604010000000000000000000000000000040e161e25292d2e2e2e2f3c4955626f7c8895a2afbbb2a5988b7f7265584c3f3744515e6a7784919daaaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea4978b7e7164584b3e3125180b000005121f2c3845525f6b7885929a9a9a9a9c9fa6b0bbc7c6baafa59e9b9a9a9a93877a6d636f7c8996a2afbcbcb1a7a09d999999999999999999999999999999999999999999999fa2aab4beb9ac9f9286796c5f5346392c20130600000000000000000000000000000613202c3945515d676d75726e6a686562605b6b7784919eaab7c4c7baada194877a6e61545a616d7a84919ea5afbabbb3ada49d9590857d706462696e737a7f858b8c7f72675d5143392f1e150b0000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5bbb0a69e9c9494949494949494949494948d8174676976838f9ca9b6c1b4a79a8e81787b7d7f81838587898b8d8f91929996989a9c9ea199877a6e6154473b2e211408000000000000000a131c1f2c3845515d676d6d6d6d6d6d6d6d6d6d76838f9ca9b6c2bdb0a3968a7d706d6d6d6d6d6d6d6d6d665c505355585858585858585858585858585858585a6773808d9aa6b3c0bbaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303d4a5663707d84817d7a76736f6d6665615f575048505d6a7683909da9aaaaaaaaaaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000040c13191d202121222f3c4955626f7c8895a2afb4b2a5988b7f7265584c3f3744515e6a7784919da2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978b7e7164584b3e3125180b000005121f2c3845525f6b7885929ea7a7a7a9abb0b8c2cccbc1b7afaaa8a7a7a093877a6d636f7c8996a2afbcb8aca095908d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9298a2aebab9ac9f9286796c5f5346392c201306000000000000000000000000000004111d2935404b555d606865625f585855535e6b7784919eaab7bdbdbaada194877a6e6157616c75818e96a1adb7c0c5beb9aea79f93877d7063575e61686d72797e83796d60554b4131271d0c030000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5c1b8b0aaa8a1a1a1a1a1a1a1a1a1a1a19a8d8174676a7784909daab7bfb3a6998c80736e70727476787a7c7e80818486888a8c8d8f91979286796c605346392d20130600000000000000010714202d3a4753606d797a7a7a7a7a7a7a7a7a79828f9ca9b6c2bdb0a4978a7e7a7a7a7a7a7a7a7a7a786d605346484c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4d5a6773808d9aa6b3c0bbaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000816222f3c4854606b707774706d686662605c5455534d4543505d6a7683909d9d9d9d9d9d9d9d998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000002080d11131416222f3c4955626f7c8895a2a7a7a7a5988b7f7265584c3f3744515e6a77849195959595959595959595959595959595959595959595959595959595959595959595959595958b7e7164584b3e3125180b000005121f2c3845525f6b7885929eabb4b4b5b7bbc2cad4d3c9c1bab6b4b4ada093877a6d636f7c8996a2afbcb7aa9d90838080808080808080808080808080808080808080808086929fabb8b9ac9f9286796c5f5346392c2013060000000000000000000000000000010d18242f3a434b51535b5855534e4c48515e6b7784919eaab1b1b1b1ada194877a6e615e69717e8a939ea9b2bdc9cabfb4aaa0958d80736b605452565d60676d71766d675d51433a2f1f150b000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5cac1bbb7b5aeaeaeaeaeaeaeaeaeaea79a8d817467657885919eabb8beb2a5988b7f726563656769686d6f71737c847c7b7d7f81838587888578665b5044382b1f12060000000000000004111d2a3744505d6a7783868686868686868686868f949fabb7c4beb2a69a908a8686868686868686867d7063564a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d5a6773808d9aa6b3c0bbaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f5960636b6764605d565653504a4846423b43505d6a7683909090909090909090908c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000105070916222f3c4955626f7c88959b9b9b9b9b988b7f7265584c3f3744515e6a7784888888888888888888888888888888888888888888888888888888888888888888888888888888887e7164584b3e3125180b000005121f2c3845525f6b7885929eabb8c1c2c3c7ccd4dcdbd3cbc6c2c1baada093877a6d636f7c8996a2afbcb4a89b8e817573737373737373737373737373737373737373737884919eabb8b9ac9f9286796c5f5346392c20130600000000000000000000000000000007131d28313a4045474e4b4847433f44515e6b7784919ea4a4a4a4a4a4a194877a6e61666e7b85929fa5afbbc4ccc3baaea2989083796d60594f464c52555c606569605d554b4031281d0d03000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5d2ccc7c3c2bababababababababab4a79a8d8174676c7986929facb9bdb1a4978a7e716457585a565d606b707d8691857b70727476787a7c7d7063544a3f33281c0f030000000000000004111d2a3744505d6a7783909393939393939393939c9fa6b0bbc7c2b7aca29a979393939393939393897d7063565659595959595959595959595959595959595a6773808d9aa6b3c0bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d474f54565e5a5754524c4946443f3b3a3631414e5b68748183838383838383838383837e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c888e8e8e8e8e8e8e8b7f7265584c3f323b4855616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a6d6054473a2d211407000005121f2c3845525f6b7885929eabb8bcbfc0c4cad1d9d8cfc8c2bebdbaada093877a6d636f7c8996a2afbcb4a89b8e817878787878787878787878787878787878787878787884919eabb8b9ac9f9286796c5f5346392c201306000000000000000000000000000000010c161f282f35393a423f3b3a373144515e6b778491979797979797979794877a6e616c78828f97a2adb7c1cdc3baafa59f92867c6e675c51473d41454b5153585d53514b43392f1f160c00000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5cbc3bcb8b6b2b2b2b2b2b2b2b2b2b2a79a8d8174676d7a8799a3afbbbcb0a396897d7063564c515a616c707d86929791847b6e6969676d6f706b615542382d22170b000000000000000004111d2a3744505d6a7783909da0a0a0a0a0a0a0a0a9abb0b8c2cdc8bdb4aca6a4a0a0a0a0a0a0a096897d706360636666666666666666666666666666666666666773808d9aa6b3c0bbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353d44484a514e4a4745413c3a38342e2d2a33404c59646f747777777777777777777777716c6256493d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8181818181818181817d706356493d303a47535f696e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d685d5245392c201307000005121f2c3845525f6b7885929eabafafb2b4b8bfc7d1cfc6bdb6b2b0afada093877a6d636f7c8996a2afbcb8ac9f92868484848484848484848484848484848484848484848487929facb9b9ac9f9286796c5f5346392c20130600000000000000000000000000000000040d161d24292c2d35322f2e2b3844515e6b77848a8a8a8a8a8a8a8a8a8a877a6e6a727f8c949fa9b3bec9c6bcb2a89e938b7e716a5f554b403535394045464b504745403931281d0d0400000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5c3b9b1acaaa5a5a5a5a5a5a5a5a5a5a59a8d8174676e7b8895abb5c0c0b5ab95887c6f6255515b626c717e879298a19691847b6e685e60626361594f442f261c1106000000000000000004111d2a3744505d6a7783909daaadadadadadadadb6b7bbc2cad4cfc6bdb7b2b0adadadadadada396897d70636b707373737373737373737373737373737373737373808d9aa6b3c0bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a232b33383c3d44413d3a39352f2d2b28232124303c48535d64686a6a6a6a6a6a6a6a6a6a6a64625a5045392d21150800000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e696e747474747474747474706b6054483c2f37424d575f6162626262626262626262626262626262626262626262626262626262626262626262626262626262605d564c4135291d1104000005121f2c3845525f6b7885929ea3a3a3a5a8adb5bfcac8bdb4aba6a3a3a3a093877a6d636f7c8996a2afbcbaaea29892919191919191919191919191919191919191919191919299a3afbbb9ac9f9286796c5f5346392c2013060000000000000000000000000000000000040c13181d20202825222124313d4a5764707d7e7e7e7e7e7e7e7e7e7e7e796d6f7c87929fa6b0bcc5cbbfb4aaa0968e81756c62574e43392e292e34383a3e433a39352f281f160c0000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5bcb1a7a09d9898989898989898989898988d8174676f7c8996a2afbcbbafa499877a6e61545b636d727e879299a2a8a09691837a6d685d5557554f473e331d140a00000000000000000004111d2a3744505d6a7783909daab6b9b9b9b9b9b9c2c4c7cdd4dcd8cfc8c2bebdb9b9b9b9b9b0a396897d7063707d808080808080808080808080808080808080808083909da9b6c3bbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21272c2f303834312d2c2924201f1c1714202b37414b53595b5d5d5d5d5d5d5d5d5d5d5d585650483e34291d1105000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e616868686868686868686360594f44382c313c454d53555555555555555555555555555555555555555555555555555555555555555555555555555555555554524c443a2f24190d01000005121f2c3845525f6b78859296969696999ca3adb8c4c2b6aba29a9796969693877a6d636f7c8996a2afbcbfb4aaa29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa3abb5c0b9ac9f9286796c5f5346392c20130600000000000000000000000000000000000001070d1113141b18151623303c4955616c7071717171717171717171716d6d79849199a3aeb8c2ccc3baaea3989184796d605a50453c30271d23282c2d32362d2c29241d160d040000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5b8aca095908c8c8c8c8c8c8c8c8c8c8c8c8c807467707d8a97a3b0bdb9ac9f9386796d605b606d727f879299a3abb2a8a09590837a6d675d544a443e352c210b0200000000000000000004111d2a3744505d6a7783909daab4b4b4b4b4b4b4b8b9bec4cdd6d4cac2bbb7b6b4b4b4b4b4b0a396897d706673808c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c90959fabb8c4bbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f161c2022232b272421201d191312100b0f1a252f3941484c4e50505050505050505050504b49453e362d22170c000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b454d53545b5b5b5b5b5b5b5b5b56544f473d33272a333c424748484848484848484848484848484848484848484848484848484848484848484848484848484848484745413a32281e130800000005121f2c3845525f6b788589898989898c919ca8b4c0beb2a69a908a89898989877a6d636f7c8996a2afb2b2b2b4aeacababababababababababababababababababababababacafb5b2b2b2ac9f9286796c5f5346392c2010080000000000000000000000000000000000000000010406070f0c0814202d3944505a616464646464646464646464646c74818e96a0abb5bfcac3baafa59f92867c6f675d51483f332a1e15181c1f20252a20201d18120c04000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c3b6aa9d90837f7f7f7f7f7f7f7f7f7f7f7f7f7d7065717e8b98a4b1beb8ab9e928578665c656c737f8b9399a3abb4bab1a8a0959083796d665c5044382c231a100000000000000000000004111d2a3744505d6a7783909da7a7a7a7a7a7a7a7abadb2bbc4cfccc2b8b0aba9a7a7a7a7a7a7a396897d706673808c999999999999999999999999999999999999999d9fa7b1bcc7bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101416171e1b171413110d0806030009131d272f373c404144444444444444444444443e3d39342d241b10060000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b4246484e4e4e4e4e4e4e4e4e4948443d352b21212a31373a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a39352f2820160c0100000000091623303c4956636f7d7c7c7c7c7c7f8c99a5b2bfbdb0a3978a7e7c7c7c7c7d786d636f7c8996a2a5a5a5a5a5a5a5a5a5a5a5a5a8aaafb7b7b7b7b7b2acaba5a5a5a5a5a5a5a5a5a5a5a5a59f9286796c5f53463928211a11080000000000000000000000000000000000000000000000020004101c28333e475055575757575757575757555f69717e8a939ea8b2bdc6c6bcb2a89e938b7f726a5f554b41362d21180c0c101313181d1413100d070100000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e8175727272727272727272727272706b66727f8c99a5b2bfb7aa9d9084776a666d77808c919fa4abb5bdc3bab1a79f959083796d6053463a2d2013070000000000000000000004111d2a3744505d6a7783909b9b9b9b9b9b9b9b9b9ea1a9b2bec9c7bbb0a69f9c9b9b9b9b9b9b9b96897d706673808c99a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a9abb1b9c2cdbbaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a110e0a0706040100000000010b151d252b303335373737373737373737373731302d29221b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212931363a3b4141414141414141413d3c38332b2319181f262b2d2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2c29241e160d0400000000000915222f3b4854606b6f70707070707d8a96a3b0bdbaada094877a70707070706d66636f7c8996989898989898989898989898989b9ea5afbac4bdb2a8a19e98989898989898989898989898989286796c5f534638332c231a1005000000000000000000000000000000000000000000000000000b17222c353e44494a4b4b4b4b4b4b4b515c676e7b86929fa5afbac4cabfb4aaa0968e81756d62584e433a2f241b0f06000406070b1007060401000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e827568656565656565656565656563606673808d99a6b3c0b6a99c8f8376686d78818d929ca3afb5bdc2bab2a9a29992887f72665c5044382c1f12060000000000000000000004111d2a3744505d6a77838e8e8e8e8e8e8e8e8e8e9197a1adb9c6c3b7ab9f948f8e8e8e8e8e8e8e8e897d706673808c99a6b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b8bcc2cbc7bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050100000000000000000000020b131a202427282a2a2a2a2a2a2a2a2a2a2a2524211d17100900000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e353535353535353535302f2c272119110e151a1e21222222222222222222222222222222222222222222222222222222222222222222222222222222222221201d19130c0400000000000007131f2c38434f59606363636363707d8a96a3b0bdbaada094877a6d63636363605c636f7c898b8b8b8b8b8b8b8b8b8b8b8b8b8b8e939eaab6c3b9aca196918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b87796c5f5348443e352c21160b0000000000000000000000000000000000000000000000000005101a232c33393c3d3e3e3e3e3e45505a606d79839098a2aeb7c1cbc2baaea2989184796d605b51463c31281d12090000000000000300000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e8275685b59595959595959595959565b6774818e9aa7b4c1b5a89b8e82756e7a828e939da4adbbc0c0b8b0a8a19792877e726d62544a3f34281c100300000000000000000000000d192633404c5966737f8181818181818181818185919eabb8c4c2b6a99c8f828181818181818181817c6f6673808c99a6b3bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfc3c4c7cdc7c7bbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f14181a1b1d1d1d1d1d1d1d1d1d1d1d181715110c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e21212828282828282828282322201c160f0703090e121415151515151515151515151515151515151515151515151515151515151515151515151515151515151413110d080100000000000000030f1b27323d474f545656565763707d8a96a3b0bdbaada094877a6d615656565356616e7a7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f818e9ba8b5c1b7ab9e91847f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f72655857554f473e33281c10040000000000000000000000000000000000000000000000000008111a22282d303131312f3a434e57616c74808d95a0aab4bfc9c2b9aea49f92867c6f675d51493f342a1f160c000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e8275685b4f4c4c4c4c4c4c4c4c4c4f5c6875828f9ba8b5c0b4a79a8d81747b848f949ea5aeb6bfbfbbafa69f9691857d716c625b5142382e23170c0000000000000000000000000c1925323e4b57636d7374747474747474747476828f9ca9b6c2bdb0a3968a7d7474747474747474746f6a6673808c99a6b3bababababababababababababababababababababababaaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0e0e11111111111111111111110b0a080500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151b1b1b1b1b1b1b1b1b161613100b05000000020608080909090909090909090909090909090909090909090909090909090909090909090909090909090907070401000000000000000000000a16212b343d434849494a5763707d8a96a3b0bdbaada094877a6d61544f59606364686e7272727272727272727272727272727f8b98a5b2beb6a99d9083767272727272727272727272727272726d64646361594f44382c20140700000000000000000000000000000000000000000000000000000810171c202324242935404b555f6a717e8a929da7b1bcc5c5bbb1a79d928b7e716a5f554b40372d22180d04000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e8275685b4f423f3f3f3f3f3f3f43505c6976838f9ca9b6bfb3a6998c807379828f949fa7b1b9bdb5aea59d9490847c706b615a51493f30261c11060000000000000000000000000a16232f3b46525b636668686868686868686976838f9ca9b6c2bdb0a3968a7d706868686868686868625f6673808c99a6aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080e0e0e0e0e0e0e0e0e0a090704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32383b3c3d4a5763707d8a96a3b0bdbaada094877a6d615454606b6f7171717171717171717171717171717171727f8b98a5b2beb6a99d908376717171717171717171717171717171717171706b6155483c2f231609000000000000000000000000000000000000000000000000000000050b10141617202c3945515d676e7c86929fa4aeb9c3c7bdb3a99f958d80746c61584e433a2f251b100700000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8b9b5a89b8e8275685b4f423532323232323744505d6a7783909daab6bfb2a5988c7f726d79828f959fa7b1b3aba39f938e827a6f6a605950483f372d1e150a0000000000000000000000000007131e2a3540495257595b5b5b5b5b5b5b5c6976838f9ca9b6c2bdb0a3968a7d70635b5b5b5b5b5b5b55596673808c99a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921272c2f303d4a5763707d8a96a3b0bdbaada094877a6d615456636f7d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e818e9ba8b4c1b7aa9e91847e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000408121f2b37434e58606d79839198a2aeb6c0cbc0b5aba1979083786d605a50463c31281d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabacacaca89b8e8275685b4f4235282626262b3845515e6b7884919eabb7b9b1a4988b7e71676d79839095a0a8a9a199928b81786d685f584f473e362d251b0c0300000000000000000000000000020d19242e3740464b4c4e4e4e4e4e4e505c6976838f9ca9b6babab0a3968a7d7063574e4e4e4e4e4e4d596673808c9494949494949494949494949494949494949494949494949494949494887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f24303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8e939eaab6c2b9aca096918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000815212e3a47535f6a75828f95a0aab4bfc6c2bbafa39992857b6e665c51483e342a1f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929f9f9f9f9f9f9b8e8275685b4f4235281c191c2934404b556c7885929fabacacaca4978a7d7164676d7a839096a09f9791877f746d665e564e463d352c241b130900000000000000000000000000000007121c252e353b3e40414141414143505c6976838f9ca9aeaeaeaea3968a7d7063574a41414141414d59667380878787878787878787878787878787878787878787878787878787878787877b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1724303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818e97979797979797979797979797979797979b9ea5afbac6bdb2a8a09e979797979797979797979797979797979797908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8691969ea5aeb5bdb9afa59f92877d70695e544b40362d22180d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c788592929292929292928e8275685b4f4235281c131f2c3845515c677986929f9f9f9f9f9f96897d70635d686d7a8491969490857d726d605c544c443c342b231a120901000000000000000000000000000000000a131c242a2f3233353535353643505c6976838f9ca1a1a1a1a1a1968a7d7063574a3d3535353a4754606d7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818e9ba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a8aaafb7c1cbc4bab2acaaa4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49c908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000815212e3a47535f6a6f7c848e939fa3abb2b1a79e938b7f726b60574d42392e241b100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b78858686868686868686868174685b4e4135281b14202d3a4753606d7a869292929292929399897c6f63565e686e7b84918d827a6f6b625b514b423a322a221a1108000000000000000000000000000000000000010a12191e232526282828293643505c6976838f94949494949494948a7d7063574a3d30282c3945515d676d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818e9ba7b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b4b6bac1c9d3ccc4bdb9b7b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a99c908376695d5043362a1d1003000000000000000000000000000000000000000000000000000000000006121f2b37434e585f6a6f7a818b9299a1a8a89f958e81756d62594f453b30271d12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2b3744505c687378797979797979797979746f65594d4034271a14212d3a4754606d7a858585858586868686867c6f6256565e696e7b8480786e68605951454039302920181008000000000000000000000000000000000000000000070d131619191b1b1d293643505c697682878787878787878787877d7063574a3d30242935414c555d6061616161616161616161616161616161616161616161616161616161616161605c544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818e9ba7a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9aaacb2bac3cec5bcb4aeaba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99c908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000000030f1b26313c464e585f676d757f8791969fa1969083796d605b51473d33291e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b2834404c5761686b6c6c6c6c6c6c6c6c6c68655d53483c30241813202c3945525d686d787878797979797979786f6a60544d575f696e7a736d665e564f473f342e271e170e06000000000000000000000000000000000000000000000002070a0c0d0e0e14212e3a4754616d7a7b7b7b7b7b7b7b7b7b7b796d6053473a2d20242f3a434c51545454545454545454545454545454545454545454545454545454545454545453504a42382e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818e9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ea0a8b2bdc8beb4aaa29f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000000000a15202a343c464e555d606d727c848f949891847a6e675c51493f352b21170c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3a454f575c5e5f5f5f5f5f5f5f5f5f5b59534b41372c2014111d2935414c565d606b6c6c6c6c6c6c6c666c6660584e454d575f676d67605c544d443d3528231d150c050000000000000000000000000000000000000000000000000000000000020713202d3946525e686d6e6e6e6e6e6e6e6e6e6e6d675c5145382c1f1e28313a4145474848484848484848484848484848484848484848484848484848484848484846443f3830261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0b6b6ada094877a6d61545b6874818e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9196a0acb9c3baaea298928f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8376695d5043362a1d1003000000000000000000000000000000000000000000000000000000000000040e18222a343c434c515b626a6f7a828c92867c6f685e554b40372d23190f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e29333d454c50525353535353535353534e4d4841392f251a0f0d19242f3a434c52545f5f5f5f5f5f5f605b605b544e463d454d555d605d55504a423b322b2318120b030000000000000000000000000000000000000000000000000000000000000005111d2a36414c565e6161616161616161616161605c554b4034291c161f282f35393a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a38342e261e140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3a9a9a9a9a094877a6d61545966727f83838383838383838383838383838383838384919eaab6b6b6ab9f9286828383838383838383838383838383838383838074675a4d4134271a0e0100000000000000000000000000000000000000000000000000000000000000061018222a313a4145515860686d7880867d706a5f564d43392f251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212b333a40444546464646464646464641403c372f271d130908131e28313a414547525252525253534a5053504a423d343b434b5153514b443f38302920191007000000000000000000000000000000000000000000000000000000000000000000010d1925303a444c52545454545454545454545453514b43392f23180d161e24292c2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2b28231c140c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a969c9c9c9c9c9c94877a6d615457636d727676767676767676767676767676767676767f8b98a5aaaaaaa99d908376767676767676767676767676767676767676746e64584c3f33261a0d0000000000000000000000000000000000000000000000000000000000000000000610181f282f353f464e565e666c737b706b61584e443b31271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1821292f3437383939393939393939393534302c251d150b01010c161f282f35393a454545464646463f4446443f382f2b3139404547454039342e261e170e07000000000000000000000000000000000000000000000000000000000000000000000008131e28323a414647484848484848484848484745403931271d12070c13191d202121212121212121212121212121212121212121212121212121212121212121201f1c17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a8f8f8f8f8f8f8f8f877a6d6154515b63666969696969696969696969696969696969727f8b989d9d9d9d9d9d9083766a696969696969696969696969696969696967645c52473c3024170b00000000000000000000000000000000000000000000000000000000000000000000060d161e2429343d444c545b60696e6961594f463c32291f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171e24282b2b2c2c2c2c2c2c2c2c2c282724201a130b030000040d161e24292c2d3839393939392d33383938332d261f272f35393a39352f28231c150c05000000000000000000000000000000000000000000000000000000000000000000000000020c1620283036393a3b3b3b3b3b3b3b3b3b3b3a38342f271f150b0101080d111314151515151515151515151515151515151515151515151515151515151515151312100b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c828383838383838383827a6d6054475157595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c65727f8b909090909090909083766a5d5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a58524a41362b1f13070000000000000000000000000000000000000000000000000000000000000000000000040c1319222b323a424a50575e615e574f473e342a20170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13181b1e1f2020202020202020201b1a18140f090100000000040c13191d20212c2c2c2c2c2c22282b2d2b28221c151d24292c2d2c29241d17110a030000000000000000000000000000000000000000000000000000000000000000000000000000050e161e252a2d2e2e2e2e2e2e2e2e2e2e2e2d2c29231d150d03000000010406070808080808080808080808080808080808080808080808080808080808080807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a6f767676767676767676766d675d5145464b4c5050505050505050505050505050505764717e8383838383838383838174685b505050505050505050505050505050504d4c4741382f241a0e030000000000000000000000000000000000000000000000000000000000000000000000000108101920282f383f444d5254524d453e352c22190e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c0f11121313131313131313130e0e0c08040000000000000001080d1113141f1f1f1f1f20171c1f201f1c17110b12181d1f201f1d18120c060000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13191d202121212121212121212121201f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58606269696969696969696969605d554c413a3e3f43434343434343434343434343434955616c71777777777777777777746f64594c434343434343434343434343434343413f3c362f261d1308000000000000000000000000000000000000000000000000000000000000000000000000000000070e161d262d333b42464846423b332c231a1007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305050606060606060606060201000000000000000000000000010406071212121313130b0f1213120f0b0601070c10131413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314151515151515151515151413100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e54565c5c5c5c5c5c5c5c5c5c54514c433a2f3233363636363636363636363636363945505a61646a6a6a6a6a6a6a6a6a68645d53483c36363636363636363636363636363433302b241d140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000050b141c222830363a3b3a363029211a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050606060600000306060603000000000004060706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105070708080808080808080808070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16202b343d434749505050505050505050504745413a3128252629292929292929292929292928333e485055575d5d5d5d5d5d5d5d5d5b59534b41372b292929292929292929292929292726241f1a130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171f252a2d2e2d2a251f170f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32373b3c434343434343434343433a39352f281f16191d1d1d1d1d1d1d1d1d1d1d1d222c363e45494a5050505050505050504e4c4841392f251d1d1d1d1d1d1d1d1d1d1d1d1d1a1a17130e0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b141a1e2021201e1a140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272b2e2f363636363636363636362d2c29241e160d0c1010101010101010101010101a242c33393c3e44444444444444444441403c372f271d131010101010101010101010100e0d0b070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12141514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f22232929292929292929292921201d19130c0400030303030303030303030308121a22282d30313737373737373737373533302b251d150b03030303030303030303030301000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315161d1d1d1d1d1d1d1d1d1d1413110d080100000000000000000000000000000810171c2123242a2a2a2a2a2a2a2a2a282724201a130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080910101010101010101010070604010000000000000000000000000000000000050c111417171d1d1d1d1d1d1d1d1d1b1a18140f0901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003030303030303030303000000000000000000000000000000000000000000000005080a0b1111111111111111110e0e0b0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + _typelessdata: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070a0907040000000000000000000000000000000000000000000000000000000000000306070808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080807050200000000000000000000000000000000000000020608080d0e0f101111121211100e0c08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070707070707070707070604000000000000000000000000000000000000000004060707070707070707070606030000000000000306070707070707070707070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060809131313131313131313130908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080e09090703030608091212121212121212120d0c0a07020000000000000005080a0b1111111111111111110a0a0804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111314161613100b050000000000000000000000000000000000000000000000000000060c1012131515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151414110e080200000000000000000000000000000003090e1214151a1b1c1d1e1e1f1e1e1d1b181514120e0903000005050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11131414141414141414141313100c0700000000000000000000000000000001070c101314141414141414141413120f0b060000060c10121314141414141414141313100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131516202020202020202020201615130f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e0e08070501000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708070502000000000000000000000000000000000000000000000000000000000000000407090a08070502000000000000000002080e1114141b1615130f0f1315161f1f1f1f1f1f1f1f1f1a1917130e0700000000060c111517181e1e1e1e1e1e1e1e1e171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060809080706040100010000000000000000000000000000000000000000000000000000000000000000000000040c13181d20212322201c160e090300000000000000000000000000000000000000000000030a11171c1f2021212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121201e19140d0500000000000000000000000000060e151a1e21222728292a2a2b2b2b2b2a282521211e1a140e090c1212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212120a09070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d20202020202020202020201f1c18120b03000000000000000000000000030b12181d1f202020202020202020201f1c17110a0a11171c1f202020202020202020201f1c18120b0300000000000000000000000000000000000000000000000001050707070501000000000000000000000000000000060e151b1f21222d2d2d2d2d2d2d2d2d2d22211f1b150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14171a1b1b1414110d08020000000000000000000000000000000000000000000000000000000000000000000000000002090e12141514120e0902000000000000000000000000000000000000000000000000000000050b101316161414110e08020000000001070c14191e20212823221f1b1b1f22222b2b2b2b2b2b2b2b2b2726231f19120a02000910171d2124242a2a2a2a2a2a2a2a2a2423201c17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131516151413110d070d0c0b0908070604000000000000000000000000000000000000000000000000000000040d161d24292c2d302f2c27211a140c070000000000000000000000000000000000000000030c151c23282c2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2a251e170e050000000000000000000000060f1820262b2e2f3335363737383838373635322e2d2a251f1a18191f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f171614100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d2d2d2d2d2d2d2d2d2d2c28231d150c0300000002000000000000030d151d24292c2d2d2d2d2d2d2d2d2d2d2b28221c14151c23282c2d2d2d2d2d2d2d2d2d2d2c28231d150c0300000000000000000000000000000000000000000002080d11131413110d080200000000000000000000000006101820262b2e2f393939393939393939392f2e2b262018100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a1f2426272821201e19140c070100000000000000000000000000000000000000000000000000000000000000000003090e141a1e2021201e1a140d0500000000000000000000000000000000000000000000000000070f161c20222321201e19140d050000060b12181e252a2d2e34302f2c27262b2e2f38383838383838383833322f2a241c141212121b22282d303137373737373737373731302d28221a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151b1f22222220201d181b1a191716151413100c070d0c0b090807060400000000000000000000000000000000010c161f282f35393a3d3c38332a251f18120b030000000000000000000000000000000000000a151e262e34383a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3936302920170d02000000000000000000030e18212a31373a3b40414243444445454443413f3b3a36312a2525262b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2323201c160f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c161f282f35393a3a3a3a3a3a3a3a3a3a38342e271e150b0306060f0908060300010b151f272f35383a3a3a3a3a3a3a3a3a3938332d261d1e262e34383a3a3a3a3a3a3a3a3a3a38342e271e150b0000000000000000000000000000000000000000050d13191e2021201e19130d0500000000000000000000040e18222a32373b3c464646464646464646463c3b37322a22180e0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0907040000000000000000000000000000000000000000000305060707050100000b141d242b303334342e2d2a251e18120b0300000000000000000000000000000000000000000000000000000000000001080d151a1f252a2d2e2d2a251f170f05000000000000000000000000000000000000000000000007111921272c2f302e2d2a251e170e060a11171d24293036393b413c3b383232373b3c454545454545454545403f3b352e261c1e1e1b242c34393d3e4444444444444444443d3c39332c231a100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920262b2e2f2f2d2c2924282725242322201f1c181b1a191716151312100c070d0b0a080707040100010000000007131d28313a4145474948443d363028231d150c090300000000000000000000000000000006111c2630383f44464848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484746413b32291e14080000000000000000000915202a333c4247484d4e4f505151525151504e4b4846423b36303132383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838302f2c27211a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e28313a40454747474747474747474645403930271d120f12131b1615130f0a07121d273139404547474747474747474746443f382f262630383f444647474747474747474645403930271d1207000000000000000000000000000000000000080e171e252a2d2e2d2a251e170e080000000000000000000a15202a343c434749535353535353535353534947433c342a2017171717171717171717171717171717171717171717171717161613100b050000000000000000000000000000000000060b0f12131413110d0808111d262f363c4041413b39363029231d150d0903000000000000000000000000000000000000000000000000000000040c131920262b30363a3b3a36302921170e04000000000000000000000000000000000000000000050e19232b32383b3d3b39363029201711141c22282f353b4146474e4948433d3c4347495252525252525252524d4b4740382e2b2b2b2b2c363e45494b5151515151515151514a49443e352c22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d19222a32373b3c3b3a39352f35343231302e2d2c2923282725242321201f1c181b191817151413110d080d0c0b09080d18242f3a434b515456544f46423b342e271e1a140c0700000000000000000000000000000c17232e38424a505354545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454524c443b3025190e0200000000000000020e1a26313c454e53555a5b5c5d5d5e5e5e5e5d5b5854534d46423b3e3f4545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545453d3c38332c231a0f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a434b5153535353535353535353514b42392e23181c1f202822211f1b150c18242f39434b5153535353535353535353504a42382d2e38424a5053535353535353535353514b42392e23180c000000000000000000000000000000000006111a20293036393a39363029201a11080000000004080a0a0f1b26323c464e53556060606060606060606055534e463c3226242424242424242424242424242424242424242424242424242322201c160f070000000000000000000000000000020a11171b1f2021201d19130e1a232f3841474c4e4e4746413b342f271f1a140b0600000000000000000000000000000000000000000000000001080d161e242931373b42464846423b332920160c0200000000000000000000000000000000000000020d17202b353d4448494746413b3228231c1d262d333940454c52545b56544f47464e54555e5e5e5e5e5e5e5e5e5a57524a403538383838343e485055575d5d5d5d5d5d5d5d5d575550473e33281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a343c434749484745404342403f3e3c3b3a38342f353332312f2e2d2c2823272625232221201d191b1a19181615141d2935414b555d60636059524d454039302a251f18120b03000000000000000000000003101c28343f4a545c60616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161615e564c41362a1e11050000000000000006121e2b37424e575f626668696a6a6b6b6b6a696865615e57524d454a4c5252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252524a48443d352c21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424b555d606060606060606060605c544b40342822282b2d352f2e2b2620181d2935404b555d606060606060606060605b544a3f33343f4a545c606060606060606060605c544b4034281c10040000000000000000000000000000030a1117232b323a41464746413a322c231a0d0400050b10141617151f2b37434e585f626c6c6c6c6c6c6c6c6c6c625f584e43373030303030303030303030303030303030303030303030303030302f2c2721191107000000000000000000000000020b141b22272b2d2e2d29241e17202c35414a52585a5b54524c454039312a251f17110a02000000000000000000000000000000000000000000040c13191f282f353c42474d5254524d453b32281e13080000000000000000000000000000000000000008131e29323d474f545654524c443d342e262b2f383f444b51565e61676360594f4e585f626b6b6b6b6b6b6b6b6b66635c524745454545454545505a61646a6a6a6a6a6a6a6a6a64615a5044392d20140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313c464e54555553514b504e4d4c4a49484745404341403f3e3c3b3a38342e343331302f2d2c292428272624232220232c3945515d676d706b615e57514b423d363128231d150c030000000000000000000006121f2c3844505c666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685e5246392d201407000000000000000814212e3a47535f6a6e7374757677777878777674726e69615e575157595e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e56554f473d33271c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545d676d6d6d6d6d6d6d6d6d6d665c5145382c2d333839423c3b37322a221f2c3845515d676d6d6d6d6d6d6d6d6d6c665b5044414144505c666d6d6d6d6d6d6d6d6d6d665c5145382c1f130600000000000000000000000000040c151c2328353d444c5254524c443e352c1f160c0810171c20232422212e3b47535f6a7679797979797979797979766a5f53473d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3b38332b23190f0500000000000000000000000a141d262d3337393a393530282029323e47525c646767615e56514b433e363128231c140c0600000000000000000000000000000000000000060d161e2429313a41454d53575e615e574d443a3024190d040000000000000000000000000000000000050e1925303a444f596063615e564f443f3830373d424a50555d60686e746f6b6054545f6a6f787878787878787878736e6357515151515151515155616c71777777777777777777706c6155493c3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f39434e585f6262605d555c5b5a5857565553514b4f4e4d4c4a49484644404241403e3d3b3a39352f35343231302e2d2c37424d57606d797c756e69605c544f46423b342e271e150b000000000000000000000713202d3a4653606d787b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a6e6154473b2e211408000000000000000815222f3b4855626e7c80818283848485848483817e7b756e69605b62656b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6360594f44382c20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6676797a7a7a7a7a7a7a7a796d6053463a2f383f44464e4947433c342a202d3a4753606d797a7a7a7a7a7a7a7a786c60534e4e4e4e53606d787a7a7a7a7a7a7a7a796d6053463a2d201307000000000000000000000000060e161e262e343f474f565e615e564f473e31281d13111a22282d30312f2e2f3c4955626f7c868686868686868686867c6f62554a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4948443d352b21160b0000000000000000000006111b262f383f44464746413a32282f3b44505a646e74746e68605c555046423b342e261e180f0802000000000000000000000000000000020a111720282f353e434c51575f62696e695e564c41352920150a00000000000000000000000000000000020d17202a36414c56606b706e686059504a423c43474f545b60676d737a817d6f635855626f7c8585858585858585858073665e5e5e5e5e5e5e5e5e5e64717e8384848484848484837e7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b555f6a6f6e6d676a69686765646361605c555c5b5a5857565453514a4f4e4c4b4a484745414342403f3e3c3b3a383946535f69738089817b726d666059534d45403930271d12070000000000000000000915222f3c4855626f7c87878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878784776b5e5144382b1e11050000000000000c1926333f4c5966727f8c8e8f909091919191908e8b87817b6f6a626d72787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878706b6055483c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798686868686868686868074675a4d4138424a50535b55534e463c342b3744515d6a778386868686868686867c6f625a5a5a5a5a5a64717e86868686868686868074675a4d4134271a0e0100000000000000000000080f18202830383f44515960686d6861594f433a2f24181a242c33393c3d3b3a373c4955626f7c889393939393939393887c6f62575757575757575757575757575757575757575757575757575757575756544f473d33271c10040000000000000000081217222d384149505354524c443a2f38414d56616c7480817a726d67615a534d443f38302a2119130c0500000000000000000000000000050b141c2228323a41454f555d60696e767b6e685d52463c32261b0d0400000000000000000000000000000008131e29323a46525e68707d7a706b605c544d444e535960666c71797f868e82756a5f56626f7c89919191919191918d81746b6b6b6b6b6b6b6b6b6b6b6b727f8b909090909090908b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c676f7c7b7a797776757372716f6e6d676a69686665646261605c545c5a5958565554524c504e4d4c4b49484745434f59616e7b86928e867f79706b615e57514b43392e23180c0000000000000000000915222f3c4855626f7b88949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949184776b5e5144382b1e1105000000000004111d2935414c566875828e9b9c9d9d9e9e9e9d9c9b99938e857c6f68727f8485858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585847d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939393939393938d8074675a4d413f4a545b6068625f584e463d353744515d6a778490939393939393887b6f6767676767676767717e8a9393939393938d8074675a4d4134271a0e0100000000000000000109111a212a323a424a505b626b707a706b61554b4135291e1d2c363e44494a4847423c4955626f7c88959f9f9f9f9f9f95887c6f6363636363636363636363636363636363636363636363636363636363636360594f44382c2013070000000000000007111a2427333f49535b60615d564c41383f49535e68707d8a8e857f79716c615e57504a423c332a251e170e070000000000000000000000060e161d262d333d444c525961676d737b82857a6d61584e43372b1f160c0100000000000000000000000000050e1925303a44505a616d7a85857d736d665f5750585f626b70787e848c9294887c6f6256626f7c89959e9e9e9e9e9a8d8078787878787878787878787878787f8b989d9d9d9d9d978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7986888685848381807f7d7c7b7a787776747372716f6e6d666a696766646362605d565d5b5a5957565553514b55616b75828f9998928c847d756e69605c554b4034281c100400000000000000000915222f3c4855626f7b8895a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19e9184776b5e5144382b1e110500000000000613202c3945525d687784919ea8a9aaaaababaaa9aba49f9791847a6d73808c919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191918a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0a0a0a0a09a8d8074675a4d4144505b666c756f6a5f584f473e3344515d6a7784909da0a0a0a095887c747474747474747474747e8a97a0a0a0a09a8d8074675a4d4134271a0e01000000000000000009131b232b333c444c545c606d727d857d70675d51453d3027262f3e4850555755534d454955626f7c8895a2acacacaca295887c70707070707070707070707070707070707070707070707070707070707070706b6054483b2f221609000000000000061019232c363e44505b656c6d685d53493f44505b656e7a859298928c847e756e69605c544e453f36302920191006000000000000000000070f1820282f383f444f565d606b707a80878f8d80746a5f53473e31281d1307000000000000000000000000020c17202a36414c56616c75818e91877f786e69605b626a6f767d838b91969f9b8e8175685e626f7c8995a2abababab9f9286848484848484848484848484848485929faaaaaaaaa4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a989892918f8e8d8b8a89888685848281807f7d7c7b79787775747371706e6d686b69686765646361605d555c67707d8a949ea29f969189827b736d675c5145382c1f130600000000000000000915222f3c4855626f7b8895a2aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa9e9184776b5e5144382b1e110500000000000714212d3a4754606d7a86939facb6b7b7b8b7b7b6b5afa9a1968d817473808c999e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acadada79a8d8074675a4d454f59606c78817c6f6a605950443f44515d6a7784909daaadada89b8e8181818181818181818181828f9ca9adada79a8d8074675a4d4134271a0e0100000000000000020b1b252d353d454d565d666d747f879184796d60594f42392e2d3842505a6164625f574e4955626f7c8895a2afb9b9b2a5988b7f7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d706356493d3023160a0000000000050f18222b353e48515b606c787a6d655b50444e58606c77828f97a19f96918a827b726d665f575146413a322b2217110a02000000000000091119222a323a424a505960686d747d848d929992877c6f625a50433a2f24180d03000000000000000000000008131e29323a46525e68717e8a9399928c837b726c656d727c828990959ea1a99f92867a6e61626f7c8995a2afb8b8aea2989291919191919191919191919191919297a2adb7b7b1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424e576774808d9aa29f9d9c9b9a989796949792908f8e8d8b8a898786858382817f7e7d7b7a797776757372716f6e6d676a696d7984919ea6aea8a09e938f867f796d6053463a2d20130700000000000000000915222f3c4855626f7b8895a2adadadadadadadb4b6bababababababab5b1afadadadadadadadadadb6b7bcbababababababbb6b5adadadadadadadadadadadadadadadadadadadadadadadadadadaa9e9184776b5e5144382b1e110500000000000a1623303d495663707c899aa4afbbc0c4c4c4c4c3c0bbb2a99f92867a73808c99a6abababababababababababababababababababababababababababababababababababababababababababababa3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a4d4d57616b73808c857c706b615a504941515d6a7784909daab7b6aa9e938e8d8d8d8d8d8d8d8d8d8d8f949fabb7b3a79a8d8074675a4d4134271a0e01000000000000000a141d2d373f474f575f686d78808b92968d80746b60544a4034333f4a54616c706e6960584f55626f7c8895a2afbbc0b3a79b918b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a84786b5e5145382b1e1200000000040e17212a343d47505a626d738082776c60584e555f6a727f8b949fa9a8a19e948f867f786e6a625b524c443d3428221c140b030000000009121a232b343c444c545b606b707a818a91969fa3999083766c61554b41352920150900000000000000000000010d1925303a44505a616d7a85929ea39f9590867e776e727f878f949da0a7adaea3998c7f7265626f7c8995a2afbcbeb4aaa29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2a9b3bebeb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a7784919eaaacaaa9a8a6a5a4a2a9a29f9d9c9b999897959a9392908f8d8c8b89888785848381807f7e7c7b7a787776747f8c96a0acbab2aca59e98928c8073675a4d4034271a0d01000000000000000915222f3c4855626f7b8895a0a0a0a0a0a0a0a0a7a9afb7c0cbc7bcb3aaa4a2a0a0a0a0a0a0a0a0a0a9abb0b8c2cdccc1b8b0aaa8a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09e9184776b5e5144382b1e110500000000000c1926323f4c5965727f8c98acb6b2b4b7b8bdc3ccccc4bbaea3998b7f73808c99a6b3b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a4b555f69707d889392867d716c605b534b515d6a7784909daab7baafa59e9b9a9a9a9a9a9a9a9a9a9a9c9fa6b0bbb3a79a8d8074675a4d4134271a0e0100000000000006111b262f3f49515960696e7a828d929f9f93887d6f665c51443b3844505b66707d7b6f6a615955626f7c8895a2afbbc3b8ada39b989696969696969696969696969696969696969696969696969696969696969184786b5e5145382b1e12000000030d162029333c464f59616c727f8b8b7f726a5f545c676f7c86929fa6b0b2aca69e98928c837c726d615e564e463e332d261d150c03000009121b242c353d464e565e666c737d848e939ea1a8ab9f948a7e71675d51453c31261a0e0500000000000000000005111d2a36414c56616c75818e97a1ada79f98928b827b727c89949fa6acb1b9b5ab9e9184786c626f7c8995a2afbcc5bcb4aeababababababababababababababababadb3bbc5beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8896a0acb8b7b6b4b3b2b0afb3adabaaa9a7a6a5a4aca49f9e9d9c9a99979695989291908e8d8c8a8988868584828186929fa8b2bdbdb8afa79f92857a6e6154473b2e21140800000000000000000915222f3c4855626f7b889393939393939393939b9da5afbac6c1b5aaa199959393939393939393939c9fa6b0bcc7c6bbb0a69e9b939393939393939393939393939393939393939393939393939393939184776b5e5144382b1e11050000000004101d2935404b556875818e9ba6a6a5a7aaacb2babfc7cbbfb5ab9c8f8275808c99a6b3bdc4c4c4c3bcb8b7b2b2b2b8babec4c4c2bcb8b6b2b2b2b4b8bfc4c4c1bab6b4b2b2b4b6bac1c4c4c4bfb8b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a515d676e7b85929a9892867e736c655d554d5d6a7784909daab7c1b7afaaa8a7a7a7a7a7a7a7a7a7a7a9abb0b8c0b3a79a8d8074675a4d4134271a0e010000000000000b17222d3841515b626b707b848f949da4a49a9183786d60564d42394653606c7884857c706c625b626f7c8895a2afbbc9bfb5ada7a5a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39e9184786b5e5145382b1e120000010b151f28323b454e58606b717e889392867c6e665c606d79839098a3aeb8bdb9b0aaa29f9590867f756d68605850443f382f271e150d0309121b242d363e474f585f686d787f8791969da5adb2b0a69e9184796d60574d42372b22170b0000000000000000000713202d3946525e68717e8a939ea9b3b1aaa29f948f867f78828f9cabb4bcc3b9aca096897d70636f7c8995a2afbccec5bebab8b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8babec5cdbeb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b5565727f8c98a8b2bdc4c2c1c0bebdbcbebab8b7b5b4b3b2b0b6afacabaaa8a7a6a4a3aaa29f9e9c9b9a989796949792918f8e9298a2aebac3c0b5aba0958b7f72685e5246392d20140700000000000000000915222f3c4855626f7c878787878787878787878e939da9b6c2bdb1a4998f8987878787878787878790949fabb7c4c3b6aa9e938f878787878787878787878787878787878787878787878787878787878784776b5e5144382b1e1105000000000613202c3945515d677784919a9999999a9da0a8adb5bfcac5b8ab9e928578808c99a6acb2bac4c3b9b1acaaa5a5a5abaeb4bcc2b9b1aba9a5a5a6a8adb6bfc1b7afa9a7a5a5a8aaafb7c1c9bfb5ada7a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a5b606d79839097a2a298928a80776d675f575d6a7784909daab7c3c1bab6b4b4b4b4b4b4b4b4b4b4b4b5b7bbc2c0b3a79a8d8074675a4d4134271a0e010000000000030f1b27333f4953626d727d8591969fa6aeaca0958c7f72695e5246444f5964717e8a92867e726d63626f7c8895a2afbbc8c7bfb8b3b2b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ab9e9184786b5e5145382b1e12000007121d27313a444d575f6a707d86929a989083786d606b74808d95a0aab4bfc9c1bcb4aea79f98928b827a6f6a615a504a423930271f150d121b242d363f485059606a6e7a828c9399a1a8afb9bdb9ada1978d8073695f53473e33281c100400000000000000000714212e3a4754616d7a85929ea5afbbbcb4aea69f98928c837f8b99a3aebac7bdb2a89a8e8174666f7c8995a2afbccbc3bcb8b7b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b7bbc2cabeb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6776828f9ca9b6c2cecfcecdcbcad0cac6c5c3c1c1c0bebdc0bbb9b8b6b5b4b2b1b0b4aeacaaa9a8a6a5a4a2a9a29f9d9c9b9fa2aab4bfc7bbafa4999083786d60564c41362a1e110500000000000000000613202d394653606c787a7a7a7a7a7a7a7a7a7a818e9ba7b4c1bcafa295897d7a7a7a7a7a7a7a7a7a82909ca9b6c3c2b5a89b8f827a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a6d6054473a2d21140700000000000714202d3a4753606d7a868e8d8c8c8c8d91969ca3adb8c2c6b9ada297877b808c989ea1a8b2bdbcb1a7a09d9898989fa2aab4bcb1a79f9d9898999ca4adb8baafa59e9b98989b9ea5afbac3b8ada39b98978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d80746758626d74818e95a0a9aaa39f928d81796e6960596a7784909daab7c3c0b9b5b3b2b2b2b2b2b2b2b2b2b2b5b6bac1c0b3a79a8d8074675a4d4134271a0e01000000000005121f2b3744505b65727f879297a0a8b0b8b1a79f92867b6e61594f4854606b7783909892877f736e626f7c8895a2afbbc8cfc7c1bebcbababababababababdbdbdbdbdbdbdbdbdbdbdbabababababababab7ab9e9184786b5e5145382b1e1200000c18232f39434c565e696f7c859298a39f958c7f736a707d88939fa7b1b8bdc3c9c6bfbab1aaa29f948f847c716c605b544a423931271f151b242d363f48505a616b707c848f949fa4abb2bac1c9beb2a99f92877b6e625a5044392d20140800000000000000010e1a2734414d5a6774808d95a0abb8c1c5bfbab0aaa29f95908687929facb9c5c4b8ab9e9285796d6f7c8995a2afbcc3b9b1acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a9abb0b8c2beb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9c5d2dcdbd9d8d5ccc3bdb8b7b4b6b8babebcbebfc0c2c2c0bfbebcbfbab8b7b6b4b3b2b1afb3adabaaa9a7acaeb4bcc6beb2a99f93877c6f665c50443b3025190e02000000000000000006121f2b3844505b666c6d6d6d6d6d6d6d6d6d74818d9aa7b4c0bbaea295887b6f6d6d6d6d6d6d6d76838f9ca9b6c2c1b5a89b8e82756d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d675d5145392c20130600000000000915222f3c4855626f7c828180807f7f81848c919ca6b0bbc7beb3a996897c808b8b9196a1acb9b8aca095918b8b8b9298a2aeb8ab9f95908b8b8c919ca8b4b6a99e938e8b8b8e939eaab6c0b3a79b918b8b8a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d807467606a727f8b939da7b1b4aea49c938f837b706b626a7784909daab7c0b6aea9a7a6a6a6a6a6a6a6a6a6a6a8aaafb7c0b3a79a8d8074675a4d4134271a0e0100000000000613202d394653606c78839098a2a9b2bac2baaea2988e81756b60544e5863707d8995a099928b80746d6f7c8895a2afbbc8c5bdb6b1b0aeaeaeaeaeaeaeaeb1b2b7bec6c9c9c3bab4afaeaeaeaeaeaeaeaeaeab9e9184786b5e5145382b1e120004101c2934404b555d686e7b849197a2aaa79f92867c6e7a8591969da0a7acb1b9bdc4cac3bcb4aea69e9691867e746c665c544b433931271e232c363f48505a626c717d8591969fa6afb5bdc4cbc4beb9aea3998f82766c6155493c3023160a00000000000000000714212d3a4754606d7a83909daab3becacac2bcb4aea7a099929299a3aeb4bcc5b9ada297897d706f7c8995a2afbcbcb1a7a09d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9c9fa6b0bbbeb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a99a3aebac0c8d0d8e5d9cec3bab1acaaa8aaabadb3b0b1b2b4b5b7b8b9bebcbebfc0c2c3c1c0bfbdbcbebab8b7b5b4b8babfc6c5b9ada1978d80746a60544a3f32291e1408000000000000000000030f1c28333f4a545b6060606060606060606774818d9aa7b4c0bbaea295887b6f6260606060606976838f9ca9b6c2c1b5a89b8e827571717171717171717171717171717171717171716d68606060606060605d554b4135291d110400000000000815212e3a47535f6a6f76757373737274787f8c949fabb7c4beb1a4978b7e7c7f7f84919eabb7b7aa9d91837f7f7f86929fabb6a99d90837f7f7f8c99a6b2b4a79b8e817f7f818e9ba8b4beb2a5988b7f7f7f7b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d807467626f7c86929fa5afb9bfbaaea59e9590857d726d6a7784909daab7b9aea49d9a999999999999999999999b9ea5afbab3a79a8d8074675a4d4134271a0e01000000000005121f2b3744505b656e7b86929fa6b0bcc5bfb4aa9e93897c6f635a54606a76828f9ca7a39f928d81786f7c8895a2afbbc7bdb3aba5a3a1a1a1a1a1a1a1a1a4a6acb4bec8c5bab1a9a3a1a1a1a1a1a1a1a1a1a19e9184786b5e5145382b1e120006131f2c3845515c676d7a839196a1a9b3aea399908378797f848a91959da0a8adb2babfc5c6bfbab0a8a198928b80786d665d554b433930272b353e48505a626c717e879297a1a8b0bbc0c7c6bfbbb3ada8a09e948a7d7064574a3d3124170a00000000000000000613202c3945525d686f7c8998a2aebac6d3cec6bfbab1aba39f9f9f9fa2aab4bebeb3a99a8e81746f7c8995a2afbcb8aca095908d8d8d8d8d8d8d8d8d8d8d8d8d8d90949fabb7beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a546774818e9aa2aaaeb6bec6d0dad4c8bdb1a8a09d9b9d9fa2a9a3a4a6a7a8aaabadb3afb1b2b4b5b6b8b9bbc0c0c1c6c5c4c2c1c5c6cac5bcb0a69e91847a6d60584e42382e20170d02000000000000000000000b17222d38424a5053545454545454545a6774818d9aa7b4c0bbaea295887b6f62555454545c6976838f9ca9b6c2c3b6aa9d90837e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7a6d61545454545454514b433a2f24180d01000000000006121f2b37434e585f62696867666666666d76828f9ca9b6c2bfb2a5988c7f72727683909da9b6b5a99c8f8276727885919eabb4a79b8e8174727b8794a1aeb1a4978a7e72727e8b98a4b1b9aca093867972726e695f53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074676875828f97a2adbac1cbc0b7afa7a09792877f756d7784909daab7b5a99d928d8c8c8c8c8c8c8c8c8c8c8e939eaab6b3a79a8d8074675a4d4134271a0e010000000000030f1b27333f49535f69727f8b949faab4bfc5bcafa59d9083766c6158626f7c89949fabafa49c938e82797c8895a2afbbc1b6aba199969494949494949494979aa2acb7c3bfb4a99f9794949494949494949494949184786b5e5145382b1e12000714202d3a4753606d79829095a0a8b2bcb4ab9f958b7f7272787e838a91959ea1a8aeb4bcc1c9c1bab2aaa39f928d81786d675d554b42392f333d47505a626c717e879299a2a9b2bac2cbc2bdb5aea9a19e96918a837d7063574a3d3024170a000000000000000004111d2935414c56606c7985929fabb8c5d2d8d0cac3bdb5ada297929298a2aebac4b7ab9e9184786f7c8995a2afbcb7aa9d9083808080808080808080808080808082909ca9b6beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6678848e92989da4acb4bec8d1d1c5b8aca095918e909297959697999a9c9d9ea2a9a3a4a5a7a8aaabacafb6b3b5b9c0c8cfced2d3cabfb4aa9e948a7e71675d51463d30261c0e05000000000000000000000006111c262f383f44464747474747474e5a6774818d9aa7b4c0bbaea295887b6f62554847505c6976838f9ca9b6c2c4b8ab9f95908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b887c6f6255494747474745413a31281d1307000000000000030f1b26313c464e53555d5b5a5959545c64717e8a97a9b3bec0b3a6998d80736a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d65615f574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d807467616e7a85929fabb8c5d2c9c1b9b1a9a199928c81797784909daab7b3a79a8d807f7f7f7f7f7f7f7f7f7f818e9ba8b5b3a79a8d8074675a4d4134271a0e010000000000000b17222d38414d57606c77828f98a2aebac3c1b8ab9f958a7e71665f6a75828f9ba6b0bbaea59d948e817c8895a2afbbbeb1a5998f8987878787878787878a909aa6b2bfbcafa3978d87878787878787878787878784786b5e5145382b1e12000e1b2834414e5b6774818e949fa7b1bac4bdb1a79f92867b6e6d71787e848b91969fa2aaafb9bdc4c4bcb4aea49d938e82796d675d544a41383c464f59616c717e879399a3abb3bbc4c6bfbab1aba39f97918b847e78706b6155483c2f2316090000000000000000010d19242f3a44505b657784909daab7c3d0cdc7c4c3c0b8ab9f928585929fabb8c5b9aca196887b6f7c8995a2afbcb4a79a8d8074747474747474747474747474747f8b98a5b2beb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d787e81858d929ba2acb6bfcad0c4b7aa9d91838183858688898b8c8d8f909297949697999a9c9d9e9fa4aca7a9aeb6c0cbd6d8cfc6baaea2988f82756c61554c41342b1e140a000000000000000000000000000a141d262d3338393a3a3a3a3a414e5a6774818d9aa7b4c0bbaea295887b6f62554843505c6976838f9ca9b6c2c8bcb1a79f9d9797979797979797979797979797979797979795887c6f6255493c3a3a3a39352f281f160c01000000000000000a15202a343c434748504e4d4d4c4a54616e7b8797a2adbac0b4a79a8d81746a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6055534d453b31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675e6874808d9aa7b3c0cdd3cbc3bbb3aba39f9285797784909daab7aea295887c737373737373737373737e8a97a4b1b3a79a8d8074675a4d4134271a0e0100000000000006111b262f3c44505b656e7b86929fa7b1bcc8bcb1a79e9184796d626f7c87939facb9bfb9aca0968a7e7c8895a2afbbbcb0a396897d7b7b7b7b7b7b7b7b7e8a97a4b1bdbaaea194877b7b7b7b7b7b7b7b7b7b7b7b7a6e6154473b2e211408000a1724303d4a5763707d8a929da7b1bcc6c2baaea2988e81756b656c71787e848c92989ea5acb2bac0c6bfbaaea59e948f82796d665c53493f444e58606b717e879399a4abb4bdc5c3bcb4aea79f99928d857e78716c6661594f44382c20140700000000000000000008131e27333f49536a7683909da9b6c3cbc2bcb7b6b3b5ab9b8e81818e9ba9b3bebdb2a8988b7e727c8995a2afbcb4a79a8d8174676767676767676767676767727f8b98a5b2beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c666d71747a808b909ba4aeb8c2cdc5b8ac9f92867b77787a7b7d7e7f818284858688898b8c8d8f9092939a969a9da4aeb9c5d1d1c6bdb1a79f92867b6e615a50433a2f22190c0200000000000000000000000000020b141c22282b2d2d2d2d2d34414e5a6774818d9aa7b4bbbbaea295887b6f62554843505c6976838f9ca9b6c2cdc3b9b1abaaa4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a295887c6f6255493c2f2d2d2c29241d160d040000000000000000040e18222a31394045474c4a464046525e697885929fabb8c1b4a79a8e81746a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d605346423b33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675664717e8a97a4b1bdcadad5cdc5bdb5a89b8e82757784909daab7aea295887b6f6666666666666666717e8a97a4b1b3a79a8d8074675a4d4134271a0e01000000000000000a141d27333f49535f69727f8b95a0acb8c1c2b9aca0968b7f726975818e9aa4afbbbdb2a89e9184787c8895a2afbbbbafa295887c6f6e6e6e6e6e6e707d8996a3b0bcb9ac9f9386796e6e6e6e6e6e6e6e6e6e6e6e685e5246392d201407000916232f3c4855616b74808d95a0aab4bfcabeb4aa9e93897d706660666d71797f868e939ea1a8afbabec5c0b7afa69e948f82786d655b50444c565f6a707d879299a4abb5bdc6c0b9b1aaa39f959087807a726d66605b544f473e33281c1004000000000000000000010b17222d43505d697683909ca9b6c3c2b9b1aba9a6aca3998a7e7d8997a1adb9c1b5a89b8e82757c8995a2afbcb4a79a8d8174675a5a5a5a5a5a5a5a5a5a65727f8b98a5b2beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c6064676d747e8b929ca6b0bbc4c7baaea3989083786d6d6e707173747577787a7b7c7e7f818283858688898d929da9b5c1cecbbfb5ab9f958b7f72695e53483e31281e1007000000000000000000000000000000020a11171c1f202121212734414e5a6774818d9aa7afafafaea295887b6f62554843505c6976838f9ca9b6c2cfc5bbb3adaba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a295887c6f6255493c2f2221201d18130c04000000000000000000000c18232f39434b515359575145424d576a7784909daab7c1b4a79b8e81746a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a312921170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a63707c8996a3afbcc9cfc9c5c4bcb1a7978b7e717784909daab7aea295887b6f6a6a6a6a6a6a6a6a717e8a97a4b1b3a79a8d8074675a4d4134271a0e0100000000000000020b17222d38414d57606d7883909da5afbcc6bdb2a89e9184796e7b87929facb6c0b9ada1968b7e717c8895a2afbbbbafa295887c6f626161616163707d8996a3b0bcb9ac9f9386796c61616161616161616161615e564c41362a1e1105000714202c38444f59606d79839098a3aebac3c5bcafa59d9083786d605c60676d737b818991969da5adb3bcc3c1b8b0a69e948e81776c605a50525d686e7c859299a3abb5bdc7c0bbafa7a098928b837c736d67605c54504a423e352c21160b0000000000000000000000061d2a3643505d697683909ca9b6c3bcb1a79f9d999f9f92867a7885929eabb8c4b7ab9e9184787c8995a2afbcb4a79a8d8174675a5a5a5a5a5a5a5a5a5a65727f8b98a5b2beb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424a5053555d606c73808c949fa9b2bec7bfb4aa9f958c7f726a6263646667696a676d6e70717274757778797b7d808d9aa7b3c0d0c7bbaea3999083786c60574d42362c1f160c000000000000000000000000000000000000060b0f12131420282e34414e5a6774818d9aa2a2a2a2a2a295887b6f62554843505c6976838f9ca9b6c2c9beb3a9a19e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c95887c6f6255493c2f221613110d07010000000000000000000004101c2934404b555c6066635b514b505c6976838f9ca9b6c1b4a89b8e81756a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a2d20170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8995a2afbccdc4bdb9b8b9aca095877a6e7784909daab7aea295887c777777777777777777777e8a97a4b1b3a79a8d8074675a4d4134271a0e01000000000000000006111b262f3b44505c66707d89939eaab4bfc3b9ada1968b7e74818d99a3afbebeb3a99e9184796f7c8895a2afbbbbafa295887c6f625554545663707d8996a3b0bcb9ac9f9386796c6054545454545454545454524c443b3025190e020004101c28333e45515c676f7c86929fa7b1bcc8c1b8aca0958b7f72685d555d60696e757d848e939fa2a9b1b9c2c1b8b0a69e938d80736c61575b606d7a849197a2abb5bdc5bdb5afa59d9590867f786f6a605d55504a443f382f2c231a10050000000000000000000000101d2a3643505d697683909ca9b6c3b7ab9f95908d929990837675818e9bacb6c0b9aca196877a7c8995a2afbcb4a79a8d8174676666666666666666666666727f8b98a5b2beb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f44464b515a606c77828f97a1acb6c0c6bcb1a79f92867b6e655b58595a5c555d606163646667696a676d6e7984919eaab7c4c7bdb1a89f92877c6f665b50453b31241a0d040000000000000000000000000000000000000000030616202a323a3f414e5a6774818d9595959595959595887b6f62554845505c6976838f9ca9b6c2c6b9ada197928f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f887c6f6255493c2f221d13040100000000000000000000000006131f2c3845515c676d726d605c544b5c6975828f9ca8b5c1b4a89b8e81756a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbc4bbb2adabacaa9d908377687784909daab7b7aa9d91848484848484848484848384919eabb7b3a79a8d8074675a4d4134271a0e010000000000000000000a141d28343f4a54606b75828f98a3aebac5bdb2a89e91847b86929fabb5c0b9ada1978b7f726f7c8895a2afbbbbafa295887c6f625554545663707d8996a3b0bcb9ac9f9386796c605454545454545453514b46413b32291e14080000000b16212934404b555f6a727f8c95a0acb8c1c8bcb1a79f92857a6d605651575e616b7079818a9297a0a7b0b8c1c2b8afa59c928a7e70695f626d75818f96a0a9b3bdc5bcb3aba39f938e837c726c665f58514c443f38332d261d1a11080000000000000000000003090e1d2a3643505d697683909ca9b6c3b6a99d90838087918c7f72717e8b9aa4afbbbdb2a8968a7d7c8995a2afbcb4a79a8d8074737373737373737373737373737f8b98a5b2beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e262e34383a4145505b656d7a85919aa4afbbc3c2baaea3989082776c60564c4e4f4b5153555658595a5c555f6a73808d96a0acb8c5c0b5aba0958c80736a5f544a3f33291f120800000000000000000000000000000000000000000006121d28323c444b4f515a677481888888888888888888887c6f62555252525c6976838f9ca9b6c2c5b8ab9e92858383838383838383838383838383838383838383827b6e62554841392f251a0f040000000000000000000000000714202d3a4753606d797f756d665d555b6875828e9ba8b5c1b4a89b8e81756a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbbdb2a9a19e9fa3998d80736a7784909daab7b8aca09691909090909090909090909196a1acb9b3a79a8d8074675a4d4134271a0e01000000000000000000020b17232e38424f59616e7b86929fa9b3bec4b9aca19691849198a3aebdbeb3a99e9185796d6f7c8895a2afbbbbafa295887c6f626161616163707d8996a3b0bcb9ac9f9386796c6161616161616161605d554b40352920170d02000000050c18232f39434e58606d7883909da5afbcc5c3baada2978d8073685e524d525961676d747e8590959fa6afb7c1c1b7aea49f92857b6e666a727f8b939ea8b2bbc5bbb3aaa299928b81796e6a605b544e45413a342e28221c140b0800000000000000000000050d141a1e2a3643505d697683909ca9b6c2b6a99c8f83767c84887b6e6e7a86939facb9bfb2a6998c7f7c8995a2afbcb6aa9d90838080808080808080808080808080828f9ca9b6beb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2f353f49535e68707d88939fa8b2bdc7bfb4aa9f948b7e72685e52464240454748494b4c4e505c666f7c87929fa8b2bdc7bbafa4999184796d60584e42382d21170d000000000000000000000000000000000000000000000b17232e3a444e565c5e5f616e7b7c7c7c7c7c7c7c7c7c7c796d605f5f5f5f5f6976838f9ca9b6c2c1b5a89b8e827676767676767676767676767676767676767676766e695f59534b41372c201408000000000000000000000006121e2b37424d5764717e8a81786d675d556875818e9ba8b4c1b4a89b8e81756a7683909da9b6b5a99c8f82766b7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb9ada19691929997897c6f6a7784909daab7bdb2a8a09d9d9d9d9d9d9d9d9d9d9d9ea1a8b2bdb3a79a8d8074675a4d4134271a0e010000000000000000000006111c26303d46535e6973808c97a2adbac5bdb2a8a0969196a0aab4bfb9ada1978c7f72676f7c8895a2afbbbbafa295887c6f6e6e6e6e6e6e707d8996a3b0bcb9ac9f9386796e6e6e6e6e6e6e6e6e6d675d5145392c201306000000000007121d27313c44505c666f7c89939eaab4becabeb3a99f92867a6e61574d464f555d606c717b838f949ea5afb7c1c0baaea2989083786d6f7c86929fa5afbac4bcb3a9a29892877e746d675f58504a423c352f28231c17110a0200000000000000000000050f171f252a2d3643505d697683909ca9b6c2b6a99c8f83766f797f7269687784919eaab7c1b4a89b8e817c8995a2afbcb8aba095908d8d8d8d8d8d8d8d8d8d8d8d8d8d8f949fabb7beb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f242d38414c56606b74808d96a0abb5c0c6bcb0a69f92857a6e61594f4238383a3b3d3e424d57606d78839099a3afbac3beb2a89f93877c6f675c51463c2f261c0f05000000000000000000000000000000000000000000020f1b27333f4b5660676b6b6b696e6f6f6f6f6f6f6f6f6f6f6d676b6b6b6b6b6b6b76838f9ca9b6c2c1b5a89b8e82756b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b68655d53483d3124180c00000000000000000000000814212e3a47535f697683908e82796d675d6874818e9ba7b4c1b4a79b8e81746a7683909da9b6b5a99c8f82766d7885919eabb4a79b8e81746e7b8794a1aeb1a4978a7e71717e8b98a4b1b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb8ab9e918486929285796d6a7784909daab7c3bab2acaaaaaaaaaaaaaaaaaaaaaaabacb2bac0b3a79a8d8074675a4d4134271a0e0100000000000000000000000a141e2a36424d57606d7a85929fa9b3bec4bab2a8a09da0a8b2bcbeb3a99e9285796d626f7c8895a2afbbbcb0a396897d7b7b7b7b7b7b7b7b7e8a97a4b1bdbaaea194877b7b7b7b7b7b7b7b7b7b796d6053473a2d2014070000000000010b151f28343f4a54606b75818e98a2aebac4c5baaea2988d8074695e5246434b515a61696e79828e939ea5afb8c2beb3aaa0958c7f7377829098a3aeb7c1bdb3a9a29792867d716d605c554e443f382f29241e17110b060000000000000000000000030d17212931363a3b43505d697683909ca9b6c2b6a99c8f8376676d726d636875818e9ba8b4c1b6aa9d90837c8995a2afbcbcb1a7a09d99999999999999999999999999999c9fa6b0bbbeb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c10131b262f3a444f59606d79849199a4afbbc4c2baada2978e81756b60544a3f342d2e343f4a545f69727f8c959fabb5c0c0b6aca0968d80746b60554b40342a1d140a0000000000000000000000000000000000000000000004111d2a37434f5c677277787878787878787878787878787878787878787878787878828f9ca9b6c2c1b5a89b8e817878787878787878787878787878787878787878787878756f65594d4034271b0e0100000000000000000004101c2834404b54626e7b8894948f82796d676874818e9ba7b4c1b4a79b8e81746a7683909da9b6b6a99c8f827a7a7a85929eabb4a89b8e817a7a7c8895a2aeb1a4988b7f7a7a7f8b98a5b2b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13202d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827d868e8275676a7784909daab7c3c0b9b5b3b2b2b2b2b2b2b2b2b2b2b4b6bac1c0b3a79a8d8074675a4d4134271a0e010000000000000000000000020c1a25313b45515d67737f8c97a2adbac5c3bab2acaaacb2bac3b9ada1978c7f7267626f7c8895a2afbbbeb1a5998f8987878787878787878a909aa6b2bfbcafa3978d878787878787878787877f7265594c3f3226190c000000000000030d17232e38424f59616e7b86929fa8b2bdc9bfb4aa9f92867b6e61564c41414550575f676d79818e939ea6b0b9c3bcb1a79f92867b7e8b949faab4bfbeb4aba29792857c706b625a514b433c332d261d19130c060000000000000000000000000009141f29333b42464848505d697683909ca9b6c2b6a99c8f8376696066635b65727f8b98a5b2beb8ac9f92857c8995a2afbcc3b9b1abaaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a9abb0b8c2beb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050a141d29323d45515d676f7c87939fa9b2bec9beb3a99e93897d6f665c50443a30313944505c666e7b86929fa7b1bdc7bbafa49a9184796d60594f43392e22180b020000000000000000000000000000000000000000000005111e2b3844515e6b778485858585858585858585858585858585858585858585858587929facb9c5c5b9ac9f928785858585858585858585858585858585858585858585858175685b4e4235281b0f0200000000000000000006131f2c3845515c6673808d9a9f949082796d6674818e9ba7b4c1b4a79a8e81746a7683909da9b6b7ab9f948f8787879297a1adb6aa9e938e8787888e98a4b0b3a79b918b87878b919ba7b3b9aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d242d3a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82757c857e79706b7784909daab7c0b6aea8a6a5a5a5a5a5a5a5a5a5a5a8aaafb7c0b3a79a8d8074675a4d4134271a0e0100000000000000000000000009141f2935414c55606d7a85929faab3becac3bdb8b7b8bdc3beb3a99e9285796d60626f7c8895a2afbbc1b6aba199969494949494949494979aa2acb7c3bfb4a99f979494949494949494948c7f7265594c3f3226190c0000000000000006111c26303d46525e68727f8c96a1adb9c4c6bbaea3998d8073685d5245393e454d555d676d78818e949fa7b1bcc3baaea398908385929ea6b0bcc0b6aca39992857c6f6a6059504540393128221c140b080100000000000000000000000000020e1a25313b454d535455555d697683909ca9b6c2b6a99c8f8376695c595556636f7c8996a9b3bebaaea2988a7d8a97a4b0bdc4c3bcb8b6b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b7bbc2c4beb1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e12141517202935404b55606a74808d97a1adb9c2c5bcafa59d9083786d60564c413539434e58606d78839098a2aeb9c3beb2a89f93887d70675d51473d30271d1007060400000000000000000000000000000000000000000002121f2c3945525f6c78859292929292929292929292929292929292929292929292929299a3afbbc7c7baaea39992929292929292929292929292929292929292929292928f8275695c4f4236291c0a020000000000000000000713202d3a4653606d7985929ea69f948f82786d75818e9ba8b4c0b4a79a8d81746a7683909da9b6bbb0a69f9c9393939ea1a9b3baafa59e9b93939598a0aab5b7aca39b989393989ba3adb8b9aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f353a4653606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82756f7b7e847d757784909daab7b9aea49d9a989898989898989898989b9ea5afbab3a79a8d8074675a4d4134271a0e01000000000000000000000000030d19242f3a45525d6873808c98a2aebac7cec8c5c4c5c8c6b9ada1978c7f72675d626f7c8895a2afbbc7bdb3aba5a3a1a1a1a1a1a1a1a1a4a6acb4bec8c5bab1a9a3a1a1a1a1a1a1a1a1988c7f7265594c3f3226190c00000000000000000a141e2a36414d56606d7984919ea9b2bec9bfb5ab9f92857a6d60544a40343b434c555c666d78828f95a0aab4bfbfb4aa9f94909297a1adb8c2bbafa49a92877d706a60584f473f342f271f17110a0200000000000000000000000000000005121e2a36424d575e61616161697683909ca9b6c2b6a99c8f83766961616161616d7a8797a2adbabfb4aa998c7f8c99a5b2b7b7b7b7b7b7b7b7b9bdc0c0c0c0c0c0bdb9b7b7b7b7b7b7b7b7b1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e20212020242f39434e58606d7a84919ea6b0bdc6c1b8aca0958b7f72685e52463c404b55606a737f8c959faab4bfc0b6aca1968d81746b60554b40342b1e151a1312100c07000000000000000000000000000000000000000b141c2c3945525f6c7885929e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa3abb5c0cbcbbfb4aba39f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9c8f8275695c4f4236221b140b020000000000000005121e2a36424d5764717e8a97a1ada69e948e817475818e9ba8b4c0b3a79a8d80746a7683909da9b6c2b8b0aba9a0a0a0abadb3bbc1b7afaaa8a0a0a2a4aab2bcbeb5aca7a4a0a0a5a7adb5bfb9aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a40454753606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82756a76828f8a817a83909daab7b5a89d928d8c8c8c8c8c8c8c8c8c8c8e939eaab6b3a79a8d8074675a4d4134271a0e010000000000000000000000000008131e2935414c56606d7a85929fabb5c0cbd4d1d0d1cabeb3a99e92857a6d6055626f7c8895a2afbbc8c5bdb6b1b0aeaeaeaeaeaeaeaeb1b2b7bec6d0ccc3bab4afaeaeaeaeaeaeaea5988c7f7265594c3f3226190c0000000000000000020c1925303b45515c66727f8b97a1adb9c5c6baaea2988c7f72665c5144383b41464b545c666d79839098a2aebac2bcb0a69f9c9ea1a9b3bebcb0a69f93887e716b605853504a42382e23170d0600000000000000000000000000000000000714212d3a46535e696e6e6e6e6e7683909ca9b6c2b6a99c8f83766e6e6e6e6e6e6d7885929fabb8c0b4a79a8d818d9aa7abababababababababadb2bac4cfcec4bab2acabababababababababa4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e2d2c2927313d45515d67717e8a949eabb5bfc8bcb1a79f92857a6d61584e4345515d676f7c87929fa7b1bcc6bbafa49a9184796d60594f43392f22202127201f1c18120b030000000000000000000000000000000009121c262e3645525f6c7885929fababababababababababababababababababababababacafb5bdb9b9b9b9bdb4aeacababababababababababababababababababababa89c8f8275695c4f42332d261d140a000000000000000714212d3a46535f6976828f9ca9b3b0a69d938c7f75828e9ba8b5c0b3a69a8d80736a7683909da9b6c3c2bbb7b6adadadb8b9bec4c4c1bab6b4adadaeb0b5bcc4c4beb7b3b1adadb2b3b8bfc4b9aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a434b515353606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82756e7b8793938e8585929fabb8b3a69a8d807f7f7f7f7f7f7f7f7f7f818e9ba8b4b3a79a8d8074675a4d4134271a0e0100000000000000000000000000010d19242f3a45525d6873808d99a3afbbc7d3deddd2c6b9ada1978c7f72675d55626f7c8895a2afbbc8cfc7c1bebcbababababababababdbfc3c8d0d8d5ccc5bfbcbabababababab2a5988c7f7265594c3f3226190c00000000000000000008141f2834404b54606d7984919ea9b3bec9beb4aa9e9185796d6053463b444c525459545d676e7b86929fa6b0bbc2b8b0aba9abadb3bbbeb4aa9f948c7f736c616064605c544a3f34281e150b00000000000000000000000000000000000815212e3b4854616e7b7b7b7b7b7b83909daab6c3b6a99d90837b7b7b7b7b7b7b797783909daab6c2b5a89b8f828f9b9e9e9e9e9e9e9e9e9e9ea1a8b2bdc9c9bdb2a8a19e9e9e9e9e9e9e9e9e9e978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17212930363a3b3a39352f2935414c55616c76828f99a3aebbc5c3baada2978d80746a5f53474d57606d79839199a3aeb9c2bdb2a89f93887d70675d51473d31282a2d2e342d2c28231c150c03000000000000000000000000000006101b242e384047525f6c7885929fabadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadada89c8f8275695c4f443f382f261b11060000000000000815222e3b4855616e7b87939facb9b8afa59f93877d818e9ba8b5c0b3a6998d80736a7683909da9b6b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b555d605d606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827574818d9a9e97929297a2adbaaea295887c727272727272727272727e8a97a4b1b3a79a8d8074675a4d4134271a0e01000000000000000000000000000008131e2935414c56616e7b86929facb9c3ced9d5c9beb3a99e92857a6d605555626f7c8895a2afbbc8c5bdb6b1b0aeaeaeaeaeaeaeaeb1b2b7bec6d0ccc3bab4afaeaeaeaeaeaeaea5988c7f7265594c3f3226190c000000000000000000020c18232e3945515c67727f8c97a1adb9c6c5b9ada1978a7d7064574d424c565e6166605d5f69727f8b949fabb7c1c2bcb7b6b8b9bec5baaea2989082786c60656c716d665c50443c30271c120700000000000000000000000000000005121f2b3845525e6b7885888888888890959fabb8c4b8ab9f9590888888888888887d75828e9ba8b5c1b6aa9d908390919191919191919191919196a1adb9c5c5b9aca19691919191919191919191918b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c162029333b4246484745403a312f3a43505a626e7b87929fa9b3bec9beb3a99f92877c6f62594f535e6974808d95a0abb3bbbfb5aba0968d80746b60554b40352b3036393b413a38342e271e150b00000000000000000000000000030d18222d37404a52585f6c7885929fa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09c8f8275695c53504941382d22170b0100000000000d1a2733404d5a6673808d9aa4afbbc0bbafa499928583909daab7bfb2a6998c7f736a7683909da9aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d67606d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82757a86929fa9a19e9fa2a9b3beaea295887b6f6565656565656565717e8a97a4b1b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010d1924303a46525e6975828f9ba8b1bdc8d4d2c6b9ada1978c7f72675d5155626f7c8895a2afbbc7bdb3aba5a3a1a1a1a1a1a1a1a1a4a6acb4bec8c5bab1a9a3a1a1a1a1a1a1a1a1988c7f7265594c3f3226190c0000000000000000000007121d2934404b55606d7985929eabb5bfc9beb3a99c8f8275695e5246525e686e736d6760626d76828f9ca6b0bbc6c7c4c3c5c6c7bcb1a79f92867b6e66686e777e786d60584e42392e23180c02000000000000000000000000000005121f2b3845525e6b788591949494949d9fa7b1bcc8bcb1a79f9d9494949494948a7d73808d9aa6b3c0b7ab9e9184848484848484848484848484919eabb7c4c4b7ab9e918484848484848484848484847e7164574a3e3124150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b151e28323b454d525453514b433a32313e47535f6973808d97a1adb9c3c5bbafa3998f82756b605454616e7b8690949ea1a9afb8aea3999184796d60594f433a2f323b4146474d4644403930271c12070000000000000000000000010b151f2a343f49525c64676c7885929393939393939393939393939393939393939393939393939394939393939393939393939393939393939393939393939393939393939393938f8275695b605b53493f33271d12070000000000111e2b3744515e6a77849196a0a7b1b9c0b5aba297929095a0acb8bfb2a5988c7f726a7683909d9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b55606d7a716c6d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82757f8c98a2aeadababadb3bbbbaea295887c727272727272727272727e8a97a4b1b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000008131e2a36424d5763707d8995a0acb8c5d1c9beb3a99e9285796d60554b55626f7c8895a2afbbc1b6aba199969494949494949494979aa2acb7c3bfb4a99f979494949494949494948c7f7265594c3f3226190c00000000000000000000000c18232f3945515d67727f8c99a3aebbc7c4b9ac9f93877b6e61544d57616e7a8079716c66626f7c88939eaab6c3ced0cfd1d1c4b7ab9f958b7e71696c707a828a7f736a5f544a4034281e140a000000000000000000000000000005121f2b3845525e6b7885919ea1a1a1aaabb1b9c3cdc2b9b1aba9a1a1a1a1a1968a7d727f8c98a5b2bfb6a99c908378787878787878787878787a8794a1adbab9aca09386787878787878787878787878716c6155493930271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d27303a444d575e61605d554c443b3337424d57606d7a85929ea7b1bcc8c0b5ab9e94897d6f635a535e696e7c828b92979ea5aca69f92877c6f675d51473d31343d444c52545a53514a42392e23180f060000000000000000000007121d27313c46515b646e737078858686868686868686868686868686868686868686868686868687878686868686868686868686868686868686868686868686868686868686868686827569656c655b5044392f23180c02000000000915222f3c4855626f7c8491959fa7b1b9bdb3a9a29f9da0a7b1bcbeb2a5988b7f726a7683909191919191919191919191919191919191919191919191919191919191919191919191919191919191919186796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6773807e716d798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827884919eaab4b9b8b8babec5c0b3a6998d807f7f7f7f7f7f7f7f7f7f818e9ba7b4b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000020e1a25303b4854606b7784919daab7c4d0c6b9ada1978c7f72675d514955626f7c8895a2afbbbeb1a5998f8987878787878787878a909aa6b2bfbcafa3978d878787878787878787877f7265594c3f3226190c000000000000000000000007121d2935404b55616d7a86929facb9c4c7bbafa4998c7f736658525e6974808c847e78706b6a75828f9ba7b1bcc8d4dcd3c7bbb0a69d9083766c6d747d858f92877c6f665c51443c30261c11060000000000000000000000000005121f2b3845525e6b7885919eabaeaeb6b8bcc3cbd4cbc2bcb8b6aeaeaeaea3968a7d717e8b97a4b1beb7aa9d9184776b6b6b6b6b6b6b6b6b6e7a8794a1adbab9aca09386796d6b6b6b6b6b6b6b6b6b6b64615a514b43392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f39434c565e696e6d675e564d453c333c45515d67717e8b95a0acb8c2c7bdb0a69d9083766c6154575f6a6e777e858e939da09f948c7f736a60554b4035343f464e565e6167605c544a40342821180c030000000000000000040d18232f39434e58626d73807d76797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a797a7a797a7a7a7a7a7a7a7979797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d7177776c60554b4034291e1308000000000815212e3a47535f6a6f7b8390959fa7b1b9bbb3adabaaacb1b9c3beb1a4978b7e71687581848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985867b6e798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827e8a96a1acb6bec3c5c6cacfc1b4a89c928d8b8b8b8b8b8b8b8b8b8b8e939ea9b6b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000009141f2c38444f5965727f8b98a5b2becbc5b8ab9e9285796d60554b4955626f7c8895a2afbbbcb0a396897d7b7b7b7b7b7b7b7b7e8a97a4b1bdbaaea194877b7b7b7b7b7b7b7b7b7b796d6053473a2d2014070000000000000000000000010c18242f3946525e6875828e9ba8b2bdc9c0b5ab9d9184776a5f57616e7b8692918b837d756e6f7c8895a0acb8c5d1ddd0c3b7ab9f94897d706f79818a9297999083786d60584e42382e23170b0300000000000000000000000005121f2b3845525e6b7885919eabb8bbc3c4c8cdd4ddd4cdc8c4c3bbbbbbb0a3968a7d707d8a96a3b0bdb8ab9e9285786560606060606060616e7a8794a1adbab9aca09386796d606060606060606060606060605c554b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081117222d38414b555d686e7b796d685e574d453c35414c55606d7883919da6b0bcc7c1b8ab9f958a7d70665c50575f656c717a81899196979082786d60584e4339394045505860686e746d665c51443e33291e150b00000000000000010c161f2934404b555f6a727f8b8a827c736d6d6d6d6d6d6d757878787878787878776d6d6d6d6d6e7a8380736d6d6d6d6d6d717e807a736d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d73797e847e71675c51453a3025190d0300000006121f2b37434e585f696e7a8390959fa7b1b9bebab8b7b8bcc3cbbdb0a4978a7d71646f757777777777777777777777777777777777777777777777777777777777777777777777777777777777777777776d665c5044382b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e5864717e8a908379798693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82838f979fa4acb1bbc0c7cfd0c4b9aea49c99989898989898989898989b9ea5afbab3a79a8d8074675a4d4134271a0e010000000000000000000000000000000004101d2935404b55616e7a8794a1adbac7c1b4a79b8e8174675d514c5255626f7c8895a2afbbbbafa295887c6f6e6e6e6e6e6e707d8996a3b0bcb9ac9f9386796e6e6e6e6e6e6e6e6e6d675d5145392c20130600000000000000000000000007121d2a36414c5663707d8996a1acb9c7c7b8aca095887b6e625e6974818d989e959089827b747784909daab7c3cfd4c8bcb1a79c8f8276737c848e939ea1a0958c7f736a5f544a3f34281f140900000000000000000000000005121f2b3845525e6b7885919eabb2b2b7b9bdc4ccd6ccc4bdb9b7b2b2b2b0a3968a7d707c8996a2afbcb9ac9f9286796d6d6d6d6d6d6d6d6d6e7a8794a1adbab9aca09386796d6d6d6d6d6d6d6d6d6d6d6d6d6d675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a2327333f49535c676d7a84837a6e695f574e463c3a44505c66707d8a949fabb7c1c7bcb1a79d9184786d60554e535b60686d747d848c92857b6e665c50463c3a424b515a626a6f7a80786d605a50453b30271d120700000000000007131d28313a45515c676f7c8692948f878079706b6060697582848585858585858583776a606b707b848f867a6e616060616e7a858d86807a736d67606060606060606060606060676d727a7f858b9084796d60564c4135291f1409000000030f1b26313c464e575e686d7a839095a0a7b1bbc4c5c3c5c8cec9bcb0a396897d706365686b6b6b6b6b6b6b6b6b6d797b7b7c7d7d7e7e7e7e7d7c7b7976706b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b605c544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a768390958c80788693a0acb9b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827e858e939aa0a7afb5bdc3cbcabfb6aea8a6a5a5a5a5a5a5a5a5a5a5a7a9afb7c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000006131f2c3945515d67727f8c98a5b2bfcbc4b7ab9e9184786a5f53565e61626f7c8895a2afbbbbafa295887c6f626161616163707d8996a3b0bcb9ac9f9386796c6161616161616161605d554b4035291d1104000000000000000000000000010d1925303a4653606c7884919eacb6c0c8bdb1a8998c7f7366616e7b86929fa7a09d948f86807a7f8c99a8b2bdc9d1c4b8ab9f95897c787f8791969da5ada79f92877c6f665c50443b31251a0d04000000000000000000000005121f2b3845525e6b7885919ea5a5a5abacb2bac4cec4bab2acaaa5a5a5a5a3968a7d707b8895a1aebbbbafa399877a7a7a7a7a7a7a7a7a7a7a7b8794a1aebab9ada09386797a7a7a7a7a7a7a7a7a7a7a7a7a796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19222c353e44505b656d79829090837b6e695f584e463c3f4a54616c7683909ca6b0bdc7c2b8aca0958b7e71675d514950565e616b707980867e70695e544a3f3a434c545c606c717c848d80736c61574d43392e23180f0600000000010d18242f3a43505a606d798390989f99928d847d746d676a7783909191919191919185786b6d727d8591968d8074695f616c75818e97928d867f79716c666058535353535960666d72797f858c9197968c7f72685e52463b31261a0e040000000a15202a343c454d565d686d7a839095a0a9b2bcc6d0d1d4d9c8bcafa295897c6f62565b5e5e5e5e5e5e5e5d677683878889898a8a8b8b8a8a898885827d736d63595e5e5e5e5e5e5e5e5e5e5e5e5e5e5e53504a42382e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626f7b88949f92877c8895a2afbbb3a79a8d8074675a626f7c8895a2afbbb5a89b8f82757a818890959fa3abb1b9c0cac8bfb9b4b3b2b2b2b2b2b2b2b2b2b2b4b6bac1c0b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000004101d2935404b55606d7985929eabb8c5d1c5b9aca196887b6f62555e686e686f7c8895a2afbbbbafa295887c6f625554545663707d8996a3b0bcb9ac9f9386796c605454545454545453514b433a2f24180d010000000000000000000000000008131f2b3844505b66737f8c9aa4afbbc8c3b7aa9d908377696a74818e99a3aeaca69e99928d857f8c96a1adb9c5cbbfb4aa9d908376818c9299a0a8afb9aea3999083786d60574d42362a20160c010000000000000000000005121f2b3845525e6b788591999999999ea1a8b2bdc9bdb2a8a09e9999999999968a7d707a8794a1adbac0b5ab978c8786868686868686868686878d97a3afbcbbaea2968b868686868686868686868686868686796c5f5246392c1f13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212b343e47515b606c77818e949591847b6f6a5f584e453b42505a636f7c89949eabb5c0c8bdb1a89e9184796d60554b444c525960676d737a706c61574d423b444c555d666d747e8791928a7e70695f554b40342821180d0300000004111d2935404b55616c74808d95a0aaa39f96918980796f6a7783909d9e9e9e9e9e9285786d757f8792979f92867b6e6167707d8a939e9f98928c847e786f6a605d55565e616b70787f858c92979ea19f92857a6d61574d42362a20150a000000030e18222a333b444c565d686d7a839097a1aab4bdc7d2ddd8ccc0b6ac95887b6e62554f51515151515153606d7a86929595969797979797979698928f897f736b6054515151515151515151515151515146443f3830261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d6774808d9aa3999083909daab6c0b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82756d747c838d9299a0a7aebabec5cec4c1c0bebebebebfbab8b5b5b5b5b5b5b5b5b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010c131f2c3945515d67727f8c97a1adb9c6d2c9bdb2a8998c7f726658616e7a6f6f7c8895a2afbbbbafa295887c6f625f5f5f5f63707d8996a3b0bcb9ac9f9386796c605f5f5f5f5f5f5f595751493f35291e120600000000000000000000000000030f1c28333f4a54616e7b87939facb9c6c5b8aca095887b6e6f7c87939fabb5b8b0aba39f93877c84919eabb7c4c7baaea3988b7e727d87939fa8b2babfb5ab9f958c7f72695e53463e32281e13080000000000000000000005121f2b3845525e6b78858c8c8c8c8c9196a1acb9c5b9aca096918c8c8c8c8c8c8a7d707a8793abb4bfc7bda89e97949393939393939393939394979fa9b4c0beb2a79d96939393939393939393939393939285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a333d46505a626d73808d939ea09691857c6f6a5f574d453e4854606b75828f99a4afbbc6c3b9ada1968c7f72675d514541464f555c60686e68615a50453c454d565e676d78808b92999f92857b6e675c51453e332a1f150b0100000613202c3945515d67707d8a929da7aeafa8a19e928d837c717783909daaababab9e92857879818c9399a2a3998e81756a6d7a84919ea5aaa29f96918b837c746d676061686e757d838b92979fa2a9ada2978d8074695f53463d32271b0f030000000610182129323a434c565e686e7b859198a2abb5c0ccd7d4c8bbafa49a877a6d61544744444444444a5663707d8999a3a2a3a3a4a4a4a4a3aaa29f9c93877c6f635649444444444444444444444444443a38342e261e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985929faba0959095a0acb8c0b3a79a8d8074675a626f7c8895a2afbbb5a89b8f8275686a6f79808791959da4adb3bcc2cbcdcccbd0c6bcb4aeaca8a8a8a8a8a8a8a8a8a79a8d8074675a4d4134271a0c04000000000000000000000000000007121d2935404b55606d7985929ea9b3bec9d5cec2b5a99c8f827667606a77837c6f7c8895a2afbbbbafa295887c6f6c6c6c6c6c6c707d8996a3b0bcb9ac9f9386796c6c6c6c6c6c6c6c6c65625b51463a2e22160900000000000000000000000000000b17222d3846525e697683909da9b6c3c8bcb1a7988b7e7176828f99a4afbdc1baaea3988e8175828e9ba8b5c1c5b8ac9f92867a6d74808d96a0acb9c1bdb1a79f92867b6e615a50443a2f24190c03000000000000000000000c1925323f4c5865727f7f7f7f7f7f84919eabb7c4b7aa9e91847f7f7f7f7f7f7f7b6e798699a3aebac7bab0a8a3a0a0a0a0a0a0a0a0a0a0a0a1a3a9b1bbc5c4b9afa7a2a0a0a0a0a0a0a0a0a0a0a0a09f9285796c5f5246392c1f130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313b454e58616c727f8b929da5a8a19792857c6e695f574d44434f59626f7c87939faab4bfc9bdb2a89e92857a6d60554b403d434b51565e615e5650483e464e575f686d79828d929fa3a2979083796d605a50453c31271d120700000714202d3a4753606d7a858d92989fa2aaaeaca49d9590867e7783909daab6b8ab9e92857b838e939fa4abab9f93877c6f74818d96a1adb4aea9a19e959087807a6f6b6c707a818990959ea1a9adb3b3a99f92867b6e61584e43372b1f130600000000060f172028313a444c565e696f7c869299a4afbbc1ccd2c6b9ac9f9386796d6053463a383834404b556673808c99abb5b0b0b1b1b1b1b0b4aeaca49a8e817568554b403438383838383838383838382d2b28231c140c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e5864717e8b97a2ada7a09da0a7b1bcc0b3a79a8d8074675a626f7c8895a2afbbb5a89b8f82756860666d737c838d929fa2a9b1b9c1ccd2d6cabfb4aaa29f9b9b9b9b9b9b9b9b9b9b9a8d8074675a4d4134241e160e04000000000000000000000000010d18242f3945515d67727f8c97a1adbbc5cfdad2c5b8ac9f9286796d626f7c8983797c8895a2afbbbbafa295887c79797979797979797d8996a3b0bcb9ac9f938679797979797979797979726d62574a3e3125180b000000000000000000000000000006111c2a36424d5766727f8c99a8b2bdc8c1b5a89b8e82757d8a949fabb5c0beb2a99f92867b727f8b98a5b2bec1b5a89b8e8275686d7984919ea5afbbc2baaea2988f82766c61564c4135291e150a000000000000000000000b1824313e4a56626d72727272727683909ca9b6c2b6a99c8f83767272727272726e697986929facb9c5c2bab3afadadadadadadadadadadadaeafb4bbc3cdcbc1b9b2aeadadadadadadadadadadadac9f9285796c5f5246392c1f13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57606a707e87939fa4aeb2a9a19791847b6e695e564c4347535f6a74818e98a3aebac6c4b9ada2978c7f72675d5145393940454c5254524c443e464e585f696e7a838f949da4aea9a0958d80746c61574e43392f24180c00000613202c3945515d676e7b80868d92989fa3abaea7a098928a8083909daab6b9ac9f92878590959ea5aeaba39f998f83767d88939fa8b2b9bab2ada79f99938d847d73747d858e939da0a7adb3babeb9aea3998e81756a6054473b2e2215080000000000050e161f28323a444d57606a707d87939fa6b0bac4cfc5b8ab9e928578665c5044382b2c3845515c677683909ca9abaaabadb2babebdbfbab6ac9e918478675c5145382c2b2b2b2b2b2b2b2b2b2b2221201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a7683909da9b3b1acaaacb1b9c3c0b3a79a8d8074675a626f7c8895a2afbbb5a89b8f827568545c606a6f79808a92979fa7afbbc0c7d0c6baaea298928e8e8e8e8e8e8e8e8e8e8e8d8074675a4d4135302820160c02000000000000000000000004101d2935404b55606d7985929ea9b3becdd6e0d3c7baaea398897d706674808d8e817c8895a2afbbc5b9ac9f9287868686868686868687939facb9c6b9aca09389878686868686868686877f7265594c3f3226190c0000000000000000000000000000000e1a25303b4855626e7b8896a0acb8c5c5b8ab9f92857984919da6b0bdc7b9ada1978d8073707c8996abb5c0c1b5a89b8e82756867707d89939da9b3bebfb4aa9e948a7e71685d52453d30261c11060000000000000000000915222e3a46515b6265666666697683909ca9b6c2b6a99c8f8376696666666666616c7885929fabb8c5d2c5bfbbbab9b9b9b9b9b9b9b9b9b9babcc0c5cdd5d3cbc4bebbb9b9b9b9b9b9b9b9b9b9b8ac9f9285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f696f7c869299a4afb6bbb3a9a19691847b6e685e554b414e58616e7b86929faab4bfcabeb3a99e9285796d60554b4035343b41464746413c454e585f6a6f7b8490959fa6aebab1a79d928a7e716a5f554b4035291d10040004111d2935404b555e696e747a80868d92999fa6adaaa29f928d9095a0acb8baaea399929297a0a7aaa39f99928e87817a84919a9ea2a9acb2b9b9b1aba49f96918780818a92979ea5acb1b9bdb9b3adaaa29f93897c6f6256493c2f2316090000000000000a141d2c363e45494e58616c727f8c949ea8b2bdc7c3b7aa9d9084776a544a3f342f2f3a4653606d7986929f9f9e9e9ea1a9adb3bcc5c6b9ac9f93867a6d6053473a2f2f2f2f2f2f2f2f2f2f2f2f2e2d29251e160e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c88959fabbbbcb8b6b8bcc3cbc0b3a79a8d8074675a626f7c8895a2afbbb5a89b8f8275685c515860676d747e8590959ea5afb5bdc7c5b8ac9f92868182828282828282828282827e7164584b45413a32281e130800000000000000000000000613202c3945515d67727f8c97a1adbbc5cfdedfd6cbbfb4aa998c80736d798592938d808d99a6b3c0c7bbafa3999292929292929292929399a4afbbc7c7bbafa3999292929292929292928c7f7265594c3f3226190c0000000000000000000000000000000914212e3a47535f6a7784919daab7c4c6baada2978e818e96a0acb8c2bdb0a69e9184796d6e7b8799a3afbbc3b6a99c90837669606b74818e97a1adb9c2bcb0a69e91857a6d60594f42382e23170c02000000000000000006121e29343f4951565859595d697683909ca9b6c2b6a99c8f8376695c595959595f6b7885929eabb8c5cac1bbb7b5b3b3b3b3b3b3b3b3b3b3b3b5b9c0c8d2d1c8bfb9b4b3b3b3b3b3b3b3b3b3b3b3ac9f9285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b859298a2abb5c0c5bbb2a9a19691847a6e675d534946525e6973808d98a3aebac7c5b9ada1978c7f72675d5145392f3036393b393b454d575f6a6f7c859196a0a7b0b8c0b9aea49f92867c6e675d5145392c1f130600010d18242f3a434d575e61686d737a80878f949ea1a9aea49c999da0a7b1bcbfb4aba39f9fa2a9a29f98928d87817b747b82878d92979ea1a8acb2bab5afa8a199938d8e939ea1a9afb8bcb9b2aca9a19e98928e898074675a4e4134271b0e000000000006111b262f3e485055575759606c77828f96a1abb5c0c2b5a99c8f8276695c4f433c3c3c3c4956636f7c89989892919191969fa2a9b3bec8bbafa49a877a6e6154473c3c3c3c3c3c3c3c3c3c3c3c3c3a3935302820160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b1bdc7c4c3c4c8cdcdc0b3a79a8d80746763636f7c8895a2afbbb5a89b8f8275685c5a5a555c606c717b838e939fa4abb5c0c6baaea2988d807575757575757575757575716c625a54524c443a3024190d0100000000000000000004111d2935414b55606d7985929ea9b3becdd2d1d2d5d0c3b6a99c908376707d8a979f9386939facb9c6cbc0b5aba39f9f9f9f9f9f9f9f9f9fa4abb5c0cccbc0b5aba39f9f9f9f9f9f9f9f988c7f7265594c3f3226190c00000000000000000000000000000006121f2b37434e586673808d99aab4bfcabeb3a99e938e939ea8b2bdc0b5ab9f948b7e71676d7986929facb9c4b7ab9e9184786b59616d7a85929ea6b0bdc2b9ada1978e81746b60544a3f34281f14090000000000000000010d18232d373f464c565e6165697683909ca9b6c2b6a99c8f83766965656565605d6b7884919eabb7c4c1b8b0aaa8a6a6a6a6a6a6a6a6a6a6a6a8aeb6c0cacabfb6aea8a6a6a6a6a6a6a6a6a6a6a6a69f9285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c919fa3abb3bcc5c4bbb2a8a0969083796d655b50444d57616e7a86929fabb5c0c9beb3a99e9285796d60554b4034292a2d313b444d575f696f7c859197a0a8b1b9c2ccc0baaea2989083796d6053473a2d201407000007131d28313b454d53565e61686e747b828a92979fa6aea8a6aaacb1b9c3c6bdb4aeaca8a19e98928d86817b746e696e767b80858b91969ea1a8adb3bbb2aba49f999a9da5adb3bbbab2ada8a09e97918c86817c746e64584c3f33261a0d00000000000b17222d3841505a616464615b656d7a849199a3afbbc0b4a79a8d8174675a4e49494949494c5966737f89878685848485889297a2adbac6c0b6a194887b6e615549494949494949494949494949494746413a32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b959fabb5c0ccd0d1d4d9cdc0b3a79a8d80746d7070707c8895a2afbbb5a89b8f82756860676767676767696e79818c9399a4afbbc7bfb4aa9d928c80736d686868686868686867676767605d564c4135291d11040000000000000000020c16202c3945515d67727f8c97a1adbbc5c9c6c5c6c9cfc5b9ac9f92867975818e9ba49a939aa4afbbc8d1c7bdb5afacacacacacacacacacacafb5bdc7d2d1c7bdb5afacacacacacacaca5988c7f7265594c3f3226190c000000000000000000000000000000020f1a26313c4956636f7c8998a2aebac6c5bbafa59e9b9ea5afbac3bbafa3999083786c60667884919eabb7c4b9ac9f928679675c5e68717e8b949fabb5bfbeb3a99f93887c6f665c50443b30251a0e00000000000000000006111b252d3946525e686d72727683909ca9b6c2b6a99c8f837672727272726d676b7784919eaab7c4bbb0a69e9c999999999999999999999a9da4aeb9c5c4b9aea49c999999999999999999999999999285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4b57636d737f8b9299a2a9b3bbc5c4bab2a89f958e81776c605a5046525e6874818d99a3afbbc7c5b9ada1978c7f72675c5145382c262f3a434c565e696e7b859297a1a9b2bac3c7c0bbafa9a19a938c807366594d4033261a0d0000010c161f29333b4246535d65686a6a6e767e858f949fabb5b3b6b8bcc3cbcfc6bfb5aba196918c85807b746e696a6a68696e73797f848b91969fa2a9afb7b5afaca6a7a9afb9bcb4aea8a19e96918b857f7a746f6a645c52473c3024170b00000000030f1b27333f4953616c71716c605d686f7c86929facb9bfb2a5998c7f7266595555555555555555626f7c7c7b79787877787c85929fabb8c5bbaea194887b6e6155555555555555555555555555555554524c443a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78839099a4afbbc6d1dce0dacdc0b3a79a8d80747a7c7c7c7f8b98a5b1beb5a89b8f8275686d737373737373737373747f87939facb9c6c6bcaea49c928b7f747373737373737373737373736d685d5245392c201307000000000000000008131e2935414c56606d7a85929ea9b3bec5beb9b8b9bec5c7baaea398897c7986929faca49fa4acb6c0ccd8cfc7c0bbb9b9b9b9b9b9b9b9b9b9bbc0c7d0d9d9cfc7c0bbb9b9b9b9b9b9b2a5988c7f7265594c3f3226190c000000000000000000000000000000000913202d3a4653606d7985929facb8c5cdc1b7afaaa8aaafb7c1beb2a99f92877c6f655b6a7783909daab6c3bbaea39986796d6056626c76828f99a3aebbc4bbafa49a9083786d60574d42362a1b11060000000000000000000714212e3a4754616d7a7f7f7f84919eabb7c4b7aa9e91847f7f7f7f7f7f796d6a7784919daab7c4b7aa9e948f8c8c8c8c8c8c8c8c8c8c8d929da8b5c1c1b4a89c928c8c8c8c8c8c8c8c8c8c8c8c8c8c86796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16232f3b47525b636d737e879297a2a9b3bbc5c3bab1a79e938c80736c61584e4c56616e7b86929facb6bebab8b1a99e9185796d6053473a2d2d38414b555e686e7b849197a1a9b2bbc3c6beb6afa59e96918880796d6053463a2d201307000000040d17212931404d59656f7576767676767a828f99a3afbbc3c4c8cdd5d4c7bbafa49991847f7a76767676767676756f61676d72787e848b92979ea5afbdbbb9b3b4b6babeb4aaa29f96918b847e79736d68626058524a41362b1f14080000000005121f2b3744505b65717e7e746d67606d7a86929facb9c0b5ab978a7d71645f6262626262626262626a6f6f6e6d666b6b6a74818e9aa7b4c1bbaea194887b6e62626262626262626262626262626262615e564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666f7c87939fabb4bfcbd7e2dacdc0b3a79a8d80747d8989898b919ba7b3c2b5a89b8f82756d7a808080808080808080808083909daab6c3cec0b6aea49f9287818080808080808080808080807a6d6054473a2d21140700000000000000010d1925303945525d68727f8c97a1adbbc1bbb3adabadb3bbc5bfb4aa988c7f7e8b98a2aeafacafb6bec7d2cec5bcb6b1afadadadadadadadadb0b2b7bdc6cfcbc2b9b3afadadadadadadada5988c7f7265594c3f3226190c0000000000000000000000000000000006121f2c3844515c6676828f9ca9b5c2d0c9c1bab6b4b6bac1c6b9ada1978d80746a5f53697683909ca9b6c3bfb5a093877a6d60545a626e7c87929fa8b2bdc0b6aca0958c7f72695e5246382d22170b0000000000000000000916222f3c4955626f7c888c8c9196a1acb9c5b9aca096918c8c8c8c8c877a6d6a7784909daab7c2b5a89c8f8280808080808080808080808d9aa6b3c0bfb3a6998c80808080808080808080808080807f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a354049525b636c717d859297a2a9b3bbc5c2b9afa59c928a7e716a60564c535e6974818e9aa4afb3adaba7a09d978b7f7265584c3f32333f49535d676e7a849196a1a9b3bbc4c4bcb4aca49f938f847d736d665c5145382c1f130600000000050f172835424f5b6875818383838383838387929facb9c5d2d4d9dfd2c6b9ac9f9387838383838383838383838175685d60666d71797f858e939eabb5c0c6c0c1c2c0b6aca298928c847e79716d67615d56544e4641382f241a0e03000000000613202d394653606c78838a80796e696f7c8999a3afbbbbafa399887c6f626a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f727f8c99a5b2bfbbaea194887b6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54606a74818e99a3aebac6d1dcdacdc0b3a79a8d80747d8a9696989ba3acb7c2b5a89b8f82756e7b878d8d8d8d8d8d8d8d8d8d90959fabb8c4d1c8bfbbafa399928d8d8d8d8d8d8d8d8d8d8d8d877b6e6154483b2e2115080000000000000005111d2935414c56606d7a85929fa9b3beb8b0a9a19ea1a9b3bec1b5a89b8e81828f9caab4bbb9bbc0c7d0d9c7bcb3aba5a2a0a0a0a0a0a0a0a0a4a6acb4bdc8c4b9b0a8a2a0a0a0a0a0a0a0a0988c7f7265594c3f3226190c0000000000000000000000000000000004101c2834404a5466727f8c99aab4bfcad6cbc6c7c0bbb9bbbcb0a69e91847a6d60585c6976828f9ca9b5c2baada194877a6e6154535f6a73808d96a1adb9c2beb1a79f92867b6e6153493f33271b0f0300000000000000000916222f3c4955626f7c8895989ea1a8b2bdc9bdb2a8a09e9898989894877a6d6a7784909daab7beb1a4988b7e737373737373737373737a8794a1adbab9aca093867973737373737373737373737373726d63574b3e3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d19242e374049515a616b707c859297a2a9b3bbc5c1b7aea49f92867c6f685d524d57626e7b87939faca9a29f9a95908b868073665a4d40333c44505b656d79839096a0a8b2bbc5c3bbb2aaa29a938c817a706b605c544b4034281c10040000000000111e2b3744515e6a7784909090909090909299a3afbbc5c6cacfd7d4c7bbafa499939090909090909090909084786b5e545c60676d727a818e99a4afbbc7cccdc8bbafa49a92867f79726d66605c55524c47433d342f261d1308000000000713202c38444f5964707d8a928d837b6f727f8c98abb5c0b9ac9f9286796d626f7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c808d9aa7b3c0bdb0a3978a7e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424e58616e7b86929faab4bfcbd7dacdc0b3a79a8d80747d8a97a3a5a7acb5bec2b5a89b8f82756e7b87949a9a9a9a9a9a9a9a9a9d9fa7b1bcc8d4d7cbc0b5aba39f9a9a9a9a9a9a9a9a9a9a9a94877b6e6154483b2e211508000000000000030e18212d3946525e6873808c97a2adbbbdb0a69e979297a1adb9c5b8ab9f928587929facb9c5c6c8ccd2d9cdc1b6aba199969393939393939393979aa2acb7c2bfb3a89e969393939393939393938c7f7265594c3f3226190c00000000000000000000000000000000000c18232e3c4956636f7c8998a2aebac6d3d1c7bdb5afacafb4aa9f948a7e71675d515c6875828f9ba8b5c2baaea194877b6e61544e58606d7984919ea6b0bbb2ada69f988e8275655b5044372b1f120500000000000000000916222f3c4955626f7c8895a2abacb2bac4cec4bab2acaaa5a5a5a094877a6d6a7783909daab6beb1a4988b7e7166666666666666666e7a8794a1adbab9aca09386796d66666666666666666666666666635b51463b2f22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252e3740485059606a6f7c859297a2a9b3bcc6bfbaaea39891847a6d605b51535f6a75828f9b9f9c97928d88837e7a736e63584b3f3c454f59606c77818f95a0a8b2bac4c3bab2a9a19892887f756d686059514b42392e23180c000000000004111e2b3744515e6a7784919d9d9d9d9d9d9fa3abb5b4b8b9bec5cdcfc6bfb5aba49f9d9d9d9d9d9d9d9d9d9184786b5c605c555c6069707d86939facb9c6cbd0c6b9ac9f93877c736d67605c54514b46413a37322b221d140b01000000030e16222f3b4854606b7683909d9590857d76828f9ca9b6c2b7aa9d908477676b78848888888888888888888888888888888888888d929da9b5c1beb2a69a908a88888888888888888888888888888888887e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3c46535e6974808d98a3aebac7d2ddcdc0b3a79a8d80747d8a97a4b0b3b7bec7c2b5a89b8f82756e7b8794a1a6a6a6a6a6a6a6a6aaabb1b9c3cdd8dcd1c7bdb5afaca7a6a6a6a6a6a6a6a6a6a194877b6e6154483b2e21150800000000000009141f2a36414d56616d7a85929fa9b3beb5ab9e948f85929eabb8c5baada297929299a3afbbc4ced4d8ddd6cabdb1a5998f8987878787878787878a909aa6b2bebbafa2968c878787878787878787877f7265594c3f3226190c00000000000000000000000000000000000713202d3a4653606d7985929facb8c5d2cbc0b5aba39fa3aba2988f82766c61554c5b6875828e9ba8b5c1bbaea194887b6e615548515d67717e8a949fabafa9a19e948f8780786c605346392d2013060000000000000109111a222f3c4955626f7c8895a2afb9bdc4ccc8ccc4bdb9b7b2b2ada094877a6d6a7783909daab6beb1a4988b7e716b6b6b6b6b6b6b6b6e7a8794a1adbab9aca09386796d6b6b6b6b6b6b6b6b6b6b6b636059514940352a1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c252e363e474f58606a6f7c859297a2aab4bdc7bfb4aaa1968f81756d62584e58626f7c889494908b85817c77726d68635c524739424d57616b737f8c939ea7b1bac3c3bab2a8a09691867e736d615e564f45403930271d1207000000000004111e2b3744515e6a7784919da9a9a9a9a9aca8a8a8a8abadb3bbc5c6bcb4aeaca8a8a8a8a9a9a9a9a9a99e9184786b666d66605b666e7b859299a4afbbbfbec3c4bbafa49a8e81756c6156514a45403935302b272019100b020000000009151f2b37434e5863707d89959f9f9791877f86929facb9c1b4a89b8e8175686b78849195959595959595959595959595959595959a9da4aeb9c5c2b6aba29a97959595959595959595959595959595958b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2a36424d57616e7a86929facb6c0ccd8cdc0b3a79a8d80747d8a97a4b0bdc3c9cbc2b5a89b8f82756e7b8794a1aeb3b3b3b3b3b3b3b6b8bcc3cbd4d4cfcbcfc7c0bbb9b4b3b3b3b3b3b3b3b3aea194877b6e6154483b2e2115080000000000020e1a26313946525e6873808d98a2aebbbbafa4998f82808d9aa7b3c0beb3a9a2989298a0a8b2bdc9d5e2e8d5c9bcafa296897d7a7a7a7a7a7a7a7a7e8a97a4b0bdbaada093877a7a7a7a7a7a7a7a7a7a796d6053463a2d201307000000000000000000000000000000000006121f2c3844515c6676838f9ca9b6c2cfc7bbafa39992999f9f92867b6e615a504f5b6875828e9ba8b5c1bbaea194887b6e6155484b55616c76829099a3a39f96918a827b736c655b5044372b1f12050000000000010a131b232c343c4955626f7c8895a2afbbbcbbbbbbbbbbbbbbbbbbbaada094877a6d6a7783909daab6beb1a4988b7e787878787878787878787a8794a1adbab9aca09386787878787878787878787878786f6b6054483b2f22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242d353d464e585f6a6f7c859298a3abb5c0c6bcb2a89e938b7f726a605554606a76828d88837e79746f6a65605d56524a40404a545f69707d88939fa5afb9c3c3bab2a8a09691847c716c635b524c443d342e271e150b00000000000004111e2b3744515e6a7784919daab6b6afa59e9b9b9b9b9ea2a9b3bebfb4aaa39f9b9b9b9b9ea5afb6b6ab9e918478676d79706b606c78828f97a1abb5b7b3b1b6b8bcb6ac9e938a7e71685d52463b342e29241e1b150f070000000000020e1a26313b4754606a76828f9ca7a9a199928b9298a3aebabeb4aa988c7f72656b7884919ea2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a7a9aeb6c0cbc8bdb4aba6a3a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b1a25313b46525e6874818e9aa4afbbc8d4cdc0b3a79a8d80747d8a97a4b0bdbebebebeb5a89b8f82756e7b8794a1aebabababababac0c3c4c8cdd4d0c8c3bfbec4c5c7c5c0c0c0c0c0c0c0c0baaea194877b6e6154483b2e211508000000000005121e2a36424d57616e7b86929faab4beb4ab9f93877c7e8b98abb5bfc5b8ac9f92869196a0acb9c1d0d9e3d5c8bbafa295887c6f6d6d6d6d6d6d707d8996a3b0bcb9ac9f9386796d6d6d6d6d6d6d6d6d6d675c5145382c1f1306000000000000000000000000000000000004101c2834404a546774808d9aa7b3c0d1c5b9ac9f92868f94958c7f72695e53484f5b6875828e9ba8b5c1bbaea194887b6e61554843505a626f7c87929f99928d847e766e69605b53493f33271b0f0300000000000a131c252d353e464e56626f7c8895a2afb8afafafafafafafafafafafada094877a6d6a7783909daab6c3b8ac9f92868585858585858585858585929eabb8c5baada1958a858585858585858585858585857d6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121b232b343c464e585f6a6f7d869299a4afbbc0c4baafa59f92867c6f675d5158636f7d807b76716d67625f5854524c43403844515c666e7b85929aa4afb8c1c3bab2a8a09691847b6f6a615a5146413a3228231d150c0300000000000004111e2b3744515e6a7784919daab7b6aa9e938e8e8e8e9297a2adb9baaea398928e8e8e8e939eaab6b7ab9e9184786d79837d706a727f8b949fa9b3b5aca7a5aaacb1b9afa59e92857a6d61574d42362a1e19130f0a0400000000000006121e2b37424d57626f7c88949fabb3aba39f989fa3aab4bfbaaea298897c6f626b7884919eabafafafafafafafafafafafafafafafb3b5b9c0c8d2cfc6bdb6b2b0afafafafafafafafafafafafafafa4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36414c56626e7b87939facb9c4cecdc0b3a79a8d80747d8a97a4b0b2b2b2b2b2b2a89b8f82756e7b8794a1aeaeaeaeaeaeaeb6b7bcc2cbd0c6beb7b2b1b7b8bdc3cccdcdc9c1bbb6b5aeaea194877b6e6154483b2e21150800000000000714212d3a46535f6974808d98a2aeb9baaea3998e81747c8899a3aebbc3b6a99c908284919ea6b0bdc7d2ddd5c8bbafa295887c6f626060606063707d8996a3b0bcb9ac9f9386796c6060606060606060605c554b4034281f14080000000000000000000000000000030606070c18232e3e4b5865717e8b98abb5c0cbbcb0a396897d828a9083786c60574d424f5b6875828e9ba8b5c1bbaea194887b6e6155483e47535f6a74818d9490878079716c625f57504941382d22170b000000000007121c252e373f474f585f686f7c8895a2adaba2a2a2a2a2a2a2a2a2a2a2a2a094877a6d6a7783909daab6c3baaea29892929292929292929292929297a2adb9c6c6b9ada197929292929292929292929292897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091119222b343c464e58606b707e87939fa4aeb8c2c1baaea3999184796d605854606b6f736e6964605d55534e4745413a38424e58606d78839098a2acb6c0c5bbb2a8a09691847b6e6960585048403530282018120b030000000000000004111e2b3744515e6a7784919daab7b5a89b8e8181818185929eabb8b9ac9f9286818181818e9ba8b5b7ab9e91847874818e867c6f7b86929fa6b0b6aca39b989da0a7b1b9ada2978d8073695e53463a3025190d0200000000000000000814212e3a47535f6975828e9ba6b0bdb4aeaca5acaeb4bcc5b8ab9f9285796d606b7884919eabb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8b9bec5cdd6d8cfcdc5beb9b8b7b7b7b7b7b7b7b7b7b7b7b7b1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1925303b47535f6a75828f9ca8b2bdc9cdc0b3a79a8d80747d8a97a4a5a5a5a5a5a5a5a59b8f82756e7b8794a1a1a1a1a1a1a1a1a9abb0b8c2c8beb4aca6a4aaacb2bac3cfccc1b7afaaa8a1a1a194877b6e6154483b2e21150800000000000815222e3b4855616e7b86929da0a7acb2aa9f92867b6e7986929facb9c5b8ab9e92857d8a949eabb5c0ccd7d5c8bbafa295887c6f625554545663707d8996a3b0bcb9ac9f9386796c60545454545454545454524d443b3025190e020000000000000000000000060b0f1213141416222f3c4955626f7c8899a3afbbc7bcb0a396897d767d847c6f665b5045424f5b6875828e9ba8b5c0bbaea194887b6e6155483b434e58616d7a858b827c736d67615a534d443f382f261b110600000000020d19232e3740495159616a6f7a83909da9a19e9595959595959595959595959594877a6d6a7783909daab6c3bfb4aaa29f9e9e9e9e9e9e9e9e9e9e9ea2a9b3becacabeb3a9a19e9e9e9e9e9e9e9e9e9e9e96897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222a343c464f59616c727f8b929da6b0bac4bfb4aba0968d80736a605459606367625f5753514b47433c3935343f4a54606a73808d95a0aab3bec7bdb3a9a09691847a6e695e574e463e3629251e160e0700000000000000000004111e2b3744515e6a7784919daab7ada094877a75757783909daab6b8ab9e9285787575798693a0adb7ab9e9184787e8a9392857b818e98a2aeb8aea49b918b9095a0aab4b3a99f92867b6e61564c41362a1c110b05000000000000000815222f3b4855626e7b87939facb9c1bfbab9b2b9babfc6c2b5a99c8f8276665c6b7884919eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabadb3bbc5cfdacfc5bbb3adabaaaaaaaaaaaaaaaaaaaaaaaaaaa4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2b37424e5763707d8996a0acb9c7d1c0b3a79a8d80747d8a97989898989898989898988f82756e7b879494949494949494949c9fa6b0bcc3b7aca29b979ea0a8b2bdc6c6bbafa59e9b94949494877b6e6154483b2e21150800000000000916222f3c4955626f7c838a90959ea0a8a2988d8074697783909daab7c3b9ada297877b828f99a4afbbc6d1dcc8bbafa295887c6f626161616163707d8996a3b0bcb9ac9f9386796c616161616161616161615e564d41362a1e1105000000000000000000020a11171c1f20202020202d3a4753606d7986929facb9c5beb1a5988b7e7270796f6a5f544a3f424f5b6875828e9ba8b4b4b4aea194887b6e6155483b3c46525e68717e7e766f6a605d555047423c332d261d140a000000000006121e2a354049515b626b707c8490959fa197928988888888888888888888888888877a6d6a7783909daab6c3c5bcb4aeacabababababababababababadb3bbc5cfcfc5bbb3adababababababababababa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222a343d47505a626d73808d949fa8b2bdc6bdb2a89f93877c6f665c5154565a55534d4745403937322c2c3844505c666f7c87939fa7b1bcc5c0b5aba29791847a6e685e564d453c342c2419130c040000000000000000000004111e2b3744515e6a7784919daab7ada094877a6d6d7783909daab6b8ab9e9285786d6d7a8693a0adb7ab9e91847b85929f97918588939faab4b0a69c928b7e839098a3aebaaea3988e8174685e5246382e231c160f080000000000000e1b2834414e5b6774818e98a0a8afbbc0c7c5bec5c7cbc8bcb1a7988c7f7265546b7884919d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9ea1a9b3bec9d5cabeb3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c4653606c7884919eabb5c0cbc0b3a79a8d80747d8a8b8b8b8b8b8b8b8b8b8b8b8b82756e7b8787878787878787878790949fabb7bfb2a69b908b9196a0abb4bfc3b6aa9e938f87878787877b6e6154483b2e21150800000000000815222e3b4754606a6f787d838a91969e9f92857a6d6874818e9ba7b4c1beb3a9968a7d7c87939fabb5bfcbd7c8bbafa295887c6f6e6e6e6e6e6e707d8996a3b0bcb9ac9f9386796e6e6e6e6e6e6e6e6e6e6e685e5246392d2014070000000000000000020b141c22282b2d2d2d2d2d2d3845515c677784919daab7c4c0b3a69a8d8073666c665f584e4238424f5b6875828e9ba7a7a7a7a7a194887b6e6155483b36414c56626c71716c625f58514b433e373128231c150c0300000000000a16232f3b46515b636d727d8691969fa79e92857c7c7c7c7c7c7c7c7c7c7c7c7c7c7c786d6a7783909daab6c3cec5bfbab8b8b8b8b8b8b8b8b8b8b8b8b9bec2c2c2c2c2c2beb9b8b8b8b8b8b8b8b8b8afa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071018222b343e48515b606d78828f96a1abb5bfc3bbafa4999083796d60574d494d4847423c38352f2b262a36414c56606d78839099a4afb9c3c3bbafa39992857b6e685e564d443b332b221a120802000000000000000000000004111e2b3744515e6a7784919daab7aea194887b7a7a7a83909daab6b8ab9e92857a7a7a7b8794a1adb8ab9e9184839098a2a19691939aa4afb3a99f948c80737c86929fa8b2b4aa9f92867a6d61544a3f342c272119110800000000000b1825313e4b5864717e8691959ea5afb6bec6ced2d3d1c5b8aca095887b6e615e6b78849191919191919191919191919191919191919297a1adb9c6d2c6b9ada197929191919191919191919191919191918b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009151f2b3744505b65727f8c99a3afbbc7c0b3a79a8d80747b7f7f7f7f7f7f7f7f7f7f7f7f7f7d706d787b7b7b7b7b7b7b7b7b7b82909ca9b6beb1a4978b7e849199a3aebac2b5a89b8f827b7b7b7b7b786d6053463a2d201307000000000006131f2b37434e5860656c71787e848b91968c7f736865727f8c98a5b2bfbfb2a6998c7f74818e99a3aebbc7d2c9bdb0a3968a7d7b7b7b7b7b7b7b7b7e8b97a4b1bebaaea194877b7b7b7b7b7b7b7b7b7b7b7b6e6154473b2e21140800000000000000000a141d262d3338393a3a3a3a3a3a404b556875828f9ba8b5c2c2b5a89b8f827568605b544e463c3a424f5b6875828e9a9a9a9a9a9a9a94887b6e6155483b3a3a44505a626564625a534e45413a3a3a38342e261e150a00000000000c1925323e4b57636d737f879298a1a8ada1978b7f726f6f6f6f6f6f6f6f6f6f6f6f6f6d666a7783909daab6c3cbc3bcb8b7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b9bbc0c5c5bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222c363f44505c666d7a849199a3aebbc2c0b5aba0958c8073695f5347403b3a37312c29241d222d3946525e68727f8c95a0abb5c0c3baafa59f92877d70695f564d443b3229211910080000000000000000000000000004111e2b3744515e6a7784919daab7b0a3988d888787879095a0acb8b9ada29792878787878d97a3afb9ada1969190959faaa9a19e9fa4acb6ada1978f82776c73808c96a1adb9aea3988c7f72665c50443c38332b23190f05000000000a1724303d4956626c717c838f939fa4acb4bcc6d0dbd0c3b7aa9d908477695f5c69768284848484848484848484848484848484848485929eabb8c1c8c5b8ab9e9285848484848484848484848484848484847e7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953616e7a86929facb9c5c0b3a79a8d80746e72727272727272727272727272706b666d6e6e6e6e6e6e6e6e6e76838f9ca9b6bcafa396897d7c86929fa6b0bcb9ac9f93877c6f6e6e6e6d665c5044382c1f12060000000000030f1b27323c464e535b60666c71787e848b85796d6063707d8a96aab4bfc1b4a89b8e81757b86929fabb5c0cccabeb1a59a8f8a87878787878787878b909ba6b2bfbcafa3978d878787878787878787878783766a5d5043372a1d100400000000000006111c262f383f4446474747474747474d5a6774808d9aa7b3c0c3b6a99d9083766a54504a47474747474f5b6875828d8d8d8d8d8d8d8d8d887b6e615548474747474750565858565047474747474746443f3830261c1106000000000d192633404c5966737f8c9399a2aab2b3a99f92857a6d64646464646464646464646464626a7783909daab6c3c3b9b1acaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8acafb5bdc7bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a2428343f4a545e686f7c87929fa6b0bcc5bdb1a79f92877b6e62594f42382e2b261f1d18202b37434e58616e7a85929fa7b1bdc7bdb1a89d938b7f726b60574d443b322920170f07000000000000000000000000000004111e2b3744515e6a7784919daab7b4a99f98949393939da0a7b1bcbeb3a9a29e93939394979fa9b4bdb2a8a19e9d9fa7b1b2adabacafb6b0a69e92857a6e656d7984919ea9b3b4aa9e9184796d60534a48443d352b21160b000000000815212d3945505a626a6e79818c939aa2aab4bfcad6ccc0b3a6998d8073695f576670767777777777777777777777777777777777777f8c98aaafb8bcc3b8ac9f92867f797777777777777777777777777777706c6155493c3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3846525e6875828f9baab4bfc0b3a79a8d8074676565656565656a6f7b756f6b6563615c6061616161616161616976838f9ca9b6bcafa396897c727f8c949faab4bbafa4999083786c6161605c544a3f34281c10030000000000000a15202b343c444d52545b60666d71797e7e71675d616e7b8798a2aebac3b7aa9d90847774818e99a4afbbc7d4c2b6aba19a969494949494949494979ba2acb7c3c0b4a99f97949494949494949494949083766a5d5043372a1d10040000000000000b17222d38424a505353535353535353535965727f8c98a5b2bfc4b8ab9e918578665c53535353535353535865717e818181818181818181807a6d615453535353535353535353535353535353535353504a42382e23170c000000000a1723303d4a5663707d89949eabb4bcbaada2978d8073717171717171717171717171716e6a7783909daab6c3bcb1a7a09d9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa3abb5c0bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081217232e38424c56606a727f8b949faab3bec3bbaea3998f82756b60544a3f34281e15101b27323a47535f6a74818e98a2aeb9c3c0b5aba0958e81746d62594f453c322920170e0500000000000000000000000000000004111e2b3744515e6a7784919daaaeaeaea9a3a1a0a0a0aaacb1b9c3c5bbb3adaba0a0a0a1a3a9aeaeaeaeb2adaba9abb1b9bdb9b8b9bbb7ab9f948b7e71685e67727f8b97a1adb9ada196897d70635456544f473d33271c100400000005111d29343e4850585f676d777f889298a2aebac6d3d1c4b8ab9e91857b6e695e5e66696a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a727f8c989ea5acb1babaaea298928c847d756e696a6a6a6a6a6a6a6a6a6a64615a5044392d20140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b2a36414c5664717e8a98a2aebac1b4a89b8e8175665c58585858626f7c86817c77716d66615e5654555f5f5f5f5f6976838f9ca9b6bcafa396897c7077828f98a2aebab5ab9f958b7e71675c53504a42382e23170c0000000000000005111e2a36414d565e6162626262666d72716c6262626c7985929facb8c5b9ac9f9286796e7b87939facb9c3cec8bdb3aba5a3a1a1a1a1a1a1a1a1a4a6acb4bec8c5bbb1a9a3a1a1a1a1a1a1a1a1a19d9083766a5d5043372a1d10040000000000030f1c28333f4a545b6060606060606060606064717d8a97a4b0bdc6b9ac9f9386796d60606060606060606060606c71747474747474747474746d686060606060606060606060606060606060606060605c544a3f34281c10030000000916222f3c4854606b75828f99a3aebbbeb3a99f92867e7e7e7e7e7e7e7e7e7e7e7e7e7e7c6e7783909daab6c3b8aca095908f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9299a3afbbbcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444e58626d76828f98a2aebac2bfb5ab9e94897d70665c50443a2f2419131f2b37434e58626f7c87939faab4bec7bbafa3999183796d605b51473d332a20170e050000000000000000000000000000000004111e2b3744515e6a7784919da2a2a2a2a2a2a2a2a2a2aaacb1b9c3c5bbb3adaba2a2a2a2a2a2a2a2a2a2a9a19e9ea1a9b2bec7c4c6bdb2a89c9082766c6464646d7985919eabb8b2a89a8d817466646360594f44382c201307000000000c17222d363e464e555d656c737e86929facb8c5d2d2c6b9ada19791847b6e685d545c5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e63707d868f939da0a7adb3b4aaa29f96918a827b736d6761595e5e5e5e5e5e575550483e33281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1925303b4753606d7985929facb8c5b8ab9f9285796d60534c4e586673808c8e89837e79736e68615f626c6c6c6c6c6c76838f9ca9b6bcafa396897c706e7b86929fabb8bdb1a79e9184796d60554c413830261c1106000000000000000714202d3946525e686e6e6e6e6e6e6e6e6e6e6e6e6e6e7783909daab6c3baaea399887b6e75828e9ba7b1bcc8d4c5bdb6b1b0aeaeaeaeaeaeaeaeb1b2b7bec6d0cdc3bbb4afaeaeaeaeaeaeaeaea99d9083766a5d5043372a1d1004000000000006121f2b3844505b666c6d6d6d6d6d6d6d6d6d6d6f7c8996a2afbcc7bbafa499877b6e6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d665c5044382c1f12060000000713202c38444f59626e7b86929fa9b3bebaaea298928b8a8a8a8a8a8a8a8a8a8a8a8a8a7f727783909daab6c3b7aa9d908382828282828282828282828282828282828282828282828287929facb9bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e29323d46515b616e7b85929fa6b0bcc6bdb0a69d9183786d60554c4135291d15222e3b4754606a75828f99a4afbcc5bdb2a89f92877c6f675d51493f352b21180e05000000000000000000000000000000000009141f293344515e6a77849195959595959595959595959da0a7b1bcbeb3a9a29f959595959595959595959597929197a1acb6c0ccc5b9aca096897c70707070707073808d99a6b3b8ab9e9185787070706b6054483c2f2216090000000006101b242d333c434b535b606c727f8b98a5b2becbd5c9beb3a9a19691837a6d665c5349515151515151515151515151515155616b707b828991959fa2a9afb4aea8a09e938f867f79706b615f57514b51514a49443e362c22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2c3945515d6775818e9baab3bebaada2978a7d7063544a535f6a7784919b95908a857f7a746e696e79797979797979828f9ca9b6bcafa396897d7979797e8b98a5b2bbb9aca1968c7f72675d51453a2f24180d01000000000000000814212e3b4754616e7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b828f9ca8b5c2bfb4ab978a7d706f7c8995a0acb8c6d0cfc8c2bebdbababababababababcc1c2c6cbd2d5cdc5c0bcbababababababab6a99d9083766a5d5043372a1d100400000000000613202d394653606c787a7a7a7a7a7a7a7a7a7a7a7c8895a1aebbccc0b5ab96897d7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786d6053463a2d20130700000004101c27333d47535f6974808d97a2adb9bfb4aaa29f979797979797979797979797978b7f727783909daab6beb1a4988b7e75757575757575757575757575757575757575757575757985929facb8bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17202b343f46525e69717e8b949eaab4bfc1b8aca0958b7f72675d51453a2f241f2b37434e58626f7c89939eabb5c0c7b9aca0968d80736a60554b40372d23190f060000000000000000000000000000000000020e1a25313b454d5e6a77848888888888888888888888889095a0acb8baada297928888888888888888888888888584919aa4afbbc3c4b7aa9e91847e7d7d7d7d7d7d7d7f8c98a5b2b9ada1978b7f7d7d7d7063564a3d3023170a000000000009121b212a313a414b55606d7884919daab7c4d0d4cfc4bbb2a8a0959082786d655b50444b515354545454545454545454545961696e757d838b92979fa4abb2b2aca69e98928c847d756e69605d555048413c39332c241a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b5563707d8a98a2aebabeb3a99b8e8174665c5054626f7c8895a09f9d97918c86817b6e7b8786868686868688939facb9c6b9ac9f938786868687929ea1a9b2bdb2a89e92857a6d60554b4135291d1207000000000000020f1b2835424e5b68758188888888888888888888888888888f949eaab7c3beb1a4978b7e716b7783909daab4bfcad6cfc7c0bbb9b0b0b0b0b0b0b0b0b4b6bac1c9d2d7d3c9c1bbb6b5b0b0b0b0b0a99d9083766a5d5043372a1d10040000000000091623303c4956636f7c8686868686868686868686888e98a4b0bcd2c7b1a5998f89868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164584b3e3125180b000000000b16212b37424d57606d7a85929ea9b3bebcb4aeaca4a4a4a4a4a4a4a4a4a4a4a4988b7f727783909daab6beb1a4988b7e716969696969696969696969696969696969696969696c7985929facb8bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e19222a36424d57626c76828f98a2aebac4bcb1a79e92857a6d60554b413529212e3a47535f6a75828f9ca5afbdc7bdb0a69e9184796d60584e43392f241b110700000000000000000000000000000000000005121e2a36424d575e616e7b7b7b7b7b7b7b7b7b7b7b7b7c83909daab7b8ab9f92857c7b7b7b7b7b7b7b7b7b7b7b7b7d88939fa7b1bcc5b9aca096918a8a8a8a8a8a8a8a8c919ba7b3beb3a99b918b8a8a84776b5e5144382b1e11050000000000090f1a232c3945515d67717e8b95a0acb8c5cbc7c5c7c4bab1a79f948e81776c605a50555c606161616161616161616161616161616b70787f858e9399a0a8b2b9b0aaa39f96918a827b736d67615a534a41362b221a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3a4653606d7985929fabb8c5b8ab9f9285796d60535b6673808d9aa8aba9a19e9892867a6e7b88929292929292939aa4afbbc7bbafa4999392929292979197a1abb5b9ada2978c7f73675d5145392f24180c000000000000020f1b2835424e5b6875818e959595959595959595959595959c9ea6b0bbc7beb1a4978b7e7165717e8b98a2aebac6d1c7bdb5afaca3a3a3a3a3a3a3a3a7a9afb7c1cbd7ccc1b7afaaa8a3a3a3a3a3a39d9083766a5d5043372a1d10040000000000091623303c4956636f7c89939393939393939393939598a0a9b4c0ccc1b6aba199969393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938b7e7164584b3e3125180b00000000050e1a26313c45525d68737f8c97a2adbac5bfbab8b1b1b1b1b1b1b1b1b1b1b1a5988b7f727783909daab6beb1a4988b7e716563636363636363636363636363636363636363636c7985929facb8bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a25303b45505a616e7b86929fa8b2bdc3b9ada2978c7f73675d51453a2f2a36424d57626f7c87939facb9c1c0b5ab9f948a7d70675d51463c31271d1209000000000000000000000000000000000000000714212d3a46535e696e6e6e6f6f6f6f6f6f6f6f6f6f6f7783909daab6b8ab9e9285786f6f6f6f6f6f6f6f6f6f6f6e74808d95a0acb8c1bdb2a8a09e9797979797979797989ba3adb8c4bbada39b98979184776b5e5144382b1e110500000000010b151f2a36424d57606d7984919ea8b1bdc7c0bbb9bbc0c3b9b0a69e938c80736c61585c676d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e727a81879196a0acb9bcb4aea8a09e948f868079706c645c53483c3024180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c3845515c6675818e9babb4bfbaada297897c706356606c7884919eabb8b3ada99c8f82766e7b88959f9f9f9f9f9fa4acb6c0ccc0b5aba49f9f9f9f9e91859199a3aebbb3a99e92857a6d60554b4035291c11060000000000020f1b2835424e5b6875818e9ba1a1a1a1a1a1a1a1a1a1a1a1a8aab0b8c1ccbeb1a4978b7e71646d7a85929facb8c4cbc0b5aba39f97969696969696969b9ea5afbac6d2c6bbafa59e9b969696969696969083766a5d5043372a1d10040000000000091623303c4956636f7c8996a0a0a0a0a0a0a0a0a0a1a4a9b2bbc6d1c7bdb3aba5a3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0978b7e7164584b3e3125180b000000000009151f2935414c56606d7a85929fa9b3becac6c5bebdbdbdbdbdbdbdbdbdb2a5988b7f727783909daab6beb1a4988b7e71707070707070707070707070707070707070707070707985929facb8bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333f46535e6973808c96a1adb9c3beb3a99e92857a6d60554b40352d3a46525e6975818e9aa4afbbc7bbafa4998f82766c61554b40342b1f150b00000000000000000000000000000000000000000815212e3b4854616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b83909daab7b8ab9f92857b7b7b7b7b7b7b7b7b7b7b7b7b7b7983909da5afbcc4bab2acaaa3a3a3a3a3a3a3a3a5a7adb5bfcdbfb5ada7a59e9184776b5e5144382b1e11050000000007121d27313946535e6973808c97a1adbac3bdb5afacafb5bdc2b8afa59f93887e706a5f606d797b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7d84919eaab7c4bfbab2aca69e98928c847d746f64584c4033271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b5464717e8a99a3aebabeb3a99a8d8073675763707d8996a1adb9b9ada1978a7d716e7b8895a1acacacacacafb6bec7d2c7bdb5afacacaca5988c7f87929faab4b9ada2978c7f72675d5145382d22170b0000000000020f1b2835424e5b6875818e9ba8aeaeaeaeaeaeaeaeaeaeaeb5b7bbc1cacabeb1a4978b7e71646774818e9ba8b2bdc7bbafa399928a898989898989898e939ea9b6c2cfc3b6aa9e938f898989898989898983766a5d5043372a1d10040000000000091623303c4956636f7c8996a2adadadadadadadadaeb0b4bbc4cdd7cec5bdb6b1afadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadada4978b7e7164584b3e3125180b0000000000030d1924303a45515d67737f8c97a2adbac6d0d2cfc7c0bbb9b7b7b7b7b7b2a5988b7f727783909daab6c0b3a79a8d807d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d86929facb8bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17212a36424d57606d7984919ea7b1bcc5b9ada2978c7f72675d51453934404b55616e7b86929facb6c0c0b5ab9f93877c6f625a5043392f22190d030000000000000000000000000000000000000005121e2b3845515e6b788488888888888888888888888888889095a0acb8baada2979288888888888888888888888888877b7c89939eaab4bfc4bdb9b7b0b0b0b0b0b0b0b0b2b3b8bdbdbdbdbdb8b7aa9e9184776b5e5144382b1e1105000000000c18232f39434f59616e7b86929fa9b2bec0b5aba39fa3abb1b9c1bbafa49a92867c6f6763707d8787878787878787878787878787878787878787878a9196a0acb9c5cbc4bdb9b0aaa39f96918a8174675b4e4134281b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3a4754606d7a86929facb9c4b7aa9e9184776a5f6775818e9ba8b2bdb5ab9e9185796d6e7b8895a1aeb9b9b9b9bbc0c7d0d9d0c7c0bbb9b9b0a3978a7e808d98a3aebab3a99e9285796d60544a3f33281c0f0300000000020f1b2835424e5b6875818e9ba8b4bbbbbbbbbbbbbbbbbbbbc2c3c7cccfcabeb1a4978b7e716463707d8996a1adb9c5b9ac9f92867e7d7d7d7d7d7d7d818e9ba7b4c1c8bdb2a89b8f817d7d7d7d7d7d7d7d7c6f6256493c2f231609000000000000091623303c4956636f7c8996a2afb9b9b9b9b9b9b9bbbcc0c6cdd6dfd7cec7c1bdbcb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b1a4978b7e7164584b3e3125180b00000000000008131e2935414b55606d7a85929faab4bfcad1c7bdb5afacaaaaaaaaaaaaa5988b7f727783909daab6c3b5a99d928d8989898989898989898989898989898989898989898989899298a3aebabcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a25313b45515d67717e8b959fabb8c3beb3a99e9285796d60544a403845515c6773808d99a3afbec7bbafa3998e81746a5f53473e31271d1007000000000000000000000000000000000000000005121e2b3845515e6b788491949494949494949494949494949da0a7b1bcbeb3a9a29f94949494949494949494949494877b75818e98a3aebac5c9c5c4bdbbb7b5b1b1b1b1b1b1b1b1b1b1b1b1b1b1aa9e9184776b5e5144382b1e110500000004101c2934404b55606b75828f98a2aebbc4bbafa39992999fa7b1b9c0b6aca29891847a6d63707d8a9494949494949494949494949494949494949494979ea0a8b2bdc9d5cec9c1bcb4aea8a19d9083766a5d5043372a1d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945515d6776828f9ca9b5c2b9aca096887b6e626d7a86929facb8bbafa4998d8073666e7b8895a1aeb1b1b1b7b8bdc3ccd2c8c0b9b5b3b1b0a3978a7d7b86929faab4b9ada1978b7e72665b5044382b1f120600000000020f1b2835424e5b6875818e9ba8b4c1c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2beb1a4978b7e7164606c7884919eabb7c4bbafa3998a7e7170707070707783909daab6c3c5b9aca096897c70707070707070706f6a6054473b2e221508000000000000091623303c4956636f7c8996a2afbcc6c6c6c6c6c6c8cdced1d6dce4e0d9d2cdcac9c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6beb1a4978b7e7164584b3e3125180b000000000000020d18242f3a45515d67737f8c98a2aebac7cbc0b5aba39f9d9d9d9d9d9d9d988b7f727783909daab6c3b9aea49d9a9696969696969696969696969696969696969696969696969fa3aab4bfbcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2935404b55606c7883909da7b1bcc5b9ada1978c7f72665c51443a4753606d7985929eabb5c0c0b5ab9f92877b6e61584e43352c1f150b00000000000000000000000000000000000000000005121e2b3845515e6b7884919ea1a1a1a1a1a1a1a1a1a1a1a1aaacb1b9c3c5bbb3adaba1a1a1a1a1a1a1a1a1a1a1a194877b6e7b86929faab4bfcaccc1b8b0aaa8a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49e9184776b5e5144382b1e110500000006131f2c3845515c67707d89939eaab4bfbbafa59f928690959fa7b1bbbeb4aaa0968e81756d707d8a96a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a3aaacb2bac4ced9d9d5cfc6bfbab2a99d9083766a5d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5565727f8b98a8b2bdbdb2a8988b7f7265717e8b98a2aebab9ac9f93877b6e626e7b8895a1a5a5a5a5aaacb1bac3cac0b6aea9a6a5a5a3978a7d73808d98a2aeb5afa99e9184786c605346392d20130600000000020f1b2835424e5b6875818e9ba8b4b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b1a4978b7e71645b6573808d9aa8b2bdc0b5ab9c8f8276686363636e7b8895a0acb8c4c0b5ab9e9184776b636363636363636260584e43382b1f1306000000000000091623303c4956636f7c8996a2afbbbbbbbbbbbbbbbbc0c2c5cbd2dae2d9d2ccc7c6bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb1a4978b7e7164584b3e3125180b0000000000000007131d2935414c55616d7a86929facb6c0c7bbafa3999291919191919191918b7f727783909daab6c3c0b6aea9a7a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3acaeb4bcc6bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18242f3944505b65707d8a95a0acb8c3beb3a99e9184796d605346424d5764717e8a97a1adbdc7bbafa3998e8174695f53463c31231a0d0300000000000000000000000000000000000000000005121e2b3845515e6b7884919eabaeaeaeaeaeaeaeaeaeaeaeb7b8bcc3cbcdc5bebab8aeaeaeaeaeaeaeaeaeaeaea194877b6e73808d98a2aebac6c7bbb0a69e9c979797979797979797979797979797979184776b5e5144382b1e1105000006121e2b37424d57606d7984919ea5afbcbeb3a99e93897d839095a0a9b3bcbcb2a89e938b7f72707d8a96a3aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb0b7b9bdc4ccd0d0d0d0d0d1cbc3b6a99d9083766a5d5043372a1d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3b4855626e7b8896a1acb9c2b5a99c8f82766a7683909daab4bdb1a89c8f827569626e7b889598989898989da0a8b1bdc5b9aea49d9a989898978a7d707a86929facaba39f9b958a7d7064574a3d3124170a00000000020f1b2835424e5b6875818e9ba8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a4978b7e716453626f7c8996a1adb9c6b9ac9f93877b6e615c6673808d9aa7b1bcc7bbafa4998c7f73665956565656565656544e463d32271b0f03000000000000091623303c4956636f7c8996a2afafafafafafafafafb4b5b9c0c8d2d9d0c7c0bbb9afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa4978b7e7164584b3e3125180b00000000000000010d19242f3a46525e6874818d9aa4afbbc5b9ac9f92878484848484848484847e717783909daab6c3c8c0b9b5b3b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b8babfc6cebcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27333f4953616b7783909da7b1bcc5b9ada1968a7e7164584e47535f697683909ca9b3bec5b9ac9f92877b6e61574d42342a2011080000000000000000000000000000000000000000000005121e2b3845515e6b7884919ea5a5a5a5a5a5a5a5a5a5a5a5abadb2bac4c6bcb4aeaca5a5a5a5a5a5a5a5a5a5a5a194877b6e6d7a85929fabb5bfc3b7aa9e948f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a84776b5e5144382b1e110500000814212e3a47535f6973808c96a0acb8bdbaada2978e81747a839197a1aab4b6afa69f9691857a707d8a96a3b0babababababababababababababababababdc3c3c3c3c3c3c3c3c3c3c3c3c3b6a99d9083766a5d5043372a1d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f697884919eabb7c4b8ac9f9286796f7c88959fabbcb8aca095897d7063626e7b888b8b8b8b8b8b9195a0acb8c1b5a99d928d8b8b8b8b8a7d7074818e9aa29f99928e89837d706356493d3023160a00000000020f1b2835424e5b6875818e9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c978b7e716458606c7884919eabb7c4bbafa4998b7f7265606d7985919eabb8c3c6b9ac9f93877b6e61544a4a4a4a4a4a4947433d342b20160a00000000000000091623303c4956636f7c8996a2a2a2a2a2a2a2a2a2a2a7a9aeb6c0cbd2c7bdb5afaca2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978b7e7164584b3e3125180b000000000000000008131e2935414c56626e7b87939facb9c4bbafa399887c7777777777777777716c7783909daab6bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222d38414f5964717e8a95a0acb8c5bdb2a99c9083766a5f544953626e7b88949fabbbc5bbb0a69b8e8175695f53453b3122180e000000000000000000000000000000000000000000000005121e2b3845515e6b788491989898989898989898989898989ea1a8b2bdbfb4aaa29f98989898989898989898989894877b6e6874808d99a3aebbc2b5a89c8f827e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7063574a3d3024170a0000000815222f3b4855626e7b8692989ea5acb1b0a69f92857a6e6e7b859198a2aeaca49f948f847c6f707d8a96a3b0b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a99d9083766a5d5043372a1d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d576774818e9aabb5c0baaea398897d74818d9aa7b1bbb3a99d9184786c60606d7a7e7e7e7e7e7e7e83919daab7c0b3a69a8d807e7e7e7e7e7b6e6e7b879398928d87817c76706b6054483c2f22160900000000020f1b2835424e5b6875818e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8b7e7164585b6574808d9aaab4bfc0b5ab9d9083766963707d8a97a1adb9c4beb3a99c8f8276695e53463d3d3d3d3d3c3b38322b22190f0400000000000000091623303c4956636f7c8995959595959595959595959a9da4aeb9c5ccc0b5aba49f9595959595959595959595959595959595959595959595959595959595959595959595959595959595959595958b7e7164584b3e3125180b0000000000000000010d1925303a47535f6976828f9ca8b2bdc0b5ab9a8e8174676a6a6a6a6a6a646a7783909daaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3e4653606c7884919daab3b8b3aeab9f94887c6f6255505b6573808d99a6b0bbbfb7ab9f94887c6f62574d4233291f1006000000000000000000000000000000000000000000000005121e2b3845515e6b78848c8c8c8c8c8c8c8c8c8c8c8c8c8c9196a1adb9baaea298928c8c8c8c8c8c8c8c8c8c8c8c8c877b6e616e7b86929facb9bfb7aa9e91847971717171717171717171717171717171706b6155483c2f2316090000000714202d3a4753606d797f868e939da0a8aa9f948b7e7168696f7c86929fa4a29a938c827a6f6a707d8a96a3a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99d9083766a5d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313d4a5764707d8a99a3afbbbfb4aa9a8d807985929fa9acafada2978b7e72655b5d686d72727272727276828f9ca9b6bcafa396897c72727272726e696975828f8b85807b756f6a6360594f44382c20130700000000000d192633404c5966737f838383838383838383838383838383838383838383838383827d7063565363707d8a98a2aebac6b9ac9f93877b6e6975828f9ca9b3b5b8b9ada2978a7e7164574d4236303030302f2e2b27201910070000000000000000091623303c4956636f7c8888888888888888888888888d929da9b5c2c7bbafa49993888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888887e7164584b3e3125180b00000000000000000008131e2b37424d5763707d8a96a1adb9c5b8ac9f92867a6d605e5e5e5e5e5d6a7783909da2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a296897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141f2b3844505b66717e8b98a2adabaaa29f9b988e8174685b53606c7884919eaaacaeb5b2a89c8f82766a5f53453b3121170d000000000000000000000000000000000000000000000000000b1825323e4b5865717e7f7f7f7f7f7f7f7f7f7f7f7f7f7f84919eabaeaeac9f92867f7f7f7f7f7f7f7f7f7f7f7f7f7f796d606975818e9ba8b2b4aeaca096897d706464646464646464646464646464646361594f44382c20140700000006131f2c3845515c676d737b818991959fa2989083776c60606a717e8a929c97928880786d6863707d8a969d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9083766a5d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914212d3a4754606d7a86929facb9bab7aa9d90837f8b92979c9fa4ab9f9285796d6053565d6065656565656976838f9ca9b6bcafa396897c7065656565615e63707d847f7a736e69626058544f473d33271c100400000000000c1825323e4b57636d7376767676767676767676767676767676767676767676767676706b615553606d7985929facb8bebaafa49a8b7e726e7b87939faaa6a9abadab9f9285796d6053473b312523232323221f1b160f070000000000000000000714202d3a4753606d797c7c7c7c7c7c7c7c7c7c7c7c808d9aa7b4c0c6b9ac9f93877c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6d6154473a2e211407000000000000000000020e1a26313c4653606c7884919eabb5b8b6aea2988b7e7265584e5151515d6a778390959595959595959595959595959595959595959595959595959595959595959595959595959595959595897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54606d7985929fa29f9b98928e8a868174685b56636f7c8992989c9fa3abaca1968a7d7064584e4333291f0f06000000000000000000000000000000000000000000000000000b1724313d4a56626c71727272727272727272727272727783909da1a1a1a19e928578727272727272727272727272726d675d626f7c8996a0a7aba39f9d9a8e8275685e5757575757575757575757575757554f473e33281c100400000004101c2934404b555c60696e757d848c929892867b6e655b58616c73808d9490857d736c665e63707d8a909090909090909090909090909090909090909090909090909090909090909090909090909083766a5d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d687783909daab3adaba89f93867d80858a8f93999e998d8073675d514c5254585858585c6976838f9ca9b6b6afa396897c70635858585454606b7079726d67615e57544e48443d352b21160b0000000000000a16222f3b46515b6366696969696969696969696969696969696969696969696969696361594f515c6775828f9ca8b3b3aeabac9c8f827573808d929897999c9ea1a79a8d8074675d514538291f1717171615130f0a04000000000000000000000613202c3945515d676d6f6f6f6f6f6f6f6f6f6f6f727f8b98a5b2bec7bbafa499867a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d685e5246392d2013070000000000000000000009151f2b3844505b66737f8c99a3adaba9a7aa9d9083776a5f534744505d6a778388888888888888888888888888888888888888888888888888888888888888888888888888888888888888887d706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3845515d6774818d9a97928e8a85817d79746f645955626f7c81868b8f92999c9f9e9184786d6053463c3220170d00000000000000000000000000000000000000000000000000000915212e3a45505a62656565656565656565656565656a7783909494949494949285786b656565656565656565656565605d55606a7784919d9a989992908e8b877a6e61544b4b4b4b4b4b4b4b4b4b4b4b4a48443e352c21160b00000000000c18232f39434b51575e616b70787f868e8c7f72695f53505a606c78828d837b706b605b54636f7d8383838383838383838383838383838383838383838383838383838383838383838383838383838174675b4e4134281b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566773808d9aaba9a29f9c98988a7d73797d82878c9193877b6e61554b4145474b4b4b505c6976838f9ca9aaaaaaa396897c7063564b4b484f5960666c66605d55534d48433d38332b23190f0500000000000006121e2a3540495157595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c56554f474b5565727f8b98a9a6aaa29f9c9a92857973808385888a8d8f91979695887c6f62554b403529170d0a0a0908060300000000000000000000000004111d2935404b555d606262626262626262626264717e8b97a4b1bebec0b5a194877a6e6262626262626262626262626262626262626262626262626262626262626262626262626262626262626262615e564c4135291d110500000000000000000000030f1c28333f4a54616e7b86929fa19e9c9a999795887c6f6255483c4855626e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2935404b55626f7c888e8985817d7975706d67645d5354606a6f757a7e82868b8f93998c7f73665c5044382b1f1206000000000000000000000000000000000000000000000000000005111d29343f4850565859595959595959595959595d6a7783878787878787878785786b5f595959595959595959595953514e586673808c908d8b888683817e7c786d6053463e3e3e3e3e3e3e3e3e3e3e3d3c38332c231a1005000000000007121d27313940454d535960666d727b8183786c60574d44505b666e7a80796e6961595054606b6f767676767676767676767676767676767676767676767676767676767676767676767676767676746f64594c4033271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3d4a5763707d8a999b9897928f8c89867f726d71767b7f84898275695f534339393a3f3f43505c6976838f9c9d9d9d9d9d96897c706356493f3d474f545b605b54514b46423b38322c272119110700000000000000020d19232e3740464b4c505050505050505050505050505050505050505050505050504a48443d4855626f7b88979c9a9798928f8d8a887c6f7376797b7e80828587898c83766a5f5343392f241805000000000000000000000000000000000000010d18242f3a434b51535555555555555555555764707d8a97a3b0b1b1b1aea194887b6e615555555555555555555555555555555555555555555555555555555555555555555555555555555555555554524c443a3025190d0100000000000000000000000b17222d3846525e6975828f969792908e8c8a88877f7266594c3f47535f6a6e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3947535f6a7582817d7974706d6764605d55534b4e586062676d71757a7e82878b877b6e61544a3f34281c10030000000000000000000000000000000000000000000000000000010c18222d363f454a4b4c4c4c4c4c4c4c4c4c4c4c54616d7a7b7b7b7b7b7b7b7b7b6e61544c4c4c4c4c4c4c4c4c4c4c47454855626e7c8683817e7c797774716f6d665c51443831313131313131313131302f2c28211a1108000000000000010b151f272f343b42464f545c60686e75796d665b50453f4a545e686e746d675f574f444f5960636a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a67645d53483c3024180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3a4754606d7a86918e8b8885827f7c79726d6064696e73787d7c6f62574d42312c2d323643505c6976828f90909090909090897c706356493d353d424a5053504a45413a36312c27211c160f0700000000000000000007121c252e353b3e40434343434343434343434343434343434343434343434343433d3c383a47535f6a788591908d8a888583807e7b776c66666d6e717376787a7d7f7d7063584e4331271d12070000000000000000000000000000000000000007131d28313a4045474949494949494949495663707c8996a3a5a5a5a5a4a295887b6f62554949494949494949494949494949494949494949494949494949494949494949494949494949494949494746413a32281e130800000000000000000000000006111c2a36424d5764717e8a89878583817f7d7b79726d63574a3e434e585f626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262605d554b4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e5865707574706d6663605c5553514b4341464e54555d6064686d71767a7f8073695e5242382e23170b0000000000000000000000000000000000000000000000000000000006111b242d343a3d3e3f3f3f3f3f3f3f3f3f3f46525e686d6e6e6e6e6e6e6e6e6e685e52463f3f3f3f3f3f3f3f3f3f3a3a47535f6a6e797674716f6d66676562605c544a4034282424242424242424242423201c1610080000000000000000030d151d232931363d424a51565e61666d665c544a3f38424c565e6167605d554d453e474f54565d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b59534a41362b2014080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d68778385827f7c7975726f6d66625b575e61666c706f6a5f53453b3120212734414e5a6774808383838383838383837c6f6255493c2f2f383f4446443f38352f2a251f1b16100b0500000000000000000000000a131c232a2f323336363636363636363636363636363636363636363636363636302f2c37434e586875818583807e7b797673716e6c655b5c6062646669686e7072706b6054463c321f150b0100000000000000000000000000000000000000010c161f282f35393a3c3c3c3c3c3c3c3c4955626f7c88959898989898989895887c6f6255493c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a3935302820160c02000000000000000000000000000e1a25303b4653606d787e7c7a78767472706e6d66635b51463a3c464e5355555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554514b433a2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b26323c46545e65696763605c5453514b47454039343c43474c5154565d6165686e72736e63564d4230261c1106000000000000000000000000000000000000000000000000000000000009121b22292e313232323232323232323236414c565e616161616161616161615e564d41363232323232323232322d37424e575f666d66676562605c54585553514a42392e23181818181818181818171614100b0500000000000000000000030b12181f252a303940444d52545c605c544a42382f3b444c52545a53514b433b343d4348495050505050505050505050505050505050505050505050505050505050505050505050505050504e4c4841382f251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56616d7a7875726f6c666562605c54514d53545b6063625f584e4333291f142633404c58646e747777777777777777776f6a6054473b2e262d33383938332d29241d1a140f0a0400000000000000000000000000010a12191e22252629292929292929292929292929292929292929292929292929232326313c4754606d7a797673716e6c65676461605b53505355575a565e6163666360594f44342a200d03000000000000000000000000000000000000000000040d161d24292c2d2f2f2f2f2f2f2f3b4855626e7b888c8b8b8b8b8b8b8b8b887c6f6255493c2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2d29251e160e04000000000000000000000000000009141f2c3845515c666d716f6d686967666462605c5451493f35333c43474849494949494949494949494949494949494949494949494949494949494949494949494949494949494949494745413a31281d1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a34424c545a5c5b5653514a4645403a38352f2b32373a4145474c5254565e616566635c52443b301e140a000000000000000000000000000000000000000000000000000000000000000911181d212425262626262626262625303a444c5254545454545454545454524d443b3025262626262626262626313c454e545c605c54585553514a4b494644403930271c12070b0b0b0b0b0b0b0a0907040000000000000000000000000001070c141a1e272e343b41464a5153514a42392f29323b4146474d47454039312b32383b3c43434343434343434343434343434343434343434343434343434343434343434343434343434341403c362f261d130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a46525d686d68686562605b545653504a4242464a50535655534e463c3221181724303c47525c64676a6a6a6a6a6a6a6a6a6260584e43372b1c22282b2d2b28221c18130e09030000000000000000000000000000000000070d121618191d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1716202c3945515d676d6c66676462605b5357555350494446484b4d4c5254565956544f473d3322180e0000000000000000000000000000000000000000000000040c13181d20202222222222222d3a4753606d797f7f7f7f7e7e7e7e7e7e7e7a6d6054473a2d22222222222222222222222222222222222222222222222222222222222222222222222222222221201d19130c0400000000000000000000000000000004101c2834404b545c606463615e565b59575553514a423f372d2a31373a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a39352f281f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1822303942494d4f4e4a4644403a38342e2c292420272b2f35393a4146474c5254585a58524a4032291f0c020000000000000000000000000000000000000000000000000000000000000000060c1115171819191919191919191e29323a41464748484848484848484746413b32291f1919191919191919202a333c424a5053504a4b494644403e3c3a38342e271e150b00000000000000000000000000000000000000000000000000000003090c151c2328303639404446444039302720293036393b413a38352f271f272c2f303737373737373737373737373737373737373737373737373737373737373737373737373737373433302b251d140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935414c565d615d56585553504a4946443f3836383f44464a4947433c342a200f141f2b36414a52585a5d5d5d5d5d5d5d5d5d55544e463c32271b171c1f201f1c17110d0701000000000000000000000000000000000000000002060a0c0d101010101010101010101010101010101010101010101010100a111d2935414b555d60605b5457555350494a4846443f383a3b3e404146474a4c4a48443d352b21100600000000000000000000000000000000000000000000000001070d1113141616161616202c3945515d676d72727272727272717171716d685d5245392c2016161616161616161616161616161616161616161616161616161616161616161616161616161413110d080200000000000000000000000000000000000c18232e39424b5153585654524c4e4c4a4846444039302d2520262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2c29241d160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101e2730373d4142413d3a38342e2c28231f1d18151b1e24292c3035393b4146474c4d4b4740382e20170d000000000000000000000000000000000000000000000000000000000000000000000105090b0b0c0c0c0c0c0c0c0d1720293036393a3b3b3b3b3b3b3b3b3b3936302920170d0c0c0c0c0c0c0e18212a30383f4446443f3e3c3a38342e2f2d2c28231c150c030000000000000000000000000000000000000000000000000000000000030b12181f252a2e34383a38342e271e171e252a2d2e342d2c29241d151b1f22232a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a282724201a130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c5254524c4c4846443f3c3a38342e2a2d3338393d3c3b37322a22180e0e1a242f3841474c4e5050505050505050504947433c342b20150b0f1213120f0b060000000000000000000000000000000000000000000000000000000003030303030303030303030303030303030303030303030303010d18242f3a434b515453504a4b4846443f3e3b3937332d2d2f313036393b3d3f3d3c38332b231a0f0000000000000000000000000000000000000000000000000000000104060709090909111d2935404b555d606565656565656565656564605d564c4135291d1109090909090909090909090909090909090909090909090909090909090909090909090909070705010000000000000000000000000000000000000007121d2730394045464b49474641413f3d3b3a38342e271e1c151a1f2122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222221201d18130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c151e262c31353634302d2c28231f1c1813100c0a0f13191d2024292d3036393b3f403f3b352e261c0e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e2e2e2e2e2e2e2e2e2e2d2a251f170e05000000000000060f181e262e34383a38342e2f2d2c282322201f1c18120b030000000000000000000000000000000000000000000000000000000000000000070c14191c23282c2d2c28231c150c14191e202127201f1d18120b0f1315161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1a18140f0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a41464746413f3c3938332d2d2c28231c22282b2d302f2e2b262018100708131d262f363c40414444444444444444443c3b37322b22190e040306060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a41454746443f3e3b3937332d2e2d2b2722202224252a2d2e3033302f2c27211a110800000000000000000000000000000000000000000000000000000000000000000000010d18242f3a434b5153595958585858585858585854524c443a2f24190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3e3c3a39353033312f2d2c28231c150c090f12141516161616161616161616161616161616161616161616161616161616161616161616161616161616161616161413110d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b212528292823201f1c1813100c0704000001080d1113191d20252a2d2e3233322f2a241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d13191e2021212121212121212121201e19140d050000000000000000060c151c23282c2d2c282322201f1c18161312100c07000000000000000000000000000000000000000000000000000000000000000000000002080e12181c1f201f1c18120b03080d1114141a1413100c0701030709091010101010101010101010101010101010101010101010101010101010101010101010101010100e0d0b080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1620283035393a3935302f2d2b2822201f1c1711171c1f202322211f1b150e0700010b141d242b3033343737373737373737372f2e2b27201910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a3938332d2f2d2b272222201f1b17131518191e202123262322201c160f0800000000000000000000000000000000000000000000000000000000000000000000000007131d28313a4045474c4c4c4c4b4b4b4b4b4b4b4745413a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d31302e2d2925262422201f1c18120b03000206080809090909090909090909090909090909090909090909090909090909090909090909090909090909090909090706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002091015191b1c1b171312100c0704000000000000000104080d1114191e2021252726231f19120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131415151515151515151414110e080200000000000000000000030a11171c1f201f1c17161312100c0707060400000000000000000000000000000000000000000000000000000000000000000000000000000000070c10121312100c07000000010507080e0706040000000000000004040404040404040404040404040404040404040404040404040404040404040404040404040401010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e161e24292d2e2d292422201f1c171312100c060b0f1213171615130f0a04000000020b131a1f2426272a2a2a2a2a2a2a2a2a22221f1b150e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d2d2b282222201f1b171513120f0b0608080e1114141719171614100b0500000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a3f3f3f3f3f3f3f3e3e3e3e3a39352f2820160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20252321201d191917151312100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d0f0f0e0a070604000000000000000000000000000105080e111414191a1917130e080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070808080808080808080705020000000000000000000000000000060c10121312100c060706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607060400000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021201d191513120f0b0606030000000306060a0908060300000000000001080e14171a1b1d1d1d1d1d1d1d1d1d1615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d2021201f1c171513120f0b0606050300000000020507080a0c0a09070400000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d32323232323232323232312d2c29241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10131318161413110d080a0807060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000203010000000000000000000000000000000000000000020507080c0d0c0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131413110d08060603000000000000000000000000000000000000000000000003080b0d0e1111111111111111110908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11131413120f0b06060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d2020262625252525252525252521201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070b09070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080c0b09060100000000000000000000000000000000000000000000000000000100000306060708090a0b0b0c0c0c0c0d0d0d0e0d0d0d0d0d0c0c0b0b0a0909080706040000000000000000000000000000000000000000000000000000000000000000000105070707050100000000000000000000000000000000000000000000000000000000000000010404040404040404040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060706060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11131419191919181818181818181413110d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000102030000040607070707060603000000000000000000000000000000000000000000000000000000000000000002070b0d0d100e0d0b0907060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070707070707070707070706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414191816120d07000000000000000000000000000000000001040607090a0c0d0e060b0f1213141516171818181919191a1a1a1a1a1a1a1a1919191818171615151313100c070a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c0c0c0c0c0c0c0b0b0b0b0707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0e0f10070c10131314141413120f0b060c08080602000000000000000000000000000000000000000000000001080e1317191a1d1b1917161413100c0709070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d1113141414141414141414141413120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212525221e181109010000000000000000000003050609080d1113141617181a1b1c171c1f20212223242425252526262627272727272727262625252424232221201f1c181917130e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708100807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080d0c0a0702000000000000000000000000000000000000000000000000000000000000050b101416171a1c1d1e181c1f20202020201f1c171b181514120e09030000000000000000000000000000000000000000020a12191f2326272a28262422201f1d1818161413110d080907060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d202020202020202020202020201f1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e32312e29231b13090000000000000004060b0f12131518191d202122242527282922282b2d2e2e2f303132323232333333343434343333333332323130302f2e2d2c282326231f19120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d0e0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151c1414110e080200000000000000000000000000000000000000000000000000000000000000000000000000000000020507080f0f0f0f0f0f0f0f0f0f0808060200000000000000000000000000000306060708090a0a0a0b0a0908070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090f1214151a1917130e0800000000000000000000000000000000000000000000000000000000080f161c2022232728292a23282c2d2d2d2d2d2b2822282522211e1a15100b050000000000000000000000000000000000000a141c242b2f3334363533312f2d2c2924252321201d1918161313100c0707060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d2d2d2d2d2d2d2d2d2d2d2d2b27221b140b0202030405050506060504020000000000000000000000000000000000000000000000000000000000020d1720293036393b3f3e3a342d251b110700000001070c1013171b1f20222524292c2d2f31323334362d3338393a3b3c3d3e3e3f3f3f3f4040404140404040403f3f3e3e3d3c3c3b3a38342e322f2a241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d131619191a1312100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e21212921201e19140d050000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151b1b1b1b1b1b1b1b1b1b1514120e090300000000000000000000060b0f12131415161717171717161414110e09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f21222726231f19120a020000000000000000000000000000000000000000000000000008111a21272c2f30343536372e34383a3a3a3a3938332d35322f2e2b261f1c160c0701000000000000000000000000000000030d1c262e363b3f404341403e3c3a38352f32302e2d29252522201f1c18161413100c070806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060b0b0b0b0b0b0b0b0b0b0b0807050200030d161f282f35393a3a3a3a3a3a3a3a3a3a3a3937332d261d140a0f1011111212121312110e0b0706040000000000000000000000000000000000000000000000000008141f29323b4146474c4a463f372d23190e0502090e12181c1f22272b2d2f322f35393a3c3d3f404142433f44464748494a4b4b4b4c4c4c4d4d4d4d4d4d4d4d4c4c4c4b4b4a494848464540403f3b352e261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191e23252627201f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171f252a2d2e362e2d2a251e170e050000000000000000000000000000000000000000000000000000000000000000000000060e141a1e21222828282828282828282822211e1a150e0705010000000000020a11171c1f2021222324242424242321201e1915120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f33322f2a241c140a000000000000000000000000000000000000000000000000050f1a232b33383c3d414243444540454647474746443f43413f3b3a37312c282118120b0300000000000000000000000000010b151f2e3840474c4d504e4c4a49474540413f3c3a393530312f2d2c282323201f1d181514120e09060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121318181818181818181818181514120e090b151f28313a4045474747474747474747474746443f382f261b1b1c1d1e1e1e1f1f1f1f1e1b181413100c0701000000000000000000000000000000000000000000020e1925303b444d5254585651493f352b20170c0c14191d23292c2d3337393c3e41414547494a4b4d4e4f504a505354555657575858585959595a5a5a5a5a5a5a59595858575756555453514b4d4b4740382e24190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242a2f3233342d2c28231c150c050000000000000000000000000000000000000000000000000000000000000000000000000000000000081019212931363a3b433b3936302920170c03000000000000000000000000000000000000000000000000000000000000000000060f181f262a2d2e353535353535353535352f2e2b261f1813110d08030000020b141c22282b2d2e2f3030313131312f2e2d2a25211f1b150d080100000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a31373a3b403f3b362e261c100700000000010507070705010000000000000000000000000b16212b353d44484a4d4f5051514b515353535353504a504e4b4847423c383329241d150d0300000000000000000000000007121d2731404a52585a5d5b59575553514b4d4b49474641403e3c3a38342e302d2c292422211e1a1613120f0b060602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f20252525252525252525252521211e1a14121d27313a434b51535353535353535353535353504941382d2228292a2a2b2b2c2c2c2b2a2825201f1d18120b03000000000000000000000000000000000000000005111e2a36414d565e6165625b51473d32291e14181f252a2f34383a3f4446484b4e4c52545557585a5b5c5d545b60616162636465656565666666676767676666666665656463636261605c555a57524a40352a1f13020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121c252e353b3e40413a38342e271e170e0600000000000000000000000000000000000000000000000000000000000000000000000000000007121a222b333b4246484f4746413b32291e150b0000000000000000000000000000000000000000000000000000000000000000030e18212a31363a3b424242424242424242423b3a37312a21201d19130f0b060a141d262d3338393a3b3c3d3d3d3e3d3c3b3a36302e2b262019130c0400000000000005080a0b0e0d0b08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a333c4347484d4b4740382e22190b020002080d11131413110d080200000000000000000004101c27333d474f54565a5b5c5d5e5f5c60606060605b5e5d5b5855534d48443e352f271f150c0300000000000000000000000c18242f3943525c64676968666462605d555a585654524c4d4b494645403f3c3a39352f2f2e2b2622201f1b1714120e0906040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272b2d32323232323232323232322e2d2a251f18232f39434b555d6060606060606060606060605b53493f3333343536373838383939383735312d2c29241d150d09000000000000000000000000000000000000020c1a232d3946525e686e726d62594f443b30261d232930363940454749505355585a565d606264656667696a6b666c6d6e6f7071717272727273737374737373737372727171706f6f6e6d676b66635c52473b2f1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242e3740464b4c4d4644403930292017110a020000000000000000000000000000000000000000000000000000000000000000000000030b1218242c343d454d53545c54524c443b30271c12070000000000000000000000000000000000000000000000000000000000000009141f2a333b4246484e4e4e4e4e4e4e4e4e4e4847423c332e2d29251f1b1711111c262f383f44464748494a4a4a4a4a494746423c3b373229241e160d05000000060c111517181b1a17140e08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18212a333c464e53555a58524a40342b1d140a050d13191e2021201e19130f0a04000000000000000714202c38444f5960636768696a6b6c666d6d6d6d6c666b6a6865625f57554f45403931271e150b0000000000000000000004101d2935404b55646e73767473716f6d6769676563615e565a585553514b4c494745403e3b3a37312f2d2b2722211e1a1312100c070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d3337393e3e3e3e3e3e3e3e3e3e3e3b3a363129212934404b555d676d6d6d6d6d6d6d6d6d6d6d6c655b50443f404142434444454545464544413e3a38352f271f1b120a01000000000000000000000000000000000a141e2b37434e58616e7a7f726b60564c42382e272f343b42464b5153535b6062656769686d6f7072737475767778797a7b7c7d7e7e7e7f7f7f80808080808080807f7f7f7e7e7d7c7b7b797877736e63574b3a3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232d3640495257595a53514a423b3327221b140b03000000000000000000000000000000000000000000000000000000000000000000040c151d2328363e464e575e6169615e564c42392e231810070000000000000000000000000000000000000000000000000000000000020e1a26313b454d53555b5b5b5b5b5b5b5b5b5b55534d453c3a3935302b27221b18222d38424a505354555657575757575654524d4847433c352f2820170e05000910171d2124252726241f1a130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17212a333c454e585f6266635c52463d2f261c110e171e252a2d2e2d2a251e1b160e090300000000000916222f3c4854606b7074757677787879797a7a7a7979787674726e69636159514b433930271c120700000000000000000006131f2c3845515d67738083817f7d7c7a787674726f6d6869676462605c55585653514b4b4847423f3c3937332d2d2b26201f1c1813100d07040000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f44464b4b4b4b4b4b4b4b4b4b4b4846423b33292c3845515c6776797a7a7a7a7a7a7a7a7a7a776c6053494c4d4e4f5051515152525252514e4b47454039312d241c130a00000000000000000000000000000006111c26303847535f6a7481867d70685e544a3f34313940454d52555c6064656c6f717476787a7c7d7e808182838485868788898a8a8b8b8b8c8c8c8d8d8d8d8d8d8d8c8c8b8b8a8a898887868584807366564c41362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18222b353e48525b636667605c544d453d332d261d150d0400000000000000000000000000000000000000000000000000000000000000040d161e272e344048505860696e766e685e544a40342822180e040000000000000000000000000000000000000000000000000000000005121e2a36424d575f6168686868686868686868625f574d464746413a37332d282328333f4a545b60616263636464646462615e5655534e45413a322920170c09121b22282d30313433302b241d140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172129333b454d575f6a6e736e63584e42382d22171720293036393a3936302c27211a150d08020000000a1723303d4a5663707d808283848485868686868686868583817e7b76706b605d554b42392e23180c0300000000000000000714202d3a4753606d7985908e8c8a88868482807e7c7a787673716f6d67686563605d555855534e4c4946443f3b3a37312d2c2823201d1813100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3841495053585858585858585858585854534d453b312d3a4753606d7986868686868686868686867b6e615556595a5b5c5d5d5e5e5f5f5f5e5d5b5853514b433e362e251c100700000000000000000000000000000b17232e38424f59626f7c8791857a6e665c50443e3c434b51565e61676d7075787b7e81838587888a8b8d8e8f909192939994959697989898989999999a9a9a9a99999999989897969695949892918477685e5246392d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d17202a343d47505a636d73746d665e574f443f382f271f160e060000000000000000000000000000000000000000000000000000000000050e161f2830394045525a616a6f7b827a6e665c51443e342a20160b020000000000000000000000000000000000000000000000000000000714212d3a46535f696e757575757575757575756e695f535254524c46443f38342e2b3844505b666c6d6e6f70707071706f6e6967625f58524c443b33291e15121b242d34393d3e413f3c362f261d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029333b454d575f696e7c80736a60544a3f33281e1e29323a41464746413a38322b261f19130c070105111d2a36414c566975828d8e8f9091929299939393989291908e8b88837d756d675d544a4034282015090000000000000005121e2a36424d5764717e8a989b99979a93918f8d8b89878582807e7c797774726f6d676765625f5759555350494847423d3a38342e2c29241f1c18120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b606565656565656565656565615e574d42362d3a4753606d7a86939393939393939393887b6e61606365666768696a6b6b6b6c6c6b6a6864605d55504840372e22190f0400000000000000000000000003101c28343f4a54616b76828f978f82786d605a5045464e555c60696e73797d8185888b8d909297959798999a9c9d9e9f9fa4aba2a3a4a4a5a5a5a5a6a6a6a7a6a6a6a6a6a5a5a4a4a3a2a2aaa29f96877a6d6154473a2e21140600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c161f29323c464f59626c737f80786e69605950494139312820180f07000000000000000000000000000000000000000000000000000000060e1720283139424b515b636c717c858f82786d605a50463c32281d140a0000000000000000000000000000000000000000000000000000000815222e3b4855616e7b818181818181818181817b6e62565e615e5653504944403936414c56606c787a7b7c7d7d7d7d7d7c7a78746f6a605d564d453b30271c1b242d363e45494b4e4c4741382f251b110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029333b454d575f696e7b85877c6f665b50443a302525303a444c5254524c48433d37312a251e18120b0613202d3946525e687884919b9c9d9e9f9fa3a0a0aaa39f9e9d9b9895908a81796d665c51443c31261a0e000000000000000714202d3a46525e6976828f9caaa6aca49f9e9c9a989697918f8d8b888684817f7c7a7774716e6a686562605b5355534d4a4644403a39352f2c28231d1b15100c07000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c71717171717171717171716e695e53463a2d3a4753606d7a8693a0a0a0a0a0a0a094887b6e616b6f7273747576777778787879787774716d67625a514940342b21160a0000000000000000000000030d17212b3844505c66707d8a949f948d80736c61574d50585f676d737b80858a8e9297989a9c9ea1a9a3a5a6a7a8a9aaabacafb5afb0b1b1b1b2b2b2b3b3b3b3b3b3b3b3b2b2b2b1b1b0afaeb4aea8978a7d7064574a3d2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e28313b444e58606b717e8b8d827b706b605b534b433a322a2119100800000000000000000000000000000000000000000000000000060f182029323a434b545c606d737e8691948d80746c61584e443a2f261c110600000000000000000000000000000000000000000000000000000916232f3c4956626f7c898e8e8e8e8e8e8e8e897c6f635e686d6863605b53514a454046525e6877838788898a8a8a8a8a898784817c756d685e574d42392e23242d363f485056585a58524a41372d231a10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d172029323b454d575e696e7b84919083786c60564c41362a2a36414c565e615e56544f47423c363029241d171114212e3a4754616d7a8796a1a9aaababacafb5adb4aeacaba9a7a79f9d938e82786d60574e42372b1d12070000000000000815212e3b4854616e7b87939facb2b6afacaba9a7a5a9a19e9c9a979992908e8b898684817e7b7875726f6c6565615f575653514a4745403a38342e2b261f1c18120d080100000000000000000000000000000000000000000000000000000000000000000613202d394653606c777e7e7e7e7e7e7e7e7e7e7e7b6e6154483b2e3a4753606d7a8693a0adadadadada194887b6e636f7d7f808182838484848585858584817e79716c635b51463d32271b0f020000000000000000000009141f2935414b55606d7883909da69c928a7e70695f555a616a6f7980868d92979b9ea1a9a7a9abadb3b0b1b3b4b5b6b7b8b9bbc0bcbdbdbebebebfbfbfc0c0c0c0c0c0c0bfbfbebebdbdbcbbbeb3a6998d807366544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a434d565f6a707d87929490857d726c655c554c443c332b221a11080000000000000000000000000000000000000000000000060f18212a323b444c555d666d757f8892989d928b7e716a5f564c42382d22170f06000000000000000000000000000000000000000000000000000916232f3c4956626f7c89959b9b9b9b9b9b96897c6f63676d7a76706c65605c54514b4754616d7a8793959696979797979596918e88817a6e695e544a4034282d363f48505a616467645c52493f352c22180e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323b444d575e696e7b849196958b7e72685e52463c312d3946525e686d68636059534d46413a352f28221c1423303d4a5663707d8996a8b2b7b7b8b9bbc0b9bfbab9b8b6b4b1aba59e948d80736a5f5347392e23180c000000000007131f2c38434f5966727f8c99a4afb0b2b4b5b7b5b3b1b3adaba9a6aba39f9d9b989992908e8b8885827f7c7875726e696763605c5453514b4645403937312c28231d19130d08020000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79868b8b8b8b8b8b8b8b8b8a7d7064574a3d313a4753606d7a8693a0adb9b9b9aea194887b6e6976828c8d8e8f9090919192929291908e8b857e726d63584e43382c1e1308000000000000000000020e1a25303945515d67727e8b95a0aca49f92867b6e675d616c707c848d92989ea2a9abadb3b4b6b8b9bebdbec0c1c2c3c4c5c6c7ccccc7c6c5c4c4c3c3c2c2c2c2c2c2c2c2c2c2c3c3c4c4c5c5c3b6a99c908376665c5044382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071017232e38424b555e696f7c8592999f9792877f776d675e564d453d342c231a1108000000000000000000000000000000000000000000060f18212a333b444d565d676d78818c939aa3a49f92867c6f685d544a3f332821180e030000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2a8a8a8a8a296897c6f636d7985837d78716d66605d55515764717e8a9aa4a2a3a3a3a4a3a8a19e9a938e847b6e665c5144382c353f48505a626c71746e645b51473e342a20170c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a444d565e696e7b849196a19e92857a6d61584e433738444f59616d7a766f6b615f57524c454039332d261d26333f4c5966727f8c99a5b2bfbfbfbfbebebebfc2c5c4c3c1bcb8afa69f92877b6e62554b4034281c1004000000000915222f3b4854606b7784919da1a9a3a5a7a9abacafb5b2b4b6b5b3b5afacaaa7aba39f9d9a9897928f8c8885827e7b7774706d6664605d5553514b47433c38342e29241e19130d0802000000000000000000000000000000000000000000000000000000000713202d3a4653606d79869398989898989898978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e68788591999a9b9c9d9e9e9e9f9f9e9d9b97928b7f726a6054483a3025190d01000000000000000005121e2a36424d57606d7a85929ea7b1aea2989183796d656c717e8691959fa2aaadb3b8b9bec0c3c5c6c9c8c6c4c3c1c0bfbebdbcbbc0bbb9b8b8b7b7b6b6b5b5b5b5b5b5b5b5b6b6b6b7b7b8b9bbb8ac9f9285796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f192228343f4a545d676e7b849197a2a9a199928c81796d685f574f463e352c231a120800000000000000000000000000000000000000050f17212a333c454d565e686d79828e939fa4acaea29891847a6d665b50443e332a2015090000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afb4b4afa296897c6f67727f8c8f8a847e79726d67605d576774818e9aacb6b0b0b0b0b0b2acaba59e969083786d6053463b343e47505a626d717e80746d62594f463c32291e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e686e7b849196a1a8a2978d81746a5f53473e3b4854606b7683837c756e69615e56514b443f382f262935404b556875818e9ba8b4b3b3b2b2b1b1b1b2b5b8babfc6c8c1bbafa3998d8174675c5145382c1f130600000000091623303c4956636f7c899092979597989a9c9e9fa4aba5a7a9abadb3b2b4b6b4b5afacaaa7a9a19e9b9897928e8b8884807d7975716d6764605c55534e46454039352f2a251e19130c070100000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0a4a4a4a4a4a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e6d7a8797a1a7a8a9aaaaabababacabaaa9a19e92877c6f62564c41362a1e110500000000000000000714202d3a46525e6973808d97a1adb9b3aaa0958f82776c717e879298a0a8aeb4b9bec5c6c9c8c5c4c0c0bbb9b7b6b5b3b2b1b0afaeb5afacababaaaaa9a9a9a9a8a8a8a8a8a9a9a9aaaaababacafb5aea298887c6f6255493c2f2216060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b343d44505c666d79839096a1a9b3aba39f938e827a6e6960594f473e362c241a12080000000000000000000000000000000000050e172129333c454d575f696e7a838f949ea5afb6b4aaa1968f82786c605a50453c31261a0e0200000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f6d7a85929c95918b847f79726d6760697784919eaab2b2b2b3b8babdb9b7afa89f958b7e7164574d423c464f59626c717f888b7f726b61584e443a30271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686e7a849196a0a8b2a99f92877c6f62594f42434e58636f7c899089827b746d68605d55504a42382d2c3945515d677784919da9a7a6a6a6a5a5a4a5a6a8acaeb4bcc3cbc0b5ab9f9285796d6053463a2d201306000000000a1724303d4a5763707d81838587888a8c8d8f91939997999b9d9fa2a9a5a7aaacaeb4b5b7b4b3adaba8a9a19e9b9896918d8985827e7a75706d67625f5853514b45413a363029241e18120b06000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb1b1b1b0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e707d8996a9b3b5b6b7b7b7b8b8b8b8b7b3ada3998f8275685e5246392d20130700000000000000000815212e3b4854616e7b86929fa9b3bebcb1a89e938d80737d879299a2aab1babfc6cac7c5c2bcb8b7b4b6afacaba9a8a6a5a4a3a2a1a1a49f9f9e9e9d9d9c9c9c9c9b9b9c9c9c9c9d9d9d9e9f9fa3a1a1aa988b7f7265584c3f2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d47515b606d78828f95a0a8b2bcb5afa59e9490847b6f6b615950483e362c241a1208000000000000000000000000000000050e172029333b454d575f696e7b8390959fa6afbbc0bcb2a89f948d80736c61574e42372b1e120600000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f73808c97a2a09d96918b857f79726d6e7b8896a0a6a5a5a5a7acaeb4bcc1bab1a79d908377695e5246444e58616b717e8b9392877d706a5f564c43392e23180c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a839196a0a8b2bbafa3998f82766c61544a47535f6a75828f9c938f86807a726d67605b544a3f332d3a4753606d7a86939d9c9b9a999998989898999b9fa2aab1b9c3c7baaea298897d7063564a3d2e23170b000000000916232f3c4855616b707577787a7b7d7f81828486888a8c8e90929796989a9d9fa2aaa8aaafb7b9b8b5b3adaba8a8a09e9a98928e8a86817d79746f6a64605c54524c46413a353029241d17110a0200000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9bebdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e727f8c98a5b2b2b1b1b1b5b7bbc1c4c3beb5ab9f92867a6d6154473a2e21140700000000000000000f1b2835424e5b6875818e98a2aeb7c1c3bab0a69c928c80869299a3abb4bcc3cac7c0bbb9b5b1acaaa7aca49f9e9d9b9a989797969594999392919190908f8f8f8f8f8f8f8f8f8f90909191929299949595968e817568544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f59636d74818e949ea7b1bac4c0bbafa69f9691857d706b615a50483e362c241a110800000000000000000000000000030d172029333b454d575f696e7b8490959fa7b0b8c1ccc4bab0a69c928a7e706a5f53473a2e21140800000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f7a85929fa9aca8a19e97918c857f79717e8b989b999998989a9fa2aab4bdc2b8aca095877b6e6154484c565f6a707d87929f9992867c6f685e554b40342822170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d2a3643505d6976839095a0a8b2bac0b5ab9f948a7d70665c514d57626f7c88949e9e99928d857f79716c665b504438343c4956626f7c8992908f8e8d8c8c8c8b8b8b8c8f9298a0a7b1bec7beb4aa9a8d807367544a3f34281c10030000000714202c38444f596163686a676d6f7072747678797b7d7f81838587898b8e909298979b9ea5afbabcb7b6afb2b5b2acaaaaa29f9b98928e8a85807c76716d66605d56524c46413a352f28221c140b08020000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e74818e9ba7a6a5a4a4a5a8aab0b8c1cbc7bbafa3998a7d7063574a3d3024170a00000000000000000e1b2834414e5b6774818e939ea5afb7c1c1b8aea49c928c9298a2abb5bdc6c6bfbab5afaca9a7a09d9a989a9391908e8d8c8b8a8988878686858584848383828282828282828283838384848586868788898a8b8478665c5044382c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b727f8c939da6b0b9c3cccbc1b8b0a8a09792867d706c615a50483e362c231a10060000000000000000000000020b151f29323b454d575f696e7b849196a0a7b1b9c2cacec5bebaaea49f92857b6e6255483b2f22150800000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c73808d98a2aeb6b2aca9a19e97918b847e818e8f8e8d8c8b8b8d9298a2abb4bfbcb1a7978a7d7164574a525e686f7c869299a3a29891847a6d675c51453f34291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b949faab4bfc7bdb0a69e9184796d6055535f6975818e9ba6aba39f98928c847e786c6053464141414b5865727f868584828180807f7f7e7e7e7f82869095a0acb6c0c3b6a99c908376665c5044382b1f120600000004101c28333e474f55575b555d60626b6f74716e6d6e70727476787a7d7f818385888a8e939eaab6b0aba9a2a6a9acaeb4b3aeabaaa29f9b97928d88837e79726d68615e56524c454039332d261d19130c0500000000000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e7783909c9b99989897989c9ea6b0b9c2cbc0b5ab998c7f7366594c403326190d00000000000000000613202d394653606c78818e939ea5afb8c1bfb6aea49c999fa2aab4bdc7c1bcb4aeaba39f9c9795918d8b8986848382807f7e7d7c7b7a7a797878777776767676757575757576767677777878797a7a7b7c7d7e7f796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8692989fa7afb6bec5cdcbc2bab2a9a19892877e716c615a50483e352b22180f05000000000000000000000a141d27313a444d575e696e7b849196a0a8b1b9c2cbcbc3bcb4aea49d9691877e7165584b3e3225180b00000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c7a86929c9fa4acadb2b3ada9a19e96918b8e858281807f7f7f80869299a3aebabfb2a6998c7f736659505a616d7a849198a2abaaa1969082796d605a5045392d21150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313d4a56626c76828f98a2aebac2c2b8aca0968b7f72675d57616e7b87929facb5aeaaa29f96918a7e7164574e4e4e4e4e53606d7979787776747373737272717273757b83909aa4afbbc5b8ac9f9285796d6053463a2d201307000000000b16212c353e44484a4f4b5159636f7d817d7a7774716d686a696e70727477797c7e818e9ba8b0a69f9c96999c9fa3aaaaacb2b4aeaca9a29f9a95908b847f7a736d68615d56514b443f382f2a251e170e09000000000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e7986918f8e8d8b8b8a8b8f949ea6b0bcc7c0b4a79a8d8174675a4e4134271b0e010000000000000006121f2b3844505b666d78818e939ea6b0b8c2bfb6aea8a6acaeb4bcc5bfb8b0aaa29f99928f8b8784817e7c7a787675737271706f6e6e6d6c656b6b6a6a696969696868696969696a6a6a6b6c676d6e6e6f7071726d665c5044382c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b717e8690959fa4acb3bbc3cbccc3bbb3aaa39992877e716c615a50473d342a21170e04000000000000000006111c262f39434c565e696e7b849196a1a9b2bac3cbccc1b9b1aaa29f928d847c716c62564a3d3124170b00000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c7e868b8f939a9ea1a9abb0b3ada8a19e97988e817b73727272747c86929facb9c0b3a69a8d8073675a57626c75828f96a1aab4b2a89f948e81756c6256493d3024170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a45505a616e7b86929fa7b1bdc7bdb2a89e9285796d605e6974818e99a3afbbbbb3aea89e9184796d605a5a5a5a5a5a5a5d676d6d666a69686766666565656566696f7c87939facb9c6baaea298887b6e6155483b2e2215080000000005101a232c33383c3d424854606b76828d8a8784817d7a77736f6d66686d72777d8187929facab9f9490898c8f92989a9ea0a8a9abb1b3adaba79f9d96918c85807a736d68605d55504a423d363029201b12090000000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6f7c86848281807f7e7e7e828f949fabb7c4c1b4a89b8e8175685b4e4235281b0f0200000000000000030f1c28333f4a545c666d78818f949ea6b0b8c2bfb9b4b3b8babfc5beb5ada69e98928d87827e7a7b7a716f6d676a686765646463626164676868696a6a6a6b6b6b6a6a686764625f575e5e555d60616262636465605c544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f59626c717b838d939aa1a9b1b9c1cccdc5bcb4aba39992877e716c61594f463c332920160b02000000000000071117222d38424b555e686e7b849196a1a8b2bbc4ccc7c0bbafa7a098928a80796f6a625a50453a2e21150900000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c717a7e82878c91969c9fa6acaeb2acabaa9e938e857e776e696a75828f9ba8b5c1b4a79a8e8174675b5e69717e8b949ea8b2bcb6aea49d938b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f46535e69727f8b959fabb5c0c3b9ada1978c7f7368616e7b87929fabb5c0c5b9aca1968b7e7166676767676767676767676767676767676767676767676767676a7683909ca9b6c3bfb4aa96897d7063564a3d3023170a000000000008111a21282c2f38444f5963707d89949795918d8a8683807c7975757a7f84898e9299a3afa99c90837d7f8386898d9196999d9fa7aaacb2b1aba9a19e98928d86807a736d67605b544f46413a322d241b100600000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d313a4753606d7a8693a0adb9c6bbaea194887b6e787977767473727171727683909ca9b6c3c2b5a89b8f8275685c4f4235291c0f0200000000000000000b17222d38424a545c666d78828f949fa6b0b8c2c4c1bfc5c6cabeb5ada39c948f86807a76717b84837a6d675d555b5a59585756616c717374757676777777787777767574716e6965605c54515354555657585853504a42382e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d47505a62696e7880889297a0a7afbbc0c7cec6bdb5aba39992877e716b60584e453b32281d140a0000000000050e192328333f4a545d676d7a849196a0a8b2bac4cdc6beb6afa59e9590867e746d67605850483f34291d110500000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f6d71767b80848a8f949b9fa3abaeb4afa59e98928b827b716c727f8c99a5b2bfb4a79b8e81746859616e7b86929fa6b0bab6aea49d928d81796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222a36424d57606c78839099a4afbbc5beb3a99f92867a6d6974818d99a3afbdc7bdb2a89e9184797474747474747474747474747474747474747474747474747474747173808c99a6b3bfbeb1a5988b7e7265584b3f3225180c0000000000000810161c232f3c4855616b7683909da6a09d9a9993908d89858181868b91959b9fa3abb5ab9f948a7e7376797d8084888c9095999ea0a8acaeb2adaaa29f98928d857f79716c666059524c443e362d22170c00000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a3d393a4753606d7a8693a0adb9c6bbaea194887b6e6c666a6968666565646673808d99a6b3c0c2b5a89c8f8275695c4f4236291c0f03000000000000000006111c262f38424a545c666d79828f949fa6b0b9c2ccccd2cdc0b7ada39b918c827b736e6e7b84919083796d665c504d4c4b4d5764717e80818283838484848484848382807e7b77716d665f574e4748494a4b4c46443f3830261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b343e4850575f666d737d8590959ea5afb6bec6cec6bdb5aba39992877d706a5f574d443a2f261c1106000000030c17202b353d44505b666d79839096a0a8b2bac4ccc5bcb4aca49f938e837b716c605d554e463f362d22180c0100000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f6365696e73797d83888e92999fa3aaaeafaaa29f948f857e74717e8b98a4b1beb4a79a8e817467606b75818e98a2aeb8b7aea49d928d80776d675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e1a25313b44505b666f7c87939fa9b3bec5baaea2988d80736e7b86929fabb5c0c5b9aca0969083808181818181818181818181818181818181818181818181818181807e717e8a97a4b1bdc0b3a6998d8073665a4d4033271a0d000000000000000714202c38444f5963707d8a959fabacaaaba49f9d9997928e8e92989da0a7acafb4aea69f9c9184796d6d7073777b7f83888c91969a9fa2aaadb2aeaaa29f98928c847e786f6b615e5650483e34281d1105000000000000000000000000000000000713202d3a4653606d798693a0acb9c6bdb0a3978a7d7064574a4646464753606d7a8693a0adb9c6bbaea194887b6e615b545c5b5a58585966727f8c99a5b2bfc2b5a89c8f8275695c4f4236291c0f030000000000000000000a141d263038424a545c676d79828f949fa7b1bac4cecfc5bbafa59b918b7f756e696e7b849196958f82786d605b514746535e6978858d8e8f8f90909191919191908f8d8b88837e786e695f584e433c3d3e3f3a38342e261e150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222d363e454d545c606b707b838e939fa4acb4bcc5cdc6bdb5aba39992867c6f695e564c42382d22170f0500000a151e29323d47515b606c78818f959fa8b2bac4ccc4bbb3aaa29a938c81796e69615a514b433c342d241b11060000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f63606c78767170767c81868d92989fa3abafaea69f97928a817a7e8b97a4b1beb3a79a8d807467636f7c89939eaab4b9afa59d928d80746c655c554b4034291c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f28333f4a545f6a74818e97a2adbac3bfb4aa9f92867a74808d99a3aebdc7bdb2a89e9184828d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d80747c8996abb5c0c1b4a79b8e8174685b4e4135281b07000000000000000a16232f3c4855616b7683909da7a8abadb3afacaaa9a29f9b9b9fa3aaacb1b9b4aba39f94908a857d706363676a6f72767b8084898e92989ea1a8b2b4aeaaa29f96918b837d746d68615a5045392d21150800000000000000000000000000000008121a202d3a4653606d798693a0acb9c6bdb0a3978a7d706457525252525253606d7a8693a0adb9c6bbaea194887b6e61554a52525252525966727f8c99a5b2bfc2b5a89c8f8275695c4f4236291c0f03000000000000000000020b141e263039424b555d676d798290959fa8b2bdc9c9beb3a99d928b7f726d6a6e7b859196a19f948e81746d62594f4854616e7b87979b9b9c9d9d9d9e9e9e9d9d9b9a9795908b837b6e6a5f554b403531322d2c28231c150c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101b242d333b424a505961696e79818c939aa2aab3bbc4ccc7bdb5aba29891857b6e685d544a3f332821170c0206111c26303b444f59626d74808d939ea7b1bac3ccc4bbb2a9a29892887f756d675f5750454039312b221b1209000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f63687480827d79736f747b81868d92999fa4acb0a9a29f938e83808d99a6b3bfb3a6998c8073666b7683909ca5afbbb1a79e938d80746e605b534b43392f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b17222d38424e58616d7a85929fa8b1bdc5baaea2988d807b86929fabb4bfc5b8aca0968b7e828f9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8d81747b8799a3afbbc2b6a99c8f8376695c50432f24180d010000000000000a1724303d4a5763707d8a9196989b9fa2a9a9acafb3adaba8a8acaeb4b8bcbaaea399928b837e79706b676767676767696e73777c81868c9196a1a8b2bab3aea8a19e959087817a716c6156493d3024170a0000000000000000000000000000050f1a242e37404653606d798693a0acb9c6bdb0a3978a7d70645f5f5f5f5f5f5f606d7a8693a0adb9c6bbaea194887b6e615f5f5f5f5f5f5f5f66727f8c99a5b2bfc2b5a89c8f8275695c4f4236291c0f0300000000000000000000020c151e273039434b555d676d79839096a0acb9c5c6b9ada1978e81746d6a6e7c859197a1a9a69d928c7f726b60564d5764717d8a97a9a8a9a9aaaaaaabaaaaa9a8a7a7a09d9590857c6e675d51453a2f24201f1c17110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b212930383f444f575e676d757f889298a2a9b2bac4ccc6bdb4aaa19791837a6d665b50443d33291e140a0e17232e38424d56606b727f8b929da5afb9c2ccc4bab2a9a19792867e736d605d554d453e352f271f19100900000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f636d7a868f8a84807b756f747b80868e939aa0a7aeada59d95908d929ca8b5beb2a5988b7f7265707d89949fabb7b3a99f958e81776c605c5049413931271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3c46525e68727f8c95a0acb8c2bfb4aa9f9286818e98a3aebdc6bcb1a79e918479838f9ca7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79a8d81747986929facb9c4b7aa9d9184776a554b4035291d11040000000000000a1623303d495663707d8184888b8f9297999c9fa3ababadb2b4b9babfc5c5b9ac9f92867e77747474747474747474747474747474747a7f849196a1acb9bebab2ada7a09a938e857e7164584b3e3125180b00000000000000000000000000020b17212c3640495153606d798693a0acb9c6bdb0a3978a7d706c6c6c6c6c6c6c6c6c6d7a8693a0adb9c6bbaea194887b6e6c6c6c6c6c6c6c6c6c6c727f8c99a5b2bfc2b5a89c8f8275695c4f4236291c0f030000000000000000000000030c151e273039434b555d676d7a84919eaab7c4c5b8ab9e92857a6d6a6e7c859197a1a9b2afa59f92877d70685e53546773808d9aa6b3b6b6b7b7b7b7b7b7b6b5b3b1aca7a0979184796d60564c4135291d12100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090f181e262e343e454d555d606d727e869297a1a8b2bac3ccc5bcb2a9a0958f82786c60594f453b30261c11162028343f4a545e69707d87939fa4aeb7c1cbc4bab2a8a09791857d716c635b514b433c3329241d150d070000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcbcafa296897c6f66727f8c9896918c87827c7670747b818790959fa2aaafa7a09d999ca4aeb9bdb1a4978a7e716a7683909ca6b0baada2979083796d655b50443f382f271f150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2a36414c56606d7984919da7b1bcc6baaea298928e939eaab4bfc5b8aca0958a7e76838f9ca9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a79a8d81747884919eabb7c4b8ac9f928579675d5145392c2013060000000000000916222f3b4854606b7074787b7e8285898c9092999a9ea1a8a9acafb5b9babaaea399928b838080808080808080808080808080808080808084919eabb7c4c4bdb9b1aca49f979083776a5d5044372a1d11040000000000000000000000000a141d29333e48515b63666d798693a0acb9c6bdb0a3978a7e7979797979797979797979798693a0adb9c6bbaea194887b7979797979797979797979797f8c99a5b2bfc2b5a89c8f8275695c4f4236291c0f03000000000000000000000000030c151e273139434b555d6876838f9ca9b6c2c4b7aa9d9184776a6e7c859197a1a9b2bbbbafa39991857a6e655b5c667683909ca9b6c2c3c3c4c4c4c4c4c3c2c0bcb8b1a9a0968d8073685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151c2328333b434b515b636c717d859196a0a8b2bac3ccc4bbb1a89f948c80736b61574d42382e23171e28323a44505c666e7b859299a4afb6c0c9c4bab2a8a09691857c6f6b615a51454039312a2118120b03000000000000000000000000000000000000000000000000000000000616232f3c4956626f7c8995a2afbcbcafa296897c6f6d7984919ea19e99928f89827d7771757c838b92989fa6aeacaaa6a8aeb6c0beb3aa95897c6f6f7c89949fabb8b0a69f92857b6e675c53493f332d261d150d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b1925303a44515c66707d8a959fabb8c2bfb4aaa29f9b9ea5afbcc6bcb1a79d91847876838f9ca9b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a79a8d81747683909ca9b6c3baaea298867a6d6053473a2d2014070000000000010d18242f3943505a616467696e7275797c7f83868a8e9196999c9fa3abacaeb4b4aba39f95908d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9196a1acb9c5cfc9c3beb6afa99d9083776a5d5044372a1d1104000000000000000000000006111c262f3b45505a636d7370798693a0acb9c6c5b8ac9f9286858585858585858585858586929facb8c5d2c5b8ac9f928685858585858585858585858586929facb9c5c2b5a89c8f8275695c4f4236291c0f0300000000000000000000000000030c151f28313a434c566976838f9ca9b6c2c4b7aa9d9184776e7c859197a1a9b3bbc4c0b5aba1978f82776c60606d7985929facb8c0bfbfbebfc0c4c5c9cfcec8c3bbb2a89f92857a6d6054473a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a1117212931394045515a616b6f7c849196a0a8b2bac4cdc3bab0a69f93887d70695e544a3f34281d24303a444f59606d78829097a1abb5c0c8c4bbb2a8a09691847b6f6a6059504840352f271f180f0701000000000000000000000000000000000000000000000000000000020a1117232f3c4956626f7c8995a2afbcbcafa296897c6f717e8a96a1acaba39f9b948f89837d7870787f868f949fa3abb2b3b5b9c0c6baaea298877a6e75818e9ba6b0b4aa9e948a7e71695e554b41382d221b140b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2834404a54616b7683909da6b0bcc6bcb4aeaca8aaafb7c1c4b8aca0958a7e7176838f9ca7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79a8d817475818e9ba8b4c1bfb4aa94887b6e6155483b2e221508000000000004101d2935404b55616c71706e6d66666d6f73767a7d8184888c9092999c9fa3ababb0aea79f9d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9ea1a8b2bdc5c5c5c5c5c0b6aa9d9083776a5d5044372a1d110400000000000000000000040d17222d38424d57616c737f7c788693a0acb9c6c7baaea3989292929292929292929292929298a2aebac6d3c6baaea298929292929292929292929292929299a3aebac7c2b5a89c8f8275695c4f4236291c0f030000000000000000000000000000030d161f283143505c6976838f9ca9b6c2c4b7aa9d91847773808c929da4aeb7c0c9c7bdb3a99f948b7f7269626f7c8898a2aeb4b3b3b2b2b2b4b7b9bdc4ccd4cdc4baaea2988b7e7165554b4034291c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f272f353f485059606a6e7b849196a0a8b2bbc4ccc2bbafa49a92857b6e665c50443c2f262935414c56616b73808d949fa9b3bdc7c5bcb2a9a19691847b6e695f584f473e3629241d150d0600000000000000000000000000000000000000000000000000000000020b141b22272f3c4956626f7c8995a2afbcbcafa296897c6f7683909da8acaeafaca69f9c95908a837d76727b828c9299a1a8b0b8c2cfc5b8ab9f9285786e7b86929facb9aea3988f82756c61574d43392f261b110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c18232e39424f5963707d89949fabb7c2c6bfbab8b4b6bac1c7bcb1a79d9083786c76838f9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8d817474808d9aa7b3c0bcafa295897c6f6256493c2f23160900000000000613202c3945515d67717e7d7b79777573716f6d6d7174787c7f83868b8f92999c9fa6abadabaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7abacb2b8b8b8b8b8b8b8b8b6aa9d9083776a5d5044372a1d1104000000000000000000010c161f28333f4a545e69717e8a89828f9ca9b5c2cfcbbfb4aaa39f9f9f9f9f9f9f9f9f9f9f9f9fa2aab4bfcad6cabfb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9fa3abb4bfcbc2b5a89c8f8275695c4f4236291c0f03000000000000000000000000000000040d16293643505c6976838f9ca9b6c2c4b7aa9d9184776e73808d929da5afb7c1cbc4bbb0a69f92867b6e65727e8b98aaa9a8a7a6a5a5a5a7abadb2bac1c9d6cabeb4aa9c8f8276675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d2429363e464f585f696e7b849196a1a9b3bcc5ccc0b6aca1979083786d60574d42382d313a45525d68707d88939fa6b0bbc5c6bcb3a9a19691847b6e695e574e463d342c2418120b0300000000000000000000000000000000000000000000000000000000000a141d262d33373c4956626f7c8995a2afbcbcafa296897c6f7c8995989c9fa3aaabb0aba79f9d959089827c75787f8791969fa6b0bdc6c3b6a99d908376737f8c99a3afb3a99f92867b6e615a50453b30271d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303e4854606b7683909ca6b0bbc7cac7c5c1c2c6d0c7b7ab9f958a7d706576828d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d807473808c99a6b3bfbdb0a3968a7d7063574a3d3024170a00000000000714202d3a4753606d79868a88868482807e7c7a777573716f72767a7e82868b90949a9ea2a9acb1b3b3b3b3b3b3b3b3b3b3b5afacacacacacacacacacacacacacacacacacacaa9d9083776a5d5044372a1d110400000000000000000007121d28313944505b666e7b8592948f949faab7c3d0d0c6bcb4aeacacacacacacacacacacacacacaeb4bcc6d0dbd0c6bcb4aeacacacacacacacacacacacacacacaeb4bdc6d1c2b5a89c8f8275695c4f4236291c0f0300000000000000000000000000000000101d293643505c6976838f9ca9b6c2c4b7aa9d9184776a6e73808d939da5afb9c3cdc2baaea2988f82766b74818e9b9d9c9b9a999898989a9ea1a8afb7c1cdd0c5b9ac9f9286796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b1218242c343d464e575e696e7b849197a1aab4bdc7c7beb3a99f958c7f72695f544a3f333a434f59606d7a84919aa4afb8c2cbbfb4aaa29791847b6e695e574d453c342b221a120701000000000000000000000000000000000000000000000000000000000006111b262f383f44464956626f7c8995a2afbcbcafa296897c707d83878b8f92989d9fa7abaeaba7a09d948f87817b727c848f949fabb4bfc2b6a99c8f82797784919eabb5ada2978d8073695e53483e33291e150b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2c38444f5963707d89949fabb7c3ced3d2cecfd2c7beb0a69d9083766b65727f808080808080808080808080808080808080808080808080808080807e71727f8b98a5b2bebeb1a4978b7e7164584b3e3125180b0000000004101c2834404a5464717d8a989892908e8c8a88868482807e7c79777572757a7e83888d92979da0a7adb3bbc0c0c0c0c0c0b5aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9083776a5d5044372a1d11040000000000000000010d18242f39434e58606c788290979f9c9fa6b0bbc7d3d5cec6bfbab8b8b8b8b8b8b8b8b8b8b8b8b8babfc6ced7e2d8cec6bfbab8b8b8b8b8b8b8b8b8b8b8b8b8b9babfc0c0c0c0b5a89c8f8275695c4f4236291c0f0300000000000000000000000000000003101d293643505c6976838f9ca9b6c2c4b7aa9d9184776a646e74818e939ea7b1bbc5cabfb4aa9f948a7d7077849192908f8e8d8c8c8b8c8d91969ea5afbbc4cfc7baaea399897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000107121a222b343c454d575e696e7b859198a2abb5c0cbc5bbb1a79f92867b6e665b50443b414c56616b74818e97a1acb6c0cac2baaea39892857c6f695e574d453b332a22191008000000000000000000000000000000000000000000000000000000000000000b17222d38414950535056626f7c8995a2afbcbcafa296897c6f70777b7e82868b90959a9fa2aaadaca69f9a938e867f787a828f99a3aebac4b7ab9f948f847f8c96a1acb4aa9e92857a6d60574d42362c21170c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1c27333d4854606b76828f9ca7b1bcc8d4dfdbd8ccc0b6ac9f94897d7063626d7274747474747474747474747474747474747474747474747474747474716c717e8b97a4b1bebfb2a5988c7f7265594c3f3226190c0000000006121f2c3844515c6675818e9ba39f9d9b99979992918f8d8a888684827f7d7a78767b80858b90959ea2a9b3becacdcdc7bbafa39992929292929292929292929292929292929292929083776a5d5044372a1d1104000000000000000004101d2935404b55606a727f8c949fa9a9aab0b8c2ccd5ccc3bdb8b7b4b4b4b4b4b4b4b4b4b4b4b4b4b5bac0c8d2dcd3c9c1bab6b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a89c8f8275695c4f4236291c0f0300000000000000000000000000000003101d293643505c6976838f9ca9b6c2c4b7aa9d9184776a5c606d78818f95a0a9b3bec7c6bcb0a69d9184787a88868584828180807f7f7f81848e939ea9b3bec9cbbfb4ab988c7f7265594c3f322619070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081019222a333b454d575f696f7c869299a3afbbc1ccc2baaea3989083786c60564c4145525d68707d8a939da9b2bec7c2b8aea49f92867d706a5f574d453b33292118100700000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b605b53626f7c8995a2afbcbcafa296897c6f64696e72757a7e83888d92989ea1a8adaca49f98928b837c7986929facb9c5bbb0a69f96918c919ca8b2aea2988c7f73675d51453b31241a0f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c38444f5963707d8995a0acb8c5cfdae0d4c8bbafa49a8f82766b605b6265676767676767676767676767676767676767676767676767676767676767707d8a96a3b0bdc0b3a6998d8073665a4d4033271a0d000000000713202d3a4653606d7985929fabacaaa8a6aba39f9e9b99979992918e8c8a878582807d7b7e838f9297a2adb9c6d2cbc3b9ac9f928786858585858585858585858585858585858585858276695d5043362a1d100300000000000000000613202c3945515d676f7c87929fa6b0b5b7bbc2cad3cec3bab2acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a9aeb6c0cbd6cbc1b7afaaa8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79c8f8275695c4f4236291c0f0300000000000000000000000000000003101d293643505c6976838f9ca9b6c2c4b7aa9d9184776a5e5c666d79839097a1acb6c0ccc2b8aca0968a7e797b7a7877767574737272727479818e97a1adb9c6d1c1b4a79a8e8174675b4e412f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f182129333b454d575f6a707d87929fa6b0bac4cbbfb4aa9f948b7f72685e52464e58606d7a84919ea5afbbc4c4bab0a69d928a7e716b60584e453b332921170f06000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c6560626f7c8995a2afbcbcafa296897c6f635e696e726e71767c80858b91969ea1a9adaaa29f959087828f99a3aebac7c2b8b0a8a09e999ca4adb6ac9f92857a6d60554c4133291f12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333d4855616b7784919da9b3bec9d5d7cbc0b5ab9f93877c6f625954606b6f7474747474747474747474747474747474747474747474747474747474747c8996a2afbcc0b4a79a8d8174675a4e4134271b0e000000030f1b27333f495363707d8997a2aaacafb5b1b5afacaaa8a6aba39f9d9b999697918f8d8a8784818285929eabb8c5cec3b9b1ac9f92857f787979797979797979797979797979797979797670665a4e4235291c0f030000000000000007131f2c38434f59606d79849199a3aeb8c2c3c7ccd3d4c8bdb2a8a09e9a9a9a9a9a9a9a9a9a9a9a9a9a9da4aebac5d1c6baafa59e9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8f8275695c4f4236291c0f0000000000000000000000000000000406101d293643505c6976838f9ca9b6c2c4b7aa9d9184776a5e545d676e7b85929aa4afbbc4c8bdb2a89d9083776e6d676a69686766656565666d7985919eabb8c4d0c3b6a99d9083766a554b4035291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f172129333c454e58616b727f8c939ea8b2bdc6c6bcb0a69f92867a6e61574d535f6a74808d96a1adb7c1c7bdb2a89f948d80736c61594f463c332921170f050000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78706b626f7c8995a2afbcbcafa296897c6f63616e7b7f7b76716f74797e848b91969ea1a9aea79f99928f949fabb4bfc6c2c1bab2acaaa6a8adbbafa49a8d8074685d52433a2f231a120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c38444f5965717e8b97a1adb9c6d2d3c7bbafa3998e81756a605456636f7d808080808080808080808080808080808080808080808080808080808080818e9ba8b4c1c1b4a89b8e8175685b4e4235281b0f00000005121f2b3744505b6574818d9a9c9e9fa3aba5a6a8aaacafb5b5afacaaa8a5a9a19e9c999796918e8f9297a2adb9c6c8bcb1a7a09d948f887f726c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493e32261a0d01000000000000000915222f3b4854606b74818e96a0abb0b8bcc3cacfd7d2c5b8aca096918d8d8d8d8d8d8d8d8d8d8d8d8d929da9b5c2cec2b6aa9e938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8275695c4f423629191009000000000000000000000001070c1013141d293643505c6976838f9ca9b6c2c4b7aa9d9184776a5e4b555e69707d88939fa8b2bdc9c3b8aca095897d70635c555c5b5a595958545d6773808d99aab4bfcbc5b8ab9e928578675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17212a333c464f59626d75828f96a1abb5bfcbc2baaea2988d8174695f5359626e7c87929fa8b2bdccc0b5aba1968f82786d605a50473d342a21170f0500000000000000000000000000000000000000000000000000000000000000000005111e2a36414c5664717e7d70676f7c8995a2afbcbcafa296897c6f636873808c87837e7a757072797f848c92979fa4acaba39f9c9fa6b0bdc1bab6b4b7b9b8b7b2b4b8b9ac9f93877b6e61564d453d352c241c130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333d4753606d7985929eabb8c5d1cabfb4aa9f92877b6e62584e5865727e8b8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8e939eaab6c2c2b5a89c8f8275695c4f4236291c0f0000000613202d394653606c79848c8e8f91929996989a9c9e9fa4aba6a8abacafb6b3adaba9a6a8a09e9b9b9ea2a9b3becac5b8aca0959189827c726d635f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5a544c43382d21160a0000000000000000091623303c4956636f7c898f949c9fa6acb1b9bec5cdd1c4b7aa9e9184808181818181818181818181808d9aa7b4c0c1c1b4a89b8e8181818181818181818181818181818181818181818181817f7265584b3f322b221b1209000000000000000000030b12181d1f2027293643505c6976838f9ca9b6c2c4b7aa9d9184776a5e514d57616b74808d96a1adb9c3c8bcb1a79b8e8175685d524f4e4d4d4c4c4b55626f7c8998a3aebac7c6b9ada197867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18212a343e47515b606d7a849199a3aebbc3cabfb4aa9f92877b6e6259606b75828f99a3afbac4c7bbafa49991847a6d665c50483e352b22180f05000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e68768284796d6f7c8995a2afbcbcafa296897c6f636d7a8692938f8b86817d797372797f858d939aa0a8afaca9abb0b8c1b7afa9a7abacb2babfc0c3b6aa9d9083776d675e574f473e362d251c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b161f2c3845515c6773808c99a6b3bfccc7baaea2988e8174695f534b5865727e8b989a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9ea5afbac6c3b6a99c908376695d5043362a1d100000000714202d3a4753606d797e7f8183848688898b8d8f91939997999b9e9fa4acb6b9b8b5b3b2acaaa8a8abadb3bbc5cfc4b7aa9d91847c756f6a66615e5753514a5252525252525252525252504e49433a31261c100500000000000000000915222f3b4854606b6f7d82898f949da0a7adb3bbc1cbc6b9ac9f93877e7474747474747474747474798693a0adb5b5b5aea194887b7474747474747474747474747474747474747474747474726d62564a433d342d241b110800000000000000030d151d24292c2d34343643505c6976838f9ca9b6c2c4b7aa9d9184776a5e51454f59606d7984919ea7b1bcc8c3b8ac9f92867a6d6054474241403f3f4653606d7986929facb8c5c9beb3a995887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222c353f45525d686f7c87929fa7b1bcc8c5bbafa3998f82756b6066707d89949eabb5c0c7bdb1a79f93877d70685e544a3f362c2319100600000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a878d80736f7c8995a2afbcbcafa296897c6f6773808c989f9c98928e8a84807b76727a818891969fa3abb5b7bbc2baafa59e9b9ea1a8afbabfc6b8ab9f958e81796e69605950483f372d251c110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b37424d57626f7c8895a2afbbc8c5b8ac9f92867b6e61574d4b5865727e8b98a5a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a8aaafb7c1cbc3b6aa9d9083776a5d5044372a1d1100000006131f2c3845515c676d7173747677797b7d7e80828486888a8c8f91939aa4afbbb7afaaa8a9abadb3b3b6b8babfc2c5b8aca0959183807b77736e6964605c54524d47434646464646464643423e3831281f150a00000000000000000007131f2c38434f59606b6f767c828990959ea1a9afbbbfc6bbafa49993877e716a676767676767676d7a8693a0a8a8a8a8a8a194887b7373737373737373706b6767676767676767686868686765615e57544e463f362d231a0d040000000000010b151f272f35383a41414143505c6976838f9ca9b6c2c4b7aa9d9184776a5e514445515d67717e8a95a0abb8c4c7baaea3988b7e7165554b403533323844515c667683909da9b6c3cfbcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232935414c56606a727f8c95a0acb8c1cbc0b5ab9e93897c6f636c7883909da6b0bdc7c0b5aba0958c80736b60564c42382e241b1107000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d5765727f8b92877c6f7c8995a2afbcbcafa296897c6f6d7a85929faaaaa39f9b97918d88827d79747d848d9299a3afbbc7bdb2a89e938e91969ea5aeb4bcbcb1a79d938e837b6f6b615a51493f372d23180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222d3a46535f6974818e9aa7b4c1cdc5b8ac9f92857a6d6053474b5865727e8b98a5b1b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b4b6babcbcbcbcb7aa9d9184776a5e5144372b1e1100000004101c2934404b555c6064666869666d717072737577797b7d80828488939facb9afa59e9b9c9ea1a9a6a9acaeb4b5b8b9b1a7a095918c88847f7b75706d66615e57544e48443e393339393635322d261f160d03000000000000000000030f1b27323d474f5960636a6f767d838b92979ea5aeb5bdc0b5aba49992867c6f685d5a5a5a5a606d7a86939b9b9b9b9b9b9b9a8d807f7f7f7f7f7f7f7f7d7063676d6f707173747475757473716e6962605850483f352c1f160c010000000007121d2731394045474e4e4e4e505c6976838f9ca9b6c2c4b7aa9d9184776a5e5144404b55616c7783909da8b2bdc9bfb4aa9c8f8275675d5145392c2834404a546874818e9ba7b4c1cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111924303a444e58606d7883919da5afbcc5c7bdafa59c8f82766a717e8a95a0acb8c1c7bbafa3999083786d60594f443a30261c12090000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f69778390999083787c8995a2afbcbcafa296897c6f727f8c97a2acb2aeaca9a19e99948f8a847f7a798087929facb9c5b9ada1968e81848e939fa3aab2bab9afa59d9590857d716c635b51493f352a1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e58616e7b87929facb9c5d2c7baaea2988a7d7164554b4b5865727e8b98a5b1bec0c0beb9b8afafafafafafafafafafafafafafafafafafafafafafafafafafafafab9e9184786b5e5145382b1e12000000000c18232f39434b515358595b5f6a717e7c77736e696d6f71747a7f85919eabb8aa9e938e8f929797999c9fa3aaa8abadb3b1a7a09d9995908c86827d79736e69626058554f49443e37322a2926211c150d0400000000000000000000000a16212b353d474f545860626b70787e858e939fa3abb4bcbdb5aba39891847a6d60584e4e53606d7a868e8e8e8e8e8e8e8e8e928d8c8c8c8c8c8c8c8c81746e737a7b7d7e7f8081828281807e7b766f6a625a50473e31281e1308000000000c18242f39434b51535a5a5a5a5a5c6976838f9ca9b6c2c4b7aa9d9184776a5e51443a43505a63707d8a96a0acb9c7c5b9ac9f92867a6d6053473a2d232e3f4c5966727f8c99a5b2bfccbfb2a6998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323d44515c66707d89939eaab3becac1b7aa9f94887c6f7783909da7b1bcc9bdb2a99f92877c6f665c50473d32281e140a000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b88959f958b7f7c8995a2afbcbcafa296897c6f7985919a9ea1a8a9acafadaba69f9c96918c85807c85929fabb8bbb0a69e9184797a818b9298a0a8b0b8b7afa7a09792877e726d635b51463a2e221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323a47535f6a75818e99a3afbbc7d3cabfb4aa9b8e8275675d514b5865727e8b98a5b1bec5bbb3adaba2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29e9285786b5f5245382c1f120000000007121d2731394045474b4f59626e7c878884807b7672767b80858c9197a1adafa89b8e818285878a8d909298989b9ea1a9a8abacaaa7a09d99928f8a85807b756f6a636159554f47433c342a2015100a03000000000000000000000000040f19232b353d43484e545960666c717a818b9299a2aab4bdbdb4aaa1968d80746a5f534c53606d79818282828282828282828692999999999999998e8174738087888a8b8c8d8e8e8f8e8d8b87827c716c62594f433a2f24190d01000004101d2935404b555d606767676767676976838f9ca9b6c2c4b7aa9d9184776a5e5144313e4653606c7884919eacb6c0c7baaea3988a7d7064574a3d2f24313d4a5764707d8a97a3b0bdd0c0b4a79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202834404a54606b75818e98a2aebac6c7bbb0a69a8e81747d8995a0acb9c3c5b9ada1968d80736a60544a3f352b20160c0200000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434e586673808c99a79f92867d8a97a4b0bdbcafa296897c717e888a8d9196999d9fa4acacb0aba8a19e98928d889297a2adbab3a99e938a7e716d757e8691969ea6aebab9b1a9a19992887f726d63574a3e3125180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58626f7c87939fabb5c0cbd7d0c5b8ac9f9286796d60534b5865727e8b98a5b1bebeb3a9a29e9595959595959595959595959595959595959595959595959595959595959285786c5f5245392c1f1200000000010b151f272f34383f4953606b75828f96918c87827f83888d92989ea1a9aba39f9c908479787b7d808386898c8f9297989b9fa2a9a9acaba39f9c97928d86817c76706b646159534e463c32261b0f03000000000000000000000000000007101c28333e4850555758545b60686d757e879298a2abb5c0bcb2a89f92877c6f625758585c666d7575757575757575757784909da6a6a6a6a69b8e817476838f959698999a9b9b9b9b9a98948f877e716c61564c4135291d1104000006131f2c3845515d676d7474747474747476838f9ca9b6c2c4b7aa9d9184776a5e5144373744505b65727f8c9aa4afbbc8bfb4aa9a8d807467554c4135292f3c4855626f7b8895aab4bfcac2b5a89b8f8275685c4f4235291c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18232e39424f59616e7a85929faab4bfcac2b9ac9f92867a828f9ca7b1bcc8bcb1a79e9184796d60584e42382e23190e04000000000000000000000000000000000000000000000000000000000000000000000000000915222e3b4854606a7784919eaaa2989184919eaab7c4bcafa296897c6f717a7d8184888c90939a9da0a7acaeadaaa29f9a959fa2a9b3b6aca1978f82756c606c717c848f949ca4aeb4bbb3aba39a938c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1a242e3b4754606a75828f99a4afbdc7d1dcd3c6baaea2988a7d7164544a5865727e8b98a5b1beb9ada297928989898989898989898989898989898989898989898989898989898989898986796c5f5346392c20130000000000030d151d232b3744505b65707d89949e9d9a938f8c90949a9fa2a9a29f9b99928f8a857c706e707376797c7f8285888b8f9297999c9fa3abaca9a19e99928e89837d77706c625f584e43372b1f120705020000000000000000000000000814202d3944505a61646565656565656d717d869299a3afbbc4bbafa3998f82756965656565656568686868686868686a7784909daab2b2b2a79b8e81747885929ea3a4a6a7a7a8a8a7a6a69f99928a7d70685d5245392c20130800000714202d3a4753606d79818181818181818185919eabb8c4c4b7aa9d9184776a5e514437333f4953616e7b87939facb9c6c3b6aa9d908377675d5145392c2d3a4754606d7a8798a2aebac6c3b6a99d9083766a5d50432e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303d46525e6873808d98a2aebac6c7baaea3988f828f949fabb9c3c4b8aca0958b7e71675d51463c30261c11070000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54626f7c8996a0acaaa0969196a0acb9c5bcafa296897c6f686d7174787b7f83878c91959b9fa3abafaeaca6a2abadb3bbafa49a92857a6e615a626a6f7a828c929fa3aab3b5aba29892857c6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2c38444f59626f7c88939eabb5c0cfd9e3d6cabfb4aa9b8e8275665c515865727e8b98a5b1beb8ab9e92857c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c6f6256493c2f23160900000000000004101d2935404b55606c7883909da6aca49f9c989c9fa6acada297928e8b86827e79706b6b6b6b666d6f7275797c7f8285898c909299a3aeb3adaba39f9b94908a837d776f6a5f53473b2e211514120e0903000000000000000000000a1623303c4955616c707272727272727272727d87929facb9c5c0b5ab9f93877b72727272727272727272727272726d6a7784909daab7bfb4a79b8e81747b8797a1adb1b2b3b4b5b5b4b3b0aba39e92857a6d6054473a2f24190d01000714212d3a4754606d7a878d8d8d8d8d8d8d9197a1adb9c6c4b7aa9d9184776a5e5144372d3846525e687683909da9b6c3c5b9ac9f92867a6d6054473a2d2c3945525d687985929facb8c5c4b7aa9e9184776b544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a36414c56616d7a86929fabb4bfcbbfb4aa9e948f949ea6b0bbc8bcb1a79d9083786c60554b40342b1e150a000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6674818d9aa8b2b2a8a09ea0a8b2bdc9bcafa296897c6f636164676a6e72767b7f84898e92999fa3abb5b3afb8babeb4aa9f93887d70685e59585f686d77808a9298a1a9aca39992867d6f6a5f53473b31251a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630384854606b76828f9ca5afbdc7d2dddedbd0c5b8ac9f9285796d60535865727e8b98a5b1beb8ab9e9185786f6f6f6f6f6f6f6f76777879797a7a7a7a797876736f6f6f6f6f6f6f6f6f6f6a6054473b2e22150800000000000006131f2c3845515d67717e8b95a0acb3afaca9a5a9abb0b8ab9f9285817e7a7878787878787878787878787878787878797c7f8286929facb9b9b5afaca69f9c95908a837c6f6255483c2f2722211e1a140d060000000000000000000a1724313d4a5764707e7f7f7f7f7f7f7f7f7f7f83909da9b6c3c7bbafa4998f817f7f7f7f7f7f7f7f7f7f7f7f7f7f726a7784909daab7c1b4a79b8e81747d8a96a9b3b5b4b6b8babfc1c0bdb5ada2978c7f7265554c4135291d1104000714212d3a4754606d7a87939a9a9a9a9a9a9ea1a9b2bec9c4b7aa9d9184776a5e5144372a36414d5666727f8c99aab4bec7bbafa399897c706356493d302935414c566a7784919daab7c4c5b8ab9f928578665c5144382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1925303b46525e6874808d99a3aebac7c6bcb0a69e9c9ea6b0b8c2c4b8ab9f95897d70665b5043392f22190c0300000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929eabb8bab2acaaacb2bac4cebcafa296897c6f63565a61646566696e72777c81868d9299a3abb5c0c5c6baaea2988c80736b656565656565656c737e869297a1a49a92877d706b615e574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3842505a63707d89949fabb7c1d0d1d0d1d4d3c6baaea298897c6f63565865727e8b98a5b1beb8ab9e9185786b62626262626c78828485868687878787868583807b746d6662626262626260584e43372b1f13060000000000000714202d3a4753606d7984919b9fa2a9abaeb3b2b6b7bbb8ab9e918584848484848484848484848484848484848484848484848485929eabb8c5c0bbb9b0aba79f9d958b7e7265584b3f32342e2d2a261f170f060000000000000003101d293643505c6976828b8b8b8b8b8b8b8b8b8b90959fabb8c4ccc0b5ab9e938f8b8b8b8b8b8b8b8b8b8b8b8b8b86796c7784909daab7c1b4a79b8e81747f8c99a6a9a8a8a9acaeb4bcc4c6beb3a99d908377675d5145392c201306000714212d3a4754606d7a8793a0a7a7a7a7a7abadb2bbc4cfc4b7aa9d9184776a5e51443725303c4956626f7c8998a2aebac6c0b5ab988b7f7265584c3f32242f43505c6976838f9ca9b6c2c6baada29786796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2a36414c56616e7b86929facb9c4cfc1b8b0aaa8aab0b8c1c8bcb1a79d9083776b61544a3f31281d10070000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a97a1adb9c4bdb9b7b9bdc4ccc9bcafa296897c6f6356616c7172727272727272757b80879299a3afbbc7c5b8ac9f92857a7272727272727272727272727c85929e9f93877e7272726e695e53463a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616c7683909da6b0bbc9c8c4c3c4c8cdcabfb4aa998c807366555865727e8b98a5b1beb8ab9e9185786b5e565656626f7c88909192999394949498928f8c8680786d665c56565656544e463d32271b0f030000000000050e1724303d4a5763707d868a8e92979b9fa2aaacaeb5b8b9ada197919191919191919191919191919191919191919191919191919297a1adb9c6cbc7c2bcb7b1aba7988b7e7265584b3f3e403b3a36312921170d0300000000000003101d293643505c6976838f9898989898989898989d9fa7b1bcc8d2c7bdb0a69e9b9898989898989898989898989386796c7784909daab7c1b4a79b8e8175828f9b9d9c9b9b9c9fa3aab2bac4c5b9ac9f93867a6d6054473a2d211407000714212d3a4754606d7a8793a0adb4b4b4b4b8b9bec4cdd0c4b7aa9d9184776a5e5144372b2d3a4653606d7985929fabb8c5c1b4a79a8e8174675b4e41302535424e5b6875818e9ba8b4c1cabeb3a994877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303a46525e6974818e9ba8b2bdc9cac1bbb7b5b7bbc1cac5b8aca0958a7d7064594f42382d1f160c000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba5afbcc5c9c5c4c5c9ced5c9bcafa296897c6f635764717e7f7f7f7f7f7f7f7f7f7f8186929facb9c5c6baaea2988f827f7f7f7f7f7f7f7f7f7f7f7f7f818d9a9d90837f7f7f7f7b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202b3844505c66707d8a959fabb8c2c3bcb8b6b8bcc3cbc3b6a99c908376675d5865727e8b98a5b1beb8ab9e9185786b5e524b5865727e8b989e9fa3a0a0a1aaa29f9c99928d82786d60574d494947433d342b20160a0000000000020d17202d363f4855616b70797d81858a8e92989b9fa3abacb1b3a9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea1a9b3bebbbbbbbbbbbbbcb1a5988b7e7265584b494b4d4846423b33291f140900000000000003101d293643505c6976838f9ca5a5a5a5a5a5a5a5a9abb1b9c2cacfd0c1b8b0aaa8a5a5a5a5a5a5a5a5a5a5a59f9386796c7784909daab7c1b4a79b8e8177849192918f8e8e8f9298a1a8b2bdc7bbafa499897c6f6256493c2f231609000714212d3a4754606d7a8793a0adbac0c0c0c4c6c9cfcfcfc4b7aa9d9184776a5e5144372b2b3844505c6676838f9ca9b6c2c3b6aa9d9083776a564c41362a34414d5a6774808d9aa7b3c0d0bbaea295887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36424d5763707d8996a1adb9c5d2ccc7c3c2c3c7cccabfb4aa9d9184786c6053463d2f261c0d04000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a939eaab3becad2d1d2d5d9d5c9bcafa296897c6f635c6976838c8c8c8c8c8c8c8c8c8c8e9299a3afbbc7cabfb4aa9f948f8c8c8c8c8c8c8c8c8c8c8c8c8c8d929da095908c8c8c897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2935404b55606d7884919da7b1bcc3b9b1acaaacb1b9c3c5b9ac9f92867a6d605865727e8b98a5b1beb8ab9e9185786b5e524c566874818e9ba7acaeb4adadb3aeababa39f948d8073695e53463c3b37322b22190f04000000000009141f29333f4850565961676d7074797d81858a8f92999da0a7acaeadababababababababababababababababababababababababababadb3aeaeaeaeaeaeaeaeaeaea5988b7e7265585356585a55534d453b31261a0e02000000000003101d293643505c6976838f9ca9b2b2b2b2b2b2b2b3b3b3b8b9bec5cdcac1bbb6b5b2b2b2b2b2b2b2b2b2b2ac9f9386796c7784909daab7c1b4a79b8e81798888868482828183869196a1acb9c5c0b5ab96897d7063564a3d3023170a000714212d3a4754606d7a8793a0adbac2c2c2c2c2c2c2c2c2c2b7aa9d9184776a5e5144372b28343f4a546773808d9aa6b3c0c5b8ab9f928578685e5246392d33404d596673808c99a6b3bfc9bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b4653606c7884919eabb8c4ced7d3d0cfd0d3d3c6baaea2988b7e72655b5044372c1d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303c4955616c75828f98a2aebac3ced9dee1e5d5c9bcafa296897c6f635c6976838f9898989898989898989a9fa3abb5c0cbd0c6bcb0a69f9c989898989898989898989898989a9da4a7a09d989896897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303945515d67717e8b95a0acb9c2bbb1a7a09da0a7b1bcc7bbaea3998a7d70635865727e8b98a5b1beb8ab9e9185786b5e52525e687784919eaab0b0b1b5b7bbbab8b5afa69f92877b6e6154483c312b27201910070000000000020e1a25303b45505a626564616064666d7074797d82868b90959b9fa3aaadb3b7b7b7b7b7b7b7b7b3adaba4a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1988b7e72655d60626467615f574d42362a1e1205000000000003101d293643505c6976838f9ca6a6a6a6a6a6a6a6a6a6a6abadb3bbc5cfcbc0b7afa9a7a6a6a6a6a6a6a6a6a69f9386796c7784909daab7c1b4a79b8e817a7e7b7977767575767b84919eabb7c4bdb0a4978a7d7164574a3e3124170b000714212d3a4754606d7a8793a0adb6b6b6b6b6b6b6b6b6b6b6b6aa9d9184776a5e5144372b232e3e4b5764717e8a97a4b1bdc6baaea298877a6d6154473a2e323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b3844505b6673808d9aa8b2bdc9d5dfdcdbdcdfd2c5b8ac9f92857a6d6053493f33271a0b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3945505a616e7b85929fa8b2bdc8d4dee9e2d5c9bcafa296897c6f635c6976838f9ca5a5a5a5a5a5a5a5a7acafb5bdbfbfc0c1c2b8b0aba9a5a5a5a5a5a5a5a5a5a5a5a5a5a7a9aeb1acaaa5a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c56606d7984919ea8b1bdbeb3a9a0959095a0acb8c3bfb5ab9a8d8073675465727e8b98a5b1beb8ab9e9185786b5e5254616d7a8796a0a3a3a3a4a9abb0b8c2c0bbafa3998d807467584e43372b1f160f0700000000000005111e2a36424d57626c71716e6c65676463676d70757a7f83898e92989ea1a9acb2b9bdc4c4beb3a9a29f9895959595959595959595959595959595959595959595959595958b7e7269676d6f71736e695f53463a2d21150a000000000003101d293643505c6976838f9999999999999999999999999ea1a9b3becac6baafa59d9b999999999999999999999386796c7784909daab7c1b4a79b8e8174716e6c6669686869717e8b98a4b1bebeb3a996897d7063564a3d3023170a000714212d3a4754606d7a8793a0a9a9a9a9a9a9a9a9a9a9a9a9a9a99d9184776a5e5144373030303c4955626f7c8895a9b2bec9beb4aa96897c6f6356493c30313e4b5864717e8b97a4b1becabeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54626f7c8896a0acb9c5d2dee9e8e1d5c9bdb2a89a8d8174675d5141382d22170800000000000000000000000000000000000000000000000000000000000000000000000000000000000004111c28333e46525e69727f8b96a0acb8c2ccd8e3e2d5c9bcafa296897c6f635c6976838f9ca9b2b2b2b2b2b2b2b3b3b3b3b3b3b3b3b5b9c0bbb7b6b2b2b2b2b2b2b2b2b2b2b2b2b2b4b5babcb8b6b0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232d3946525e68737f8c97a1adbac3b9ada1979083909da7b1bcc3b6a99d908376665c65727e8b98a5b1beb8ab9e9185786b5e525763707d8a9697979696979c9fa6b0b8c2c0b5ab9e9184786a5f53473a2e211508000000000000000714202d3a46525e69717e7d7b797674716f6d6667686d72777c81868c92979ea1a8adb2babfbaada297928b88888888888888888888888888888888888888888888888888888a7e7375787a7c7e807b6e6155483c31261b0f030000000003101d293643505c6976838c8c8c8c8c8c8c8c8c8c8c8c8c9297a1adb9c6c2b6a99d938e8c8c8c8c8c8c8c8c8c8c8c86796c7784909daab7c1b4a79b8e81746862605b545b57626f7c8895a2afbbb9ada197877b6e6154483b2e211508000714212d3a4754606d7a87939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9184776a5e51443d3d3d3d3d4753606d7a8697a1adb9c6beb1a4978b7e7164584b3e3d3d3d4a5764707d8a97a3b0bdcabfb2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3847535f6a7784919eaab7c4d1ddeaebded2c5b9aca196897c6f62554b412f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222a36424d57606d7884919da6b0bbc7d3dee2d5c9bcafa296897c6f635c6976838f9ca9b6bfbcb3adaba6a6a6a6a6a6a6a6a7a9aeb6c0c4c2b9b1aba9a6a6a6a6a6a6a6a6a6a8aaafb8c1bcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17212b37434e58616e7a86929fa9b2bebdb2a89e92857b8895a0acb8c5b8ac9f9285796d6065727e8b98a5b1beb8ab9e9185786b5e525a6673808d8b8a8a89898b8f949fa6b0bbc7b9ada196887b6f6255483c2f221509000000000000030f1c28333f4a54616e7b878a888583807e7c797674716e696a6f757a7f858b91969ea1a8aeb4b8ab9f92857e7c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c7d7e80828486898b8c7f7366584e43372b1f120600000000000b1825313e4b5864717e8080808080808080808080808085929eabb8c5c1b4a79b8e81808080808080808080808080736a7784909daab7c1b4a79b8e8174685b53504a505a626f7c8995a2afc0b5ab9e918578695e53463a2d211407000714212d3a4754606d7a878f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f84776a5e51484a4a4a4a4a4a515d677885919eabb8c4bfb2a6998c7f7366594c4a4a4a4a4a5663707d8996a3b0bcc9c0b3a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2b37434e586774818e9aa7b4c1ced9e5eaded1c4b7ab9e9184786a6054433a2f1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1a25303b44505c66707d8a949fabb7c1ccd7e3d5c9bcafa296897c6f635c6976838f9ca9b6beb3a9a29f99999999999999999a9da4aebbc5bcb1a79f9d9999999999999999999b9ea5afbbbcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333a47535f6a74818e98a2aebbc4b8aca0968b7f7784919daab7c4baaea298887b6f6265727e8b98a5b1beb8ab9e9185786b5e525966727f807f7e7d7d7d7e828f949fabb7c7bdb2a8988b7e7165584b3e3225180b00000000000006121f2b3844505b66737f8c999892908d8b888683807e7b787573706d73797e848b91969fa2aab0ada297928780786f6e6e6e6e6e6e6e6e6e6e6e6e6e6f7174777a7c7e8183868a8b8d8f91939a979084776a5f53473a2e21150a00000000000a1724303d4956626c717373737373737373737373737784909daab7c3bdb0a3968a7d7373737373737373737373736d6a7784909daab7c1b4a79b8e8174685b4e4b515a626c74818e9aa7b4bbafa4998d807467574d42362a1e1205000714202d3a4753606d79828383838383838383838383838383838383838174685b53555656565656565655697683909ca9b6c3c0b4a79a8d8174675a56565656565656636f7c8996a2afbcc9c0b4a79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26313e4b5764717e8a97a7b1bcc8d4e0e1d5c9beb3a9998d807366584e4331281d0b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f28343f4a54616b76828f9ca6b0bbc7d3ded5c9bcafa296897c6f63666976838f9ca9b6baada297928c8c8c8c8c8c8c8c8d929da9b3beb8ab9f95908c8c8c8c8c8c8c8c8c8f939eaab6bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59626f7c87929faab4bfbeb0a69e91847974818d9aa7b4c0bfb4aa988b7e716565727e8b98a5b1beb8ab9e9185786b5e4f59636d74807f747070707177828f9cacb6c0c0b3a69a8d8073675a4d4034271a0d0100000000000613202d394653606c7884919ea29f9c9a979892908d8b8885827f7d7a777372797e848c92989ea6a8a09d99938d837b6f626262626266676d707376797b7e818486898b8e90929898999c9e9fa4a095887c6f6255483d32271b0f00000000000815212d3945505a62646666686b6b6b6b6b6b6b6b6b7683909da9b6c3beb1a4978b7e716b6b6b6b6b6b6b6b6b6666636a7784909daab7c1b4a79b8e8174685b4f555d606c717e8a939da9b5b2a89f93877b6e6255483b31251a0e02000613202c3945515d676d76767676767676767676767676767676767676746f65585f6263636363636363636875828e9ba8b5c1c2b5a89b8f8275686363636363636363636f7c8895a2afbbc8c1b5a89b8e8275685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a14212e3b4754616e7a8795a0acb8c5d1dedfd2c6b9ada197887c6f6255493d3222160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17232e38424f59626f7c88949eaab7c1ccd7d5c9bcafa296897c6f6d736f76838f9ca9b6b8ab9f92858080808080808080808d97a1adb9b6a99d9083808080808080808080818f9ba8b5bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16232f3c4855616b76828f99a3afbcc0b6ac9f948a7d70717d8a97a8b1bdc0b4a79a8d81746765727e8b98a5b1beb8ab9e9185786b5e57606b717e8b8c80786d6765707d8a9aa4afbbc2b5a89c8f8275695c4f4236291c07000000000005121e2a36424d5763707d8a96a1adaca9a7aaa39f9d9a9797928f8c898683807d7a77797f868f949f9a95918c87827e796d6164666c6f7376797c7f8285888b8e909299989a9d9fa3aaa6a8abacafa7998d807366584e43372b1c11060000000005111d29343e48505658656f7578787878787878787878828f9ca9b6c2beb2a5988b7f78787878787878787878726d626a7784909daab7c1b4a79b8e8174685b5961676d747e87929fa5afb1a8a0968e81746a5f53473a2e1f1409000004111d2935404b555d606969696969696969696969696969696969696968655d5f6a6e70707070707070707073808d9aa6b3c0c3b6aa9d90837770707070707070707070707b8895a1aebbc8c2b5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687784919daab7c4d0ddded1c4b8ab9e9185786c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303e4754606a75828f9ca6b0bbc7d3d5c9bcafa296897c6f737f7c76838f9ca9b6b7ab9e918478737373737373737785929eabb8b5a89c8f827573737373737373737e8b97a4b1bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a949faaafb8bbafa49a9083766c6e7a8795a0acb8c3b6a99d9083766665727e8b98a5b1beb8ab9e9185786b565f69707d8792928d82796e696d7a86939facb9c3b6aa9d9083776a5d50442f24180d01000000000714202d3a46525e6975828f9ca8afb6b3b3b4aeaca9a7a9a29e9c999992908d8a8683807d7b828f928d89847f7b76716d686d7175797c7f8386898c8f9298989a9d9fa3aba7aaacaeb4b3b5b7b9b7aa9e9184776a605447382d22170b00000000000c17222d363e454e5b6875818585858585858585858587929facb9c5c5b8ac9f9286858585858585858585857f72656a7784909daab7c1b4a79b8e8174685f626b7079818b9299a3afafa7a0969184796d60574e42372b1e0d030000010d18242f3a434b51535c5c5c5c5c5c5c5c5c5c555d6067615e565c5c5b5955626e7c7d7d7d7d7d7d7d7d7d7d818e9aa7b4c1c5b8ab9e92857d7d7d7d7d7d7d7d7d7d7d7d7e8a97a4b1bdcac3b6a99d9083766a5d5043372a1d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566774818e9aa7b4c1cddadacec1b4a79b8e8174655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2b37434e58626f7c88949eaab7c2cdd8c9bcafa296897c6f7b87878082909ca9b6b7ab9e9184786b69696969696575828e9ba8b5b7ab9e91847868696969696969717e8b97a4b1bcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d6976838d92989ea5abb1aa9f93877c6f62687784919daab7c4b9ac9f9286796d65727e8b98a5b1beb8ab9e9185786b5e686e7b8592999d948f837b6f6a7885919eabb8c4b7ab9e9184786b554b4135291d1104000000000815212e3b4854616e7b87929e9fa4aca6a8abadb2b2b3b3adaba8aba39f9d9a9993908d8985828386817c77726e696e72767a7e8185898c8f9299999c9fa2aaa7aaacafb5b4b6b9b8b6b4b2b5afacaba096897c6f62544a3f33281c0f030000000006111b242d34434f5c6976828f9191919191919191919299a3aebac7c6baaea298929191919191919191918c7f72666a7784909daab7c1b4a79b8e8174686a6e757d848d929fa3abada59e9590847b6e675d51453c31261a0e0000000007131d28313a404547505050505050505050515d676d746d685f584f4e4e5b687481898989898989898989898e939da9b5c2c6b9ada197928989898989898989898989898a909aa6b2bfd0c4b7aa9d9184776a5e51442d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303f4c5865727f8b98a5b2becfdad5c9bdb2a8978a7e716453493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1b27323c4754606a75828f9ca7b1bcc7d4c9bcafa296897c74808d928c90949fabb7b7ab9e91847876767676767676767f8c99a5b2b9ada196877a76767676767676767e8b97a4b1bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7980868e939d9fa7a2988e81756a606774818e9aa7b4c1baaea398887b6e65727e8b98a5b1beb8ab9e9185786b676d7a849197a2a69f9590857c6f7783909daab6c3b9ac9f928679675d5145392c201306000000000d1a2633404d596673808c8f91939a97999c9ea1a8a5a7aaacafb5b5afacaaaba49f9d9998928f909184807c7875767b7f83868a8e9297999c9fa3aba9abaeb4b4b7b9b7b4b2b3adaba9a7a5aba49f9e9c9a8d8073665b5044382b1f1206000000000009121b2936434f5c6976828f9c9e9e9e9e9e9e9e9e9fa3abb4bfcbcabfb4aaa29f9e9e9e9e9e9e9e9e998c7f72666a7784909daab7c1b4a79b8e81746d737c828991969da4afa9a19e938e837b6e695e554b41332a20150900000000010c161f282f35393a4343434343434346505a606d79817a6e6a6159514e5b6874818e9696969696969696969a9da5afbac5c9beb3a9a19e969696969696969696969696979aa2acb7c2d1c4b8ab9e9185786b5e4a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081723303d4a5663707d8996a9b3bec9d5d2c5b9aca096877a6d6154473a2d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e58636f7c89959fabb8c4cec9bcafa296897c7a86929f999c9fa6b0bcb8ac9f928682828282828282828283909daab7bdb2a89c9083828282828282828283909daab7bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d737b818990959e9f92867b6e615865727e8b98acb6c0bfb4aa968a7d7065727e8b98a5b1beb8ab9e918578676d79839096a0a9b0a7a09690837975828f9ba8b5c2baaea398877a6d6054473a2d211407000000000b1724313e4a5764717e80828486888a8d8f919696989b9d9fa3aba8abacb2b5afacaaaaa29f9c9d96918d89858183878b9092999b9fa2a9a9acaeb4b5b8b7b4b5aeacaaa7a5a9a29e9c9a9896999391908e8c84796c605346392d201306000000000000101c2936434f5c6976828f9ca9abababababababacaeb4bdc6d1d0c5bcb4aeacabababababababa5998c7f72666a7784909daab7c1b4a79b8e8174737f878f949ea0a8aeada197928a81796e695e574d433a2f21180e030000000000040d161d24292c2d363636362f3a434e58626c74818e847c706b625b515b6874818e9ba3a3a3a3a3a3a3a3a7a9afb7c0cbcfc5bbb3adaba3a3a3a3a3a3a3a3a3a3a3a3a4a6acb4bec8d2c5b8ac9f928579665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8797a1adb9c6d2d1c4b7aa9e918477685e5246392d1b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323c4854606b7683909da8b2bdc9c9bcafa296897d808c98a2a6a9abb0b8c2baaea398928f8f8f8f8f8f8f8f8f9095a0acb8c4b7ab9f94908f8f8f8f8f8f8f8f9095a0acb8bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b555d60696e757c838a91968c8073695e56636f7c899aa4afbbbeb2a5988b7f7265727e8b98a5b1beb8ab9e9185786d79828f959fa8b2aaa29791847b6e74808d9aa7b3c0bfb4aa94887b6e6155483b2e221508000000000a1723303c4955616c717476787a7c7e80828487898b8e909299989b9ea1a8a7aaacb1b4aeaca8a8a09d9a97928e90939a9c9fa3ababadb3b6b9b8b6afacaaa7aba39f9d9b98969792908e8c8a88868483817f7e796d6053473a2d201407000000000003101c2936434f5c6976828f9ca9abababababababacaeb5bdc6d1d0c6bcb4aeacabababababababa5998c7f72666a7784909daab7c1b4a79b8e81746e7b859298a2abb2b8ab9e92857e746d675e574d453b31281d0f0600000000000000040c13181d20202929222d38414c565f6a717e8b9391867d726d605c546874818e9ba7b0b0b0b0b0b0b0b4b5bac0c9d2d6cdc5beb9b8b0b0b0b0b0b0b0b0b0b0b0b0b1b2b7bec6d0d2c6b9ac9f9386796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687885929eabb8c5d1cec1b4a89b8e817568564c41362a1e0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c38434f5964717d8a96a0acb9c6d1bdb0a3968a7d85929faab4b6b7bcc2cbbfb4aaa39f9c9c9c9c9c9c9c9c9c9da0a7b1bcc7bcb0a69f9c9c9c9c9c9c9c9c9c9da0a7b1bcbcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a434b51575e616a6f787e848c84796d605754606d7a86939facb9c0b4a79a8d817467727e8b98a5b1beb8ab9e91857878828f949fa7b1aba39892857c6f69727f8c98a5b2bfbcafa295897c6f6256493c2f231609000000000814212d3945505a61646769676d6f717375787a7c7f818486898c8e9196979a9da0a7afb6b8b5b2acaaa9a19e9b9d9fa4acacafb5b8babcb3adabaca49f9d9a989992908e8b89878583817f7d7b7978767473716d675d5145382c1f1306000000000003101c2936434f5c6976828f9c9e9e9e9e9e9e9e9e9fa3abb5bfcbcabfb4aaa29f9e9e9e9e9e9e9e9e998c7f72666a7784909daab7c1b4a79b8e8174696f7c869299a4afb5a89c8f82796d655d554d453b33291f160c00000000000000000001070d111314172127333f49535d686f7c86929f9892877f746d665e6874818e9ba7b4bcbcbcbcbcbcc1c2c5cbd2dbdfd6cfc9c6c5bcbcbcbcbcbcbcbcbcbcbcbcbdbfc2c8d0d6d4c8bbafa49a877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566976838f9ca9b6c2cfcbbeb2a5988b7f7265584c3f3025190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323d4653606d7884919eaab4bfcbc2b5a89c8f828f97a2adbcc3c4c7cdd0c6bcb4aeaca9a9a9a9a9a9a9a9a9aaacb1b9bcbcc2b9b0aba9a9a9a9a9a9a9a9a9aaacb1b9bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313d474f54565860656c71797f7e71675d5b5b5d677784919eaab7c2b5a99c8f827669727e8b98a5b1beb8ab9e9185787c869197a0a7aba39992867d6f6a64717e8b97a4b1bebdb0a3968a7d7063574a3d3024170a0000000005111c28333e485055575a555d60626a6769686d707274777a7c7f8284878a8d91959fa4acb6c0bdb8b7b3adaba8a9acafb6b9bbc0c5beb3a9a29f999a93918e8b888683817f7c7a78767472706e6d6669686664605d554b4035291d1004000000000003101c2936434f5c6976828f9292929292929292929299a3aebbc7c6baaea298929292929292929292928c7f72666a7784909daab7c1b4a79b8e8174686a707e87939fa4aeaa9e948e81776c605c52493f372d241a0e050000000000000000000001040b151f29333b44505b656d7a849198a2a299938c81786d686874818e9ba7b4c1c9c9c9c9c9c9d0d1d4d9dfe7e1dad5d2d1c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ccc0b6a194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e192530424e5b6875818e9ba8b4c1cec9beb3a996897c6f6356493c3023160800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161f2b3844505c66727f8c98a3aebac7c3b7aa9e948f949ea9b3beccd0d3d8d8cec6bfbab8b5b5b0afafafafafafafafafafafafb7b8bcb7b6b5b5b5b5b5b5b5b1afafafafafafafa396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f59606368686868676d73716c68686868686875828f9ba8b5c2b7ab9e91847867727e8b98a5b1beb8ab9e9185786f7c8590959ea49992877d706b6063707d8a96a3b0bdbeb1a4978b7e7164584b3e3125180b00000000000c17222c363e45494a4d525e686d7774716d68666568676d6f7275787b7e81848d939aa4afbbc8c5c4beb9b8b4b6b9bbc0c5c7cbc6baada297928c8a8684817e7c79777472706d6869676a6f6f6a60545b595853514b43392f24180c0000000000000a15202a34424f5b6875818585858585858585858587929facb9c5c5b8ac9f9286858585858585858585857f72656a7784909daab7c1b4a79b8e817468616c727f8b929ca5afa69e938d80746e635b51493f362c20160c020000000000000000000007121d27313b454f59606c77818f96a0aaaba49f938e827a6f6a74818e9ba7b4bcbcbcbcbcbcbcc4c5c8ced5dedbd3ccc6c2c1bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081a2734404d5a6773808d9aa6b3c0cdc6b9ada197877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616d7a86929facb9c3c7bbb0a69e9c9ea6adb2bac2cad6dbe0d8cec4bab2acaba3a2a2a2a2a2a2a2a2a2a2a2a3aaacb1b9c2c2c2c2bcb4aeaca4a2a2a2a2a2a2a2a296897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4854606b70757575757575757575757575757575757f8c99a6b2bfb9ac9f93867a6d727e8b98a5b1beb8ab9e9185786a6f7b838e939f93877e716b6666666f7c8995a2afbcbfb2a5988c7f7265594c3f3226190c000000000005101a242c33393c3e4754616d7a83817d7a76736f6a6763636568696e71747a8086939facb9c6c6c3bcb8b7b2afb3b8b9bec4c7c5b8ab9f9285807d7a7774716f6d6668656364686e72777c7c6f62554b4c4b4745403931271d12070000000000030f1b26323c464e59656f7578787878787878787878828f9ca9b5c2bfb2a6998c7f78787878787878787878726d626a7784909daab7c1b4a79b8e8174685a626d73808d939ea6afa59d928d80736d635b51483e32281e1308000000000000000000071018232f39434d57606b727f8c939ea8b2b5afa59d9490847c6f74818e9ba7afafafafafafafafb7b8bcc3ccd5d3c9c1bab6b5afafafafafafafafafafafafafafafafafafafafaea295887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfcbc4b8ab9e918578685d5246392d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3846525d6875818e9ba8b1bdc8c1b8b0a9a19e9ea1a8b0b8c0cad0d8d5c9bdb2a8a19e969696969696969696969696969da0a7b0b8c1cabfb4aaa29f97969696969696969696897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d8282828282828282828282828282828283909daab6c3bbafa49a877a6d727e8b98a5b1beb8ab9e91857873737379818e958b7e737373737373737b8894a1aebbc0b3a69a8d8073675a4d4034271a0d01000000000008121a22282d36414c5665717e8b8d8a86837f7c7874706c66666d72797f858d939aa4afbbbfbab8b1acaaa5a2a6abadb2b7bbc2baada29790837d766f6b6562606063676d71757a7f84898175675d51453e3a38352f271f150b01000000000006121f2b37434e585f6269696b6b6b6b6b6b6b6b6b76828f9ca9b5c2bfb2a6998c7f736b6b6b6b6b6b6b6b6b6968656a7784909daab7c1b4a79b8e8174685c5b606c77818e949fa7aea49c928c7f726d625a50443a3025190d0100000000000000050e19222934404b555e69707d87939fa5afbac0bbafa69f9691857c74818e9ba3a3a3a3a3a3a3a3a3aaacb1b9c3ceccc1b7afaaa8a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a295897c6f6256493c2f23160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcac2b6a99c8f837669564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2935414c56636f7c8995a0acb8c7c6b9ada1979191969fa6aebabfc6ced2c5b9aca196918989898989898989898989898990959fa6afb7c1baaea298928b898989898989898989897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e90959fabb8c4c0b6a094877a6d727e8b98a5b1beb8ac9f92867f7f7f7f7f7f8491837f7f7f7f7f7f7f7f808d99a6b3c0c0b4a79a8d8174675a4e4134271b0e01000000000000081017202d3946525e6876828f9a9993908c8884807c787472797f858c92979fa4acb6b9b4aeaca7a09d9995999ea1a9abb0b9bbb3a9a095908a837c746d68656c7074797e82868c9192867a6d6053473a2f2c29241d150d030000000000000815212e3b47535f6a6f767676767676767676767676828f9ca9b5c2bfb2a6998c7f7676767676767676767676756f6a7784909daab7c1b4a79b8e817468686868656d78828f95a0acaea49c918b7f726c61564c41362a1d1105000000000000020d17202b343d45515c676e7b859299a4afb7c1cbbfb5aba19790837874818e969696969696969696969da0a7b1bcc8c6baafa59e9b9696969696969696969696969696969696969696969696897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a3afbcc9c2b6a99c8f8376695c50433024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303a4854606b7784919dacb6c0c4b8ab9e9185848f949da4aeb4bcc5cdc4b7ab9e91847d7c7c7c7c7c7c7c7c7c7c7c7c838f949ea5afb9b8ac9f92857e7c7c7c7c7c7c7c7c7c7c7a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b9b9b9b9b9b9b9b9b9b9b9b9b9b9d9fa7b1bcc8baada094877a6d727e8b98a5b1bebaaea298928c8c8c8c8c8c9195918c8c8c8c8c8c8c8c8d929ca8b4c1c1b4a79b8e8174685b4e4135281b0e02000000000000000714212e3a4754616d7a86929fa49f9d9996918d8985817e848b92979ea1a9afb6b2acaaa29f9a95918c888c91979c9fa6acafb6b1a7a09d959087817a7273787c81858a8f92999d988a7e7164554c4135291d18120b03000000000000000915222f3c4855626f7c82838383838383838383838285929eabb8c5c4b7aa9e9184828383838383838383838381756a7784909daab7c1b4a79b8e8175757575757575757a84909daab7ada39f93877e71685e5246392d20130700000000000008141f29323d47515b606d79839097a1abb5c0c9c2bbaea39991857b6e748189898989898989898989899195a0acb8c5c2b6aa9e938e8989898989898989898989898989898989898989898989897d706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aebbc8c3b6a99d9083766a5d5043372a1d08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2c38444f5966727f8c9aa4afbbc6b9ac9f93867c828d929fa2aab3bbc4c5b9aca1969082796f6f6f6f6f6f6f6f6f6f7079828e939ea7b1baaea29891857c6f6f6f6f6f6f6f6f6f6d685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a8a8a8a8a8a8a8a8a8a8a8a8a8aaabb1b9c3cdbaada094877a6d727e8b98a5b1bebfb4aaa29f9999999999999ea09d9999999999999999999ca4aeb9c5c1b4a89b8e8175685b4e4235281b0f0200000000000005111e2a36414c5665727e8b99a3afaca9a8a19e9a97918d8b91969ea1a9adb3b4aea8a09e98928e89847f7c80848a8f949b9fa4acafb1aca79f9a938e857f8084898e92979c9fa3aa9b8f8275675d5145392c2013080100000000000000000a1623303d495663707c898f8f8f8f8f8f8f8f8f8f8f9297a1adb9c6c5b9aca096918f8f8f8f8f8f8f8f8f8f8f84786b7784909daab7c3b7ab9e918482828282828282828283909da9b6bbafa49992867a6d6154473a2e2114070000000000020e1925303b444f59626d74818e959fa9b3bdc7c2b8afa59f92877d6f696e7c7c7c7c7c7c7c7c7c7c7c7d83919daab7c4c1b5a89b8e817d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d7a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbad2c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b27323d4854616e7b87939facb9c6bbafa4998c7f79808a9298a1a9b3bbc4bdb2a89f94908279707070707070707070707078818e959fabb8b4aaa19791857c6f6a636363636363605d564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1b5b5b5b5b5b5b5b5b5b5b5b5b6b8bcc3cbc7baada094877a6d727e8b98a5b1bec5bcb4aeaca6a6a6a6a6a6abacaaa6a6a6a6a6a6a6a6a6a8aeb6c0cac2b5a89b8f8275685c4f4235291c0f020000000000000714202d3946525e6876838f9cabb5b9b6b2adaba9a19e9a989ea0a8adb3b9b4aba39f96918b86817c77726f73797d82888f939a9fa3abb5b1aca49f97928b8c91969a9fa2a9acafac9f92867a6d6054473a2f24190d0100000000000000000a1623303d495663707c89969c9c9c9c9c9c9c9c9c9c9ea1a9b3becac9bdb2a8a09e9c9c9c9c9c9c9c9c9c9c9184786b7784909daab7c3b9ada196918f8f8f8f8f8f8f8f8f90959fabb8c0b5aba399877b6e6154483b2e211508000000000005111e2a36414d56606b727f8b939da7b1bbc5c4bab0a69d938b7f726b606a6e7070707070707070707076838f9ca9b6c2c0b4a79a8d817470707070707070707070707070707070707070707070706d685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8793a0b6c0ccc3b7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202d3a46525e6976838f9caab4bfc0b5ab9d908376747e869297a1a9b2bac4bab0a69f948f817d7d7d7d7d7d7d7d7d7d7d7d7d83909da9b6bcb3a9a19792867c6f62565656565654524c443a2f24190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1bec1c1c1c1c1c1c1c1c1c1c1c3c4c8cdcac7baada094877a6d727e8b98a5b1becec5bfbab8b2b2b2b2b2b2b8b8b7b2b2b2b2b2b2b2b2b3b4b9c0c8c6c2b5a99c8f8276695c4f4336291c10030000000000000814212e3b4754616e7a87939facb5b7b8bdb9b7b3adaba7a5aaacb2b9bebaaea399928b847f7a746f6a6662666d71767c82878e9299a3afbbb6afa9a29f98999ea1a8abadb3b9b9aea3988a7e7164564c4135291d110400000000000000000a1623303d495663707c8996a3a9a9a9a9a9a9a9a9a9abadb3bbc5cfcec4bab2acaaa9a9a9a9a9a9a9a9a99e9184786b7784909daab7c3bdb2a8a19e9b9b9b9b9b9b9b9b9b9d9fa7b1bcc7bdb5ab94877b6e6154483b2e21150800000000000714202d3946525e686f7d87929fa5afb9c3c5bcb2a89f948e81746d62595f626363636363636363636975828f9ca8b5c2c1b4a79b8e81746863636363636363636363636363636363636363636363605d564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a869aa4afbbc8c4b7aa9e9184776b5e5144382b1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5765717e8b98a3aebac7b8ab9f95887b6e717c859197a1a8b2bac2b8b0a69e938f8989898989898989898989898a90959fabb8c4bbb3a9a2988e8175685b4e4949494745413a32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbaada094877a6d727e8b98a5b1b9b9b9b9b9babfbfbfbfbfbfc4c5c4bfbfbfb9b9b9b9b9b9b9b9b9b9b9b9b6a99c908376695d5043362a1d10030000000000000c1925323f4c5865727f8b999fa4abaaacb2b5b9bab9b8b4b1b7b9bdc4c5b9ac9f92867e78726d68626058545c60646a6f757c8187929facb9c0bbb3adaba5a6abacb2b8b9b7b3adaba99c8f8275685d5245392c20130700000000000000000a1623303d495663707c8996a3afb5b5b5b5b5b5b5b5b8b9bec5cdd6d5ccc3bdb8b7b5b5b5b5b5b5b5b5ab9e9184786b7784909daab7c3c4bab2adaba8a8a8a8a8a8a8a8a8a9abb1b9c2d0baaea194877b6e6154483b2e21150800000000000814212e3b4754616e7a859199a3aeb7c1c7bdb4aaa1969082786d605b51535556565656565656565b6875828e9ba8b5c1c1b5a89b8e8275685b56565656565656565656565656565656565656565654524c443a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7986939facb9c6c4b8ab9e9185786b5e5245382b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b4754606d7a86929facb8c5bcb1a7998c7f736a6f7c859196a0a8b2bac2b8afa59e9b969696969696969696969696969d9fa7b1bcc8c4bbb3aa9b8e8175685b4e423c3c3a39352f2820160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ada094877a6d727e8b98a5acacacacacacadb9babfc6cfccd1cbc2bcb7b6acacacacacacacacacacacacacaa9d9083776a5d5044372a1d1104000000000003101d2a3643505d6976838d9093999a9da0a8a9acaeb4b8b9bec4c5c9cec7baaea3999286807b756d685d524a54606b6f74787c7f84919eaab7c4c5bebab8b2b3b7b9b6b2acaaa9a19e9a9792867a6d6054473a2d21140700000000000000000a1623303d495663707c8996a3a8a8a8a8a8a8a8a8a8abadb3bbc5cfcec3bab2acaaa8a8a8a8a8a8a8a8a89e9184786b7784909daab7c3ccc4bdb9b7b5b5b5b5b5b5b5b5b5b6b8bcc2cbc7baaea194877b6e6154483b2e21150800000000020f1c2835424f5b6875828e949fa4acb3bcc0b5aba29891847a6d665c51494748494949494949494e5b6874818e9ba7b4c1c2b5a89c8f8275695c4f49494949494949494949494949494949494949494745413a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b657985929facb8c5c4b8ab9e9185786b5e5245382b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c3945525d6875828f9babb5bfc2b7aa9d9184776a6a6f7b849196a0a8b2bac1b7afaaa8a3a3a3a3a3a3a3a3a3a3a3a3a3a9abb1b9c2cdcdc1b4a89b8e8175685b4e4235302d2c29241e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a094877a6d727e8b989f9f9f9f9f9f9fa0acaeb4bcc6d1cdc2b8b0aba99f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9084776a5d5144372a1e11040000000000000a1723303d4a5663707d8083868a8d9196989c9fa3ababadb3b8b9bec4c6bfb4aba298928d87827a6d60544956636f7d8185888c9196a0acb9c5c5c4bfbab8b6afaca9a8a09e9a97928e8985807a6e6154473b2e21140800000000000000000a1623303d495663707c89969c9c9c9c9c9c9c9c9c9c9ea1a9b3bec9c8bdb2a8a09d9c9c9c9c9c9c9c9c9c9c9184786b7784909daab7babababababababababababababababababababababaaea194877b6e6154483b2e21150800000000000714212e3a4754616d7a828d939aa2aab1bbafa49992867c6f685e544b403a3b3d3d3d3d3d3d414e5a6774818d9aa7b4c0c2b6a99c8f8376695c50433d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3a3935302820160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f495f6c7885929fabb8c5c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5664717e8b99a3aebbc5b8aca095887c6f62696e7b849196a0a8b2bbc1bbb6b5b0b0b0b0b0b0b0b0b0b0b0b0b0b6b8bcbcbcbcbcbcb4a89b8e8175685b4e42352821201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b97979797979797979797979797979797979797979797979794877a6d727e8b9393939393939393939fa3aab4bfcbc7bcb0a69f9c9393939393939393939393939393939184776b5e5144382b1e11050000000000000916222f3c4854606b7073777a7d8084888b8f92999b9ea2a9abadb3b8b9bebdb4aaa29f9a908376685d524a5764717d8a9197999ea0a8b2bdbdb8b7b4aeacaca49f9d9996918d8985817d79746e685e5246392d20140700000000000000000a1623303d495663707c898f8f8f8f8f8f8f8f8f8f8f9297a1adb9c6c5b8aca096918f8f8f8f8f8f8f8f8f8f8f84786b7784909daaaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea194877b6e6154483b2e21150800000000000713202d3946525e686d7880889298a0a7aea49f93877d706a5f564c42392e2f303030303034404d5a6773808d9aa6b3b6b6b6a99d9083766a5d5043373030303030303030303030303030303030302d2c29241e160e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d45525e6b7885919eabb8c4c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4754606d7a86929facb9c5bdb1a8998c7f73665f696e7b849196a1a9b3bdc6c3c2bcbcbcbcbcb8b6afafafafafafafafafafafafafafafa89b8e8175685b4e4235281b13110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a877a6d727f868686868686868686879298a3aebac7c4b7ab9f94908686868686868686868686868686868685786b5e5245382b1f12050000000000000714202c38444f59606366686d7074777b7f82868a8e92979a9ea1a9abadb3b8bab4ab9e94897c6f63564c4653606d7884919ea9aaacb2b8b5b2acaaaaa29f9b9a93908c8884807c7974706d66615e564c41362a1e110500000000000000000915222f3c4855626f7c82828282828282828282828285929eabb8bbbbb7aa9d9184828282828282828282828281746a7784909da1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a194877b6e6154483b2e211508000000000005111d2935414c565e666c737e8690959ea59d928b7f726b61584e443a302722232323232633404d596673808c99a6aaaaaaaaaa9d9084776a5d5144372a232323232323232323232323232323232321201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061e2b3844515e6b7784919eaab7c4c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202c3945525d6876828f9cacb6c0c3b6aa9d908377695e5e696e7b849197a2abb5bfcbcec9cdc2b9b1aba9a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29b8e8175685b4e4235281b0f040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d786d6d727979797979797979797a86929facb9c3c2b6a99c9083797979797979797979797979797979797872685c5044372a1e110400000000000004101c27333d474f5456565d606467696e72767a7d8185898d92979a9ea1a9abaeafa3998f82756b60544444505c66727f8c98a3aeb4aeaca8a8a09d9a98928f8b87837f7c7774706d6663605c54524c443b3025190e0200000000000000000815212e3a47535f6a6f757575757575757575757576828f9ca9aeaeaeaea6998c7f7575757575757575757575746f6a77849094949494949494949494949494949494949494949494949494949494877b6e6154483b2e2115080000000000010d1925303a444c545b606c707b838e939f938d80746d62594f463c32291e15161616192633404c5966737f8c999d9d9d9d9d9d9d9184786b5e5145382b1e161616161616161616161616161616161413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909daab7c0c0b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5665727e8b9aa4afbbc3b8ab9f95877b6e61565e696f7c859299a3aebbc0cbd1c7bcb1a79f9d96969696969696969696969696969696968e8175685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e696e7070707070707070707070707070707070707070707070707070706d6662656c6c6c6c6c6c6c6c6875828e9ba9b3b7b5b3ac9f93867a6e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6860574b4034281b0f03000000000000000b16212b353d44484a4c525457575f6165676d7074797d8185898d91979b9fa2aa9f92877c6f62594f443f4a54616d7a86929faaaaa29f9c9896918d8985827e7a76736f6a6763605c5453504a46413b32291e140800000000000000000006121f2b37434e585f62696969696969696969696976828f9ca1a1a1a1a1a1998c7f736969696969696969696967646a77838787878787878787878787878787878787878787878787878787878787877b6e6154483b2e21150800000000000008131e28323a424a505a61696e79818c928f81786c605b51473e342a20170c0a0a0c1926333f4c5966727f8c90909090909090909085786b5f5245382c1f120a0a0a0a0a0a0a0a0a0a0a0a0a0a0a07070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b3b3b3b3ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303b4754616e7a87939facb9b6b4b1a7988b7e726555575f6a707d87929fa4aeb9c3c4c1b8ab9f95908989898989898989898989898989898989898175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e61646464646464646464646464646464646464646464646464646464605c5458606060606060605664707d8a97a2acaaa8a6a5a4998b7e7165606060606060606060606060605e5c574e453a2f23180c0000000000000000050f1a232b33383c3d4145474a4d5355555d6064666d7074797c8085898e92989b988e81746a5f53473d3846525e6874818e9b9d9a98928f8b8884807d7975716e6866625f585653504a46443f3836302920170d02000000000000000000030f1b26313c464e53555c5c5c5c5c5c5c5c5c5c6976828f94949494949494948c7f73665c5c5c5c5c5c5c5c5c5b54616e7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786d6053463a2d201307000000000000020c1620282f383f4450575f676d757f8682796d665b50493f352c22180e0500000b1825313e4b5864717e838383838383838383838276695d5043362a1d1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca6a6a6a6a6a69e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202d3946525e687783909daaacaaa7a9a29c8f8276675d5158606b717e8b929da7b1b9b7b5b2a99d90837d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b454d535457575757575757575757575757575757575757575757575757575753514b4b5353535353535353606d7985929f9f9d9b9a9896998f8275655b50535353535353535353535352504b453c33291e120700000000000000000008111a21272c2f2f35393a3d4246484b5153545c6063666c7074797d81858a8f92867b6e61584e433536414c56626f7c8893908d8985827f7b7774706d6665615e5655534e4946443f3a38342e2a251e170e0500000000000000000000000a15202a343c4347484f4f4f4f4f4f4f4f4f5c697682888888888888888888887f7366594f4f4f4f4f4f4f4f4e525e686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5044382b1f120600000000000000040e161d262d333e454d555d606d727c796d675c544a3f372d231a10060000000a1724303d4956616c71777777777777777777777670665a4e4235291c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f99999999999999999285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566673808c99a39f9d9a9797928f867a6d60544f59626c74818d95a0aaacaaa8a6a99f95897c6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695f53473a2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b4246484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4645403f46464646464645515c6775818e9892908f8d8b89888683786c605346464646464646464646464544403a332a21170c0100000000000000000000080f161c202224292c2d31373a3b4045474a5053545b6063666d7074797d82868073695e52463c31303a47535f6a76828683807d7975726e696763605c5454524c4847433d3a38342e2b28231c19140d05000000000000000000000000040e18222a31373a3c42424242424242424754616e7b7b7b7b7b7b7b7b7b7b7b7a6d60544742424242424242414c565e61616161616161616161616161616161616161616161616161616161616161605c544a3f34281c10030000000000000000040b141c2228333c434b515b626a6f6d675d554b42382d251b1108000000000815212d3945505a61646a6a6a6a6a6a6a6a6a6a69665e54493e32261a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875828d8d8d8d8d8d8d8d8d8d85786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303c4956626f7c89979992908d8b888582807a6e615447505a606d79839098a29f9e9b999697928f83796c636363636363636363636363636363625f574d42372b1e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212931363a3b3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3a38342e393939393934404b5564717e8987858482807e7d7b79776c655b5044373939393939393939393837342f2921180f05000000000000000000000000050b101416191d2021262b2d2f35393a3f44464a5053545c6063676d71757a796d60574d42342a2b37434e58616e7b7a7773706d6765615f575653514b4746413c3b37322d2b28231f1c17110e0802000000000000000000000000000006101820262b2e2f363636363636363946525e686e6e6e6e6e6e6e6e6e6e6e6d685d5245393636363636303b444c525454545454545454545454545454545454545454545454545454545454545453504a42382e23170b00000000000000000000020a1117212a3139404551586062605d554b43392f261c1309000000000005111d28343e485056585d5d5d5d5d5d5d5d5d5d5d5a544c43382d21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e808080808080808080807f7366594c403326190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202d394653606c78858b898683817e7b7976736e685e524645515c676e7b86929a93918e8c8a878583807a6e61565656565656565656565656565655534d453c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e3131313131313131313131313131313131313131313131313131312d2c28232d2d2d2d232e3a4753606d797c7b7977757372706e6d66605b53493f33272d2d2d2d2d2d2d2d2b2a28231e170f060000000000000000000000000000000407080d1113141a1e2124292c2e34383a3f44464a5053555c6064686d6d675d51453b302226323c46535f696e6d686763605c5555534d4a4645403b3936302e2b26201f1c1712100b06000000000000000000000000000000000000060e151b1f21222929292929292a36414d565e6161616161616161616161605d564c4135292929292929323b41464748484848484848484848484848484848484848484848484848484848484846443f3830261c1106000000000000000000000000060f181f282f353f464e545654514b433a31271d140a010000000000000c17222d363e45494b50505050505050505050504e49433a31261c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4955616c7173737373737373737373736d63574b3e3225190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b66727f7f7c797774716e6c6566615e564c41404b555f69727f8b898684827f7d7b7876746e685e52494949494949494949494949494847423c332a1f15090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e2121242424242424242424242424242424242424242424242424242424201f1c1820202020202c3945515d676d6f6e6c656867656361605c54504941382d2217202020202020201f1e1b18120c0500000000000000000000000000000000000000010407090e1214181d2023282c2d3338393f44464b5153565d60605d554b4033291f202a36424d575f61615e565653514b4846423d3a38342e2d2a25211f1b1312100b0603000000000000000000000000000000000000000000040a0f1215151c1c1c1c1c1925303b444d52545555555555555555555554524c443a3024191c1c1720293036393b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a38342e261e140a0000000000000000000000000000060d161d2429343d4348494745413a31281f150b020000000000000006101b242d34393d3e4444444444444444444443423e3831281f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3945505a61646666666666666666666666635b51463b2f23160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54626d72726f6d67676462605b5354524c443b39434d57606c787e7c7a777573706e696967615e564c413c3c3c3c3c3c3c3c3c3c3c3c3b3a37312a21180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151717171717171717171717171717171717171717171717171717171313100c131313111d2935404b555d606361605b535a58565553514a443f382f261b111313131313131312110f0c07010000000000000000000000000000000000000000000000000205070d1113171c1f22282b2e34383a4045474c525453514b43392f20171a26313b454d535554524c494645403b3a36312d2c2823201e1915120f0a06030000000000000000000000000000000000000000000000000000030608090f0f0f0f08141f29323b414647484848484848484848484745413a32281e13080f0e171e252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2b28231c140c02000000000000000000000000000000040c1218222b32383b3c3a39352f281f160d0300000000000000000009121b22282d3031373737373737373737373635322d261f160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d28333e485055575a5a5a5a5a5a5a5a5a5a5957514940352a1e120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3842515b62656562605c5558555350494746413b32303c44505b666c716f6d67686663615e575a54524c443b3030303030303030303030302f2e2b261f180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a070604000006010d18242f3a434b515356545350494d4b4a4846444039332d261d140a000606060606060504030000000000000000000000000000000000000000000000000000000000000104060c1012171c1f23282b2f34383a4145474745403931281d0e141f29333b4246484746413d3a38342e2d2a26201f1c1814110e08060300000000000000000000000000000000000000000000000000000000000000000003030303020d1720293036393b3b3b3b3b3b3b3b3b3b3b3a3935302820160c0200050d14191e2021212121212121212121212121212121212121212121212121212121212121201f1c17110a0200000000000000000000000000000000000107101921272c2e2f2d2c29241d160d0400000000000000000000000910171d2124252a2a2a2a2a2a2a2a2a2a2a2926211c150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222c363e45494b4d4d4d4d4d4d4d4d4d4d4c4b4640372e23190d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3f49515658585653514b4b4846443f3b3936302928333f4a545b606463605d55595754524d4d4746413b3229232323232323232323232322211e1a150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a404547494746443f403f3d3b3a38342e27221b140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b0f12171c1f23292c2f35393a3a39352f281f160c0d18212931363a3b3a3936302d2c2823211e1a1313100c0705020000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e2e2e2e2e2e2e2e2e2e2e2d2c29241e160e0400000002080d1114141515151515151515151515151515151515151515151515151515151515151312100b06000000000000000000000000000000000000000000070f161b1f222321201d18130c0400000000000000000000000000060c111517181d1d1d1d1d1d1d1d1d1d1d1c1a16100a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a242c33393d3e40404040404040404040403e3b352e251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2d373f464a4c4c494745403e3b3937332d2d2a251e222d38424a5053585653514b4c4a484642413b393630292017161616161616161616161514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a3c3b3937332d32302e2d2c28231c17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b1012181c1f24292c2d2d2c29241d160d04060f181f262a2d2e2e2d2a25201f1c1814120e09060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212222222222222222222221201d19130c0400000000000001050708080808080808080808080808080808080808080808080808080808080808070603000000000000000000000000000000000000000000000000040a0f1315161413110d07010000000000000000000000000000000005080a0b11111111111111111111100f0d0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a22282d30313333333333333333333333322f2a231c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b1b252d343a3e3f3f3c3a38342f2f2d2b2722201e19141c262f383f44464b49474540403d3b3a36302e2d2a251e170e090909090909090909090808060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d302e2d2b2722252322201f1c18120b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c1013191d202120201d18120c040000060d141a1e212221201e191313100c070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414151515151515151515151413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000307090907060401000000000000000000000000000000000000000000000404040404040404040403030100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d212324272727272727272727272625231e19120a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b23292e3132322f2d2c292322201f1b1714110d0a141d262d3338393e3c3a39352f302e2d2a2521201e19140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d20202321201f1b171817151312100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080d1113141413100d07010000000003090e1214151413110d080604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708080808080808080808080707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111417181a1a1a1a1a1a1a1a1a1a191916120d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e2224252523201f1c181513120f0b060501020b141c22282b2d31302d2c29242421201e1a1414110e080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111314161413120f0b060a080706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070706040100000000000000000205070807070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b0d0d0d0d0d0d0d0d0d0d0d0c0a06020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d1215181919161413100c070605030000000000020a11171c1f20252320201d18171514120e0907050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070908060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0a0a0a0a0a0a0a0a090704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11131413110d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c0c09070604000000000000000000000000060b0f121318161413110d0708070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070e0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141717171717171717171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002030201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d2021201d18130e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070808080808080808070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306060b090706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002030303030303030303030300000000000000000000000000000000000000000000000000000000000000000000000102030000040607070707060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113141b1413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e202124242424242424242323201c160f0800020202020202020202020202020202020202020202020202020202000000000000000000000000000000000000000000000000000004090c0f0f0f0d0c0b090807060300000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d2c29241d1a140c070100000000000000000000000000000000000000000000000000000000000000000000000001040707090a0a0b0a0a090707050100000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001070d10131415151515151515151413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d0f0f1010101010101010101009080603000000000000000000000000000000000000000000000000000002060a0c0c0e0f10070c10131314141312100c060d0a07060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213120f0b06000000000000000000000000000000000000000000000000000000000000000104060707060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d20212821201d19130c0400000004060708090a0b0b0b0c0c0c0b0a0907060400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000050e171f252a2d2e3131313131313131302f2c27211a110e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d0c0a07020000000000000000000000000000000000000002091015191b1c1c1a191716151312100c060c0b0a09070606030000000000000000000000000000000000000000000000000000020b161f282f35393a39352f2a261f18120b0300000000000000000000000000000000000000000000000000000000000000000001080d111314151617171717161413110d0807040000000000020507080e0b0b0805010000000000000000000000000000000000000000000000000000040c12181d2020212121212121212121201d19130c04000000000000000000000000000001070c0f1112121212121212121212110f0b0701000005080a0b1212121212121212120d0c0708121212121212121212100f0d0a0500000002050708121212121212121212100f0d0905000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1015191b1c1d1d1d1d1d1d1d1d1d1d1615130f0a040000000000000000000000000000000000000000000000070d121618191b1c1d1e181c1f202020201f1c171c1a171413100d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f201f1c17110d0802000000000000000000000000000000000000000000000000000001070d1113141413110d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e24292c2d352e2d29251e160e04070c1013131516171718181818181817151312100c070400000000000000000000000000000000000000000000000106090c0c0e0d0c0a09080605030000000000000000000000020d17202930363a3b3d3d3d3d3d3d3d3d3d3c38332c231a1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a1917130e070000000000000000000000000000000000030c141b21252829282726242321201f1c171b191817151413120f0b060d0c0b0a09080706040000010000000000000000000000000a141d28313a41454745413a363129241d150d0903000000000000000000000000000000000000000000000000000000000000040c13191d20212223242424232221201d191613100b050003090e1214151b181715110c04060709090909090909090909090909090909090909090909090d161d24292c2d2e2e2e2e2e2e2e2e2e2d29241e160e04000000000000000000000000050c13181b1e1f1f1f1f1f1f1f1f1f1e1d1b17120c060c111517181f1f1f1f1f1f1f1f1f191814151f1f1f1f1f1f1f1f1f1d1c1a16100a03090e1214151f1f1f1f1f1f1f1f1f1d1c1915100a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b212528292929292929292929292922221f1b150f070000000000000000000000000000000000000000010a12181e22252627292a2b23282c2d2d2d2d2c282329272420201d18120d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c22282b2d2b28221c19130b06000000000000000000000000000000000000000000000000060b13181d202121201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f35393a413a3935302820160d12181c1f20212323242525252525252422201f1c1813100c070000000000000000000000000000000000000000070d121618191b1a1817161413120f0b060c0b0908070604000009141f29323b4246474a4a4a4a4a4a4a4a4a48443d352c28282828282828282828282828282828282828282828282828282828282626231f19120a010000000000000000000000000000000c151e262c31343635343231302e2d2c2823272625232221201f1c171b1a19181716141312100c070e0d0c0b0a0908070604000006111b262f3a434b5154514b46423b352f271f1a150d0701000000000000000000000000000000000000000000000000000000080d161e24292c2d2f30303131302f2e2d292522201c160c0a0f141a1e2122272524211d171113141616161616161616161616161616161616161616161616161f282f35393a3b3b3b3b3b3b3b3b3a3935302820160c0200000000000000000000060f171e24282b2b2b2b2b2b2b2b2b2b2b2a27231d1610171d2123242b2b2b2b2b2b2b2b2b262520212b2b2b2b2b2b2b2b2b2a2926221c150e141a1e21222b2b2b2b2b2b2b2b2b292826211b140c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161e262c313536363636363636363636362f2e2b2720191007000000000000000000000000000000000000000a131c232a2f3233343536372e34383a3a3a3a38342e3633302d2c29241d18130c04000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d262d33383938332d29251e17110a020000000000000000000000000000000000000000020a11171d24292c2d2d2c29241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e172029313a4145474e4746413a32281f161d23282c2d2e2f3031313232323231302f2d2c28231f1c18120b0300000000000000000000000000000000010a11181e222526282725242221201f1b171a191716151312100c070e1925303b444d5254575757575757575756554f473d33353535353535353535353535353535353535353535353535353535353533322f2a241c130a0000000000000000000000000000060f1e2730373d414242403f3e3c3b3a38342e343331302f2e2d2b282228272625232221201f1c181c1b1a19181716151413100c070b17222d38414b555d605d55534d454039312b262018130c040000000000000000000000000000000000000000000000000008111a20282f35393a3c3d3d3e3d3d3c3a3935302f2c272117151b1f262a2d2e3431302d29221d202123232323232323232323232323232323232323232323232328313940454748484848484848484746413a32281e1308000000000000000000050f1821292f34373838383838383838383837332f28201a22282d303138383838383838383833322d2e3838383838383838383635322d261f181f262b2d2e3838383838383838383635322d261e160c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2830373d4142434343434343434343433c3b37322b22190f040000000000000000000000000000000000050e1c252e353b3e3f4142434445404546474746443f4442403d3a39352f29241d160d0500000000000000000000000000000000000203020000000000000000000000000000000000000a141d262f383f4446443f38353028221c140b07010000000000000000000000000000000002090c141c23282f35393a3a39352f281f160c010000000000000000000000000000000406070a0806060300000000000000000000000000000000000000060f182029323a434c52545b54524c443a31281e272e34383a3b3c3d3e3e3e3f3f3f3e3d3c3a38342e2c28231d150c070000000000000000000000000000000a131c232a2e3132353332312f2e2d2b27222726242321201f1c181b191e2a36424d565e6164646464646464646360594f44414141414141414141414141414141414141414141414141414141414141403f3b352e261c1207000000000000000000000000030e1821303942494d4f4f4d4c4a494846443f42413f3e3d3c3a3938332d35333231302f2e2d2c28232928272524232221201f1d181d1c1b27333f49535d676d67615f57514b433e373129241d160d08000000000000000000000000000000000000000000000005101a232c323a41454748494a4a4a4a494746413d3c3833282320262b31363a3b413e3d39342d292c2d3030303030303030303030303030303030303030303030302f39434b5153545454545454545454524c443a3024190d0100000000000000010c17212b333a404445454545454545454545433f3a322b2b2c34393d3e454545454545454545403e3a3b45454545454545454543423e38312b2b2a31373a3b45454545454545454543413e3830281e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26303a42494e4f505050505050505050504947433c342b20150a00000000000000000000000000000000020d17202e3740464b4c4e4f5051524b5153535353504a514f4d4a47454039352f281f170f050000000000000000000000000005090d0f100f0d0b08060603000000000000000000000006111b262f38424a5053504a46413a332d261d18120b030000000000000000000000000000060b141a1e262e343a4145474745413a31281e130800000000000000000000000001070c101314171513120f0b0609070604010000000000000000000000070f182129333b444c565d6068615e564c433a3027303940454648494a4a4b4b4b4b4b4b4a484644403a38342e271e1910070000000000000000000000000007111c252d353a3e3f41403f3d3c3b3937332d343231302e2d2c28232726252d3a46525e696e7070707070707070706b60554e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4b4740382e24190e02000000000000000000000009141f2a33424b545a5c5b5a5957565453504a4f4e4c4b4a484746443f4341403f3e3d3c3b3a38342e3534333231302f2e2d2c29242928272b3744505b656d7a756e69605d555047423c352f281f1a1208000000000000000000000000000000000000000000000b17212c353e444c52545556575757565554524c4a48443d342e2c31373b4246484e4b49453f3635393a3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c404b555d606161616161616161615d564c4135291d11050000000000000007131e29333d454c5052525252525252525251504b443c3838363e45494b5252525252525252524c4b4648525252525252525252504e4a433a3838333c424648525252525252525252504e49423a30261b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c37424c545a5c5c5c5c5c5c5c5c5c5c5c55544e463c32271b0f0300000000000000000000000000000008131e293240495157595a5c5d5e5e5f5c606060605c5f5e5c5a5753514b45403a312921170d0300000000000000000000020a1015191c1c1c1a171513120f0b060706030000000000020b17222d38414a545b605b54524c443f382f29241d150d070100000000000000000000020a11171f252a30383f444b515454524c433a2f24190d0200000000000000000000030b12181d1f202422201f1c1718161413110d070a0807050200000000071018212a333b454d565e686d746d685e554b43392f39434b515354565657585858585858575553514a46454039302b221911070000000000000000000000010d18232d373f464a4c4e4d4b4a494746443f42403f3e3c3b3a38342e343331303b4754616e7b7d7d7d7d7d7d7d7d7d70635b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5957524a40352a1f130700000000000000000000020e1a26313c45545d6569686765646361605c545c5a595856555453504a4f4e4d4c4b4a4947464440434241403f3e3d3c3b3a39352f36353435404b55606c7783827b736d67615a534e45403a312c241a1107000000000000000000000000000000000000000004101c28333e474f565d6062636364646362615e5656544f443f38383c43474d53555a585650483f4145474949494949494949494949494949494949494949494949494949515d676d6e6e6e6e6e6e6e6e6d685d5246392d201307000000000000000c18242f3a454f575c5e5e5e5e5e5e5e5e5e5e5c564e45454545485055575e5e5e5e5e5e5e5e5e595752545e5e5e5e5e5e5e5e5e5d5a544c45454545454d53555e5e5e5e5e5e5e5e5e5c5a544c42382d211509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925313d49545e6569696969696969696969696260584e43372b1f13060000000000000000000000000000010d1925303a44515b63666768696a6b6c666d6d6d6d666b6a696663605d55514b433b33291f150b010000000000000000040c141b2125282929262422201f1c17151312100c060706030a141d27333f49535b666c66615e56504a423c352f271f18120b030000000000000000060b141c222830363d424a50555d60605d564c4135291f1409000000000000000000030d151d24292c2d302e2d2b2822242321201d1819171514120e090b09071019222a333c454d575e686d7a817a6d675d554b4238404b555c60616263646465656565646362605c5453514b433d342b23190e040000000000000000000006121e2a353f495157595b5a585755545350494f4d4c4a494846444042413f3e3d3e4a5764717d8a8a8a8a8a8a8a8a84786b686868686868686868686868686868686868686868686868686868686868686866635c52473b2f23170a0000000000000000000005121e2b37424d57657075757372716f6e6d666a68676664636261605b545c5b5a595856555453514a504f4e4d4c4b4a4948474540444342414045515d67717e8b8f868079716c625f57514b433e362c23190f05000000000000000000000000000000000000000714202c38444f5961686d6f70707170706f6d6868636059504a4243484e53575f616764625a50434c5254565656565656565656565656565656565656565656565656565656606d797b7b7b7b7b7b7b7b7a6d6154473a2e211407000000000000030f1b2834404c5761686b6b6b6b6b6b6b6b6b6b68605652525252505a61646b6b6b6b6b6b6b6b6b66635e616b6b6b6b6b6b6b6b6b69665e54525252524d575f616b6b6b6b6b6b6b6b6b69665e54493e3226190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835414e5a657075767676767676767676766f6a6054473b2e221508000000000000000000000000000005111e2a36414c56636d7274757677787879797a7a797978777573706d67605d554d453b31271d120700000000000000000c161e262d3235363533312f2d2b282222201f1c1715131210111c262f3844505b656c78746d68605b544e4540393129241d150d060000000000020a11171d262d333b42464f545c60676d6d685d52453b30251a0e0300000000000000010b151f272f35393a3d3b3938332d312f2d2c2924252321201e1a1917151319222b343c464e575f696e7a838e83796d675c544a3f45515c676d6e6f7071717172727271706f6d6665605c554f473d352b20160c020000000000000000000916222e3a46515b6365686665646261605b535b5a5957565453514a4f4e4c4b49484a5764717d8a979797979797918478747474747474747474747474747474747474747474747474747474747474747474736e63574b3f3226190c000000000000000000000714212d3a46535f69758282807f7d7c7b79787775747271706f6d6c666a6968666564636261605c545d5c5b5a585756555453514b51504f4e4d4c56606d79849198928c847e766e6a605d5550483e352b21160b000000000000000000000000000000000000000a16232f3c4855616b707a7b7c7d7d7d7d7c7a7875706b605c544a4e54585f62696e74716c62564c565d6063636363636363636363636363636363636363636363636363636364717e87878787878787878074675a4d4134271a0e00000000000005111e2b3744505c68737878787878787878787872685e5e5e5e5e5e616c71787878787878787878736d696e7878787878787878787670665e5e5e5e5e5e5f696e7878787878787878787670665a4e4135281c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2936424f5c697582838383838383838383827c6f6255493c2f22160900000000000000000000000000000713202d3946525e68727f818283848585868686868686858482807d7a736d675e574d43392f23180c00000000000000040e1e2830383e414342403e3b3938332d2f2d2c282322201f1c17222d38424d57606c7782817a726c665f58514b433d352f271f17110a020000050b141c22282f383f444d525960666d727a7a6d60574d42362a1f14090000000000000007121d2731394045474a4846443f403e3c3a39352f32302e2d2a2526242220232b343d464e585f696e7b8390958f82796d665b50444653606d797b7c7d7d7e7e7e7e7e7e7d7b7976716d6760594f473d32281e13080000000000000000000c1825313e4a57636d72747372706f6e6c6569686765646361605c545c5a59585655535764717d8a97a3a3a3a39f928681818181818181818181818181818181818181818181818181818181818181818181807366594d4033261a0d000000000000000000000815222e3b4855616e7b888e8d8c8a898786858382817f7e7d7b7a7978777674737271706f6e6d666a696867666564636261605d555d5c5b5a5a595d68727f8c96a19f96918a827b736d67615a50473d33271c10040000000000000000000000000000000000000a1724303d4a5763707d8788898a8a8a89888785817d756d665c545860626a6f757b817e716458525d686d6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f717e8a9494949494948d8074675a4d4134271a0e00000000000005121f2b3845525e6b7885858585858585858584786b6b6b6b6b6b6b6b717e8585858585858585857f736e7b85858585858585858582766b6b6b6b6b6b6b6b6e7b8585858585858585858276695c504336291d100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79868f8f8f8f8f8f8f8f8f897d7063564a3d3023170a00000000000000000000000000000714212e3a4754616d7a878d8f9091919293999393999392918f8d8a8580796e695e554b4034291c11060000000000020c1620303a42494e4f4f4d4a4846443f3e3c3a38342e2f2d2c282328333f4a545f69727f8b8e857f786f6a605d554f4540393127221b140b05060f171d262d333c424a50575e616b70787e858073695e52463c31261a0e040000000000000c18242f39434b5153575553504a4d4b49474541413f3d3b3a363033312f2d2c353d464f585f6a6e7b8491959f948f81786c605a504d576975828789898a8b8b8b8b8b8b8a8886837e796f6b60594f443a3025190d0100000000000000000c1926323f4c5965727f81807e7d7c7a797876757372716f6e6d666a686766646362605d64717d8a97a4b0b0aea298928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776a5d5144372a1e11000000000000000000000b1825313e4b5864717e8b979a989796999391908f8d8c8b8988878685838281807f7e7d7c7a797877767574737271706f6e6d676b6a6968676665646d7a85929fa9a8a19e948f878079716c61594f44382c2013070000000000000000000000000000000000000d1a2633404d596673808c9596969797969597918e8981786d6060636a6f757c81878d83776a6054606d7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c808c99a1a1a1a19a8d8074675a4d4134271a0e0000000000000613202d394653606c7986919191919191919186797878787878787878787e8b919191919191918d80736e7b87919191919191919184787878787878787878787c88919191919191919084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929c9c9c9c9c9c9c96897d7063564a3d3023170a00000000000000000000000000000a1724303d4a5763707d8a969b9c9d9e9f9fa4a0a0a49f9e9d9c9998928d847b6e675c5145382d22170b000000000008131e2832424c545a5c5c59575553504a4b4846443f3e3c3a38342e303844505b666e7b869297928b837c736d676059514b433d332d261d170e111721292f383f444e545b60696e757d838b92867b6e61574d42372b20150a000000000004101d2935404b555d606361605b545a575654514b4e4c4a48464242403e3c3a383d474f59606a6f7c849196a0a69e938d80736c6259525e697885919596979798989898979698928f8b847d706b60564c4135291d120700000000000000020f1b2835424e5b6875818e8d8b8a888786848382807f7d7c7b79787775747271706e6d6764717d8a97a4b0bfb4aaa29f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9084776a5d5144372a1e1100000000000000000005111e2a36414d566874818e9ba6a5a4aba49f9e9d9b9a99979695999291908f8e8d8c8b898887868584838281807f7e7d7c7b7a79787776757473727173808d97a2adb2aca69f99928d847e716b6054483b2f221609000000000000000000000000000000000005121e2a36424d576975828f9ca3a3a4a3a3a9a19e9b938c8073686b70767c82878e9295897c6f625663707d89898989898989898989898989898989898989898989898989898989898c929ca8aeaea79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939e9e9e9e9e9e98898485858585858585858485929e9e9e9e9e9e998d80736e7b87949e9e9e9e9e9e92878485858585858585858585919e9e9e9e9e9e9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929fa9a9a9a9a9a396897d7063564a3d3023170a00000000000000000000000000000d1a2633404d596673808c99a6a9aaababacafb5b5afacabaaa8aaa29f969083796d60544a3f33281c0f03000000010d1924303a44545e666968666462605b54585553504a4b4846443f3e3b424e58606c78829098a29e9590878079706b605d554e443f382f2920191c2328333b424a50585f666c727b81899095988e8174695f53463c32261b0f040000000006131f2c3945515d676d706e6c6668666462605d555a585654524d4e4c4a484645444f59606b6f7c859196a0a8afa59c928b7e716b6056616e7b8797a1a3a4a4a4a5a5a5a4aaa39f9c9691877d70685e5246392f24180c00000000000000020f1b2835424e5b6875818e99989795999291908e8d8c8a898786858382817f7e7c7b797666717d8a97a4b0bdbcb4aeaca7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79d9084776a5d5144372a1e110000000000000000000714202d3946525e687784919eaab2b0b5afacabaaa8a7a5a4a3aba39f9e9d9c9b999897969594979291908f8e8d8b8a89888786858484838281807f7e7e87929fa9b3bdb9b0aba39f9691897c706356493d3023160a00000000000000000000000000000000000714212d3a46535e697885929eabb0b0b0b0b2adaba59f92867a71777d82898f939a9f9a8e8174685d63707c8996969696969696969696969696969696969696969696969696969696999ca4aeb9b3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939fababababaaa196919191919191919191919297a2ababababa6998d80736e7b8794a1ababababa39992919191919191919191919197a1ababababaa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb6b6b6b0a396897d7063564a3d3023170a0000000000000000000000000005121e2a36424d576975828f9ca8b5b7b8b8b9bbc0c0bbb9b8b7b5b4aea8a0958c7f72665b5044382b1f120600000004111d2935414c566670767573716e6c66676462605c54585553504a4b484a545f6a727f8c949faaa79f99928d847d746d6760585049413a322b22262e343e454d545b606a6f787f868e939da09f92877b6e61584e43372b21160a000000000714202d3a4753606d797d7b79777573716f6d6769676563615e575b59575553514b54606b707d859297a1a9b2b7aea49f92877d6f685e63707d8a96a9b3b0b1b1b1b1b1b1b4aeaca8a19992857a6d61554b4035291d1004000000000000020f1b2835424e5b6875818e9ba5a3aba39f9e9c9b9a989796999391908f8d8c8b898886786d717d8a97a4b0bdbdb5afacaaaaaaaaaaaaaaaaaaaaabadb2b4b4b4b4b4b2adabaaaaaaaaaaaaaaaaaaaaaa9d9084776a5d5144372a1e110000000000000000000814212e3b4754616e7a8796a0acb9bdc0bbb9b8b6b5b4b2b1b0b5afacabaaa9a7a6a5a4a3a2a9a29f9d9c9b9a999897969594989291908f8e8d8d8c8b8b9299a3afbbc5c2bdb5aea3988f82766b6054483b2f22160900000000000000000000000000000000000815212e3b4854616e7b8797a1adb9bdbdbcbeb9b8aea2988a7e7d83898f949c9fa4ac9f92867a6d6063707c8996a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a6a8aeb6bfb3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939facb8b8b8b2a8a19e9e9e9e9e9e9e9e9e9e9fa2a9b3b8b8b3a6998d80736e7b8794a1aeb8b8b5aba39f9e9e9e9e9e9e9e9e9e9e9ea1a9b3b8b8b7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c2bcb0a396897d7063564a3d3023170a000000000000000000000000000714202d3a46525e697885919eabb8c4c4c5c6c7ccccc7c6c5c4c2bfbab1a79e9184786c605346392d2013060000000713202c3945525d68768282807d7b797674716f6d66676562605c545755535c666e7c86929fa6b0b1aba39f96918880796f6a605b534c443d342730383f4450575e666c727c838b92989ea5aca3998e81756a5f53473d32271b0f050000000916222f3c4955626f7c8888868482807e7c7a78767472706e696a68666462605c545a63707d869297a1a9b2bbc0baaea39991857a6d6566737f8c99a6b2bdbebebebebebebfbab8b2aba1978d8073675d5145382c1f1306000000000000020f1b2835424e5b6875818e9ba8b0b4aeacaba9a8a6a5a4aba49f9e9d9b9a9997969386796d717d8a97a4b0c0b5aba39f9d9d9d9d9d9d9d9d9d9d9ea1a9b2bdc1bdb2a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9084776a5d5144372a1e110000000000000000000b1724313e4a5764717d8a97a8b2bdc8ccc7c6c4c3c2c0bfbebcc0bbb9b8b6b5b4b3b2b1b0afb3adabaaa9a8a7a6a5a4a3a2aaa29f9e9d9c9b9a999897979fa3abb5c0cdc9bdb2a89f92867b6e61594f44382c20130700000000000000000000000000000000000a1724313d4a5764707d8a97a9b3babfc5c6c9c6bfb4aa9a8e818590959c9fa6acafaea2988b7e716463707c8996a3afafafafafafafafafafafafafafafafafafafafafafafafafafb3b4b9bfc0b3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939facb9c4c4bab2adabababababababababababadb3bbc4c0b3a6998d80736e7b8794a1aebac4bdb5afacabababababababababababadb3bbc4c3b7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a000000000000000000000000000815212e3b4854616e7b8797a1adb9bdbcbcbcbcbdc0c5c7cbd1d0cac3b9ada196897c6f6356493c302316090000000714212d3a4754606d7a878f8c8a888583807e7c797674716f6d6667646260606d78839098a3aeb8bdb5afa8a09a938d847c726c655e564e463f333a424a505a61696e787f8690959fa2aaafb5ab9f93877c6f62594f43382c21160b0000000b1724313e4a5764717d8a9892908e8d8a89878583817f7d7b79777573716f6d66696764707d869299a3abb5bfcbbfb4aba1978f82776c6875828f9ba8b5bbbabbbdc2c4c7cbc7c4bdb3a99f9285796d6053473a2d201407000000000000020f1b2835424e5b6875818e9ba8b4bfbab9b7b6b5b3b2b0b5afacabaaa8a7a5a4a09386796d717d8a97a4b0bbafa39992919191919191919191919196a1adb9c5b9ada196919191919191919191919191919084776a5d5144372a1e11000000000000000004111d2935414c566774808d9aa7b3c0ced7d4d2d1d0cecdcccad1cbc7c5c4c3c2c1c0bfbebcbbbebab8b7b6b5b4b3b2b1b0afb4aeacabaaa9a8a7a6a5a4a4acafb5bdc7cec5b9aca0968c8073695f53473d33271c100400000000000000000000000000000000000d1a2733404d5a6673808d99a6acaeb4b6bac1c9c2b5a89c8f827f8b96a1abb0b9bbb4aa9c8f82756863707c8996a3afbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbfc1c4cac0b3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939facb9d0c7c0bbb9b5b5b5b5b5b5b5b5b5b5b7b8bcc3cbc0b3a6998d80736e7b8794a1aebacec6bfbab8b5b5b5b5b5b5b5b5b5b5b6b7bcc2cac3b7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a000000000000000000000000000a1724313d4a5764707d8a97a9b3b1b0b0afafafb0b3b9bbc0c7cfd5c9bdb2a8988c7f7265594c3f3226190c0000000a1723303d4a5663707d899a99979892908d8b888683817e7c797674716e6c6a737f8c959faab4bfc7c0bbb2aca49f9691877f776d68605850443f444c545c606c707b828c92989fa7aeb4bcbbafa49a8f82756b6054483d33271c100400000c1926333f4c5966727f8c999f9d9b99979596918f8d8b89878583817f7d7b79777573716f707d879299a3aebbc7c6bdb2a99e948c7f726a7884919eabaeaeadaeb0b6b7bbc2cacfc5baada2978a7d7064574a3d2e23180c000000000000020f1b2835424e5b6875818e9ba8b4b9b7b2b3b7b8bdbfbdc0bbb9b8b6b5b4b2aca09386796d717d8a97a4b0b9ac9f92878484848484848484848484919eabb8c4b8ab9e9184848484848484848484848484848275695c4f4236291c0f00000000000000000713202c3945525d687784909daab7c3d0dbe0dfdedddbdad8d3ccc6c3c1bebfc1c2c3c5c6cad0cac6c5c4c3c2c1c0bebdbcbbbfbab8b7b7b6b5b4b3b2b1b1b9bbc0c7cfc5bcafa59e9184796d60574d42352b21160b000000000000000000000000000000000005121e2a36424d576976828f9c9f9fa2aaaaafb7c1c3b6a99d90837984919ea9b3bec5b9ac9f92867a6d63707c8996a3afbccac2bbb7b6b6b6b6b6b7b9bdc4cccec5bfbab8b6b6b6b6b6b7b8bdc3c0b3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939facb9c7bdb5afaca9a9a9a9a9a9a9a9a9a9aaacb1b9c3c0b3a6998d80736e7b8794a1aebac6bcb4aeaca9a9a9a9a9a9a9a9a9a9a9abb0b8c2c3b7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a000000000000000000000000000d1a2733404d5a6673808d99a6a5a4a3a3a3a2a2a3a7acafb5bdc7d1cfc1b4a79b8e8174685b4e4135281b0e0000000d192633404c5966737f8c99acaaa29f9c9a979892908d8b888683807e7b79767c87929fa7b1bcc6cbcbc4beb6afa8a099928c827a6f6a625a50494e565e666d747e8590949fa3aab1babfc5c0b6ac9e94897c6f63594f44382c20140700010e1b2834414e5b6774818e9aa7aaa8a6a4a9a19e9c9a98969892908e8c8a88868482807e7c7a787d86929facb9c5cfc4bbb0a69f92877c6f7a8796a1a2a2a1a1a1a4a9abb0b8c1c9cabeb3a99a8d817467544b4034281c10040000000000020f1b2835424e5b6875818e9ba8b2adaba5a6aaacb1bac3c1bbb7b5b2b5b6baaca09386796d717d8a97a4b0b8ab9e9184787777777777777777777e8a97a4b1bdb0a4978a7e77777777777777777777777777756f655a4d4134281b0f00000000000000000714212d3a4754606d7a86939facb9c4cacfd7dfe6e9e8ddd3c9c1bab6b5b1b3b4b5b7b8babebcbebfc0c2c3c4c6c7ccd2c9d0cac7c5c4c3c2c1c0c0bfbebec5c7cbd1cabfb4aa9e938a7d70675c51453c3123190f0500000000000000000000000000000000000714212d3a46535f69788592999292989b9ea5afbac4b7aa9d9184777f8b97a1adb9c7bbaea3998b7e7164707c8996a3afbcc2b8b0aba9a9a9a9a9aaacb2bac4c5bcb4aeaca9a9a9a9a9aaacb1bac0b3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939facb9c0b5aba49f9c9c9c9c9c9c9c9c9c9c9da0a7b1bcc0b3a6998d80736e7b8794a1aebabfb4aaa29f9c9c9c9c9c9c9c9c9c9c9c9fa6b0bcc3b7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a00000000000000000000000005121e2a36424d576976828f9b9998979796969595979a9fa3abb5c0cbcfc2b6a99c8f8276695c504336291d10000005121e2a36424d576975828f9ca8b4aeaca9a7aaa39f9d9a989892908d8a888582849199a3acafb5bbc0c7cfc7c0bbb2aba39f948f847c716c605b53585f686d78808a92979fa6aeb4bcc2caccc6beb0a69c8f82766b6055483c2f2316090004101c2934404b55697683909ca9b6b5b3b1b2adaba9a7a5aaa29f9d9b99979992918f8d8b8987858284919daab7c4d0cdc1bbaea3999083777d8996969595949495979c9fa6afb7c1cfc3b7aa9d908377665c5145382c1f13060000000000020f1b2835424e5b6875818e9ba8a8a19e999a9da0a8b1bdb8b0aaa8a5a8aaafaca09386796d717d8a97a4b0b8ab9e9185786b6a6a6a6a6a6a6a717e8a97a4b1bdb0a4978a7d716a6a6a6a6a6a6a6a6a6a6a6a69655d54493d3125190c00000000000000000a1724303d4a5763707d8a99a4acb2b9bec5cdd4dce8e3d7ccc1b7afaaa8a4a6a7a9aaabadb3afb1b2b4b5b6b8b9bbc0bdbec0c1c3c4c5c7cbd1cdcccbcacad2d3d7d0c7baaea2988e81756b61554b40332a1f11070000000000000000000000000000000000000815222e3b4855616e7b8888868685878e939eaab6c4b7aa9e9184777985929eabb5c0bfb5ab9c8f827567707c8996a3afbcbdb0a69f9c9c9c9c9c9ea0a8b2bdbfb4aaa29f9c9c9c9c9c9da0a8b1bdb3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939facb9bbafa499938f8f8f8f8f8f8f8f8f8f9095a0acb8c0b3a6998d80736e7b8794a1aebabaaea298928f8f8f8f8f8f8f8f8f8f90949fabb7c3b7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000714202d3a46525e6978858f8e8c8b8a8a898989898a8d9299a3afbbc4cec4b7aa9d9184776a5e5144372b1e1100000714212d3a46535e697885919eabb8bab8b6b3b4aeaca9a7aaa39f9d9a9797928f9196a0a49fa4abafb5bdc2c9ccc3bdb5afa69f9691867e736c655c606a6e7a828d929fa2a9b0babfc6cfc7c0bbb4aeaa9f94897d7063564a3d3023170a0006131f2c3845515c677884919eabb8c1c0bdbdb9b8b6b4b2b4aeacaaa8a6aba39f9e9c9a979597918f9196a0acb8c6c8cccbbfb5ab9f948b7e7f8c8b8a89888887888a8f949ea5afbdc7c5b9ac9f9286796d6053463a2d2013070000000000020f1b2835424e5b6875818e9ba8a196918c8d9195a0acb8b0a69e9c989b9ea5afa09386796d717d8a97a4b0b8ab9e9184787575757575757575757e8a97a4b1bdb0a4978a7e75757575757575757575756d675d5a544b42372c21150900000000000000000d1a2733404d5a6673808d999ea0a8adb3bbc2cad7dde3d2c6baafa59e9b98999a9c9d9fa2a9a3a4a5a7a8aaabacafb5b0b2b3b4b6b7b9babfc6cbd1d8d7d7dfddd2c7bdb1a79f92867b6e61594f43392f21180e000000000000000000000000000000000000000814212e3b4754616e7b7d7b7a79797a818e9babb4bfb7ab9e918478737f8c99a3afbbc5b8ac9f9286796d707c8996a3afc0b5ab9f948f8f8f8f8f9196a0acb9baaea298928f8f8f8f8f9195a0acb8b3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939facb9b9ac9f93878282828282828282828283909daab7c0b3a6998d80736e7b8794a1aebab8ac9f92868282828282828282828282909ca9b6c3b7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000815212e3b4854616e7b838281807e7e7d7d7c7c7c7d8087929fa8b2bdc9c4b7ab9e9184786b5e5145382b1e1200000815212e3b4854616e7b8797a1adb9c5c5c3c0bfbab9b6b4b4aeaca9a7a9a29f9c9ea0a49993999fa3abb0b9bdc4cbc7c0bbb0a8a198928b80776d676b707c848f949da4adb3bbc2cbcac2beb6afaaa39f98928d8376695d5043362a1d10000714202d3a4753606d7a86939facb9c6cfcfc9c5c4c2c0bebfbab8b6b4b2b5afacaaa8a6a4a9a19e9c9da0a8b2bbb9bbc0c7c6bdb0a69e928580807f7d7c7b7b7a7b7e828e939eabb5c0c7bbafa399887b6e6255483b2f2215080000000000020f1b2835424e5b6875818e9ba89e91847f8083919daab7aa9e948f8b8e939eaaa09386796d717d8a97a4b0b8ac9f92868282828282828282828283909daab6c3b6a99d90838282828282828282828281796d605347423930261b100400000000000000010e1b2734414e5a677480878c91969ea2a9b0b8c0ccd2d9cfc3b6aa9e938e8b8c8e8f909297959697999a9b9d9e9fa4aba4a5a6a8a9aaacaeb4babfc6cfd8e2e3d7ccc0b5aba0958b7f72695e52473e31271d0f06000000000000000000000000000000000000000714202d3946525e686e706e6d67686e7b8899a3aebab7ab9e9184786e7b86929facb9c5baaea398897d70707c8996a3afbbafa3998f828383838384919eaab7b8ac9f9286828383838383919daab7b3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939facb9b9ac9f9286797676767676767676767e8b98a4b1beb3a6998d80736e7b8794a1aebab7aa9d9184777676767676767676767b8895a1aebbb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000714202d3a46525e696e7776747372717070706f6f70747e8a96a1acb9c5c5b8ab9e9285786b5f5245382c1f1200000b1724313e4a5764717d8a97a9b3b6b8babebec1c3c5c3c0bfbab8b6b3b3adaba9aaac9f93878e92999fa6acb2bbc0c7cbc2bab2aaa39f928d81796d707d8591969fa6aebabec5cdc5beb9b0aca49f98928d86807a6d6154473a2e211407000915222f3c4855626f7b889aa4afb9bec4cdd5d2d1cbc7c5c5c6c5c3c1bfc0bbb9b7b5b3b1b2adaba9aaacb2b6afacafb6bec3c2b9ada2978c7f7472706f6f6e6e6e7177818e99a3afbbc7c0b5ab978a7d7064574a3d3124170a0000000000020f1b2835424e5b6875818e9ba89d90837774818d9aa7b4a89c8f827f818e9ba8a09386796d717d8a97a4b0baaea398928f8f8f8f8f8f8f8f8f8f90959fabb8c4b8ab9f95908f8f8f8f8f8f8f8f8f8f877a6d6054473a2d211e14090000000000000000010d1a2733404c58646e747a7f848b92979fa6aebbc0c7d0cec1b5a89b8e817e80818284858688898b8c8d8f909193999597989a9b9c9e9fa3aaaeb4bdc6d1dcdcd4c7bbafa4999083786d60574d42352c1f150b000000000000000000000000000000000000000005111e2a36414d565e616361605c606c7986929facb9b7ab9e9184786875828f9ba9b3bebfb4aa998d8073707c8996a3afb9ac9f928679767676767f8b98a5b2b6aa9d908377767676767e8a97a4b1b3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939facb9b9ac9f9286796c69696969696969717e8b98a4b1beb3a6998d80736e7b8794a1aebab7aa9d9184776a696969696969696e7b8895a1aebbb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a00000000000000000000000005121e2a36424d575e616a69686665646463636262646c7884919eabb7c4c5b8ab9f9285786c5f5245392c1f1200010d1a2734404d5a6773808d9aaca7a9abadb3b2b4b6b8babfc0c2c5c3c0bebab8b5b0a3968a7d81878f949ea0a8afb5bdc3cbc4bcb4aea49c938e827a7d869297a1a8b0b8c0cac9c1bbb3ada69f9a938e86807a736d685e5246392d201307000a1724313d4a5764707d8a97acabadb2bbc4cfcfc6bfbbb9b9bbbfbebfc1c3c4c5c4c2c0bebeb9b8b6b7b8b6aca49fa4acb1b9c3beb3a99f92857a6d636262616162656e7b87929facb9c5beb2a5988b7f7265584c3f3225190c0000000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0bfb4aaa39f9b9b9b9b9b9b9b9b9b9b9d9fa7b1bcc8bcb1a79f9d9b9b9b9b9b9b9b9b9b93877a6d6054473a2d211407020000000000000000000b1824303c48535c64686e72787e858f949da4afb5bdc7cfc6b9ac9f93887f73747677787a7b7c7e7f818283858687898a8b8d8e909192989fa3abb4bfcbd7d5c9bdb2a89f93877c6f665c50453b30231a0d030000000000000000000000000000000000000000020e1925303b444d5254565553515b657885929fabb8b7ab9e9184786b707d8a97a2adbac3b6a99d908376707c8996a3afb9ac9f9286796c6969727f8b98a5b2b6aa9d9083776a6969717e8a97a4b1b3a79a8d8074675a4d4134271a0e0000000000000613202d394653606c7986939facb9b9ac9f9286796c5f5c5c5c5c5c65717e8b98a4b1beb3a6998d80736e7b8794a1aebab7aa9d9184776a5e5c5c5c5c5c626e7b8895a1aebbb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a000000000000000000000000020e1a25303b454d52545d5c5b59585757565656565b6575828f9ba8b5c2c5b8ab9f9285786c5f5245392c1f120003101d293643505c6976838f9a989a9c9fa2a9a5a7aaacaeb4b3b5b8b9bec0c2c5c0b5ab94887b747c828991969fa3abb1b9c0cac6bfbaaea59e948f84879298a2a9b2bac2cac5beb9afa9a19e949087817b736d68615e564c41362a1d1105000c1926323f4c5965727f8c97989ea1a9b2bec9c6bdb5aeacacaeb5b1b3b4b6b8b9bbc0c7d0c9c6c4c2c4bbafa49a939a9fa7b1bcc5baada2978c7f72655b555554535e697683909ca9b6c3c0b3a6998d8073665a4d4033271a0d0000000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0bdbcb4aeaca8a8a8a8a8a8a8a8a8a8aaabb1b9c3cdc2b9b1aba9a8a8a8a8a8a8a8a8a093877a6d6054473a2d2114070000000000000000000008141f2b36414a53565e61666d717b828d929fa4abb5bdc6c8bbafa49a938c7f736d6a676d6e70717274757778797b7c7d7f8081838486889299a3aebac7d3cec5b9ada1968d80746a60544a3f33291f11080000000000000000000000000000000000000000000008141f29323b4146474a4847495f6c7885929fabb8b7ab9e9184786b6d7985929fabb8c5b9ac9f93867a707c8996a3afb9ac9f9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a97a4b1b3a79a8d8074675a4d4134271a0e0000000000000113202d394653606c7986939facb9b9ac9f9286796c60606060606065717e8b98a4b1beb3a6998d80736e7b8794a1aebab7aa9d9184776a606060606060626e7b8895a1aebbb7aa9d9084776a5d5144372a1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000009141f29333b424648514f4e4d4b4b4a4a494949536774818d9aa7b4c0c5b8ab9f9285786c5f5245392c1f120004111d2a3744505d6a778387898b8e90929796989b9d9fa3aaa6a9abadb3b3b5b8baafa499877a6d6f767d848d9299a0a7aebabec5cbc0b7afa69f95919299a3aab3bcc4ccc2bbb3ada59e97928b837c746e69615e56524c443a3025190d01000e1b2734414e5a677480888a8c9197a1adb9c6bfb5aba39f9fa3aba4a6a8a9abacafb6bebfc8d2d1cfc6b9ac9f938790959fabb8c1beb3a99e9184786c605348474d576673808c99a6b3bfc1b4a79b8e8174685b4e4135281b0e0200000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0bfb4aaa39f9b9b9b9b9b9b9b9b9b9b9d9fa7b1bcc8bcb1a79f9d9b9b9b9b9b9b9b9b9b93877a6d6054473a2d21140700000000000000000000030f1a252f3841444c52545c60696e78808b9399a3abb5bdc6c0b6aca49f918c7f736d63606263646667686a666d6e6f717273757677797c86929facb9c5d0c5bcafa59e9184796d60584e42382e21170d0000000000000000000000000000000000000000000000020d1720293036393b3d3b45525f6c7885929fabb8b7ab9e9184786b6674818e9bacb6c0bbafa499897d707c8996a3afb9ac9f9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a97a4b1b3a79a8d8074675a4d4134271a0e0000000000000a131c2d394653606c7986939facb9b9ac9f9286796d6d6d6d6d6d6d6d717e8b98a4b1beb3a6998d80736e7b8794a1aebab7aa9d9184776d6d6d6d6d6d6d6d6e7b8895a1aebbb7aa9d9084776a5d5144372a180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a00000000000000000000000000020d17212930363a3b444341403f3e3d3d3d414d5a6774808d9aa7b3c0c5b8ab9f9285786c5f5245392c1f120003101d2936424f5b6771777a7c7f81838587898b8e909298979a9c9ea1a9a6a9abadac9f9386796c626b7079808790959da4adb3bbc2c9c1b8b0a7a09d9fa3abb4bcc5c7c0bbb0a9a19e938e857e766f6a615e57524c46413a32291e130800000714212d3a4754606d7a7c7d7f85919eabb8c4bbaea3999292999697999b9c9e9fa4acadb5bfcad5cbc3b7aa9d908383909da6b0bbc5b9aca096897d7063544b404a5764707d8a97a3b0bdc2b5a89c8f8275695c4f4236291c070000000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0baaea398928f8f8f8f8f8f8f8f8f8f90959fabb8c4b8ab9f95908f8f8f8f8f8f8f8f8f8f877a6d6054473a2d211407000000000000000000000008131d262f323b41464a50565e666d747f879299a3abb5bdc6beb6afa39c918c7f726d625a5658595a5c545c60616264656768696b74818e99a3aebac7cabeb4aa9e938a7d70675d51463c30261c0f05000000000000000000000000000000000000000000000000050e171f252a2d2e303945525f6c7885929fabb8b7ab9e9184786b64717e8a9aa4afbbc0b5ab998c7f727c8996a3afb9ac9f9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a97a4b1b3a79a8d8074675a4d4134271a0e000000000007111c252e354653606c7986939facb9b9ac9f9286797a7a7a7a7a7a7a7a797f8b98a5b1beb3a6998d80736e7b8794a1aebab7aa9d9184797a7a7a7a7a7a7a7a7a7c8895a2aebbb7aa9d9084776a5d5144312a21180e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000050f171f252a2d2e373635333231313034404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200010e1a27333f4a555f67676d6f727476787a7d7f818386888a8d8f929797999c9fa2a99e928578655b61676d737c838d929fa2a9b1b9c1cac2b9b1acaaacafb5bdc6c6beb6afa69f97928a817a716c625f58524d46413a36302920170c0200000613202c3945515d676d6f707783909daab6c3b9ac9f92878687898b8c8e9091939a9ca3adb8c4cec3b9b1a99d90837c89949eaab7c2bdb2a89b8e8175665c51454855626e7b8895a9b3bec3b6aa9d9083776a5d50442e23180c0000000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0b8ac9f92868282828282828282828283909daab6c3b6a99d90838282828282828282828281796d6053473a2d2014070000000000000000000000010b141d20293036383f444d545c606d727e879299a3abb5bdc7c0bbada39c918b7f726c615a504c4e4f4a5053545657585a5c666f7c87939fabb4bfcbc7baaea2988f82756c61554b41342b1e140a0000000000000000000000000000000000000000000000000000050d14191e20212c3945525f6c7885929fabb8b7ab9e9184786b616d7a87939facb9c1b5a89b8e82757c8996a3afb7ac9f9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a97a4b1b3a79a8d8074675a4d4134271a0e00000000020d18232e373f4653606c7986939facb9baaea3988b868686868686868686868b919ba7b3c0b3a6998d80736e7b8794a1aebab8aca0969186868686868686868686888e98a4b0c3b7aa9d9084776a5d51423b332a1f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a000000000000000000000000000000050d141a1e20212a2928262524242734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000a16222e39434d55555d6063656769686e70727477797b7e808285878a8d8f9297979a9184776b5e555d606a6f79808a92979fa7b0b8c0c8c3bcb8b7b9bbc0c7c4bcb4aca49f948f857e756d68625a544e46423b35302a251e170e0500000004111d2935414c555d60626a7783909daab6c2b6a99c8f82787b7c7e80818385878c919ca8b4c0c8bcb1a7a09c8f8376828f9ca6b0bcc4b8ab9f9285796d6053464753606d7a8697a1adb9c4b7ab9e9184786b544b4034281c100400000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386796d717d8a97a4b0b8ab9e9184787575757575757575757e8a97a4b1bdb0a4978a7e75757575757575757575756d675d5145392c201306000000000000000000000000020b0e171e252a2e343b424a505b626c717e879299a3abb5bec7bfb5ada39f93887e716c61594f46423f444648494a4d57606d7883909aa4afbdc6c7bdb1a79f92867b6e615a50433a2f22190c0200000000000000000000000000000000000000000000000000000002080e12181d2c3945525f6c7885929fabb8b7ab9e9184786b5e687784909daab7c3b7aa9e9184777c8996a3aaaaaa9f9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a97a4aaaaa79a8d8074675a4d4134271a0e0000000006121e2a353f495157606c7986939facb9bfb4aaa39f93939393939393939393989ba3acb7c0b3a6998d80736e7b8794a1aebabdb2a8a09d939393939393939393939598a0aab5c3b7aa9d9084776a5d534d453b31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000002090e1214151e1c1b1a18181a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000006111c27313b43434c51545c606a686563636568666d6e717376787b7d808285888b8e9083766a5d4b515860666d747d8590959ea6aeb6c0cbc8c5c4c5c7cbc4bbb3aaa29a938c827a706c615e565047433c363029251e19130c0500000000010d19242f3a434c51545d6a7783909daab6c2b6a99c8f83766e707173757678797f8c99a6b2bfc5b8aca095908f82757c88949fabb7c6baaea298897d7063564945515d677885919eabb8c4b8ab9f928578665c5145382c1f130600000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a093867979797d8a97a4b0b8ab9e9185786b69696969696969717e8a97a4b1bdb0a4978a7d7169696969696969696969605d554b4035291d11040000000000000000000000000000050d14191c232830383f44515a616c707e879299a3acb6c0ccbfbbafa49a92877e706b60584e443b383a3b3c46525e69727f8c95a0acb6c0cbc0b5ab9f958b7f72695e52483e31281d100700000000000000000000000000000000000000000000000000000000030d151d24292c3945525f6c7885929fabb8b7ab9e9184786b566774818e9aa7b4c1b9ac9f93867a7c89969e9e9e9e9e9286796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a979e9e9e9e9a8d8074675a4d4134271a0e000000000a16222e3a46515b63666c7986939facb9c6bcb4aeaca0a0a0a0a0a0a0a0a0a0a5a7acb5bec0b3a6998d80736e7b8794a1aebac3bab2acaaa0a0a0a0a0a0a0a0a0a0a2a4aab2bcc3b7aa9d9084776a615f574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000205070811100e0d0c0d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000b151f2931313a44515c666d777572706d6868666462646769696e707376797b7e81848275695c4f454e545c606c707b838f939da4aeb9c3cdd1d0d2d3c9beb3a9a198928880786e68615a524c443f37322a251f19130d080200000000000008131e28313a4145505d6a7783909daab6c2b6a99c8f837669636466686967727e8b98a5b1bec3b7aa9d90838581757683909caab4bfbeb4aa9a8d807367554b414b556a7783909daab6c3baaea29886796d6053463a2d20130700000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a09386797e837e8b98a4b1b8ab9e9184787676767676767676767e8a97a4b1bdb0a4978a7e76767676767676767676766d675d5145392c2013060000000000000000000000000000060e151b1f2122262e343f48505a616c717e87929aa4afbbbfccc0b6aca39992867d6f6a5f564d433a303a43505a616e7b86929fa7b1bec7c7bbafa3999083786c60574d42362c1f160c00000000000000000000000000000000000000000000000000000000010b151f272f35383a45525f6c7885929fabb8b7ab9e9184786b5e65727e8b98a5b1bebbafa49a887c7c899191919191919186796c5f65727f8b98a5b2b6aa9d9083776a5d64717e8a9191919191918d8074675a4d4134271a0e000000000c1825323e4b57636d72767986939facb9cfc6bfbab9adadadadadadadadadadb1b3b7bec7c0b3a6998d80736e7b8794a1aebaccc3bdb8b7adadadadadadadadadadaeb0b5bcc4c3b7aa9d908377746e695f53463a2d2114090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000004030200010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000040d171f202d3a4653606d7883817f7c7a777573706e69696663616466656c6e717477796d6053473c424b515961696e79818d929da7b1bcc8d4dddfd2c6b9ada19791867e736c665e565046413a322b26201a140d08020000000000000000010c161f282f3544505d6a7783909daab6c2b6a99c8f8376695c58595b5565727e8b98a5b1bebcafa296897d787a6d717e8a98a2aebac3b7aa9d908477675d51454f5c6975828f9ca8b5c2beb4aa94877a6e6154473b2e21140800000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a0938678828f86929facb8b9ac9f92878283838383838383838383919daab7c4b7aa9d91838383838383838383838382796d6053473a2d2014070000000000000000000000000006101820262b2e2f32312e363e48505a616c717e88939fa4aeb7c0c7beb5aba39892857c6e685e554b4238404b55616c75828f98a2aeb9c3c9bdb2a89f92877c6f665b50453b30241a0d040000000000000000000000000000000000000000000000000000000007121d27313940454748525f6c7885929fabb8b7ab9e9184786b5e626f7c8995a9b3bec0b6ac978a7e7c848484848484848484776a5e65727f8b98a5b2b6aa9d9083776a5d64707d84848484848484847f7366594c403326190d00000005111e2a36424d5666727f837f8c99a5b2bfccd1cbc7c5b9b9b9b9b9b9b9b9b9b9babababababab3a6998d80736e7b8794a1aebabababababab9b9b9b9b9b9b9b9b9b9bbbdc0c6d1c4b7aa9e91847e807b6e6155483b30251a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000000050916232f3c4956626f7c898e8b89878482807d7b787573706d67676562626467676d675c5145383940454f575e676d78808d959fabb8c4d1ddded1c4b8ab9e91857c706c605b544d443e363028201b150e09020000000000000000000000040d161e243744505d6a7783909daab6c2b6a99c8f8376695c504d4e5865727e8b98a5b1bebcafa296897c6f6d686d7986929facb8c5b9ac9f93867a6d6054474e5b6774818e9aa7b4c1bbaea195887b6e6255483b2f22150800000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a093877a86929298a3aebabaaea399928f8f8f8f8f8f8f8f8f8f9195a0acb8c5b8aca095918f8f8f8f8f8f8f8f8f8f877a6d6054473a2d211407000000000000000000000000060f18222a32373b3c3f3d3a34363e47505a626c727f8b929ca5afb8c1c7bdb4aaa29791847a6e675d544a3f45515d67707d8a939eaab4bfcbc4b9aca0968d80736a5f544a3f33291f110800000000000000000000000000000000000000000000000000000000000c18242f39434b515354535f6c7885929fabb8b7ab9e9184786b5e606d7a8797a1adb9bfb2a6998c7f7377777777777777777771616165727f8b98a5b2b6aa9d9083776a61616c707777777777777777736d63574b3e3225180c0000000714202d3a46525e697683908c919ca8b4c0cddcd7d3d2d0c7c0bbb9b6b1aeaeaeaeaeaeaeaeaeaea6998d80736e7b8794a1aeaeaeaeaeaeaeaeaeaeb1b6b8bcc2cbc6c8c9ccd1d2c5b9aca096918b8c7f7266574d42362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000000000c1926323f4c5965727f8c98989696918f8c8a8785827f7d7a7774716f6d666764615e574d42362e343e454d555d666c7783909daab6c3d0ddd6cabdb0a3978a7d706a615a504a423b322a251e160e0a040000000000000000000000000000040c1d2a3744505d6a7783909daab6c2b6a99c8f8376695c5353535865727e8b98a5b1bebcafa296897c6f635d6775828e9ba8b5c1bbafa499897c706356494d5a6673808d99a6b3c0bcafa295897c6f6256493c2f23160900000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a4978b7e8b989fa3aab4bfbfb4aba39f9c9c9c9c9c9c9c9c9c9c9da0a7b1bcc8bcb1a7a09d9c9c9c9c9c9c9c9c9c93877a6d6054473a2d2114070000000000000000000000050f18212a343c4347494b4a463f33353e48505a626d73808d939da6b0b9c3c6bcb3a9a1969083796d665c50444e58606d7984919ea5afbcc6c4bbafa59e9184796d60584e42382d21170d000000000000000000000000000000000000000000000000000000000004101d2935404b555d60615e576c7885929fabb8b7ab9e9184786b5e5d687885919eabb8c1b4a79a8e81746b686d6d6d6d6d6d6d6d6d6d6d727f8b98a5b2b6aa9d9083776d6d6d6d6d6d6d6d6d6d6d6d6866635b51463b2f22160a0000000814212e3b4754616e7b8793999ca3adb8c4d0dce3ddd2c7bdb5afaca9a4a1a1a1a1a1a1a1a1a1a1a1998d80736e7b8794a1a1a1a1a1a1a1a1a1a1a1a4a9abb1b9c2cdd8d6d8e1d5c9bdb2a8a09e97908376695e52463a2d20140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000005121e2a36424d576875828e9ba5a8a09e9b999797918f8c898684817e7c797673716e695e53463a2d28333b45515d67707d8a959fabb8c4d1dddcd0c3b6a99d9083786c60554b41382f292019130c050000000000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f837669606060606065727e8b98a5b1bebcafa296897c6f635565717e8b98a9b2bdc0b5ab988c7f7265594c4c5965727f8c98a5b2bfbcb0a396897d7063564a3d3023170a00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4a99c8f828f9caaaeb4bcc6c6bcb4aeaca8a8a8a8a8a8a8a8a8a8a9abb1b9c2cdc2b9b1aba9a8a8a8a8a8a8a8a8a093877a6d6054473a2d21140700000000000000000000050e17212a333c464e5355585651443f38363e48515b636e74818e949ea7b1bac4c5bbb2a8a0958f82786d605b5155606a74808d96a1adb8c1c9beb2a99d93897d70675d51463c2f261c0f05000000000000000000000000000000000000000000000000000000000006131f2c3845515d676d6e69646c7885929fabb8b7ab9e9184786b5e56697683909ca9b6c2b5a99c8f8276696d7a7a7a7a7a7a7a7a7a7a7a7a7f8c99a6b2b7aa9d90837a7a7a7a7a7a7a7a7a7a7a7a7a6d6154514940352a1e1206000004111d2935404b5565727e8b9aa4a8adb5bfcad5e0e3d7ccc0b5aba49f9c979494949494949494949494948d80736e7b87949494949494949494949494989d9fa7b1bcc8d4e0e5e5d9cec4bab2acaa9f93877b6e6154473b3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000000714212d3a46535f697885919eabb2acaaa8a6a9a19e9c999993908e8b888583807d7b6e6154483b2e2a36424d57606d7984919ea7b1bcc8d4deddd1c4b8ab9f958b7e71675d51453a2f24190e0802000000000000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f83766d6d6d6d6d6d6d727e8b98a5b1bebcafa296897c6f6356616e7b8796a1adb9c1b4a89b8e8175685b4e4b5864717e8b97a4b1bebdb0a4978a7d7164574a3e3124170b00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4ac9f9286929facb9bfc6cabfb4aaa29f9b9b9b9b9b9b9b9b9b9b9d9fa7b1bcc7bcb1a79f9d9b9b9b9b9b9b9b9b9b93877a6d6054473a2d211407000000000000000000040e172029333c454e585f6265625b50494139363f49525c606d78828f95a0a8b2bcc5c4bab1a79e948d80746d62595c676f7c87939fa8b2bdc7c5b9ada1978e81746b60554b40342a1d140a0000000000000000000000000000000000000000000000000000000000000714202d3a4753606d797b76716d7885929fabb8b7ab9e9184786b5e5b6875828e9ba8b5c1b7aa9d9184776c798687878787878787878787878c919ca8b4b8aca0959087878787878787878787878785786c5f5245372e23190d0200000613202c3945515d6775828f9cacb6b8bfc7d1dfe2e0d4c7bbafa499938f8b8787878787878787878787878780736e7b878787878787878787878787878b90959fabb8c4d1dde2dfded6ccc4bdb9afa49a8b7f7265564c4135291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000000815222e3b4855616e7b8897a1adb9b9b7b5b3b3adaba8aba49f9d9a989892908d8a85786c5f5245392d3a46525e6973808d96a1acb9c3cdd2d1d2d4c8bcb1a79e92857a6d60564c4135291d120700000000000000000000000000000000000004111d2a3744505d6a7783909daab6c3b6a99c9082797a7a7a7a7a7a7a7a7f8b98a5b2bebcafa296897c6f63565e697885919eabb8c3b6aa9d9083776a564c4a5763707d8a96a3b0bdbeb1a4988b7e7165584b3e3225180b00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4afa3999299a3afbbc7d0c7baaea298928e8e8e8e8e8e8e8e8e8e90959fabb8c4b8ab9f95908e8e8e8e8e8e8e8e8e8e877a6d6054473a2d2114080000000000000000040d162029323b454d575f6a6f726d605b534a423a374044505c666d79839096a1aab4bdc7c3b9b0a69d928b7f726b61606d79849199a1a9afb6bebbafa59e91847a6d60594f43392f22180b020000000000000000000000000000000000000000000000000000000000000a1623303d495663707d87827e797885929fabb8b7ab9e9184786b5e5a6773808d9aa6b3c0b8ab9e9285786679859294949494949494949494999ca3adb8bcb1a7a09d94949494949494949494949285786c5f5245392c1c12070000000714202d3a4753606d7a86929facb9c5cacfd1d2d5dad2c6b9ac9f9386837e7b7b7b7b7b7b7b7b7b7b7b7b7b7a6d6d787b7b7b7b7b7b7b7b7b7b7b7b7b7e83909da9b6c3d0dbd6d3d2cfcdcec9c0b6ac9c8f8276685d5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000000b1824313e4b5764717e8a97a9b2bec5c4c2bfbeb9b8b5b5afacaaa7aaa29f9c9a9285786b5f52453837424d57616e7b86929fa8b2bdcbc9c5c4c5c9cdc2b9ada1978c7f73685d5245392e23180c00000000000000000000000000000000000004111d2a3744505d6a7783909daab6c3b7ab9f94908686868686868686868b919ba7b3c0bcafa296897c6f6356576875828f9ba8b5c2b8ac9f928579685e524956636f7c8996a2afbcbeb2a5988b7f7265584c3f3225190c00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4b5aba39fa3abb5c0cbd2c5b8ac9f92868182828282828282828283909da9b6c3b6a99d90838282828282828282828281796d6053473a3025190d01000000000000030c161f28323b444d575f696f7c7e736c655c544b433a343f4a545d676e7a849198a2abb5c0ccc1b8aea49f92877d706a606d7a818a91969fa4acb2b3a99e938a7d70685d52473d31271d1006000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c8f8a858186929facb8b7ab9e9184786b5e5965727f8c98a5b2bfb9ada29786796d7985929fa0a0a0a0a0a0a0a0a0a6a8adb5bfc3b9b1acaaa0a0a0a0a0a0a0a0a0a09f9285786c5f5245392c1f1206000003101c28343f4a5464717d8a98a3aeb9bebfc2c5c6c9cfd1c7bbafa499938f8b84807b76706e6e6e6e6e6e6e6e6d67666d6e6e6e6e6e6e6e6e6e747a7f848b90959fabb8c4d0cfcac6c5c2c0bebdb9b7ac9f92867a6d6154473a2f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000004111d2935414c566774818d9aa7b4c0cfd1cecfc9c6c4c2c0bbb9b7b4b4aeaca99e9285786b5f5245383a47535f6974818e98a3aebac4c4bdb9b7b9bdc4c9beb3a99f92857a6d60544b4034281c1004000000000000000000000000000000000004111d2a3744505d6a7783909daab6c3bcb0a69f9c939393939393939393989ba3adb8c3bcafa296897c6f6356596673808c99a6b3bfbaaea298877a6d61544955626f7c8895a2afbbbfb2a6998c7f7366594c403326190d00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4b0a69e9c9ea6b0b9c3ccc4b8ab9e9184787575757575757575757e8a97a4b1bdb0a4978a7e75757575757575757575756d675e564c41362a1d11050000000000030c151e28313a444c565e696e7b858b80776d665d554c443a38424b555e686f7c869299a4afbbc0cac0bbafa39992867c6e68686d757d848e939aa0a8ada1978e81756c61564c41352b1f150b0000000000000000000000000000000000000000000000000000000000000004111d2935414c566875818e9b98928e9298a2aebab7ab9e9184786b5e5864717e8b97a4b1bebeb3a994877a6e7985929facadadadadadadadadb2b4b8bfc7cbc3bcb8b7adadadadadadadadadab9f9285786c5f5245392c1f1206000006121f2b3844505c6674818e9baaabadb3b3b5b8b9bec1c4c5c0b5aba49f9c97918d87827d77716c6561616161605d5c606161616161686e747b81868c91969d9fa7b1bcc6c3c0bebab8b6b3b1b2adaba9a3998b7e7164554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000613202c3945525d687784909daab7c0c7cfd9d5cbc3bcb8b7b7b8bdc0bfbab8ab9e9185786b5e524536414c56626e7b87929faab4bfc4bab2adabadb2bac2c5baada2978c7f73665c5145382c1f150a000000000000000000000000000000000004111d2a3744505d6a7783909daab6c3c2b8b0aba9a0a0a0a0a0a0a0a0a0a5a7adb5bfc9bcafa296897c6f63565764717e8a97a4b1bdbfb4aa95897c6f62564955616e7b8894a1aebbc0b3a6998d8073665a4d4033271a0d00000000020f1b2835424e5b6875818e9ba89d90847774818d9aa7b3a6998d80737e8a97a4aa9e948f949ea7b1bac4c4b8ab9e9185787070707070707070717e8a97a4b1bdb0a4978a7d7170707070707070707070706d685e5246392d20130700000000020b151e273039434c565e686e7b8491928d81786d675d564c443a3a434d565f6a707d87939fa5afb8c2cbc0b5aba29891847a6d66606c707a818891969fa39e92857a6d615a50443a2f23190d03000000000000000000000000000000000000000000000000000000000000000713202c3945525d687784919ea29f9a9fa2aab4bfb7ab9e9184786b585764707d8a97a3b0bdbbaea295887b6f7985929facb8babababababababfc0c4cad1d5cdc8c4c3babababababababab8ab9f9285786c5f5245392c1f120600000713202d3a4653606d798592999c9ea1a9a6a8abadb3b4b7b9bdbdb5afaca9a19e9a938f89837e78706b615e5654515053545960676d737a80868d92999ea0a8abb1b9bbb9b6b3b3adaba9a7a4a8a19e9c9a988f8275675d5145392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000714212d3a4754606d7a86939fa7afb5bdc7d1cec3b9b1acaaaaacb1b3b6b9b8ab9e9185786b5e52453946525e6874818e99a3afbcc6bdb2a8a19ea1a8b0b9c2beb3a99e9185796d6053463c31261a0f020000000000000000000000000000000004111d2a3744505d6a7783909daab6c3cac2bcb7b6adadadadadadadadadb2b3b8bfc7c9bcafa296897c6f635655626f7c8895aab4bfbdb0a4978a7d7164574a54616d7a8794a0b6c0c0b4a79a8d8174675a4e4134271b0e01000000020f1b2835424e5b6875818e9b9f9d90847774818d9aa7b3a6998d80737e8a97a1a19c8f828f959fa8b2bdc5b8ab9e92857d7d7d7d7d7d7d7d7d7d808c99a6b3bfb3a6998c807d7d7d7d7d7d7d7d7d7d7d7d7a6d6154473a2e211407000000000a141d263039434b555d686e7a8491969c938e82796d685d564c443b3b444e58616b727f8c939da6b0bac4c7bdb3aaa0968f82786d6061686d747d848d9299938a7e71685e52483e32281e110700000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8796a0acaba7acaeb4bcc4b7ab9e9184786a646063707c8996a3afbcbcafa396897c707985929facb8c4bdb9b7b6b6b6b7b8bdc3cccec5bebab8b6b6b6b6b9babfc5b8ab9f9285786c5f5245392c1f12060000091623303c4956636f7c888b8d8f929796999c9ea1a9a7abacb2b5b9bbb9b2adaca49f9c95908a837d756e68615a504e565d606b707980868d92989fa3abacb2b8b8b5afacaaa7a9a29f9c9a989596918f8d8b89867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000a1723303d4a5663707d8990959fa3abb5c0cbc8bcb1a7a09d9da0a8a7aaacafab9e9184786b5e5145404b55616e7a86929fabb5c0c0b5aba19691969fa6b0bcc5b9ada1978a7e7164584e43372b1f12060000000000000000000000000000000004111d2a3744505d6a7783909daab6c3d0cdc7c4c3b9b9b9b9b9b9b9b9b9bec0c3c9d0c9bcafa296897c6f635654616d7a8798a2aebabeb2a5988b7f7265584c53606d7a869aa4afbbc1b4a79b8e8174685b4e4135281b0e02000000020f1b2835424e5b6875818e92929290847774818d9aa7b3a6998d80737e8a94949493877a839096a1abb5c0b9ada19792898989898989898989898c929ca8b4c1b4a89c928c8989898989898989898989897d7063574a3d3024170a00000006111b262f38424b555d676d7a839096a0a59e948f837a6d685e564c443b3c464f59626d74818e949fa8b2bcc6c5bcb2a89f948d80736c615d606b70798087908e81756c61564c41362c20160c0000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a8b2b8b4b8babfc6c5b8ab9f92857c76716d666f7c8895a2afbbbdb0a3978a7d707985929facb8bab2acaba9a9a9aaacb2bac3c5bcb4aeaba9a9a9a9acaeb4bdb8ab9f9285786c5f5245392c1f120600000713202d3a4653606d787c7e808285878a8c8f9297989b9ea1a8a9acaeb5b7b9b6afaca7a09d959089817b706c605b585f686d747d848c92989fa3aaaeb4b9b3adababa49f9d9a9797928f8d8b89868482807e7d7b776c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000713202d3a4653606d787e838b9299a3afbbc0c5b8aca095909195979a9d9fa3ab9e9184786b5e514545515c6773808d98a3aebdc7bbafa399918490949fabb7c2beb3a99d9083766a5f53473a2e21160a0000000000000000000000000000000004111d2a3744505d6a7783909daab6c3ccc4bdb9b7b2b2b2b2b2b2b2b2b2b5b6bac1c9c9bcafa296897c6f6356525d687985929facb8c0b3a6998d8073665a4d53606c7986939facb9c1b5a89b8e8275685b4f4235281c0f02000000010e1b2834414e5b6774808585858585827674818d9aa7b3a6998d80737e878787878786787a849199a3afbbbeb3a9a19e96969696969696969696999ca4aeb9c4b9aea49c9996969696969696969696968a7d7063574a3d3024170a0000000b17222d38414a545c676d79839095a0a8afa69f9590837a6d685e564c443a3e47515b606d78829096a1aab4bfcac4bab0a69d928a7e716a5f5960676d737c83847a6d615a50443a30241a0d040000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfc1c5c7cad0c6baada2979289837e79736e7b8895a1aebbbeb1a4978b7e717985929facb8b2a8a19e9c9c9c9da0a8b2bdbeb4aaa29f9c9c9c9c9fa3abb4b8ab9f9285786c5f5245392c1f1206000006131f2c3845515c666d6f717376787a7d808285888b8e9196989c9fa3ababb0bbbbb9b1aca7a09d938e857e736c66616a6f7a818891969fa2aaaeb4b5afaca9a29f9b9993908d8a888583807e7c7a78767472706e6c655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000006131f2c3845515c666d71787f87929fa4aebac3b7aa9d908384878a8d909299999c9184776b5e51444653606d7985929eaab4bfbfb4ab9f92877c82909ca6b0bbc4b8ab9f95887b6e6255483d32271b0f0300000000000000000000000000000004111d2a3744505d6a7783909daab6c3c4bab2acaaa5a5a5a5a5a5a5a5a5a8aaafb7c1ccbcafa296897c6f63564c566a7784919daab7c1b4a79b8e8174685b4e505b657985929facb8c2b5a99c8f8276695c4f4336291c100300000004111d2935414c56646e747878787878767074818d9aa7b3a6998d8073797b7b7b7b7b7b766f7c87929fa6b0bcbbb3adaba3a3a3a3a3a3a3a3a3a3a6a8aeb6bfcabfb6aea8a6a3a3a3a3a3a3a3a3a3a3968a7d7063574a3d3024170a0000030f1b27333f49535c666d79828f959fa7b1b8b0a79f9590837a6e685e564c443a3f44515c666d7a849198a2aebac0cac2b8aea49f92867c6f685e555d606a6f797b6e685d52483e32281e110800000000000000000000000000000000000000000000000000000000000000000005111d2a36414c566875828f9ba8b5bec5c7cbd1d6cabeb3a9a29f95908b85807a7b8794a1aebabeb1a5988b7e727985929facb8aca196918f8f8f9196a0acb8baaea298928f8f8f8f9299a3aeb8ab9f9285786c5f5245392c1f1206000004101c2834404b545c6062646669696e707375787b7e8184888b8f92999c9fa6afb5bdbcb8b1aba59e97928a80786d6c717c848e939aa0a8aeb4bab4aba39f9b97928e8a8683807e7b787674716f6d676967656361605b53493f33271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000004101c2834404b545c60656c727e8b929da8b2bdb8ab9e91857a7a7d808386898d909184776b5e51424d5764717e8a97a1adbcc6baaea3998e81747c89949fabb7c3bcb1a7998c807366584e43382b1f130600000000000000000000000000000004111d2a3744505d6a7783909daab6c3bdb2a8a09e9898989898989898989b9ea5afbac6bcafa296897c6f6356505d697683909ca9b6c2b5a99c8f8276695c4f495f6b7885929eabb8c3b6a99c908376695d5043362a1d10030000000613202c3945525d686d6e6e6e6e6e6e6e6e74818d9aa7b3a6998d80736e6e6e6e6e6e6e696a727f8c949faab4bfbeb9b8b0b0b0b0adadadadadadb0b2b6bdc6cfc7beb7b3b1adadadadadadadadada3968a7d7063574a3d3024170a000005121f2b3744505b656d78818f949fa7b1b9c2b9b1a7a09590837a6e685e564c4339404a545e686f7c86929fa4aeb8c2cac0baaea29891847a6d665c515860666d6e695f564c41362c20160c000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687884919eabaeb3b9bbc0c7cfcfc5bbb3ada79f9d97918c827a8794a0adbabfb2a5998c7f727985929facb7ab9e918482838284919daab7b8ab9f92868283838287929facb8ab9f9285786c5f5245392c1f12060000000c18232e39424b5153565e61666666666669696e7174787b7f82868b90949fa4abb5c0c3bcb8afa9a19e928d8279737e8691969fa4acb2babfb4aba399928f8a85817e7a7774716e696967666666666665625b5453504941382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000000c18232e39424b51535b606c74808d96a0abb5b9ada1978f82757074777a7d80838684776a5e5146525e6976828f9ca9b3bec0b5ab9f92867b6e76828f9ca7b1bcc2b7aa9e9184776a6054473b2e22150900000000000000000000000000000004111d2a3744505d6a7783909daab6c3b9aca096918b8b8b8b8b8b8b8b8b8e939eaab6c3bcafa296897c6f63564f5c6875828f9ba8b5c2b6aa9d9083776a5d50525e6b7885919eabb8c3b6aa9d9083776a5d5044372a1d11040000000714212d3a4754606d7a7b7b7b7b7b7b7b7b7b818e9ba8b4a79a8e817b7b7b7b7b7b7b7b6e616c78828f98a2aebac3c6beb5aca7a4a0a0a0a0a0a0a3a5abb4bdcebeb5aca6a4a0a0a0a0a0a0a0a0a0a0968a7d7063574a3d3024170a00000613202d394653606c77818e939ea6b0b9c2cbc2b9b1a7a09590837a6d685d554b4339424c565f6a717e8a929da6b0bbc4cabfb4aaa1968f82786d60594f545c60625f574d443a30241a0e05000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a87969a9fa2aaacafb5bdc6cecdc5bebab1aba9a1998d807a8693a0b6c0bfb2a6998c7f737985929facb3a6998c807676767f8b98a5b2b6aa9d90837776767885919eabb8ab9f9285786c5f5245392c1f120600000007121d2730394046525e686d73737373737373737373737373767a7e828f9399a4afbbc7c8c1bbb3ada49d948f82808a9298a1a8afb6bec3baaea3999287817d79757373737373737373737373737373726d625646443f382f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000007121d273039404549505a606d79849199a4afbbb3a99e948b7e726a676d7073767a7c6f6255494754616e7b87939facb9c5bbafa4998d817469707d8995a0acb8c5b9aca096897c6f6256493c30251a0e02000000000000000000000000000004111d2a3744505d6a7783909daab6c3b7aa9e91847f7f7f7f7f7f7f7f7f818e9ba8b5c1bcafa296897c6f63564e5b6774818e9aa7b4c1b7ab9e9184786b544a515e6b7784919eaab7c4b7aa9d9184776a5e5144372b1e06000000000b1825323e4b5865717e8888888888888888888e939eaab5a99d938e8888888888888885786c666e7b86929fa8b2bdc2b7aca39b98939393939393979aa2abb6bfbcaca29b9893939393939393939393938a7d7063574a3d3024170a00000b1824313e4b5764717e8a939aa2aab2bac3cbcbc3b9b1a7a09590837a6d675d554b423a444e58616c74808d949fa9b2bdc7c6bcb2a89f948d80736c61574d505355534d453c32281e120800000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c84898e92989c9fa3abb4bcc6d0cfcac2bcb8b3a4988b7e79869aa4afbbc0b3a6998d80737985929facb3a6998c807369727f8b98a5b2b6aa9d9083776a6b7885919eabb8ab9f9285786c5f5245392c1f1206000000000b151e272e3a4754616d7a80808080808080808080808080808080808286939facb9c6d2cdc5beb9aea69e948f8d929fa2aab2bbc0c7c5b9ac9f9286818080808080808080808080808080808080807f7265584c3f332d261d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000007121c27303940444648515d676f7c87939fa8b2bbb0a69f92867c6e66606366676d6f6a5f53474c5665727f8c99a4afbbc6b9ac9f93877b6e616b7783909daab4bebdb2a8998d807366574d42362a1e1205000000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f837672727272727272727e8b98a5b1bebcafa296897c6f63564d5a6773808d9aa6b3c0b8ab9f928578665c50515e6a7784919daab7c4b7ab9e9184786b5e51452d22170b000000000b1825323e4b5865717e8b95959595959595959b9ea5afbaafa59d9a9595959595959285786c5f69737f8c96a0acb8b7b1a79b908b8686868686868a909aa5b1b2b4aa9b908b8686868686868686868686867d7063574a3d3024170a00000a1724303d4955616c737f889298a1a8b1b9c2cbcbc3b9b1a8a0959082796d675c544a3f3c46505a606d78829096a1abb5c0cbc4bab0a69c928a7d70695e544a464847423c332a20160c0000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a6f787d81858a8f9299a2aab4bfcad6d5cdc8beb3a996897c7986939facb9c0b3a79a8d80747985929facb3a6998c807366727f8b98a5b2b6aa9d9083776a6b7885919eabb8ab9f9285786c5f5245392c1f120600000000030c15222f3b4855626e7b888d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8f9399a4afbbc7d4d7cfcac0b8b0a69f9c999ca4aeb4bcc4ccd2c7baaea399928e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d83776a5d514437221b140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000000000c18232e39424a5153545355606a73808d96a0acb9baaea2989083786d6057555c60625f584e46525e687683909cabb5c0bdb2a89c8f8275695f65717e8b98a2aebac3b7aa9d908377695e52463a2d201407000000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f837669656565656565727e8b98a5b1bebcafa296897c6f63564c5966737f8c99a6b2bfbaaea29886796d6053515d6a7784909daab7c3b8ab9e9285786b5f493f33271b0f030000000b1825323e4b5865717e8b98a1a1a1a1a1a1a1a8aaafb7c0b7afa9a7a1a1a1a1a19f9285786c57606d7984919da7acaba79f988b7e797a7a7a7a797d8a97a3a4a5a6a2988b7e797a7a7a7a7a7a7a7a7a7a79786c605346392d20130600000815212d3945505a636d737e869196a0a7b1b9c2cacbc3bab1a79f958f82796d665c5044403e44505c666e7a849199a3afbbc1ccc2b8aea49f92857b6e665c51443e3a37312a21180e0400000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f656c7074797e82879298a2aebac6cfc9c6c4baada297877a7986929facb9c0b4a79a8d81747985929facb3a6998c807366727f8b98a5b2b6aa9d9083776a6b7885919eabb8ab9f9285786c5f5245392c1f120600000000000815222f3b4855626e7b88959999999999999999999999999999999c9fa4abb5c0ccd7dbdad6cac1b8b0aba9a6a8aebabfc6ced8d7cbbfb4aba39f9b99999999999999999999999999999999999084776a5d5144372a1e0a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000004101c2834404a545c6061605b58606d7984919ea5afbbb4aa9f958c7f72695f53515355534e464754616d7a86939facb9c6b9ada196897d706357606d7a85929fabb8c5b8aca095877b6e6154483b2e211509000000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f8376695c5858585865727e8b98a5b1bebcafa296897c6f63564c5865727f8b98a5b2bebeb4aa94877a6d6154505d6a7683909da9b6c3b8ac9f928579655b5044372b1f12050000000b1825323e4b5865717e8b98a4aeaeaeaeaeaeb5b6bac1c9c0bab5b4aeaeaeaeab9f9285786c5f5c66707d8a959fa19e9995908b83776d6d6d6d75828f95969798999b92867a6d6d6d6d6d6d6d6d6d6d6d6d6c665b5044382b1f1206000005111d28343e48515b636c717c8490959fa7b0b8c1c9ccc3b9b1a79f948f81786d605c52483f3f4a545e686f7d87929fa5afbac4cac0baada2979083786d605a50453b30261f180f0600000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e535b6063676d71757a86929facb8c5c4beb9b8b2ab9f9285787985929facb8c1b4a79a8e81747985929facb1a6998c807366727f8b98a5b2b6aa9d9083776a6b7885919eabb1ab9f9285786c5f5245392c1f120600000000000815222f3b4855626e7b8895a1a6a6a6a6a6a6a6a6a6a6a6a6a6a6a8acafb5bdc7d2cfcfcfd1d2cac2bbb7b5b3b4b9c0cad0cfcfcfd1c6bdb4aeaca8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000006121f2c3844515c666d6e6c65686667707d89939da9b3bcb1a79f92867b6e655b50474947433f4a5465717e8b99a4afbbc4b8ab9e9184786c60535d6774818e9ba9b3bebcb1a7988b7e7165584b3e31261a0e020000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f8376695c5555555865727e8b98a5b1bebcafa296897c6f63564b5864717e8b97a4b1bebbaea194887b6e6155505d6a7683909da9b6c3b9ac9f9386796c605346392d2013060000000b1825323e4b5865717e8b98a4b1bbbbbbbbbbc1c2c6ccd2cbc5c2c1bbbbbbb8ab9f9285786c6368686c7683909d96918c88837f7a6d6868686e7b878788898a8c8d8e8e8174676868686868686868686864605b544a3f33281c0f030000000c17222c364049515a616a6f7b8390959fa6afb7c1c9cbc2b9b0a69e938e81746e635a50473e424c56606b727f8c939ea8b2bdc6cabeb3a99f958d80746c61574d42382e23170d0400000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c41495053555d6064687885929fabb8c4bbb2adaba5a99d9083767985929facb8c1b4a79b8e81747985929fa4a4a4998c807366727f8b98a5b2b6aa9d9083776a6b7885919ea4a4a49f9285786c5f5245392c1f120600000000000815222f3b4855626e7b8895a1aeb3b3b3b3b3b3b3b3b3b3b3b3b3b5b9bbc0c2c2c2c2c2c2c4c6c9ccc7c3c2c0c1c5c8c4c3c2c2c2c2c2c2bfbab9b4b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000713202d3a4653606d787b79777573706e74818e97a1adb9baaea3989082776c60564d413b3844505b6675828f9babb5c0bdb2a8998d8073665b505563707d8997a1adb9c1b4a89b8e817568574d42372b1e12060000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f837669626262626265727e8b98a5b1bebcafa296897c6f63564a5764717d8a97a4b0bdbbaea295887b6f6255505d697683909ca9b6c3bbafa49a867a6d6053473a2d2014070000000b1825323e4b5865717e8b98a4b1b3b3b3b3b3b6b8bcc3cbc2bcb7b6b3b3b3b3ab9f9285786b70757575757d89969184807b767575757575757571797a7c7d7e7f8081827c757575757575757575757575716c615549382d22170b0000000006101b242e37404850585f696e7a838f949ea5afb7c1c9cbc2b8b0a69d938c80736c62594f463c444f59626d75828f96a0abb4bfcbc5bbb1a79d928a7e70695e544a3f34281f160c0100000000000000000000000000000000000000000000000000000000000000000000000000030e18222a2f383f44464b5153566c7885929fabb8beb2a9a19e989e9b8e81757885929fabb8c1b4a89b8e817579859297979797978c807366727f8b98a5b2b6aa9d9083776a6b78859197979797979285786c5f5245392c1f120600000000000815222f3b4855626e7b8895a1aeb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b8b9bec4cdd0cfcccbc3bcb8b6b5b5b5b5b5b5b5b5b9bbc0c0c0c0c0c0c0bcb7b6b5b5b5b5b5aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000a1623303d495663707d878583817f7d7b787a85919eabb8bfb4aa9f948b7e72685e52463d394653606c7985929eabb8c5b9aca096887c6f62544a53606d7985929eabb8c4b8ab9e918478695f53473a2d2114080000000000000000000000000004111d2a3744505d6a7783909daab6c2b6a99c8f83766f6f6f6f6f6f6f727e8b98a5b1bebcafa296897c6f63564a5763707d8a96a3b0bdbcafa296897c6f6356505c6976838f9ca9b6c2c0b6a094877a6d6154473a2e2114070000000b1825323e4b5865717e8b98a4a6a6a6a6a6a6aaabb1b9c2b8b0aba9a6a6a6a6a69f928578707d818282828186918481818182828282828282817e71717e818282828281818282828282828282828282817e7164574b3e31241806000000000009121c252e363e464e575e686d79828f939ea5afb7c1cacac1b8afa59c928b7e716b61584e453d47515b606d7a849199a3aebac1cdc2b9aea49f92857b6e665c50443d31281d120700000000000000000000000000000000000000000000000000000000000000000000000000000610181d262d3337394045525f6c7885929fabb8b9ada197918b91968c7f737885929fabb8c1b4a89b8e817579868a8a8a8a8a8a8a807366727f8b98a5a9a9a99d9083776a6b78858a8a8a8a8a8a8a85786c5f5245392c1f120600000000000815222f3b4855626e7b8895a1a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8abadb3bbc4cfd8cdc3b9b1abaaa8a8a8a8a8a8a8a8acafb5bdc7d2cbc2b8b0aba9a8a8a8a8a8a89d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000003101c28343f4a5466737f8c92908e8c8a87858383909daab7c3bcb0a69f92857b6e61594f423c4955626f7c8897a2adb9c4b7aa9e9184776a5f5344505c6675818e9babb5c0b9ada196887b6e6155483b2e2215070000000000000000000000000004111d2a3744505d6a7783909daab6c3b6aa9d90837c7b7b7b7b7b7b7b7b808c99a6b3bfbcafa296897c6f6356495663707c8996a3afbcbcb0a396897d706356505c6976838f9ca9b6c2baaea194877b6e6154483b2e2115080000000b1825323e4b5865717e8b98999999999999999d9fa7b1bcb0a69f9c999999999999928578717e8b8e8e8e8e9296918e8e8e8e8e8e8e8e8e8e8d807473808d8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8073675a4d4034271a0d0100000000000a131c242c343c454d565d676d79818e939ea5afb8c1cacac1b7aea49f92877d706a5f574d433f45525d686f7c87929fa6b0bbc4cbc0baada2979082786d60584e43392f24180d040000000000000000000000000000000000000000000000000000000000000000000000000000060b141b22272b2f3545525f6c7885929fabb8b8ab9e91857f848a8a7e717885929fabb8c1b5a89b8e8275717e7e7e7e7e7e7e7e7c6f65727f8b989c9c9c9c9c9083776a64707d7e7e7e7e7e7e7e7e7064574a3d3124170d0100000000000815222f3b4855626e7b88959c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ea1a9b3bec9d0c8bcb1a79f9d9c9c9c9c9c9c9c9c9fa4abb5c0ccc3b9b0a69f9c9c9c9c9c9c9c9c9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000006121f2b3844505c6676828f9c9d9b99969792909095a0acb8c5c2baaea2988e81756b60544a3f4c5965727f8c98a9b3bebfb4aa9a8d807367584e434a5464717d8a99a4afbbbdb2a9988b7e7165584b3e2f24180c0000000000000000000000000004111d2a3744505d6a7783909daab6c3b8ab9f95908888888888888888888c929ca8b4c1bcafa296897c6f63564956626f7c8995a2afbcbdb0a4978a7d7164574f5c6976828f9ca9b5c2bbaea194887b6e6155483b2e2215080000000b1825323e4b5865717e8b8c8c8c8c8c8c8c8c90959fabb7ab9f94908c8c8c8c8c8c8c8578717e8b989b9b9b9fa19e9b9b9b9b9b9b9b9b9b9a8d807473808d999b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a8d8073675a4d4034271a0d010000000000010a121a222a333b444c555d676d78818e939ea6b0b8c2cac9bfbbafa39992867c6f695e554b40414c56606a727f8c949ea9b2bdc7cabeb3a99f948c7f736a60554b40352920160c010000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f243945525f6c7885929fabb8b7ab9e918478787d827c6f7885929eabb8c1b5a89b8e82756c71717171717171716f6a65727f8b9090909090909083776a616c7071717171717171706c6155493f34291e120600000000000815222f3b4855626e7b888f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9197a1adb9c4c3c3b8ab9f95908f8f8f8f8f8f8f8f9399a4afbbc7bcb1a79f94908f8f8f8f8f8f8f8f84776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000713202d3a4653606d7985929faaa8a6a9a29f9c9da0a7b1bcc8cabeb3aa9e93897c6f665c50444d576975828f9ca8b5c2baaea298897c706356493d4754606d7a86939facb9c1b4a79a8e817467554b4035291d100906010000000000000000000004111d2a3744505d6a7783909daab6c3bcb1a79f9d959595959595959595999ca4aeb9c4bcafa296897c6f63564955626f7c8895a2afbbbeb1a4978b7e7164584f5c6975828f9ca8b5c2bbaea295887b6f6255483c2f2215090000000916222f3c4955626f7c80808080808080808083909daab6a99c9082808080808080807f72717e8b98a4a8a8aca5a3a1a1a1a1a5a8a8a8a79a8d807473808d99a6a8a8a8a6a1a1a1a1a2a8a8a8a8a69a8d8073675a4d4034271a0d01000000000000000810192029323a434b555c666d78818f949ea6b0b8c2cbcbc0b5aba29891857b6e675d514540444e58606c77828f97a1abb5c0ccc5bbb0a69f92877c6f675d51453e32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e3945525f6c7885929fabb8b7ab9e9184786c70766f6a7885929eabb8c1b5a89b8e8275686565656565656565656565717e8383838383838383817467656565656565656565656565625b51463a2e22160900000000000815212e3b4854616e7b82828282828282828282828282828282828282828282828282828285919eabb8b7b7b6b5aa9d9083828282828282828287939facb9c5b8aca095908382828282828282828074675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000916222f3c4955626f7c8898a2aeb4b2b3adaba9aaacb1b9c3ced0c5bcafa59d9083786d60564c535f697885929eabb8c5b8ac9f9285796d6053463a45525d687783909daab6c3b7aa9d908477675d5145392c1f1816120d0700000000000000000004111d2a3744505d6a7783909daab6c3c3b9b1abaaa2a2a2a2a2a2a2a2a2a6a8aeb6bfcabcafa296897c6f63564e55626e7b8895a1aebbbeb1a5988b7e7265584f5c6975828f9ca8b5c2bcafa295897c6f6256493c2f23160900040f1b2530394147545f6a6f737373737373737374818d9aa7b3a6998d8073737373737373726d717e8b98a4b1aba19a9694949494989ba3ada79a8d807473808d99a6aea49c99949494949598a0aab3a69a8d8073675a4d4034271a0d010000000000000000070e172028313a434b545c666d78828f949fa6b0b9c3ccc7bdb4aaa1979083796d605b51483e44505b656d7a859199a4afbbc3cdc2bbafa3999184796d60594f443a2f24190d04000000000000000000000000000000000000000000000000000000000000000000000000040e18222a31373a3c45525f6c7885929fabb8b7ab9e9184786b6369626b7885929eabb8c1b5a89b8e8275727272727272727272727272727276767676767676767472727272727272727272727272726d62564a3e3124180b00000000000714202d3a46525e696e7575757575757575757575757575757575757575757575757575757f8c99a8abaaaaa9a8a6998c80757575757575757e8a99a4afb7b9afa59d9083787575757575757575746e64584c4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000c1926323f4c5965727f8c98aab4bfbfbebab8b6b7b8bcc3c9cfd0cec1b8aca0958b7f72685e5255616e7b8897a1adb9c2b5a99c8f8276675c514538414c566773808d9aa6b3c0b9ac9f92867a6d6053473a2d2525221e181109010000000000000004111d2a3744505d6a7783909daab6c3cbc3bcb8b6aeaeaeaeaeaeaeaeaeb3b4b9bfc8c9bcafa296897c6f635b5b5b616e7b8894a1aebbbfb2a5988c7f72655b5b5c6975828f9ca8b5c2bcafa296897c6f6356493c30231609000915202c37414b53575f61656c6f74797e7f726974818d9aa7b3a6998d80736666666666666665717e8b98a4b1a59a8f8a888888888b919ba7a79a8d807473808d99a6a89c928d88888888888e98a4b3a69a8d8073675a4d4034271a0d01000000000000000000050e161f283039424a545c666d79828f949fa7b1bac4cec5bcb3a9a0958e81756d635a50463f49535e68707d87939fa7b1bcc6cbc0b5aba0968e81746b61564c4135291f160c0100000000000000000000000000000000000000000000000000000000000000000000000a15202a343c43474851525f6c7885929fabb8b7ab9e9184786b5e5c5f6b7885929eabb8c3b7aa9d90837f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7265584c3f3225190c000000000005121e2a36424d575e6169696969696969696969696969696969696969696969696969696e7b88969f9e9e9d9c9c9b9a908377686969696d7984919da0a8aaaca99e93897d70666969696969696967645c52473c3024170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120006121e2b37424d576875828f9ba8b5c2cfcac6c2bcb7b6b8b9bec0c3c5c8bcb1a79f92857a6d61575764717e8a97a9b3bec0b5ab998c7f7266554b40343e4a5764717d8a97a9b3bebbafa399897c6f6356493c3732312e29231b13090000000000000004111d2a3744505d6a7783909daab6c3d0cdc8c4c3bbbbbbbbbbbbbbbbbbbfc1c4cad1c9bcafa296897c6f64686868686e7a8794a1adbabfb2a5998c7f72686868686975828f9ca8b5c2bcafa396897c706356493d3023160a000c1825313d48535d65696e73787c81858a877b6e74818d9aa7b3a6998d8073665a595959595965717e8b98a4b0a3968a7d7b7b7b7b7f8b98a5a79a8d807473808d99a6a6998d807b7b7b7b7c8895a2afa69a8d8073675a4d4034271a0d0100000000000000000000040d161e273038424b545c676d79828f95a0a8b2bcc5cec4bbb1a79e938c7f736c61584e43414c56606b73808d95a0aab4bfcbc7bdb2a89d938a7d70685d52453e31281e130800000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e53555e5e5f6c7885929fabb8b7ab9e9184786b5e5e5f6b7885929eabb8c5b8aca095908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b87796c5f5346392c20130600000000020e1a25303b454d52585f626363636363636363636363636363636363636363636363636978849192929190908f8e8d8d877a6d63636774808b8e91969a9d9fa2978e81756b63636363636363605d55524a41362b1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5bcb0a396897d7063564a3d3023170e0600000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000814212e3a47535f697885929eabb8c5d1cdc2b8b0aba9abadb3b3b7b8bcc3baada2978d8074695f5a6773808d9aa6b3c0bbafa399897c706356494343434854616e7b8797a1adb9c0b5ab988b7f7265584c43433f3e3a342d251b110700000000000004111d2a3744505d6a7783909daab6c3ccc4bdb9b7b2b2b2b2b2b2b2b2b2b5b6bbc1c9c9bcafa296897c6f7174747474747a8794a0adbabfb3a6998c8074747474747475828f9ba8b5c2bdb0a3968a7d7063574a3d3024170a000e1b2734414d59656f757b7f84898e92988e817474818d9aa7b3a6998d8073665a4d4d4d4d5865717e8b98a4aea295887b6f6e6e717e8a97a4a79a8d807473808d99a6a5988c7f726e6e6e7a8793a0ada69a8d8073675a4d4034271a0d010000000000000000000000040c151e263039424b555d676d7a839096a1a9b3bdc6cdc3b9afa59f93887e706a5f554b41444f59606d79839098a3aebac2cec3baafa59e91847a6d60594f433a2f24190d0100000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f626b6b6b6c7885929fabb8b7ab9e9184786b6b6b6b6b7885929eabb8c5bcb1a7a09d9898989898989898989898989898989898989898989898989898989898989898989898989286796c5f5346392c201306000000000009141f29333b47535f6a6f7070707070707070707070707070707070707070707070707075818a8685848483828181807f7b70707070707b7e81848b8e91939a92857a7070707070707070706d675d5145392c201a0e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c3bcb0a396897d7063564a3d302920181006000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000815222f3b4855626e7b8897a1adb9c0c8c7bcb0a69f9c9ea1a9a6aaacb1b9beb3a99f92867b6e61586976828f9ca9b5c2b9ac9f92867a6d60535050505050535e697885929eabb8c1b4a79a8e817467544a50504c4a463f372d23180d01000000000004111d2a3744505d6a7783909daab6c3c4bab2acaaa5a5a5a5a5a5a5a5a5a8aaafb7c1ccbcafa296897c717e8181818181818e9ba8b4c1c3b7aa9d90838181818181818184919eabb7c4bdb0a3978a7d7064574a3d3124170a000f1c2835424f5b687581888c91969a9f9f92867b74818d9aa7b3a6998d8073665a4d4b4b4b5865717e8b98a4aea295887c777777777e8a97a4a79a8d807473808d99a6a5988c7f777777777a8793a0ada69a8d8073675a4d4034271a0d01000000000000000000000000030c151e273039434b555d686e7b849197a2abb4bfcbcbc1bbafa49a92867c6f675d51453f45515c666f7c86929fa6b0bcc6ccc0b9ada1978e81746b61554c4135291d11040000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a6f787878787885929fabb8b7ab9e918478787878786d7885929eabb8c5c3b9b1acaaa5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59f9286796c5f5346392c2013060000000000020d17222f3c4855626f7c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e7e7d7d777776757a7d7d7d7d7d7d7d7d7d7d7d7d7d7e818486938e817d7d7d7d7d7d7d7d7d7d796d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7b7b7b0a396897d7063564a413a322a22180f090a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0d1a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000b1825323e4b5865717e8b959da4aeb6c0c4b7ab9f9490919797999da0a7b1bdbaaea3998e81756a5f687885919eabb8c3b7aa9d908377675d5d5d5d5d5d5d5d576976828f9ca9b5c2b6aa9d908377665b5d5d5d585651493f34291e1206000000000004111d2a3744505d6a7783909daab6c3bdb2a8a09e9898989898989898989b9ea5afbbc6bcafa296897c74808d8e8e8e8e8e939eaab6c2c5b8aca095908e8e8e8e8e8e8e9196a1adb9c5bdb0a4978a7d7164574a3e3124170b000c1925323f4c5865727f8b969ea0a8aba3998d8074818d9aa7b3a6998d8073665a575757565865717e8b98a4b1aa9e91848484848484919eaba79a8d807473808d99a6ab9e91858484848483919daab3a69a8d8073675a4d4034271a0d0100000000000000000000000000030c151e273039434c565e696f7c859299a3aebac0caccc0b6aca2989184796d605b5146404b545f6a727f8c949faab4bfcac9beb2a99d938a7d70675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c848484848488939facb9b9ac9f92878484848484797885929eabb8c5cbc3bcb8b7b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b68748189898989898989898989898989898989898989898989898989898a8a8983776a69717d898989898989898989898989898b8e91939a938e898989898989898989887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929faaaaaaaaaaa396897d706356524c443c342a211816171818181818181818181818181818181818181818181818181a2734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200091623303c4956636f7d838d929da4aebac3b6a99c908285878a8d9095a0abb5bfb4ab9f93877c6f6a6d7a8797a1adb9c1b4a79b8e81746a6a6a6a6a6a6a6a6a6a6a73808d9aa6b3c0b8ac9f9285796c6a6a6a6a65625b51463a2e221609000000000004111d2a3744505d6a7783909daab6c3b9aca096918c8c8c8c8c8c8c8c8c8e939eaab6c3bcafa296897c74808d9a9b9b9b9b9ea5afbac6c8bcb1a7a09d9b9b9b9b9b9b9b9ea1a8b2bdc9beb1a4978b7e7164584b3e3125180b000713202d3a4653606d7984919ea9b2b4ab9e928579818d9aa7b3a6998d80736664646464636065717e8b98a4b1aca09691909090909196a1ada79a8d807473808d99a6ada19791909090909195a0acb3a69a8d8073675a4d4034271a0d010000000000000000000000000000030c151e27313a434d575f6a707d87929fa4aeb8c1ccc7beb4aaa0968e81756d62584e44424e58606c78829098a2aebac2c9c2bbafa59e91847a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8891919191939aa4afbbbbafa3999291919191867a7885929eabb8c5d1ccc7c3c2babababababababababababababababababababababababababababebebebebebeb9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9696969696969696969696969696969696969696969696969697979084776a64717d8a969696969696969696969696979a9d9fa49e9b969696969696969695887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929d9d9d9d9d9d9d96897d7063615e564e463c332a202324252525252525252525252525252525252525252525252525252734404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f12000915222f3b4854606b6f78808d929da8b2bdb3a79a8d80787a7d80839099a3afbbbbafa49a8f827776767d8996a9b2bebfb2a5988c7f767676767676767676767676767e8b98a4b1bebaaea298887b7676767676726d62564a3e3125180b000000000004111d2a3744505d6a7783909daab6c3b7aa9e91847f7f7f7f7f7f7f7f7f818e9ba8b5c1bcafa296897c74808d9aa7a7a7a8aaafb7c1cbcec3b9b1acaaa7a7a7a7a7a7a7abadb2bac4cfbeb1a4988b7e7165584b3e3225180b0006131f2c3845515c67727f8b97a2adb9ada1978b7e818d9aa7b3a6998d80737171717171706b65717e8b98a4a9a9a8a09e9d9d9d9d9ea1a8a9a79a8d807473808d99a6a7a9a19e9d9d9d9d9da0a7a7a7a69a8d8073675a4d4034271a0d01000000000000000000000000000000030c151f28313b454e58606b717e8a929ca6b0bac3cdc6bcb2a89e938b7f726a60564c4144505b666e7b86929fa7b1bdbdb9b0aba39f968e8174675b4e4134281b0e0100000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c88959e9e9e9fa4acb6c0c0b5aba39f9e9e9e93867a7885929eabb8c5cac1bbb7b5adadadadadadadadadadadadadadadadadadadadadadadadadadadb5b7bbc2cac5b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39d9084776a64717d8a97a3a3a3a3a3a3a3a3a3a3a3a4a7aaacafa9a7a3a3a3a3a3a3a3a295887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986909090909090909090897d70686d685f584e453b322c2f30323232323232323232323232323232323232323232323232323234404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120007131f2c38434f5960666d74808d96a0acb9b9ac9f93887d7070737b87929fabb5c0b6ac9f948f83838384919eaab7c4c4b7aa9e91848383838383838383838383838383919daab7c4bfb4aa9d918383838383837f7265584c3f3225190c000000000004111d2a3744505d6a7783909daab6c2b6a99c8f837672727272727272727e8b98a5b1bebcafa296897c74808d9aa7b3b4b4b6bac1c9d3d5cbc3bcb8b7b4b4b4b4b4b4b4b7b9bdc4cccbbeb1a5988b7e7265584b3f3225180c0004101c2834404b55606d7a85929fabb5b3a99d9083828f9ca9b5a89c8f827e7e7e7e7e7e7d7065717e8b989c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9a8d807473808d999a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8d8073675a4d4034271a0d0100000000000000000000000000000000030d161f29333c464f59616c73808d949ea8b1bbc5cec3baafa59f92877c6f685e52463f4a545f69727f8c959fabb4b2aca69f99928d857f7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2ababacafb6bec7c7bdb5afacababa093867a7885929eabb8c5c1b8b0aaa8a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a9aab0b8c2c5b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0aa9d9084776a64717d8a97a4b0b0b0b0b0b0b0b0b0b0b1b4b7b9bbb6b4b0b0b0b0b0b0afa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d2a3743505d6a7683848484848484848484837c6f717a6f6a5f574d443b383c3d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e404d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200030f1b27323d474f545c606d7984919ea6b0bbafa49a9184796d6974818e99a3afb5afaca69f959090909196a0acb9c5c5b8aca09691909090909090909090909090909195a0acb8c5c6b8aca09591909090908d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c2b6a99c8f837669656565656565727e8b98a5b1bebcafa296897c74808d9aa7b3c0c1c2c6cbd3dbddd5cec8c5c3c1c1c1c1c1c1c1c4c5c9cfc6c6beb1a5988b7e7265584b3f3225180c00000c18232e3945515d6773808d99a4afb8aca095908f949fabb7aa9e948f8a8a8a8a8a8a827669717e8b8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8d807473808d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8073675a4d4034271a10060000000000000000000000000000000000040d17212a343d47505a606c78828f95a0a9b3bec7ccc1bbaea39991847a6d615a5045424d57606c78839099a3aea8a19e948f87807a726d62564a3d3124180b0000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afb7b9bbc0c7d0cfc7c0bbb9b7ada093867a7885929eabb8c5bbb0a69e9c9494949494949494949494949494949494949494949494949494949c9ea6b0bbc5b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4bcbcb8b0aba9a8a8a8a8a8a8a8a8a8a9aab0b8bcbcb7aa9d9084776a64717d8a97a4b0bcbcbcbcb8b6b2b2b2b2b2b2b2b2b2b2b5b7bbbcbcbbafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936424e5b667176777777777777777777776f717e857c6f695f564d4444484a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4d5a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000a16212b353d424a515c67707d8a949fabb5b6aca0968d80736a6e7b87929fababa39f9a999c9d9d9d9ea0a8b2bdc8c8bdb2a8a09e9d9d9d9d9d9d9d9d9d9d9d9d9d9da0a8b1bdc8c8bcb1a7a09d9d9d9d9a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c2b6a99c8f8376695c5959595965727e8b98a5b1bebcafa296897c74808d9aa7b3b9b9c4c5c8ced5ddd4cdc7c4c3b9b9b9b9b9b9b9b9b9b9b9b9b9b9b2a5988b7f7265584c3f3225190c000007121d2935404b55616e7b87939facb9b1a7a09d9c9fa6b0bbb0a69e9c97979797978f837669707d828383838383838383838383838383838383837f72707e808181818181818181818181818181818181807e7064574a3e362c22170c000000000000000000000000000000000000050f18222b353e44505b666d79839197a2acb6c0cccbbfb5aba1968f82756d62574d4244505b666e7c86929fa29f96918a827c746d68625b51463a2e2215090000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc5c7cbd1d8d7d0cac6c5b9ada093867a7885929eabb8c5b7aa9e948f8787878787878787878787878787878787878787878787878787878f949eaab7c5b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4c1bbb0a69f9c9b9b9b9b9b9b9b9b9b9c9ea6b0bbc3b7aa9d9084776a64717d8a97a4b0bdc2b9b1aba9a5a5a5a5a5a5a5a5a5a5a8aab0b8c1bbafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26323e4a555f666a6a6a6a6a6a6a6a6a6a6a707d8791857b6e695e564c4f555758585858585858585858585858585858585858585858585858585858585a6773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000040f19232b3039404b55616b76828f99a3afbbb2a89f92877c6f6974818e99a49f99928e8d929ca9a9aaacb2bac3cecec3bab2acaaa9a9a9a9a9a9a9a9a9a9a9a9a9aaacb1bac3cecec3b9b1acaaa9a9a79a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c2b6a99c8f8376695c5959595965727e8b98a5b1bebcafa296897c74808d9aa7adadadb7b8bdc3ccd4cbc2bcb7b6adadadadadadadadadadadadadadada5988c7f7265594c3f3226190c0000000d18242f3a46525e6975828f9ca9b3b9b1acaaa9abb0b8c1b8b0aaa8a4a4a4a49c8f8376696b7076767676767676787979797979797979767676726d6c7074747779797979797979797674747474747474706c615550483e33281d11050000000000000000000000000000000000000610192328333f4a545d676e7b85929aa4afbbc2cdc6bdb2a89e938b7e71695f544a404a545f6a73808d9698928c847d766f6a615e5651493f34291d12060000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afb4b9bbbfc6cfcec6bfbab8b4ada093867a7885929eabb8c2b5a89c8f827a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a828f9ca9b5c2b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4c1b7ab9f94908e8e8e8e8e8e8e8e8e8f949eaab7c3b7aa9d9084776a64717d8a97a4b0bdbcb1a79f9d989898989898989898989c9ea6b0bbbbafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d38434d555b5d5d5d5d5d5d5d575f696f7c86929791847b6e685e555961636565656565656565656565656565656565656565656565656565656565656773808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f120000000710191e272f39434f59626f7c87929faab4bbafa3999083786c6e7b87939a938e8781808d99a6b3b7b9bdc3ccd5d5ccc3bdb8b7b6b6b6b6b6b6b6b6b6b6b6b6b6b7b8bdc3ccd5d5ccc3bcb8b7b6b3a79a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c2b6a99c8f837669666666666666727e8b98a5b1bebcafa296897c74808d9aa0a0a0a0aaacb2bac3cdc2b9b0aba9a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0988c7f7265594c3f3226190c00000007131d2a36424d5763707d8a97a1adb9bcb8b7b6b7bbc2cac1bbb7b5b1b1b1a99c8f837669646469696969696b78848686868686868686817569656464646a778386868686868686868276696767676767646464615a5045392d21140800000000000000000000000000000000000000071117222d38424c555f69707d88939fa6b0bbc5cfc4bab0a69f92867b6e665c5144424e58606d7984918e867f79716c625f58524c443f372d23180d010000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2a7a7acaeb5bdc6c6bcb4aeaca7a7a093867a7885929eabb8c1b5a89b8e82756e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e75828f9ba8b5c2b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4c1b6a99c9082828282828282828282828f9ca9b5c2b7aa9d9084776a64717d8a97a4b0bdb8ab9f95908b8b8b8b8b8b8b8b8b8b8f949eaab7bbafa295887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27313b434a4e50515151514c565e696e7b859198a19691837a6d675d616b707171717171717171717171717171717171717171717171717171717171717173808d9aa6b3c0c5b8ab9f9285786c5f5245392c1f1200000000070c151d27313e47535f6a74818e98a3aebab5ab9f948b7e716a75818e8f87817b747f8b98a5b2bec5c8cec6c6c6c6cec8c5c4c3c3c3c3c3c3c3c3c3c3c3c3c3c4c5c8cec6c6c6c6cec8c5c4c0b3a79a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c2b6a99c8f837673737373737373737e8b98a5b1bebcafa296897c74808d93939393939da0a8b2bdc7bcb0a69f9c93939393939393939393939393939393938c7f7265594c3f3226190c000000010e1a25303b4653606d7985919eabb8c3c4c3c2c4bfbdbbbbbbbbbbbbbbb6a99c8f83767071717171717171717885929292929292928f82757171717171717784919292929292929083767171717171717171716c6155493d3023170a000000000000000000000000000000000000000006111c262f3a434d57616b73808d949fa9b3bec7ccc1baaea2989083786d60584e4245515d67707d88817b736d67615a534e46413a322d251b1106000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c88959b9b9b9fa3abb5bfbfb4aaa29f9b9b9b93867a7885929eabb8c1b5a89b8e82756861616161616161616161616161616161616161616161616875828f9ba8b5c2b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4bcb0a396897d7575757575757575757b8894a1aebbb7aa9d9084776a64717d8a97a4b0bdb6a99d90837f7f7f7f7f7f7f7f7f7f828f9ca8b5bbafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2831383e42434444434c565e686e7b849197a1a8a0959083796d6763707d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e828f9ca9b5c2c5b8ab9f9285786c5f5245392c1f120000000000030b151f2b37434e58616e7b86929faab4bdb0a69e9184796d6f7c88827c756e727f8b98a5b2b9b9b9b9b9b9b9b9b9b9b9b9c5c6c9cfd0d0d0d0d0d0c6c0bcbbb9b9b9b9b9b9b9b9b9b9b9b9b3a79a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c3b7ab9e9184808080808080808080828f9ca8b5c2bcafa296897c74808686868686869196a0acb8c4b7ab9f94908686868686868686868686868686868686867f7266594c3f3326190c0000000009141f2b3844505c6674808d9aa8b2bdc8c6beb7b2b1afafafafafafafafa99c8f83767d7e7e7e7e7e7e7e7e7e86929f9f9f9f9f9d90837e7e7e7e7e7e7e7e85929e9f9f9f9f9e91847e7e7e7e7e7e7e7e7e7e7164574b3e3124180b0000000000000000000000000000000000000000000a141d28313c454f59606d78829097a1acb6c0cccabfb4aa9f958c80736a60544a404b55616b707b756e69605c555047433c353028201b130900000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c888e8e8e8e9299a3aebbbaaea298928e8e8e8e867a7885929eabb8c1b5a89b8e82756d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d75828f9ba8b5c2b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4bcb0a396897d70686868686868686e7b8894a1aebbb7aa9d9084776a64717d8a97a4b0bdb4a89b8e8175727272727272727273808c99a6b3bbafa295887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f272d32363139434b555d686d7a839196a1a9b1a79f958f82796d6676838b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f949fabb7c3c5b8ab9f9285786c5f5245392c1f12000000000000030d1a26313c46525e6974808d98a2aebab9ada1968c80736a767b756f6a65727f8b98a5adadadadadadadadadadadadadb8b9bec5cdd6dcdccdc4bbb4b0aeadadadadadadadadadadadadada79a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c3b9aca196918c8c8c8c8c8c8c8c8c8f949eaab7c3bcafa296897c6f797a7a7a7a7a7984919daab7c3b6a99c9083797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786d6053463a2d2013070000000003101c28343f4a54626f7c8896a0acb8c5beb4aca6a4a2a2a2a2a2a2a2a2a29c8f8376828b8b8b8b8b8b8b8b8b9298a2acacacaca095908b8b8b8b8b8b8b8b9297a1acacacaca096918b8b8b8b8b8b8b8b8b85786b5f5245382c1f12000000000000000000000000000000000000000000020b161f2a333e44505c666e7b85929aa4afbbc3d0c6bcb1a79f93877c6f665c5144434f59616a6e6a615e57514b433e373129251e160e090100000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b818181818187929facb9b8ac9f92868181818181797885929eabb8c2b5a89b8f81797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79828f9ca8b5c2b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4bcb0a396897d70635b5b5b5b5b616e7b8894a1aebbb7aa9d9084776a64717d8a97a4b0bdb4a89b8e8175686565656565656673808c99a6b3bbafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d0e162028313a434b555d676d7a839095a0a8b2b9b1a79f948f82786d768390989898989898989898989898989898989898989898989898989898989898989c9fa6b0bbc7c5b8ab9f9285786c5f5245392c1f12000000000000000a15202a36424d57616e7a86929faab4bdb2a99f92867a6e6a6e6a625f65727f8b98a0a0a0a0a0a0a0a0a0a0a0a0a0a0abadb3bbc5cfdad6ccbbb2a9a4a1a0a0a0a0a0a0a0a0a0a0a0a0a0a09a8d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c3bdb2a8a19e9999999999999999999c9ea6b0bbc7bcafa296897c6f6d6d6d6d6d6d7784919daab7c3b6a99d9083766d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d665c5144382c1f120600000000000b17232e384754606a7784919eaab7c4b7aca29a97959595959595959595958f8376828f97979797979797979fa2aab4b9b9b1a7a09d97979797979797979ea1a9b3b9b9b2a8a09e97979797979797979285786b5f5245382c1f1200000000000000000000000000000000000000000000040d182128343f4a545e69707d88939fa8b2bdc7cec3bbafa4999083786d60584e42474f585f625f58524d454039312b262019130c04000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e696e747474747885929fabb8b7ab9e918478747474746d7885929eabb8c5b6aa9e938f8686868686868686868686868686868686868686868686868686868f949eaab7c5b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4bcb0a396897d70656565656565656e7b8894a1aebbb7aa9d9084776a64717d8a97a4b0bdb4a89b8e8175686565656565656673808c99a6b3bbafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c162028323a434b555d676d79829095a0a8b1bac3b9b0a69e948e81787683909ca4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a9abb0b8c2ccc5b8ab9f9285786c5f5245392c1f1200000000000000030e1a25303b46525e6873808d98a2aebabaaea2988d807469625f585865727f8b9393939393939393939393939393939ea1a9b3bec9d5cfc4baa9a098959393939393939393939393939393938d8074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c3c4bab2acaba6a6a6a6a6a6a6a6a6a8aab0b8c1ccbcafa296897c6f63606060606a7784919daab7c3b7aa9d9084776a60606060606060606060606060606060605c544a4034281c1004000000000006111c2b37434e586673808d99a8b2bdb2a69a908a88888888888888888888888276828f9ca4a4a4a4a4a4a4acaeb4bcc5c3b9b1acaaa4a4a4a4a4a4a4a4abadb3bbc5c3bab2acaaa4a4a4a4a4a4a49e9285786b5f5245382c1f120000000000000000000000000000000000000000000000060f17232e38424d57616b74808d96a0abb5c0ccccc0b5aba0958c7f736a5f544a3f464e5355534e46423b342f271f1b150d0802000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e616868686c7885929fabb8b7ab9e9184786b6868686b7885929eabb8c5bbafa59e9b9393939393939393939393939393939393939393939393939393939c9ea6b0bbc5b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4bcb0a396897d7272727272727272727b8894a1aebbb7aa9d9084776a64717d8a97a4b0bdb4a89b8e8175727272727272727273808c99a6b3bbafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a444c555d676d798290959fa7b1bac3c8c0b7afa59d938b7e7683909ca9b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b5b7bbc2cad2c5b8ab9f9285786c5f5245392c1f12000000000000000009141f2a36414c56616d7a86929faab4bfb4aa9f92867b6e61584e5865727f868686868686868686868686868686869297a1adb9c6d2c9bdb2a8988e88868686868686868686868686868686868074675a4d4134271a0e010000000004111d2a3744505d6a7783909daab6c3ccc4bdb9b7b3b3b3b3b3b3b3b3b3b5b7bbc1cac9bcafa296897c6f635653535e6a7784919daab7c4b7aa9d9184776a5e53535353535353535353535353535353514a42392e23180c000000000000000f1b27323c4955626f7c8896a1acb9b1a4978a7e7c7c7c7c7c7c7c7c7c7c7c7b76828f9ca9b1b1b1b1b1b1b8babfc5cecbc3bcb8b7b1b1b1b1b1b1b1b1b8b9bec5cdccc3bdb8b7b1b1b1b1b1b1ab9e9285786b5f5245382c1f1200000000000000000000000000000000000000000000000006111c26303b454f59606d79849199a4afbbc3cec5bdb1a79f92867c6e665b50443c43474847433c363029231d150d0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b454d53545b5b5f6c7885929fabb8b7ab9e9184786b5e5b5f6b7885929eabb8c5c1b7afaaa8a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a8aab0b8c1c5b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4c0b3a79a8d807e7e7e7e7e7e7e7e7e7f8c99a6b2bfb7aa9d9084776a64717d8a97a4b0bdb6a99d90837e7e7e7e7e7e7e7e7e7e828f9ca8b5bbafa295887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a444c565d676d79828f949fa7b1b9c3c8c0b6aea59d938e81787683909ca9b6bebebebebebebebebebebebebebebebebebebebebebebebebebebebec2c3c7cccfcfc5b8ab9f9285786c5f5245392c1f120000000000000000020d1925303b46525e6874808d98a3aebabbaea3998e81756a5f5353606d78797a7a7a7a7a7a7a7a7a7a7a7a7a7a7985929eabb8c5d1c5b9ada196887c7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79786d6053463a2d201307000000000004111d2a3744505d6a7783909daab6c3c8cec9c5c4bfbfbfbfbfbfbfbfbfc2c3c7ccc8c8bcafa296897c6f635649515d6a7784909daab7c3b7aa9e9184776b5e5147474747474747474747474747474644403930271c1207000000000000000a15222e3b4754606a7884919eabb7b1a5988b7e726f6f6f6f6f6f6f6f6f6f6e76828f9ca9ababababababacafb5bdc7c6bcb4aeacababababababababacafb5bdc7c6bdb4aeacababababababab9e9285786b5f5245382c1f12000000000000000000000000000000000000000000000000000a151e29333e45515d676f7d87939fa8b2bdc1bcb4aea8a0999083786c60534639373a3b3a37312a251f18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b4246484e525f6c7885929fabb8b7ab9e9184786b5e525f6b7885929eabb8c5c9c1bbb6b5adadadadadadadadadadadadadadadadadadadadadadadadadadadb5b7bbc1cac5b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4c1b5a99d928d8b8b8b8b8b8b8b8b8b8c919ca8b4c3b7aa9d9084776a64717d8a97a4b0bdb8ab9f95908b8b8b8b8b8b8b8b8b8b8f949eaab7bbafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c565e686d79828f949fa6b0b9c2ccbfb6aea49d938e81786c7683909ca9b6c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b8ab9f9285786c5f5245392c1f1200000000000000000008141e2a36414c56616e7b86929fabb5bfb5ab9f93877c6f6257505c666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6e7b8897a1adb9c6d1c4b8ab9e9184786d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d665c5044382c1f1206000000000004111d2a3744505d6a7783909daab6bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbafa296897c6f635649515d6a7784909daab7c3b8ab9e9185786b5e52453a3a3a3a3a3a3a3a3a3a3a3a3a3a38342e271e150b000000000000000006131f2b37434e586774808d9aaab4b5a89b8e8275686262626262626262626976828f9c9e9e9e9e9e9e9e9fa4abb5c0bfb4aaa39f9e9e9e9e9e9e9e9e9fa3abb5c0bfb4aba39f9e9e9e9e9e9e9e9e9285786b5f5245382c1f1200000000000000000000000000000000000000000000000000030c17212935404b55606b73808d96a0acb8b8afaaa29f959189817a6d6054473a2d2e2f2e2b26201a140c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212931363a3b45525f6c7885929fabb8b7ab9e9184786b5e525f6b7885929eabb8c2c2c2c2c2c2b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c2c2c2c2c2c2b9ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4c1b9aea49d9a989898989898989898999ca3adb8c3b7aa9d9084776a64717d8a97a4b0bdbcb1a79f9d989898989898989898989c9ea6b0bbbbafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686d7a8390949fa6b0b8c2c7c0bbada49d928d81786c667683909ca9b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ab9f9285786c5f5245392c1f12000000000000000000020d1925303a46525e6874818d99a3afbbbbafa4998e8175695f53545c606060606060606060606060606065727e8b98a9b3bec9cec1b4a89b8e817568606060606060606060606060606060605c544a3f34281c1003000000000004111d2a3744505d6a7783909daaafafafafafafafafafafafafafafafafafafafafafafafafa296897c6f635649505d6a7783909daab6c3b8ab9e9285786b5f52452d2d2d2d2d2d2d2d2d2d2d2d2d2d2c28231c150c030000000000000000030f1b27323d4a5663707d8998a2aeb8ab9e9285786a5f555555555555555c6976828f91919191919191919399a4afbbbaaea3989291919191919191919299a3afbbbaaea3999291919191919191919185786b5f5245382c1f120000000000000000000000000000000000000000000000000000050f18242f39434f59606d7984919da5afaca59e98928c847d756d675d5145392c2122211f1a150e09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d3945525f6c7885929fabb8b7ab9e9184786b5e525f6b7885929eabb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ac9f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4c1c0b6aea9a7a5a5a5a5a5a5a5a5a5a6a8adb6bfc3b7aa9d9084776a64717d8a97a4b0bdc2b9b1aba9a5a5a5a5a5a5a5a5a5a5a8aab0b8c1bbafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8390959fa6b0b8c2c7beb6afa49c928d80776c66697683909ca9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99f9285786c5f5245392c1f120000000000000000000008131e2a36414d56616e7b87929facb9c0b5ab9f93877b6e62574d50535353535353535353535353535b6575828e9ba8b5c1cfc9beb2a9988b7e716558535353535353535353535353535353504a42382e23170c00000000000004111d2a3744505d6a7783909da2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a296897c6f635649505d6a7783909daab6c1b8ac9f9285796c5f4a3f33282020202020202020202020201f1c18120b03000000000000000000000a13202d3a4653606d7985929facb8ada197887b6e625549494949494e5b68758184858585858585858487939facb9b8ac9f9286848585858585858487929facb9b9ac9f928784858585858585858583776a5d5144372a1e1100000000000000000000000000000000000000000000000000000007121d27313d45515c676f7d89939ea7a09d938e867f78706b605d554c4135291d1514120f0a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e2c3945525f6c7885929fabb8b7ab9e9184786b5e525f6b7885929ea8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89f9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7b4bbbbbbb9b5b3b1b1b1b1b1b1b1b1b1b2b4b8bbbbbbb7aa9d9084776a64717d8a97a4b0bbbbbbbcb8b6b1b1b1b1b1b1b1b1b1b1b5b7bbbbbbbbafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d78818e939ea6b0b8c1bdb5aca49f928c80746c655b697683909c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9285786c5f5245392c1f1200000000000000000000020e1925303b46535f6975818e9ba6b0bbbbafa4998e8174695e524646474747474747474747474753606c7885929eabb8c5cec6b9ada197887b6e6255484747474747474747474747474746443f3830261c110600000000000004111d2a3744505d6a77839095959595959595959595959595959595959595959595959595959595897c6f635649505d6a7683909da9b4b4b4ac9f928679665b5044382b1f141414141414141414141312100c0700000000000000000000000006131f2c3845515c6675828f9ca8b0b3a9978a7e7164574b3e3c3c3c4d59656f7578787878787878787885929eabafafa89c8f82787878787878787884919eaaafafa99c90837878787878787878787771675b4f4336291d10000000000000000000000000000000000000000000000000000000010b151f2934404b55606b75818e989f959189817b726d666059514c433a2f24190d080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1f2c3945525f6c7885929fabb3b3ab9e9184786b5e525f6b7885929b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9286796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba7aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa9d9084776a64717d8a97a4aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c666d78818f949ea6b0b8b4aba39a938c80736e605b536976838f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f85786c5f5245392c1f12000000000000000000000008141f2a36424d57626f7c88949fabb7b5afab9f92867b6e6154483b3a3a3a3a3a3a3a3a3a3c4955626f7c8897a1adb9bfc1c2b8ab9e918578695f53473a3a3a3a3a3a3a3a3a3a3a3a3a3a38342e261e150a0000000000000004111d2a3744505d6a77838888888888888888888888888888888888888888888888888888888888887c6f635649505d697683909ca7a7a7a7a7a39986796c605346392d2013070707070707070707070604000000000000000000000000000004101c2834404b5465727f8c98aaa3a2a19a8d8073675a4d40342f3c48535d65686b6b6b6b6b6b6b6b7885929ea2a2a2a29c8f82756b6b6b6b6b6b7784919ea2a2a2a29c9083766b6b6b6b6b6b6b6b6a675f554a3f33271a0e00000000000000000000000000000000000000000000000000000000030d18232f39434f59616e7b8692928c837d756e69605c544f45413a31281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3945525f6c7885929fa6a6a6a69e9184786b5e525f6b78858f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f86796c5f5346392c2013060000000000020e1b2835414e5b6874818e9ba2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29d9084776a64717d8a97a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c666d78828f949ea6b0aaa29992887f736d645c505a677380828282828282828282828282828282828282828282828282828282828282828282828282828282828282828175685b4f4235281c0f0000000000000000000000020e1a26313b47535f6a76828f9ca7aeaba39f9a938d8074675a4d41342d2d2d2d2d2d2d35404b5565727f8c98a9b3b1b3b4b6b4a89b8e817568574d42372d2d2d2d2d2d2d2d2d2d2d2d2d2c28231c150c0300000000000000000815222f3b4855626e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796d605347505d697683909b9b9b9b9b9b9b93867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000c18232e3c4955626f7c889897969595948f8376695c5043362c37414b53595b5e5e5e5e5e5e5f6b7885929595959595958f8275695e5e5e5e6b778491959595959595908376695e5e5e5e5e5e5e5d5b554d43392e22160a000000000000000000000000000000000000000000000000000000000007121d27313d46525e68727f8c867f78706b615e57514a423d352f281f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929999999999999184786b5e515b68748182828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828175685c4f4235291c0f020000000000020e1b2835414e5b6874818e9595959595959595959595959595959595959595959595959595959084776a64717d8a95959595959595959595959595959595959595959595959595959595887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424a545c666d78828f949fa6a19892877e726d635b524c58646e7376767676767676767676767676767676767676767676767676767676767676767676767676767676767676756f65594d4134281b0e00000000000000000000000009141f2b37434e5863707d8995a0a39f99928e87827c6f6256493c2f2320202020202c3945515d6776828f9caaa3a5a6a7a9aaa7988b7e7165584b3e31262020202020202020202020201f1c17110a030000000000000000000814212e3a47535f6a6e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d675d5145505c6976828e8e8e8e8e8e8e8e8e877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000713202d394653606c78858b8a898988878684786b5e5145382b2f3941484d4e5252525252525f6b788588888888888888888275695c52525e6b778488888888888888888276695d525252525252514f4a433b32271c11060000000000000000000000000000000000000000000000000000000000010b151f2a36414d56606d78807b726d666059524d4440393029241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c78858d8d8d8d8d8d8d8d84786b5e5159656f747575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575756f65594d4134281b0e020000000000020e1b2835414e5b687481888888888888888888888888888888888888888888888888888888888883776a64717e8888888888888888888888888888888888888888888888888888888888887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c263038424a545c666d79828f949f9791867d716c625b524947525c64676969696969696969696969696969696969696969696969696969696969696969696969696969696969696968655d53483d3125190c000000000000000000000000030f1b26323c4854606b7783909d99928e87817c756f6a6054473b2e2214141414202d3a4753606d7a869298959698999b9c9e9f95877b6e6154483b2e2115141414141414141414141312100c06000000000000000000000006121f2b37434e585f62626262626262626262626262626262626262626262626262626262626262605d554b404c5965727f81818181818181818181796d6054473a2d211407000000000000000000000000000000000000000000000000000006121f2b3844505b66717e7e7e7d7c7b7a797872685c5043372a272f373c404245454545454855626f7c7c7c7c7c7c7c7c7c7b6e6155484855626e7c7c7c7c7c7c7c7c7c7b6e615548454545454544433f39322920160b00000000000000000000000000000000000000000000000000000000000000030d1925303b44505c666d736e69605c544f46423b342e271e19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f80808080808080807f7266594c535d6568686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868655d53493d3125190c000000000000000814212e3b4754616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6e61606d797c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e263039424b545c676d79828f9490857c706b625a514940404a52585a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b59534b42372c201509000000000000000000000000000a15202c38444f5964717e8b928d86817b756f6a6260584e43382b1f13070916232f3c4956626f7c838587888a8b8c8e8f9192918477695e52463a2d20140707070707070707070707060300000000000000000000000000020f1a26313c464e535555555555555555555555555555555555555555555555555555555555555553514b433a4a57626d72747474747474747474746d675d5145392c2013060000000000000000000000000000000000000000000000000000030f1c28333f4a54626c717271706f6e6d6d666860564b4034271d252c313435383838383a47535f6a6f6f6f6f6f6f6f6f6f6e695f534647535f6a6e6f6f6f6f6f6f6f6f6e695f53463a383838383736332e2720170e04000000000000000000000000000000000000000000000000000000000000000008141f28343f4a545c6067615e56514a423d363028231c150c0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323e4b57636d737373737373737373726d63574b4b53595b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c59534b42372c201509000000000000000714202d3a46525e696e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695f5d676d6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e273039424b555d676d79828c837b6f6a615950483f373840474c4d4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d48423930251b0f040000000000000000000000000004101c27333d4653606d798585807b746e69625f58544e463d32271b0f030815222e3b4754606a6f77787a7b7d7e808183848687807367574d42362a1e120500000000000000000000000000000000000000000000000000000915202a333c4347484949494949494949494949494949494949494949494949494949494949494745403a3a46515b626568686868686868686868605d554b4135291d11040000000000000000000000000000000000000000000000000000000b17222d3842505a6264656463626261605c54564e443a2f23171a202427282b2b2b2b37434e585f626262626262626262615f574d42434e585f626262626262626262615f574d42372b2b2b2b2a2927221c160e05000000000000000000000000000000000000000000000000000000000000000000020c17232e38424a50535a54524d444039302a251f18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16232f3b46525b6366666666666666666666635b514641484d4e4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d49423930251b0f040000000000000005111e2a36424d575e616262626262626262626262626262626262626262626262626262626262615f57555d60626262626262626262626262626262626262626262626262626262626262605c554b4034291c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e273039434b555d676d7980796e6960584f473e362d2e363b3f404343434343434343434343434343434343434343434343434343434343434343434343434343434343434342413d3730271e14090000000000000000000000000000000b161f2c3845515c666f7d7a736e69615f57534e47433d342b20160a0006131f2b37434e5860626a686d6f707273747677797a7a6d6054473b30251a0e020000000000000000000000000000000000000000000000000000030e18212a31373a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a39352f353f495157595b5b5b5b5b5b5b5b5b5b54514b433a2f24180d0100000000000000000000000000000000000000000000000000000006111c262f3e4850565858575656555453514a42443c33281d120f14181a1b1f1f1b26313c464e5355555555555555555555534d453b3c464e5355555555555555555555534d453c31261a1f1f1e1d1a16110b04000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f44464d4746423b342e271e1a140c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a3540495257595a5a5a5a5a5a5a5a595751493f373c4041424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242413d3730271e14090000000000000000020e1a25303b454d5254555555555555555555555555555555555555555555555555555555555555534d4c515455555555555555555555555555555555555555555555555555555555555553514b43392f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e273039434b555d676d736d675e574e463e352d24242b2f3334363636363636363636363636363636363636363636363636363636363636363636363636363636363636363534312c251e150c0200000000000000000000000000000004101c2834404b54606b6f6d68615e57534d47433c38322b22190f0400030f1b27323d464e5456565d60626365666869656c6d6d685d524539291f140900000000000000000000000000000000000000000000000000000000060f1820262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2c29242d373f464a4c4e4e4e4e4e4e4e4e4e4e4745413a31281d130700000000000000000000000000000000000000000000000000000000000a141d2d363e45494b4b4b4a4948474644403930332a21170c04080c0e0f120a15202a343c43474849494949494949494846423b33333c43474849494949494949494846423c332a1f14091211100e0a0600000000000000000000000000000000000000000000000000000000000000000000000000000a151e262e34383a403b3a363028231c150c0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d19242e3740464b4c4d4d4d4d4d4d4d4d4c4b463f372e30343535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534312c251e150c0200000000000000000009141f29333b42464748484848484848484848484848484848484848484848484848484848484846424145474848484848484848484848484848484848484848484848484848484848484745403931271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e273139434b555d6066605d554d453d342c231b191f23262729292929292929292929292929292929292929292929292929292929292929292929292929292929292929282825201b140c0300000000000000000000000000000000000c18232e39424f596063615e56524d46423b37312b27201910070000000a15202b343d4347494c5254555758595b535b6061605d564c413529170d030000000000000000000000000000000000000000000000000000000000060e151a1f212222222222222222222222222222222222222222222222222222222222222220201d18252d353a3e3f414141414141414141413a39352f281f160c010000000000000000000000000000000000000000000000000000000000020b1b242d34393d3e3f3e3d3c3b3a3a38342e271e21180f05000000010205030e18222a31373a3c3c3c3c3c3c3c3c3c3b3a3631292a31373a3b3c3c3c3c3c3c3c3c3b3a37312a21180e030504030200000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d342e2d2a251f18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252e353b3e4040404040404040403f3e3a352e252427282929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292825201b140c0300000000000000000000020d17202930363a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b3a3735393a3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a38342f271f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151f273139434b51535953514b433b332b221a110e1317191a1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b19150f090200000000000000000000000000000000000007121d27303d474f545654524c46423b36312b26201b160f0700000000040f19222b32373b3c414547484a4b4d4e4950535454524c433a2f2419050000000000000000000000000000000000000000000000000000000000000003090f121415161616161616161616161616161616161616161616161616161616161616141311131b23292e3132353535353535353535352d2c29241d160d040000000000000000000000000000000000000000000000000000000000000009121b22292d30313231302f2f2e2d2c28231c150c0f06000000000000000006101820262b2e2f2f2f2f2f2f2f2f2f2e2d2a261f20262b2e2f2f2f2f2f2f2f2f2f2e2d2b261f180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f202721201e19140c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242a2f3233333333333333333333322e2a231c181a1b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b19150f0902000000000000000000000000050e171f252a2d2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2d2b292c2d2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2c29231d150d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151f2831394045474d4745403931292119100802070b0d0d101010101010101010101010101010101010101010101010101010101010101010101010101010101010100f0e0c09040000000000000000000000000000000000000000000b151e2b353d4448494746413a36302a261f1b150f0a0400000000000007101920272b2e2f35393a3c3d3f40413f4446474745413a31281e1308000000000000000000000000000000000000000000000000000000000000000000020608080909090909090909090909090909090909090909090909090909090909090706040911181e2225262828282828282828282821201d18130c040000000000000000000000000000000000000000000000000000000000000000000910171d212425252423232221201f1c18120b030000000000000000000000060e151b1f2122222222222222222222211e1a14151a1f2122222222222222222222211e1a140e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c1012131a1414110e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191e23252627272727272727272625221e18110c0e0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0c0904000000000000000000000000000000050d141a1e2021222222222222222222222222222222222222222222222222222222222222211e1d2021222222222222222222222222222222222222222222222222222222222222201f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f282f35393a403a39352f281f170f07000000000001030303030303030303030303030303030303030303030303030303030303030303030303030303030303030202000000000000000000000000000000000000000000000000030c19232b32383b3c3a3935302a251f1a140f0a04000000000000000000070f151b1f2224292c2d2f3032332d3337393a3a39352f281f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d121618191b1b1b1b1b1b1b1b1b1b1413110d07010000000000000000000000000000000000000000000000000000000000000000000000060c111517181818171615141312100c070000000000000000000000000000030a0f12151516161616161616161514120e09090f12141516161616161616161514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070d080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d131619191a1a1a1a1a1a1a1a191816120d07000102020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000000000000000000000000002090e11141415151515151515151515151515151515151515151515151515151515151514121113141515151515151515151515151515151515151515151515151515151515151413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d332d2c29241d160d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111921272c2f302e2d29251e1a140e0903000000000000000000000000040a0f1315191d20212224252622272b2d2e2d2c29241e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c0e0e0e0e0e0e0e0e0e0e0706040100000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b0c0b0a09080707060400000000000000000000000000000000000003060809090909090909090908070502000002060808090909090909090908070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d0d0d0d0d0d0d0d0d0c0c0a06020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080909090909090909090909090909090909090909090909090909090909080705040607090909090909090909090909090909090909090909090909090909090909070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c12181d20202620201d18120c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b20222321201d19130e0902000000000000000000000000000000000306080d1113141517181a171b1f202121201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010101010101010000000000000000000000000000000000000000000000000000000001040607080909090807060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d1013141a1413100d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b0f1315161413110d080200000000000000000000000000000000000000000001040707090a0c060b0f1213141413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010102020100000000000000000000000000000406070d0807050200000000000000000000000000000000000000000000000000000000000000000406070b100706030000000000000000000000000000000000000000000000000000000000010507070a0a0a0a0a0a0a0a0a0a0a070604010000000000000000000000000000000005080a0b0c0c0c0c0c0c0c0c0c0c0b0a08050000000000000000000000000000000000000000000000000000000000000002070a0c0d0e0e0e0e0e0e0e0e0e080705020000000000000000000000000000000000000003060809070d10131415161616151312100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607080808080808080807070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070d07060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000307090907070501000000000000000000000000000000000000000000000000000000000000000003050607070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b0c0d0d0e0e0e0e0d0a07070501000000000000070c1013131a1514120e090200000000000000000000000000000000000000000000000000000000070c101313181d1312100b060000000000000000000000000000000000000000000000000002080d11131416161616161616161616161413110d0801000000000000000000000000060c1115171819191919191919191919171714110c0500000000000000000000000000000000000000000000000000000000070d1316191a1a1a1a1a1a1a1a1a1a1514120e0903000000000000000000000000000000040a0f1315161c181d20202122232322201f1c1812110c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060708070502000000000000000000000000000406070809090909080706040000060c10121315151515151515151413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11141717191a1a1b1b1b1a19171413110d08020000030b12181c1f202621201e1a140e0903000000000000000000000000000000000000000000000001070c12181c1f202529201f1c17110a0200000000000000000000000000000000000000000000040c13191d2021232323232323232323232321201d19130c04000000000000000000000910171d212424252525252525252525252423211c17100800000000000000000000000000000000000000000000000000010a12191e23252627272727272727272721201e1a140d0500000000000000000205070807070f151b1f22222824292c2d2e2f2f2f2f2d2c28231c1c170c07010000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1013141514120e0903000000000000000001070c1013141515161616151312100c0a11171c1f20212121212121212121201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030709090a0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080706040100000000000000000000000000000000000000000000000000000000000000000003030303030303030303020000000000000000000000000000000000030607080809090908070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171c21232426262728282827262421201d19130f0a030c151d23282c2d332e2d2a251f1a140e09030000000000000000000000000000000000000000070c12181d23282c2d32362d2b28231c140c020000000000000000000000000000000000000000040e161e25292d2e30303030303030303030302d2c29241e160d04000000000000000009121a22282d30313232323232323232323231302d28221a12080000000000000000000000000000000000000000000000000a131c242a2f32333434343434343434342e2d2a251f170f05000000000002080e11141414111920272b2e2f352f35393a3b3c3c3c3b3a38342e2d282218120b030000000000040607060400000000000000000000000000000000000000000000000000000003090e12181d1f2021211e1a140d05000000000000030b12181d1f20212223232322201f1c18151c23282c2d2e2e2e2e2e2e2e2e2e2d29241e160e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b0f131516171514120e090807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060709090e1114141413100d07010000000000000000000000000000000000000000000000000000000407090a101010101010101010100f0d0905000000000000000000000500060c1012131415151616151413110d080604010000000000000000000000000000000000000000000000000000000000000000000000000000000008121a22282d30313233343435353433312e2d2a251e1b160f151e272e34383a403b3a36302a261f1a140e090300000000000000000000000000000000060b12181d23292e34383a3e433a38342e261e140a00000000000000000000000000000000000000020c1620283035393a3d3d3d3d3d3d3d3d3d3d3d3a39352f281f160c0100000000000006101a242c34393d3e3f3f3f3f3f3f3f3f3f3f3e3c39332c241a10050000000000000000000000000000000000000000000007121c252e353b3f404141414141414141413b3a36302921170d03000000060b14191e2021201e222b32373b3c4243404547484949494846444039393329241d150d030000070c10131313100c070000000000000000000000000000000000000000000000060b0f141a1d24292c2d2e2d2a251f170f05000000040d0d151d24292c2d2e2f30302f2e2d2c28231f262e34383a3b3b3b3b3b3b3b3b3a3935302820160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b2022232421201e1a171514120e09070604000000000000000000000000000000000000000000000000000000000000000000000000000000040607070d1013141618191e202120201d18120c04000000000000000000000000000000000000000000000000050b101416171d1d1d1d1d1d1d1d1d1c1c1915100a02000000000000020a101511171c1f2021222223222221201d191413110d070100000000000000000000000000000000000000000000000000000000000000000000000000030d1a242c33393c3e3f404041414141403d3a3936302c2721191d2730394045464d4846423b36312b261f1a140e0902000000000000000000000000020a11171d23282f34394045464b5046443f3830261c110600000000000000000000000000000000000008131e28323a41464749494949494949494949494745413a31281e13080000000000000c17222c363e45494b4c4c4c4c4c4c4c4c4c4c4a49453e362c22170c000000000000000000000000000000000000000000020d19242e3740474b4d4d4d4d4d4d4d4d4d4d4846423b33291f140900020a11171e252a2d2e2d2a2b343c4347494f504b5153545556565553514a49453e352f271f150b030b12181c1f201f1c18120b0600000000000000000000000000000000000002080d11171c1f262a2f35383a3b3a36312921170d0300000d161f1f272f35393a3b3c3c3c3c3b3a38342e2c30383f444648484848484848484746413a32281e13080c0c0c0c0c0c0c0c0c0c0c0c0c0c0808060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111921272c2f30302e2d2a252421201e1a161413100c070705010000000000000000000000000000000000000000000000000000000000020507070c10131416181d20202325252a2d2e2d2c29241d160d0400000000000000000000000000000000000000000000080f161c202223292929292929292929292825211b140c0402000000040c141b211c23282c2d2e2e2f2f2f2f2d2c292420201d18130c040000000000000205070808080602000000000000000000000000000000000000000000010b151f2c363e45494a4c4d4d4e4e4e4d4c4a4746413a38322b23232e39424b51535954524d46423b37312a261f1a140d0802000000000000000003090b141c22282e343940454b5153585c53504a42382e23170b0000000000000000000000000000000000010d1925303a444c5254565656565656565656565654514c433a2f24190d010000000005111d28343e4850555758585858585858585858575550483e33281c1105000000000000000000000000000000000000000007131e2a3540495257595a5a5a5a5a5a5a5a5a54524d453b30251a0e040b141c22283036393b3936323c464e54555b5d555d606162626262605c54555045403931271d120c151d23282c2d2c28231d17110a02000000000000000000000000000000050c13191c22282b3136394045474846423b33291f140900030c1f283131394045474848494949484644403a3838424a5053545454545454545454524c443a3024191919191919191919191919191919191514120f0a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232b32383b3c3d3b3a3630312e2d2a2523201f1d181413110d08070401000000000000000000000000000000000000000000010507090e111414181d1f202324292c2d303230363a3b3a39352f281f160c01000000000000000000000000000000000000000008111a21272c2f303636363636363636363635322d261e16070f0807050c161e262d322e34383a3b3b3c3c3c3b3a39352f2d2c29241d160d0800000003090e1214151514120e09030000000000000000000000000000000000000007121d27313e4850555759595a5b5b5b5a595754524c48433d352e2834404b545c6066615e57534d46423c36312a251f19130c07000000000001070d151a1d262d333940454b51545c606569605c544a3f34281c10030000000000000000000000000000000005111d2935414c565e616363636363636363636363605d554c4135291d1104000000000815212d3945505a61646565656565656565656564615a5045392d21140800000000000000000000000000000000000000000a16232f3b47525b6366676767676767676767615e574d42362a1e120d161d262d333b41464746413b434e586062686a6b676d6e6f6f6f6e6d6664615a514b43392f2418161e272e34383a38342e27221b140b0500000000000000000000000000080e161e252a2d33383b42464b515354534d453b31251a0e020b151e313a43434b515354555656565553514a4745404a545c606161616161616161615d564c4135292525252525252525252525252525252522211f1a150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353d4448494a484642403e3b3a3630302d2c292421201d191413110d0806030000000000000000000000000000000306080d111314191e202124292c2d302f35393a3c3f414246474745403931281d120700000000000000000000000000000000000000050f1a232b33383c3d43434343434343434343413e3830281e141b1514120e1e2830383e383f44464748484949484745413f3a39352f281f1a110800050d141a1e212122211e1a150e060000000000000000000000000000000000000c18242f3943505a6164656667676868676664615e56544f473f372c3845515c666d736e69615f57534d46423b363029241e18120b030000040c131820262b2f383f444b51555c60666d71766d665c5044382b1f1509000000000000000000000000000000000713202d3946525e686d70707070707070707070706d675d5145392c201306000000000a1724303d4955616c7172727272727272727272716c6155493c3023170a00000000000000000000000000000000000000000c1925323f4b57636d737474747474747474746e695e52463a2d2014171f282f383f444c5254524c444754606a6f757678797a7b7c7c7c7b7976716c605d554b4035292020283039404546454039332d261d170e08010000000000000000000008121a20283036383f44464d53555d60615e574d42362a1e1308121d2730434c55555d60616263636261605c5453514b505c666d6e6e6e6e6e6e6e6e6d685d52463932323232323232323232323232323232322f2e2b2620180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d474f54565754524d4d4a4846423f3d3a39352f2e2d2a2521201d1913120f0b060401000000000000000004060b101213191d2021252a2d2e2f35383a3c3f404547494b4e4d525453514b43392f24180d010000000000000000000000000000000000000b16212b353d44484a5050505050505050504f4e49423a3020212821201e1a20303a42494e4a505354555556555554524c4b4745403a312c231a11080f171f252a2d2e2e2d2b261f180f080200000000000000000000000000000004101d2935404b55616c717273737474747473706d6863605951493f35414b55606d78807b746e69615f57534d46423b353028231d150c0a080d161d242931373e424a50555c60676d72797e82786d6053463c31261a0e010000000000000000000000000000000714212e3a4754616d7a7d7c7c7c7c7c7c7c7c7c7d796d6054473a2d211407000000000b1824313e4b5764717e7f7f7f7f7f7f7f7f7f7f7e7164574a3e3124170b00000000000000000000000000000000000000000d1a2633404d596673808080808080808080807b6e6154483b2e21192129313a424a50565e615e564d4955626f7c8183848586878889898886837e756d675d51453c322728323a434b5153514b443f382f292019130c04000000000000000005101a242c323a41464a5053575f61676d6e695e53463a3024190d18232e3943555e66676d6e6f6f6f6f6e6d6665605d5553606d787b7b7b7b7b7b7b7b7a6d6154473f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3b3a37312a22180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f59606363615e575a5754524d4c494745403e3a3936302d2c2924201f1c1713100d070401000003070c1013171c1f20252a2d2e30363a3b3e404547494c4b515356585a565e61605d554b4035291d1004000000000000000000000000000000000004101c27333d474f54565c5c5c5c5c5c5c5c5c5c5a544c42382d2e352e2d2a252933424c545a545c60616162626262605d565853514b433e352c231a0d17212931363a3b3b3a37312a2119130c05000000000000000000000000000006131f2c3945515d67717e7f8080818181807f7d7a756f6b635b51483e45515d67727f8b86817b746e69615f57524d46413a342e271e1b1514191f282f353c43474f545b60676d72797f848b8a7d7064574d42372b1d12070000000000000000000000000000000a1724303d4a5763707d89898989898989898989897c6f6256493c2f23160900000004111e2b3744515e6a77848b8b8b8b8b8b8b8b8b8b83776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b78848d8d8d8d8d8d8d8d887c6f6255493c2f22232b333b434b545b60686e685e574d596673808c90919298949595959992908a81796d60584e43372b303a444c555c605c555049413b3329241e160d07000000000000000c17222c363e444c52545b6063696e737a7b6e61564c4135291d111c2834404b556670767a7b7b7c7c7c7b7976726d675f57616e7b87878787878787878074675a4e4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4847433c342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b6f706e69696664615e57595653514b4a4746413d3a39352f2d2b2822201d1813110d070c1012181d1f23282b2d3036393a3e4246474b4b51535659555d6063656769696e6d675d5145392c20140900000000000000000000000000000000000714202c38444f59606369696969696969696969665e54493e393a423b3a3630303b45545e6669666d6e6e6f6f6f6e6d686965605d554f473e352c1f151f29333b4246484847423c332a251e170e07010000000000000000000000000714202d3a4753606d79878c8c8d8e8e8e8d8c8a87827d726d635a50424c56606d7a8592928e87817b746e69615e57524c454039302b26201e252a313a40454e535961666c71797f848b91968f8276695f5347392f24180c0000000000000000000000000000000a1724303d4a5763707d8a969696969696969695897c6f6256493c2f23160900000004111e2b3744515e6a77849198989898989898989083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919a9a9a9a9a9a95887c6f6255493c2f2328353d454d555d666c737a6e695e54576976828f9c9e9fa2aaa2a2aba39f9c938e81746a6054473b2e35414c565d676d67605b534d453e352f281f191109010000000004111c28333e4850565e61666c70767b80858275685d5245392c20131f2c3845515c6776828687888989898886837f796e695f616e7b879494949494948d8174675a5858585858585858585858585858585858585855534e463c31261a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58636f7d7d7b787673716e69686663605d555754524c4a4745413c3938332d2c2924201d1813171c1f24292c2e34383a3c4146474b4d525457555d60636568676d6f727476787a796d6053473b30251a0e02000000000000000000000000000000000916222f3c4854606b707676767676767676767670665a4e4146474e4846423b36424d5766707678797a7b7b7c7c7b7a7875726d6761594f473d31271d25313b454d535455534d453f3630292018120b0300000000000000000000000916232f3c4956626f7c8999999a9a9b9b9a999a938f877f726c61544a525e6873808c979f99928e87817b746e69615d56514b433e3732292930363e434b51585f626b70787e848b91969e9f93877b6e62554b4035291d100400000000000000000000000000000a1724303d4a5763707d8a96a3a3a3a3a3a3a295897c6f6256493c2f23160900000004111e2b3744515e6a7784919da5a5a5a5a5a59d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919ea7a7a7a7a295887c6f6255493c2f2e343f474f575f676d7880857b6e665c5f697885929eabacaeb4afafb5aeaca59d93887c6f6255493c313945525d686d79726c655e575045413a312b231b1309000000000814212d3945505a61686d72787d82878d92867a6d6054473a2f2418202d3a4653606d79869294959696959992908b847b6e66616e7b8794a1a1a1a19a8d8174676565656565656565656565656565656565656565625f584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a77838a878582807d7b787572706d676764615e565754524c4946443f3a39352f2c29241f23282c2f35383a3f4446494c525457565e616467676d6f7275777a7c7e818385877f7265574d42362a1e1205000000000000000000000000000000000a1723303d4a5663707d8283838383838383838276695c4f4c52545b54524d453b46525e69768284868788888988888785827e79706b61594f43392f232a36424d575e61615f575146413a3229241d150d07000000000000000000000c1825323f4b5865727e8b98aba6a7a7a7a7aca49f99938a7e71665c5157616e7a86929fa9a39f99928e86817b736d68605c555047433c35323b414650555d606a6e767d838b91969ea1a9a49a8d8074675d5145392c1f160a00000000000000000000000000000a1724303d4a5763707d8a96a3afafafafafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab2b2b2b2aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb3b3afa295887c6f6255493c30383f44505960696e79828d9083786d60616e7b8897a2adb8babfbbbcbfbbb9afa59a8d817467564c4139434f59606d7a847f776e69615a524c433d352d251b11070000000a1723303c4955616c717a7f848a8f939a998b7e7165554b4035291d232f3c4956626f7c8999a3a2a2a2aba39f9d969083786d616e7b8794a1aeaea79a8d80747272727272727272727272727272727272727272726e6a5f53473a2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54626f7c889597928f8d8a8785827f7c7a7774716d686764605d565653504a4745403a39352f2c2e34383a4045474a505356565e616467696e7174777a7c7f818486898b8d9092908376695e52463a2d201409000000000000000000000000000000000b1825313e4b5864717e8b8f8f8f8f8f8f8f8f86796c5f4e565e6168615e574d434754616e7b87919299949595959597928f8b857d706b61554b4034292d3a46535e696e6e69625b524c443e352f271f19100a0100000000000000030f1b27333f49536774818d9aa7b3b4b4b4b3b6afaba49e9185796d60535f6974818d98a2aeafaba39f99928e86807a726d67615a534e45413e444c525a61676d737c828a90959ea1a8adb2ac9f9285796d6053473d32271b0f02000000000000000000000000000a1724303d4a5763707d8a96a3b0bcbcbcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7bebeb6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f6255493c38424a505a626b707b838f93948d80736b64717e8a97a9b3b7b9bbc0c7cbc7c0b7ab9e918478685d5245404b55606b74818e8b827b716c605d564f473f372d23180d0100000b1724313e4a5764717e868c91969c9fa49c8f8275675d5145392c2225323f4c5865727f8b98abb5afafb4aeaca8a0958b7e71646e7b8794a1aeb6a99c90827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b6673808d9aa19e9c999797918f8c898683807d7a7774706d686662605b5453514b4745403a38383f44464b5153545c606366686d7174777b7e818386898c8e919399989a9c9f93877b6e6154483b31251a0e020000000000000000000000000000000b1825313e4b5864717e8b979c9c9c9c9c9c9286796c5f5860686d756e695e554b4a5764707d8a979fa3aba2a2a2a9a19e9c9792877d70675c5145382c37434e58616e7b7b726d615e564f454039312b221c130a0000000000000005121f2b3744505b657683909da9b6c1c1c1c0c0bbb5ada1978a7d706458616e7b87929faab4bbb5afaba39f98928d857f79716c625f58524c4550565e616c707980878f949da0a7acb2b9baada2978b7e7165594f43382c1e1308000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f6255493c3f4a545c606d717d8590959e9f93887d706873808d9aa6ababacafb6bec2cbc5b9aca196877a6d60544745515d67707d8993948f857e756d68605951493f35291e120600000815222f3b4855626e7b88959ea1a8acac9f92867a6d6053473a2e2e2e35414c566875818e9ba8b0b3b8babab9b1a79c8f8275696e7b8794a1aeb7ab9f94908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7884919eababa9a6a9a19e9b999992908d8a8684807d7a76736f6c6664605d5553514b4644474a5053555d6064666d6f73777a7e8184878a8d909299989b9d9fa4aba7a9a49a8c7f7265574d42362a1e12050000000000000000000000000000000b1825313e4b5864717e8b97a4a9a9a9a99f9286796c5b626a6f7a817b6e675d544a596673808c99a6afb5aeafafb3adaba9a1999184796d6053473a303947535f6a7581857e756d686159514b433c342d251c11070000000000000613202d394653606c7985929facb8c3c4c8cdccc7beb3a99a8e817467606a75818e99a3afbcc6c0bbb5aeaaa39f97928c847e766f6a605d56515a61686e757d848d92999ea6acb1b9bdc4beb3a99d9083776b6054483a3025190d010000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f6255494144505c666d747e879297a0a7a49a91857a6e7683909c9f9e9e9fa4acb1b9c2c9bdb2a895887c6f6255494e58606d7984919e9f97928a817a706b625b51463a2e22160900000814212e3a47535f6a7783909daab2b9aea3988a7d7064574a3d3b3b3b3b45525d687784919da4a4a6acaeb4bcb8ab9e928578676e7b8794a1aebbb0a69f9c9898989898989898989898989898989898989898988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b5563707d8996a1adb8b5b3b2adaba8aba39f9d9a9a93908d8a86837f7c7974706d6764605d55535053545c6063676d7074797c8083878a8e9196979a9d9fa3aba8aaacafb5b4b6ac9d908376695e53463a2d2114090000000000000000000000000000000b1825313e4b5864717e8b97a4b1b6b6ac9f9286796c606d727c848e83796d665c50576975828f9ca8b5c0bbbcbbbeb9b8b3aba1968a7e7164574a3e39424f59626f7c87928b827a706b605d554e463f372d23180d0100000000000815222e3b4855616e7b8898a2aeafb6b8bcc2cbcfc3b6aa9d9083776a626f7c87939fabb5c0cecbc6bfbbb4aea9a29f96918a837c746d68615d606c707a818a91969fa3abb0b8bcc3c9cdc5b8aca095897c6f63564c41362a1e11050000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f62554e4e4e53606d78808b9299a1a9b1aca1978f827578859299929191939a9fa7b1bcc8bcafa396897c7063564b55606a73808d96a0a9a29f938e847d726d62574a3e3125180b000006121e2b37424e5766727f8c99a7b1bcb4aa9a8d817467574d48484848484854606d7a8693989797999fa2aab4b9ada197867a6d6e7b8794a1aebab8b0aba9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6774818e9ba8b2bdc2c0beb9b8b5b5afacaaaca49f9d9a9992908c8985817d7a75716d6763605c5f62666d7075797d8185898d90939a9a9ea0a8a7aaacafb5b4b7b9bbc0c0b8ab9f95877b6e6154483b31261a0e0200000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f928679676d757f8791958f82786d605a5e697885919eabb8bec5c6cacac6c5bdb2a89b8e8174685b4e41404a54616b76828f9a948f857d746d67605851493f352a1e120600000000000b1724313e4a5764717d8a97aaa1a2a9abb1b9c2cdc5b8ab9f928578656b76828f9aa4afb7bbc2c7cacbc6bfbab3ada8a19e949087807a716c676d747e858e939ea1a8afb5bdc2c8cac6c3bcb8b1a79b8e8175685e5246392d2013070000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f62595a5b5a59626e7b85929fa3abb3bbb3a99e938b7e7c8889878684848790959fabb8c5bdb0a3978a7d706457515c676f7c87939fa8b2ada59e9691877f7265594c3f3226190c0000020e1a26313c4855626e7b8895a0acb8b7aa9e918477695e535555555555555663707d898c8b8a8a8c9298a2aebab3a994887b6e6e7b8794a1aebac2bbb7b6b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a85929facb6b7b9bbc0c0c2c2c0bbb9b6b6afacaaaba39f9c9997928e8a86827e7a75706d666a6e74797d81858a8e9297999d9fa4acaaacb2b4b6b9bbc0c1c4c6c6c4c3bcb1a7988c7f7265574d42362a1e120500000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796f7a818b92999e948d80746c61616e7b8797a1adaeb1b8babec5ced0c3b7aa9d9084776a544a3f44515c66707d8a949f9e97918a81796f6a635b51463a2e22160900000000000d1a2633404d596673808c969595959d9fa7b1bcc8c6b9ac9f9386796c707d89949ea1a8abb0b8babfc6cacbc5bebab2aca69f99938d847e757079818a92979ea5adb2bbc0c7c8c5bebab8b1acaca49f92867a6d6154473a2e2114070000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f646667686766646a717e8a929ca6b0babbafa59f92857d7f7d7b7978787b83909daab3bebdb0a4978a7d71645758606d79839199a4afbabaafa89f93877d706356493d3023160a0000000915212e3a47535f697784919daab7b9aca096877b6e615f6161616161616164717e82807e7e7d8086929fa9b3aea295887b6f6e7b8794a1aebaccc7c3c2bcbcbcbcbcbcbebebebebebebebebebcbcbcb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d5664717e8a98a2a7a9abacafb5b3b6b8b9bec0c3c0bbb9b7b5afaca9a9a19e9b98928f8a86827d7974767b80858a8e92989b9ea1a9aaacafb6b7b8bdc0c3c5c4c2c0bebeb9b8b6b4b2aa9d908377695f53463a2d21140700000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286797c848e939fa3a69d928a7e716964707d8a97a9a2a2a4abadb3bcc5d0c5b8ab9f928578665c50444c56606d7884919da6a9a19e928d847c726d63574a3e3125180c00000000030f1c2936424f5c6975828b8988888890959fabb8c4c8bbafa49a877a6d7380878c91969c9fa6acaeb4b9bec5c9cac4bdb9b0aba49f97918a827c838e939ea1a9afb9bdc4c8c3bdb8b4aeaba7a09d9a93908b7f7266594c3f3326190c0000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f717374747473716d6c73808d949ea8b2bdbaada2978f8276706e6c65696f7c8898a2aebabdb0a4978a7d716455606a73808d95a0abb5c0b6aca1968d80746b6054483b2f22160900000006121e2b37424d576773808d9aaab4bdb2a8978a7e7164696e6e6e6e6e6e6e6e6e717573727171737d8997a2adaea295887b6f6e7b8794a1aebac1bbb7b5b0b0b0b0b0b0b7b8bdc3ccc6bfbab8b0b0b0b0a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e6876828f97999a9c9e9fa4aba7a9abadb3b3b6b9babfc2c0bbb9b6b3adabaaa39f9b98928e8a858183888d92979b9fa2aaabadb3b6b9bbc0c4c4c1bfbdb9b7b5b3b1b3adaba9a7a6a49f95887b6e6155483b2e22150800000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f92877e8691969ea5aeaea49f92857b6e6673808c98969595989fa2a9b3becac6baada29786796d605346525e68727f8c96a0acb3ada49d9691877f7266594c3f3326190c00000000000c1926323f4c5965727f7e7d7c7b7c83909da9b6c3ccc0b6a094877a6d6e737b7f848a8f949a9fa2aaadb3b9bec4c9c9c2bdb5afa9a19e938f8990959da5adb3bbc1c8c3bcb8b2acaaa29f9a95908c87837f7b6e6154473b2e2114080000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c717e80818181807e7a756e78828f96a0abb5beb3a99f948b7e7168605b5f6a7885929fabb8bdb0a4978a7d71645c676f7c87929fa7b1bdbbafa49a9184796d60594f44382c201307000000020e1a26313d495663707c8998a2aebab3a69a8d8073676e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b787985929eabafa295887c6f6e7b8794a1aebab8b0aaa8a3a3a3a3a3a3aaacb1bac3bcb4aeaca3a3a3a3a3988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7b87898a8c8e8f919399989a9c9ea1a9a6a9acaeb4b6b9bbbfc3beb9b8b4aeacaaa29f9b97928d90949a9ea1a9abaeb4b8b9bec3c3c0bdb9b7b4b2b2acaba8a6a4a9a19e9c9a999795998c7f7266594c3f3326190c00000000000000000000000000000b1825313e4b5864717e8b97a4b1bebbafa399928b9298a0a8afbbbaaea2989083786d75828d8b8a88888b9297a2adbac6cabeb3a993867a6d60534f59616e7a85929fa8b2bdb9aea8a0978d8074675a4d4134271a0e00000000000c1825313e4a57636d7272706f6e6f7c8995aab4bfcbbaada094877a6d61696e73787d82888e92989ea1a9adb2b9bec4cac7c0bbb2ada59e9b969da0a7afb9bec5c3bcb8b1aba8a09e98928e88837f7b76726e695e52463a2d2014070000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c77848c8d8e8d8c8a86817b707a849199a3afbbbbb0a69e92857a6d6159586a7784919daab7bdb0a4978a7d7164606d79839199a3afb9bdb1a79f93887d70675d51473d32271b1004000000000913202d3a4653606d7985929facb8b6a99c8f83766c798688888888888888888888888888877b7783909daaafa295887c6f6e7b8794a1aebbb0a69e9c9696969696969da0a8b1bdb4aaa39f9696969696968b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e68757a7c7e7f81838486898b8d8f9297979a9d9fa3aba9acaeb5b7b9bdc4bfbab8b4aeaca9a19e9a9c9fa6abadb3b8babec5c0bbb9b6b3b2acaaa8a5a8a19e9c9997959791908e8c8a8987868175685c4f4235291c0f02000000000000000000000000000b1825313e4b5864717e8b97a4b1bebbafa499939196a0aab2bac1beb3aa9f958c80737581807f7d7c7b7e85929fabb8c5d0baada093877a6d605454606b74818e98a2aebac3beb1a79f92857a6d6154473a2e21140700000000000916222e3a46515b6365656362626d798698a3aebac7baada094877a6d615e61666d70767c81868c92979ea1a9adb3babec5cbc4beb9afaaa8a3aaacb1b9c0c4bdb9b1aca79f9d96918b85817c77726e6965615e564d42362a1e11050000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c7a86939a9b9a9999928e867d707c87929fa7b1bcb9ada2978e81746b60546a7784909daab7bdb0a4978a7d71646a73808d95a0abb5c0b5aba0958d80746b60554b40352b21160b000000000006121f2c3844515c6676838f9ca9b6b8ab9e92857868798592949494949494949494949494877b7683909ca9afa295887c6f6e7b8794a1aeb7aa9e948f8989898989899195a0acb8aea39892898989898989897e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d565e686d6f71727476787a7c7e808385878a8d909299999c9fa3ababadb2bac4c7c5bfbab8b3adaba7a9abb0b8b9bec5c6c7bdb5afacaaa6a8a09e9b989696918f8d8b88878583817f7e7c7a79756f65594d4134281b0e02000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9387849198a2abb5c0c5bcb1a79f92877c6f757472706f6f717e8b97aab4bfcabaada093877a6d60545c666f7d89939eaab3bec0b6aca0958b7f72685d5246392d201307000000000006121e2a353f495157595856555c677985929facb8c5baada094877a6d6154545c60646a6f747a80858c91979ea1a9adb3bbc0c7c9c1bbb6b5afb7b8bcc3c4bab2ada7a09d95908a847e7a746f6a65615e5754524d443b3025190e020000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c7c899aa4a7a7aba39f9892867d73808c959faab4beb3a99f93877c6f665c6a7784909daab7bdb0a4978a7d71676f7c87929fa7b1bdbbafa3999183796d60594f433a2f23190f04000000000004101c2834404a546673808c99a6b3b9ada197877a6d7985929fa1a1a1a1a1a1a1a1a1a194877b7683909ca9afa295887c6f6e7b8794a1aeb5a89c8f827d7d7d7d7d7d83919daab7ac9f92867d7d7d7d7d7d7d7b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b444d565e616264666769676d6f717476787b7d808386898c8f92999a9ea1a8b2bbc4cfcac7c5beb9b8b4b6b7bcc2c6c9cfccc0b5aba49f9d9a9796918e8c89878482807e7c7a78767473716f6e6c65655d54493d3125190c00000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f92877b869299a4afbbc1c2bbafa3999083786d67656362626d7a8798a2aebac6baada093877a6d6057606d7883909da5afbcc5bbafa49a9083786d60564c4135291d11050000000000010d18232d373f464a4c4b4a4b556c7985929facb8c5baada094877a6d61544a5053585f62686d73797f848b91979fa2a9afb5bdc7ccc6c3c2bcc3c5c8c9bdb2a8a19e959089837d78726d6762605854524d4746423b32291f1409000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c7f8b98acb6b4b5aeaaa29891847978839098a2aebabbafa49a9083786d606a7784909daab7bdb0a4978a7d716d79849199a3afb9bbb0a69f92877c6f675c51473d31281d1107000000000000000c18232e3d4a5764707d8a97aab4beb3a995897c6f7985929facaeaeaeaeaeaeaeaea194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174707070707683909da9b6ac9f9285797070707070706e695e52463a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f29323b444c52545657595b555d6062656769696e717376797c7f82868a8e9196a1a9b2bec9d5d3cfc9c6c5c0c3c4c7cdd2d5d4c7bbafa49993908d8a8784817f7c7a787573716f6d67696766646261605b53544b42372c21150900000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286797d87939fa5afbac4c0b5ab9f958b7f72685e57555d687985929facb8c5baada093877a6d605f69727f8c95a0acb7c1bdb2a99f93887c6f665c50443a3024190d0100000000000007111c252d353a3e3f3f46525f6c7985929facb8c5baada094877a6d61544744464e53565e61676d72797f858c92979fa3abb5c0cbd2cfcec9d0d1d2c5b9ada196918b837d77716c66605d55544e4846423b3a36302920170d02000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c818e9ba7b4c0bfbbb4aaa0968c7f727b86929fa7b1bcb6aca0958b7e72676a7784909daab7bdb0a4978a7d7174808d96a0abb5beb3a99f948c7f736a60554b40352b1f160c00000000000000000715212e3b4854616e7b8798a2aebab1a4978a7e717985929facadaba8a8a8acaeb4a194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d81746763636a7683909da9b6ac9f9285796c6363636363615e574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d172029323a414647494b4c4e4b515356585a575e616467676d6f72767a7d81849197a1adb9c6d2dad5d0cac7c5c7cad0d5dadfd2c6b9ac9f938783807d7a777572706d6869666462605d555b5957565453504941423930261b100400000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f928679727f8c939ea8b2bdc7bdb1a79f92857a6e61584e566b7885929eabb8c5baada093877a6d60616e7b86929fa7b1bcc4b9ada1968d81746a60544a3f32281e130800000000000000050d1419232a2e31323946525f6c7985929facb8c5baada094877a6d6154473a3c43474c52555d60676d72797f858d9299a3afbbc7d3dcdbd6ddded1c4b8ab9e91847e78706b64605b54514b47433c3a36302d2a251f170e0500000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c83909daab5b7bbc2bcb2a89e918477727f8c95a0acb8beb1a79e9184796d6a7784909daab7bdb0a4978a7d717d89929da8b2bdbaada2979082786c60584e43392f23190d0400000000000000000613202d394653606c7985929facb8b2a5988c7f727985929fa8a19e9b9b9b9fa2aaa194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174675a5d6a7683909da9b6ac9f9285796c5f5656565654524d453b30251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1720293036393a3c3e3f41404547494b4d4d525457555c606366676d70747b85919eabb8c4d1cfc9c6bfbab8babfc6c9ced5d1c4b7aa9e91847b73706d68686563605d565a585554514b4e4c4b494746443f382f30271e14090000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796d75818f96a1abb5c0c3baada2978e81746a60535f6b7885929eabb8c5baada093877a6d606c76828f98a2aeb9c3bbafa59e91847a6d60584e42382e20160c02000000000000050e171e252a2d2e2d2a3946525f6c7985929facb8c5baada094877a6d6154473a31373a41464b51555c60676d727a8087929facb9c5d2dfdfdcddd8cbbeb1a5988b7e726c66605953504a45403a37322d2a25201e19140d050000000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bcafa295897c86929fa4ababb0b8c2b8aca096887c6f7983919da5afbdb9ada1978c7f72687784909daab7bdb0a4978a7d7a84919ea4afb5baafa59f92857b6e665b50463c31271d110700000000000000000005121f2b3744505b657783909daab7b3a69a8d80737985929fa196918f8f8f9298a2a194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174675a5d6a7683909da9b6ac9f9285796c5f575755534e46423b33291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e2f31332f35393a3c3e414246474a4b5153565e676d747e869197a1adb9c6cac4bdb9b4aeacaeb4b9bdc4c9cfc5b8aca09691867f756d685f575654524c4d4b4947454141403e3c3b3937332d261d1e150c020000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c6d7a849199a3afbbc2beb3a99f93877c6f655b5f6b7885929eabb8c5baada093877a6d68717e8b949faab4bfbeb3a99e938a7d70685d52463d30261c0e04000000000000020d1720293036393b39363046525f6c7985929facb8c5baada094877a6d6154473a2e2b30363940454b51555d60686d747e8b98a4b1becbd3d2cfd0d3d2c5b9ac9f92877d70695f564c443f38352f2b27201e1a14110e09020000000000000000000000000000050b101724303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8beb1a4988b7e8b9893999c9fa6b0bbbdb2a8988c7f72707d89939eabb4afaaa29f92857a6d7784909daab7bdb0a4978a7d7b838e939fa3abb2a89d938a7e71695e544a3f342b1f150b00000000000000000000030f1b27333f49536875828f9ba8b5b4a89b8e81757985929f9e918482828286929fa194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d81746764646a7683909da9b6ac9f9285796c646464625f584e43372b21170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13191d202123242624292c2d2f3230363a3b3e464e575f686e79818b9298a1a9b2bec6bfbab2adaaa29fa2aaacb2b9bec5c8bdb2a8a098928b827a6e696059504541403e3c3a39352f33312f2e2d2b27221b140b0c03000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c686f7c87929fa7b1bcc5bbafa49a9083786c60556b7885929eabb8c5baada093877a6d6d7a85929ea6b0bcc4b9ada1978e81756c61564c41342b1e140a0000000000000008141e29323b41464746413c46525f6c7985929facb8c5baada094877a6d6154473a2e21252a2f353940454b515b656d7a84919eabb8c4cbc7c5c3c4c7cdc7bbaea39992857b6e685d52463e3329241d1b15120e0905020000000000000000000000000000000810161c2024303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c0b3a79a8d808a8786878f949fabb7c1b4a79b8e81746b75818e99a3aba39f98928c857c6f7784909daab7bdb0a4978a7d7179818b9299a1a9a0968e81746c61574d42382d22190d0300000000000000000000000b17222d414e5a6774818d9aa7b4b5a99c8f82767985929f9b8e8175757784919ea194877b7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174717171717683909da9b6ac9f928579717171716f6a5f53473a2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314161819181d20202325252a343d474f5860696e7a838e939fa2aab2bbc2bcb4aea9a19e9892989ea1a8adb3bbc0c3bab2aaa39f948f847b6f6b615a50483f362f2d2c292426242321201f1b17110a020000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c606a727f8c959faab4bfc0b6ac9f958a7e71675c6b7885929eabb8c5baada093877a6d75818e97a1adb8c2baafa59e91857a6d61594f433a2f22190c02000000000000020e1925303b444c5254524c4847525f6c7985929facb8c5baada094877a6d6154473a2e21191d24292e38424e58606c77828f96a1adb9c6bfbab8b6b7bcc2cbbfb5aba29791847a6d615a50453b30251a0d0a0502000000000000000000000000000000000008111a21282c2f303d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bfb2a5988c7f7d7a797b828f9ca9b3beb6a99d9083766a6e7b86929f9e99928e8680796f6a7784909daab7bdb0a4978a7d716d757f8792979f999184796d605a50453b2f261c1007000000000000000000000000061926333f4c5966727f8c99a5b2b6a99d9083767985929f9b8e81746b7784919ea194877b7683909ca9afa295887c6f6e7b8794a1aeb5a99c8f827d7d7d7d7d7e84919eaab7ac9f92867e7d7d7d7d7c6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050707090b070d10131417212a343c464f59606a6f7b8490959da5aeb4bcbfbab0aaa29f96918b858b91969ea1a9afb5bdc3bcb4aea69e9691857d716c625a50483e352c231d181918161413120f0b0600000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c58606c78839098a3aebabdb9afa79e9184796d606b7885929eabb8c5baada093877a707d8a939ea9b0babeb2a89e938a7d70685e52473e31281e10070000000000000005111e2a36414c565e615e5655534e5f6c7985929facb8c5baada094877a6d6154473a2e2114121c28343f4a54606a727f8c949ea8b2bdbcb4aeaca9abb0b8c2c6bdb3a9a0968f82756c62574d42362a1f150b01000000000000000000000000000000000005101a232c33383c3d3d4a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c706d6c6e7b8897a2adbab7aa9e9184776b6974808d98948f87817b736d676a7784909daab7bdb0a4978a7d71646d727d85909592867c6f675d514b4740382e24190e0200000000000000000000000b1825323e4b5865717e8b98a4b1b7aa9e9184777985929f9b8e81746b7784919ea194877b7683909ca9afa295887c6f6e7b8794a1aeb7aa9e948f8a8a8a8a8a8a9196a0acb8aea398928a8a8a8a8a8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1215151f29333c464e58606b6f7c859196a0a7afbabfbcb4aea69f98928c847e797e848b92979fa4abb1bbc0bfbab0a8a09792867e716c625a50473e352b21170d0b0908060503000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c5f5b666e7c86929fa7b1b2aca59e98928b7e71656b7885929eabb8c5baada093877a75828c92989fa6aeb3aca1968e81746c61564c41352c1f160c00000000000000000714202d3946525e686e6866625f585f6c7985929facb8c5baada094877a6d6154473a2e211419222b3844505c666f7c87929fa6b0babfb4aaa39f9c9fa6b0b8c2c5bbb2a89e948b7e71695e52463e31271d120700000000000000000000000000000000000b16212c353e44484a474a5763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f62606a7885929fabb8b8ab9e9285786b616e7a869089827c746e68605d6a7784909daab7bdb0a4978a7d7164626b707b838e8b7f726a5f555a58524a40362a1f130700000000000000000000000b1724313e4a5764717d8a97a4b0b8ab9e9185787985929f9b8e81746f7784919ea194877b7683909ca9afa295887c6f6e7b8794a1aebbb0a69e9c9797979797979ea0a8b2bdb4aaa39f979797978d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b1f212227313b454e58606a6f7d869297a0a8b1b9c1bab2aaa29f948f867f79716d71797f858d9399a0a7afb5bdc1bab2a9a29892887e716c61594f473d33291f150b0100000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb9ac9f9286796c5f545f6a737f8c95a0aca8a09e938e857f786c606b7885929eabb8c5baada093877a6d787f8690949fa2aaa49a91847a6d605a50443a30231a0d0400000000000000000814212e3b4754616e7a77736f6a66616c7985929facb8c5baada094877a6d6154473a2e2114202a36424d57606d78839099a3afb8c2baaea3989290949fa6b0b8c2c3bab0a69f92857b6e615a5043392f24180c0200000000000000000000000000000004101c28333e474f555754525763707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f62586a7783909daab6b8ac9f9285796c68687380837d756f6a686868686a7784909daab7bdb0a4978a7d71686868696e798182756d68686866635c52473b2f23170a00000000000000000000000a1623303d495663707c8996a3afb8ab9f9285787985929f9b8f817c7b7c84919ea194877b7683909ca9afa295887c6f6e7b8794a1aebab8b0aaa9a4a4a4a4a4a4aaacb2bac3bcb4aeaca4a4a4998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f2f39434d575f6a6f7c869298a1a9b2bac0b8b0a8a098928b827b736d6760666d727a808790959fa4abb2bac2bbb3aaa39a92877e716b61594f453b31271d120700000000000000000000000000000000000000000000000000010b1825313e4b5864717e8b97a4b1beb9ac9f9286796c5f4e58606d7883909da39f969189817b726c665b6b7885929eabb8c5baada093877a6d6d727b828b92989e9f93887d70685d52483e32281e1108000000000000000004111d2935414b5569768284807c77736e697985929facb8c5baada094877a6d6154473a2e211b27323a46525e69727f8b95a0abb5c0b9aea49f9286838f949fa6b0b9c3c1baada2978f82756c61554b4035291e13080000000000000000000000000000000714202c38444f596163605d5663707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f625c6976838f9ca9b6b8ac9f9285797275757579777575757575757575757784909daab7bdb0a4978a7e7575757575757575797575757575736e63584b3f3226190d00000000000000000000000916222f3c4955626f7c8895a2afb9ac9f9386797985929f9e938f8888889196a1a194877b7683909ca9afa295887c6f6e7b8794a1aebac2bbb7b5b0b0b0b0b0b0b7b8bdc3ccc6bfbab8b0b0a6998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222a31373a3c43404b555e696f7c859298a2aab3bbc0b7afa69e9691867f776e69605d555c60686d747c838d9399a1a8b1b9c1bcb4aca39992877d706b60574d43392f24180c06000000000000000000000000000000000000000105090b070d111825313e4b5864717e8b97a4b1beb9ac9f9286796c5f53505c666f7d899399928d847d756e68605b5f6b7885929eabb8c5baada093877a6d60696e777e858f94958d80736b60564c443e352c21170b00000000000000000613202c3945515d677884918d88847f7b777985929facb8c5baada094877a6d6154473a2e231c2b37434e58616e7b86929fa7b1bdbcb1a79d928a7e79828f949fa7b1bcc5beb3a99e948b7e71675d51453a3025190d0200000000000000000000000000000916232f3c4855616b706d685d63707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160900000004111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f625c6976828f9ca9b5b8ab9e9285787f82828282828282828282828282828286929fabb8c3b6a99d908382828282828282828282828282828073665a4d4033271a0d00000000000000000000000815222f3b4855626e7b8895a1aebbafa49986797985929fa59e9b9595959ea1a8a194877b7683909ca9afa295887c6f6e7b8794a1aebaccc7c3c2bdbdbdbdbdbdc4c5c8ced5d0cbc7c5bdb3a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c4347485050515c676e7b849197a1aab3bcc0b6aea59d948f847c726c655f57514b51565d606a6f78808791969fa7afb7c1beb5aba39992867d70695e554b40352922170c000000000000000000000000000000000000060c11151718181d2025313e4b5864717e8b97a4b1beb9ac9f9286796c5f534a54606b75818e8f868079706b615e565b5f6b7885929eabb8c5baada093877a6d605f656c727b828a9083796d605957554f473e33281c1004000000000000000714212d3a4754606d7a87969995918c88837f86929facb8c5baada094877a6d6154473a342e2b2e3b4754606a75828e98a2aeb9bfb4aa9f958d80736d79828f95a0aab3bec5bbb0a69e9184796d60564c4135291e1308000000000000000000000000000713202c38444f5963707d7a6d6663707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160902020204111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110402020202020202020000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f625c6976838f9ca9b6b7aa9e918477828e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a2aebac4b8ab9f95908e8e8e8e8e8e8e8e8e8e8e8e8e8e83776a5d5044372a1d1104000000000000000000000815212e3b4854616e7b8794a1aec0b5a093877a7985929facaaa8a2a2a2abadb2a194877b7683909ca9afa295887c6f6e7b8794a1aebac1bbb7b5b0b0b0b0b0b0b7b8bdc3ccc6bfbab8b0b0a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e53555d5d5b606d79839096a1a9b3bcc5bcaea49c928e827a6f6a605b535d5d5d5d5d5d5860666d737d8490959ea5afbdc7bdb5aba39892857b6e675d51453e33281d1105000000000000000000000000000000000911171d21242524292c2d313e4b5864717e8b97a4b1beb9ac9f9286796c5f5342535d616e7b86827c736d676868686868686b7885929eabb8c5baada093877a6d68686868696e757e847c6e6768686361594f44382c201407000000000000000916232f3c4956626f7c8995a7a09d9995908c9298a3aebac7baada094877a6d615447443f383738444f59626f7c89939eaab4bfbaaea3989083786d676d79839198a2acb6c0c1b9ada1968c7f73685e52463a3025190d010000000000000000000000010b16222f3b4854606b778382786c63707d8a96a3b0bdc8bcafa295897c6f6256493c2f23160f0f0f0f0f111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110f0f0f0f0f0f0f0f0f0d0c0a0602000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f62546a7783909daab6b6a99c8f8376828f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa2aab3bec7bcb1a79f9d9b9b9b9b9b9b9b9b9b9b9b9b9b9083776a5d5044372a1d1104000000000000000000000714212e3a4754616d7a8794a0adbaada094877a7985929facb5b5aeaeaeb5b5aea194877b7683909ca9afa295887c6f6e7b8794a1aebab8b0aaa8a3a3a3a3a3a3aaacb2bac3bcb4aeaca3a3a3998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f626a6a6a6d74818e95a0a9b2bbc5bfb4aa9c928d80786d686a6a6a6a6a6a6a6a6a6a6a6a6a6a6b707a838e939eabb5c0c6bdb4aaa1979083796d605a5045392d21140800000000000000000000000000000009121b22292d30322f35393a3c3e4b5864717e8b97a4b1beb9ac9f9286796c5f534d59656f75757b7675757575757575757575757885929eabb8c5baada093877a757575757575757575797575757575706b6155483c2f23160a000000000000000b1825313e4b5864717e8b97a4acaaa7a09d989fa3aab4bfcbbaada094877a6d615453504a47433c4854606b76828f9ca5afbcbcb1a79f92867b6e665d676e7b86929aa4afbbc4bdb2a99f92857a6d61564c41362a1d1307000000000000000000000007121d2a36424d5763707d898c7f736b707d8a96a3b0bdc8bcafa295897c6f6256493c2f231c1c1c1c1c1c1c1e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d1c1c1c1c1c1c1c1c1c1c191916120d070000000000121f2b3845525e6b7885919eabb8bbafa295887c6f625c667884919eabb7b4a79b8e8175828f9ba8a8a8a8a8a8a8a8a8a8a8a8a8abaeb3bcc5cdc2b9b1aba9a8a8a8a8a8a8a8a8a8a8a8a89d9083776a5d5044372a1d1104000000000000000000000714202d3a4753606d7a8693a0b5c0ada194877a7985929fa8a8a8a8a8a8a8a8a8a194877b7683909ca9afa295887c6f6e7b8794a1aebbb0a69e9c9696969696969da0a8b2bdb4aaa39f969696968d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c15212e3a47535f6a6f767676767f8b939da7b1bbc4c7baaea3988d8076767676767676767676767676767676767676767679828e99a4afbbc7c6bcb3a9a0958e81756c6155493d302317100b0600000000000000000000000006111b242d34393d3e41414547494b4d5864717e8b97a4b1beb9ac9f9286796c5f534e5b68758182828282828282828282828282828187929facb9c5c2b5a89b8f828282828282828282828282828282827d7063574a3d3024170a000000000000000d1a2733404d5a6673808d99a6b3b7b1abaaa5acaeb4bcc6d0baada094877a6d6663605c54534e464f5963707d89949fabb7c1b8aca0958c7f726a5f555f69707e88939fa9b3bec4baaea2988d8073685e52463a2f24180d00000000000000000000000c18232f3a46525e6975828f93877d70707d8a96a3b0bdc8bcafa295897c6f6256493c2f2828282828282828282b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a28282828282828282828282625231e19120a01000000121f2b3845525e6b7885919eabb8bbafa295887c6f62606d7986939facb9b4aa988b7f75828f9ba8b5b5b5b5b5b5b5b5b5b5b5b5b8babec5ced4cbc2bcb8b6b5b5b5b5b5b5b5b5b5b5b5aa9d9083776a5d5044372a1d1104000000000000000000000713202d3a4653606d798699a4afbbaea194877b7985929b9b9b9b9b9b9b9b9b9b9b94877b7683909ca9afa295887c6f6e7b8794a1aeb7aa9e948f8a8a8a8a8a8a9196a0acb8aea398928a8a8a8a8a8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d242f3c4855626f7c8383838386929fa5afb9c3cdc5b9ac9f928683838383838383838383838383838383838383838383838387939facb9c6cfc5bbb1a79e938a7e7164574b3e31241f1c17110a02000000000000000000010c17222d363f45494b4d4b515456585a5864717e8b97a4b1beb9ac9f9286796c5f53535f6c79868e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9299a3aebac7c3b6aa9e938f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8c7f7265594c3f3226190c00000000000003101c28343f4a546875828f9ba8b5c2bcb8b6b2b8babfc6cecabdb1a4978a7e7974706d66625f584e54606b7683909ca6b0bbbbb0a69d9183786d60574e57616c74818e97a1adb9c2beb4aa9f92867a6d61554b4135291c110600000000000000000004101c2934404b55616e7b87929991857a707d8a96a3b0bdc8bcafa295897c6f6256493c35353535353535353535353744515e6a7784919daab7c4c3b6aa9d9083776a5d50443735353535353535353535353533322f2a231c130a000000121f2b3845525e6b7885919eabb8bbafa295887c6f62626f7b8899a4afbaaea298897c75828f9ba8b5c1c1c1c1c1c1c1c1c1c1c1c5c6cad0d7ddd4cdc7c4c3c1c1c1c1c1c1c1c1c1c1b6aa9d9083776a5d5044372a1d11040000000000000000000006121f2c3844505c667986939facb9aea194887b79858e8e8e8e8e8e8e8e8e8e8e8e8e877b7683909ca9afa295887c6f6e7b8794a1aeb5a89c8f827d7d7d7d7d7d84919daab7ac9f92867d7d7d7d7d7c6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f353c4956636f7c899090909299a3aeb7c1cbd3c7baaea398929090909090909090909090909090909090909090909090909399a4afbbc7d4cdc3b9afa5988c7f7265594c3f362d2b28231c140c02000000000000000005111d29343f485056585a555d606264666164717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa3abb4bfcbc6bbb0a69e9b9b9b9b9b9b9b9b9b9b9b9b9b9b988c7f7265594c3f3226190c00000000000006121f2c3844505c667784919daab7c4c8c4c3bfc5c7cbd0d8cbbfb2a69a908a85817d79736f6a5f535763707d89949fabb8c2b7ab9f948a7d70665c5045505a606d7a85919ea6b0bcc5baaea2988c8073675d5145382e23170b00000000000000000006131f2c3845515c6773808d99a1978f82777d8a96a3b0bdc8bcafa295897c6f6256494242424242424242424242424244515e6a7784919daab7c4c3b6aa9d9083776a5d504442424242424242424242424242403e3b352e251c12070000121f2b3845525e6b7885919eabb8bbafa295887c6f6265717e8b98abb5b8ac9f92857975828f9ba8b5b9b9b9b9b9b9b9b9b9b9b9c3c5c8ced5d8cfc8c2bebdb9b9b9b9b9b9b9b9b9b9b6aa9d9083776a5d5044372a1d11040000000000000000000003101c28343f4a5f6c7986929facb9aea195887b748182828282828282828282828282817a7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174707070707683909da9b6ac9f928579707070706e6a5f53473a2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a40454956636f7c89969d9d9fa3abb4bfc9d2d7cbbfb4aaa39f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa4abb5c0ccd7d5cbbfb2a5988c7f7265594c3f433a38342e261e140a00000000000000000915212d3945505a62656769676d6f71736e69717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929fa8a8a8a8a8a8a8a8a8a8a8a8a8acaeb4bdc6d1ccc1b8b0aaa8a8a8a8a8a8a8a8a8a8a8a8a8a5988c7f7265594c3f3226190c0000000000000713202d3a4653606d7986929facb9c1c5c6cad0d2d3d6dce2cec2b7aca29a97928e8985807c6f62555f6975828f9ca6b0bcbbb0a69c8f82766b61544a4b4b525d68717e8a949fabb7c2bfb4aa9f92857a6d60544a3f34281c100300000000000000000714202d3a4753606d7985929ea99f948c7f7d8a96a3b0bdc8bcafa295897c6f62564f4f4f4f4f4f4f4f4f4f4f4f4f4f4f515e6a7784919daab7c4c3b6aa9d9083776a5d504f4f4f4f4f4f4f4f4f4f4f4f4f4f4c4b4640372e23190d0200121f2b3845525e6b7885919eabb8bbafa295887c6f626675818e9ba8b4b4aa9c8f827675828f9ba8acacacacacacacacacacacacb7b8bcc3cbcfc6beb7b2b0acacacacacacacacacacacaa9d9083776a5d5044372a1d110400000000000000000000000c17232e46525f6c7985929facb8aea195887b6e7475757575757575757575757575756d7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d81746763636a7683909da9b6ac9f9285796c636363625f574e42372b1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18242f3a434b51535d636f7c8996a2a9acaeb4bdc6d1d1d1d1c6bcb4aeaca9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9acafb5bdc7d2d1d1cbbfb2a5988c7f7265594c4a4f46443f3830261c1106000000000000000b1724303d4956626c717476787a7c7e807b6e717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb5b5b5b5b5b5b5b5b5b5b5b5b9babfc6cfcececac1bbb6b5b5b5b5b5b5b5b5b5b5b5b5b2a5988c7f7265594c3f3226190c0000000000000815222f3b4855626e7b8899a3acb1b5b8babec3c4c8cdd4ddd3c8beb4aca9a29f9b97918d82756856626e7b87939facb9c2b7ab9f94897c6f6259585858585856616c7683909ca7b1bcc6baada2978c7f72665c5044382b1f12060000000000000007131f2c38434f5964717e8b97a1ada69f92877f8c99a5b2bfc8bcafa295897c6f62575b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5e6a7784919daab7c4c3b6aa9d9083776a5d5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5957514940352a1e120600121f2b3845525e6b7885919eabb8bbafa295887c6f626d7985929eabb8aea3988b7e7175828f9ba0a0a0a0a0a0a0a0a0a0a0a0a0aaacb1b9c3c8beb4aca6a4a0a0a0a0a0a0a0a0a0a0a0a09d9083776a5d5044372a1d11040000000000000000000000061f2c3945525f6c7885929fabb8aea295887b6f686868686868686868686868686868697683909ca9afa295887c6f6e7b8794a1aeb4a79a8d8174675a5d6a7683909da9b6ac9f9285796c5f5a5a57554f473e33281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2935404b555d606a636f7c8996a2afb9babfc5c5c5c5c5c5c5c5bfbab9b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b9bbc0c5c5c5c5c5c5bfb2a5988c7f72655955575c53504a42382e23170d030000000000000b1825323e4b5865717e80828487898b8a7e71717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bfb2a5988c7f7265594c3f3226190c0000000000000a1724313d4a5764707d8a979da0a7a8abadb3b6b8bcc3cbd4e0d0c6bebbb3adaba9a19a8e817467636874808d9aa4afbbbeb3a99c8f82766a64646464646464646464707d89959fabb7c4beb3a99e9184786d6053463a2d201307000000000000000915222f3b4854606b7783909da9b3aea3999286929facb9c5c8bcafa295897c6f626368686868686868686868686868686868686a7784919daab7c4c3b6aa9d9083776a6868686868686868686868686868686866635b51463b2f23160a00121f2b3845525e6b7885919eabb8bbafa295887c6f63707d8a97a2adb9ac9f92867a6d75828f93939393939393939393939393939da0a7b1bcc2b7aca29a97939393939393939393939393939083776a5d5044372a1d11040000000000000000000005121f2c3845525f6b7885929eabb8aea295887b6f7474747474747474747474747474746f7683909ca9afa295887c6f6e7b8794a1aeb4a79a8d81746767676a7683909da9b6ac9f9285796c6767676361594f44382c201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a45515d676d76706f7c8996a2afb8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b2a5988c7f72655a616469605c544a3f34281f150b010000000000101d2a3743505d6a76838d8f919695978d8073717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5cecac1bbb7b5b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b8b9bec4cdcbbfb2a5988c7f7265594c3f3226190c0000000000000c1926333f4c5966727f898d9095979b9fa2a9aaabb1b9c3ced7d8d0cdc5bebab8b3a69a8d80736b70717a86929facb6c0baada297897d717171717171717171717171717683909da9b6c3c5b9aca1968a7d7164574a3e3124170b00000000000005111e2a36414d56636f7c8995a0abbbb4aba3989298a3aebac7c8bcafa295897c6f6b707575757575757575757575757575757575757784919daab7c4c3b6aa9d9083777575757575757575757575757575757575736d63574b3e3225190c00121f2b3845525e6b7885919eabb8bbafa295887c6f6975828f9ba9b3b1a79b8e81756875818686868686868686868686868686869095a0acb8beb2a69a908a868686868686868686868686868683776a5d5044372a1d11040000000000000000000005121f2c3845525f6b7885929eabb8afa295887c7b8181818181818181818181818181817d7683909ca9afa295887c7a797b8794a1aeb4a79a8d8074747474747683909da9b6ac9f92857974747474706b6155483c2f23160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18242f3a434f59606d79837d747c8996a2ababababababababababababababababababababababababababababababababababababababababababababababababababa5988c7f7265636c71766d665c50443c31271d120700000000000e1b2734414e5a6774818d9a9ea1a89c8f8276717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5ccc1b8b0aaa8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7abadb3bbc4cfbfb2a5988c7f7265594c3f3226190c0000000000000713202d3a4653606d787d8083878b8e9297999d9fa7b1bcc6d0dbdfd7d0cac6bfb3a6998c8073707d7e818e98a2aebec5b8ab9f92857e7e7e7e7e7e7e7e7e7e7e7e7e7e7e818e9aa7b4c1c9bdb2a89b8e8275685b4f4235281c0f0200000000000714202d3946525e6875818e9ba7b1bcbdb4aaa39fa3aab4bfcbc8bcafa295897c6f707d8282828282828282828282828282828282828286929fabb8c5c5b8ab9f92858282828282828282828282828282828282827f7366594c403326190d00121f2b3845525e6b7885919eabb8bbafa295887c6f6e7b87929facb9aba095897c6f636c7879797979797979797979797979797883909daab7bdb0a4978a7e7979797979797979797979797979786d6053463a2d201307000000000000000000000005121f2c3845525f6b7885929eabb8afa295887c7b888e8e8e8e8e8e8e8e8e8e8e8e8e8b7e7683909ca9afa296897c837f7b8794a1aeb7aa9d908380808080808085919eabb8ac9f928780808080807d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2935414b55606b74808d8a807d89969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e988c7f72656d737e82786d60584e43392f23180d04000000000b1825323e4b5865717e8b98a4adab9e918578717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5c7bbb0a69e9c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea1a9b3bec9bfb2a5988c7f7265594c3f3226190c00000000000006121f2c3844515c666d7073777a7e8285898c90959faab4bfcad6d2cbc6c2c1bfb2a5988c7f7275828b8e939daab4bfc6baada297928b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8e939da9b5c2cec2b5a89c8f8275695c4f4236291c0f0300000000000814212e3b4754616e7b86929facb9c3c6bcb4aeacaeb4bcc6d1c8bcafa295897c6f727f8c8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a2aebac6c6baada297928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8276695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c6f74818e99a3afb1a79d9083776b60666c6d6d6d6d6d6d6d6d6d6d6d6d6d6d7784909daab7bdb0a4978a7d716d6d6d6d6d6d6d6d6d6d6d6d6d6d665c5044382b1f1207000000000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b88959a9a9a9a9a9a9a9a9a9a9a988b7e7683909ca9b6aa9d908390857c8895a2afb8aca095908d8d8d8d8d8d9197a1adb9aea399928d8d8d8d8d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313a45515d67707d8893928d84919292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292928c7f726d757f888c7f726a5f554b40342920160c010000000916232f3c4956626f7c8995a8b2ada197877a717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5c3b7aa9e948f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9197a1adb9c6bfb2a5988c7f7265594c3f3226190c00000000000004101c2834404a545c606366686e7175797c80838998a2aebac6d3c9c1bab6b4b8b1a4988b7e7175828f9a9da5afbcc5cabeb3a9a29f9797979797979797979797979797979a9da5afbac5cfc2b5a89c8f8275695c4f4236291c0f0300000000000c1825323f4b5865727e8b96a0abb4bfcbc6bfbab9babfc6cfd8c8bcafa295897c6f727f8c989b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa2aab4becacabeb3a9a29f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b8f8276695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c6f7c87939fabb5aca0958a7d7164595b60606060606062636363636363636a7784909daab7bdb0a4978a7d7164636363636362606060606061625f584e43392f24180c030000000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b8895a2a7a7a7a7a7a7a7a7a7a4988b7e7683909ca9b6aca09590958f828f9ca8b5bcb1a7a09d9a9a9a9a9a9a9ea1a9b3beb5aba39f9a9a9a998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a434f59606d7984919a9d979192878585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585857f7279818c9392877c6f675c51453d32281e13080000000714212d3a4754606d7a8796a1acb3a996897c717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5c2b5a89c8f82818181818181818181818181818181818181818185919eabb8c4bfb2a5988c7f7265594c3f3226190c000000000000000c18232e39424a515356565e6164666d6f737986929facb8c5cbc1b7afa9a7abada4978a7d7175828f9ca8afb7c0cecfc5bbb3adaba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a7a9afb7c0cbcfc2b5a89c8f8275695c4f4236291c0f0300000000000714202d3a4753606d7a849199a3aebac2cecbc7c5c7cbd1d8d5c8bcafa295897c6f727f8c98a5a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8abaeb4bcc5d0cfc5bbb3adaba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c78839099a4afb1a79d9183786c60535b6265625f606a6f70707070707070707784909daab7bdb0a4978a7d717070707070706f6a605860686d6f6a5f554b4035291e150a0000000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b8895a2aeb4b4b4b4b4b4b4b1a4988b7e7683909ca9b6b1a7a09d9e948f949eaab7c3b9b1acaaa7a7a7a7a7a7abadb3bbc4bdb5aeaca7a7a6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56606b74818e96a1a9a19e92867e7878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878727b838e939f999183796d60594f443a2f24190d0500000613202c3945515d677884919eabb1a4988b7e717e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5bbafa295887c7474747474747474747474747474747474747476838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c0000000000000007121c273039404446494d5254545c60636c7985929facb8c5c6baafa59d9b9ea1a996897d7075828f9ca8b5c0c9d2d7cdc5bebab8b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b4b5bac0c9d2cfc2b5a89c8f8275695c4f4236291c0f0300000000000613202c3945515d676f7c86929fa6b0bcc6d0d3d2d3d7dce2d5c8bcafa295897c6f727f8c98a5b2b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b8babec5ced7d7cdc5bebab8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a99c8f8276695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c7f8c949fabb5ab9f958a7e71655b59626d726f6a626f7c7d7d7d7d7d7d7d7d7d84919eabb7bfb3a6998c807d7d7d7d7d7d7d7c6f62626a6f7a7c6f675d51453c30261c110600000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b8895a2abadb3bbc1bcb4aeaca4988b7e7683909ca9b6b9b1acaaa69e9c9ea6b0bbc7c3bcb8b7b3b3b3b3b3b3b8b9bec4cdc6bfbbb9b3b3a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d68707d89939da8b2ada399928b80786d686b6b6b6b6b6b6b6d787b7b7b7b7b7b7b7b7b7b796d6b6b6b6d797b7b7b7b7b7b7b7b7b7b786d6b6b6b6b6b6b6b6b6b6d727d8590959ea5a0958d80746b60564c41352922170b000004111d2935414b556975828f9ca8b3a6998d80737e8b97a4b1beb9ac9f9286796c5f53535f6c7986929facb9c5bbafa295887c6f68686868686868686868686868686868686976838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c00000000000000000b151e272e34383a3d4146474a50535f6c7985929facb8c5c2b6a99d938e92979b95897c6f75828f9ca8b5c2cdcdcdcdcfcac6c5bebebebebebebebebebebebebebebec1c2c5cbcdcdcdc2b5a89c8f8275695c4f4236291c0f03000000000004111d2935404b555f6a727f8c949faab4bfcbd6dfe0e3e7e2d5c8bcafa295897c6f727f8c98a5b2bfc1c1c1c1c1c1c1c1c1c1c1c1c1c1c5c6cad0d7e0dfd7cfcac6c5c1c1c1c1c1c1c1c1c1c1c1c1c1c1b6a99c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bcafa295897c85929fa6b0b6aa9d9083786c6056616b727f7c716c76828989898989898989899196a1acb9c1b4a89c928c898989898989898276696d717c8484796d60584e42382e23170b02000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b88959d9ea1a9b3beb4aaa29f9d988b7e7683909ca9b6c3bcb8b7b0aaa8aab0b8c1cccbc5c2c0b9b9b9b9b9b9c3c4c8cdd4d0cac6c5b9b3a6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59606d7a84919ea5afbab5aba39f928d827a6e6960585f5f5f626f7c888888888888888888887c6f625f63707d888888888888888888887c6f625f5f5f5f575e666d747f8791979fa7afa79f93887d70685d52453e33281c100400010d18242f404d5a6773808d9aa6b3a89b8f82757e8b97a4b1beb9ac9f9286796c5f53505f6c7986929facb9c5bbafa295887c6f625b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5c6976838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c0000000000000000030c151c23282c2d3036393b3f44525f6c7985929facb8c5c1b4a79b8e81858a8e92887b6e75828f9ca8b5c0c0c0c0c0c0c0c0c0c0c3c4c7cdcacacacacdc8c4c3c0c0c0c0c0c0c0c0c0c0b5a89c8f8275695c4f4236291c0f030000000000010d18242f3a434e58606c77829098a3aebac3cdd9e4eff3e2d5c8bcafa295897c6f727f8c98a5b2bfc5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c7cbd1d9e1e1d9d1cbc7c5c5c5c5c5c5c5c5c5c5c5c5c5c5c2b6a99c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c828f9ca8b5b0a396897d70655b5e68707d87867e7376828f96969696969696969ea1a8b2bdc4b9aea49c999696969696968f82766d747e87918d80736a5f544a3f34281d140a000000000000000005121f2b3845525e6b7885919eabb8afa295887c7b8890909197a1adb9aea2989290908b7e7683909ca9b6c3c8c4c1bbb7b5b7bbc1cac8c0b9b5b4acacacacacacb6b8bcc2cbc6bfbab8acaca6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4854606b74818e96a1adb7c0bdb5afa49d948f847b6f6a61595055626f7c889494949494949494897c6f625663707d899494949494949494887c6f625552515960696e78818b9299a1a9b1bbafa49a91847a6d605a5044392d2114080000071825323e4b5865717e8b98a4b1aa9d9084777e8b97a4b1beb9ac9f9286796c5c605c5f6c7986929facb9c5bbafa295887c6f625a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5c6976838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c000000000000000000030b12181c1f20252a2d2e3446525f6c7985929facb8c5baada094877a797d8286877b6e75828f9ca8b3b3b3b3b3b3b3b3b3b3b3b6b7bbc2cad4d4cbc3bcb8b6b3b3b3b3b3b3b3b3b3b3b3a89c8f8275695c4f4236291c0f0300000000000007131d28313c44505b656e7b86929fa7b1bcc8d4e0eaf4e2d5c8bcafa295897c6f727f8c98a5b2b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9bbc0c7cfd9d9cfc7c0bbb9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b6a99c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c7e8b98a7b1b1a4978a7e71645b666e7a8592928a8078828f9ca3a3a3a3a3a3a3abacb2bac4cabfb6aea8a6a3a3a3a3a39c8f827678808b929992877c6f665c50443c2f261b11060000000000000005121f2b3845525e6b7885919eabb8afa295887c7b83848485919eabb8ac9f92868384837e7683909ca9b6c3cfd1ccc7c3c2c3c7cccbc0b6aea9a7a0a0a0a0a0a0a9abb1b9c2bcb4aeaca0a0a0998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d89939fa2a9b0bbc0c0bbaea69f9691857c706b615a55626f7c8895a1a1a1a1a1a195897c6f625663707d8996a1a1a1a1a1a195887c6f6255515b626b6f7b838e939fa3abb3bbc0b6aca1968e81756c6155493c3023160a0000091623303c4956636f7c8996aab4ac9f9285797e8b97a4b1beb9ac9f9286796c666d665d6c7986929facb9c5bbafa295887c6f66666666666666666666666666666666666976838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c0000000000000000000000070e161e262e34383a3a46525f6c7985929facb8c5baada094877a6d70757a7e796d75828f9ca7a7a7a7a7a7a7a7a7a7a7a7a9abb0b8c2cdcdc3b9b1abaaa7a7a7a7a7a7a7a7a7a7a7a79c8f8275695c4f4236291c0f03000000000000010c161f27333f49535f69727f8c95a0acb8c1ced8e2ede2d5c8bcafa295897c6f727f8c98a5ababababababababababababababababacafb5bdc7d1d1c7bdb5afacabababababababababababababababa99c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c7b8795a0acb5a99c8f827669606c78828f979f928d8282909ca9b0b0b0b0b0b0b7b9bdc4ccd1c8bfb9b4b3b0b0b0b0a99c8f827a828d929fa3999083786d60574d41382d22170b0200000000000005121f2b3845525e6b7885919eabb8afa295887c6f7777777f8b98a5b2a99c8f82777777707683909ca9b6c3cfdcd7d3d0cfd0d3d1c5b9aea49d9a9393939393939d9fa7b1bcb4aaa295939393938d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d79818a92979fa6afb6bec0b8b0a8a09791867d716c625b626f7c8895a2aeaeaeaea295897c6f625663707d8996a3aeaeaeaea295887c6f62555d606d727d8590959da5aeb5bdc3bcb4aea49d938a7d7164574a3e3124170b00000814212e3b4754616e7a8798a2aeaea298877a7e8b97a4b1beb9ac9f928679696e796d686c7986929facb9c5bbafa295887c7373737373737373737373737373737373737376838f9ca9b6c2bfb2a5988c7f7265594c3f3226190c00000000000000000000020c16202830383f44464646525f6c7985929facb8c5baada094877a6d64686d726d6775828f9a9a9a9a9a9a9a9a9a9a9a9a9a9c9fa6b0bbc7c8bcb1a79f9d9a9a9a9a9a9a9a9a9a9a9a9a9a8f8275695c4f4236291c0f0300000000000000040d17222d38414d57606d7883909da5afbcc6d0dbe7e2d5c8bcafa295897c6f727f8c989e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa3abb5c0cbcbc0b5aba39f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9c8f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c7783909daab7ac9f93877b6e6b737f8c949fa49c948f90949fabb7bcbcbcbcbcc4c5c9cec7c7c7cac4c1bfbcbcbcb6aa9d9083838f949da4aba0958c7f72695f53493f33271f140900000000000005121f2b3845525e6b7885919eabb8afa295887c6f6a6a727f8b98a5b2a99c8f83766a6a697683909ca9b6c3cfdcdfe0dcdbdcdbcec2b5a99d928d86868686868690959fabb8aea2988a86868686868073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d747e8590949fa4acb3bcc2bab2a9a19892877e726d62626f7c8895a2afbbbbafa295897c6f625663707d8996a3b0bbbbafa295887c6f6260676d757f8791979fa7afbbbfc1bab2aaa29f928d827a6d6154473a2e21140700000714202d3946525e687885929fabb4aa95897c7e8b97a4b1beb9ac9f9286796e7b837a6d6c7986929facb9c5c1b4a79b8e81808080808080808080808080808080808080808084919eabb7c4bfb2a5988c7f7265594c3f3226190c0000000000000000000008131e28323a424a50535353535f6c7985929facb8c5baada094877a6d615d6065606975828d8d8d8d8d8d8d8d8d8d8d8d8d8d90949fabb7c4c4b8ab9f95908d8d8d8d8d8d8d8d8d8d8d8d8d8d8275695c4f4236291c0f03000000000000000006111b262f3c44505c666f7c89939eaab4bfcad6e0e2d5c8bcafa295897c6f727f8c9292929292929292929292929292929292929299a3afbbc7c7bbafa3999292929292929292929292929292929292928f8376695c504336291d1000121f2b3845525e6b7885919eabb8bbafa295887c73808d99a9b3afa4998c7f736f7d87929fa6aea69e9c9c9fa6b0bcc7c5bdbababababababababababababababcc5b8aca0959090959ea6aeb1a79f92867b6e655b50443b30251a0e02000000000005121f2b3845525e6b7885919eabb8afa295887c6f6969727f8b98a5b2a99c8f83766969697683909ca9b6c3cfd3d2d3d7dce3dacdc0b4a79a8d8078797979797883909da9b6ac9f92867879797979786c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c555d606c717b828d939aa2aab1b9c1bbb3aaa29992887f726d626f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f626a6f7a818c9299a1a9b1b9c0bfbaafa8a098928b80786d685d5246392d201307000005111e2a36414c566a7783909daab1a4978a7e7e8b97a4b1beb9ac9f9286797b848d8074697986929facb9c5c2b6a99d938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9196a1adb9c5bfb2a5988c7f7265594c3f3226190c000000000000000000010d1925303a444c545c60606060606c7985929facb8c5baada094877a6d616060605c65717e808080808080808080808080808082909ca9b6c3c3b6aa9d908380808080808080808080808080807e7165584b3e3225180b000000000000000000000a141d28343f4a54606b75818e98a2aebac4cfdae5d5c8bcafa295897c6f727f8585858585858585858585858585858585858587929facb9c5c5b9ac9f92878585858585858585858585858585858585858175685c4f4235291c0f00121f2b3845525e6b7885919eabb8bbafa295887c6f7c8997a1adb5ab9e9184777a849199a3afb8b0aaa8a9abb0b8bfbab9b0adadadadadadadadadadadadadadafb8bab1a7a09d9da0a7b0b8baaea3989082776c60574d42362a1e1105000000000005121f2b3845525e6b7885919eabb8afa295887c6f7576767f8b98a5b2a99c8f827676766e7683909ca9b6c3cbc7c5c7cbd1d8dacdc0b4a79a8d81746d6d6d6d7683909da9b6ac9f9285796d6d6d6d6c665b5044382b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a434c515a61696e7880889298a0a7afbbc0bcb4aba39a938b7f726d6f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f6c727c848f939fa3abb3bbc2bdb4aea59e9691867e746d665d564c4135291d11050000010d192530424f5b6875828e9ba8b2a5998c7f7e8b97a4b1beb9ac9f92877b849192867b6e7986929facb9c5c6baafa59d9b99999999999999999999999999999999999999999ea1a8b2bdc9bfb2a5988c7f7265594c3f3226190c00000000000000000005111d2a36414c565e666d6d6d6d6d6d7985929facb8c5baada094877a6d6d6d6d6d66626c7174747474747474747474747474747f8c98a5b2bfc0b3a6998d807474747474747474747474747474716c62564a3d3124180f06000000000000000000020b17232e38424f59616e7b86929fa8b2bdc9d5e0d5c8bcafa295897c6f6d727878787878787878787878787878787878787884919daab7c4c3b6aa9d9083787878787878787878787878787878787878756f65594d4134281b0e00121f2b3845525e6b7885919eabb8bbafa295887c6f7985929eabb8aca096897d818f96a1abb5c0bbb7b5b6b7bcbdb4aeaca3a1a1a1a1a1a1a1a1a1a1a1a1a1a1a2abaeb4b1acaaaaacb1b9c1bfb4aa9f948b7e72695e52463a2d201407000000000005121f2b3845525e6b7885919eabb8afa295887c7582838284919daab7ab9e92858283827a7683909ca9b6c3bfbbb9bbbfc6cfd8cdc0b4a79a8d81746760606a7683909da9b6ac9f9285796c606060605b544a3f332820150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313a414550575e666d737e8690959ea5afb6bebdb5aca49f918b7f726f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f777f8791969ea5afb5bdc1bab2aba39f938f847c716c605c544c443a3024190d01000000081a2733404d5a6673808d99a6b3a79a8e817e8b97a4b1beb9ac9f9387849196998f82757986929facb9c5cbc0b7afa9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6abadb2bac4cfbfb2a5988c7f7265594c3f3226190c0000000000000000000713202d3946525e68767979797979797886929facb8c5baada194877a79797979786d60626567676767676767676767676767727f8c98a5b2bfc0b3a6998d80736767676767676767676767676765625a50453a312a21180e0300000000000000000006111c26303d46525e69737f8c96a1adb9c4ced9d5c8bcafa295897c6f62656b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b7784919daab7c4c3b6aa9d9083776b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b68655d53493d3125190c00121f2b3845525e6b7885919eabb8bbafa295887c6f74818e9babb4b2a89e91848f939ea7afbbc0c7c3c2c3c4bfb4aba39f969494949494949494949494949494969fa2aab4b8b6b7b8bcc3c3bbb3aba49f92857b6e6154473b2e211408000000000005121f2b3845525e6b7885919eabb8afa295887c79858f8f9196a0acb8ada297928f8f877b7683909ca9b6bdb5aeacaeb5bdc6d1cdc0b4a79a8d8174675a5d6a7683909da9b6ac9f9285796c5f57575755544e463c32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f353e454d545c606c707b838e939fa4acb4bcbeb6afa39f93887e717c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c75818c9299a0a8afbbc0bfbaafa8a099928b817a6f6a615a504a423a32281e1308000000000b1825323e4b5865717e8b98a4b1a99c8f827e8b97a4b1bebbafa499939196a09e93897d7986929facb9c5cfc9c0bab6b4b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b7b9bdc4cccbbfb2a5988c7f7265594c3f3226190c0000000000000000000714212e3a4754616d7a868686868686868a98a2aebac6bbafa3978c878686868685786b5f585a5a5a5a5a5a5a5a5a5a5a5a65727f8c98a5b2bfc0b3a6998d8073665a5a5a5a5a5a5a5a5a5a5a5a5856504847433c332a201509000000000000000000000a151e2a36424d57606d7984919ea8b2bdc9d5d5c8bcafa295897c6f62585f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6a7784919daab7c4c3b6aa9d9083776a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c59534b42372c20150900121f2b3845525e6b7885919eabb8bbafa295887c6f717d8a99a3aeb9aca196918690959ea5afb5bdc5cecfc7baaea399928a8787878787878787878787878787899298a2aebac3c3c4c8c1b9b1a9a199938d837b6e6154483b2e211508000000000005121f2b3845525e6b7885919eabb8afa295887c7985929c9da0a8b2bdb3a9a29e9c94877b7683909ca9b6b5aba39fa3abb5bfcbcdc0b4a79a8d81746764646a7683909da9b6ac9f9285796c646464646260584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e2429333b424a505a61696e79818c939aa2aab3bbc0bbafa49a92857a7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c707d87929fa5afb9c1bcb4aea59e9691877f756d675f5850443f38302820160c02000000000a1623303d495663707c8996abb5aa9e91847e8b97a4b1bec0b5aba49f9ea0a8a69d90837886929facb9c2c2c2c2c2c2c1c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c2c2c2c2c2c2bfb2a5988c7f7265594c3f3226190c0000000000000000000714212e3a4754616d7a8793939393939395a2aab4bfcabfb3a89e97949393939285786b5f5d5d5d5d5d5d5d5d5d5d5d5d5d65727f8c98a5b2bfc0b3a6998d8073665d5d5d5d5d5d5d5d5d5d5d5d5d5d5d55534e463c31261a0f02000000000000000000030c1a25303b45515d67727e8b96a0acb9c3ced9c8bcafa295897c6f6256525252525252525252525252525252525e6a7784919daab7c4c3b6aa9d9083776a5d5252525252525252525252525252524f4d49423930251b0f0400121f2b3845525e6b7885919eabb8bbafa295887c6f6d7a86929facb9b2a89a8d80838e939fa3abb4bcc4ccc5b9ac9f92867d7a7a7a7a7a7a7a7a7a7a7a7a7a7a7d85929fabb8c5d1cbbfb7afa79f97918780786e695e53463a2d211407000000000005121f2b3845525e6b7885919eabb8afa295887c7985929faaacb2bac3bbb3adaba194877b7683909ca9b6aea3999299a3aebbc7cdc0b4a79a8d8174717171717683909da9b6ac9f92857971717171716f6a6054473b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c1319212930383f4450575f676d757f889298a1a9b2b6ada49f93887e717c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f727f8b939da7b1bbb1aaa29f938e847c726d605d554e463e342e261e160e0400000000000815212e3b4854616e7b8799a3afac9f92857e8b97a4b1bec7bdb5afacaaacb2aca0958b7e86929facb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b2a5988c7f7265594c3f3226190c0000000000000000000714212e3a4754616d7a8794a0a0a0a0a0acaeb4bcc6d0c5bab0a8a3a1a0a09e9285786b666a6a6a6a6a6a6a6a6a6a6a6a6a6a727f8c98a5b2bfc0b3a6998d80736a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a625f584e43372b1f12060000000000000000000009141f2935404b55606d7884919ea7b1bcc8d4c8bcafa295897c6f6256494545454545454545454545454545515e6a7784919daab7c4c3b6aa9d9083776a5d50454545454545454545454545454542413d3730271e14090000121f2b3845525e6b7885919eabb8bbafa295887c6f6776828f9ca9b5b6aa9d908379818b9299a2aab2bac3c7baaea39992857c6e6e6e6e6e6e6e6e6e6e6e6e7b849198a2aebac6c7c0bbada59e9590857d736d665e574d42362a1e1205000000000005121f2b3845525e6b7885919eabb8afa295887c7985929facb8bbc2cac4bdb9aea194877b7683909ca9b6ac9f9286929facb9c2cdc2b5a99c8f827e7e7e7e7e7e84919eaab7ac9f92867e7e7e7e7e7e7c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f171e262e343e454d555d606d737e869297a0a8aea49c928b7f726f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f6d74818e959fa9afa7a098928b817a6f6a625b514c433c3428231c150c040000000000000713202d3a4653606d7986929facaea2988c7f8c98a5b2bfd0c7c0bbb9b7b9b2a9a298918486929fa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a5988c7f7265594c3f3226190c0300000000000000000714212e3a4754616d7a8794a0acacacacb8babfc6ced7ccc2bab3afadacab9e9285786b717777777777777777777777777777777f8c98a5b2bfc0b3a6998d8077777777777777777777777777777777776e6a5f53473a2e21140800000000000000000000020c18242f3944505c66717e8a95a0acb8c3cec8bcafa295897c6f6256493c30383838383838383838383844515e6a7784919daab7c4c3b6aa9d9083776a5d5044383838383838383838383838383534312c251e150c020000121f2b3845525e6b7885919eabb8bbafa295887c6f65727f8b98a7b1b8aba095887b747f879298a1a8b2bac3bfb4aba19791847b6e67616161616161666d7a839096a1aab4bec6bdb5afa39c938e837b706b605c544d453b31251a0e02000000000005121f2b3845525e6b7885919eabb8afa295887c7985929fa9abb0b8c2bab2acaba194877b7683909ca9b5a89c8f828f9ca7b1bcc8c3b7ab9f948f8a8a8a8a8a8a9196a0acb9aea398928a8a8a8a8a8a8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c16202830363c434b515b636c717c859196a0a59d928c7f736d6f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f626d79839097a1a49f9590867e756d6760585145413a312a2217110a030000000000000006121f2b3844505c667884919eabb4aa9a8d808d9aa7b3c0cdd2ccc7c1b9b1a8a09792867d86929c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c988c7f7265594c3f32261e150c02000000000000000714212e3a4754616d7a8794a0adb9b9b9c5c6cad0d7e0d4ccc5bfbbbab8ab9e9285786b7783838383838383838383838383838384919eabb7c4c4b8ab9e918583838383838383838383838383838383837c6e6255483b2f221508000000000000000000000007121d28343f4a54606c7883909da7b1bcc8c9bcb0a396897d7063574d42362a2c2c2c2c2c2c2c2c2c3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372c2c2c2c2c2c2c2c2c2c2c2c292825201b140c03000000121f2b3845525e6b7885919eabb8bbafa295887c6f626e7b8895a0acb8b1a79a8d8073727d869196a0a8b1b9c3bdb3a9a1969083796d655b54545b606d78828f95a0a8b2bcc5bcb4aba39f918c81796e696059514a423b33291f140900000000000005121f2b3845525e6b7885919eabb8afa295887c798592999c9fa6b0bbb2a8a19e9994877b7683909ca9b0a4978a7d8a959fabb8c7c7bbb0a69f9c9797979797979ea0a8b2bdb4aaa39f97979797978d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e28323a4146474747515a616a6f7b8490959e938d80746d626f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f62676e7b8591999a938d837c716d605d554e4746443f382f261b1106000000000000000003101c28343f4a54697683909ca9b5a89b8e828e9ba8b5c1ced1c9c0b8b0a79f9691857d79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8c7f7265594c3f3730271e1409000000000000000714212e3a4754616d7a8794a0adbac6c6d2d3d6dbe2e9ded6d0cbd1c5b8ab9e9285786c798690909090909090909090909090909196a1adb9c5c6b9ada1979190909090909090909090909090909090887c6f6255493c2f2216090000000000000000000000010c17232e3844505b65707d8a95a0acb8c3cec1b5a89b8e8175695e5246392f23181f1f1f1f1f1f2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1f1f1f1f1f1f1f1f1f1f1f1c1b19150f090200000000121f2b3845525e6b7885919eabb8bbafa295887c6f62697784919daab7b8ab9e9285796d707c849196a0a7b1b9c3bbb2a9a0958f81776c605959626d74818e949fa7b1bac4bcb4aaa399928b7f756d675e574f444039302921170d0300000000000005121f2b3845525e6b7885919eabb8afa295887c79868d8d8f949fabb7aca196918d8d877b7683909ca9afa295887c83909dabb5c0cbc2b8b0aba9a4a4a4a4a4a4aaacb2bac3bcb4aeaca4a4a4a49a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444c5254545454545860696e7a8390938e81776c60626f7c8895a2afbbbcafa295897c6f625663707d8996a3b0bcbbafa295887c6f625e696f7d8792918880796e6a625a5454545453504941382d22170b0000000000000000000b17232e424e5b6875818e9ba8b4a99d9083909da9b6c3d0c7bfb7afa69e9590847b6f75828282828282828282828282828282828282828282828282828282828282828282828282828282828282827e7164574a48423930251b0f040000000000000714212e3a4754616d7a8794a0adbac5c5c7cbd1d8e1e9e1d8d1cbc7c5b8ab9e9285786c7986939d9d9d9d9d9d9d9d9d9d9d9d9d9ea1a8b2bdc9c9beb3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d95887c6f6255493c2f22160900000000000000000000000006111c27333f4953606c7883909da8b2bdc8c5b9ac9f92867b6e61554b4034291c10121212121e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d121212121212121212120f0e0c0904000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f626673808d99a9b3b9ada1978a7d706a6f7b849095a0a7b1bac3bbb1a79e938c7f736b60606b727f8b929da6b0b9c3bcb4aaa29892877e736d605c554d453d342e271e170f050000000000000005121f2b3845525e6b7885919eabb8afa295887c73808080828f9ca9b3ab9e91848080807a7683909ca9afa295887c7f8b99a3afbbc7cac2bbb7b5b1b1b1b1b1b1b7b9bdc3ccc6bfbab9b1b1b1a79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424c565e6161616161616161686e7a838d81786d6561626f7c8895a2afbbbcafa295897c6f626163707d8996a3b0bcbbafa295887c6f6261616b717e8b847d746d6761616161616161605b53493f33271b0f030000000000000000061a2734404d5a6773808d9aa6b3ab9e9184919eabb7c4cfbfb5ada59d948f837a6e696f75767676767676767676767676767676767676767676767676767676767676767676767676767676767676716c615b59534b42372c2015090000000000000714212e3a4754616d7a8794a0adb9b9b9babfc6cfd7e0d8cfc6bfbab9b8ab9e9285786c7986939faaaaaaaaaaaaaaaaaaaaaaaaabadb2bac4cfcfc4bbb3adabaaaaaaaaaaaaaaaaaaaaaaaaaaaaa295887c6f6255493c2f221609000000000000000000000000000b17222d3844505b65717e8a96a0acb9c4c7bbafa3998d8073675c5145382c1f160a0005111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110505050505050505050202000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c6f66666f7c8997a1adb9b3a99b8f827568696e7a839095a0a8b2bac3b9afa59f92877c6f68686f7d87929fa5afb8c2bdb4aaa29892867e716c635b514b433b3328231c150c05000000000000000005121f2b3845525e6b7885919eabb8afa295887c6f7373737f8b98a5a7a79c8f827673736d7683909ca9afa295887c7a86929facb9c5d2ccc7c3c2bdbdbdbdbdbdc4c5c8ced5d1cbc7c5bdbdb4a79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545e686d6d6d6d6d6d6d6d6d6d6d7a80796d6d6d6d6d6f7c8895a2afbbbcafa295897c6f6d6d6d707d8996a3b0bcbbafa295887c6f6d6d6d6d6d717e7a706d6d6d6d6d6d6d6d6d6d6c655b5044372b1f120500000000000000000c1926323f4c5965727f8c98a5b2ac9f9286929facb9c5c7bdada39c938e82796e686a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a68655d53483d3125190c0000000000000714212e3a4754616d7a8794a0acacacacaeb4bcc6ced7d1c6bcb4aeacacab9e9285786c7986939facb6b6b6b6b6b6b6b6b6b6b6b7b9bdc4ccd6d6cdc4beb9b8b6b6b6b6b6b6b6b6b6b6b6b6b6afa295887c6f6255493c2f2216090000000000000000000000000006111b27333f4953606d7884919ea9b2bdc9c0b5ab9e9285796d6053473d32271b0f0104111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8bbafa295887c737373737985929eabb8b9ac9f92867a6d61686e7a839096a0a8b2bbc1bbafa39991847a6d6d7a849199a3afb7c0bdb4aba39892867d706c625a5145403931292118120b0300000000000000000005121f2b3845525e6b7885919eabb8afa295887c6f6666727f8b989a9a9a9a8f83766966697683909ca9afa295887c76828f9ca9b6c2cec8c0bab5b4b2b2b2b2b6b7bbc2cad4ccc4bdb9b7b2b2a79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c66767a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7d8996a3afbcbcb0a396897d7a7a7a7a7a7e8a97a3b0bdbcafa396897d7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776c605346392d20130600000000000000000b1824313e4b5764717e8a97a4b1afa3999299a3afbbc7c0b5ab9c918c81786d7076777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777756f65594d4134281b0e0200000000000714212e3a4754616d7a87949f9f9f9f9fa3aab4bcc6d0cbbfb4aaa39f9f9f9e9285786c7986939facb9c3c3c3c3c3c3c3c3c3c3c4c5c9cfd6dedfd6cfc9c6c4c3c3c3c3c3c3c3c3c3c3c3c3bbafa295887c6f6255493c2f22160900000000000000000000000000000b17222d3844505c66717e8b96a1adb9c6c7b9ada1978b7e7164594f43382c1e130800111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c1b4a79a8e81808080808084919eaab7bbafa3998b7e71655e686d7a849196a1a9b3bdc0b5aba1968e817475828f96a1abb5c0c0b5aba39992867d706b615a504840342f271f170f07000000000000000000000005121f2b3845525e6b7885919eabb8afa295887c6f6265727f8b8d8d8d8d8d8d82766961697683909ca9afa295887c727f8b98a7b1bcc8c0b6aea9a7a5a5a5a5a9abb0b8c2ccc4bab2acaaa5a5a59a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798687878787878787878787878787878787878787898f99a5b1bdbeb1a5998f8987878787878a909aa6b2bebdb1a5998f8987878787878787878787878787878787878787877a6d6054473a2d2114070000000000000000091623303c4956636f7c8996a2a4aba39f9fa2a9b3bec7bbafa3998c7f746d6676828484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484838175685b4f4235281c0f0200000000000714212e3a4754616d7a8792929292929298a2aab4bfcac7baaea398929292929285786c7986939facb9bbbbbbbbbbbbbbbbbbbbc0c1c5cad2dadbd2cbc6c2c1bbbbbbbbbbbbbbbbbbbbbbbbbbafa295887c6f6255493c2f221609000000000000000000000000000006111b28343f4a54606d7984919eaab4bfc9beb3a99d9083776b6054483a2f24190d01111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4b6a99d938e8c8c8c8c8c9196a0acb9c0b5ab988b7f7265565e686e7b849197a2abb5c0bdb2a89f93887c7f8b949ea9b2bdc1bbafa49992877d706b605950473f3629231d150d0500000000000000000000000005121f2b3845525e6b7885919eabb8afa295887c6f6e6e707d808080808080807f726e6e6e7683909ca9afa295887c6f7b8795a0acb8c5baaea49d9a989898989c9fa6b0bbc7bdb2a8a09e989898988d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939494949494949494949494949494949494949699a1abb6c1c2b6aba199969494949494979aa2acb6c2c1b6aba1999694949494949494949494949494949494949493877a6d6054473a2d21140700000000000000000815222f3b4855626e7b889599989699929297a2adbac5b9ac9f9286796d606b788590909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909084776a5d5144372a1e110400000000000714212e3a4754616d7a868686868686868998a2aebac6c5b9ac9f92868686868684786c7986939facafafafafafafafafafafafb3b5b9c0c8d2d2c9c0bab6b4afafafafafafafafafafafafafafa295887c6f6255493c2f2216090000000000000000000000000000000b17232e3844515c66727f8c98a2aebac7c5b8aca095897c6f63564c4135291d1104111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4baafa59d9a99999999999ea0a8b2bdbeb2a5988b7f726558565e696e7b859299a3afbbc1bbafa49a918486929fa6b0bbc1b8aea49f93877e716b61594f473e352d2418120b030000000000000000000000000005121f2b3845525e6b7885919eabb8b0a3968a7d7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b83909da9afa295887c6f7784909daab7c3b5a99d928d8c8c8c8c8f949fabb7c3b9aca096918c8c8c8c8c8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a3a5abb3bdc7c7bdb3aba5a3a0a0a0a0a0a3a6acb4bdc8c7bdb3aba5a3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a093877a6d6054473a2d21140700000000000000000814212e3b4754616e7a878e8c8b89878685929fabb8c5b9ac9f9286796c5b6b7885919d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9084776a5d5144372a1e110400000000000713202d3946525e686d7979797979797986929facb8c5baada094877a7979797978726c7986939fa2a2a2a2a2a2a2a2a2a2a2a2a6a9aeb6c0cacbc0b7afa9a7a2a2a2a2a2a2a2a2a2a2a2a2a2a2a295887c6f6255493c2f22160900000000000000000000000000000006111c2834404a54606d7a86929fabb5c0c8bcb1a79b8e8175685d5245392c201509111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4c0b7afa9a7a6a6a6a6a6aaacb2bac4beb2a5988b7f7265584d575f69707d87929fa5afbac0b6aca096919298a2aeb8c1bab0a69d928c7f726c61594f473d352c231b120701000000000000000000000000000005121f2b3845525e6b7885919eabb8b1a59a8f8a87878787878787878787878787878787878790959fabafa295887c6f73808d99aab4bfb4a79a8d807f7f7f7f828f9ca9b6c2b7aa9e91847f7f7f7f7f7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acadadadadadadadadadadadadadadadadafb1b6bdc5cecfc5bdb6b1b0adadadadadb0b2b6bdc6cfcec5bdb6b1afadadadadadadadadadadadadadadadadada093877a6d6054473a2d21140700000000000000000713202d3a4653606d788281807e7c7b797e8b97a4b1beb9ac9f9286796c5f6b7885919eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d9084776a5d5144372a1e1104000000000005111d2935414c565e616c6c6c6c6c6c7985929facb8c5baada094877a6d6c6c6c6b686c798693959595959595959595959595959a9da4aeb9c5c6baafa59d9b95959595959595959595959595959595887c6f6255493c2f221609000000000000000000000000000000000c18232e3945525d6874818d99a4afbbc7c3b8ac9f92867a6d6054473c31261a0e111e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4c9c0bab6b4b3b3b3b3b3b7b9bdc4ccbeb2a5988b7f7265584c4d57606b727f8b939da8b2bdbeb2a8a09d9fa2aab4bfbcb2a89e948d80746d625a50473e352b231a11090000000000000000000000000000000005121f2b3845525e6b7885919eabb8b6aba19a969494949494949494949494949494949494949d9fa7b1afa295887c6f6f7c8998a2aebab2a5988c7f72727275828f9ca8b5c0b4a79a8d807472727272706b6054483c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9babababababababababababababababcbdc1c7c8c8c8c8c7c2bebcbabababababdbec2c8cecdc8c8c7c1bdbcbabababababababababababababababaada093877a6d6054473a2d211407000000000000000006121f2c3844505c666d76757371706e717e8b97a4b1beb9ac9f9286796c5f6b7885919eabb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7aa9d9084776a5d5144372a1e11040000000000010d1925303a444c52545f5f5f5f5f6c7985929facb8c5baada094877a6d615f5f5e606c798688888888888888888888888888888d929da9b5c1c2b6a99d938e88888888888888888888888888888888887c6f6255493c2f2216090000000000000000000000000000000007121c2935414c56616e7b87939facb9c4c7baaea3988b7e7265574d42372b1c11061e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4c6cbc6c2c1bfbfbfbfbfc4c5c9cec6beb2a5988b7f7265584c454f59626d74818e96a0abb5c0bab2acaaacaeb4bcbfb4aaa0968f82786c605b51483e352c231a1108000000000000000000000000000000000005121f2b3845525e6b7885919eabb8bdb3aba5a3a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a9abb1b9afa295887c6f6d7986929facb8b5a89c8f8275666d7985929fabb8bdb2a8978a7e71656565656360594f44382c201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb9bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbec0c3c9c7c7c7c7c7cacbcbc5c2c1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaada093877a6d6054473a2d211407000000000000000003101c28343f4a545c60696866656364717e8b97a4b1beb9ac9f9286796c5f6b7885919eabb8c1c1c1c1c1c1c1c1c1c1c1c1c1c3c3c3c3c3c3c3c3c3c3c3c3c3c3c1c1c1c1c1c1c1c1c1c1c1c1c1b7aa9d9084776a5d5144372a1e110400000000000008131e28323a414647535353535f6c7985929facb8c5baada094877a6d615453525f6c767c7c7c7c7c7c7c7c7c7c7c7c7c7c7c808d9aa6b3c0c1b4a79b8e817c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796d6053473a2d20140700000000000000000000000000000000000d1924303a46535f6975828f9ca8b2bdc9bfb4aa9d908376695f5347382d22170b1e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabb8b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b2a5988b7f7265584c3f47515b606d79849199a3afbbc3bdb8b7b8babfc5baaea39891847a6d665b50493f362c231a110800000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4bdb6b1b0aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb6b8bcbbafa295887c6f6676838f9ca9b6b8ab9f9285796c6f7c8997a2adbab9aca096877b6e6159595956544f473d33271c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb2b3b8bfc7d1d3d3d3d2c9c0bab5b4aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeada093877a6d6054473a2d2114070000000000000000000c17232e38424a50535d5b59585864717e8b97a4b1beb9ac9f9286796c5f6b7885919eabb4b4b4b4b4b4b4b4b4b4b4b4b4b4b7b9bdc4ccd0d0d0d0cbc3bcb8b6b4b4b4b4b4b4b4b4b4b4b4b4b4b4aa9d9084776a5d5144372a1e1104000000000000020c1620283035393a464646525f6c7985929facb8c5baada094877a6d61544747535f6a6f6f6f6f6f6f6f6f6f6f6f6f6f6f727f8c98a5b2bfc0b3a6998d80736f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d675d5145382c1f1306000000000000000000000000000000000008131e2b37424d5764707d8a96a1adb9c7c6b8ab9f95887b6e62544a3f33281c0f1e2b3744515e6a7784919daab7c4c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919eabadadadadadadadadadadadadadadadadadadada5988b7f7265584c3f3f45515d676f7c87929fa8b2bdc8c5c4c5c6c5bbb0a69f92867c6f685d544a3f372d241a11080000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8bebebebebdbababababababababababababababababababebebebbafa295887c6f66737f8c99abb5baada297887c6f727f8c99a9b3beb7aa9e918477695e534c4c4a48443d352b21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a5a7adb5bfc9d4e0d6cbc0b7afa9a7a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a093877a6d6054473a2d21140700000000000000000006111c2630383f4446504e4d4b5864717e8b97a4b1beb9ac9f9286796c5f6b7885919ea8a8a8a8a8a8a8a8a8a8a8a8a8a8a8abacb2bac4cedad9cdc3b9b1acaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a89d9084776a5d5144372a1e110400000000000000040e161e25292d2e393946525f6c7985929facb8c5baada094877a6d615447434e585f6262626262626262626262626265727f8c98a5b2bfc0b3a6998d807366626262626262626262626262626262605d554b4035291d10040000000000000000000000000000000000020e1a26313c4653606d7884919eabb5c0c5bcb1a7998d8073665b5044382b1f121e2b3744515e6a7784919daab7c3c3b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7885919ea0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0988b7f7265584c3f35404b55606a73808c96a0acb8c1cfd0d2cabeb3a99e948b7e726a5f564c42382d251b1208000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2afa295887c6f63707c8999a3aebbb3a9988b7f7276838f9ca9b6bdb6ac9b8e817468574d423f3d3c38332b23190f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939595959595959595959595959595959595959595959595959595989ba3adb8c3cfdcd1c5baafa59d9a95959595959595959595959595959595959595959595959593877a6d6054473a2d211407000000000000000000000a151e262e34383a4342404b5864717e8b97a4b1beb9ac9f9286796c5f6b7885919b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea1a8b2bdc9d5d4c8bcb1a7a09d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9084776a5d5144372a1e11040000000000000000040c13191d20212c3946525f6c7985929facb8c2baada094877a6d6154473c464e535555555555555555555555555965727f8c98a5b2bfc0b3a6998d8073665a555555555555555555555555555553514b43392f24180c0000000000000000000000000000000000000009141f2b3844505c66737f8c99a3afbbb9b4aeab9e9184786c605346392d20131e2b3744515e6a7784919daab6b6b6b6aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b78859193939393939393939393939393939393939393939393938b7f7265584c3f2f3a434e58606d7984919ea5afbdc6d1d0c7baada2978f82756d62584e443a2f261c130900000000000000000000000000000000000000000005121f2b3845525e6b7885919ea5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a295887c6f626d7986929facb9b4a89b8e81757a86929faaacb2afa49a8a7e7164574b3e31302f2c27211911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79868888888888888888888888888888888888888888888888888888888b919ba7b3c0ccd9cec2b5a99d938e88888888888888888888888888888888888888888888888888877a6d6054473a2d21140700000000000000000000030c151c23282c2d36353e4b5864717e8b97a4b1beb9ac9f9286796c5f6b78858e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9196a1acb9c5d2d1c4b8aca095908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776a5d5144372a1e110400000000000000000002080d11131f2c3946525f6c7985929facb5b5b5ada094877a6d6154473a3c434749494949494949494949494c5965727f8c98a5b2babab3a6998d8073665a4d494949494949494949494949494745403931271d12070000000000000000000000000000000000000003101c28343f4a54616e7b86929facafacaaa29f9a96897d7063564a3d3023171e2b3744515e6a7784919daaaaaaaaaaaa9d9083776a5d5044372a1d110400000000000000000000000000000000000000121f2b3845525e6b7884868686868686868686868686868686868686868686868686867f7265584c3f32313d45515c67707d89939eabb5bfbcbcbdb0a69f92857b6e615b51463c32281d140a0100000000000000000000000000000000000000000005121f2b3845525e6b788591989898989898989898989898989898989898989898989898989898989898989895887c6f62677784909daaaeacaa9d9184777d8a999b9ea0a8a59f93877a6d6154473a2e2322201c160f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c66767b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7f8b98a5b2becbd6cabeb3a99a8e807b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786c605346392d2013060000000000000000000000030a11171c1f202a313e4b5864717e8b97a4b1beb9ac9f9286796c5f677480818181818181818181818181818181818184919eabb7c4d1cabfb4aa9d908381818181818181818181818181818181818073665a4d4033271a0d0000000000000000000000000105131f2c3946525f6c7985929fa8a8a8a8a8a094877a6d6154473a32373b3c3c3c3c3c3c3c3c3c3c3f4c5965727f8c98a5aeaeaeaea6998d8073665a4d403c3c3c3c3c3c3c3c3c3c3c3c3a38352f271f150b0100000000000000000000000000000000000000000b17232e3846525e6875828f9ca9a49f9c98928e89847d7063574a3d3024171e2b3744515e6a7784919d9d9d9d9d9d9d9d9083776a5d5044372a1d1104000000000000000000000000000000000000000713202d3a4653606d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79786d6053463a2d2834404b55606b75818e99a3aeafafafb5ab9f948b7e71695e52483f342a20160b020000000000000000000000000000000000000000000005121f2b3845525e6b78848b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b887c6f626874818e9baaa29f9d9c92867a81898c8e919696989b908377685e5246392d201613100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545f6a6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e75818e9ba8b4c1ced1c6baada297897d706e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c665b5044382b1f120600000000000000000000000000060c10121825313e4b5864717e8b97a4b1beb9ac9f9286796c5f646e74757575757575757575757575757575757784919daab7c4ccc7baaea298897d7575757575757575757575757575757575736e63584b3f3226190c0000000000000000000000000006131f2c3946525f6c7985929c9c9c9c9c9c9c94877a6d6154473a2e2b2e2f2f2f2f2f2f2f2f2f323f4c5965727f8c98a1a1a1a1a1a1998d8073665a4d40332f2f2f2f2f2f2f2f2f2f2f2d2c29241d150d0300000000000000000000000000000000000000000006111c2a36414d5664717e8a979e9a938f8b85817c77706b6155483c2f23161e2b3744515e6a77849090909090909090909083776a5d5044372a1d11040000000000000000000000000000000000000006131f2c3845515c676d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d665c5044382b232e39434f59616e7b86929faaa3a3a3a3a4998f82766c61564d42362d22190e040000000000000000000000000000000000000000000000000b1825313e4b5864717e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7a6d6165727f8c97959892918f8d897c7a7d7f828487898c8e8c807366564c41362a1d11070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424e575f62626262626262626262626262626262626262626262626262626d7a86929facb8c2c3c5c5b8ab9f9285796d62626262626262626262626262626262626262626262626262605b544a3f33281c0f03000000000000000000000000000000030b1825313e4b5864717e8b97a4b1beb9ac9f9286796c5f5c64676868686868686868686868686868686e7b8795a0acb8bdbfc1b8ac9f9286796d6868686868686868686868686868686866635c52473b2f23170a0000000000000000000000000006131f2c3946525f6c79858f8f8f8f8f8f8f8f8f877a6d6154473a2e2121222222222222222226323f4c5965727f8c94949494949494948d8073665a4d40332722222222222222222222201f1d18120b0300000000000000000000000000000000000000000000000e1925303b4753606d798592918c87837e79746f6b6361594f44382c20141c2835424f5b687581838383838383838383838174685b4e4135281b0e020000000000000000000000000000000000000004101c2834404b555c6060606060606060606060606060606060606060606060606060605c544a3f34281d27303d46535f6974808d9896969696969693877c6f625a50443b30241b1007000000000000000000000000000000000000000000000000000a1724303d4956626c7172727272727272727272727272727272727272727272727272727272727272727272726d685e63707d898a8987858482817f7b6e707275777a7d7f81847c6f6255493c3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303c454e535555555555555555555555555555555555555555555555555764717e8a98a2aeb4b5b6b8b9b4aa9b8e8175665c55555555555555555555555555555555555555555555555553504a42382d22170b00000000000000000000000000000000000b1825313e4b5864717e8b97a4b1b2b2ac9f9286796c5f52585a5b5b5b5b5b5b5b5b5b5b5b5b5b5565727e8b98a7afb5b1b2b4b5a99c8f8276675c5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a58524a40352a1f130700000000000000000000000000020f1c2835424f5b687581828282828282828282827a6d6054473a2d2114161616161616161926323f4c5965727f878787878787878787878073665a4d4033271a1616161616161616161413100c070100000000000000000000000000000000000000000000000008141f2c3845515c6774818984807b76716d67636059554f473e33281c101b2834414d59656f7577777777777777777777746f65594d4034271a0e0100000000000000000000000000000000000000000c18232e39434b51535353535353535353535353535353535353535353535353535353504a42382e23171e2a36424d57616e7a86898989898989898980746a5f53483e32291f120900000000000000000000000000000000000000000000000000000815212d3945505a62646565656565656565656565656565656565656565656565656565656565656565656565615e56606d7a7f7d7c7a79777574726e69636668686d707275776f6a6054473b2e1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2a333c42474848484848484848484848484848484848484848484848535f6976828f9caaa5a7a8aaabadaea3988a7e7164544a484848484848484848484848484848484848484848484846443f382f261c110600000000000000000000000000000000000b1825313e4b5864717e8b97a4a5a5a5a59f9286796c5f534c4e4e4e4e4e4e4e4e4e4e4e4e4e515d6775828f9c9fa3aba4a6a7a9a8988b7f7265554b4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4b4740382e24190e0200000000000000000000000000020e1b2734414d59656f75757575757575757575756d675d5145392c20130909090909090914202d3a4753606d797b7b7b7b7b7b7b7b7b7b7a6d6054473a2d211409090909090909090907060400000000000000000000000000000000000000000000000000000004101c2934404b55626e7c7d78736e6964605d55544f48443e352c21170b1925313d48535d65686a6a6a6a6a6a6a6a6a6a68655d53483c3024180c00000000000000000000000000000000000000000007121d2730394045464747474747474747474747474747474747474747474747474746443f3830261c111a26313b46525e686f7c7c7c7c7c7c7c7c7c7a6d60584e43362d20170d00000000000000000000000000000000000000000000000000000005111d29343e4850565858585858585858585858585858585858585858585858585858585858585858585858585452525d686d72716f6d686a696765615f5759565d606365686b6260584e43372b1f0c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18212a31373a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b4855626e7b88949697999a9b9d9ea1a99f92867a6d6054473b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3938332d261d140a0000000000000000000000000000000000000b1825313e4b5864717e8b979898989898989286796c5f53464142424242424242424242424754606d7a86909192999697999a9c9d96887b6e6255484242424242424242424242424242403f3b352e261c12080000000000000000000000000000000c1825313d48535d656869696969696969696969605d554c4135291d110400000000000613202c3945515d676d6e6e6e6e6e6e6e6e6e6e6d675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3947535f6a6e706c66615f5753514b48433d38332c231a100515202c37424b53595b5d5d5d5d5d5d5d5d5d5d5b59534b41372c201408000000000000000000000000000000000000000000000b151e272e34383a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a38342e261e140a141f2a36414c565f6a6f70707070707070706d685d52463c32241b0e05000000000000000000000000000000000000000000000000000000000c17222d363e45494b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c47464c565d60656462615e565c5a5955534d4c4c525456595b5e55544e463c32271b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f33404c5966737f8888898a8c8d8f90929794968f8275675d5145392f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2b28221c140b020000000000000000000000000000000000000b1825313e4b5864717e8b8c8c8c8c8c8c8c8c87796c5f534639353535353535353535353b4855626e7c8183848687898a8c8e8f919184786a5f53473a3535353535353535353535353533322f2a241c140a000000000000000000000000000000000915202c37424b53595b5c5c5c5c5c5c5c5c5c5c54514c433a2f24190d01000000000004111d2935404b555d6061616161616161616161605d554c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e585f6263605b54534d4745403938322c28211a1108040f1b25303942484d4f505050505050505050504e4d4841392f251a0f0400000000000000000000000000000000000000000000030c151d23282c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b28231c140c020e1925303b444e585f626363636363636363605d564c41342a201209000000000000000000000000000000000000000000000000000000000006111b242d34393d3e3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a3a434c525459575654524c4f4e4c4846423f414547494c4f514947433c342b20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1e212222222222222222222222222222222222222222323e4b57636d73797b7c7e7f818283858688898a7e7164554b413529222222222222222222222222222222222222222222201f1c17110a02000000000000000000000000000000000000000915222f3c4855626f7c7f7f7f7f7f7f7f7f7f7f7265594c3f322828282828282828282e3a47535f6a6e757678797b7c7e7f81828485807467574e42372b2828282828282828282828282726231f19120a0200000000000000000000000000000000040f1b25303942484d4f4f4f4f4f4f4f4f4f4f4f4745413a31281e1308000000000000010d18242f3a434b51535454545454545454545454514c433a2f24190d01000000000000000000000000000000000000000000000000000000000000000000000000000000010f1a26313c464e53555653504a46423b39352f2c27211c171008000009141e2730373d41424444444444444444444441403c372f271d1309000000000000000000000000000000000000000000000000030b12181c1f2020202020202020202020202020202020202020202020202020201f1c17110a020008141e29323c464e5355565656565656565654524c433a2f22180e0000000000000000000000000000000000000000000000000000000000000009121b22292d303132323232323232323232323232323232323232323232323232323232323232323232322e313a4145474c4a4947464142413f3b3a363135393a3d3f42443c3b37322b22190e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415151515151515151515151515151515151515232f3b46515b63676d6e707172747577787a7b7c7e796d6053473a2f2418151515151515151515151515151515151515151513120f0b060000000000000000000000000000000000000000000815212e3a47535f6a6f727272727272727272726d62574a3e31251b1b1b1b1b1b1b1f2b37434e585f626869666d6e6f717374767779796d6053463c31261a1b1b1b1b1b1b1b1b1b1b1b1a1917130e080000000000000000000000000000000000000009141e2730373d4142424242424242424242423a39352f281f160c010000000000000007131d28313a404547484848484848484848484745413a31281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c4347484a46443f3836312c29241d1b16100b05000000020c151e252c313435373737373737373737373534302c251d150b010000000000000000000000000000000000000000000000000000070c101313141414141414141414141414141414141414141414141414141312100b06000000020d17202a343c43474849494949494949494745413a31281e100600000000000000000000000000000000000000000000000000000000000000000911171d212425252525252525252525252525252525252525252525252525252525252525252525252521282f35393a3f3e3c3a39363034322e2d2a26292c2d303235382f2e2b2720191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080808080808080808080808080808080808121e2a35404951555c606163646667686a676d6e70716d675d5145382c1d130708080808080808080808080808080808080808060603000000000000000000000000000000000000000000000006121f2b37434e585f6265656565656565656565625b51463a2e22160f0f0f0f0f0f1a26313c464e53555b545c606163646667696a666d665c5144382a2015090f0f0f0f0f0f0f0f0f0f0d0c0a07020000000000000000000000000000000000000000020c151e252c313435363636363636363636362d2c29241e160d040000000000000000010c161f282f35393a3b3b3b3b3b3b3b3b3b3b3a39352f281f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222a31373a3b3d3938332d2a261f1d18120f0a04000000000000030c141b202528282a2a2a2a2a2a2a2a2a2a282724201a130b03000000000000000000000000000000000000000000000000000000000004060707070707070707070707070707070707070707070707070707070603000000000000050e18222a31373a3c3d3d3d3d3d3d3d3d3a39352f281f160c00000000000000000000000000000000000000000000000000000000000000000000060c111517181919191919191919191919191919191919191919191919191919191919191919191919161e24292c2d32312f2e2d2a25272622211e1a1d20212326282b22221f1b150e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d19232e3740434b5153555657595a5c555c60616364605d554b4035291d0c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313c464e5355595959595959595959595751493f35291e1206020202000a15202a343c4347484e4a5053545657595b5c545c605c544a403428180e03020202020202020202020000000000000000000000000000000000000000000000000000030c141b202527282929292929292929292921201d19130c0400000000000000000000040d161d24292c2d2e2e2e2e2e2e2e2e2e2e2d2c29241e160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f302d2b28221c1a14100c070100000000000000000002090f15191b1c1d1d1d1d1d1d1d1d1d1d1b1a18140f0901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f30303030303030302d2c29241e160d0400000000000000000000000000000000000000000000000000000000000000000000000005080a0b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c13191d202126242321201d191b191514120e11131416191c1e1615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c252e303940454648494b4c4e4f4b515355565753514b43392f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c4347484c4c4c4c4c4c4c4c4c4c4a463f372d23180d0100000000030e18222a31373a3b423f444648494b4c4e4f4a5153514a42392e231806000000000000000000000000000000000000000000000000000000000000000000000000000002090f15181b1c1c1c1c1c1c1c1c1c1c1c1413110d0801000000000000000000000000040c13181d20202121212121212121212121201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f212223201f1c17110e0904000000000000000000000000000004090c0e0f111111111111111111110e0e0c08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b1f2122232323232323232321201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113141917161413110d080c080705020407070a0c0f110908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c1e272e34383a3b3d3e3f414240454748494b4745403931271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222a31373a3c3f3f3f3f3f3f3f3f3f3f3e3a352d251b1107000000000000060f1820262b2e2f2e34383a3b3c3e40414340444644403930271c12070000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0e0f0f0f0f0f0f0f0f0f0f0f0706040100000000000000000000000000000001070d111314151515151515151515151413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f1214151713120f0b0600000000000000000000000000000000000000000202040404040404040404040201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f12151516161616161616161413110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c0b090707050100000000000000000000000205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a0c151d23282c2d2e303133342f34383a3b3d3e3a38352f271f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f32323232323232323232312e29231b13090000000000000000060e151a1f212223282b2d2e303133342e34383a38342e271e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020203030303030303030303000000000000000000000000000000000000000000010406070808080808080808080807060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080a0606030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090a0a0a0a0a0a0a0a070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20222324262723292c2d2e30312d2c29241d150d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f21222626262626262626262625221e18110901000000000000000000030a0f121415171c1f20212324262823282c2d2c28231c150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306060605030000000000000000000000000000000000000000000000000000000003050607070808080706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101313151618191b181c1f20222324201f1d18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f121515191919191919191919191816120d0700000000000000000000000000020608060b101213151618191b181c1f201f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104070707040100000000000000000000000000000000000105070707050100010203040506060503000000000000020507080c0d0e0f101111121211100f0b07070501000000000000000000000000000000000000000000000000000000000000000306070a0907040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000404040404040404040401010000000000000406070707070707070707070707060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313120f0b06000000000000000000000000000000000000000000000500060b0f121314141415141313100c070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a0b0c070c1013141516181413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090c0c0c0c0c0c0c0c0c0c0b0906010000000000000000000000000000000000000003060708090b0d070c10121312100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131413110d080204060708090a0908070502000003080d11131413110d080e0e101112121312100c07060403090e121415191a1b1c1d1e1e1e1f1e1d1b181413110d0802000000000000000000000000000000000000000000000000000000060c101213171614100b050000000407090a0b0b0b0b0b0b0b0b0b0a0907040000000000000000000000000000000000000000000000000406070b0b0b0b0b0b0b0b0b0b09080603000000000000000000000000000000000000000000000000000000000000000000000005080a0b111111111111111111110e0d0b080301070c101314141414141414141414141312100b06000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f20201f1b17110a02000000000000000000000000000000000000030b111611171b1f202121212121201f1c1814120e090300000000000000000000000205070807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a0b07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e13191d2021201d19130c101314151617161514120e090b0f13191d2021201d19131a1b1c1d1e1f201f1d191413100c141a1e2122252728292a2a2b2b2b2b2a282521201d19130c07000000000000000000000000000000000000000000000000030a11171c1f202322201c160f08050b10141617181818181818181818171614100b050000000000000000000000000000000000000000070c101213181818181818181818181615130f0a0400000000000000000000000000000000000000000000000000000000000000060c111517181e1e1e1e1e1e1e1e1e1e1b1a18140f0b12181d1f2020202020202020202020201f1c17110a02000000000000000000000000000000000000000000000000000000000000000000000001070b141c22282b2d2d2b27221b140b0200000000000000030506050300000000050d151c221b22272b2d2d2e2e2e2e2d2c2823211e1a140d06000000000000000002080e11141414110e080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c141a1e24292c2d2c29241e181d1f202223232322211e1a14171c1f252a2d2e2d2a251e2728292a2b2c2c2c2a26201f1c181f262b2d2e323334353637383838373735322e2d2a251e18120b03000000000000000000000000000000000000000000070c151c23282c2d302f2c27211a110f161c2022232424242424242424242322201c160f080000000000000000000000000000000000030b12181c1f202424242424242424242423221f1b150f0700000000000000000000000000000000000000000000000000000000000910171d2124242a2a2a2a2a2a2a2a2a2a282724201a151d24292c2d2d2d2d2d2d2d2d2d2d2d2d2b28231c140c02000000000000000000000000000000000000000000000000000000000000000000040c13181d262d3338393937332d261d140a0000000000060b0f1213120f0b0603000d171f272d322d3337393a3a3b3b3b3a38342e2d2a261f170f08000000000003090e14191e2021201e19140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406071111111111111111111111111110100e0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d0c0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080e0f10101111121212121212121211110f0e0c09070604000000000000000000000000000000000000000000000000000000030b12181f262b3035393a3935302824292c2d2e2f302f2e2d2a261f22282b3036393a39363030333536373839393836322d2c29232a31373a3b3f40414243444445454443423e3a39363028231d150c03000000000000000000000000000000000000030b12181e262e34383a3d3c38332b231a1a21272c2f30313131313131313131302f2c27211a1108080808080808080808080808080808080c151c23282c2d313131313131313131312f2e2b272019100700000000000000000000000000000000000000000000000000000009121b22282d3031373737373737373737373433302b251f272f35383a3a3a3a3a3a3a3a3a3a3a3a38342e261e140a0000000000000000000000000000000000000000000000000000000000000003090d161d24292f383f444646443f382f261b11060000020a11171b1f201f1b1712100c0f1f2931393e383f444647474748474645403b3a363129211a1108000002090e141a1e252a2d2e2d2a251e170e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013131e1e1e1e1e1e1e1e1e1e1e1e1e1d1c1a16110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113141b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a1917130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141b1c1c1d1e1e1f1f1f1f1f1f1f1f1e1d1c1b19161312100c07000000000000000000000000000000000000000000000003090d151d242931373a41454745413a322f35393a3b3c3d3c3b3a36312b2d33383a41464746413a3c4041434445454645433f3a38342f333c4246484c4d4e4f505151515251504e4b4746413a342e271e150d0300000000000000000000000000000001070c151c232830383f44464a48443d352b21232b33383c3d3e3e3e3e3e3e3e3e3e3d3c38332b231a1414141414141414141414141414141414151e272e34383a3e3e3e3e3e3e3e3e3e3e3c3b37322b22190f040000000000000000000000000000000000000000000000000006101b242c34393d3e4444444444444444444441403c362f2731394045474747474747474747474746443f3830261c11060000000000000000000000000000000000000000000000000000000000070c141a1f282f353c424a505353504941382d22170b00040b141b22272b2d2b27221f1c171821313b434a4f495053545454545453514b4846423b332c231a0e05090e141a1f252a3036393b393630292019100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f202a2a2a2a2a2a2a2a2a2a2a2a2a2a2926221c150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080809090909090909090909090909090909090c13191d20212828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282626231f19120a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212728292a2b2b2b2c2c2c2c2c2c2c2b2a29272523201f1c18120f0a0300000000000000000000000000000000000000050d141a1f272f353c42464c5254524c443a3b40454748494a494846423b37383f44464c5254524c44484c4e4f5051525352504c474540393c454d5355585a5b5c5d5d5e5e5e5e5d5b5854524c45403930271f150b0100000000000000000000000000030b12181e272e343c424a505356544f473d33292b353d44484a4b4b4b4b4b4b4b4b4b4a48443d352b212121212121212121212121212121212121212730394044464b4b4b4b4b4b4b4b4b4b4947433d342b20150a000000000000000000000000000000000000000000000000000c17222c363e45494b515151515151515151514e4c4841382f39434b51535353535353535353535353504a42382e23170b000000000000000000000000000000000000000000000000000000030b12181f262a313a41454e545b60605b53493f33271b11060d161d262d33373937332d2c28231f2a33434d555b535b606061616161605c5455534d453e352c20170e141a1f252a31363b41464746413b322a22190e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d373737373737373737373737373736322d271f170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151616161616161616161616161616161616161e24292c2d35353535353535353535353535353535353535353535353535353535353535353535353535353535353535353533322f2a241c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e343536373738383838393939393838373634322f2d2c28231c1b150c070000000000000000000000000000000000090f171f252a313940454d53565d605d564c46474b51535556565655534d4644454a5053565e615e564c53595b5c5d5e5f5f5f5d5953514b43424d575f6165666768696a6b6b6b6a6a6865615e56514b423931271d1207000000000000000000000001070d151d2329303940444e545c606360594f453b31333d474f545657575757575757575756544f473d332e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e39424a51535757575757575757575756544e463d32271b0f03000000000000000000000000000000000000000000000005111d28343e485055575d5d5d5d5d5d5d5d5d5d5b58534a4135404b555d6060606060606060606060605c544a3f34281c100300000000000000000000000000000000000000000000000000050c151c232831363e434b51585f666c6c655b5044382d22170b1620282f383f4446443f3a38342e2c313c45555f666a656c6d6d6e6e6e6d6667615f574f473e32291e1a1f252a30363b42464c5254524c443c342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a4444444444444444444444444443423e3831291f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1e2122222222222222222222222222222222222222282f35393a414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141403f3b352e261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202930363a3b4142434344444545454545454545444442413f3c3a38342e2b262018120b03000000000000000000000000000009121b212931363e434b51575f61686d685d525254555d6061626362615f57535051545b6064686d685e535d6468696a6b6c6c6b6965605c554d46535f696e727374757677777878777675716d68605c544b43392f24180c03000000000000000000030b12181f272f343c424a51585f666d706b60574d423638444f5960636464646464646464646360594f443b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b404a545c60646464646464646464646260584e43372b1f130600000000000000000000000000000000000000000000000815212d3945505a61646a6a6a6a6a6a6a6a6a6a67645c53483845515d676d6d6d6d6d6d6d6d6d6d6d6d665c5044382b1f1206000000000000000000000000000000000000000000000000050e171e272e343b424650555d606a6f79776c6053493f33271b131e28323a41495053504946443f383837424d5766717778797a7a7a7b7a7977746e6961594f443a3025252a30363b42464d53565e615e564e463c32261b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303940454651515151515151515151515151504f4a433b31271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f181f262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f313a4145474e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4b4740382e24190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29323b4246474e4f4f505151525252525252525251504f4e4c4946444039373128231d150c0300000000000000000000000006101b242d333b42464f555d60696e767a6d60585e616a676d6e6f706f6e6965605b5d60666c70767a6d655b646f7476777878797876726d675e574d55616e7b7f80818283848484858483817e7a736d665d554b40352920150a0000000000000000030d151d2429313940454e545c606a6f787d70695f53463c3c4854606b70717171717171717171706b60544747474747474747474747474747474747474747474747515c666d717171717171717171716f6a6054473b2e22150800000000000000000000000000000000000000000000000a1724303d4955616c7177777777777777777777746f64584c3a4753606d797a7a7a7a7a7a7a7a7a7a786d6053463a2d2013070000000000000000000000000000000000000000000000020d172029303940444d535a61676d747c837e71655b5044372b1f19242f3a444c535b605b5353504a48433d47535f697783858687878787878684807b706b61564c41362a31363b42464d52575e61686e685f584e43372b1f15090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424b51535d5d5d5d5d5d5d5d5d5d5d5d5d5d5b554d43382d22160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212a31373a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c434c52545b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5957524a40352a1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b444d52545a5b5c5d5e5e5e5f5f5f5f5f5f5f5e5d5c5a585653514a47433c342e271e150c0300000000000000000000000c17222d363e454d535961676d737b8282766a60686e77787a7b7c7d7c7b78726c65676d72787d8384786c60697481828384858685837f796e695e525a6673808b8d8e8f909091919191908e8b8680786d675d51453c31261a0f03000000000000010b151f272f353d434b515860666d737c83877b6e61574d423d4a5663707d7e7e7e7e7e7e7e7e7e7d706356545454545454545454545454545454545454545454545454606d787e7e7e7e7e7e7e7e7e7e7c6f6256493c2f23160900000000000000000000000000000000000000000000000b1824313e4b5764717e838484848484848484848174675b4e43505d6a7683868686868686868686867d7063574a3d3024170a000000000000000000000000000000000000000000000008141e29323b424a51575f616c717980879083786c6053463d33271d2935414c565d656c6563605c54544e484855616e7b889292999494949a93918d867d70685e524639363b42464d52575e61696e747a6f6a5f54473c31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545c606a6a6a6a6a6a6a6a6a6a6a6a6a6a665f554a3e32261a0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009151f2a333c424748494949494949494949494949494949494949494c565d6068686868686868686868686868686868686868686868686868686868686868686868686868686868686868686866635c52473b2f23170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d565e616768696a6a6b6b6b6b6c6c6c6c6b6b6a69676562605c54534e45403930271e150b0000000000000000000005111d28343e4850575e616b707980868f897c6f626e7a8485868889898988847f776d73797e848a908a7d70636e7b878f9091929292908c847b6e6159566976828f999a9b9c9d9e9e9e9d9d9b98928d82796d60584e43372b1f120600000000000007121d27313940454f555c606a6f788087908e8174695f534744505d6a77838a8a8a8a8a8a8a8a8a83776a61616161616161616161616161616161616161616161616161616d7a878a8a8a8a8a8a8a8a8a8174675b4e4134281b0e01000000000000000000000000000000000000000000000c1925323f4c5865727f8b90909090909090908f8376695c5043505d6a76839093939393939393938a7d7063574a3d3024170a00000000000000000000000000000000000000000000010d1925303b444c545c60696e757e848d92958a7d7064594f44382c202c3945525d686d7874706d6662605855535864717e8b979fa3a0a1a1a49f9d9892857a6d6154473b42464d53575e61696e747b81867c6f62574d42372b1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666d777777777777777777777777777671665b4f4236291c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c454d535555555555555555555555555555555555555555555d686d747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474736e63574b3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e747576767777787878787878787877777574726f6d66625f58514b423930271c12070000000000000000000815212d3945505a61696e757d848c92988f827569707c8992979495969596918b807a80858b91969c8f827569707d89969d9e9f9f9e9c969083766b605e697885919ea7a8a9aaaaababaaa9aaa29f948d80746a5f53473a2e2115080000000000000c18242f39434b515960676d737c838c929992877b6e61564c41505d6a778390979797979797979083776e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e7a8793979797979797978e8174675b4e4134281b0e01000000000000000000000000000000000000000000000c1925323f4c5865727f8b989d9d9d9d9d9d9c8f8376695c5043505d6a7683909da0a0a0a0a0a0968a7d7063574a3d3024170a0000000000000000000000000000000000000000000005111e2a36414c565e666d727b828a91969f9d9083776b6055483c3127333f4953606d7a84817d79746f6a66615f576774818d9aa7afb5adb6afacaaa2978c7f7266594c474d53575e61696e747b81868e8e8175695f53473b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798384848484848484848484848483766a5d5043372a1d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d575f626262626262626262626262626262626262626262626d7a818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181807366594d4033261a0d00000000000000000000030608090a07070401000000000000000000000000000000000000000000000000000814212e3b4754616e7b8082828384848585858585858585848382817f7c79746f6a605c544b42392e23180c0400000000000000000a1724303d4956616c717b828a91969f9f93877b6e717e8b98a2a9a2a3a8a19e9387858c92979ea09f93877b6e727f8b98a5ababacaba89f95897d7063616e7a8797a1adb5b6b7b7b7b8b7b6b4aea69f92877c6f6255483c3025190d010000000004101d2935404b555d606b6f79808790959fa3998e8174685e5246505d6a7783909da4a4a4a4a49d90837a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7b8895a1a4a4a4a4a49a8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5aaaaaaaaa99c8f8376695c5043505d6a7683909da9adadadada3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000714202d3946525e686e787f868f949ea1a89f95897d7063584e43372b3744505b65727f8c8e8985807c77736e6965677784909da5a5a8aaafbbb9b3a99c8f837669544e53575f61696e747b80868d929993877b6e61564d42362a1e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8690909090909090909090909085796c5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f696e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e7a878e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776a5d5144372a1e110400000000000000040a0f131516171413110d080806020000000000000000000000000000000000000000000b1824313e4b5764717e8a8e8f909191919292929292929291908f8d8b8985817c746d665c544a40342820150a00000000000000000b1825313e4b5864717e868f949ea0a8a4998d807373808d99a6b3afb0b2aca4999392989ea1a9aca4998b7f7274818d9aa7b4b8b9b8b1a79a8d81746763707d8a96a9b3b1b0b0b0b3b8babfbfbaafa3998d807367564c41362a1e11050000000006131f2c3945515d676d747c848d9299a0a7ab9f92867a6e61554b505d6a7783909daab1b1b1aca095908787878787878787878787878787878787878787878787878787878787888d98a4b1b1b1b1a79a8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2b7b7b6a99c8f8376695c5043505d6a7683909da9b6b9b9b0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000814212e3b4754616e7a838c92989ea6adb1a79c8f82766a5f53473a2f394653606c7884919b97928d8984807b76716d7a86939898989b9ea5afb9b8ab9e928578665c575f62696e747b81868d92989fa3998e8174695e52463a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002020714202d3a4753606d7a86939d9d9d9d9d9d9d9d9d9d9285796c5f5246392c1f13060202000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c797a87949b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9084776a5d5144372a1e1104000000000000070e151b1f21222421201d191514120e0907060300000000000000000000000000000000030f1c28333f4a546774808d9a9c9d9d9e9e9e9e9f9f9f9f9e9e9d9c9a9897928e8780786d665c51443c32261b0f01000000000000000a1724303d4a5763707d8a959ea6acb2ab9e91857975828f9ba8b5bcbcbdb5aba49f9fa3aaadb3b5ab9c90837676838f9ca9b6bdc4c2b7aa9d9084776566737f8c99a6a5a4a3a3a3a6acaeb4bcc0b5ab9e918478685e5246392d201307000000000714202d3a4753606d79808791959fa3abb1aea3988c8073675c51505d6a7783909daab6bdbcb1a7a09d949494949494949494949494949494949494949494949494949494949495989fa9b4bdbdb4a79a8e8174675b4e4134281b0e01000000000000000005080a0b0d0d0d0d0d0d0d0d0d0d0d1925323f4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a3d3024170d0d0d0d0d0d0d0d0d0d0d0d08080602000000000000000613202d394653606c7883909da2aab0b9b7ab9f94887b6e62564c4136424d5763707d8a96a0a19e9a96918c88837e7a7d898c8c8b8b8f939ea7b1b9ada19786796d60626a6e747b81868d92989fa3aaab9f92867b6e61564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0e0e0e14202d3a4753606d7a8693a0aaaaaaaaaaaaaaaa9f9285796c5f5246392c1f130e0e0e09080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976828888888888888888888888888888888888888888887c7a8794a1a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79d9084776a5d5144372a1e1104000000000007101820262b2e2f302d2c292422211e1a161312100b06060400000000000000000000000006121f2b3844505b667683909ca9a9aaaaababababababababaaaaa8a7a9a29f9a938d82786d60584e43372b1d1207000000000000000916232f3c4855616b7783909da9b3b9ada197897d7784909daab7bbc0c7bdb5afa9a19ea1a9b2b9ac9f93877b7885919eaaacb2bac2b8ac9f9285796c6875828f9b9a9897979697999fa2aab4bfb9ada196877a6d6154473a2e211407000000000815222e3b4855616e7b869299a0a8afb5bdb4aa9e9285796d6053505d6a7783909daab6c3c3b9b1acaaa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a4a9b1bbc6c1b4a79a8e8174675b4e4134281b0e01000000000000060c111417181a1a1a1a1a1a1a1a1a1a1a1a25323f4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a3d30241a1a1a1a1a1a1a1a1a1a1a1a1a1514120e0903000000000005121f2b3744505b65707d8a949fabb7c1bbb0a69a8d8174685d52453a46535f6975828f9ca8adaba8a09e9994908b858383807f7e7f818f959fabb8b3a993877a6d6a6f757b81878e92999fa3aaaeb4aea3998d8073685d5245392c201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101416171b1b1b1b202d3a4753606d7a8693a0adb7b7b7b7b7b7ac9f9285796c5f5246392c1f1b1b1b1b1515120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f95959595959595959595959595959595959595887c7a8794a1adb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aa9d9084776a5d5144372a1e110400000000040e18222a32373b3c3d3a39352f2f2e2b2623201f1c171313100c07060400000000000000000613202d394653606c7985929facb6b7b7b8b8b8b8b8b8b8b8b7b6b5b4b3adaca49f948d80746a5f5347392f24180c000000000000000714202c38444f5965717e8b97a1adb9b3a99a8d817785929fa7acafb6bec7b9ada1979197a1adb9afa49a8b7e7a87979c9ea0a8b1b9baaea298877a6d687884908e8d8c8b8a8a8a8d9298a2aebabdb2a896897c706356493d3023160a000000000714212d3a46535f6974818e98a3aebac0c6b9ada1978a7e7164574d5d6a7783909daab6c3cbc3bcb8b7adadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeb0b4bbc4cdc1b4a79a8e8174675b4e4134281b0e0100000000000810171d21232426262626262626262626262626323f4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a3d30262626262626262626262626262622211e1a150e0600000000030f1b27333f4953616b7683909ca6b0bbc2b8ac9f92867a6d6054473c4855616e7b87939ea1a9abadacaaa69f9c98929090837f7a747683909da9b6ada094877a70767c82878e92999fa3abaeb4b2adaba39f92857a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810161c20232428282828282d3a4753606d7a8693a0adb9c3c3c3c3b8ac9f9285796c5f5246392c282828282822211f1b150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a295887c7a8794a1adbac0c0c0c0c0c0c1c1c1c1c1c1c1c1c1c1c0c0c0c1c1c1c1c1c1c1c1c1c1c0c0c0c0c0c0c0b7aa9d9084776a5d5144372a1e1104000000000a15202a343c4347494a4745413e3b3a37312f2d2b2823201f1c181312100c070603000000000915222f3c4855626f7b8898a2aebac4c4c4c5c5c5c5c5c5c5c4c3c2c0bebab6afa69f93877c6f62554b4035291d100400000000000004101c28333e4753606d7985929eabb8b8ab9e91847b8798989a9fa4acb6c0b8ab9e9185919eaab4b6ac9b8e817d89908f91969fa7b1bcb4aa94877a6e6d7a848381807f7e7d7d7d8086929fa8b2bdb1a4978b7e7164584b3e3125180b0000000005121e2a36424d57616e7b86929fabb5bfc9beb3a99c908376695f535d6a7783909daab6c3d0cdc8c4c3babababababababababababababababababababababababababababababbbcc0c6cdcdc1b4a79a8e8174675b4e4134281b0e010000000008121a22282d303133333333333333333333333333333f4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a3d3333333333333333333333333333332f2e2b261f180f06000000000b17222d38414f59636f7c89949eaab7c2baaea2988c7f7265584e434d5a667380898e92979a9ea1a9abadabaaa29f9d95908b86817c818e9aa7b4ada094877a7d82888e93999fa3abaeb5afaca8a19e99928e897e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21282c2f303535353535353a4753606d7a8693a0adb9c6d0d0c5b8ac9f9285796c5f5246393535353535352f2e2b26201810060000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9afafafafafafafafafafafafafafafa295887c7a8794a1adb3b3b3b3b3b3b3b8babec5cdccc4bdb9b7b3b3b3b8b9bec5cdccc3bdb8b7b3b3b3b3b3b3b3b3aa9d9084776a5d5144372a1e1104000000030f1b26323c464e53555754524c4b4847423f3c3a38342e2d2c2823201f1c1813120f0b0606020b1825313e4b5864717e8b97aab4bfbabac0bbb9b8b8b9babfc3c4c7cdcac7c0bbafa4998e8174675d5145392c1f1306000000000000000b161f2c3845515d6774808d9aa7b1b9ada1978b7e8b8c8b8e939aa4afbbb4a79a8d818d98a3aeb8ab9e91847e8684838490959fabb8aea194887b6e686d787675737271707070737d8a96a1acb9b1a5988b7e7265584b3f3225180c00000000020e1a26313b46525e6974808d99a3aebbc7c5b7ab9f94887b6e61555d6a7783909daab6c3d0cec8c5c3bababababababababac2c4c7cdc7c7c7c7c8c2bfbdbababababababababbbcc0c6cdcdc1b4a79a8e8174675b4e4134281b0e0100000006101a242c33393d3e4040404040404040404040404040404c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a404040404040404040404040404040403b3a37312a21180e0300000006111b262f3e4854606b76828f9ca6b0bcbfb4aa9d9084776a5f534c4d53606d787d8185898d91979a9ea2a9acaeaca7a09d98928e8986929facb9b0a4978a7e898f949b9fa4abafb3adaca49f9c96918c86817c726d62564a3d3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232c33383c3d414141414141414753606d7a8693a0adb9c6d3d2c5b8ac9f9285796c5f5246414141414141413c3b37322a22180e0400000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9b6bbbbbbbbbbbbbbbbbbbbbbbbbbafa295887c7a8794a1a7a7a7a7a7a7a7a7abadb3bbc5c4bab2adaba7a7a7abadb3bbc5c3bab2acaaa7a7a7a7a7a7a7a7a79d9084776a5d5144372a1e110400000006131f2b37434e585f6263605d565855534e4c4946443f3c3a38342e2d2c2823201f1c1714120e101c2834404a546774818d9aa7afaeadadb5afacacabacaeb4b6b7bcc2cbd2ccc0b5ab9f9286796d6053473a2d2014070000000000000004101d2935404b55626f7c8895a0acb8b2a99c9083827f7e8188939facb9b0a396897d86929facb8ada196887c7977767883909da9b6aea194887b6e61606b69686765646463646b7884919eabb7b2a5998c7f7266594c3f3326190c000000000009141f2a36424d57616e7b86929facb9c2c7bcb0a6998c7f7366575d6a7783909daab6c3cbc3bcb8b7aeaeaeaeaeaeaeaeaeb6b7bbc2cad4d0c6beb7b2b1aeaeaeaeaeaeaeaeaeb0b5bbc4cdc1b4a79a8e8174675b4e4134281b0e010000000c17222c363e45494b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847423c332a1f1509000000000a141d2c38434f59636f7c89949fabb7c3b8aca095887c6f6254585a595c666d7074797c8085898e92979b9fa2aaacacaaa29f9b989298a3aebaada094877a84919da6acafb0aba9a19e9a938f8a847f7a756f6a625b51453a2e2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c353e44484a4e4e4e4e4e4e4e4e53606d7a8693a0adb9c6d3d2c5b8ac9f9285796c5f524e4e4e4e4e4e4e4e4847433c342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9b6c2cac4c0bfbbbbbbbebfc3c8bbafa295887c7a87949a9a9a9a9a9a9a9a9a9fa2a9b3bebdb2a8a19e9a9a9a9ea1a9b3bebdb2a8a09d9a9a9a9a9a9a9a9a9a9a9084776a5d5144372a1e11040000000815212e3b47535f6a6f706d686764625f57595653504a494645403c3a38342e2d2b2822211e1a151f2c3844515c667683909da3a2a1a1a0a0a39f9f9f9fa3aaa9abb0b8c2cbd2c7baaea3988a7d7063574a3d3024170800000000000000000c18242f3947535f6a7784909daab7b4a79b8e8175737275828f9ca8b5afa296897d828f9ca9b5b2a9978a7d70656673808d99a6b3aea194887b6e61555e5d5b5a59585757596875828e9ba8b5b2a6998c7f7366594c403326190d0000000000030e1a25303b46525e6974818e9aa6b0bbc7c2b7aa9d918477695f5d6a7783909daab6c3c3b9b1acaaa1a1a1a1a1a1a1a1a1a9abb0b8c2cdc8beb4aca6a4a1a1a1a1a1a1a1a1a1a4aab2bbc6c1b4a79a8e8174675b4e4134281b0e01000005111d28333e48505557595959595959595959595959595959595965727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d706359595959595959595959595959595959595955534d453c31261a0e02000000020b1b27323d4854606b7683909ca7b1bcbcb1a79a8d8073665c646766605c606c716d7074797d81858a8e92989c9fa4abacacaaa39fa3aab4bfada094877a7e8b97a2adaba69f9c97928d87827d78736e75706b6054483f34291d1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e474f55575b5b5b5b5b5b5b5b5b606d7a8693a0adb9c6d3d2c5b8ac9f9285796c5f5b5b5b5b5b5b5b5b5b55534e463c32261b0f03000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9b6c2bfb8b4b2aeaeaeb1b2b7bebbafa295887c7a878d8d8d8d8d8d8d8d8d8d9297a2adbab9ada196918d8d8d9297a1adb9b8aca096918d8d8d8d8d8d8d8d8d8d8d84776a5d5144372a1e11040000000916222f3c4955626f7c7d7a7774716e6a686562605c545653514b494644403c3938332d2d2b2621202d3a4653606d79869298979695949393999292929298969c9fa6b0b8c2cdcbbfb4aa9a8d8074675a4d413025190e020000000000000007121d2b37434e5866737f8c99a9b3b7aa9d918477676673808d99a6b3afa296897c7f8b98aab4b2a6998c7f736666727f8c99a5b2aea194887b6e615552504e4d4c4b4a4e5a6774818d9aa7b4b2a6998c7f7366594c403326190d00000000000009141f2a36424d57626f7c88949fabb7c4c5b8aca095887b6e625d6a7783909daab6c3bcb1a7a09d9494949494949494949c9fa6b0bbc7c2b7aca29a9794949494949494949598a0aab5c0c1b4a79a8e8174675b4e4134281b0e0100000814212d3945505a6164666666666666666666666666666666666666727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7066666666666666666666666666666666666666625f574d42372b1e1206000000000a16212c38444f5963707d8a95a0acb8c3b8ab9e9185796d606e73736d6669717e7a736d6d7074797d81868b8f93999da0a7abadacaeb4bcbaada094877a7985929fa29f9a948f8a85807b76706e757b827d7063564d41362a1c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f596163686868686868686868686d7a8693a0adb9c6d3d2c5b8ac9f9285796c68686868686868686868625f584e43372b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9b6bfb6ada8a6a1a1a1a4a6acb4bbafa295887c79808080808080808080808085929fabb8b7ab9e918480808085929eabb8b7aa9d918480808080808080808080807f7266594c3f3326190c000000010e1a2734414d5a6774808a8684817e7b7875726f6d666663605c555653514a4946443f3b3a37312e2b2f3c4955626f7c888c8b8a89888787868686858586868990949fa6b0bcc7d0c3b6a99c90837669564c41362a1e110500000000000000010f1b26313c4956626f7c8997a2adb9ac9f9286796d6673808c99a6b3afa296897c7b8898a2aeb5a89b8e82756866727f8c99a5b2aea194887b6e6155484342403f3e414d5a6774808d9aa7b3b2a6998c7f7366594c403326190d000000000000020e1a25303b47535f6a76828f9ca9b3bec8bdb1a8988c7f7265546a7783909daab6c3b8aca095908787878787878787878f949fabb7c4bfb2a69a908a8787878787878787888e98a4b0bcc1b4a79a8e8174675b4e4134281b0e0100000a1723303d4955616c71737373737373737373737373737373737373737f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d73737373737373737373737373737373737373736e695f53473a2e21140800000000040f1b27323d4855616b7783909da9b3beb9ada197897d706a738080786e6e7b8785807a716c666d70757a7e82878c90959a9ea1a9acb1b9baada094877a73808d9998928d88837e79736e6d737b81878e8175685e5246382e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855616b707474747474747474747474798693a0adb9c6d3d2c5b8ac9f92857974747474747474747474746f6a5f53473b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9b6b8ada49c99959595979ba2acb7afa295887c6f747474747474747474747784919daab7b6a99c8f8276747783909daab6b5a89b8e817574747474747474747474726d63574b3e3225180c00000005121e2a36424d576976839093918e8b8885827f7c7976736f6d676663605c545653504a4847423c3a37313c4956626f7c807f7e7d7c7b7a7a7a79797978797a7d8290949fabb7c4cec5b8ac9f928579685e5246392d20140700000000000000000a13202d394653606c7985929fabb8afa399887b6f6673808c99a6b3afa296897c7985929facb6aa9d9083776a66727f8c99a5b2aea194887b6e6155484848484848484d5a6774808d9aa7b3b2a6998c7f7366594c403326190d0000000000000009141f2b37434e5864707d8a97a1adb9c6c2b5a99c8f8276665c6a7783909daab6c3b7aa9d90837b7b7b7b7b7b7b7b7b828f9ca9b6c2bdb1a4978a7e7b7b7b7b7b7b7b7b7c8895a1aebbc1b4a79a8e8174675b4e4134281b0e0100000b1824313e4b5764717e80808080808080808080808080808080808080828f9ca9b5c2c2b6a99c8f8376695c5043505d6a7683909da9b6c3c1b4a89b8e8180808080808080808080808080808080808080807b6e6255483b2f22150800000000000a16212c38444f5965717e8b97a2adbabeb3a99a8d80746f7c878c827b74818e928c857e786f6a63676d71767a8084888d92979da0a7b1bcada094877a6e7b86929286807b76716d6c717a80868e9392867b6e61544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8181818181818181818181818e9ba8b4c1cedbd2c5b9ac9f92878181818181818181818181817c6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000020a121d293643505c6976838f9ca9b6b4a89c928c8888888b909ba6b2afa295887c6f6767676767676767676a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756867676767676767676766635b51463a2e22160a0000000714212d3a46535e697885929f9d9a9797928f8c8985827f7c7976736f6d666662605b5455534d4847433c3b4754606a6f737271706f6e6e6d6d6c666c6c676d707882909ca8b2bdc9c6baaea298877a6e6154473b2e211408000000000000000006121f2b3844505b6676828f9ca9b5b5ab978a7d706673808c99a6b3afa296897c7683909ca9b6ab9e9285786766727f8c99a5b2aea194887b6e615555555555555555555a6774808d9aa7b3b2a6998c7f7366594c403326190d00000000000000030f1a26313c4653606d7985919eabb8c4c5b8ac9f9285796d606a7783909daab6c3b6aa9d9083776e6e6e6e6e6e6e76828f9ca9b5c2bcb0a396897d706e6e6e6e6e6e6e7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8f949faab7c3c2b6a99c8f8376695c5043505d6a7683909da9b6c3c2b6aa9e938e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8a7d7063574a3d3024170a000000000004101c28333e4753606d7985929fabb8c3b7aa9e9184777984919490857e87929f97928b837c736d67606a6f7b847f7c80858a9095a0acb8ada094877a6d768390857c746e6a696e767e858d92999f998c7f73665c5044382b1f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c8e8e8e8e8e8e8e8e8e8e8e939eaab6c2cfdbd3c7bbafa399928e8e8e8e8e8e8e8e8e8e8e8a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000a141c242a3643505c6976838f9ca9b6b2a6998c7f7b7b7b7e8b97a4b1afa295887c6f625a5a5a5a5a5a5a5e6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275685b5a5a5a5a5a5a5a5a595751493f352a1e12060000000815212e3b4854616e7b8797a2aaa7a9a19e9b9898928f8c8986837f7c7976726f6c6665615f5755534e463c434e586062676665646362616060605b5f555d60666f7c8996a1acb9c5cabfb4aa96897c6f6356493c302316090000000000000000030f1c28333f4a546673808c99a6b3b2a5988b7f726673808c99a6b3afa296897c74818e9ba7b4ada29786796d66727f8c99a5b2aea194887b6e61606161616161616161606774808d9aa7b3b2a6998c7f7366594c403326190d00000000000000000a151f2c3844505c6673808d9aa8b2bdc7baaea298897c6f626a7783909daab6c3b6aa9d9083776a61616161616976828f9ca9b5c2bcb0a396897d706361616161616d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9999999999999999999999999999999999999c9fa6b0bbc7c2b6a99c8f8376695c5043505d6a7683909da9b6c3c6baafa59e9b999999999999999999999999999999999999968a7d7063574a3d3024170a0000000000000b161f2c3945515d6774808d9aa7b1bcb8aca096887b808d969f97928b9299a3a19e95908780796f6a6f7c8591887e74797e83909daab7ada094877a717e8b9492867e756d727b828b92979fa3ab9e9184786d6053463b31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c999b9b9b9b9b9b9b9b9b9b9ea5afbac6d2ded7cbc0b5aba39f9b9b9b9b9b9b9b9b9b9b968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000020c1c262e363b43505c6976838f9ca9b6b1a5988b7e726e707c8996a3afafa295887c6f62554d4d4d4f4d515e6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275685b4f504d4d4d4d4d4d4c4b463f372e23180d020000000a1724303d4a5763707d8a96a9b3b4b3adaba8aaa29f9c9998928f8c8985827f7c7975726e6967625f584e433d464e54565a595857565554545353504a4b5154606a7884919eabb7c4d0bdb1a4978a7e7164574b3e3124180b0000000000000000000b17222d3e4b5764717e8a97a4b1b3a6998d80736673808c99a6b3afa296897c727f8c99a5b2b3a994877b6e66727f8c99a5b2aea194887b6e676d6e6e6e6e6e6e6e6e6d6674808d9aa7b3b2a6998c7f7366594c403326190d000000000000000003101c28343f4a54626f7c8996a1adb9c5bfb4aa988c7f72656a7783909daab6c3b6aa9d9083776a5d5454545c6976828f9ca9b5c2bcb0a396897d706356545454606d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a9aab0b8c2ccc2b6a99c8f8376695c5043505d6a7683909da9b6c3cbc1b7afaaa8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a3968a7d7063574a3d3024170a00000000000004101d2935404b55626e7b8895a0acb8bdb2a89b8e8187929fa8a19e989fa3abada7a099928d837c737c85919792867d6f74818d9aa7b4ada094877a7c86929f98928b817a7e868f949ea1a9aeada1968a7d7063574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5a7a7a7a7a7a7a7a7a8aaafb7c1cbd7e2dcd1c7bdb5afaca7a7a7a7a7a7a7a7a7a3968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000a141e2e3840474b505c6976838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f62554953595b58555e6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275685b595d54524c4441413f3e3a352e251c1107000000000d192633404c5966737f8c99a6b2bfbeb9b8b5b4aeaca9aaa29f9c9998928f8c8985827e7b78746f6a5f53473a3d4347494d4c4b4a494847474746443f40454e586875818e9ba8b4c1cbbeb2a5988b7f7265584c3f3225190c0000000000000000000616222f3c4955626f7c8895aab4b4a79a8e81746773808c99a6b3afa296897c717e8a97a4b1afa295887c6f66727f8c99a5b2aea194887b6e6d797b7b7b7b7b7b7b7b786d74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000c17232e384754606a7884919eabb7c4c1b4a89b8e8175686a7783909daab6c3b6aa9d9083776a5d5454545c6976828f9ca9b5c2bcb0a396897d706356545454606d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba8b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b5b7bbc2cacfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0c9c1bab6b4b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b0a3968a7d7063574a3d3024170a000000000000000c18242f3947535f6a7783909dacb6c0b6aa9e938e9299a3afadaba4acaeb5b8b1aba39f95908680859297a19892857b74818d9aa7b4aea194887b849198a2a29f938e858b92989fa6adb3b1aca89c8f8275695f53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2b4b4b4b4b4b4b4b4b6bac1c9d3dde8e3d9cfc7c0bbb9b4b4b4b4b4b4b4b4b0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000006111c2630404a52585a5c6976838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f6255535d656865615f6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756862666a615e564c413633322e2a231c130a0000000004101d2935404b556875828e9ba8b5c1cac6c5c2bfbab8b5b4aeaca9aaa29f9c9997928f8b8884817c6f6255483c32373b3c403f3e3d3c3b3b3a3a393833353f4c5966727f8c99a5b2bfccc0b3a6998d8073665a4d4033271a0d0000000000000000000714212e3a4754616d7a8798a2aeb5a89b8f82756873808c99a6b3afa296897c707d8996a3b0b0a396897d7066727f8c99a5b2aea194887b6e707d88888888888888887c6f74808d9aa7b3b2a6998c7f7366594c403326190d00000000000000000006111c2b37434e586774818d9aacb6c0c3b7aa9d908477666a7783909daab6c3b6aa9d9083776a61616161616976828f9ca9b5c2bcb0a396897d706361616161616d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba8b5bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfc2c3c7ccd3cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0d3cbc6c2c1bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbdb0a3968a7d7063574a3d3024170a0000000000000007121d2b37424e5766727f8c9aa4afbbbaafa59e9b9fa3abb5b9afa9a7a3aaacb2b5afa7a098928d9298a1a9a19791847a808d9aa7b4b6a99d90839096a0aaaea59e9892989fa2aab0b2aca7a09d9892867b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bababababababababcc0c5cdd5dfe9eae0d8d0cac6c5babababababababab0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000b17232e3842525c6366606976838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f625557656f75726e696a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756a6f73776e685e5246392d25221e18110a010000000006131f2c3945515d677784919daab7c4c5c9ced0cac6c5c2bfbab8b6b4aeaca9a9a29f9b9896918b7e7164584b3e312b2e2f34333231302f2e2d2d2d2b28313d4a5764707d8a97a3b0bdd1c1b4a79b8e8174685b4e4135281b060000000000000000000713202d3946525d687985929facb6a99c8f83766973808c99a6b3afa296897c6f7c8895a2afb1a4978a7e7166727f8c99a5b2aea194887b6e707d8a949494949494887c6f74808d9aa7b3b2a6998c7f7366594c403326190d000000000000000000000f1b27323e4a5764717d8a9aa4afbbc5b9ac9f9286796d6a7783909daab6c3b6aa9d9083776e6e6e6e6e6e6e76828f9ca9b5c2bcb0a396897d706e6e6e6e6e6e6e7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba8b5c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c2c3c7ccd4cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0d3ccc6c3c1c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0bdb0a3968a7d7063574a3d3024170a00000000000000010e1a26313c4854616e7b87939facb9c1b7afaaa8acafb5b9afa59d9b979da0a8aeb4b1aaa29f999fa2aab3a9a0969083818e9aa7b4b8ab9f92858f949fa3abafaaa29fa2aaaeb3ada8a09d95908b85817b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5adadadadadadadadaeafb4bbc3cdd7e2e2d8cec6bfbab8adadadadadadadadada3968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54636e736d6776838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f62555f6975817f7b77737784919daab7b6a99c8f83766a7783909daab6b5a89b8e8175787c80837a6e6154473b31261a120d070000000000000714202d3a4753606d7a86939facb5b7b9bdbfc5c6cad0d0cac7c5c2bfbab8b5b3adaba8a8a1978a7d7064574a3d31242223272625242322212120201f222f3c4955626f7c8895aab4bfcbc2b5a99c8f8276695c4f432e23170b00000000000000000005111d2935414c566b7784919eaab6aa9d9083776a73808c99a6b3afa296897c6f7b8894a1aeb1a5988b7e7266727f8c99a5b2aea194887b6e707d8a96a1a1a1a195887c6f74808d9aa7b3b2a6998c7f7366594c403326190d000000000000000000000a14212e3a4754616d7a86939facb9c6bbaea399887b6e6a7783909daab6c3b7aa9d90837b7b7b7b7b7b7b7b7b828f9ca9b6c2bdb1a4978a7e7b7b7b7b7b7b7b7b7c8895a1aebbc1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba8b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b7bbc2cacfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0c9c1bab6b5b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b0a3968a7d7063574a3d3024170a00000000000000000915212d3a46535e697783909daab6c3c1bab6b4b9bbbbb1a79d938e8a91969fa2aab0b4aeaca6abaeb3a9a19892887f808d9aa7acaca295887c828c9299a3aeb3aeabaeb3b0a9a29f96918a837e7a746e695e53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a1a1a1a1a1a1a1a1a1a1a3a9b1bbc5d0dcdbd0c6bcb4aeaca1a1a1a1a1a1a1a1a1a1968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c667380796d76838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f6255616e7b888b8884807c84919eaab7b6a99c8f83766a7783909daab6b6a99d90828084888c8b7f7265574d42362a1e1205000000000000000916232f3c4956626f7c8999a3aba8aaacb2b2b8babfc5ced6d3d2d0cac6c5c2bebab8b5b2a296897c6f6356493c302316161a19181716151414141314212e3a4754616d7a8798a3aebac7c3b7aa9d9084776a544a3f34281c10030000000000000000010d19243043505d6a7683909da9b6aa9d9184776a73808c99a6b3afa296897c6f7a8794a0b6b2a5988c7f7266727f8c99a5b2aea194887b6e707d8a96a3aeaea295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d000000000000000000000713202d3946525d687784919daab7c4bfb5ab96897d706a7783909daab6c3b8aca095908787878787878787878f949fabb7c4bfb2a69a908a8787878787878787888e98a4b0bcc1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9ba6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a9abb0b8c2ccc2b6a99c8f8376695c5043505d6a7683909da9b6c3ccc1b7afaaa8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a3968a7d7063574a3d3024170a000000000000000005121e2a36424d576773808d9aabb5bfcbc6c2c1c5beb3a9a0958e817d848b92989ea6aeb4b8b3b8b9ada19792867e74818d9aa0a0a0a094877a777f87929facb9bab8b5aea69e97928b847e78716d67615e574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c9494949494949494949494979fa9b4c0ccd8d6cabfb4aaa29f94949494949494949494948a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986807476838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f625865717e8b9895908d899196a0acb8b6a99c8f83766a7783909daab6b7ab9f95908d919699908376695f53463a2d211409000000000000000b1825323e4b5865717e8b9299989b9ea0a8a6acaeb4bcc5d0dbdfd7d2cfcecfcac6c5bbaea295887b6f6255483c2f2215090d0c0b0a09080807070613202d3946525e687986929facb9c5c5b8ab9e928578665c5044382b1f1206000000000000000000081c2935424f5c6875828f9ba8b5ab9e9184786b73808c99a6b3afa296897c6f7a869aa4afb3a6998c807366727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000005111d2935414c566875818e9ba8b4c1beb1a5988b7e726a7783909daab6c3bcb1a7a09d9494949494949494949c9fa6b0bbc7c2b7aca29a9794949494949494949598a0aab5c0c1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828f9999999999999999999999999999999999999c9fa6b0bbc7c2b6a99c8f8376695c5043505d6a7683909da9b6c3c6baafa59e9b999999999999999999999999999999999999968a7d7063574a3d3024170a0000000000000000020e1a25313d4a5663707d8999a3aebbc7d3cfccc0b6aca29790837970787f868f949fa3aab2bac4b8ab9e92857c7174818d939393939393877a6d727e8b97a4b1bbb3aba39f938f857e78716c65605d55534d453b31251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8787878787878787878787878d97a3afbcc8d5d3c6baaea298928787878787878787878787877d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89897d76838f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f62566874818e9ba09d99969ea0a8b2bdb6a99c8f83766a7783909daab6bcb1a79f9d9a9ea19f95887b6e6155483b30251a0e020000000000000b1824313e4b5764717e8386898c8e919696999fa2aab4bfcad6d3ccc6c3c1c0c3c6c8bfb5ab94877b6e6154483b2e21150801000000000000000005111e2a36414c566b7784919eaab7c4c6b9ac9f9386796d6053463a2d2013070000000000000000020f1b2835424e5b6875818e9ba8b4ab9e9185786b73808c99a6b3afa296897c6f7986939facb3a69a8d807367727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d00000000000000000000010d1924303f4c5965727f8c98a5b2bfc0b3a6998d80736a7783909daab6c3c3b9b1acaaa1a1a1a1a1a1a1a1a1a9abb0b8c2cdc8beb4aca6a4a1a1a1a1a1a1a1a1a1a4aab2bbc6c1b4a79a8e8174675b4e4134281b0e0100000f1c2935424f5c6875828d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8f949fabb7c3c2b6a99c8f8376695c5043505d6a7683909da9b6c3c3b6aa9e938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7d7063574a3d3024170a0000000000000000000914202d3a4753606d7a86929facb9c5d2ccc4bbafa49a92857b6e676d727b828b9298a1a8b2beb6a99c8f83796d748086868686868686867a6d7a84919eabb7b3a9a299928b827a716d66605b53555046423b33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d797a7a7a7a7a7a7a7a7a7a7a7b8794a1aebac7d4d2c5b8ac9f92867a7a7a7a7a7a7a7a7a7a7a7a796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000003101c28343f4a5466727f8c91857a828f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f625e697784919eaaaaa6a2aaacb2bac2b6a99c8f83766a7783909daab6c2b9b1aba9a7abaca7988c7f7265574d42362a1e12050000000000000a1724303d4955616c71777a7c7f818487898c9298a2aebac6d3c9c1bab6b5b3b6b9bbbbaea399867a6d6053473a2d201407000000000000000000010d19253043505c6976838f9ca9b6c2c7bbafa499877a6e6154473b2e2114080000000000000000010e1b2734414e5a6774818d9aa7b4ab9f9285786c73808c99a6b3afa296897c6f7986929facb4a79a8d817467727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000081724313d4a5764707d8a97a3b0bdc1b4a79b8e81746a7783909daab6c3cbc3bcb8b7aeaeaeaeaeaeaeaeaeb6b7bbc2cad4d0c6beb7b2b1aeaeaeaeaeaeaeaeaeb0b5bbc4cdc1b4a79a8e8174675b4e4134281b0e0100000b1825313e4b5864717e80808080808080808080808080808080808080828f9ca9b6c2c2b6a99c8f8376695c5043505d6a7683909da9b6c3c1b5a89b8e8180808080808080808080808080808080808080807b6e6255483b2f2215080000000000000000000613202c3945515d677783909daab6c3cfc4bab0a69f93887d70696666696e757f869196a1acb6b7ab9f948e81746c7879797979797979797678829096a1acb9ada29792877e756e686666666664615a5045392d21170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d6e6e6e6e6e6e6e6e6e6e6e7a8693a0adb9c6d3d2c5b8ac9f9285796e6e6e6e6e6e6e6e6e6e6e6d675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c6675828f978e81828f9ca9b6b1a5988b7e7265707c8996a3afafa295887c6f62616e7b8796a0acb7b3afb7b8bdc3c2b6a99c8f83766a7783909daab6c3c2bcb7b6b3b7b6a99d908376695e52463a2d2014080000000000000815212d3945505a6164676d6f7275777a7d7f86929facb8c5ccc1b7afaaa8a6aaacafb6ac9f928679675d5145392c20130600000000000000000000081b2835414e5b6874818e9ba7b4c1ccc0b5ab95887b6f6255483c2f2215090000000000000000000d1a2733404d5a6673808d99a6b3ac9f9285796c73808c99a6b3afa296897c6f7885929fabb4a79a8e817467727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d00000000000000000000000815222f3b4855626e7b8895a9b3bec2b5a89c8f82756a7783909daab6c3d0cec8c5c3bababababababababac2c4c7cdd4dcd8d0c8c2bfbdbababababababababbbcc0c6cdcdc1b4a79a8e8174675b4e4134281b0e0100000a1724303d4956616c71737373737373737373737373737373737373737f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d73737373737373737373737373737373737373736e6a5f53473a2e21140800000000000000000004101d2935404b556874818e9ba7b4c1c6bdb2a89f948d807373737373737373737c84919aa4afbbb0a69d938c7f7373737373737373737374808d949fa8b2b8ab9f92857d7373737373737373716c6155493d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686d6f6f6f6f6f6f6f6f6f6f6f7a8693a0adb9c6d3d2c5b8ac9f9285796f6f6f6f6f6f6f6f6f6f6f6d675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929f938e86929facb8b1a5988b7e7265707c8996a3afafa295887c6f6264717e8a97a8b2bdbfbab8babfc6c2b6a99c8f83766a7783909daab6c3c6bfbab9babfb8ab9f95877b6e6154483b3024190d01000000000005111d28343e485055555d60636568686d707884919eabb7c4c6baafa59e9b9a9d9fa4acaa9e9285786b554b4035291d1004040404040404040404040d1a2733404d5a6673808d99a6b3c0d2bcafa396897c706356493d3023160a0000000000000000010d192633404c5966737f8c99a6b2ac9f9286796c73808c99a6b3afa296897c6f7885929eabb4a89b8e817568727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d00000000000000000000000714202d3a4753606d7a8697a2adbac3b6aa9d9083776a7783909daab6c3ccc4bdb9b7b1b1b1b1b1b1b1b1b1b7b8bcc3cbd5d2c8c0b9b5b3b1b1b1b1b1b1b1b1b1b3b8bec7cdc1b4a79a8e8174675b4e4134281b0e0100000815212d3945505a6164666666666666666666666666666666666666727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7066666666666666666666666666666666666666625f574e42372b1e1206000000000000000000010d18242f3f4c5965727f8c98a5b2bfbfb5aba1968f8278787f7f7f7f7f7f7f7f7f8086939facb9b8afa59f9387807f7f7f7f7f7f7f7f7f808d929da6b0bab4a89b8e817f7f7f7f7f7f7f7f7f7e7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7b7b7b7b7b7b7b7b7b7b7b7c8895a2afbbc8d5d2c5b8ac9f92867c7b7b7b7b7b7b7b7b7b7b7c796d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8998a29e989298a2aebab1a5988b7e7265707c8996a3afafa295887c6f626774818d9aa7b4bcb4aeacaeb4bcc2b6a99c8f83766a7783909daab6c3bcb4aeacaeb4bcb1a7988b7f7265564c4135291d11040000000000000c17222c363e45494b51535659565e616b7884919eabb7c4c3b6aa9e938e8d90939a9a9d9d9184776a5e51442f24180d1111111111111111111111111825323f4b5865727e8b98a5b1becabdb1a4978a7e7164574b3e3124180b00000000000000000a131c26323f4c5965727f8c98a5b2aea39986796673808c99a6b3afa296897c6f7885919eabb5a89b8e827568727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d000000000000000000000006131f2c3845515c677885929fabb8c4b7aa9e9184776b7783909daab6c3c4bab2acaba4a4a4a4a4a4a4a4a4aaacb1b9c3cecac0b6aea8a6a4a4a4a4a4a4a4a4a5a7adb5bec9c1b4a79a8e8174675b4e4134281b0e01000005111d28343e485056585a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a65727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d70635a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e453c31261a0e020000000000000000030a0f1623303d495663707d8996abb5c0bbaea39991847a6d79868c8c8c8c8c8c8c8c8d939aa4afbbc1bbafa499938d8c8c8c8c8c8c8c8c8c8d929da4aeb9c2b6aa9e938e8c8c8c8c8c8c8c8c8c8275695c4f4236291c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8888888888888888888888888e99a4b0bdc9d6d3c7baaea298928888888888888888888888887d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000003101c28343f4a5466727f8c99aaaaa29fa2aab4bfb1a5988b7e7265707c8996a3afafa295887c6f62687784909daab7b2aaa29fa2aab4bfb6a99c8f83766a7783909daab6bfb4aaa39fa3aab4b6a99c8f8276685d5245392c20130700000000000006101a242c343939404547494c4c525e6b7884919eabb7c4c1b5a89b8e818083868a8d90939083766a5d5043372a1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e24313e4a5764717d8a97a4b0bdcabeb2a5988b7f7265584c3f3225190c0000000000000007121c252e353f4c5865727f8b98a5b2b5a09386796d73808c99a6b3afa296897c6f7885919eabb5a89b8f827568727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d000000000000000000000004101c2934404b556a7784909daab7c3b8ab9e9285786b7783909daab6c3bdb2a8a19e9797979797979797979da0a7b1bcc8c5b9aea49c9a9797979797979797989ba3adb8c3c1b4a79a8e8174675b4e4134281b0e010000000c17222d363e45494b4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847423c332a2015090000000000000000060e151a1f212e3b4854616e7b8799a3afbbb9ac9f92877c6f6d7a8693999999999999999a9fa4acb6c0ccc0b5aba49f999999999999999999999a9da4aeb6c0c6baafa59e9b99999999999999998f8275695c4f4236291c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c959595959595959595959599a0aab5c1ccd9d6cabfb4aaa29f95959595959595959595958a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6676828f9ca9b4aeacaeb4bcbeb1a5988b7e7265707c8996a3afafa295887c6f626d7a86939facb2a8a0989298a2aebab6a99c8f83766a7783909daab6baaea3989298a3abb5ac9f92867a6d6054473a2e23180c0000000000000009121a22282d2f35393a3c3f41515e6b7884919eabb7c4bfb2a5998c7f73777a7d8084868a8275695c4f42362a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a303d4a5763707d8a96a3b0bdc9bfb3a6998c807366594d4033261a0d000000000000020d18232e373f464b5865717e8b98a4b1aca09386796d73808c99a6b3afa296897c6f7884919eabb5a89c8f827569727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c18232f43505c6976838f9ca9b6c2b9ac9f928679677783909daab6c3b9aca196918b8b8b8b8b8b8b8b8b9095a0acb8c5c1b5a89c928d8b8b8b8b8b8b8b8b8b919ba7b3bfc1b4a79a8e8174675b4e4134281b0e0100000006101b242d34393d3e3f44464a4a4a4a4a4a4a4a4a4a4a4a4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574a4a4a4a4a4a4a4a4a4a4a4a4a494743403b3a37312a21180e030000000000000006101820262b2e2f3a4653606d7986929facb9b5a89c8f82756a6d7a8693a0a6a6a6a6a6a6a7acafb6bec3ccc7bdb5afaca6a6a6a6a6a6a6a6a6a6a7a9aeb6c0c8cac1b7afaaa8a6a6a6a6a6a6a69c8f8275695c4f4236291c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a2a2a2a2a2a2a2a2a2a2a4aab2bcc6d2dddbd0c6bcb4aeaca2a2a2a2a2a2a2a2a2a2968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929fabb8bab8babfc5beb1a5988b7e7265707c8996a3afafa295887c6f63707d8a9aa4afaca0969186929facb8b6a99c8f83766a7783909daab6b9ac9f92869299a3afafa3998a7e7164544a4034281c1004000000000000000910171d1d24292c2d303045515e6b7884919eabb7c4bfb2a5998c7f72686d7074777a7d7e7164574b3e373737373737373737373737373737373737373c4956636f7c8996a2afbcc9c0b4a79a8d8174675a4e4134271b0e01000000000006121e2a353f4951575964717e8b97a4b1ada093867a6d73808c99a6b3afa296897c6f7884919eabb5a99c8f827669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d000000000000000000000000071c2935424f5c6875828f9ba8b5c2bbafa399867a6d7783909daab6c3b7ab9e91847e7e7e7e7e7e7e7e7e83909daab7c3c0b3a69a8d807e7e7e7e7e7e7e7e7f8b98a5b1bec1b4a79a8e8174675b4e4134281b0e010000000009121b22282e38424a5053575757575757575757575757575865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063575757575757575757575757575756544e463d322b2620180f0600000000000000030e18222a31373a3c3e44505c667884919eabb7b6a99d9083766a6d7a8693a0a9a9a9a9a9a9a9a9aaacb2bac3d0c3b9b1acaaa9a9a9a9a9a9a9a9a9abadb2bbc4cdc2b8b0aba9a9a9a9a9a9a9a9a89c8f8275695c4f4236291c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5aeaeaeaeaeaeaeaeafb0b5bcc4ced8e3e2d8cec6bfbab8aeaeaeaeaeaeaeaeaea3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8998a2aebac6c5c6cad0beb1a5988b7e7265707c8996a3afafa295887c6f6773808d9aacb6aa9e918484919daab7b6a99c8f83766a7783909daab6b5a99c8f8287929facb5ab9b8e8175665c5144382c1f12060000000000000000060c1112181d20202b3845515e6b7884919eabb7c4bfb2a5998c7f7266616467686d71716c6155494444444444444444444444444444444444444444444855626f7b8895a2aebbd2c1b5a89b8e8275685b4f4235281c0f0200000000000a16222f3a46515b63666c717e8a97a4b1ada093867a6d73808c99a6b3afa296897c6f7784919eaab5a99c8f82766c727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000020e1b2835414e5b6874818e9ba7b4c1c0b5ab94877a6d7783909daab6c3b6aa9d9083777171717171717176828f9ca9b5c2bcb0a396897d71717171717171717a8793a0adbac1b4a79a8e8174675b4e4134281b0e01000000000009101c28343f4a545c60646464646464646464646464646465727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d706464646464646464646464646464646260584e43372b1f150e0600000000000000000a15202a343c4347484b484a54697683909ca9b6b7aa9e9184776b6d7a86939c9c9c9c9c9c9c9c9c9da0a8b2bdc8bcb1a7a09d9c9c9c9c9c9c9c9c9c9ea1a9b2bdc7bbb0a69f9c9c9c9c9c9c9c9c9c9c8f8275695c4f4236291c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bbbbbbbbbbbbbbbbbdc1c6ced6e0eaeae0d8d0cac7c5bbbbbbbbbbbbbbbbb0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c99a3aebbc4cfd3d6cbbeb1a5988b7e7265707c8996a3afafa295887c6f677683909da9b4a79a8e8184919daab7b6a99c8f83766a7783909daab6b5a89b8e8182909ca9b6ab9f9285796d6053463a2d2013090000000000000000000001070d10131e2b3845515e6b7884919eabb7c4bfb2a5998c7f72665957565e616464615a504c5151515151515151515151515151515151515151515154616e7b8794a1b6c0ccc2b5a99c8f8276695c4f4336291c060000000000000c1825323e4b57636d7279797e8a97a4b0ada09387797979808c99a6b3afa296897d797984919eaab6a99c8f827979797f8c99a5b2aea194887b79737d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000010e1a2734414d5a6774808d9aa7b3c0baaea194877b6e7783909daab6c3b6aa9d9083776a64646464646976828f9ca9b5c2bcb0a396897d706464646464646d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e01000000000006121f2b3844505c666d717171717171717171717171717171727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d717171717171717171717171717171716f6a6054473b2e2215080000000000000000030f1a26313c464e53555854525b6875828e9ba8b5b8ac9f928579666d7a868f8f8f8f8f8f8f8f8f8f9196a0acb8c5b8aca095918f8f8f8f8f8f8f8f8f9196a1adb9c4b7ab9f94908f8f8f8f8f8f8f8f8f8f8275695c4f4236291c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2b2b2b2b2b7b8bdc3ccccd2d8e0e8f2f2eae2dbd6d3c9c0bab5b4b2b2b2b2b0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b86929fa9b2bec9d5d8cbbeb1a5988b7e7265707c8996a3afafa295887c6f6d7a86929facb1a7978a7e84919daab7b6a99c8f83766a7783909daab6b5a89b8e817f8c99a8b2ada297897c706356493d31261a0e0200000000000000000000000104121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c4c52545757555156585d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d606d7a879aa4afbbc8c3b6aa9d9083776a5d50442d22170b0000000000000c1926333f4c5966727f868687929facb9b9ac9f9286868687929facb9b9ac9f9286868688939facb9ac9f938786868687929facb9b9ac9f928686807d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000d1a2733404d5a6673808d99a6b3c0bbaea194887b6e7783909daab6c3b6aa9d9083776a5d5858585c6976828f9ca9b5c2bcb0a396897d706358585858606d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000000000713202d3a4653606d787e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d818e9ba7b4c1c2b6a99c8f8376695c5043505d6a7683909da9b6c3c0b3a6998d807d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c6f6256493c2f231609000000000000000006121f2b37434e585f6264615e576774818e9aa7b4baaea29886796d6d79828383838383838383838284919daab7c4b7aa9d918382838383838383838284919eabb8c3b6a99c908283838383838383838382807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5a5a5a5a5a5aaacb1bac3ced9e5f1f2fafcf4ede2d6cbc0b7aea9a7a5a5a5a5a5a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a73808d97a1adb9c3ced9cbbeb1a5988b7e7265707c8996a3afafa295887c6f707d8a99a3aeaca095877a84919daab7b6a99c8f83766a7783909daab6b5a89b8e817c8896a0acb3a99a8d807367574d42362a1e120500000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c4146474a4b515b62656a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6c7986939facb9c6c4b7aa9e9184776b544a3f33281c0f0300000000000d192633404c5966737f8c929299a3aebbbaaea3989292929299a3afbbbaaea399929292939aa4afbbafa499939292929299a3afbbbaaea399928d807d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000d1a2633404d596673808c99a6b3bfbbaea295887b6f7783909daab6c3b6aa9d9083776a5d5252525c6976828f9ca9b5c2bcb0a396897d706356525254606d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a868a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8e939da9b6c2c2b6a99c8f8376695c5043505d6a7683909da9b6c3c1b4a89c928d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8175685b4f4235281c0f02000000000000000815212e3a47535f6a6f716e69686773808d9aa6b3bfb4aa94877a6e666d76767676767676767676767f8b98a5b2beb1a4978b7e767676767676767676818e9aa7b4baada194877a76767676767676767676736e63574b3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c989898989898989da0a8b1bdc8d4e1edf9f9f8f9eaddd1c5baaea49d9a989898989898968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58606d7a84919ea8b2bdc8d4cbbeb1a5988b7e7268707c8996a3afafa295887c6f74808d9aabb5aa9d90847784919daab7b6a99c8f83766a7783909daab6b5a89b8e827784919eaab7aa9d918477695f53463a2d21140700000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f393a3e4a56626d72777777777777777777777777777777777777777777777777777885929fabb8c5c5b8ab9f928578665b5044382b1f120600000000000d192633404c5966737f8c999fa3abb5bfbfb4aaa39f9f9f9fa3abb5c0bfb4aba39f9f9f9fa4acb6c0b5aba49f9f9f9f9fa3abb5c0bfb4aba39a8d807d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1926333f4c5966727f8c99a5b2bfbbafa295887c6f7783909daab6c3b6aa9d9083776a5f5f5f5f5f6976828f9ca9b5c2bcb0a396897d70635f5f5f5f606d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a869397979797979797979797979797979b9da5afbac6c2b6a99c8f8376695c5043505d6a7683909da9b6c3c5b9aea49c999797979797979797979797979797978e8275685b4f4235281c0f02000000000000000915222f3c4855626f7c7e7b777471737f8c99a6b2bbaea195887b6e6260696b7071717171717171727f8b98a5b2beb1a4978b7e717171717171717174818e9aa7b4baada194877a71717171717171716e6966635c52473b2f23170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c8c8c8c8c8c8c8c9195a0acb8c5d1deebefedecede8dbcec2b5a99d928d8c8c8c8c8c8c8c8a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000020f1a26313c45515d67727e8b96a0acb8c3cecbbeb1a5988b7e7575757d8996a3afafa295887c6f7784919eaab4ab9a8d807784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275818d9aaab4aca095887b6e6155483b2e23180c00000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33323f4c5865727f838484848484848484848484848484848484848484848484848387929facb9c5c6b9ac9f9386796c605346392d20130600000000000d192633404c5966737f8c99a6aeb5bdc6c6bcb4aeacacacacafb5bdc7c6bdb4aeacacacacafb6bec7bdb5afacacacacacafb5bdc7c6bdb4a79a8d807d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1926323f4c5965727f8c98a5b2bfbcafa295897c6f7783909daab6c3b6aa9d9083776c6c6c6c6c6c6c76828f9ca9b5c2bcb0a396897d706c6c6c6c6c6c6d7a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0a4a4a4a4a4a4a4a4a4a4a4a4a4a7a9afb7c1cbc2b6a99c8f8376695c5043505d6a7683909da9b6c3cac0b6aea8a6a4a4a4a4a4a4a4a4a4a4a4a4a4a49b8e8275685b4f4235281c0f02000000000000000b1825323e4b5865717e8b8784817e7b7f8b98a5b2bcafa295897c6f625663707d7d7d7d7d7d7d7d7d818e9ba7b4c0b4a79a8d807d7d7d7d7d7d7d7d7d828f9ca9b6beb1a4988b7e7d7d7d7d7d7d7d7d7b6e6154524a40352a1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c7f7f7f7f7f7f7f7f84919daab7c4d0dde8e3e0dfe0e3dacdc0b4a79a8d807f7f7f7f7f7f7f7f7b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000a15202935414b55606d7884919da7b1bcc8d0c3b6a99d9083818181828f9ca9b5afa295887c6f7b8796a0acaea3998a7d7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82757d8a98a3aeb1a8988b7f7265544b4034281c1004000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33313e4b5864717e8b909090909090909090909090909090909090909090909090909299a3afbbc7c8bbafa49a877a6d6054473a2d21140700000000000d192633404c5966737f8c99a6b2bfc6cfcfc6bfbab9b9b9b9bbc0c7cfcfc6bfbab9b9b9b9bbc0c7d0c7c0bbb9b9b9b9b9bbc0c7cfcfc0b3a79a8d807d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1926323f4c5965727f8c98a5b2bfbcafa295897c6f7783909daab6c3b6aa9d9083787878787878787878828f9ca9b5c2bcb0a396897d78787878787878787a8793a0adbac1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0adb0b0b0b0b0b0b0b0b0b0b0b0b4b6bac1c9cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0c8c0b9b4b3b0b0b0b0b0b0b0b0b0b0b0b0b0a89b8e8275685b4f4235281c0f02000000000000000d1a2733404d5a6673808d96918e8b8786929facb8bcafa396897c70635c6976828a8a8a8a8a8a8a8a8e939da9b6c2b5a99d928d8a8a8a8a8a8a8a8a8a8f949fabb7bfb3a79b908b8a8a8a8a8a8a8a8a7e7164584b40382e24190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a6f727272727272727b86929facb9c5d2dfdcd7d3d2d3d7dccfc2b5a89c8f8275727272727272726e695f53463a2d211407000000000000000000000000000000000000000000000000000000000000000000030d18242f3a44505c66707d8a95a0acb8c3cec4b8ab9f95908e8e8e8f949fabb7afa295887c717e8b98a8b2ac9f92867a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82757a86929facb5a89c8f8275665c5145382c1f1306000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332f3c4956626f7c89959d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb5c0cbccc0b6a194877b6e6154483b2e21150800000000000d192633404c5966737f8c99a6b2bfc8d0cec6c1bdbbbbbbc0c1c5cbd2d0c8c2bfbdbbbbc4c5c9ced4cdc8c4c3bbbbbbc0c1c5cad2cdc0b3a79a8d807d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa296897c6f7783909daab6c3b9ac9f928785858585858585858587929facb9c5c5b8ac9f9286858585858585858585929fabb8c5c1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0adb9bdbdbdbdbdbdbdbdbdbdbdc1c2c6cbd2cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0d1cac5c1c0bdbdbdbdbdbdbdbdbdbdbdbdb5a89b8e8275685b4f4235281c0f02000000000000020f1b2835424e5b6875818e9b9e9b97989298a2aebabdb0a3968a7d70635c6976838f979797979797979b9da5afbac5b9aea49d9a9797979797979797979c9fa6b0bbc3b7aca39b98979797979797978b7e7164584b3e31251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58606265656565656c76828f99a3afbbc7d4d9d1cbc7c5c7cbd1d0c3b7aa9e94897d70666565656565615f574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000007131d28343f4a54606c7883909da7b1bcc8c8bcb1a79f9d9b9b9b9c9fa6b0bbafa295887c75828e9ba8b5a99c8f83767784919daab7b6a99c8f83766a7783909daab6b5a89b8e827576828f9ca9b6ac9f9285796d6053463a2d201308000000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332d3a4753606d7a8696a1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacafb5bdc7d1d2bbaea295887b6f6255483c2f22150900000000000d192633404c5966737f8c99a6b2b7bec6c4bcb5b0afaeaeb3b5b9c0c8c6beb7b2b0aeaeb7b9bdc4cbc2bcb8b6aeaeaeb3b5b9c0c8c5bdb3a79a8d807d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa296897c6f7783909daab6c3bbafa399929292929292929292929299a3afbbc7c6baaea2989292929292929292929298a2aebac6c1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0adb9bfbfbfbfbfbfbfbfbfbfbfc2c3c7ccd3cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0d3cbc6c2c1bfbfbfbfbfbfbfbfbfbfbfbfb5a89b8e8275685b4f4235281c0f0200000000000005111e2a36414d566a7683909da9a7a3999299a3afbbbdb0a4978a7d71645c6976838f9ca4a4a4a4a4a4a7a9afb7c1cbc0b6aea9a7a4a4a4a4a4a4a4a4a4a9abb0b8c2c9beb5aca7a4a4a4a4a4a4a4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e54565959595d67717e8a949fabb5c0cbd7cfc7c0bbb9bbc0c7cfc7bbb0a69d9083786d605659595955534d453b31261a0e0200000000000000000000000000000000000000000000000000000000000000000000010c17232e3844505b65717e8a95a0acb8c4cdc2b9b1aba9a8a8a8a9abb0b8bbafa295887c7985929fabb3a9998c7f727784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275727f8c98a9b3aea298897d706356493d3025190d010000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332c3945515d677884919eabb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b9bbc0c7cfd9c9bcafa296897c6f6356493c3023160900000000000d192633404c5966737f8c99a4a6acb4bebcb2aaa4a2a1a1a7a9aeb6c0beb4aca6a4a1a1abacb2bac2b9b1aba9a1a1a1a6a8aeb6c0bdb3aba79a8d807d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909daab6c3c0b5aba39f9f9f9f9f9f9f9f9f9f9fa3abb5c0cbcabfb4aaa29f9f9f9f9f9f9f9f9f9fa2aab3becac1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0adb2b2b2b2b2b2b2b2b2b2b2b2b5b7bbc1cacfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0c9c1bab6b4b2b2b2b2b2b2b2b2b2b2b2b2b2a89b8e8275685b4f4235281c0f020000000000000714202d3946525e687885929fabac9f9286929facb9bdb1a4978a7e71645c6976838f9ca9aaaaaaaaaaabadb2bac4cec4bab2acabaaaaaaaaaaaaaaaaaaabadb3bbc5cdc3b9b1acaaaaaaaaaaaaa4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b343d4347494c4d57606d7984919ea6b0bdc7d1cbc3bdb5afacafb5bdc7ccc1b8aca0958b7e72685d524c4c4846423b33291f140900000000000000000000000000000000000000000000000000000000000000000000000006111c27333f4953606c7883909da9b2bec9cbc2bcb8b6b4b4b4b5b7bbc2bbafa295887c7c8997a2adada197887c6f7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756f7c8897a1adb4aa998d807366564c4135291d11050000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332935404b556976828f9ca9b5c2c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c5c7cbd1c9c9c9bcb0a396897d7063564a3d3023170a00000000000d192633404c5966737f8c94979aa2acb7b5aaa0989594949a9da4aeb9b7aca29a9794949ea1a8b2bcb1a79f9d9494949a9da4aeb9b6aba199968d807d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909daab6c3c7bdb5afacabababababababababacafb5bdc7d1d0c6bcb4aeacabababababababababaeb3bcc5d0c1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a8693a0a6a6a6a6a6a6a6a6a6a6a6a6a6a8aab0b8c1ccc2b6a99c8f8376695c5043505d6a7683909da9b6c3cbc1b7afaaa8a6a6a6a6a6a6a6a6a6a6a6a6a6a69b8e8275685b4f4235281c0f020000000000000814212e3b4754616e7a8798a2aeaa9d9184919daab7beb1a4978b7e7164546976838f9c9d9d9d9d9d9d9ea1a8b2bdc9bdb2a8a19e9d9d9d9d9d9d9d9d9d9ea1a9b3bec8bcb1a7a09d9d9d9d9d9d9d978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32373b3c46535f6973808d96a1adb8c2cfcdc3b9b1aba39fa3abb5c0cbc8bcb1a79e92857a6d60574d423b3a36312921180d03000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3844505b65717e8b97a1adb9c6d0cdc8c4c3c1c1c1c2c2c2c2bbafa295887c7f8c99a9b3ab9e9185786c7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756c7885929eabb6aa9d908377685e5246392d2013070000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33242f414d5a6774808d9aa7b3c0cdd0d0cfc9c6c5bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb0a3978a7d7064574a3d3124170a00000000000d192633404c5966737f88888a909aa6b2b0a4988e8888888d929da9b5b2a69a908a88889196a1acb8ab9f95908888888d929da8b5b1a5998f8988807d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909daab6c3cfc7c0bbb9b8b8b8b8b8b8b8b8b8b9bbc0c7cfd9d7cec6bfbab8b8b8b8b8b8b8b8b8b8babec5cec9c1b4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a869399999999999999999999999999999c9ea6b0bbc7c2b6a99c8f8376695c5043505d6a7683909da9b6c3c6baafa59e9b9999999999999999999999999999998e8275685b4f4235281c0f020000000000000a1623303d495663707c8996aab3ab9b8e828e9ba8b5beb1a4988b7e71665c6976838f909090909090909196a1adb9c5b9aca196919090909090909090909297a1adb9c4b8aca09590909090909090908b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272e39424f59616e7b86929fa8b2bdcad4c8bcb1a7a0999299a3afbbc4cec3b9ada1978d8073695f53463d2f2a261f180f06000000000000000000000000000000000000000000000000000000000000000000000000000006111b27333f4953606d7984919eaab4bfcbd6cbc3bcb8b7b5b5b5b5b5b5afa295887c83909ca9b5ab9b8e8174657784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756575828e9ba8b5ac9f93867a6d6154473a2e2114070000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f3326323f4b5865727e8b98a5b1becfd6cdc5beb9b8afafafafafafafafafafafafafafafafafafafafafafa4978b7e7164584b3e3125180b00000000000714212d3a4754606d7a7b7b7e8a97a4b0afa295887c7b7b808d9aa7b3b0a4978a7e7b7b84919eabb6a99d90837b7b7b808d9aa6b3afa396897d7b7a7d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909daab6bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcc3c4c8cdd4ddd9d1c9c4c0bfbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb4a79a8e8174675b4e4134281b0e0100000000000714202d3a4753606d7a868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8f949eaab7c3c2b6a99c8f8376695c5043505d6a7683909da9b6c3c2b6aa9e938e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8175685b4f4235281c0f020000000000000c1825323f4b5865727e8b98a5afa4998c808c99a6b3bfb6a99c9082786d60677480838383838383838384919eabb7c4b7ab9e918483838383838383838385929eabb8c3b7aa9d908383838383838383837d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101c2834404b54616b75828f98a3aebac4cfcfc7b8aba0959086929fa8b2bdc9c9beb3a99f92867b6e61594f42382d22170b06000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3845515c66737f8c98a3aebac7cec3b9b1acaaa9a9a9a9a9a9a9a296897c86929fa8aba4998a7e716a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e827568727e8b98a9ababa3998a7d7064574a3d3124170a0000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f3326303d495663707c8996a9b3becacfc5bbb3adaba3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3988b7e7265584b3f3225180c00000000000713202c3945525d686d6e6f7c8996a2afada093877a6e73808c99a6b3afa296897c6f7784919eaab6a99c8f83766e727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909daab0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b6b8bcc3cbd4d1c7bfb8b4b2b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a79a8e8174675b4e4134281b0e0100000000000713202d3a4653606d787f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f828f9ca8b5c2c2b6a99c8f8376695c5043505d6a7683909da9b6c3c1b4a89b8e817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7064574a3d3124170a000000000000010e1a2734414d5a6774808d9aa7ac9f93867e8a97a4b0bdb7ab9f948d80746c646e7477777777777777777f8b98a5b2beb1a4978b7e777777777777777777818e9aa7b4baada194877a7777777777777777706b6155483c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c19232c3845515c66707d8a949eaab4bfccd1c7bdb0a69d90837f8c96a1acb9c3cdc5baaea3998f82756b60544a3f33281d13070000000000000000000000000000000000000000000000000000000000000000000000000000000006111b2834404b54616d7a86929facb8c3c8bcb1a7a09d9c9c9c9c9c9c9c9c998c808c91969a9e9f93867a6d6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275686e7b8897a19e9b99928d8074675a4d4134271a0e0000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33262e3a4754616d7a8797a2adb9c6c9beb3a9a19e9696969696969696969696969696969696969696969696968b7f7265584c3f3225190c000000000004111d2935414c565d60636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909da3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3aaabb1b9c3cdc9bfb5ada7a5a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39a8e8174675b4e4134281b0e01000000000006121f2c3844515c666d737373737373737373737373737373737f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d73737373737373737373737373737373706c6155493c3023160a00000000000005111d2935414c566976838f9ca9aa9e91847d8a96a3b0bdbbb0a69d928b7e716a64676a6a6a6a6a6a6a727f8b98a5b2beb1a4978b7e716a6a6a6a6a6a6a74818e9aa7b4baada194877a6e6a6a6a6a6a6a6a6361594f44382c2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2a36424d56606d7984919ea6b0bcc6d1cbc0b5ab9e93897d7984919ea7b1bcc8cbbfb4ab9e93897d70665b50443a2f24180d03000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3946525e6875818e9ba7b1bcc5b8aca095908f8f8f8f8f8f8f8f8f8a7e8084888d9196908376686a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275686a78859297928e8a86827e7164574b3e3124180b0000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33262d3946525e687885929eabb8c5c6b9ada19792898989898989898989898989898989898989898989898989897f7266594c3f3326190c0000000000010d1924303a444c5256636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c707783909696969696969696969696969696969696969d9fa7b1bcc8c4b8ada39c989696969696969696969696969696969696968e8174675b4e4134281b0e01000000000004101c2834404a545c60666666666666666666666666666666727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7066666666666666666666666666666664615a5044392d2014080000000000000713202d3946525d687885919eaba89b8f827d8a96a3b0bdc2b8aea49f92867c6f686c71777777777777777f8b98a5b2beb1a4978b7e777777777777777777818e9aa7b4baada194877a777777777777776e695e52463e33281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303846525e69727f8c96a0acb8c1cfd3c7bbafa3998f8275717e8a95a0acb8c2d0c6bdafa59d9083786c60554b4035291f14090000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414c56636f7c8995a0acb8c3b7aa9d9083828282828282828282827b73777c8084898c8073666a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275686875828d8985817d7a76716c6155493d3024170a0000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33262a36414c56697683909ca9b6c3c5b8ab9e92857d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6e6154483b2e21150800000000000008131e28323a414956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c7077838989898989898989898989898989898989898990959fabb8c4c0b4a79c918c898989898989898989898989898989898989898174675b4e4134281b0e010000000000000c18232e39424a5153595959595959595959595959595965727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d70635959595959595959595959595959575550483e33281c0e050000000000000714212e3a4754616d7a8797a1ada6998c807d8a96a3b0bdcac0baaea39891847a6e717e8384848484848485919eabb8c4b8ab9e918484848484848484848485929fabb8c4b7aa9d9184848484848484837b6e6154483b2e21150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424f59616e7b86929fa8b2bdcad6cabeb3a99f92877b6e6c7883909da6b0bec7cfc1b8aba0958b7e71675d51453b31251a0b02000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303a4854606b7783909dabb5c0b4a79a8e81767676767676767676766e696a6f73787c807c6f626a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e82756864717e807c7974716d6864615a5045392d2115080000000000000000000005121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f33262530414e5b6774818e9aa7b4c1c6b9ac9f93867a7070707070707070707070707070707070707070707070706e695e53463a2d211407000000000000020c162028303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c706f7c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d83909daab6c3bfb2a5988c7f7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c6e6255483b2f22150800000000000006111b242d30394044464c4c4c4c4c4c4c4c4c4c4c4c4c5865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063574c4c4c4c4c4c4c4c4c4c4c4c4c4a49443e36302920170c020000000000091623303c4956636f7c8996a9b3aa978a7d7d8a96a3b0bdc9cbbfb4aaa196908278727f8c9090909090909197a1adb9beb9ada196919090909090909090909297a2adbabeb8aca09691909090909090887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606b75818e98a2aebac3ced3c6baada2978d80746965707d89949facb6c0ccc8bcb1a79e9184796d60574d42362a1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2c38434f5965727f8c99a3afbbb8ab9f9285796d6969696969696969615f6062656c6f746f6a5f6a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e827568616c71736f6c6664605d565550483e34281d1105000000000000000105090b121e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332626323f4c5965727f8c98a5b2bfc7bbafa499887c6f6363636363636363636363636363636363636363636363615e574d42362a1e120500000000000000040e1623303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c706a6f70707070707070707070707070707070707076828f9ca9b5c0bcb0a396897d707070707070707070707070707070707070706e6a5f53473a2e2114080000000000010c17222d363f45494b50505050505050505050505050505865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063575050505050505050505050505050504746413a32291e130800000000000c1825323f4b5865727e8b98a5aea398887b7d8a96a3b0bdc9d1c6bcb2a89f948d80747f8c999d9d9d9d9d9ea1a9b3b2b2b2b2a8a19e9d9d9d9d9d9d9d9d9d9fa2a9b3b2b2b2b2a8a09d9d9d9d9d9d94887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222b3844505c666f7d89939eaab4bfccd5c9bdb2a89f92857a6d61606b76828f9aa4afbbc6cdc3b9ada1978c8073695e53463d2f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b27323d4754616e7b86929facb9baada2978a7d7064555c5c5c5c5c5c555354535b606267625f586a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275685a61646662605b5454524d49453e362c22170c00000000000000060c111517181e2b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f332624303d4a5763707d8a96aab4bfcac0b5ab978a7e71645756565656565656565656565656565656565656565654534d453b31251a0e020000000000000000091623303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c70636263636363636363636363636363636363636976828f9ca9b4b4b4b0a396897d70636363636363636363636363636363636363625f584e43372b1f1206000000000005111d29343f485056585d5d5d5d5d5d5d5d5d5d5d5d5d5d5d65727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d70635d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d54524c443a3025190d01000000010e1a2734414d5a6774808d9aa7ac9f9286797d8a96a3b0bdc9d2ccc4bab0a69d928a7e7f8c99a5aaaaaaaaaba9a6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5aaacaaaaaaaaaaa194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202935414c56606d7883909da5afbcc5d0d2c5b9aca1968c7f72685e59626f7c87939faab4bfcbc9beb2a99f92867b6e61584e41382d22170b010000000000000000000000000000000000000000000000000000000000000000000000000000000a16202d3946525e6876828f9cabb5beb3a99b8e8175675d514f4f4f4f4f484d575e616161616161616a7784919daab7b6a99c8f83766a7783909daab6b5a89b8e8275686161616161616161615e574d42362a241b10060000000000000911171d212425292b3845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f3329222e3b4854616e7b8798a2aebac6bfb3a6998c807366594d49494949494949494949494949494949494949494846423b33291f1409000000000000000000091623303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c706356565656565656565656565656565656565c6976828f9ca7a7a7a7a7a396897d7063565656565656565656565656565656565655534e463c31261a170d03000000000915212d3945505a626569696969696969696969696969696969727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d706969696969696969696969696969696969615e564c41362a1d110500000005111e2a36414c566976838f9ca9aa9d9083777d8a96a3b0bdd0c7c0bbb9bbaea49f9286818e9ba7b4b7b7aea49d9a989898989898989898989898989898989898989898989898989ea0a8b2b7b7aea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d1b26323946525e68727f8b95a0acb7c1ced4c8bcb1a79e9184796d6056535f6a75818e98a3aebac5cfc4baaea2988e81756a6053493f33271d12070000000000000000000000000000000000000000000000000000000000000000000000000000070f161e2a36414d5664717e8b99a3aebbb8ac9f92867a6d6053474343434346535e696e6e6e6e6e6e6e6e7784919daab7b6a99c8f83766e7783909daab6b5a89b8e82756e6e6e6e6e6e6e6e6e6e695e52463a2d20140700000000000009121b22292e313236363845515e6b7884919eabb7c4bfb2a5998c7f7266594c3f36362f2d394653606c7985929facb8c5c1b5a89b8e827568544a3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3b3a36312921170d03000000000000000000091623303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c7063564a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4f5c6976828f9a9a9a9a9a9a9a96897d7063564a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4847433c3e3931291f150b000000000b1724303d4956626c7176767676767676767676767676767676767f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7676767676767676767676767676767676766d685e5246392d2013070000000714202d3946525e687885929eaba79b8e81747d8a96a3b0bdc7beb6afacafb6aea298928e939da9b6c3b5a99d928d8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9196a0acb9bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2b37434e58616d7a85929ea7b1bcc9d3cfc6b8ab9f958a7e71675c514e58616e7b86929fa9b3becacabfb4aa9e93897c6f655b5044392f24180c0200000000000000000000000000000000000000000000000000000000000000000000000007101920272b303b4754606d7a86929facb9baaea2988a7e7164544a3f34363b4854616e7b7b7b7b7b7b7b7b7b84919eaab7b6a99c90827b7b7b83909daab7b5a89c8f827b7b7b7b7b7b7b7b7b7b7b6e6154473b2e211408000000000006111b242d343a3d3e43434345515e6b7884919eabb7c4bfb2a5998c7f7266594c4343433c3a3744505b657783909daab6c3c3b7aa9d908477665c5044383030303030303030303030303030303030302e2d2a251f1c161008000000000000000000091623303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c706356535353535353535353535353535353535c6976828d8d8d8d8d8d8d8d8d897d706356535353535353535353535353535353535353504f4a433b31271c11050000000b1825323e4b5865717e838383838383838383838383838383838384919eaab7c4c2b6a99c8f8376695c5043505d6a7683909da9b6c3c4b7aa9d91838383838383838383838383838383838383827a6d6154473a2e2114070000000814212e3b4754616e7a8797a1ada5988c7f727d8a96a3b0bdc0b6aca49fa4acb3aaa29f9b9da5afbac0b3a69a8d807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f84919eaab7bbaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a47535f6a74818d97a2adb9c3cdd1c6bdafa59d9083766c61554b46535e6973808d97a2adbac4cfc6bcafa59d9083786c60554b4035291f14090000000000000000000000000000000000000000000000000000000000000000000000040f19222b32373b3c45525d6876828f9ca9b5bfb4aa9b8e8275665c50443d3d46535f6c798787878787878787879196a0acb9b7ab9f94908787879095a0acb8b7aa9e948f8787878787878787878784776b5e5144382b1e1105000000010c17222d363f454a4b50505050515e6b7884919eabb7c4bfb2a5998c7f726659505050504847433f49536875818e9ba8b4c1c5b9ac9f9286796d6053463a3131313131313131313131313131313131313131302f2c27211a11080000000000000000091623303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c70635f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f65727f818181818181818181817c6e625f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5b554d43392d22160a0000000d1a2633404d596673808c909090909090909090909090909090909196a0acb9c5c2b6a99c8f8376695c5043505d6a7683909da9b6c3c5b8aca095919090909090909090909090909090909090877b6e6154483b2e2115080000000a1723303d4a5663707d8996a9b3a996897d707d8a96a3b0bdbbafa49a939aa1a9b3aeaca7a9afb7c1bcafa296897c72727272727272727272727272727272727272727272727276838f9ca9b6bbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a43505a626f7c87939fa9b3becbcbcbbfb4ab9e93897c6f635a5043424d57616d7a85929fa8b2bdc9cec1b8ab9f958a7e71675d51453b3025190e04000000000000000000000000000000000000000000000000000000000000000000000a16202b343d4347494a4c5665727e8b98a7b1bcb8ab9f9285796d60534a4a4a4a535f6c798692949494949494949ea0a8b2bdbcb0a69f9c9494949da0a7b1bcbbb0a69e9c9494949494949494949184776b5e5144382b1e110500000005111d29343f485056585c5c5c5c5c5e6b7884919eabb7c4bfb2a5998c7f72665c5c5c5c5c55534e464c5966737f8c99a6b2bfc7baaea399887b6e6255483d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3c38332c231a100500000000000000091623303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897c706c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d72747474747474747474746e6a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a665f554a3e32261a0e0000000d1a2633404d596673808c999c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ea0a8b2bdc9c2b6a99c8f8376695c5043505d6a7683909da9b6c3c8bcb1a7a09d9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c94877b6e6154483b2e2115080000000c1926323f4c5965727f8c98a5ada197877a707d8a96a3b0bdb9ac9f93869297a1aba49f9da0a7b1bcbdb0a4978a7e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b83909da9b6bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b55616c76839099a4afbbbfbfbfbfbaaea3998e81756b6054483e3b46525d68727f8c96a1adb9bfbfbfbcb1a79e9184796d60564d42362a20150a000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e5456565656616e7b8795a0acb8baada297897c6f635656565656565f6c7986929fa1a1a1a1a1a1aaacb2bac4c2b8b0aba9a1a1a1aaacb1b9c3c1b8b0aaa8a1a1a1a1a1a1a1a19e9184776b5e5144382b1e11050000000915212e3a45505a62656969696969696b7884919eabb7c4bfb2a5998c7f72696969696969625f584e4a5764717d8a97abb5c0cbbfb4ab978a7d7064574a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a48443d352c21160b00000000000000091623303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bebcafa396897d797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797771665b4f4236291d100000000d1a2633404d596673808c99a6a9a9a9a9a9a9a9a9a9a9a9a9a9a9aaacb2bac4cec2b6a99c8f8376695c5043505d6a7683909da9b6c3cec3b9b1acaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a194877b6e6154483b2e2115080000000f1b2835424e5b6875818e9b9fa39e918578707d8a96a3b0bdb4a79a8e81859299a29a939095a0acb8beb2a69a908a8787878787878787878787878787878787878787878787878790959fabb8bbaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d67717e8a949fabb5b2b2b2b2b2b3a99f92867b6e61594f433635414c56606d7984919ea7b1b2b2b2b2b2ada1968c7f73695e52463c32271b0f03000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58606263636363697784909daab7beb3a9998d807366636363636363626c7986929facaeaeaeaeaeb7b9bdc4cccbc2bcb7b6aeaeaeb7b8bcc3cbcac1bbb7b5aeaeaeaeaeaeaeaa9e9184776b5e5144382b1e11050000000b1724313d4a56626c71767676767676767884919eabb7c4bfb2a5998c7f767676767676766f6a5f575757626f7b8899a3afbbc7bfb2a5998c7f7266595757575757575757575757575757575757575757575756554f473d33271c1004000000000000091623303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bec6b9ac9f93878686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868683776a5d5044372a1d110000000d1a2633404d596673808c99a6b3b6b6b6b6b6b6b6b6b6b6b6b6b6b7b9bdc4cccfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0cbc3bcb8b7b6b6b6b6b6b6b6b6b6b6b6b6b6b6aea194877b6e6154483b2e211508000000111e2a3744515d6a77838c8f92999b8f8276707d8a96a3b0bdb3a6998c807d879398928783909daab7c3b7aca29a97949494949494949494949494949494949494949494949494949d9fa7b1bcbbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d57606d7984919ea6a5a5a5a5a5a5a5a5a2978d8073695f53473d32303a45515c67717e8b95a0a5a5a5a5a5a5a5a89f92867b6e61584e43372b1f130600000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a6f707070707073808d9aa6b3c0b6aa9d908377707070707070706f6a7986929facb9babababac4c5c9ced6d4cdc7c4c3bababac3c5c8ced5d3ccc7c3c2babababababab7aa9e9184776b5e5144382b1e11050000000b1825323e4b5865717e828383838383838286929facb8c5c4b7aa9e9184828383838383827c6f62646464646d7986929facb9c5c1b4a79b8e81746864646464646464646464646464646464646464646464646361594f44382c201407000000000000091623303c4956636f7c8996a2afada093877a6d73808c99a6b3afa296897c6f7784919eaab6a99c8f837669727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bec7bbafa499939292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929084776a5d5144372a1e110000000d1a2633404d596673808c99a6b3bfc3c3c3c3c3c3c3c3c3c3c3c3c4c5c9ced6cfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0d5cec8c5c4c3c3c3c3c3c3c3c3c3c3c3c3c3baaea194877b6e6154483b2e2115080000000815222f3b4855626e7c7f83868a8e8d8073707d8a96a3b0bdb3a6998c80737f8c91867d7f8c99a5b2bfbdb4aca6a4a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a9abb1b9c2bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6973808d97989898989898989898989892857a6d60574d42342b2934404b55606c78839098989898989898989898988e81746a6054473b2e22150800000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c7d7d7d7d7d7d808c99a6b3bfb9ac9f93887e7d7d7d7d7d7d7d7c6f7986929facb9bababcc6c8ccd2d5cec8c5c4bdbababababac5c6cacfd7d7d3d0ccc7c3c2bababab7aa9e9184776b5e5144382b1e11050000000d1a2733404d5a6673808d8f8f8f8f8f8f8f9298a3aebac7c5b9aca096918f8f8f8f8f8f897c6f6f70707070707784919daab7c4c3b6a99d908376707070707070707070707070707070707070707070707070706b6155483c2f231609000000000000091623303c4956636f7c8996a2afada093877a7173808c99a6b3afa296897c6f7784919eaab6a99c8f837671727f8c99a5b2aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2beccc0b5aba49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9084776a5d5144372a1e110000000d1a2633404d596673808c99a6b3b8b8b8b8b8b8b8b8b8b8b8b8b8b8babec5cecfc2b6a99c8f8376695c5043505d6a7683909da9b6c3d0cdc5bebab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8aea194877b6e6154483b2e2115080000000814212e3a47535f6a6e72767a7d81857e71707d8a96a3b0bdb3a6998c80737782847c727f8c99a5b2bfbfb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3abb5c0bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b868c8c8c8c8c8c8c8c8c8c8c8c8c8b7f72685d52453b3122232f3944505b66707d8a8c8c8c8c8c8c8c8c8c8c8c8c877c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000003101d2a3643505d6976838989898989898c929ca8b4c1bbafa49a938a8989898989898981757986929facadadadafb9bbc0c7ccc3bdb8b7b0adadadadaeb8b9bec5cdd7d3cac1bbb7b5adadadadaa9e9184776b5e5144382b1e11050000000d1a2733404d5a6673808d999c9c9c9c9c9c9fa3aab4bfcbc8bdb2a8a09e9c9c9c9c9c96897c6f7c7d7d7d7d7d7d83909daab6c3c5b8ac9f92867e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7063564a3d3023170a000000000000091623303c4956636f7c8996a2afb1a5988b7f7e7e818f9ba8b5afa296897c6f7784919eaab7aa9d91847e7e7e818e9ba8b5aea194887b6e707d8a96a3b0afa295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bed2c7bdb5afacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaa9d9084776a5d5144372a1e110000000d1a2633404d596673808c99a6abababababababababababababababaeb4bcc5d0c2b6a99c8f8376695c5043505d6a7683909da9b6c3d0c5bbb3adababababababababababababababababa194877b6e6154483b2e21150800000006121e2b37424e575f6265686d717479796d707d8a96a3b0bdb3a6998c80736d7a7a6f727f8c99a5b2bfbaaea29892929292929292929292929292929292929292929292929292929299a3afbbbbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f786d60564c4133291f1d28333f4a54616b717e7f7f7f7f7f7f7f7f7f7f7f7f7f7d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909696969696999ca4adb9c4c0b6aca49f979696969696968e81757986929fa0a0a0a0a3acafb6bec3bab2acaaa3a0a0a0a0a1abadb3bbc5cfccc1b8b0aaa8a0a0a0a0a09e9184776b5e5144382b1e11050000000d1a2733404d5a6673808d99a6a9a9a9a9a9acaeb4bcc6d0cec3bab2acaaa9a9a9a9a296897c74808a8a8a8a8a8a9095a0abb8c4c6baaea298928a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a85786b5e5245382b1f12000000000000091623303c4956636f7c8996a2afb3a79b918b8b8b8f939eaab6afa296897c6f7784919eaab7aca096918b8b8b8e939eaab6aea194887b6e707d8a96a3a6a6a295887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2becbd0c7c0bbb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b7aa9d9084776a5d5144372a1e110000000d1a2633404d596673808c999e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2aab4becac2b6a99c8f8376695c5043505d6a7683909da9b6c3cabeb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e94877b6e6154483b2e211508000000020e1a26313c454e5355565d6064666c6d66707d8a96a3b0bdb3a6998c8073686d6d68727f8c99a5b2bfb8ac9f92868585858585858585858585858585858585858585858585858587929facb9bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3b4854606b707272727272727272727272727272726d665c51443a30211817222d38424f59626d7172727272727272727272727272706b6054483c2f2216090000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca3a3a3a3a6a8adb6bfcac7beb6afaca3a3a3a3a3a39b8e81757986929494949494969fa4acb6bdb2a8a09e9794949494949ea2a9b3becac7bbb0a69e9c9494949494949184776b5e5144382b1e11050000000d1a2733404d5a6673808d99a6b3b6b6b6b6b8babfc6ced8d5ccc3bdb9b7b6b6b6afa296897c74808d97979797979da0a7b1bcc8cabfb4aaa29f9797979797979797979797979797979797979797979797979185786b5e5245382b1f12000000000000091623303c4956636f7c8996a2afb8ada39b9897979b9ea5afbbafa296897c6f7784919eaab7b2a8a09d9797979b9ea5afbaaea194887b6e707d8a969999999995887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2bec3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c5c5c5c5c5c5c5c5c5c5c5c5c5c4c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b7aa9d9084776a5d5144372a1e110000000d1a2633404d596673808c919191919191919191919191919191919298a2aebac6c2b6a99c8f8376695c5043505d6a7683909da9b6c3c6baada297929191919191919191919191919191919191877b6e6154483b2e211508000000000915202a333c4247484c5254545b606063707d8a96a3b0bdb3a6998c807366616166727f8c99a5b2bcafa296897d78787878787878787878787878787878787878787878787878828f9ca9b6bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f596063656565656565656565656565656565605c544a4032281e0f111c262f3e47505a6265656565656565656565656565656360594f44382c2014070000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca9b0b0b0b3b4b9bfc8d1d0c7c0bbb9b0b0b0b0b0a89b8e8175798787878787878789939aa4afb8aca096918a87878787879297a2adb9c4c3b7aa9e948f8787878787878784776b5e5144382b1e11050000000d1a2733404d5a6673808d99a6b3c0c2c2c2c5c7cbd0cccccccccec8c5c4c2c2bcafa296897c74808d9aa3a3a3a3aaabb1b9c3cdd0c5bcb4aeaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39e9185786b5e5245382b1f12000000000000091623303c4956636f7c8996a2afbcb5ada7a5a4a4a8aaafb8bcafa296897c6f7784919eaab7bab2acaaa4a4a4a8aaafb7bbaea194887b6e707d8a8d8d8d8d8d8d887c6f74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5b2b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b9babfc6cfd2d2d2d2ccc4bdb9b7b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6aa9d9084776a5d5144372a1e110000000c1926323f4c5965727f858585858585858585858585858585858586929fabb8c5c2b6a99c8f8376695c5043505d6a7683909da9b6c3c5b8ab9f92858585858585858585858585858585858585857b6e6154473b2e21140800000000030e18212a31373a3b4145474a50535763707d8a96a3b0bdb3a6998c807366595966727f8c99a5b2bcafa296897c75757575757575757575757575757575757575757575757576838f9ca9b6bbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323d474f545659595959595959595959595959595953514a42392e20160c0a141d2c353f485056585959595959595959595959595956544f473d33271c10040000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca9b6bcbcbfc1c4cacacacad2ccc8c6bdbcbcbcb4a89b8e8175757a7a7a7a7a7a7a7d86939facb7aa9e91847d7a7a7a7a7b85929ea8b2bdc2b5a89c8f827a7a7a7a7a7a7a7a6d6054473a2d211407000000000d1a2733404d5a6673808d99a6b3bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbcafa296897c74808d9aa7b0b0b0b6b8bcc3cbd5d7cec5bfbab8b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ab9e9185786b5e5245382b1f12000000000000091623303c4956636f7c8996a2afbcbeb8b3b1b1b1b5b6bbc1bcafa296897c6f7784919eaab7c3bdb8b7b1b1b1b5b6bac1bbaea194887b6e6e7c80808080808080807a6e74808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b98a5a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9acaeb4bdc6d1dcdacfc4bab2adaba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99d9084776a5d5144372a1e110000000b1825313e4a57626d7278787878787878787878787878787878787f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7878787878787878787878787878787878786e685e5246392d2014070000000000060f1820262b2e2f35393a3f444a5763707d8a96a3b0bdb3a6998c807366595966727f8c99a5b2bfb5a99c8f828181818181818181818181818181818181818181818181818185929eabb8bbaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353d4448494c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4644403930271c0e04020b1a232d363f454a4b4c4c4c4c4c4c4c4c4c4c4c4c4c4a48443d352b21160b000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca9b6bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb4a89b8e8175686d6d6d6d6d6d76828f9aa4afb8aca096918a81746d6d727f8c96a1adb9c3b7aa9e94897c6f6d6d6d6d6d6d685d5245392c201307000000000d1a2733404d5a6673808d99a6b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3afa296897c74808d9aa7b3bdbdc3c4c8cdd2d2d2d2d0cac6c5bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb8ab9e9185786b5e5245382b1f12000000000000091623303c4956636f7c8996a2afbcc2c2c2bebebec2c2c2c2bcafa296897c6f7784919eaab7c2c2c2c2bebebec1c2c2c2bbaea194887b6e6a6e73737373737373736e6874808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b989d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb4bfcbd7d5c9bdb2a8a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9084776a5d5144372a1e110000000916222e3a46515b62656b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d706b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b615e564d41362a1e1105000000000000060e151a1e2124292c2d333d4a5763707d8a96a3b0bdb3a6998c807366595966727f8c99a5b2bfb7ab9f948f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9297a1adb9bbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232b32383b3d3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a38342e271e150b000008111b242d343a3d3e3f3f3f3f3f3f3f3f3f3f3f3f3f3d3c38332b231a0f05000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca9b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a89b8e8175686161616167717e8a949facb6bdb2a8a0968c7f7265616d7984919ea7b1bcbbb0a69d9083786c61616161605d564c4135291d1104000000000d1a2733404d5a6673808d99a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a296897c74808d9aa7b3c0c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c4b8ab9e9185786b5e5245382b1f12000000000000091623303c4956636f7c8996a2afb5b5b5b5b5b5b5b5b5b5b5b5afa296897c6f7784919eaab5b5b5b5b5b5b5b5b5b5b5b5b5aea194887b6e61626666666666666666616774808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000c1925323f4c5865727f8b909090909090909090909090909090909090909090909090909090909299a3aebac7d3d2c5b9ada19691909090909090909090909090909090909090909090909083776a5d5144372a1e1100000006121e29353f495157595e5e5e5e5e5e5e5e5e5e5e5e5e5e5e65727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d70635e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e54524d443b3025190e020000000000000003090e1214191d2022303d4a5763707d8a96a3b0bdb3a6998c807366595966727f8c99a5b2babbb0a69f9c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea1a9b3bebaaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111921272c2f303232323232323232323232323232322d2c28231c150c0300000009121b22292e313232323232323232323232323232302f2c27211a110800000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39b8e8175685b5458606d7984919ea6b0bebdb0a69e9184796d605c67717e8b95a0acb8c1b8ab9f958a7e71665c545454524c443a3024190d01000000000d1a2733404d5a6673808d99999999999999999999999999999999999999999999999996897c74808d9aa7b3b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ab9e9185786b5e5245382b1f12000000000000091623303c4956636f7c8996a2a8a8a8a8a8a8a8a8a8a8a8a8a8a8a296897c6f7784919ea8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a194887b6e61555a5a5a5a5a5a5a5a5a6774808d9aa7b3b2a6998c7f7366594c403326190d0000000000000000000000000b1724313e4a5764717e838383838383838383838383838383838383838383838383838383838387929facb9c5d2c7bcb1a79e918483838383838383838383838383838383838383838383838174685b4e4135281b0e000000010d18232d373f464a4c52525252525252525252525252525865727f8b98a5b2bec2b6a99c8f8376695c5043505d6a7683909da9b6c3bdb0a3968a7d7063575252525252525252525252525252524746413b32291f1408000000000000000000000206080d111724303d4a5763707d8a96a3b0bdb3a6998c807366595966727f8c99a5adadadadb0aba9a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8abadb3adadadada194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b202223262626262626262626262626262626201f1c18120b0300000000000911181d212425262626262626262626262626262322201c160f080000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d6976839097979797979797979797979797979797979797979797978e8175685b545f6a73808d96a1adb8c0b5ab9f948a7e71675c55606c7883909da6b0bcbcb1a79e9184796d60554b4745413a32281e130800000000000d1a2733404d5a6673808c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c897c74808d9aa7abababababababababababababababababababababababababababababababababababababab9e9185786b5e5245382b1f12000000000000091623303c4956636f7c89969b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b96897c6f7784919b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b94887b6e61554d4d4d4d4d4d4d4d5a6774808d9aa7a8a8a6998c7f7366594c403326190d0000000000000000000000000a1723303c4955616c71767676767676767676767676767676767676767676767676767676767b86939facb9c6cdc4b8ab9f95897c7676767676767676767676767676767676767676767676746f65594d4034271a0e0000000007111b252d353a3e3f454545454545454545454545454c5865727f8b98a5b2b9b9b6a99c8f8376695c5043505d6a7683909da9b6c0bdb0a3968a7d7063574a45454545454545454545454545453b3936302920170d0200000000000000000000000000010a1724303d4a5763707d8a96a3b0b2b2a6998c807366595966727f8c99a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b101316161919191919191919191919191919191312100c070000000000000000060c1115171819191919191919191919191919171614100b05000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d6976838a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8175685b5c666f7c87929fa8b2bdbbafa3998f82766c6155505b66707d8a949fabb7c2b9aca1968b7f72675c51453935302820160c0200000000000a1723303d4a5663707d8080808080808080808080808080808080808080808080808080807b74808d9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9e9185786b5e5245382b1f12000000000000091623303c4956636f7c898f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f897c6f77848f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f887b6e6155484040404040414d5a6774808d9a9b9b9b9b998c7f7366594c403326190d0000000000000000000000000814212d3945505a61646a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6773808d9aa4afbbbfc0beb2a99d9083766a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a68655d53483c3024180c00000000000a131b23292e31323838383838383838383838383f4c5865727f8b98a5acacacaca99c8f8376695c5043505d6a7683909da9b3b3b3b0a3968a7d7063574a3d383838383838383838383838382e2d2a251f170e050000000000000000000000000000000a1724303d4a5763707d8a96a3a5a5a5a5998c807366595966727f8c94949494949494949494949494949494949494949494949494949494949494949494949494949494949494887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c07060400000000000000000000000105090b0b0c0c0c0c0c0c0c0c0c0c0c0c0c0a0907040000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c6f6255606d78839099a3afb8bcb2a89f92877c6f625a504a54616b7683909ca7b1bcb9b2a89e9184796d6053473a2d241e160e040000000000000916222f3c4854606b707373737373737373737373737373737373737373737373737373736e74808d92929292929292929292929292929292929292929292929292929292929292929292929292929292929185786b5e5245382b1f120000000000000815222f3b4855626e7c82828282828282828282828282828282828282827c6e748082828282828282828282828282828282828282827a6e6154473b33333334414d5a6774808d8e8e8e8e8e8e8c7f7366594c403326190d00000000000000000000000004111c28333e485055575d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d54606d7985929eacb6b1b2b3b5ada1978a7e7164585d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b59534b41372c2014080000000000010a11181e2225262b2b2b2b2b2b2b2b2b2b2b323f4c5865727f8b989f9f9f9f9f9f9c8f8376695c5043505d6a7683909da6a6a6a6a6a3968a7d7063574a3d302b2b2b2b2b2b2b2b2b2b2b2b21201e19140d05000000000000000000000000000000000a1724303d4a5763707d8a969898989898988c807366595966727f8787878787878787878787878787878787878787878787878787878787878787878787878787878787878787877b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b6f707070707070707070707070707070707070707070707070706f6a605865727f8b92989ea5acb1aca1968d80736a5f5348424f5963707d8a95a0acb2aca9a19e968b7f7265584c3f3225190c04000000000000000714202c38444f5960636666666666666666666666666666666666666666666666666666666673808585858585858585858585858585858585858585858585858585858585858585858585858585858585858584776a5e5144372b1e110000000000000814212e3a47535f6a6e75757575757575757575757575757575757575756e6a6e7475757575757575757575757575757575757575756e685e5246392d2727313e4b5864717e81828282828282817e7064574a3d3124170a000000000000000000000000000c17222c363e45494a5050505050505050505050505050505050505050505050505c66727e8b97a1a9a3a4a5a7a8aa9e9184796d60535050505050505050505050505050505050505050504e4d4841392f251a0f0400000000000000070d121618191f1f1f1f1f1f1f1f1f1f25323f4c5865727f8b92929292929292928f8376695c5043505d6a76839099999999999999968a7d7063574a3d30241f1f1f1f1f1f1f1f1f1f1f1414110e080200000000000000000000000000000000000a1724303d4a5763707d8a8b8b8b8b8b8b8b8b8073665953606d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060708090a0a0b0c0c0c0d0d0d0d0e0e0d0d0d0d0d0c0c0b0a0a09080706040100000000000000000000000000000000000000000000000000000000000007131f2c38444f5960636464646464646464646464646464646464646464646464646462605853606d7980868e939da0a7a59e9184796d60584e433e4653606c7883909da8a8a09e96918c857f7265584c3f3225190c000000000000000004101c27333d474f5456595959595959595959595959595959595959595959595959595959636e73787878787878787878787878787878787878787878787878787878787878787878787878787878787878787772675b4f43362a1d1000000000000006121f2b37434e585f626868686868686868686868686868686868686868625f64676868686868686868686868686868686868686868615e564c41362a1e24303d4956616c717575757575757575706c6155493c3023160a0000000000000000000000000005101a242c33393c3e434343434343434343434343434343434343434343434653606d7984909297949697999a9b9d988c7f72665c5144434343434343434343434343434343434343434341403c372f271d13090000000000000000000106090b0c1212121212121212121925323f4c5865727f868686868686868686868275695c4f43505d6a76838d8d8d8d8d8d8d8d8d8a7d7063574a3d3024171212121212121212121208070502000000000000000000000000000000000000000815222e3b4855616e7b7f7f7f7f7f7f7f7f7f7c6f6256515d676d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607060b0f12131415161717181819191a1a1a1a1a1a1a1a1a1a19191818171616151413100d070b08070502000000000000000000000000000000000000000000000000030f1b27323d474f54565757575757575757575757575757575757575757575757575755544e515d676d737b818990959e9e938a7d70675d51463c3744505b65717e8b96a09d96918b847f79726d62564a3e3124180b0000000000000000000b16212b353d44484a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d525c63666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a6760564b3f33271b0e000000000000020f1a26313c464e53555c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5553585a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c54524c443b302519212d3945505a6164686868686868686864615a5044392d201408000000000000000000000000000008121a22282d30313737373737373737373737373737373737373737373b4855626e7c8284858688898a8c8d8f9091867a6d60544a4034373737373737373737373737373737373737373534302c251d150b01000000000000000000000000000005050505050505050b1824313e4a56626d72797979797979797979797570655a4e3f4b5865727f808080808080808080807c6e6255483b2f22150805050505050505050500000000000000000000000000000000000000000000000714212d3a46535f696e7272727272727272726f6a60544b555d60616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161605b544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10131317171b1f2021222323242525262626272727272727272726262625252423222120201d181a181514120e090300000000000000000000000000000000000000000000000a16212b353d4448494a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4947434b555d60696e757d838b92978e81756b61554b4034333f4953606d79849195908a847e79726d67625b51463a2e221509000000000000000000050f1a232b33383c3d40404040404040404040404040404040404040404040404040404a52585a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5b564e44392e23170b000000000000000915202a333c4347484f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f48474c4e4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4746413b32291e141d28343e485056585b5b5b5b5b5b5b5b575550483e33281c10040000000000000000000000000000000810171c2123242a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2e3a47535f6a6e7677787a7b7c7e7f808283848073685d5242392e232a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a282724201a130b0300000000000000000000000000000000000000000000000915222e3a46515b62656c6c6c6c6c6c6c6c6c6c69655e54493d4a56626d72737373737373737373736e6a5f53473a2e211408000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575f616565656565656565656260584e434b515354545454545454545454545454545454545454545454545454545454545454545454545454545454545454545453504a42382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d12181c1f202322272b2d2d2e2f303131323233333334343434343433333332323131302f2e2d2c2924272521211e1a14100c06000000000000000000000000000000000000000000040f19232b32383b3c3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3c3b39434b51575e616b70787e858d857a6d61594f43392f2d3844505c66727f8b8a837e78716d67605d5551493f34291e12060000000000000000000008111a21272c2f30333333333333333333333333333333333333333333333333333840474b4d52525252525252525252525252525252525252525252525252525252525252525252525252525252525252514f4b443b32281d120600000000000000030e18212a31373a3b42424242424242424242424242424242424242423b3a404142424242424242424242424242424242424242423b3936302920170d17222d363e45494b4f4f4f4f4f4f4f4f4a49443e362c22170b0000000000000000000000000000000000050c111417171d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1f2b37434e585f62696a676d6e70717274757678736e64564c4130271c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1a18140f090100000000000000000000000000000000000000000000000006121e29343f495156585f5f5f5f5f5f5f5f5f5f5c5a544c423a46515b626566666666666666666666625f574e42372b1e12060000000000000000000000000000000000000000000000000000000000000000020e1a26313b454d535558585858585858585856544e463d40454747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474746443f382f261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d23282c2d302d3337393a3b3c3d3d3e3f3f3f40404040414140404040403f3f3e3d3d3c3b3a39352f34312e2d2a251f1c17110a03000000000000000000000000000000000000000007111921272c2f30313131313131313131313131313131313131313131313131312f2e313940454d535960666d727a807e71685e52473e312828343f4a54606d79827d78716d66605c55514b433f372d23180d010000000000000000000000080f161c202223262626262626262626262626262626262626262626262626262e353b3f404545454545454545454545454545454545454545454545454545454545454545454545454545454545454544433f39322920160b000000000000000000060f1820262b2e2f35353535353535353535353535353535353535352f2e333435353535353535353535353535353535353535352e2d2a251e170e05101b242d34393d3e42424242424242423d3c39332c241a10050000000000000000000000000000000000000004080a0b1010101010101010101010101010101010100f1a26313c464e53555c555d606163646667686a6b67645c52443a2f1e150b10101010101010101010101010101010100e0e0c08040000000000000000000000000000000000000000000000000000010d18232d373f464a4c535353535353535353534f4e49423a343f495156585a5a5a5a5a5a5a5a5a5a55534e453c31261a0e0200000000000000000000000000000000000000000000000000000000000000000009141f29333b4246484c4c4c4c4c4c4c4c4c4947433d3435383a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3938332d261d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d161e24292e34383a3d403f44464748494a4a4b4b4c4c4d4d4d4d4d4d4d4d4d4d4c4c4b4b4a49494847454043413e3b3a36312c28231c150c060000000000000000000000000000000000000000070f161b1f2223242424242424242424242424242424242424242424242424242222272f353b42464f545c60686d74716c61564c41352c1f232e3845515d676d75706c65605c54514b45403a312d251b110600000000000000000000000000050b101416171a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1c242a2f3233393939393939393939393939393939393939393939393939393939393939393939393939393939393939393736332e2820170e0400000000000000000000060e151a1f2122292929292929292929292929292929292929292922212727292929292929292929292929292929292929292921201e19140d050009121b22282d3031353535353535353531302d28221a11080000000000000000000000000000000000000000000000000404040404040404040404040404040404000915202a333c4347484f4b5153555657595a5c5d5e5a58524a4032281e0c030404040404040404040404040404040404020100000000000000000000000000000000000000000000000000000000000006111b252d343a3e3f4646464646464646464642413d37302d373f464a4b4d4d4d4d4d4d4d4d4d4d4847423c332a20150900000000000000000000000000000000000000000000000000000000000000000000030d17212931363a3b3f3f3f3f3f3f3f3f3f3c3b38322b292c2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2b28221c140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111920282f35394045464a4d495053545556565758585959595a5a5a5a5a5a5a5a59595958585756555453514b4f4d4b4846423b38342e261e180f060000000000000000000000000000000000000000040a0f1315161717171717171717171717171717171717171717171717171716151d242931363d424a50565d616764615a50443a30231a1c2935404b555d606963605b53504a454039352f281f1b1309000000000000000000000000000000000407090a0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d12191f2326272c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b2a27231d160e0500000000000000000000000003090f1214151c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c15141a1b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1414110e08020000000910171d21242528282828282828282423201c17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212a31373a3b4340454748494b4c4d4f50524d4c4740382e20160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b23292e3132393939393939393939393635312c26252d343a3d3f404040404040404040403b3a37312a21180e030000000000000000000000000000000000000000000000000000000000000000000000060f171f262a2d2e3232323232323232322f2e2b27201d1f20212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121201f1c17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232b323a41454b5153565a535b60606162636464656566666667676767676766666665656464636261605d555c5a5854534d46443f38302a21180f06000000000000000000000000000000000000000000030709090a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a090b12181f252a30383f444c52545a575550483e32281e1118242f39434b51535c57535049443f38342e29241d160d09010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e1317191a1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1d1b17120b04000000000000000000000000000000020608080f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f08080d0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f08070502000000000000060c111517181c1c1c1c1c1c1c1c171614100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f2f35393a3b3d3e3f41424345403f3b362e261c0d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e2224252c2c2c2c2c2c2c2c2c2c292825211b1b23292e3132333333333333333333332f2e2b2620180f0600000000000000000000000000000000000000000000000000000000000000000000000000060d141a1e212225252525252525252523221f1b1610131414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141413120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1a232c353d444c52545c60636769656c6d6e6f707071727272737373737474737373737372727170706f6e6d676a696764615e5753504a423c332a21180b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c141a1e262e343a4146474d4a49443e362c20160c121d2731394045474f4a46443f38342e28231d18130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d1212121212121212121212121212121212121212121212121212121212121212121212121212121212121211100e0b06000000000000000000000000000000000000000000020202020202020202020202020202020202020200000101020202020202020202020202020202020202020200000000000000000000000005080a0b0f0f0f0f0f0f0f0f0a0a0804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f212224292c2d2e303133343537383433302b241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d12151819202020202020202020201c1b19151011181d2224252727272727272727272722211e1a150e0600000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151919191919191919191615130f0a0406070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070606030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17202c353e474f565d60666d70737677797a7b7c7d7d7e7e7f7f808080808080808080807f7f7e7e7d7c7c7b7a79777674716e6965605c544d453c332a1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090c141c23283035393a413e3c39332c241a0e040b151f272f35383a423d3937332d28231c18120d070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090f121415181d1f202223242627292a2b2726231f19120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c131313131313131313130f0f0d0904060c121518181a1a1a1a1a1a1a1a1a1a1514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080c0c0c0c0c0c0c0c0c0908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323e474f5960686d73797d80828486878889898a8b8b8c8c8c8d8d8d8d8d8d8d8d8c8c8c8b8b8a89888786858482807e7b77726d665f574d453c2f261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e24292d2e3431302d28221a120800030d151d24292c2d36302d2b27221b17110c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0b0b0a070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608070c101314151618191a1c1d1f1a1917130e080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606060606060606060302000000000106090b0c0d0d0d0d0d0d0d0d0d0d08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a444f59616b707a8085898d8f919299949596979798989999999a9a9a9a9a9a999999989897979695949892918f8d8b87837e786e695f574d42382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b13191d2021272423211c171008000000030b12181d1f202924201f1b17110b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205090e121415171818171413110d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a0b0c0e0f10120d0d0b07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080a0a0a070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c56616b707d858d92989a9c9e9fa3aba2a3a3a4a5a5a5a6a6a6a6a7a7a6a6a6a6a6a5a5a4a3a3a2aaa29f9d9c9a9795908b837b6e695f544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1113141a171614100b05000000000001070c1013141c1713120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090a090704000000000000000000000000000000000000000000000000000000000000000000000003090e12141a1e21212424242321201d19130f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001030400000406070708080809090909090909090909080808070706040000040301000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10141617161312100b060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e68707d8792979fa2aaa9aaacafb5afb0b0b1b1b2b2b3b3b3b3b3b3b3b3b3b3b2b2b1b1b0afafb4aeacaaa9a7a7a09d9590857b6e665b5044382b1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070e0b0a0804000000000000000000000406070f0a06050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131516171614100b050000000000000000000000000000000000000000000000000000000000000000070c141a1e21252a2d2e303131302e2d29241f1b17110a02000000000000000000000000000000000000000000000000000000000003060607070707070707070707070604000406070707070707070707070707060400000000000000000000000000000000000000000001060606060606060606060100000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0e1011070c1013141415151515161616161616161615151515141313100c07100f0e0d0b0906060300000000000000000000000000000000000000000000000000000000000000000000000000000000000810171c20232423201f1c1713100d07050200000000000000000000000000000000000000000000000000000000000000000000000000030606060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070808070504101c2934404b55616d7a859299a2a9aeb3b5b7b9bbc0bcbcbdbebebfbfbfc0c0c0c0c0c0c0c0bfbfbfbebebdbcbbbfbab8b7b5b3b1aca7a0979083786c6053463a3024190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f22232323201c160e090300000000000000000000000000000000000000000000000000000000030b12181f252a2d31363a3b3d3e3e3d3a3935302b27221b140b040000000000000000000000000000000000000000000000000000060b0f1213141414141414141414141313100c101313141414141414141414141313100c0700000000000000000000000000000002070b0d0d131313131313131313130e0d0b07030000000000000000000000000000000000000000000000000000000000000000000205090e121415181a1b1c1d1e181d1f20212222222222232323232323222222222121201f1c181e1d1c1b19181513120f0b06040000000000000000000000000000000000000000000000000000000000000000000000000008111a22282d3031302d2b2823201d1814120e0906030000000000000000000000000000000000000000000000000000000000000205060b0f1213120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141514120e131f2c3845515c6774818d97a1abb3babec2c4c5c7c7c5c3c2c1c0bfbebdbdbcbcbcbcbcbcbdbdbebfc0c1c2c3c4c5c6c5c4c2c0bcb8b1a9a0958a7e7164564c4135291d11040000000000000000000000000000000000000000000000000000000407090a0f0f0f0f0f0f0f0f0f0c0b0906010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070808080808080808080808080808080808080808080808080808080808080808080808080808080808080808070502000000000000000000000000000000000000000000000007101920272b2e2f302f2c27211a150c070100000000000000000000000000000000000000000000000000050c151d232831363a3b4246484a4b4b4a4746413a37332d261d160e040000000000000000000000000000000000000000000000020a11171c1f2020202020202020202020201f1c181c1f2020202020202020202020201f1c18120b03000000000000000000000001080e1317191a202020202020202020201a1a17130e0801000000000000000000000000000000000000000000000000000000000002090e12141a1e2121252628292a2b24292c2d2e2e2f2f2f2f2f303030302f2f2f2f2e2e2e2d2c28232a2a2928262422201f1c1713100c0700000000000000000000000000000000000000000000000000000000000000000000040d1a232c33393c3d3d3a38342e2c2924201e1a1312100b06050200000000000000000000000000000000000000000000000305090e1214171c1f201f1c17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e202121211e1a14202d3a4753606d7985929fa9b3bdc5cacec8c6bfbab8b7b6b4b3b2b1b0b0b0afafafafb0b0b0b1b2b3b4b5b6b7b9bbc0c7c8cdc8c3bbb1a79c8f8376685d5245392c20130700000000000000000000000000000000000000000000000000050b101416171b1b1b1b1b1b1b1b1b181815120d06000000000000000004060708080602000000000000000000020303040505050606050302000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151414110e08020000000000000000000000000000000000000000040f19222b32373b3c3d3c38332b261f18120b0300000000000002060a0c0d0c0706040100000000000000050e161e272e343b4246484d53545757575654524c46443f382f2820160e04000000000000000000000000000000000000000000020b141c22282b2d2d2d2d2d2d2d2d2d2d2d2d2c2823282c2d2d2d2d2d2d2d2d2d2d2d2d2c28231d150c03000000000000000000020a12191f2326272d2d2d2d2d2d2d2d2d2d2726231f19120b02000000000000000000000000000000000000000000000000000001070c141a1e20252a2d2e3133343637372f35393a3a3b3b3b3c3c3c3c3c3c3c3c3c3c3b3b3b3a3a38342e3737363433312f2d2b28221f1c18120b0300000000000000000000000000000000000000000000000000000000000000010c161f2c363e44494a4946443f3a39352f2d2a25201f1c1714120e090705020000000000000000000000000000000000060b0f12131a1e2022282b2d2b28221c140b080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e2e2d2a251f24313d4a5764707d8a97a2adbbc5cfccc3bcb8b4aeacaaa9a8a6a5a4a4a3a3a2a2a2a3a3a3a4a4a5a6a7a8a9aaacafb5b8bcc3cbcdc3b9ac9f92867a6d6054473a2d2114070000000000000000000000000000000000000000000000000810161c2023242828282828282828282524221d1811090100000000070c1013131514120e0903000002060a0c0c0e0f1011111212121211100e0b080705020000000000000000000000000000000000000000000000000000000000000002020202020202020202020202020202020200050d13191e20212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121201e19140d05000000000000000000000000000000000000000a16202b343d4347494a48443d373129241d150d0903000000070d12161919191413110d080100000000050e172028303940454d5354575e6163646463615d56535049413a322820160c0200000000000000000000000000000000000000000a141d262d3338393a3a3a3a3a3a3a3a3a3a3a38342e34383a3a3a3a3a3a3a3a3a3a3a3a38342e271e150b0b0b0b0b0b0b0b0b0b0b141c242b2f3334393939393939393939393433302b241d140b01000000000000000000000000000000000000000000000000030b12181f252a2d31363a3b3e4041434444454045474748484848494949494949494948484848474645404544434241403e3c3938332d2c28231d150c0600000000000000000000000000000000000000000000000000000000000007131d28313e485055575653504a4745403b3a36302d2b2823211e1a1514120e0908060300000000000000000001040a0f11171b1f20252a2d2d33383938332d261d1a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202930363a3b3b3a36312b2733404d5a6673808d99a9b3becdcec3b9b1acaaa39f9d9c9b9a9997979796969595969697979798999a9b9c9e9fa3abacb1b9c3cdc7bbafa3998a7d7064574a3d31241706000000000000000000000000000000000000000000000008111a21282c2f3035353535353535353532312e29231b13090000030b12181c1f2022211e1a150e06070d121618191b1c1d1e1e1f1f1f1f1e1d1b181414110e0802000000000000000000000000000000000000000000000000000004090c0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e171e252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2a251f170e050000000000000000000000000000000000020b1b27323d464e545656554f47423c352f271f1a140e08020a12191e2325262621201d19130e090300040d172029323a424b51575e6166696e707171706d6864605b534c443a32281e140a0000000000000000000000000000000000000006111c262f383f44464747474747474747474746454039404546474747474747474747474645403930271d18181818181818181818181c262e363b3f4046464646464646464646413f3c362f261d12080000000000000000000000000000000000000000000000060d151d242930363a3b4246484b4d4e4f5051524b515354555555555556565656565655555555545453514b5151504f4e4c4b4846443f3a38342e271e17110a02000000000000000000000000000000000000000000000100000000010d18242f3a43505a616463605c5453514b4846423c3a38342e2d2a2622211e1a1515120f0a03000000000001070d10151b1b22272b2d30363a3b3f4446443f382f2c231a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29323b4246474846423b37332d434f5c6976828f9ca9b5c2d0c6bcb1a7a09d9892908f8e8d8c8b8a8a8989898989898a8a8b8c8d8e8f909192999da0a7b1bbc5cbc0b5ab998d8073665a4d402e23170c0000000000000000000000000000000000000000000005101a232c33383c3d4242424242424242423f3d3a342d251b1106030c151d23282c2d2e2d2b261f180f12181e22252628292a2a2b2b2c2c2c2b2a282521201e19140e09030000000000000000000000000000000000000000000002091015191b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1720293036393a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3936302920170d02000000000000000000000000000000000a141d2b37434e586062636159534d454039312a251f19140d131c232a2f3233322d2c29241e1a140f0a0b161f29323a444c545c60696e73787b7d7e7e7d7a76706c655e564c443a30261c11060000000000000000000000000000000000000b17222d38424a50535353535353535353535353514b424b51535353535353535353535353514b43392e232525252525252525252525252e3840474c4d535353535353535353534d4c4740382f24190e03000000000000000000000000000000000000000000060f171f272f353b4246484d535458595b5c5d5e5e555d60616162626262626363636362626262616161605c545e5d5d5c5b59575553504a464540393028221c140b020000000000000000000000000000000000020507080e0908060304111d2935414b55616c70706d6664605d5554524d4946443f3b3a36312e2d2a2622211f1a150e06000002080e12181d20262b2d3337393c4246484a5053504a423e352c22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b444d525454534d46443f3844515e6b7784919eaab7c4cabfb4aaa095918986848381807f7e7d7d7d7c7c7c7c7d7d7d7e7f8081828384868a9095a0a9b3bec9c2b5a99c8f827669544a3f34281c10030000000000000000000000000000000000000000000b16212c353e44484a4e4e4e4e4e4e4e4e4e4b4a463f372d23180d0d151e272e34383a3b3a37312a21181c232a2f3233353636373838383939383635312e2d2a251e1a140d050000000000000000000000000000000000000000030c141b2125282929292929292929292929292929292929292929323a414647484848484848484848484848484848484848484848484848484848484848484848484848484848484848484746413b32291f140800000000000000000000000000000006111c262f384754606a6f706b615f57514b433e36312a251e191c252e353b3e403f3a39352f2a251f1a15141d28313a444c565e666d737b8084878a8a8a8986837d776d685e564c42382e23170b0200000000000000000000000000000000030f1c28333f4a545b6060606060606060606060605c544b545c6060606060606060606060605c554b40343232323232323232323232323236404a52585a606060606060606060605a58524a40362b1f13070000000000000000000000000000000000000000040e172129313940454d5254575e61646667696a6a6b6c676d6d6e6e6e6f6f6f6f6f6f6f6f6f6f6e6e6e6d6d666b6b6a6a6967666462605b5453514b423e332d261d140a00000000000000000000000000000003090e1214151b1615130f0a13202c3945515d67707d7c7974706d6765615e575653504a4846423e3b3a36312f2e2b2620181006090e14191d24292c3137383f4446494d5254545b605b5450473e33281c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d565e61615e575350494540525f6b7885929eabb8c5c6baaea29891837d797776757372717170706f6f6f7070707171727374757677797d839097a1adb9c6c4b7aa9e918477665c5044382c1f1206000000000000000000000000000000000000000004101c28333e474f55575b5b5b5b5b5b5b5b5b585651493f34291d0d161f2730394045464847423c332a21252e353b3e3f4142434444454545454443413e3b3936302a251f170f08000000000000000000000000000000000000020c151e262c313435353535353535353535353535353535353535303a444c52545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454524d443b3025190e0200000000000000000000000000000b17222d3842505a626f7c7d756e69605d554f46423b36302a251f2e3740464b4c4c4745413a36312b26201b262f3a434c565e686d7880868d91969697979993908a827a6d685e544a3f34281f14090000000000000000000000000000000006121f2b3844505b666c6d6d6d6d6d6d6d6d6d6d6d665c515c666d6d6d6d6d6d6d6d6d6d6d6d675c51453e3e3e3e3e3e3e3e3e3e3e3e3e3e3e47525c64676c6c6c6c6c6c6c6c6c6c67645c52473c3023170b00000000000000000000000000000000000000020c162029333b434b51575e6167696e7173747677777878797a7a7b7b7b7b7c7c7c7c7c7c7c7c7b7b7b7b7a797978787776757473716f6c6664605c5450443f382f261c110600000000000000000000000000060d141a1e21222723221f1b161c2934404b55606d7a858985817d7a76726e696662605c5455534d4b4846423f3c3a37312a22180d141a1e252a2f35393c434749505356575e6165666c66615a5044392d21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e6e6963605b53514b505c667986929facb9c5c5b8ac9f92867b706d66696867666464646363626263636464646566676869676d707a85929eabb8c5c5b9ac9f9286796d6053463a2d20130700000000000000000000000000000000000000000714202c38444f59616368686868686868686865625b51463a2e22161f283139434b515355534d453c332a2e3740464b4c4e4f5051515252525251504e4b4746413b36312921191108000000000000000000000000000000000009141e2730373d414242424242424242424242424242424242424242414c565e6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161615e564d41362a1e110500000000000000000000000000030f1c28333f4a54616c768289827b736d676159534d46413b36302a3140495157595954514c46423b37312b262d38414c555e686d7a828c92989ea1a8a4aba49f9c948f837a6d665c50443b3025190e020000000000000000000000000000000613202d394653606c787a7a7a7a7a7a7a7a7a7a796d6053606d797a7a7a7a7a7a7a7a7a7a796d60534b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b58646e7379797979797979797979746e64584c3f33261a0d0000000000000000000000000000000000000008131e28323b454d555d60696e73777b7e80818283848585868687888888888889898989898988888888878786868584848382817f7e7b7975716d66615a504a42382d22170b050000000000000000000000060f181f262a2d2e342f2e2b27211f2c3845515c67727f8c97928e8a86827e7b77736f6d6665615f575855534d4c4847433c342a20181f262a3036394045474e53535b606367696e717579706c6155493d33271c10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56616e7b7b75706c65605d5553606d798698a3aebac7c1b5a89b8e8176726f6a6864605d565757565656565656575758595a5b5c555c606873808d99a6b3c0c7bbafa399877b6e6154483b2e21150800000000000000000000000000000000000000000916232f3c4855616b70757575757575757575726d62564a3d31241f28313a434b555c60615f574e463c333040495157595b5c5d5d5e5e5f5f5f5e5d5b5854524c46423b332b2319100700000000000000000000000000000004101b26303942494d4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f525e686d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685e5246392d201407000000000000000000000000010c161f2b3844505b66707d8a938f868079706c615e57524c46413a363a43515b636665605d55534d47433c3732333f49535d676d7a8390949fa3aaadb2b1b5afaca69e959082786d60564d42362a1e1308000000000000000000000000000000091623303c4956636f7c868686868686868686868073665a667380868686868686868686868174685b58585858585858585858585858585858585a677380868686868686868686868074675a4d4134271a0e010000000000000000000000000000000000010d1924303a444d575f676d747b8084878b8c8e8f9091919293999494959595959596969696959595959494949992929190908f8e8c8a8885827e79716c605b544a3f332821160b00000000000000000000030d18212931363a3b413c3b38322d2b343f4a54606d7985919e9e9b98928f8b8783807c7975716e696865615f575855534e463c3126242931363b41464b5153585f62656c6f74777b7e82857e7064594f44382c21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d68748086827d78726d67615e606d798693a0b4bfcbc5b9ac9f9287827f7c7874716d6866625f585653514b4a4a4a4b4c4d4e4f4b515663707d8996a3b0bccbc0b5ab95897c6f6256493c2f23160900000000000000000000000000000000000000000a1724303d4a5763707d8181818181818181817f7265584b3f322528313a434b555d676d6e695f584e453b3842515b63666869696a6b6b6b6c6c6b696864615e56534d453d352b22190d0400000000000000000000000000000915212c37424b54595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c55616d7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6e6154473b2e21140800000000000000000000000007131d2834404b55606c7883909d99928d847d756e69615e56524c4642414c56636d73726d67615e57534e47433c3a44505b656d798390959fa6aeb4b9bdbdc0bbb9b0a79f948c7f72695e52463a3025190d010000000000000000000000000000091623303c4956636f7c8993939393939393938d8073665a6673808d93939393939393938e817468656565656565656565656565656565656565656773808d93939393939393938d8074675a4d4134271a0e01000000000000000000000000000000000005111d2935414c565f696e7981868d919697999a9c9d9d9e9f9fa4a0a1a1a1a2a2a2a2a2a2a2a2a2a2a1a1a1aba39f9e9e9d9d9c9a999797928f8a847e746c665b50443d33271c100300000000000000000009141f29333b4246484e4947433d3a373844505c66727f8b97a1abaaa39f9c9895908c8985827e7b7874716e696865625f584e43372b2f353b42464c52555d60656a6f73787c8084878b8e9083776b6155483d33271c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d7a86928f89847e79736d68616d798693a0acb9d1c7baaea399928f8c8885817e7a76726f6a6763605c5454524c4746414142404855616e7b8894abb5c0c7bdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000c1926323f4c5965727f8c8e8e8e8e8e8e8e8e8175685b4f423529323a434c555d676d797b6e6a5f574d453f4a54636d72747576777778787878777674716e68615e574f473d342b1f160c01000000000000000000000000000c1925313d49545d65686868686868686868686868686868686868686868626a77838787878787878787878787878787878787878787878787878787878787878787878787878787878787878785786b5e5245382b1f120000000000000000000000010d18242f3845515c67717e8b95a0a39f96918a827b746e68615e56534d47525d68737f7f7a746e69625f58534e47444f59606c77828f95a0a8b0babfc6c9cfccc7c1b9b0a69f92867b6e61564c41362a1d11050000000000000000000000000000091623303c4956636f7c8996a0a0a0a0a0a0998d8073665a6673808d99a0a0a0a0a0a09b8e817471717171717171717171717171717171717171717173808d9a9f9f9f9f9f9f9a8d8074675a4d4134271a0e0100000000000000000000000000000000000713202d3946525d686e7b838d92999ea0a8a6a7a9aaaaababacafb5aeaeaeaeafafafafafafafafaeaeaeaeb5aeacababaaa9a8a7a6a9a29f9b96918a81786c60594f44382c20150a0000000000000000020e1a26313b454d53555a56544e4847423f4953606d7984919ea9b3b4aeaca9a7a09d9997928e8b8884817e7b7875726f6a5f53473a333a41454d53565e61676d72777b8084898d9195989b95897d7063594f44382c21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c66727f8c989c95918b85807a746e6d798693a0acb9c6cbbfb4aba39f9c9997918e8a86837f7c7874706d6664605d5654524c4746414753606d7a8699a3afbbbbb9b1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000c1926323f4c5965727f8c989b9b9b9b9b9b8e8275685b4f4235323b444c565d676d7982857c6e695f574d44505c66727f8182838484858585858483817e7a746e6960594f463d31281d1207000000000000000000000000020e1b2834414d59656f7575757575757575757575757575757575757575756f6a77839094949494949494949494949494949494949494949494949494949494949494949494949494949494949185786b5e5245382b1f12000000000000000000000004111d2935414b55606d7984919ea7aea8a19e938f86807a736d68615e575353606d7a868c85807b756f6a625f58534e56606b73808c949ea7b1bac2cbc7c5c2c3c4c7c2baaea2988d8074685e5246392d20150a0000000000000000000000000000091623303c4956636f7c8996a2adadadada6998d8073665a6673808d99a6adadadada99c90827e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e828f9ca9acacacaca79a8d8074675a4d4134271a0e010000000000000000000000000000000005121e2b37424d57616d7a8490959fa3abacb2b3b4b5b6b7b8b8b9bbc0bbbbbbbbbbbcbcbcbcbcbcbbbbbbbbbabfbbb9b8b7b7b6b5b4b2b3adaba8a19e938d80746b6054483c31261b0f030000000000000005121e2a36424d575f616762605855534d47505b65717e8b96a1acbbbfbab8b5b1acaaa9a29f9b9896918e8b8885827f7c6f6255483c3f444b51575f61686e73797f83888d91969a9da0a8a79c9083766b6054483d32271b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7984919ea7a09d97928c86817b75798693a0acb9c6d1c6bdb4aeaca9a9a19e9b9992908c8884817d7975716d6865615e5654524c47515d677986929facb5afacaaa6998c7f7366594c403326190d00000000000000000000000000000000000000000c1926323f4c5965727f8c98a5a8a8a8a89b8e8275685b4f42333b444c565e686d79828f91847b6e695e564c53606d79868e8f9090919192929291908e8b86817b706b60584e43392f24180d000000000000000000000000020f1c2935424f5c68758182828282828282828282828282828282828282827c6f7783909da1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19e9185786b5e5245382b1f1200000000000000000000010d13202c3945515d67727f8b96a1acbab2aca69e98928d86807a746e69625f5b65727f8c98928d86817c756f6a625f585d68707d88939fa6b0b9c3c7c0bbb9b5b6b7bcc2bfb4aa9f92867a6d6154473c32261b0f0300000000000000000000000000091623303c4956636f7c8996a2afb9b9b3a6998d8073665a6673808d99a6b3b9b9b7ab9f94908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f949fabb7b9b9b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000714212d3a46535f6974818e96a0a7aeb5b9bdbfc1c2c3c4c3c3c2c1c0c0bfbfbfbebebebebebebfbfbfbfc0c1c2c2c3c4c4c3c3c2c1bfbebab8b2ada59d92897d7063584e43372b1f1206000000000000000714212d3a46535f696e746f6a66615f575453606c7884919da8b2bdcbc7c5c2bcb8b7b3adaba8a8a19e9b9897918e8b8275685b4f414950555d60696e747a80858b9095999ea1a8aaacb1ab9f94897d7063594f43382c20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b38434e5864717e8a96a1adaca9a19e98928d87817c8895a2afbbc8d8cfc6bfbab9b6b2adababa39f9c9996918d8985827e7a76716d6865615e565452556c7885929fa8aba39f9d9a988d8074675a4d4134271a0e01000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2b4b4a89b8e8275685b4f423b454d565e686d7a8390949691847b6e685e5555626f7b88999c9c9d9e9e9e9f9f9e9c9b99928e857d706a60554b4035291b110600000000000000000000000613202d394653606c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f897d707783909daaaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeab9e9185786b5e5245382b1f120000000000000000000004111d2935414c55606d7a85929ea8b2bdbdb9b0aaa39f98928d86807b756f6a606c7884919e9f99928e87827c756e6a61606d7a84919aa4afb8c1c3bdb5afaca9a9abb0b9c1baaea2988c7f7265584e43372b1f130600000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c7bcb0a69f9c98989898989898989898989898989898989898989898989c9fa6b0bbc7c0b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000815222e3b4855616e7b87939fa8b1bbbfc6c9c7c5beb9b8b7b6b5b4b4b3b2b2b2b2b1b1b1b1b2b2b2b2b3b3b4b5b5b6b7b8b9bec3c4c7cac6c4bdb9aea49d9083766a5f53473a2e211508000000000000030f1c28333f4a54616e7b817c77736e6965615e64707d8a929ca4adbbc5cfd2cdc8c4c3bebab8b5b2adaba7a9a19e998c7f7366594c4d535b60676d737b81868d92979da0a7abacb2b7b8bcb0a69c8f82766b6054483d32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a7683909da8b2b8b3adaaa39f99928e888e99a4b0bdc9d8cfc6bfbab9babeb9b8b5afaca9a8a19e9a98928e8a86827e7a76726d6865605d566b7885919e9b989992908d8b888175685b4e4235281b0f02000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f42454d575e686e7a8390959fa19691847a6d675c5764717d8a97aba9aaaaababababaaa9aba39f9792877c6f675d5145382d22170b00000000000000000000000613202d394653606c7986939b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b96897d707783909daab6bababababababababababababababababababababababababababababababababababab8ab9e9185786b5e5245382b1f12000000000000000000000613202c3945515d6773808c97a1adbac4c9c1bcb4aeaaa29f98928d87817c716c707d8a96a0aba39f9a938f87827c746e6b75818e96a1acb6c0c3bab1aba39f9c9c9fa6afb7bfb4aa9d9083776a5f53473b2e21150800000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0cdc2b9b0aba9a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a9abb0b8c2ccc0b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000005111d2a36414c566673808d99a4afbac3cbcac1bbb7b3adabaaa9a8a8a7a6a6a5a5a5a5a4a4a5a5a5a5a6a6a7a7a8a9a9aaabadb3b6b7bcc2cbcfc9c0b8ab9f95887b6f6255483c2f22150700000000000006121f2b3844505b6673808c8984807b76726d68626d79808c919ca9b3bec9d5cbc2bcb8b6b6b9bbbdb9b7b4b2adaa978a7d70645750575f656c717a80868e92999fa2a9acb1b7b9bdc4c5c2b7ab9f94897c6f63584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57626f7c89959fabbac4beb9b4aeaba39f9b9599a0aab5c1cdd1c6bdb4aeacaeb4b7b9bdbbb9b6b2adabaaa29f9b99928f8b86837e7a76716d68646a778491918e8c898683817e7b786c605346392d20130600000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f424d575e696e7a8390959fa7a8a0969082796d605b6673808c99a6b3b7b7b8b8b8b8b7b6b5aea9a2999184796d6053493f33271b0f03000000000000000000000613202d394653606c7986939fa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a396897d707783909daab6c3c5bebab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ab9e9185786b5e5245382b1f12000000000000000000000714212d3a4754606d7a859299a3aebbc7d3cfc6bfbab4aeaaa29f99928e887e7176828f9ca8b2afaca49f9a938e87817b737d89939ea8b2bec3b9b1a8a099928f90949ea5afbdb8aca095887c6f6255493c2f24190d01000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0cccbc2bcb7b6b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b5b7bbc2cacdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000713202d3946525e687784919dabb5c0ccccc1b8b0aaa9a19e9d9c9c9b9a99999998989898989898989999999a9b9b9c9d9d9ea1a9a9abb1b9c1cad4c8bcb1a7998c7f7366594c402f24180d0100000000000613202d394653606c78849196918c88837f7a746f6a6d747f8c97a1adb9c6cdc2b9b1aba9a9acafb5b7b9bdbaaea398887b6e62555a61696e777e858d92989fa3abadb3b8bcc3c5bfbab8b5b2ada69c8f82766a6054473b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e6975818e9ba7b1bcc7c9c6bfbab5afaca8a2a4aab2bcc6d7cbbfb4aba39fa3abaaacb2b6b9bbbdb9b7b4aeababa39f9c99938f8b86827e7a75706d77838784817f7c7a7774716f6c665b5044382b1f120600000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f46525e696e7b849095a0a7b1b2a89f948e81756e636875828f9ba8b5b8b8b7b8b9bec4c3bfbbb3aba1968b7f72655b5044372b1f1205000000000000000000000613202d394653606c7986939facb5b5b5b5b5b5b5b5b5b5b5b5b5b0a396897d707783909daab6c3bcb4aeababababababababababababababababababababababababababababababababab9e9185786b5e5245382b1f12000000000000000000000613202c3945515d67717e87929facb9c5d0d8d1cbc6bfbab4aeaba39f96897d707b87939facb9bbb6afaca49f99938e868083909da5afbac4bbb1a7a095918782838e939eabb5bcb1a7998c807366564c4135291d1104000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0ccd4cdc7c4c3bebebebebebebebebebebebebebebebebebebebebebebec2c3c7ccd4cdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000714212e3a4754616d7a8795a0acbdc7cec3bab0a69e9c979290908f8e8d8d8c8c8c8b8b8b8b8b8b8c8c8c8c8d8e8f8f90919297979d9fa7b0b8c1cfcdc2b5a99c8f827669554b4135291d11040000000004111d2935414c5663707d8996a09e9995908b86817c77716d7985929eabb8c5c8bcb1a79f9d9d9fa4ababadb2b5ac9f9286796c605d606c717b838b91979fa3aaaeb4babec5bebab8b4aeaca8a9a19e9b94897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b86929facafb5b9bdc4c7c7c0bbb9b4afb0b5bcc4ced3c7baaea39992999a9ea0a8a9acafb6b9bbbebab8b5aeacaba49f9c99928f8b86827d79747c7a7775726f6d67676562605b544a3f33281c0f0300000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f4854616e7b849196a0a7b1b9bab0a69e938c80736c677784919eaaacababaaabadb3b5b9c0c5bdb2a89e9184786c605346392d201306000000000000000000000613202d394653606c7986939facb9c2c2c2c2bfbfbfc1c2c2c2bcb0a396897d707783909daab6beb4aaa29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9185786b5e5245382b1f120000000000000000000004111d2935414c55616c737f8c99aab4bfcad6cdc7c4c3c5bfbab5afa49a887b74808d9aa4afbbc5c0bbb6afaba49f98928c9095a0acb7c1beb3a9a09590837c7676818e99a4afbbb6aa9d908377685d5245392c201307000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0ccccc4bdb9b7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b7b8bcc3cbcdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000a1623303d495663707c8996a7b1bcd0c8bdb1a89e948f88858483828181807f7f7f7f7e7e7e7e7f7f7f7f8080818282838485878a90959ea6b0bdc7d1c5b8ab9e928578675d5145392c201306000000000713202c3945525d6875818e9ba8aaa79f9d98928e89837e7976838f9ca9b6c2c4b8ab9f95909093999a9ea1a8a9aa9d908377665e676d757e8590949ea1a9aeb4babfc2bbb7b3aeabaaa29f9c9897918e8c898275685c4f4235291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d969b9fa3abacb2b7bbc2c7c7c5c1bbbdc1c6cedfd2c5b9ac9f9286898d9196999d9fa4acacafb5b9bbbfbbb9b5afacaba39f9c98928f8a85807c77726d6763605d55585553504a42382d22170b0000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f4754606d7a838f949fa6b0b9c2b9afa59c928a7e716d7a86939f9f9f9e9e9e9ea1a9a9aeb6c0c4b9aca196887c6f6255493c2f221609000000000000000000000613202d394653606c7986939facb9c5bebab8b2b2b2b5b6bac1bcb0a396897d707783909daab6baaea298929191919191919191919191919191919191919191919191919191919191919191919185786b5e5245382b1f1200000000000000000000010d19242f3a43505a616e7b8798a2aebac7cbc2bcb7b6b8b9beb9ac9f9386797a85929facaeb4b9bdc4c0bbb5afaaa29f999da0a7b1bcc6b9ada19790837a6f6a6e7b87939facb9b9ac9f93867a6d6054473a2d211407000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0cec4bab2acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7aaacb1b9c3cec0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000b1825323e4b5865717e8b98a4b1becec5b8aca0958f827b7877767575747373727272727171727272727373747475767677787a7d838f949eabb5c0cbc6b9ada197877a6d6054473a2d211407000000000714212d3a4754606d7a86929facb7b1abaaa39f9b95908b858083909da9b6c3c3b6a99d908383868a8e9196989c9f9b8e817468696e79818a92989fa6adb3babfc6c2b8b0abaaa29f9b98928f8b8885827f7c796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727f84898f92999ea1a8aab0b9bbc0c7cad0c9cdd2d8d6c9bcafa396897d7c8084888c90939a9c9fa3abacafb5b9bbc0bbb9b5afacaaa39f9b97928d88837e7a746f6a625b514846443f382f261c11060000000000000000000000000000000000000306070c1926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f45515d676d79828f949fa7b1b9c1b7aea49f92857b6f7c899a9a939292919192979a9da4aeb7c1bdb2a8988c7f7265594c3f32261908000000000000000000000613202d394653606c7986939facb9bbb3adaba5a5a5a8aaafb7bcb0a396897d707783909daab6b8ab9f92868585858585858585858585858585858585858585858585858585858585858585858583776a5d5144372a1e11000000000000000000000008131e28313e46525e697985929facb8c5c2b9b0aba9abadb3b8ab9e9185787e8b949a9fa2aaadb2b8bcc3c0bbb4aeaca6aaacb1b9c3baafa59e92857b6e685f697683909da9b6bbafa4998a7d7063574a3d30241708000000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c9bdb2a8a09e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9da0a7b1bcc8c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccc4b7aa9d9184786e696a696968676666666565656565656565666666676868696a6a686d7078828f99a3afbbc7c9beb3a995887b6f6255483c2f22150900000006121f2b37434e5865727f8b98a3aebabcb8b4aeaca79f9d97928d90959fabb8c4bfb3a6998c80767a7d8184888c8f92998c7f726a6f7b838e939fa2aab0b9bec4cbc5bcb0a69f9c98928e8a86827f7b7875726f6d675d5145392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313d4a56626d72787d82868c91969c9fa6acafb5babfc6cacfd6dbded1c4b7ab9e91847e76777b7f83878b8f92999c9fa3abacafb6b8bcc0bbb9b4aeaca9a19e9a95908b85817c726d62574a3938332d261d140a0000000000000000000000000000000000060c101213131926323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f414c555d676d79828f959fa7b1babfbaaea2989083787e898887868585858485878d929da5afbbc2b5a89b8f8275685c4f423024190d010000000000000000000613202d394653606c7986939facbeb3a9a29f9898989b9ea5afbab0a396897d707783909daab6b2a5988b7f787878787878787878787878787878787878787878787878787878787878787878787771675b4f4336291d100000000000000000000000010c161f2a36424d576b7885919eabb8c4bcb0a69f9c9ea1a9ada99d9083767d82888d92989ea1a8acb1b8bcc3bfbab8b3b7b8bcc3c3b6aa9e93897d70695e576673808c99abb5c0b5ab998c807366594d403025190d010000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c5b9aca096918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9095a0acb8c5c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0ccbfb2a6998c7f73665f575d5c5b5a5a595959585858585858595959595a5b5c5c5d565d60666e7b87929facb9c5cfbcafa396897c706356493d3023160a0000000815212e3a47535f6a7783909daab4b8babebfbab8b1aba9a29f9a9d9fa7b1bcc8bfb3a6998c80736d7174787b7f82868a897d70707c8491959ea5aeb3bcc2c9cfcabeb3aa9f94908b85817d7a75726e6a686563605d554b4035291d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222e3a46515b62656c70757b7f848a8f949b9fa3abaeb4b9bec5cad0d6d2c5b9ada196918a837c7472767b7e82868b8f92999c9fa4acacb1b8b9bebfbab9b3adaba7a09d98928d887f7265594c3f3228221c140b02000000000000000000000000000000030a11171c1f20201f26323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f42434c555d676d79839095a0a8b2bcbeb3aa9f958d807b7c7b7a7979787877787b808d939eaab6c3b7aa9d9084776a564c4135291d11040000000000000000000613202d394653606c7986939facbaada297928c8c8c8e939eaab6b0a396897d707783909daab6b2a5988b7f726b6b6b6b6b6b6b6b6b6b6f7c7e7e7e7e7e7e7e7e7b6e6b6b6b6b6b6b6b6b6b6b6b6a675f554a3f33271a0e000000000000000000000000040d1a253045525e6b7885919eabb8c4b7ab9f949092979fa2a99b8e827570767c81858c91969da0a7abb1b8bcc3c5bfc3c5c8cec1b5a89b8e81756b60575663707d8999a4afbbb5a99c8f827669564c41362a1e11050000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c4b7aa9e9184818181818181818181818181818181818181818181818183909daab7c3c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0c9bdb0a3968a7d7063544d504f4e4e4d4c4c4c4c4b4b4b4b4c4c4c4c4d4d4e4f4f504c52545e697683909ca9b6c3cabdb0a4978a7d7164574a3e3124170b0000000915222f3c4855626f7c88959fa3ababaeb4b8babebcb8b3adaba6a9abb1b9c2cdbfb3a6998c80736664676a6e72767a7d817a707d869196a0a7afbabec5ced2d3c6baaea29890827e7975706d6765625f58595653514b43392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4951535b6063686e73787d82888e92999fa2aaadb3babec5cbd0c9bdb2a8a19e949087817a726e72767a7e82868b8f939a9da0a7abadb3b9bbc0beb9b8b1abaaa29f94887b6f6255483c2f2217110a02000000000000000000000000000000030c151c23282c2d2d2b28323f4c5965727f8c98a5b2bfb5a89b8e8275685b4f423a434b555d676d7a839096a1aab3bdbcb1a79d92897d706f6d6c666b6b6b696e75818f9baab4bfb8ac9f928579685d5245392c2013070000000000000000000613202d394653606c7986939facb8ab9f92857f7f7f818e9ba8b5b0a396897d707783909daab6b2a5988b7f72655e5e5e5e5e5e5e5e6673808b8b8b8b8b8b8b8b7e71645e5e5e5e5e5e5e5e5e5e5d5b554d43392e22160a00000000000000000000010509091f2b3845525e6b7885919eabb8c3b6a99c9083858c92979f998d8073666a6f747a7f848a90959d9fa7acb1b9bdc3ccd1d4c9bcafa296897c6f6a625a54606d7a86939facb9b8ab9e928578685e5246392d2013070000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1b4a79b8e817474747474747474747474747474747474747474747474808d9aa6b3c0c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bcafa295897c6f6256494342424140403f3f3f3f3e3e3f3f3f3f4040414142434341454d576773808d9aa6b3c0cbbeb1a5988b7e7265584b3f3225180c0000000e1a2734414d5a6774808b8f92999b9fa2aaabadb3b8babebab8b3b6b8bcc2cbccbfb3a6998c80736659585f6265676d7074707d879298a1a9b1b9c1c5bfc4c5c9c5b8ab9f92857e756d6864605d5555534e4c494745403931271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232d373f41495053565e61666c70767c81878d92989ea1a9aeb3babfc6cbc4bab2ada69f99938e857e776e696d71767a7e83878c90959a9ea1a9acafb5b9bec3bcb8b2a89c8f82766a5f53473a2e21150600000000000000000000000000000000000a151e262e34383a3938332d3f4c5965727f8c98a5b2bfb5a89b8e8275685b4f42444c545c605d686e7b849198a2abb5c0b9aea49e9184796d61605b5f5e575e63707c8998a2aebabaaea298877a6d6054473a2d2114070000000000000000000613202d394653606c7986939facb7ab9e91847872727e8b98a4b1b0a396897d707783909daab6b2a5988b7f726569696969696969656673808c9797979797978b7e71646565666564615e56514a514f4a433b32271c1106000000000000000000060c1115181f2b3845525e6b7885919eabb8bfb2a5988c7f7a7f858d92988b7e72655f62686d72797e838a90959da0a7acb2bac3ced9d1c4b8ab9e91847c716c605c5d677784909daab7b9ada197877a6d6154473a2e2114070000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1b4a79b8e817468686868686868686868686868686868686868686873808d9aa6b3c0c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6255483c36353433333332323232323232323333333435353630353e4b5865717e8b98a4b1becbbfb2a6998c7f7366594c403326190d0000000815212e3b4854616e7b7f82868a8e92989b9fa2a9acaeb4b7bcc0c3c4c8cdd4ccbfb3a6998c8073665c545355555d606a707d869299a2aab2bbbebab8b2b7b9bdc4baaea298928a817a706b605c544d47433f3c3a39352f271f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b252d2f383f44464d52545b60636a6f757b80868c92979fa2aaaeb4bbc0c7c4bdb9b0aba49f97928b827b736d66686d71767b7f83888d92979c9fa4abadb2b7bcb9ada1968a7d7164584e43372b1f12070605030000000000000000000000000006111c2630383f444646443f383f4c5965727f8c98a5b2bfb5a89b8e8275685b4f444c565e666d6661696f7c869299a4afbbc0b9aca0968d80736a5f534a524d53606d7985929facb8bfb4aa95887b6e6255483b2f2215080000000000000000000013202d394653606c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727176767676767676716d73808c99a4a4a4a4978b7e716e72727272716e68605c544a403f39322920160b0000000000000000000911181d2224252b3845525e6b7885919eabb8bfb2a5988c7f72727a80868e8a7d706357565d60666d71787d838a90959ea0a8b2bdc8d4d2c5b9ada19691867e746d665d6874818e9ba7afaca69f96897c706356493d3023160a0000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1b4a79b8e8174685b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6773808d9aa6b3c0c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6255483c2e2d2a25262626252525252525262626262728292924303d4a5663707d8996a3b0bcc9c0b3a79a8d8074675a4d4134271a0e0100000714212d3a46535e696e72767a7d81858a8e92979b9fa3aaabb0b8b9bec5c8cdccbfb3a6998c80736d66605850555f696f7c869298a3abb3bcbcb3aeaba5abacb2bbbeb3aaa29f938e847d736d665e574f473d332d2c29241d150d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b1d262d33373b41464a5053585f62696e747a80858c92989fa3aaafb5bdc1c8c2bdb5afa9a29f9490867f786f6a6165696e72777c80858a8f93999ea1a9abb1b4aa9e9184786d6053463c31261b141413120f0b0600000000000000000000000c17232e38424a505353504a45414c5965727f8c98a5b2bfb5a89b8e8275685b4f4c565e686d79706b616a707d87939fa5afbabdb2a89f92877c6f62594f4144505c667683909ca9b6bcafa296897c6f6356493c3023160900000000000000000008111a2d394653606c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727e828383838383827f7173808c99a6b1b1a4978b7e717c7f7f7f7f7d7a746d665c51443a302519170e04000000000000000009121b23292e3132323845525e6b7885919eabb8bfb2a5988c7f72686d737b81867c6f62554c52545c60656c70777d838a9196a0acb9c5d2d5c9bdb2a8a198928b81786d6765727e8b98aba49f9b948f8a7e7165584b3e3225180b0000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1b4a79b8e817468616161616161616161616161616161616161616773808d9aa6b3c0c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6255483f3a3936302e2b26201f1c1718191919191a1a1b1c1c232f3c4956626f7c8995a2afbcc8c1b4a89b8e8175685b4e4235281b0f02000005121e2a36424d575e6165676d7175797d81858a8e92989c9fa6abadb3b8bcc3c7c5b9ac9f928780796f6a605c5d676e7b859298a2aab4bdbab2aaa29f989ea1a8afb6bcb3aea59e96918880786e6960594f44382c1f1d18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090b141b22272b3036383f44464e53575e61686d73797f858d92989fa3abafb8bdc3c7c0bbb3ada69f98928c837c736c665e61666a6f74797d82878c91979d9fa7aca3988c7f72665c5044382a20202020201f1b17110a02000000000000000003101c28343f4a545c60605b54524c4c5965727f8c98a5b2bfb5a89b8e8275685b4d565e686e7a837d706a606b727f8c939ea8b2bdbbafa3998f82766b6153493f4a546774818d9aa7b4bdb0a3978a7d7064574a3d3124170a0000000000000000050e1a232c334653606c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c8f8f8f8f8f8d807373808c99a6b3b1a4978b7e737f8c8c8c8b8a8680786d60564c41362a1d1105000000000000000006111b242d343a3d3f3f3f45525e6b7885919eabb8bfb2a5988c7f726560696e747b796d605347454a51535b60646b70787e84919eaab7c4d1dacfc4bab2aaa39f928e82796e686f7c89999f9a938f89837d716c62564a3d3124170b0000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1b4a79b8e81746e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e73808d9aa6b3c0c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6255504a4746413c3b37322d2c2823201d1813110d080e0f15222f3c4855626f7b8895a2aebbc8c2b5a99c8f8276695c4f4336291c07000000020e1a25313b454d5354555d6064676d7074797d81868b90949a9ea1a9acb1b7bbc2bbaea399928c837c736d66606d79839197a1aab3bcb9b1a8a198928c91969fa4acb2babaafa8a19a938d827b706b6054483c2f2b272019100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d2d2d33383c43474d53565e61676d737a80868e92999ea5acb1babfc6c5bebab0aaa39f9590877f786e69615a5f62666d70757b80848a90959b9f9f92867a6d61544a3f342d2d2d2d2d2d2b27221b140b020000000000000006121f2c3844505c666d6c66605d56545965727f8c98a5b2bfb5a89b8e8275685b565e686e7a8390867c6f69636d75818f96a1abb5c0b5ab9f94897d70655b50444c5965727f8c98a5b2beb1a4988b7e7165584b3e3225180b00000000000000020d17202c353e4453606c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c989c9c9c9a8d807373808c99a6b3b1a4978b7e75818e98999899928d8074685e5246392d20130700000000000000010c18232d373f454a4b4b4b4b525e6b7885919eabb8bfb2a5988c7f7265575e61696e6d675c51453940444950535961656c727f8c98a5b2bfcbd5d2ccc4bcb4aea59d948f837a6e6d7a8692928e87827c76706b625a50453a2e2115090000000000000000000000091623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c2b5a89b8f817b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b818e9aa7b4c1c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f63605c5454524c4847433d3a38342e2c2924201d1913110d15222e3b4855616e7b8894a1aebbc7c3b6aa9d9083776a5d50442f24180d0100000009141f29333b4246484b5154555c6063676d70757a7e83888d92979da0a7aab0b6bbb5aba39f95908780786e6d75818e95a0a9b3bcb9b1a7a09691857f848d939aa1a8afbabab2aca49f9490857d7063564a3d3b37322b22190f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3a3a3a3a3a3a3b42464c52555d60686d737b81878e939da0a8aeb4bcc1c9c2bcb4aea7a099928c827b716c605d555c6064696e73797e83888e92998e8174685e52423a3a3a3a3a3a3a3937332d261d140a000000000000000713202d3a4653606d7879726d6862605865727f8c98a5b2bfb5a89b8e827568575e696e7a83919591847b6e67606d7a849199a3afbbbdb0a69d9083786c6053494a5764717d8a97a4b0bdb2a5998c7f7266594c3f3326190c0000000000000009141f29333e474f55606c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5a9a69a8d807373808c99a6b3b1a4978b7e7784909da5aba39f92867a6d6154473a2e2114070000000000000005111d29343f49515658585858585e6b7885919eabb8bfb2a5988c7f72655958575f61605c554f473d34383f44464f535b6875818e9ba8b4c1cfc9c5c4bec5bfbaafa69f9590847b6f77848d86817b756f6a63615950483f34291d11050000000000000000000001071623303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c3b6aa9e938f88888888888888888888888888888888888888888888888e939da9b5c2c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887c736f6d6664615e5655534e4a46443f3a39352f2c2924201d1914212e3b4754616e7a8794a1b6bfbab8b6ab9e9185786b554b4035291d1104000000030d17212931363b4246484c4b5153555c6064686d71767b80858b90959c9fa6aab0b8b5aea7a099928d837b727f8b939ea7b1bbb9b1a7a09590847c7279808891969da5adb3bcb4aaa39892867c6f63564c4947433d342b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303940454647474747474747474747474b51565e61696e747b828991959fa2aaafb9bdc4c6bfbab1aba39f9490857e756d675f5753575e61666d71767c81868d887c6f62564c474747474747474746443f382f261b11060000000000000a1724303d4a5763707d847f7a746f6a6565727f8c98a5b2bfb5a89b8e8275685e696e7b849195a0969083796d60686f7c87929fa7b1bdb8aca0958a7e71655b50495663707c8996a3afbcb3a69a8d8073675a4d4034271a0d010000000000020e1a25303b454f5961636c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7985929facb5afa3998a7e7164574b3e3124180b000000000000000915222e3a45515b626565656565656b7885919eabb8bfb2a5988c7f72656565656565656360594f44382d33373e45515d677784919eaab7c4c4bdb9b8b1b9bbbfb8b0a7a09691857c7481807b746e6a626058554f473f362d22180c01000000000000000000040c131823303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c6bbafa59e9b94949494949494949494949494949494949494949494949a9da5afbac5c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc3b6aa9d9083807c7975716d6866625f585653504a4745403a39352f2d292520212d3a4754606d7a879aa4afb4aeaca9ab9f928679675d5145392c20130600000000050f1a26313b454d535559595959595959565d60656a6e73797e83898f949b9ea6afb7bbb1aba39f9590857f86929fa5afb9beb1a7a09590837a6f6a6d747d848e939fa2a9b3aba39892867d706b60595956544e463d32271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424b5153535353535353535353535353535353575e616a6e757d848c92989ea5adb2bac4cbc3bdb5aea69f98928b81796e69615a5353545c60646a6f757b8082766a605353535353535353535353504941382d22170b000000000005121e2a36424d576774808d8c86817c77726d727f8c98a5b2bfb5a89b8e827568696e7b849196a0a7a0958f82756d626b73808c95a0abb5bcb1a79d9184786c60534855626f7b8895abb5c0b4a79a8e8174675b4e4134281b0e01000000000005111e2a36424d57616b706b7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7b8898a3aebab5ab998d8073665a4d4033271a0d000000000000000b1824313d4a56626d727272727272727885919eabb8bfb2a5988c7f72727272727272726f6b6054483b2f272d3a4754606d7a86939facb9c4bbb2adaba4acaeb5bdb9b1a8a19792857c74736e69625f57544e48443e352d241b1106000000000000000000040d161d2429303c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0ccc1b7afaaa8a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a7a9afb7c0cbc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc4b8aca095908c8985827e7a76736f6a6763605c5453514b4745413a3935302d292d394653606c7986939fa9aaa39f9c999992867a6d6053473a2d2014070000000005121e2a36424d575f6166666666666666666666666666676d71777d82888f939ea5afbbbdb5afa79f97928c9298a3aeb7c0b6aca09590837a6e6866666b7079818a9297a2ada39992867d706b666666666260584e43372b1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545c6060606060606060606060606060606060606060626b70787f868f939ea1a8b2bdc9cfc6bfbbb0aaa29f938e837b706c606060606060606062696e747670606060606060606060606060605b53493f33271b0f03000000000714212d3a46535f6977849198928e89837e7a747f8c98a5b2bfb5a89b8e8275696e7b849196a0a8b1a79e938c7f726a606d79839199a4afbbb8aca0958a7d7063584e54616d7a8799a4afbbb5a89b8f8275685c4f4235291c0f0200000000000714202d3a46525e69707d707986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7d8a96aab3bbb4a79b8e8174685b4e4135281b0e020000000000000c1825323f4b5865727f7e7e7e7e7e7e7f85929fabb8c1b5a89b8e817e7e7e7e7e7e7e7e7d6f6356493c30232f3c4956626f7c899aa4afbbbdb2a9a19e989fa3abb3bbbab2a9a19792857c6f6a5f57534e47433d38332c231b1209000000000000000000010c161f282f35393c4956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0ccc9c1bbb6b5aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb4b5bac0c9cdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc8bcb1a7a09d9997928e8b86837f7c7874706d6664605d5554524c4746413a3935303844505b667885929f9c9998928f8c8986837a6d6154473a2e211407000000000714212d3a46535f696e727272727272727272727272727272727272767c818f939eaab6c7c0bbb1a9a29f999fa3aab4bfbbafa49a90837a7272727272727272747e85929fab9f92877d727272727272726f6a6054473b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d727b828a9196a1adb9c5d2d1cbc2bcb3aea59e9590857e736d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c655b5044372b1f1205000000000815222e3b4855616e7b8896a09f9b95908b8581818e9aa7b4c1b5a89b8e82756e7b849196a0a8b2b9b0a69f92877c6f68666f7c87939faab3bcb1a79c8f82766a605453606c7986939facb9b6a99c8f8376695c504336291d060000000000000814212e3b4754616e7b867c7986939facb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7f8c99a1a9b3b5a89b8e8275685b4f4235281c0f0200000000000613202d394653606c79868b8b8b8b8b8b8b9298a2aebac3b6aa9e938e8b8b8b8b8b8b8b8b8174675a4e41342e333e4b5865717e8b98acb6c0b9ada196918b9299a1a9b1b9bbb3a9a29792857c6f695f564c433a302c28211a11090000000000000000000007131d28313a4145474956636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3c0c1c1c1c1c1c1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbc1c1c1c1c1c1c0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdcdc3b9b1acaaa9a29f9b9993908c8884807d7975716d6764605d5654524c4746413a393f4a5e6b788491928f8c898683807d7a766d685e5246392d201307000000000815222e3b4855616e7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f828f9ba8b5c2cbc2bbb3adaba5acaeb4bcc6b9ac9f9387807f7f7f7f7f7f7f7f7f7f7f818e9aa79c90827f7f7f7f7f7f7f7f7c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a797d85919eabb8c4d1dcd7cec5bebaafa7a098928a807a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776c605346392d20130600000004101c2834404b5465727e8b98a8aca7a09d98928e8e939da9b6c1b5a89b8e82756e7b849197a1a9b3bcbbaea39991847a6d606a74818e98a2aebab7ab9f94887c6f6255505b667885929eabb8b7aa9d9084776a5d51442d22170b000000000005111e2a36424d5665727f8b84798693a0adb7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e818c9297a1adb5a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939898989898989fa2aab3bec6bbafa59e9b989898989898988d8174675a4e45404140404d5a6773808d9aa6b3c0b8ab9e91847e879297a0a7b0b8bbb3a9a29792857b6e685e554b42392e23180c0800000000000000000000010d18242f3a434b51545156636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6b3b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b3a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdd5cbc3bcb8b6b3adababa49f9d9996918d8985817d7a75716d6865615e5654524c474541515d6a77838985827f7c797673706d67615e564c4135291d1105000000000a1724303d4a5763707d8a8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8f939eaab6c3cfcdc5bebab8b2b9babfc6c8bbafa49a938d8c8c8c8c8c8c8c8c8c8c8c8e939da99f94908c8c8c8c8c8c8c8c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a67748086868686868686868686868686868686868686868686868686868a9196a1adb9c5d2dfe0d7d0cac1b9b1aaa29f928d87868686868686868686868686868686868686868686868686867b6e6154483b2e21150800000006131f2c3845515c6675828f9ca8b5b1acaaa29f9a9a9da5afbac1b5a89b8e8275696e7b859197a1aab4bfb5aba1968e81756b616d7a85929fa9b2bbb0a69a8e8174675d51546a7784909daab7b7ab9e9184786b5e4a3f33281c0f03000000000714202d3a46525e697683908e818e9aa7b4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7e7f85929eabb5a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939fa5a5a5a5a5abaeb3bcc5ccc1b7afaaa8a5a5a5a5a5a59a8d8174675a53514b4e4d4b4f5c6875828f9ba8b5c2b5a99c8f82767d8591959fa6afb7bbb3a9a19791847a6e675d544a4034281c10040000000000000000000004111d2935414b555d605d55636f7c8996a2afbcc0b3a6998d8073665a6673808d99a6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a79a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cddad5cdc8c4c3bebab8b5afaca9a8a19e9a97928e8a86827e7a76716d6865615d5654514b4a5764717e7c7976726f6d666663605d55524c443a3025190d01000000000a1724303d4a5763707d8a96999999999999999999999999999999999999999b9ea5afbbc6d2d7d0cac6c5bfc5c7cbd1ccc0b6aca49f9a99999999999999999999999a9da5afa69f9c999999999999988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d93939393939393939393939393939393939393939393939393979ea1a8b2bdc9d5e1e9e1dbd6cbc3bcb3aea49d9a93939393939393939393939393939393939393939393939393877b6e6154483b2e2115080000000713202d3a4653606d7985929facb8bcb8b4aeaca7a7a9afb7c0c1b5a89b8e827568696f7c859298a2aebabdb2a89e938a7d706768727f8c97a1adb9b8ab9f9285796d60535c6976838f9ca9b6b8ab9f928578665b5044382b1f1206000000000814212e3b4754616e7b8793928e929da9b5b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174818e9ba7b4a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939facb1b1b1b1b8babec5ced3c9c1bbb6b5b1b1b1b1b1a79a8d81746762605c555b595856566a7784919daab7c0b3a79a8d8074707b838f949da5afb7bbb3a9a1969083796d665c5144382c1f1206000000000000000000000613202c3945515d676d6762636f7c8996a2afbcc0b3a6998d8073665a6673808d999b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cddad4ccc7c3c2c5c6c5c0bbb9b6b2acaba9a29f9b98928f8b86827e7a76716d6864605d555355616c716f6d666663605c545653514b46413a32281e130800000000000a1724303d4a5763707d8a96a3a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a8aaafb7c1ccc6c6c6c6cfd2ccd2d3d7dcd2c7beb6afaca7a5a5a5a5a5a5a5a5a5a5a5a7a9afb7b0aba9a5a5a5a5a5a5988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a4abadb2bac4cfdae5eaeae6ddd5cec5bebaaea8a6a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094877b6e6154483b2e2115080000000a1623303d495663707d8998a2aebac7c5bfbab8b4b4b6bac0c9c1b5a89b8e8175706d6a6f7c86929fa4aeb8baafa59e9184796d606d7984919ea9b3baaea2988a7e7164565b6875828e9ba8b5b9ac9f9386796c605346392d20130600000005111e2a36414d5665727f8b9a9d9a9da5afbab7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939facb9bebebec5c6cad0d7dbd3ccc6c3c1bebebebeb4a79a8d81746e6e6d67696866646361687985929facb8beb1a5988b7e72696e7a828e939da5afb7bbb2a8a0958f82796d6053463a2d201307000000000000000000000714212d3a4754606d7a716c636f7c8996a2afbcc0b3a6998d8073665a6673808d8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8074675a4d4134271a0e010000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdd4cac2bbb7b5b8babec4c5c6c3bdb9b7b3adabaaa39f9b99928f8b86827e7a76716d6764605c5a616462605c545653514b4a4745403935302820160c0200000000000a1724303d4a5763707d8a96a3b0b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b5b6bbbababababababac2c4c7ccd4dcd9d1cbc7c0bbb9b3b2b2b2b2b2b2b2b2b2b2b2b4b5bababbb7b6b2b2b2b2b2a5988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7adadadadadadadadadadadadadadadadadadadadadadadb0b8b9bdc4ccd6e0e0deddddddddd7d0cac0b9b5b3adadadadadadadadadadadadadadadadadadadadadadada194877b6e6154483b2e211508000004111d2935414c566773808d9aaaafb5b7bcc2c5c5c1c1c2c6cbd2c6b9ac9f9387827d78736e717e8a929ca5afbab9aca1968d80746a67727f8b97a1adb9b3aa9c8f8276685e5b6774818e9aa7b4bbafa49a877a6d6054473a2d2114070000000714202d3946525e687683909caca7a9afb7c0b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939facb7b7b7b7b9bbc0c7d0d7cdc5bebab8b7b7b7b7b4a79a8d81747a7b7978767473716f6e6d7a8798a2aebabfb4ab96897d7063686d78818e939ea5afb7b3a9a19791847b6e6154483b2e21150800000000000000000006131f2b38434e586673807e716a6f7c8996a2afbcc0b3a6998d8073665a64717e8282828282828282828282828282828282828282828282828282828282828282828282828282828282828282827e7164584b3e3125180b000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdccc2b8b0aba9abadb3b7b9bdc3c5c5c4bebab8b4aeacaba39f9c99928f8b86827e7a75706d6763605b5353504a494645403d3a39352f29251e160e040000000000000a1724303d4a5763707d8a96a3adadb4b5b9b6b3afadadadadadadadadadadadadadadadadadadadadb6b7bbc2cad4cfc7c0bbb9aeadadadadadadadadadadadadadadadadadadadadadadadadada5988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bdc4c5c9cfd6dfd9d4d1d0d0d0d0d0d0d2cac5c1c0bab9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9aea194877b6e6154483b2e21150800000713202c3945525d687784909c9fa3ababb0b7b8bdc3c6cacfd7d4c7bbafa499938f8a847f7b7573808d939ea8b2beb2a89f92877c6f626d7985929eabb5b9ac9f93867a6d615a6773808d9aa6b3c0b6a194877b6e6154483b2e2115080000000814212e3b4754616e7b87939facb4b5bac0c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939fabababababacafb5bdc7cfc5bbb3adababababababa79a8d81747f8886848381807e7c7b797c8895aab4bfbaaea399877b6e615d666d78818e939ea5afa9a29792857c6e695e52463a2d23190f0400000000000000000815222e3b4754606a7784867c6f6f7c8996a2afbcc0b3a6998d8073665a616c71757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575716c6256493d3024170a000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc7bbb0a69f9c9fa2a9abadb2b7b8bcc3c4c6c5bfbab8b5aeacaba39f9c99928f8b86827d79746f6c65615f5753514b454039312c29241d19130c04000000000000000a1724303d4a5763707d8a96a0a0a0a7a9acaaa6a2a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a9abb0b8c2ccc7bdb5afaca1a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c5c7cbd1d2d5daddd5cec8c5c3c3c3c3c3c3c5c7cbd1cdc6c6c6c6c6c6c6c6cfcac6c5c3c3c3c3c3c3c3c3c3baaea194877b6e6154483b2e21150800000714212d3a4754606d7a868b8f92999c9fa6aaacb2b8b9bec5cdd7ccc0b5aba49f9c96918c87827d77818f96a1acb6bbafa3998f82756a6773808d99a4afbbafa4998b7e71645466737f8c99a6b2bbaea295887b6f6255483c2f221509000005111e2a36414c5665727f8b99a4afbbc2c5cbc4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986939e9e9e9e9e9e9fa4abb5c0cabeb3a9a29f9e9e9e9e9e9e9a8d8174808d9391908e8c8b89878584919eabb8c4b9ac9f9286796f6d6769666c78818e939ea5a29792857c6f6a5f574d433d352b21160a0000000000000003101c28343f4a54626f7c8991847a6f7c8996a2afbcc0b3a6998d8073665a5a6164686b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6864625a5045392d211508000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc3b7ab9f948f92979a9ea1a8aaacb1b6b8bcc3c5c7c5bfbbb9b5afacaba39f9c98928e8a85817c78736e6964605d55514b43392f2318120d080200000000000000000a1724303d4a5763707d8a939393939a9d9f9d999593939393939393939393939393939393939393939c9fa6b0bbc7c0b5aba39f949393939393939393939393939393939393939393939393939393938c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b9babfc6cfd8dfd5cbc3bcb8b7b6b6b6b6b6b9bbbfc6cfd7d3d3d3d3d3d7cdc5bebab8b6b6b6b6b6b6b6b6b6b6aea194877b6e6154483b2e21150800000713202c3945525d686d7a7e82868b9094999ea0a8abadb3bbc0c8d2c7bdb5afaca8a19e99928e81757a84919aa4afbbb5ab9e94897c6f626e7b87939facb9b5ab9b8e8275665c65727e8b98a5b1bcafa296897c6f6356493c3023160900000714202d3946525e687683909cabb5c0ccd1d1c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000613202d394653606c7986919191919191919399a4afbbc6baada29792919191919191918d8174818e9b9e9c9b99979698929196a1adb9c5b8ab9e92857e7b7a787674737178818e939e9892857c6f6a5f5756544f473d32271b0f0300000000000006121f2b3844505c6674808d968e81757c8996a2afbcc0b3a6998d8073665a54606b6f78787878787878787878787878787878787878787878787878787878787878787878787878787878787878756f65594d3e34291d1105000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cdc2b5a99c8f8285898d9196999da0a7aaabb1b7b8bdc3c5c7c5c0bbb9b5afacaaa39f9b97928e8984807b76716d67605c554b4034291c1004000000000000000000000a1724303d4a5763707d87878787878e9393908c8987878787878787878787878787878787878787878f949fabb7c4bbafa3999287878787878787878787878787878787878787878787878787878787877f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaeb4bdc6d1d9cec3b9b1acaaaaaaaaaaaaacaeb5bdc5ced6dfe8e6dbcfc5bbb3adabaaaaaaaaaaaaaaaaaaaaaaa194877b6e6154483b2e211508000004111d2935414c565d676d71757a7e83888c91969a9ea1a9aeb6c0cbd0c7c0bbb9b2adaba39a8d8073707d88939fa8b2bdb0a69c8f82766b6975828f9ca8b2b8ab9f9285796d6064717e8a97a4b1bdb0a3968a7d7063574a3d3024170a00000814212e3b4754616e7a87939facb9c6d2ddd1c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f03000000000005121e2b3845515e6b78848484848484848487939facb9c5b8ab9f928584848484848484848075828f9ca8a9a7a6a4aaa39f9ea1a9b2bdc6b9ada297928a88868583817f7e7c7a818e9b92867c6f6d6769686360594f43382c1f13070000000000000713202d3a4653606d7985929e938b7e7d8996a2afbcc0b3a6998d8073665a56636f7d858585858585858585858585858585858585858585858585858585858585858585858585858585858585858175685b4f4235281c0c00000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887c797d8084888c9095989d9fa7aaacb1b7b9bdc4c6c7c5c0bbb9b4aeaca9a29f9a96918c88837e79746d675c5145382c1f1306000000000000000000000713202d3a4653606d787a7a7a7a7a818e8683807c7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a828f9ca9b6c2b9ac9f92877b7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9a9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb4bfcbd4c8bcb1a7a09d9d9d9d9d9d9fa3abb3bcc4cdd6dee2d6cabeb3a9a29f9d9d9d9d9d9d9d9d9d9d9d9d94877b6e6154483b2e2115080000010d1924303a444c555d6064686d72767b7f84898d92979da4aeb9c5d1d2ccc7c4bdb9b5a5988c7f726b74808d96a0acb8b7aa9f94897c6f63707d8a96a0acb9aea298897c706363707d8a96a3b0bdb0a4978a7d7164574a3e3124170b00000c1825323f4b5865727e8b99a4afbbc7d2ddd1c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f03000000000004111d2a3743505c6872787878787878787885919eabb8bfb2a5988c7f7878787878787878737683909da9b6b4b3b1b4aeacabadb2bbc4cabeb3a9a29e97959791908e8c8a888785929b8e817d7b7a7876746f6b6054483b2f221509000000000004101c2934404b5563707d8997a19f92867e8a97a4b1bdc0b3a6998d8073665a5663707d8991919191919191919191919191919191919191919191919191919191919191919191919191919191918f8376695c504336291d1003000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f7074787c8084888c9095999da0a8abadb2b8babec5c7c7c5bfbab8b3adaba8a09e9994908b8581796d6053473a2d2014070000000000000000000006121f2c3844505c666d6d6d6d6e7b869293908c8984807c78736f6d6d6d6d6d6d6d6d6d6d6d6d6d7a86929facb9c2b6a99c8f83766d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d90909090909090909090909090909090909090909090909299a3aebac7d1c5b8aca0959090909090909299a2a9b3bbc4ccd6ded3c6baada2979290909090909090909090909090877b6e6154483b2e211508000008131e28323a41464c5154565e6165696e73777c80858d929da9b5c1ceccc7c3c2bfbdb0a4978a7d71646d7984919ea6b0bdb0a69b8e8275696c7884919eaab7b3aa998c807366636f7c8996a2afbcb1a4988b7e7165584b3e3225180b00000b1724313e4a5764717d8a949fabb5c0ccd7d1c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f030000000000020f1b27333f4b5660686b6b6b6b6b6b6b7885919eabb8bfb2a5988c7f726b6b6b6b6b6b6b6b7884919eabb7bfbfbebfbab8b8b9bdc4cdcfc5bbb3adaba3a9a19e9c9b9997959792979e938e8a88868583817d6f6356493c30231609000000000006131f2c3845515c6774818e9ba9a2989185919eabb8c4c0b3a6998d8073665a5663707d89969e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9c8f8376695c504336291d1003000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f63676a6f73777b7f83888c91959a9ea1a8abaeb3b7bcc2c6c9c7c5bebab8b2acaaa69f9c988f8276675c5145382c1f13060000000000000000000003101c28343f4a545c6060606974818e989f9d9996918d8984807c77726d686260606060606064717d8a98a3aeb5b7b1a7988c7f7265606060606c717576777778787879787877777573716d6860606060605c554b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f83838383838383838383838383838383838383838383838387929facb9c5d0c3b7aa9d90838383838383879297a1a9b2bac4ccd6d2c5b8ab9f928583838383838383838383838383837b6e6154473b2e21140800010d1925303a444c5254575a555d60626567676a6f7478808d9aa7b3c0cac2bbb7b5b2b7b5ab96897c6f6367707d8a949eabb5b9ac9f92877b6e65737f8c99a8b1b6a99c8f837666626f7b8895a2aebbb2a5988b7f7265584c3f3225190c00000a1623303c4955616c76829099a4afbbc5d0d1c4b7ab9e9184786b717e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f030000000000000b17232f3a444e565c5e5e5e5e5e5e6b7885919eabb8bfb2a5988c7f72655e5e5e5e5e5d677985929facb1b3b4b6b7b9bbc0c7c9cfd6d7cdc5beb9b8b0b2adaba9a7a6a4a9a29fa2a59e9b969a9391908b7e7164584b3e3125180b00000000000714202d3a4753606d7985929fabaaa1979197a1adb9c6c0b3a6998d8073665a5663707d8996a3abababababababababababababababababababababababababababababababababababababa99c8f8376695c504336291d1003000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6258606266696e72777b7f84888d91969a9fa2aaabb0b8b9bec5c8cac6c4bdb9b7b0aa9e94897c6f62554b4034291c100400000000000000000000000c17232e38424a505358626e7b87929faaaaa8a09e9a96918d89847f7a756f6a636059545c6675818e9baaa6a8abaca095887b6e6155545464717e82838384848585858585848382807e7a736d665c5453514b43392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825313e4a57636d7277777777777777777777777777777777777777777777777884919eabb7c4c7baaea194877b77777777777d859197a1a8b2bac4ccd2c5b8ac9f92857c777777777777777777777777776e685e5246392d2014070005111d2a36414c565e61646669676d6f7174736e6266727f8c98a5b2bfc2b8b0aba9a5aaaca499877b6e61616b75828f99a3aebbafa3998c8073656f7b8895a0acb8ac9f9285796d616e7b8794a1aebab2a5998c7f7266594c3f3326190c00000814212d3944505a626f7c87939faab4bfcad1c4b7ab9e91847876767e8b98a4b1b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000007121d28323c444b504d575e6163636b7885919eabb8bfb2a5988c7f72656363636363616d7a8798a2aba4a6a8a9abacafb5bdbec6d0d7d0cac6c5c1bdbeb9b8b6b4b2b1b3adabadafaaa8aca49f9e968a7d7063574a3d3024170a0000000004111d2935414c5664717d8a98a2aeb3a9a19ea1a9b3bec9c0b3a6998d8073665a5663707d8996a3b0b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b6a99c8f8376695c504336291d1003000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f62555455575f6165696e73777c8084898e92989c9fa6abadb3b9bbc0c7cac9c7beafa59c8f82756a605443392f23180c00000000000000000000000006111c2630383f47535f6a75818e99a3afb6b2acaaa8a19e9a95908c86817c76706b6260606d7985929897999c9ea19d908377695f53505b6676838f90909191929292929291908f8d8a8680786d60594f45403930271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222e3a46515b63656a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6b7884919eabb7c4c7baaea194877b6e6a6a6a6b707c859196a1a8b2bac4ccc7baaea29892857b6e686a6a6a6a6a6a6a6a6a6a615e564d41362a1e1105000713202d3946525e686d717375787a7c7e8080736765727f8c98a5b2bfbbb0a69f9c999da09f9386796d6059626e7b86929fabb5b5ab9e9184786c6a7784919daab7aea298897c6f626e7a8794a1adbab3a6998d8073665a4d4033271a0d000004101c28333e47545f6a74818e98a2aebac5d0c5b9ac9f928683838384919eaab7b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f03000000000000010c16202a323a3a46535e696e7070707885919eabb8bfb2a5988c7f727070707070706e6e7b8893999698999b9c9e9fa4abacb4bec8cdc5bebab8b4b6b7b9bbbfbebfbdbebab8babab6b4b6afaca295887c6f6255493c2f221609000000000713202c3945525d6875828f9baab3bbb3adabadb3bbc4cfc0b3a6998d8073665a5663707d8996a3adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadada99c8f8376695c504336291d1003000000000000000000000000000406070f1a2734414d5a6774808d9aa7b3c0c8bbaea295887b6f625548494d5355575f61666a6f73787c81858b90949a9ea1a9acafb6babec5c0b6ac9e93887c6f62584e4331271d1207080400000000000000000000000a151e2a36414c56626f7c87939fababacb2b5b7b2adaba7a09d99928e88827d766f6a626e7b8385888a8d8f91969a8c7f7266574d53606c7985929c9d9e9e9e9f9f9f9e9e9d9b9a98928d81756b6155483c2e271e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2a353f495157595d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5e6b7884919eabb7c4c7baaea194877b6e615d59606a6f7b849196a1a8b2bac4cabfb4aaa19791837a6d665c5d5d5d5d5d5d5d5d54524d443b3025190e02000714212e3a4754616d7a7e80828486898b8d85786865727f8c98a5b2bfb7ab9f948f8c91969a918578665c535f6974818d99a3afb9aca196897c706673808c99a8b2b4aa988b7f72656d7a8793a0b5bfb3a79a8d8074675a4d4134271a0e0100000b17222b37434e58616e7b86929fa9b3becac7baaea398929090909196a0acb9b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000000050f1820212e3b4854616e7b7d7d7d7d85929fabb8c1b4a79a8e817d7d7d7d7d7d7d7b6f7c848688898b8c8e909193999aa2acb7c2c5bbb3adaba7a9aaacaeb5b1b3b4b6b7b9bbc0bec0c0bbb3a994877b6e6154483b2e211508000000000714212d3a4754606d7a86929facb9c4beb9b8b9bec4cdccc0b3a6998d8073665a5663707d8996a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09c8f8376695c504336291d10030000000000000000000001070c1013141b1b2734414d5a6774808d9aa7b3c0c8bbaea295887b6f6255483c4246484d5355585f62656c6f74797e83888d92979c9fa4acaeb4b9bbafa49a8f82756a6054463d321f15171614100b050000000000000000000713202d3946525e6876828f98989b9ea1a8a8abadb3b7b1acaba39f9b948f89827c756e696e76797b7d8082848789887b6e61544855626e7b8898a2aaaaabababacababaaaaa8aaa29f938a7d7063574a3d3024190c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18232d373f464a4c505050505052585a5d5d5d5d5d5d5d5d5d5d5d5d5d5e6b7884919eabb7c4c7baaea194877b6e615d5d585f696e7b849196a1a8b2bdc9c6bcb3a9a0958f82786d605a505050505050504746413b32291f14080000091623303c4956636f7c898d8f91939a9897877a6d65727f8c98a5b2bfb5a99c8f827f84898e9083776a5c605c616e7b87929fabb5b2a89a8d8174666f7c8896a0acb4a79b8e8174686d798699a3aebbb4a79a8e8174675b4e4134281b0e010000050f1b26323c46525e68737f8c97a2adbac6cbbfb4aaa39f9c9c9c9ea0a8b2bdb0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f03000000000000000008121a25323f4c5865727f898989899297a2adbac2b5a99d938e898989898989897f726f78797b7c7e80818384868a909aa6b2bfbeb3a9a29f9a9c9e9fa3aba4a6a7a9abacafb5b1b3b4b6ada29786796d6053463a2d201307000000000b1825323e4b5865717e8b98a3aebac7c9c6c4c6c9cfd6ccc0b3a6998d8073665a5663707d8993939393939393939393939393939393939393939393939393939393939393939393939393939393938f8376695c504336291d1003000000000000000000030b12181d1f2028282834414d5a6774808d9aa7b3c0c5bbaea295887b6f6255483c363a3c4247484e53535b6063676d71767b80858a8f939a9fa2aaacb2ab9f93877c6f62584e43342b28282423201c17100800000000000000000714212e3a4754616d7a8285888b8e9196989b9fa2a9abadb2b5aeaca69f9c948f89817b726c666c6e717375787a7c7e71695e534b5864717e8b97aab4b7b7b8b8b8b8b8b7b6b5b4aea59b8f827568564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c252d353a3e3f44444447525c64676a6a6a6a6a6a6a6a6a6a6a6a6a6a6b7884919eabb7c4c7baaea194877b6e6a6a6a6a6a6a696e7b849196a1adb9c5cec5bbb1a79f948d80736c61584e43444444443b3936302920170d0200000714202d3a4753606d7986929c9e9fa4a996897c6f65727f8c98a5b2bfb5a89b8e8175777c8185817568666d665e6974818e99a4afb8ab9e9285796d6a7784919eaab7aa9d91847767667986929facb9b4a89b8e8175685b4e4235281b0f020000000a15202a36414d56606d7a85929faab4bfcbc6bcb4aeaca9a9a9aaacb2babcb0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f030000000000000008121a242c363f4c5865727f8b9696969fa2a9b3bec5baafa59d9a9696969696968c7f7265666d6e707173757678797e8a97a4b1bdbaada297928e8f9192999697999b9c9e9fa4aba4a6a8a9ab9f928578665c5145382c1f1306000000000d1a2733404d5a6673808d96a1adb9c1ced2d1d2d5dad9ccc0b3a6998d8073665a5663707d878787878787878787878787878787878787878787878787878787878787878787878787878787878787878276695c504336291d10030000000000000000030d151d24292c2d35353535414d5a6774808d9aa7b3b9b9b9aea295887b6f6255483c2f2d31373a3c4347495053555d60646a6e73797d82878d92989ea0a8a4998e81756a5f53463c3235353531302d28221a1208000000000000000713202d3946525e686d76797b7e8184878b8e92979a9ea1a8b2bbb9b0aba69f9c938e867f786e6962646669686d70716c61574d4a546774808d9aa7b2b1b1b1b2b6b7bbc2c3c2bfb8ab9e928578685d5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c232a2e313237373f4c58646e737676767676767676767676767676767884919eabb7c4c7baaea194877b767676767676767676767b84919eabb7bec4cdc3b9b0a69d928a7e716a5f554b403537372e2d2a251f170e0500000006131f2c3845515c677783909daaacafa4988b7e7165727f8c98a5b2bfb5a89b8e82756a6f747a7c6f6c71796d68626e7b87939facb9ada197897c6f6774808d9aacb6ac9f93867a6d6c7885929fabb8b5a89b8f8275685c4f4235291c0f02000000040e1925303b45515d6773808d98a3aebac7cfc6bfbab9b6b6b6b7b9bdc3bcb0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000000009121a242c363e48505965727f8b98a3a3abadb3bbc5cbc0b7afa9a7a3a3a3a3a3988c7f72655c6061636566686966717e8a97a4b1bdb8ab9f92858183848687898b8c8e909193999698999b9d9e9d9184776a544b4034281c1004000000000714212d3a4754606d7984919ea5afbcc5d0dbdfe1e6d9ccc0b3a6998d8073665a53606d787a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d6053473a2d2014070000000000000000010b151f272f35393a42424242424d5a6774808d9aa7acacacacaca295887b6f6255483c2f22262b2d3237383f44464b5153585f62666d71767b80858b91969c9f93877c6e62584e4342424242423d3c39332c241a100500000000000005111d2a36414c565e61666c6f7174787b7e8285898d9196a1aab4bfbbb7b0aba59e98928b827b706b625b565d606364615a5044505c667683909ca6a5a5a4a4a5a9abb0b8c1cac6b9ada197877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a11181e2225262a34404d5a6773808383838383838383838383838383838387929facb9c5d0c3b6aa9d9083838383838383838383838384919eabadb3bbc0c8c2b8aea49f92867c6f675d51453e332921201e19140d050000000004101c2934404b556774818d9aa7b4b3a69a8d807367727f8c98a5b2bfb5a89b8e82756862676d6f6d757e847a6d616975828f9ca9b2b3a99a8d807367707d8a9aa4afafa499897c6f6b7885919eabb8b5a99c8f8276695c4f4336291c10030000000008141f2935414b55616e7a86929facb6c0ccd1cbc7c5c3c3bfbfbfbfbfbcb0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f03000000000009121b242c363e48505a616c737f8c99a6b0b8babec5cdcfc9c0bab5b4b0b0b0b0a5988c7f7265606266656362605d65727f8b98a5b2beb7aa9d9083777677797b7c7e808183848688898b8d8e9091938f8376695c50432e23180c00000000000613202c3945515d67707d89939eaab4bfcad6e0ebe6d9ccc0b3a6998d8073665a505c666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d675d5145392c201306000000000000000007121d2731394045474e4e4e4e4e4e5a6774808d9a9f9f9f9f9f9f9f95887b6f6255483c2f221a1e21262b2d3337394045474e53545c6064696e747a7f848a8f948e81756a5f534e4e4e4e4e4e4e4a49443e362c22170b000000000000010d1925303a444c525c6467656568696e7175797c80849198a3aebac7c2bbb7afaaa29f948f857d726d635c525456575550484653606d7985929a9998989897989c9fa6b0b8c1c9beb3a995887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d1216181c2936424f5c6975828f9090909090909090909090909090909299a3aebac7d1c4b8aca0959090909090909090909090909196a19ea1a9aeb6c0cac0baaea2989183796d605a50453b31251a110e08020000000000000c18232f3f4b5865727e8b98abb5b5a89b8e827568727f8c98a5b2bfb5a89b8e8275685c606b707a818a8e81746a64707d8a96a1adb7aa9d918477696d7a86939facb5ab988b7e726b7784919eaab7b6a99c908376695d5043362a1d100300000000020d18242f3a46525e6874818e9aa4afbbc8d4ccc4bdb9b7b2b2b2b2b2b2b0a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807373808c99a6b3b1a4978b7e7174808d9aa7b3a89c8f8275695c4f4236291c0f0300000000020b1b242d363e48505a616c707e87929facb9c5c3c2c2c2c2c2c2c2c2c1bcbcbcb2a5988c7f72656a6f7372706f6d686a73808d99a6b3c0b6a99c8f837669666d6e707173747678797b7c7e8081838586888175685b4f4235281c07000000000004111d2935414b55606b74818e98a2aebac4cedae5e6d9ccc0b3a6998d8073665a535e696e72727272727272727272727272727272727272727272727272727272727272727272727272727272727272716c6155493d3023170a00000000000000000c18242f39434b51535b5b5b5b5b5b5b6774808d929292929292929292887b6f6255483c2f221512151b1b22272b2f35393c43474b5153575f61676d72787d8288877b6e61585b5b5b5b5b5b5b5b575550483e33281c10040000000000040d19242f3a434f59646e73726d66616165666d6f797e86929facb9bdb9b7b2b8b4aea69f9792877f736e635b52494b49453e4855626f7b888e8d8c8c8b8b8b8c8f949ea6b0bbc7bcafa295897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090f1c2936424f5c6975828f9c9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb4bfcbd4c8bcb1a7a09d9d9d9d9d9d9d9d9d9d9d9d9ea19791979ca4aeb8c1cabfb4aaa0958e81746c61574d42362a21170d03000000000000000716232f3c4956626f7c8999a3afb6aa9d9083776a727f8c98a5b2bfb5a89b8e827568666d737d848e9393877c6f626d7984919eabb8aca095877b6e687784909daab4a79a8d81746a7784909daab7b6a99d9083766a5d5043372a1d1004000000000007131d2a36414c56626e7b87939facb9c4cec4bab2acaaa5a5a5a5a5a5a5a396897d707783909daab6b2a5988b7f727f8c98a5b2a69a8d807575808c99a6b3b1a4978b7e7575808d9aa7b3a89c8f8275695c4f4236291c0f03000000000a141d2d363e48505a616c717e879299a3aebab8b6b6b6b6b6b6b6b6b6b6b6b6b6b2a5988c7f72656f7c807e7d7b7a797776818e9ba7b4c1b5a89b8e8275686060616364666869666d6e7071737576787a7b7c6e6255483b2f2215080000000000010d18242f3a434f59616e7a86929fa8b2bdc9d5dfe6d9ccc0b3a6998d8073665a54616e7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7164574b3e3124180b0000000000000004101d2935404b555d606868686868686868738087868686868686868686877c6f6255483c2f22150a0a0f11171b1f24292c3137394045464d53555d60666c70767c7e71696868686868686868686864615a5044392d20140800000000010c161f2935414c56616b73807f79716c62676d737c838b9298a3aebab2acaba5abadb3b0a9a299928b80736d635b51473e42464a5763707d8282817f7f7e7e7e7f828f949eaab7c3bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca8a9a9a9a9a9a9a9a9a9a9a9a9a9acaeb4bdc6d1d9cdc3b9b1acaaa9a9a9a9a9a9a9a9a9a9a9ab9e91858d929ca6b0b9c3c5bcb1a89d938a7e71695e53463f33291f1409000000000000000714202d3a4753606d7a86929facb8ab9e92857867727f8c98a5b2bfb5a89b8e82756a6e79808791969e999082766c6673808c99a7b1b1a8978b7e716774818d9aa7b4a99c9083766a7783909daab6b7aa9d9084776a5d5144372a1e11040000000000010e1925303b47535f6975828f9ba9b2bdc9bdb2a8a09e999999999999999996897d707783909daab6b2a5988b7f727f8c98a5b2aa9d9183818183909daab7b6a99d9083818183919daab5a89c8f8275695c4f4236291c0f0300000006111b262f3e48505a616c717e879299a3abb4b1aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a5988c7f7265727f8b8b8a888785848284919eabb8c0b3a79a8d80746f6d686a6967666463616061636566686a676d6e6e6a5f53473a2e21140800000000000007131d28313d46525e68727f8c96a1acb9c3ced9e5d9ccc0b3a6998d8073665a5663707d898c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8276695c504336291d100300000000000006131f2c3945515d676d7575757575757575757579797979797979797979796f6a5f53473a2e211717171717171717181d1f262b2e34383c42464c51545b60646a6f716c7175757575757575757575706c6155493c3023160a0000000008131e28313a45525d68707d8a8c847e766f7179808790949fa3aab4afa8a19e989fa2a9b2b3aba39f928c80736d62594f454d52545a616b7076757473727271717276828f9ca8b5c2bcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca8b5b6b6b6b6b6b6b6b6b6b6b6b6b9babfc6cfd8dfd5cbc3bcb8b6b6b6b6b6b6b6b6b6b6b6b5a89b8e81808d939ea7b1bcc6c3baafa59f92857b6e615a50453b30251a0e0200000000000006131f2c3845515d677784919eaab7ada297867a6d727f8c98a5b2bfb5a89b8e82756e7c838d9399a1a89f948a7e71676e7b8895a0acb4a79b8e817468717d8a97a9b2ab9e928578687683909da9b6b7aa9d9184776a5e5144372b1e110400000000000008141e2b37424d5763707d8996a1adb9c5b9aca096918c8c8c8c8c8c8c8c8c897d707783909daab6b2a5988b7f727f8c98a5b2aca095918e8e9095a0acb8b7ab9f95908e8e9195a0acb5a89c8f8275695c4f4236291c0f030000000b17222d3841505a616c717e879299a3abb4b1a79f9d9c9c9c9c9c9c9c9c9c9c9c9c9c9c988c7f726673808c9896959892918f9196a1adb9c2b5a89c8f827d7b7a7877767472716f6e6d666968666563626062625f574e42372b1e1206000000000000010c161f2a36414c56606d7984919ea8b1bdc8d4dfd9ccc0b3a6998d8073665a5663707d8996999999999999999999999999999999999999999999999999999999999999999999999999999999998f8376695c504336291d10030000000000000714202d3a4753606d798181818181818181818180736c6c6c6c6c6c6c6c6c625f584e43372b232323232323232323232323232323282c31373a41454a5053585f6265717e818181818181818181817e7064574a3d3124170a000000010d19242f3a434f59606d7a849196918a827b7e848d92999fa6aeb1aba39f96918c9297a0a8b0b5afa49c928b7f726b61574d575e6167676767696867676767656465717e8b97a4b1bebcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca8b5bebebebebebebebebebebebec5c6cacfd7dfe3d9d1cac4c0bfbebebebebebebebebebeb5a89b8e8279828f95a0aab4bfcac0baada2978f82766c62574d42362a1e120500000000000004101d2935404b556875828f9ba8b5b3a995887b6f727f8c98a5b2bfb5a89b8e8275798490959fa4abb0a69e9184796d697784919daab7ab9e918478696e7a8796a1adada197877a6d7683909ca9b6b7ab9e9184786b5e5145382b1e1205000000000000020e1a26313c4653606c7884919eabb8c3b7aa9e91847f7f7f7f7f7f7f7f7f7f7b6e7783909daab6b2a5988b7f727f8c98a5b2b1a7a09d9b9b9da0a7b1bcbcb1a79f9d9b9b9da0a8b1b5a89c8f8275695c4f4236291c0f030000030f1b27333f4953616c717e879299a3abb5b8ab9f95908f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8c7f726774818d9aa3aaa29f9d9c9ea1a8b2bdc3b7aa9e948f8a8887858482817f7e7c7b797876757372706f6d68665e54453c31261a0e0200000000000000040d1925303b45515c67717e8a95a0acb8c3ced9d9ccc0b3a6998d8073665a5663707d8996a3a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59c8f8376695c504336291d10000000000000000714212d3a4754606d7a878e8e8e8e8e8e8e8e8e83776a5f5f5f5f5f5f5f5f55534e463c3130303030303030303030303030303030303030302f35383f44464e535a6774808d8e8e8e8e8e8e8e8e8c807366594d4033261a0d00000004111d2935414c56616b74818e96a09e948f888a91969fa3abb0ada7a099928d847f8591969fa6b0bbada49f93877d70695f555e696e747474747474747474746e6463707d8a96a3b0bdbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca8b1b1b1b1b1b1b1b1b1b1b1b1b1b8b9bec5cdd7dbd1c7bfb8b4b2b1b1b1b1b1b1b1b1b1b1b1a89b8e827579839198a2aebac0cabeb3a99f948b7e71695e52463a2d201407000000000000000c18242f404d5a6673808d99a6b3b1a5988b7f7c7c808d9aa7b3c0b5a99c8f827c7c808d9aa7afb5b9ada1968c7f726773808d99a9b2aca196877b6e687885919eabb3a996897c6f76838f9ca9b6b8ab9e9185786b5e5245382b1f12050000000000000009151f2b3844505b6673808d9aa7b1bcb8ac9f92857a7272727272727272726e697783909daab6b2a5988b7f727f8c98a5b2b9b1acaaa8a8aaacb1b9c3c2b9b1aba9a8a8aaacb1bab5a89c8f8275695c4f4236291c0f03000005121f2b3744505b65717e879299a3abb5bdb6a99d9083828383838383838383838383838383827e716875828e9ba8b4aeacaaa9abadb2bac4c7bbb0a69e9c97959892918f8d8c8a898786848381807e7d7b7a7670665a4e4135281c0900000000000000000008141e2934404b55606c7884919da8b1bdc8d4d9ccc0b3a6998d8073665a5663707d8996a3b0b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a99c8f8376695c504336291d0d080200000000000714212d3a4754606d7a87939b9b9b9b9b9b9b9083776a5d535353535353534847433d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d434d5a6774808d9a9b9b9b9b9b9b998c807366594d4033261a0d0000000613202c3945525d68707d8a939da8a69f9c95979ea1a9afafa9a29f9590878079727b848f949fa7b1bbafa49992867b6e675c616e7b81818181818181818180746763707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca5a5a5a5a5a5a5a5a5a5a5a5a5a5abadb3bbc5cfd5cabfb5ada8a6a5a5a5a5a5a5a5a5a5a5a5a59b8e82756e7c86929fa4aebac3c2bbb0a69f92857b6e6154483b2e21150800000000000000071824313e4b5764717e8a97a4b1b3a79b918b89898d929da9b5c1b7ab9f948f89898d929dacafb6beb2a89e9285796d6f7c8896a1adb2a8978a7d716976828f9ca9b1a4988b7e7176828f9ca9b5b8ab9e9285786b5f5245382c1f060000000000000000030f1c28333f4a54626f7c8895a0acb8baaea2988a7d716666666666666666616a7783909daab6b2a5988b7f727f8c98a5b2bfbcb8b7b4b4b7b8bcc3cbcbc2bcb7b6b4b4b7b8bdc2b5a89c8f8275695c4f4236291c0f0300000613202d394653606c79839097a1abb5bdc0b3a79a8d8076767676767676767676767676767676716c6976838f9ca9b6bab8b7b5b8b9bdc4ccccc1b8b0aaa8a3aaa29f9d9c9a999796999291908e8d8b8a88878276695c4f4336291c10030000000000000000020c18232f3944505b66717e8a95a0acb8c4cfdaccc0b3a6998d8073665a5663707d8996a3b0b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a99c8f8376695c504336291d19130c05000000000714212d3a4754606d7a8793a0a8a8a8a8a89d9083776a5d504a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4d5a6774808d9aa7a8a8a8a8a6998c807366594d4033261a0d00000713202c38444f59606d7a84919ea5afb0aba9a2a4abadb2aca49f97928b837c746d696e7a828f959fa8b2b5aba2989083796d60626f7c888d8d8d8d8d8d8d8d86796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9898989898989898989898989898989ea2a9b3becad0c4b8ada39c99989898989898989898989898988e82756a717e8a929da8b2bdbab1aaa29f948e8275685b4f4235281c0f020000000000000916232f3c4956626f7c8995a9b3b8ada39b9895959a9da4aeb9c5bbb0a69f9c95959a9da49fa4acb6b9ada1978c7f726a7884919eabb3a69a8d80736773808d99a6b3a6998d807376828f9ca9b5b8ac9f9285796c5f52462e23170c0000000000000000000b17222d3847535f6a7783909dacb6bfb4aa9b8e8174665b5959595959595d6a7783909daab6b2a5988b7f727f8c98a5b2bcbcbcbcbcbcc1c2c6cbd3d1cac5c1c0bcbcbcbcbcbcb5a89c8f8275695c4f4236291c0f03000005121f2b3744505b656e7b85929ea5afbac4b9ac9f92867b6e696969696969696969696969696964616a7784909daab5b6b8b9bbc0c7c9cfd6d3cac1bbb7b5b0b4aeabaaa9a7a5a4aba39f9e9c9b999896958f8275685c4f4235291c0f0200000000000000000007121d28333f4a54606c7884919da8b2bdc9d5ccc0b3a6998d8073665a5663707d8996a3a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49c8f8376695c5043362d2a251e160e050000000714212d3a4754606d7a8793a0adb4b4b4aa9d9083776a5d56565656565656565656565656565656565656565656565656565656565656565656565656565656565a6774808d9aa7b3b4b4b3a6998c807366594d4033261a0d00000916222f3c4854606b74818e96a1adb4bcb7b6aeb1b8b9afa49a938e857f786f6a6767686d79839096a0acb8b4aaa0958d80746b626f7c88959a9a9a9a9a9a9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9297a2adb9c6cdc0b4a89c918c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8275686c74818d96a0abb4aea79f98928b827b6e6154483b2e211508000000000000000714212e3a4754616d7a8797a2adbab5ada7a5a2a2a7a9aeb6c0cbc2b8b0aba9a2a2a6a49a939aa4afbbb3a99e9185796d75818e9ba8b4a99c90837665717e8a97abb4a89b8e827575828f9ca8b5b9ac9f9286796c5f4a3f34281c1003000000000000000006111c2b37434e5865727f8c9aa4afbbb8ab9e9285796c60534c4c4c4c505d6a7783909daab6b2a5988b7f727f8c98a5afafafafafafafb4b6bac1c9c8c0b9b4b3afafafafafafafa89c8f8275695c4f4236291c0f030000030f1b27333f49535e69707d8a939da8b2bdbaaea3998e81756a6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b7885919ea6a8a9abacafb6bec0c8d2d6cec9c5c4bfbdbebab8b7b5b4b2b1b5afacaba9a8a6a5a39a8e8174675b4e4134281b0e01000000000000000000010b17222d3844505b66717e8a96a1adb9c5d0ccc0b3a6998d8073665a5663707d8996979797979797979797979797979797979797979797979797979797979797979797979797979797978f8376695c50433a3936302820160c0200000714212d3a4754606d7a8793a0adbac1b6aa9d9083776a636363636363636363636363636363636363636363636363636363636363636363636363636363636363636774808d9aa7b3c0bfb3a6998c807366594d4033261a0d00000a1623303d495663707c8992979fa3aab0babebbbdc4b9ac9f9387817a7373737373737373737a84919eaab7bcb1a79f93887d6f666f7c8895a2a7a7a7a79f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7f85929eabb8c5ccbfb2a6998c7f7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7063606d79849199a3aba39f9590867f776e695e52463a2d201407000000000000000713202d3946525e687885929fabb8beb8b3b1afafb3b5b9c0c8d2cac2bbb7b5afafac9f9386939fa9b3b9ada1978b7f72727e8b98a9b3ab9f9285796c6f7b8899a3aeaa9d90837775828f9ba8b5bbaea3998679665c5044382c1f120600000000000000050c131b26313c4754616e7b87939facb9b9ada197897c6f6256493f3f44505d6a7783909daab6b2a5988b7f727f8c98a3a3a3a3a3a3a3a3a8aaafb7c1c0b6aea8a6a3a3a3a3a3a3a3a39c8f8275695c4f4236291c0f030000000b17222d38414d57616b74818e96a1adb9bfb4ab9e93897c787878787878787878787878787878787079869298999b9d9e9fa4acaeb6c0caccc4bdb9b7b2b3b5b6b8b9bebcbebdc0bbb9b7b6b4b3b1a6998d8073665a4d4033271a0d000000000000000000000006111c28333f4a54606d7984919eaab4bfcaccc0b3a6998d8073665a5663707d898a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8276695c504a4746413a32281e130800000714212d3a4754606d7a8793a0adbac3b6aa9d90837770707070707070707070707070707070707070707070707070707070707070707070707070707070707070707074808d9aa7b3c0bfb3a6998c807366594d4033261a0d00000713202d3a4653606d787f858d92989ea6aeb3bcc2c5b9ac9f9286808080808080808080808080818e9ba8b5c1bbafa49a9184796d6f7c8895a2afb4b4ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855616b707272727272727272727272727272727884919eabb7c4c7baaea194877b7272727272727272727272727272706b605d676f7c87929fa099928c837b726c655e574d42362a1e12050000000000000005111d2935414c566a7783909daab6c3c3bfbebcbcc0c1c5cbd2dad4ccc7c3c2bcb5a89b8e828e97a2adbab3a99e9184796e7b8897a2adaea298887b6e6e7986929facab9f92857875828e9ba8b5bfb5a09386796d6053463a2d201307000000000000050e171e252a2d3a46525e697783909daab6beb3a9998c7f7366554b403544505d6a7783909daab6b2a5988b7f727f8c9696969696969696969b9ea5afbab9aea49c999696969696969696968f8275695c4f4236291c0f0300000006111b262f3b454f59606d7a84919ea7b1bcbdafa59f9285848484848484848484848484848484847d7a878a8b8d8e9091939a9ca4aeb9c5c4bab2acaba5a7a8aaabadb3b0b1b4b6b7b7b8babebdb2a5988c7f7265594c3f3226190c0000000000000000000000000b17222d3844505c66727f8c98a2aebac7d2c0b3a6998d8073665a55616e7a7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d706357575754524c443a3025190d01000714212d3a4754606d7a8793a0adbac4b7aa9d91847d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d818f9ba8b5c2bfb3a6998c807366594d4033261a0d000006131f2c3845515c666d727a80868f949fa2aab0bbc0baaea399928d8d8d8d8d8d8d8d8d8d8d8d8e939eaab6c3c0b6aca096877a6d6f7c8895a2afbbb9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59616365656565656565656565656565656b7884919eabb7c4c7baaea194877b6e6565656565656565656565656563605955606a737f8c959590867f786e69605b534d453b30251a0e0200000000000000010d192530424f5c6875828f9ba8b5c2cac5c1c0bebec2c4c7cdd4d5cdc8c4c3bcafa295897c85929fa9b3b9ada1968c7f7b7c85929fabb4aa988b7f7b7b7c84919eaaaea298897c7b828f9ca8b5b9ada093867a6d6053473a2d2014070000000000020c1720293036393a424d576673808d99aab4bfb6a99c8f8376675d51454044505d6a7783909daab6b2a5988b7f727f898989898989898989898e939eaab6b4a89c928d898989898989898989898275695c4f4236291c0f03000000000a141d29333e45515d67717e8a959fabb8c1baada297929191919191919191919191919191918a7e797c7d7e80828385878d929ca8b5c1bdb2a8a19e989a9b9d9ea2a9a3a4a8aaaaaaabaeb4b0b1a4978b7e7164584b3e3125180b00000000000000000000000006111c28343f4a54606d7a85929facb6c0ccc0b3a6998d8073665f6263686e71717171717171717171717171717171717171717171717171717171717171717171717171717171717171706b63636363615e564c41362a1d1105000714212d3a4754606d7a8793a0adbac5b8aca0969189898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898f939eaab6c3bfb3a6998c807366594d4033261a0d000004101c2834404b545c60686d737b828b92989fa6afb5bdb4aba39f9a9a9a9a9a9a9a9a9a9a9a9a9b9ea5afbbc2c2beb2a894877a6d6f7c8895a2afbbb9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e474f5557585858585858585858585858585e6b7884919eabb7bbbbbaaea194877b6e6158585858585858585858585856544f4e58606d7883908d837c726d665f575049413b33291f1409000000000000000000081a2734414d5a6774808d9aa7b3c0c0b9b4b3b2b2b6b7bbc2cacbc3bcb8b6b2aea195887b808c97a2adbab2a89c918c88889297a2adb3a79b918b8888889196a0acb3aa998e89888f949eaab7baada093877a6d6054473a2d211407000000000008131e29323a4146474c4c5663707c8998a2aebab9ac9f9286796d60534c4c4c505d6a7783909daab6b2a5988b7f727b7c7c7c7c7c7c7c7c7c7d818e9ba8b4b3a6998d807c7c7c7c7c7c7c7c7c7c7c6f6255483c2f2215090000000000020b17212935414c55606c7883909da6b0bbbeb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e978a7e716e70727375767879808d9aa6b3c0b9aca196918c8d8f9092979596989b9e9d9d9fa2aaa3a5a3978a7d7064574a3d3124170a000000000000000000000000000c17232e3845525d6874808d9aa4afbbc8c1b4a79b8e8174676a6e707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070706d685e5246392d201307000714212d3a4754606d7a8793a0adbac8bdb2a8a09d96969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969b9ea5afbbc6bfb3a6998c807366594d4033261a0d0000000c18232e39424b51565d60696e757e858f949fa4abb3bcb4aeaca7a6a6a6a6a6a6a6a6a6a6a6a8aaafb6b6b6b6b6ada094877a6d6f7c8895a2afbbb9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c353e44484a4b4b4b4b4b4b4b4b4b4b4b4b515e6b7884919eabafafafafaea194877b6e61544b4b4b4b4b4b4b4b4b4b4b4a484444515c666f7c8680796f6a605c544d443f382f2921170d030000000000000000000c1926323f4c5965727f8c98a5b2bfb6aea8a6a5a5a9abb0b8c2c3b9b1abaaa5a5a195887b7a85929faab4baada39c9995959fa2a9b3b8ada39b989595959ea0a8b2bcaaa09995959c9ea6b0bbbaada093877a6d6054473a2d21140700000000010d1925303a444c5254595959606d7985929facb8baaea398897c706359595959595d6a7783909daab6b2a5988b7f726e70707070707070707073808c99a6aeaea4978b7e717070707070707070706f6a5f53473a2e211508000000000000050f19242f3a44505b656f7c89949fabb7c2bcb3adababababababababababababababa4978a7e7164636566686a6773808d9aa6b3c0b7ab9e91847f808283858688898b8e93909092989597989a96897c6f6356493c302316090000000000000000000000000006111c2935414c56616e7b87939facb9c5c5b8ab9f9285796d6e7c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7a6d6154473a2e211407000714212d3a4754606d7a8793a0adbacec3bab2acaaa3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a8aaafb7c1ccbfb3a6998c807366594d4033261a0d00000007121d27303940454c52575e616c717b828c9399a2aab2bbbab9b4b3b3b3b3b0aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a094877a6d6f7c8895a2afbbb9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232c33383c3d3f3f3f3f3f3f3f3f3f3f3f45515e6b7884919ea2a2a2a2a2a2a194877b6e6154483f3f3f3f3f3f3f3f3f3f3d3c38404a54606a6f7b736d665f58504a423c332d261d170f05000000000000000000000b1824313e4b5764717e8a97a4b1b9aea49c9998989c9fa6b0bbbcb1a7a09d98989895887b73808c98a2aebab5ada7a5a1a1abadb3bcbeb5ada7a5a1a1a1aaacb2babcb2aaa4a2a1a8aab0b8c1baada094877a6d6154473a2e2114070000000005111d2a36414c565e61666666666675828f9ca8b5bfb4aa998c7f73666666666666666a7783909daab6b2a5988b7f726563636363636363636673808c99a2a2a2a2978b7e71646363636363636363625f584e43372b1f12060000000000000008131e27333f4953606b76828f9ca6b0bcc5bebab8b7b7b7b7b7b7b7b7b7b7b7b7b1a4978a7e716457585a5b556774818e9aa7b4c1b6a99c8f8376747577787a7b7d7e818e83838587888a8c8d8f887b6e6255483b2f22150800000000000000000000000000000d19242f3a46535f6976828f9ca9b3bec6baaea2988a7e7173808a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a897d7063564a3d3023170a000714212d3a4754606d7a8793a0adbac6ccc3bdb8b7b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b5b6bbc1c9ccbfb3a6998c807366594d4033261a0d000000000b151e272e343a41454d535a62696e777f879298a1a9b2bac4c0c0c0bcb0a69f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c94877a6d6f7c8895a2afbbb9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21282c2f30323232323232323232323845515e6b788491959595959595959594877b6e6154483b323232323232323232302f2e39424e5860696e69605c544e443f383027221b140b050000000000000000000000091623303c4956636f7c8996abb5b4a89c928d8b8b8f949fabb7b8aba095908b8b8b8b887b6e7a86929facb8bfb8b4b2aeaeb8babec5c7beb8b3b1aeaeaeb7b8bdc3c4bcb5b1afaeb5b7bbc1cabaada194877a6e6154473b2e211408000000000713202d3946525e686d7373737373737f8b98a5b2beb5a99c8f8276737373737373736f7783909daab6b2a5988b7f726558565656565656596673808c9595959595958b7e7164585656565656565655534e46443b32271d1106000000000000010b17222d38414f5963707d89949fabb7c4cac6c5c4c4c4c4bcbcbcbcbcbcbcbcb1a4978a7e7164574b4d4f5b6875828e9ba8b5c1b5a89b8f827568686a676d6e707b8491857c787a7c7d7f8082837a6d6154473a2e211407000000000000000000000000000008131e2b37424d5764717e8a97a1adb9c6beb4aa9c8f827573808d9696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696897d7063564a3d3023170a000714212d3a4754606d7a8793a0adbac6cccec8c5c4bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcc2c3c6ccccccbfb3a6998c807366594d4033261a0d00000000030c151d23282f353b424650575e656c727d869196a1a8b2bbc4cfc4b7ab9f94908f8f8f8f8f8f8f8f8f8f8f8f8f8f8f877a6d6f7c8895a2afbbb9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810161c2023242525252525252525252b3845515e6b788488888888888888888888877b6e6154483b2e2525252525252525232227303d464e575e615e57514b423c342e261e17110a020000000000000000000000000815212e3b4854616e7b8799a4afb3a6998d807f7f828f9ca9b6b6aa9d90837f7f7f7f7f7a6d74818e9aa6b0bcc4c0bfbbbbc5c4c1c1c1c1c1c1bebbbbbbc1c1c1c1c1c1c1c1bcbbc1c1c1c1c1baada194877a6e6154473b2e211408000000000714212e3a4754616d7a7f7f7f7f7f7f808d9aa7b4c0b8ac9f92867f7f7f7f7f7f7f7f7c7783909daab6b2a5988b7f72655e5e5e5e5e5e5e5e66738088888888888888887e71645e5e5e5e5e5e5e5e5e5e5b554d44392e22170b0000000000000006111b262f3d4854606b7683909ca8b2bdc9d3ccc4bdb9b7afafafafafafafafafa4978a7e7164574b434f5c6976828f9ca9b5c1b4a79b8e8174685c555d676d7a83919692867e726f70727475776d685d5246392d2013070000000000000000000000000000010e1a26313c4653606d7985929eabb8c3c5b9ac9f92867a73808d9aa3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a396897d7063564a3d3023170a000714212d3a4754606d7a8793a0adbabfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfc3c4c7cdc9c9c9c9c9c9c9ccc7c3c2bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb3a6998c807366594d4033261a0d0000000000030b12181e25303a444c5254535b606b707c849196a1a9b3bdc6c3b6a99c9082838383838383838383838383838383827a6d6f7c8895a2afbbb9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10141617181818181818181818222f3b4855626e7c7c7c7c7c7c7c7c7c7c7c7c786d6053463a2d201818181818181817151e2b343d454d5254524d4540393028231c140c0600000000000000000000000000000713202d3a4653606d7986939facafa396897c7274808d9aa7b3b5a89b8e8175727272726d686f7c88949fabb7c4cfcdc4beb9b8b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4aea194877b6e6154483b2e211508000000000915222f3c4855626f7b888c8c8c8c8c8d929da9b5c2baaea298928c8c8c8c8c8c8c8b7e7783909daab6b2a5988b7f726b6b6b6b6b6b6b6b6b6b6d7a7b7b7b7b7b7b7b7b7a6d6b6b6b6b6b6b6b6b6b6b6a675f554a3f33271b0e02000000000000000a141d2c38444f5964717e8a96a1acb9c7cec4bab2acaaa2a2a2a2a2a2a2a2a2a2978a7e7164574b44505d6a7783909daab6c0b3a69a8d807367555d676d79839095a09892877f746c6667696a615d564c4135291d110500000000000000000000000000000009141f2c3845515c6673808d9aa7b1bcc7bbafa3998b7e73808d9aa6b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a396897d7063564a3d3023170a000714212d3a4754606d7a8793a0adb3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b7bbc2cad4d6d6d6d3cac1bbb7b5b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a6998c807366594d4033261a0d0000000000000007111e2a36414c565e61616161616a6f7b849197a1abb5bfc0b3a6998d80767676767676767676767676767676766d686f7c8895a2afbbb9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0c0c0c0c0c0c0c0c14212e3a47535f6a6e6f6f6f6f6f6f6f6f6f6f6f6d665c5145382c1f130c0c0c0c0c0c0a0c19222b333b42464846423b342e271e17110a0200000000000000000000000000000006121f2c3844505c667885919eabb0a4978a7d7174808d9aa7b3b5a89b8e827568656565605f6a7683909ca9b3bec9c4bbb3adaba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a194877b6e6154483b2e211508000000000915222f3c4855626f7b8895999999999a9da4aebac5bfb4aaa29f999999999999988b7e7783909daab6b2a5988b7f7878787878787878787878787878787878787878787878787878787878787878787771675b4f43362a1d100400000000000000020b1b27323d4653606d7884919eabb5c0c9bdb2a8a09e96969696969696969696968a7e7164574b44515e6b7784919eaab7bfb2a6998c7f73665d676d798290959fa7a299938b80786d675d5d54524c443a3024190d0100000000000000000000000000000004101c2834404b54626e7b8895a0acb8c5c0b5ab9b8f8275808d9aa6b3bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbcb0a396897d7063564a3d3023170a000714212d3a4754606d7a8793a0a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a9abb0b8c2cdd8e3d7ccc1b8b0aaa8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6998c807366594d4033261a0d000000000000000713202d3946525e686d6e6e6e6e6e6e6e7b859199a3aebbc6b9ac9f93877c6f6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6f7c8895a2afbbb9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f626262626262626262626262605c544b4034281c1004000000000000071019212930363a3b3a363028231d150c06000000000000000000000000000000000003101c28343f4a546a7784919daab2a5988c7f7274808d9aa7b3b5a89b8e8275685b5858545864717e8a97a1adb9c6beb3a9a19e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b94887b6e6155483b2e221508000000000915222f3c4855626f7b8895a2a6a6a6a7a9aeb7c0cbc5bcb4aeaca6a6a6a6a6a5988b7e7783909daab6b8ab9f928584858585858585858585858585858585858585858585858585858585858585858583776a5e5144372b1e110400000000000000000b161f2b3844505c66727f8c99a3afbbc5b9aca096918989898989898989898989897e7164574b404a546b7885919eabb8beb2a5988b7f7265676d79828f949fa7b1aba49f928d81796d60534746413a32281e130800000000000000000000000000000000000c18232e3947535f6a7784909daab7c2c5b8ac9f928679808d9aa6b3b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bbc0c7d0c9c9c9c9cfc7c0bbb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b0a396897d7063564a3d3023170a000714212d3a4754606d7a879399999999999999999999999999999999999999999999999999999c9fa6b0bbc7d3dfd3c7bbb0a69e9c999999999999999999999999999999999999999999999999998c807366594d4033261a0d000000000000000714212e3a4754616d7a7a7a7a7a7a7a7a7a7d86929facb9c5bbafa49990837b7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796f7c8895a2afbbb9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1a26313c464e5355555555555555555555555553514b42392e23180c0000000000000000070f171f252a2d2e2d2a251f18120b03000000000000000000000000000000000000000c17232e43505d697683909ca9b3a69a8d807374808d9aa7b3b5a89b8e8275685b4f4c4753606d7985919eabb8c4b9ada197918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e887b6e6155483b2e221508000000000915222f3c4855626f7b8895a2aeb2b2b4b5bac0c9d1cec5bfbab8b2b2b2b2b1a5988b7e7783909daab6baada2979291919191919191919191919191919191919191919191919191919191919191919185786c5f5245392c1f1206000000000000000003101c28343f4a54616e7b86929facb9c4b7aa9e91847d7c7c7c7c7c7c7c7c7c7c7c7a6d61544744515c667985929facb8beb1a4988b7e71686d79828f949fa6b0b9b4aaa39892857c6f6255493c35302820160c02000000000000000000000000000000000007121d2b37434e5866737f8c99a7b1bcc7baaea2988a7d808d9aa6acacacacacacacacacacacacacacacacacafb6bec7d2ddd8cfc6bdb5afacacacacacacacacacacacacacacacacaca396897d7063564a3d3023170a000714212d3a4754606d7a878c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c90949fabb7c4d0dcd0c3b7aa9e948f8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c807366594d4033261a0d00000000000005121f2c3845525f6b788587878787878787878a9299a3aebbc7c0b5aba095908787878787878787878787878787878780747c8895a2afbab9ac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c43474849494949494949494949494645403930271d1207000000000000000000050d141a1e2021201e1a140c07000000000000000000000000000000000000000000061c2936424f5c6975828f9ca8b0a79a8d817474808d9aa7b3b5a89b8e8275685b4f4245515c6673808d9aa8b2bdb8ab9e91858181818181818181818181818181818181818181818181818181818181817a6e6154473b2e211408000000000915222f3c4855626f7b8895a2aebbbfc0c4c4c4c4c4c4c4c4c4c4bfbfbfbeb1a5988b7e7783909daab6beb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9285786c5f5245392c1f12060000000000000000000b17232e3846525e6875828f9caab4beb9aca096887b6f6f6f6f6f6f6f6f6f6f6f6d685e52464653606d798698a3aebabdb0a4978a7d716e7a828f949fa6b0b8b3aaa29892867d706a6054473b2e241e160e04000000000000000000000000000000000000000f1a26313c4855616e7b88959fabb8c4bfb4aa9a8e81808d9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa4acb6c0ccd8d1c6bdb5aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f96897d7063564a3d3023170a000714202d3a4753606d798080808080808080808080808080808080808080808080808080808082909ca9b6c3cfd6cabeb4aa9c8f8280808080808080808080808080808080808080808080808080807d706356493d3023160a00000000000005121f2c3845525f6b78859294949494949494969fa3abb5bfcbc7bdb1a7a09d9494949494949494949494949494948d81747c8895a2adadadac9f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222a31373a3b3c3c3c3c3c3c3c3c3c3c3c3a38342e271e150b000000000000000000000002090e12141514120e0902000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba5a4a39b8e817574808d9aa7b3b5a89b8e8275685b4f42404b54626f7c8996a0acb9b8ab9f92857975757575757575757575757575757575757575757575757575757575756e685e5246392d201407000000000915222f3c4855626f7b8895a2aeb8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b1a5988b7e7783909daab6c3bcb3adabababababababababababababababababababababababababababababababab9f9285786c5f5245392c1f120600000000000000000006111c2a36414d5664717d8a98a2aebabdb2a8998c7f7266636363636363636363615e564c414754616d7a8794aab4bfbcb0a396897d707a8390949fa6b0b8b3aaa29892867d706b60584e43372b1f130c0400000000000000000000000000000000000000000a15212d3a46535f697683909da9b6c3c4b7ab9e9184808d929292929292929292929292929292929292939aa4afbbc8d4cbbfb5aba39992929292929292929292929292929292929292897d7063564a3d3023170a0006131f2c3845515c676d73737373737373737373737373737373737373737373737373737375828f9ca8b5c2cfd3c6baaea298897c7373737373737373737373737373737373737373737373737373706b6054483b2f22160900000000000005121f2c3845525f6b7885929ea1a1a1a1a1a1a3acaeb5bdc6d1d0c3b9b1acaaa1a1a1a1a1a1a1a1a1a1a1a1a1a19a8d81747c8895a1a1a1a1a19f9286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f2f2f2f2f2f2f2f2f2f2f2f2d2c28231d150c0300000000000000000000000000020507080705020000000000000000000000000000000000000000000000010e1a2734414d5a6774808d99989796958f827574808d9aa7b3b5a89b8e8275685b4f42394754606a7784919eaab7baada2978a7d7068686868686868686868686868686868686868686868686868686868615e564c41362a1e1105000000000915222f3c4855626f7b8895a2abababababababababababababababababababa5988b7e7783909daab6c3c5bebab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ab9f9285786c5f5245392c1f1206000000000000000000000e1925303b4753606d7985929fabb8bbb6a99d908376685e565656565656565654524c443b4854616e7b8794a1aebabcafa295897c6f7c859297a1a9b2b2a9a19892867d706b60594f463c32271b0f0200000000000000000000000000000000000000000005121e2a36424d5766727f8c99a9b3bec5b9aca1968f828686868686868686868686868686868686868688939facb9c6d2c7bbaea3999287868686868686868686868686868686868686877d706356493d3023160a0004101c2934404b555c6066666666666666666666666666666666666666666666666666666d7985929fabb8c5cdcfc5b8ab9f9285796d666666666666666666666666666666666666666666666666666360594f44382c20130700000000000005121f2c3845525f6b7885929eabadadadadadb0b9bbbfbcbcbcbcbcbcbcb8b7adadadadadadadadadadadadada79a8d81747c88949494949494949286796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f21222222222222222222222222201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c8c8b8a898887837774808d9aa7b3b5a89b8e8275685b4f4237434e586673808c99a7b1bcb3a99b8e8174665c5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b54524c443b3025190e02000000000915222f3c4855626f7b88959e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e988b7e7783909daab6bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb8ab9f9285786c5f5245392c1f12060000000000000000000008141f2c3845515c6775818e9babb4afacaa9f93867a6e6154494949494949494746413a3c4855626f7b8895a2aeb3b4aea195887b6e6f7c859196a1a8a8a19792867d706b60594f473d342b20150a00000000000000000000000000000000000000000000020e1a26313c4955626f7c8897a1adb9c6bdb2a8988c7f7979797979797979797979797979797979797983909daab6c3d0c5b9ac9f92877a79797979797979797979797979797979797979706b6054483b2f22160900000c18232f39434b515359595959595959595959595959595959595959595959595959626f7c8998a2aebabec0c2c2b5a89c8f8275665c59595959595959595959595959595959595959595959595956544f473d32271b100400000000000005121f2c3845525f6b7885929eabb0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a79a8d81747c87878787878787878786796c63707d8996a3b0bcbcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f12141516161616161616161616161313100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d807f7e7d7c7b7a786d74808d9aa7b3b5a89b8e8275685b4f42323d4855626f7b8895a0acb8b8ab9e9285796d60534e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4746413b32291e140800000000000915222f3c4855626f7b8891919191919191919191919191919191919191919191918b7e7783909daaaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeab9f9285786c5f5245392c1f12060000000000000000000004101c2934404b5564707d8a99a3aba39f9d9b998b7e7164584b3e3c3c3c3c3c3a3936303c4956626f7c8995a2a6a6a7a7a194877b6e6a6f7c849196a0a09691857c6f6b60594f473d352b22190f0400000000000000000000000000000000000000000000000913202d394653606c7885919eabb8c4c2b5a89c8f8275666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6e7b8895a0acb8c4cabfb4aa9c8f8275686c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6360594f44382c201307000007121d2731394045474d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b5466727f8c99aaafb6b2b3b5b7b2a9988b7f7265544a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4948443d352b21160b0000000000000005121f2c3845525f6b7885929ea3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39a8d8174787a7a7a7a7a7a7a7a7a7a6e6163707d8996a3b0bcbcb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080909090909090909090909070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855606b7074737271706f6e6d6674808d9aa7b3b5a89b8e8275685b4f42353a47535f6a7784909daab7b9ada297897d706356494242424242424242424242424242424242424242424242423b3936302920170d0200000000000815222f3b4855626e7b848585858585858585858585858585858585858585858585847e7783909da2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29f9285786c5f5245392c1f120600000000000000000000000c18232f3a4753606d7a86929b989992908e8b898175685b4f4235303030302e2d2a303d495663707c899699999a9a9b9b93877a6d606a6e7b8491969691847c6f6a60594f473d352b231a100700000000000000000000000000000000000000000000000005121f2b3744505b6574818e9ba7b4b9b7b4ab9f9285796c605f5f5f5f5f5f5f5f5f5f5f5f5765727f8c98a7b1bbc0bfbaaea2988a7e7164565f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f56544f473d33271c10040000010b151f272f34383a4040404040404040404040404040404040404040404045515c6676828f9c9fa4aca5a7a8aaaca197887b6f62554840404040404040404040404040404040404040404040403d3b38322b23190f040000000000000005121f2c3845525f6b78859296969696969696969696969696969696969696969696969696969696969696969696968d81746d6e6e6e6e6e6e6e6e6e6e685e63707d8996a3b0b0b0b0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59606367666564636261606774808d9aa7b3b5a89b8e8275685b4f423537434e586673808c99a9b3beb3a99a8d807467584e4337353535353535353535353535353535353535353535352e2d2a251e170e050000000000000814212e3a47535f696e7878787878787878787878787878787878787878787878787871778390959595959595959595959595959595959595959595959595959595959595959595959595959595959285786c5f5245392c1f120600000000000000000000000713202c3945515d6776828f8e8b898684817f7c796d6053473a2d23232323212024303d4a5763707d8a8c8c8d8d8d8e8e8f86796d605f696e7b849190847b6e6a60584f473d352b231a110800000000000000000000000000000000000000000000000000030f1b27333f495364717e8a97a8afacaaa7aba297887c6f625553535353535353535353535f697783909daaacafb5b2b4ac9f92867a6d605353535353535353535353535353535353534948443d352b21160b00000000030d151d23292c2d3333333333333333333333333333333333333333333a4653606d79859091939a96989a9c9d9f9e9185786a5f53473a33333333333333333333333333333333333333333333302f2c2721191107000000000000000005121f2c3845525f6b788589898989898989898989898989898989898989898989898989898989898989898989898989807467616161616161616161615e5663707d8996a3a3a3a3a3a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808070502000000000000000000000004101c27333d474f55565a5958575655545a6774808d9aa7b0b0a89b8e8275685b4f4235313c4956636f7c8997a2adb5afab9e9184786a6054473b2e28282828282828282828282828282828282828282821201e19140d050000000000000006121e2b37424d575f626b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a778388888888888888888888888888888888888888888888888888888888888888888888888888888888888885786c5f5245392c1f1206000000000000000000000004101d2935404b5565727f84817e7c7a7774726f6d675d5145392c1f1616161415212e3b4854616e7b7e7f7f8080818182828276665c575f696e7b84837a6e695f574e463d352b231a11080000000000000000000000000000000000000000000000000000000b17222d3b4854616e7b8796a1a49f9d9b9899928c7f7265594c46464646464646464855616e7b88959c9e9fa4aba5a7a99b8e8175675d5145464646464646464646464646464646463d3b38332b23190f050000000000030b12181c1f2026262626262626262626262626262626262626262e3b4754616e7b81838586888a8b8d8f9192988e817568584e43372b2626262626262626262626262626262626262626262322201b160f0700000000000000000000091623303c4956636f7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7b6e6255545454545454545454525663707d899696969696969696897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e11141415151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151514120e0902000000000000000000000b16212c353d44484a4d4c4b4a49484d5a6774808d9aa3a3a3a39b8e8275685b4f42352d3a4653606d7985929faaaba39f9d96887c6f6255493c2f221b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1414110e08020000000000000000020e1a26313c454d53555e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c6e6255483b2f221508000000000000000000000000010d18242f394a56626d727774726f6d67686562605d554b4035291d1009090714212d3a46535e696e727273737374747575767066544d575e696e7a796d685e574e453c342b23191108000000000000000000000000000000000000000000000000000000000614202d3a46525e69788491989a93918e8b8986837f7265584b3f393939393939404c5966737f8b8d8f91939997999b9d978a7d7064554b4035393939393939393939393939393939302f2c27211911070000000000000001070c1013141a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a202d3946525e686e7476787a7b7d7f8082848587897e7164584b3e31261a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a161613100b0400000000000000000000000915222f3b4854606b6f707070707070707070707070707070707070707070707070707070707070707070707070706e695f534747474747474747474a5663707d898989898989898989897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e2021212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121201e1a140d05000000000000000000050f1a232c33383c3d41403f3e3d414d5a6774808d9696969696968e8275685b4f42352b3844505c6675828e9b9d9a9992908d89807366594d4033261a0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0807050200000000000000000000000915202a333c424748525252525252525252525252525252525252525252525252535f696e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e6a5f53473a2e2114080000000000000000000000000007121d2e3a46515b62656a686562605d55585653514b43392f24180c000005121e2a36424d575e6165656666676768686969665e54454d565e686d6d675e564d453c332b22191008000000000000000000000000000000000000000000000000000000000005121e2a36424d576875818e8c898684817f7c7a77726d62564a3d312c2c2c2c2f3c4955626f7c7e80828486888a8c8e909285796d6053463a2f242c2c2c2c2c2c2c2c2c2c2c2c2c2c2322201c160f0700000000000000000000000406070d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d111e2a36414d565e616869676d6e7072747577797a7c7a6d6054473a2d21140a0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0a090704000000000000000000000000000713202c38444f59606363636363636363636363636363636363636363636363636363636363636363636363636363625f574d423b3b3b3b3b3b3b3b4754616d7a7d7d7d7d7d7d7d7d7d7d7a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060b060603050e171f252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2a251f170f0500000000000000000008111a21272c2f303433323134414d5a67748089898989898989898175685b4f423528343f4a5465717e8b93908d8a8683807d796d6053473a2d201407020202020202020202020202020202020202000000000000000000000000000000030e18212a31373a3b4545454545454545454545454545454545454545454545424d575f61626262626262626262626262626262626262626262626262626262626262626262626262626262626262625f584e43372b1f12060000000000000000000000000001121e29343f495156585d5b585653514b4c494745403931271d12070000020e1a25313b454d53545859595a5a5a5b5b5c5c5a544c42444d565e61605c554c443b332a21191007000000000000000000000000000000000000000000000000000000000000020e1a25303e4b5864717e827f7c7a7774726f6d6765625b51463a2e222020222e3b47545f6a6f72747577797b7d7f8183858174675c5145382c1d2020202020202020202020202020161613100b050000000000000000000000000000000000000000000000000000000000000000020e1925303b444d52545b555d606263656769656c6e6f6d685d5245392c201307000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d474f54565656565656565656565656565656565656565656565656565656565656565656565656565655534d453c312e2e2e2e2e2e3946525e686d707070707070707070706d685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131813120f0b17202930363a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a36302921170d02000000000000000000080f161c202323272625242f3b4855626e7c7d7d7d7d7d7d7d7d7c6f6255483c2f232e3b4754616e7b878683807d7a7673706d675d5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000060f1820262b2e2f38383838383838383838383838383838383838383838313b454d535555555555555555555555555555555555555555555555555555555555555555555555555555555555555555534e463c31261a0f0200000000000000000000000000010d18232d373f464a4c514e4b494745403f3c3a39352f271f150b0100000009141f29333b4246484b4c4c4d4d4e4e4f4f4f4e49423a3b444c525453514b433a322921180f070000000000000000000000000000000000000000000000000000000000000000091724303d4956616c717572706d67686562605d555651493f34291d12131f2b37434e585f62656769676d6f7172747678796d60554b4034281c0c131313131313131313131313130a090704000000000000000000000000000000000000000000000000000000000000000000000008141f29323b4146474e4b51535557585a535b606163605d564c4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353d4448494a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4847423c332a21212121212a36414c565e6163636363636363636363615e564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f2025201f1c171f29323b42464748484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484846423b33291f140900000000000000000000050b101416171a1918212e3a47535f6a6e70707070707070706f6a5f53473b2e212d3a46525e69707d7a7773706d676663605d554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000060e151a1e21222b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a333b4246484848484848484848484848484848484848484848484848484848484848484848484848484848484848484847433c332a20150900000000000000000000000000000007111b252d343a3e3f44413f3c3a38352f2f2d2c29241d150d0300000000030d17212931363a3b3f3f4040404141424243413e3830323a41464747454039312820170f060000000000000000000000000000000000000000000000000000000000000000000815212d3945505a6164686563605d55585653514b4a463f372d23180c0f1b26323c464e5455585a555c60626466686a666d665c5143392e23180c06060606060606060606060606000000000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b41404547484a4c4d495053545654524c443a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000040f19232b32383b3c3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3b3a37312a21181414141925303a444c52545656565656565656565654524c443a3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272b2d312d2b282225303b444d5254545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454524d453b30251a0e0200000000000000000000000407090a0e0d121e2b37424e575f626363636363636363625f584e43372b1f2a36424d57616b706d686763605d555653514b43392f24180c0000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f18212a31363a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b3a37312a21180e030000000000000000000000000000000009131b23292e31323735322f2d2c292423201f1d18120b03000000000000050f171f252a2d2e3232333334343535363635322d20293036393a3a38342f271f160e050000000000000000000000000000000000000000000000000000000000000000000005111d28343e485056585b595654514b4c49474540393a342d251b11060a15202a343c4347494b4d4b51535557595b545c605c544a4030271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e2f35383a3b3d3f413f444647494745413a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000007111921272c2f30303030303030303030303030303030303030303030303030303030303030303030303030302f2e2b2620180f080808131e28323a4146474a4a4a4a4a4a4a4a4a4a4746413a32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b141d262d3337393e3938332d2a36424d565e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161615e574d42362a1e120500000000000000000000000000000001020e1a26313c454e5355565656565656565655534e463c32261b25303b454f596163615e565754514c4a4745403931271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000020608081212121212121212121212121212121212121212120f181f262a2d2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2b2620180f060000000000000000000000000000000000010911181e2225252a282523201f1d18161413100c07010000000000000000050d141a1e212125262627272728282929282521171e252a2d2e2d2c29231d150d040000000000000000000000000000000000000000000000000000000000000000000000000c17222d363e45494b4f4c494745413f3c3a38352f2e29231b130900040e19222a32373b3c3f41404546484a4c4e4a5153514a42392e1e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e202124292c2d2f30322d3337393b3c3a3935302820160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b2022232323232323232323232323232323232323232323232323232323232323232323232323232322211e1a150e060000020c1620283036393a3d3d3d3d3d3d3d3d3d3d3a3935302820160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d262f383f44464b46443f382f3a46525e696e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e695e52463a2d20140700000000000000000000000000000000000915202a333c4247484a4a4a4a4a4a4a4a4847433c342a20151f29333e474f555754524c4a4745413d3a38352f271f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000050505050505050505050505050505050505050500060e141a1e212222222222222222222222222222222222222222222222222222222222222222222222222222222222222222211f1a150e060000000000000000000000000000000000000000070d121618191e1b18161413100c0707060400000000000000000000000003090e1214151819191a1a1b1b1c1c1c1c19150c13191d2021201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000006101b242d34393d3e423f3d3a39352f2f2d2c29241d1d18110900000007101920262b2e2f322e34383a3c3e3f4140444644403930271c0c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414181d1f2022242522272b2d2e302d2c29241e160e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b0f131516171717171717171717171717171717171717171717171717171717171717171717171717171514120e090300000000050e161e252a2d2e303030303030303030302e2d29251e160e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151e272f38414950535853504a42383b4754616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b766c5f483b2e2115080000000000000000000000000000000000030e18212a31373a3b3d3d3d3d3d3d3d3d3c3b37322a22180e17202c353e44484a4746413d3a39352f2d2c29241d150d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151515151515151515151515151515151515151515151515151515151515151515151515151515151515151514120f0903000000000000000000000000000000000000000000000106090b0c110e0c0907060400000000000000000000000000000000000000020507080c0c0d0d0d0e0e0f0f100f0d0902080d1113141413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000009121b22282d30313532302d2c292423201f1d1812120c060000000000070e151b1f22222523282c2d2f31332e34383a38342e271e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070c101314151719171b1f20212321201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030709090a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0808060200000000000000050c13191d20212323232323232323232321201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f273039424a535b6064605b544a4245525f6c7885878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878786796c605346392d2013000000000000000000000000000000000000060f1820262b2e2f30303030303030302f2e2b26201810060e1a232c33383c3d3a3936302d2c2924201f1d18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070809090909090909090909090909090909090909090909090909090909090909090909090909090909090908080602000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000000010102020303020000000001050707070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000910171d21242528262321201d18161413100c07010100000000000000040a0f13151618181c1f2022242623282c2d2c28231c150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a060b0f121314161413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314171717171717171717171413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161f283139424a545b656c716c665b544a41525f6c7885929494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949386796c605346392d201300000000000000000000000000000000000000060e151a1e2122232323232323232322211f1b150e060008111a21282c2f302e2d2a2521201d191413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111517181c19161413110d070706040000000000000000000000000003060809070c101313151719181c1f201f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608090707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070a0a0a0a0a0a0a0a0a0a07070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172028313a434b545c666c777e786c665b534a525f6c7885929fa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19f9386796c605346392d2013000000000000000000000000000000000000000003090e12141517171717171717171515120f0a040000000810161c20232421201d191413110d0806040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001050708070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b0f0c0a070604010000000000000000000000000000000000000000000000040607090b070c10121312100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f172029323a434b555c666d78818b81786c655b544a5f6c7885929fabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeac9f9386796c605346392d201300000000000000000000000000000000000000000000020608080a0a0a0a0a0a0a0a09080603000000000000050b101416171413110d0806040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000307090a0907060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c110a090703000000000000000000000000000000000000000000000002080d11141414110d08020000000000000000000000000000000000000000000000000000010102020304040505060000030607070707070707070707070603000006050404030302020100000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000040607060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606060606060606060004080a0b0b07060400000000000000000000000000000000000000000000000000000000000000000000000000000000010406070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d172129323a444c555d676d78818e938e81776c665c545f6c7885929fabb8babababababababababababababababababababababababababababababababababababababababababab9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10131616161413110d0708060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d111314181d161613100b040000000000000000000000000000000000000000050d14191e2021201e19140d05000000000000000000000000000000000001050707090a0b0c0d0e0f0f101011111212130c1012131314141414141414131312100b131212111110100f0f0d0d0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a131313131313131313130b10141617181312100c0700000000000000000000000000000000000000000000000000000000000000000000000001080d11131413110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b444c565d676d79828e939d938e81786d665c546c7885929fabb8c5cbd1c7c7c7c7c7d2ccc7c6c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c7cbd1c7c7c7c7c7d2ccc7c6b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b2022232320201d18171513120f0b0607050200000000000000000000000000000000000000000000000000000000000000000000000000060b1013191d2021252a2322201b160f07000000000000000000000000000000000000070e171e252a2d2e2d2a251e170e05000000000000000000000003050609080d111314161718191a1b1b1c1c1d1e1e1f1f1f171c1f20202021212121212020201f1c171f1f1f1e1d1d1c1c1b1a1917130e080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060708080908080706050300000000000000000000000000000000000000000000000000010102030304040505050606050505050404030302010000000000000000000000000000000000000000000000000000000000000000000000000000050b1014161720202020202020202020181c21232424201f1c18120e090300000000000000000000000000000000000000000000000000000000000000040a0f13191d2021201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b454d565e686d79828f949ea59d938e81786d665d6c7885929fabb8babfc6cfd8d4d9d0c7c0bbb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bbbfc6cfd8d4d9d0c7c0bbb9b9ac9f9386796c605346392d201300000000000000000000000000000000030608090d0d0b070300000000000000000000000000020608080605030000000000000000000000000000000000000000000000000000000000000000010406070b0a08040000000000000000000000000000000000000000000007111921272c2f302f2d2c29242422201f1b171414110e09070502000000000000000000000000000000000000000000000000000000000002060a0f11171c1f24292c2d3237302f2c27211911070000000000000000000000000000000007101920293036393b3936302920170d040000000000000003060b0f12131618191d20212224252627282829292a2a2b2b2c2c23282c2d2d2d2d2d2e2d2d2d2d2d2b28232c2c2b2b2a2a2929282726231f19120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000401070c10131414151515151413120f0b0606040000000000000000000000000000020507080a0b0c0d0e0f101011111212121212121212111111100f0f0e0d0c0b090807050200000000000000000000000000000000000000000000000000000000000810161c2023232d2d2d2d2d2d2d2d2d2d25282d3031312d2c28231c1a14100b04000000000000000000000000000000000000000000000000000000040a0f151b1e24292c2d2c29241e160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e686d7a838f949ea6afa59d938e81786d676c7885929fabacaeb4bcc6d1dcd2c7bdb5afacacacacacacacacacacacacacacacacacacacaeb5bdc6d1dcd2c7bdb5afacacac9f9386796c605346392d20130000000000000000000000000000040a0f1215151a1917130e080100000000000000000003090e12141513120f0b060000000000000000000000000000000000000000000000000000000003070d111314171614100b0500000000000000000000000000000000000000050e19232b32383b3d3c3a39352f312e2d2b272221201e191514120e09060400000000000000000000000000000000000000000000000205090e12151b1c23282b2f35393a3f443d3b38322b23190f040000000000000000000000000000040f19222b323b41464746413b32291f160c0300000000060b0f12171b1f202225252a2d2e2f31323334343535363737383839392e34383a3a3a3a3a3a3a3a3a3a3a38342e39393837373636353534332f2b241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f1512181d1f20212222222121201f1b171313100c070000000000000000000406090e1214151718191a1b1c1c1d1e1e1e1f1f1f1f1f1f1f1e1e1d1d1c1b1a1a1918161414110e0807050100000000000000000000000000000000000000000000000008111a21272c2f30393939393939393939393233393c3e3e3a38342e2a251f1c16100c070000000000000000000000000000000000000000000000040b0f161b20272b2f35393a39352f281f160b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e7a8390959fa6b0b7afa59e938f82796d677885929f9f9fa3aab4bfcbd7ccc0b5aba49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3abb5bfcbd7ccc0b5aba49f9f9f9f9386796c605346392d201300000000000000000000000002080d151b1f21222726231f19120a0200000000000000060e151a1e2122201f1b17110e09040100000000000000000000000000000000000000000000060b0f13181d20212423211c1710080000000000000000000000000000000000020d17202b353d44484949474540403e3b3937332d2e2d2a2522211e1a1413100c070400000000000000000000000000000000000205090e12151a1e21272b2e34383a4145474b504948443d352b21160b00000000000000000000000000000a16212b343d444c5254524c443b31281e150a0000070c11171c1f22272b2d2f323036393a3c3d3e3f4041424243434444454546463f444646474747474747474646443f46464545444443434242403f3b362e261c0d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b201d24292c2d2e2e2f2f2e2d2d2b2722201f1c18120b030000000000070c1013131a1e2021232526272828292a2a2b2b2b2c2c2c2c2c2b2b2b2a292928272625242321201e191413110d080200000000000000000000000000000000000000000005101a232c33383c3d464646464646464646463f3e44494a4b4644403936312c271f1c18120d0701000000000000000000000000000000000000030b10161b20272b32373a41454745413a31281d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8490959fa7b0b8c0b7afa59e948f82796d78859292929298a3aebac7d3c7bbafa4999392929292929292929292929292929292929299a3aebbc7d3c7bbafa499939292929286796c605346392d20130000000000000000000001070c141920262b2e2f3433302b241c140a040607080705060f1820262b2e2f2d2b27221b1a15100d0701000000000000000000000000000000000002080e11171b1f24292c2d31302d28221a12080000000000000000000000000000000008131e29323d474f54565653514b4d4a4846443f3e3b3a36302e2d2a26201f1d1813100c070000000000000000000000000205090e12141a1e21262b2e3237383f44464c5254585d56544f473d32271b1001000000000000000000000000030f1b27323d464f565e615e564c433a30261c11060b12181c22282b2d3337393c3f41414647494a4b4c4d4e4e4f4f505151525252534a505353535454545454535353504a535252525150504f4f4e4d4c4740382e1f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e252c312f35383a3b3b3c3b3b3a3937332d2d2c28231d150c070000030b12181c1f20252a2d2e30323334343536363737383838393938383838373736363534333231302e2d2a2521201d19130c0600000000000000000000000000000000000000000b16212c353d44484a535353535353535353534b4a5055575753514a46423b38332c28231c18130d08010000000000000000000000000000060b10161c21272c32383d43474c5154514c433a2f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b85929fa7b1b9c2c9c1b7afa69f948f837a788586868686929facb9c5d2c6b9ac9f9387868686868686868686868686868686868686929facb9c5d2c6b9ac9f93878686868686796c5f5346392c2013000000000000000000030b12181e252a31373a3c403f3b362e261c111013141514120f18212a31373a3b3937332d2b26201d18120f0a0300000000000000000000000000040b0f14191b22272b2f35393a3e3c39332c241a11080000000000000000000000000000010d1925303a444f59606362605d555a57555350494a4746423e3b3a36312d2c29241f1c18120f0a030000000000000205090e12141a1e20252a2d31373a3c43474a5053565d60656a6360594f44382c1d120700000000000000000000000007131f2c38434f5960686e685e554b42382e231712151d23282d3338393f4446494b4e4c5254555758595a5b5b5c5c5d5d5e5e5f5f5f605c60606060606160606060605c605f5f5f5e5e5d5d5c5c5b5a58524a4031281d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e2730373d3940454747484848484746443f3e3a38342e271e191007080c151d23282c2d30363a3b3d3e3f40414243434444454545454545454544444443424241403f3e3c3b3936302e2d29241e17110a03000000000000000000000000000000000004101c27333d474f55566060606060606060606058565a616464605c54534d48443d38342e29241d19130d070100000000000000000000070c11171c1f282c32383d43474e54555d605d554c41382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f69727f8c98a2aebac7d3c9c1b8b0a69f9590847b787979797a8793a0adbac6c1b5a89b8e8179797979797979797979797979797979797d8996a3b0bcc9c2b5a99c8f827979797979746a5e5145382b1f1200000000000000040a0d151d232930363c4347484d4c4740382e23181d202021201e1a212a333c42474846443f3837312c29241d1a150f0b06000000000000000000070c10161b1f252a2d33373a4145474a49443e362c231a0b020000000000000000000000000005111e2a36414c56606b706f6d6769666461605b535754524d4b4846423d3a38352f2c28231d1a15100b05000206090e12141a1e20252a2d31363a3c4247484e54545c6063686d7277706b605448392f24180c0000000000000000000000000915222f3b4854606b6f7a6e675d544a3f342824171e272e34383f444649505355585b565e616264656667676868696a6a6b6b6c6c6c6c666d6d6d6d6d6d6d6d6d6d6d666c6c6c6c6b6a6a6969686867645c52433a2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b25303942484d4b51535455555554545350494b46454039302b22190f11191e272e34383a3e4246484a4b4c4d4e4f4f5051515152525252525252515150504f4e4d4d4c4b494746413f3a39353028231c150c03000000000000000000000000000000000714202c38444f5961636c6c6c6c6c6c6c6c6c6c6562616c71716d66615e57554f46444039352f29241e18120c0700000000000001080d12181c23282b33383d44484e54586062676d675d53493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d57606d7a86929facb8c5d2d3cac2b8b0a79f9691857c706b6d7a8793a0adbac6c1b5a89b8e82756c6c6c6c6c6c6c6c6c6c6c6c6c6c6c707d8996a3b0bcc9c2b5a99c8f82766c6c6c6c6a62584d4135291d10000000000003090e161b1f272f343b41464e53555a58524a40352c24292c2d2e2d2a252a333c454d535553504947423c39352f2b261f1c17110c070100000001070d12181c1f272c3036383f44464b5154575550483e352c1d140a000000000000000000000000000713202d3946525e68707d7c7a787573716e6c656764615e565855534d4a4745403a38342e2b26201c16100b0e12141a1e21252a2d30363a3b4246484d5355586062666d70757a7e837d7063554b4035291d10040000000000000000000004101c2934404b55636f7d84796d665c50443f362c2328303940454a5053535b606265686a686d6f707172737475757676777778787979797979797a7a7a7a7a7a7a7979797979797878777776767575736e64554b4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37424b5359555d60616162626160605b535753514b423d342b21171a232b30394045464a4d52545658595a5b5b5c5d5d5e5e5e5f5f5f5f5f5e5e5e5d5c5c5b5a5958575654524c4b4746413a342e261e150c030000000000000000000000000000000916232f3c4855616b7079797979797979797979726d64717e7e79736e6963605953514a45403a352f29241d18120b03000002080e13191d23282e34383e44484f545860626a6f757a6d655b5044372b1f160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c45515d677683909da9b6c3d0dcd3cac2b9b1a8a09792867d706d7a8793a0adbac6c1b5a89b8e8275685f5f5f5f5f5f5f5f5f5f5f5f5f63707d8996a3b0bcc9c2b5a99c8f8276695f5f5f5e5850473c3125190d00000000050d141a20272b313940454c52585f6267645c52473e302f35393a3b3a3630313c454d575f62605b53534e4745403937312b28221c18120d0701070d13181c23282c32383b4146495053555d6064615a50473e2f261b1106000000000000000000000005111d2a36414c56616d7a8689868482807d7b797673716e696865615f575753514b4645403937312c28211c161a1e21252a2d30363a3b4246484d5354575f62666a6f74797d81868b8e8174675d5145382c1f14080000000000000000000006131f2c3845515c6774818e82786d605b51483e342e343d424b51545b6063656c6f727476787a7c7d7e7f808181828283848485858586868686868687878787878686868686868585858483838282818073675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825313d48535d6568676d6e6e6f6e6e6d6c656864605c544e463d33291f242c353d424b515357575e6163656667676869696a6a6b6b6b6c6c6b6b6b6b6a6a6969686766656463615e565854524c443f3830271e150b0000000000000000000000000000000a1723303d4a5663707d868686868686868686867f726a77838a85807b75706b64605c54514b45413a352f28231d150c0a090e14191e24292e34383f44464f555960636a6f757c8283776c6053463d33271c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202935414b556875828e9ba8b5c1cedbdcd4cbc3bab2a9a19892877c6f7a8793a0adbac6c1b5a89b8e8275685b53535353535353535353535663707d8996a3b0bcc9c2b5a99c8f8276695c5353514d473e352a1f1409000000050f171f252a32383e434b51565e616a6f736e645a504238394045474846423b37424d575f696e6c65625f5753514b47433c38332d29231d18120c13181d24292e34383d44484d52535b6063676d716c61594f41382d22170b00000000000000000000020c13202d3946525e6873808d9893918f8d8a888583807d7b7875716e696763605d5553514b47433c38332c2721262b2d31363a3b4246484d5254575e6166696e73777c8085898e92989285796d6053473b3025190e020000000000000000000714202d3a4753606d7985928d80746d625a50463d383f444f545c60666c7074787c7e81838587888a8b8c8d8e8e8f8f90909191929292939993939393939493939393939993929292919190908f8f8e877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2734414d59656f75797a7a7b7b7b7b7a797775716d6660584e453b31262c363e474f545c606468696e707172737475767677777878787878787878777777767575747372716f6e686965615d56504a423930271d120700000000000000000000000000000a1723303d4a5663707d8993939393939393938b7e726f7c8895918d87827d77716d66605d55514c454039342e271e1b15151a1f252a2f353940454a50535961636b6f767c82898f8a7d7064594f44382c21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18242f414e5b6774818e9aa7b4c1cddae4ddd4ccc4bbb3aaa299887b6f7a8793a0adbac6c1b5a89b8e8275685b4f4646464646464646464a5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4645413c352c23190e030000030d17212931363d434750555c60686e747c80736c61544a3f434b515354524d453c47535f696e7b78736e6a65605d55534e46443f38342f29241d181d24292f35394044464f54565e61656c70757a7d716b6153493f33271c110600000000000000000008131e2935414c56616d7a86929f9f9e9c999798928f8d8a8784817e7b7774706d6764605c55534e48443e38332e31373a3b4246484d5254575e6165696e72777b8084888d91979b9fa2988a7e7164564c41362a1e1105000000000000000005111e2a36424d5764717e8a97928c7f726c61584e45424a505960666d72787d8185888b8e909297959798999a9a9b9b9c9d9d9e9e9f9f9f9fa4a0a0a0a0a0a0a0a0a0a0a0a49f9f9f9f9e9d9d9c9c9b9a897c6f6356493c302316070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5668758185868788888887878684817e796f6a60574d42362a343e48505960666d7175787b7d7e7f80818282838484848585858585858584848383828180807f7e7c7a7875726d68605c544b43392e23180c03000000000000000000000000000a1723303d4a5663707d89969f9f9f9f9f9f988b7e7274808d9a9e99928f89837e79726d67605d55514b454039302b262020262b30363a41454b51545c60646b70767c82898f949c9083776b6155483d32271b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071b2734414e5a6774818d9aa7b4c0cddad8d3d0cfcdc5b9ac9f9386796d7a8793a0adbac6c1b5a89b8e8275685b4f4d4d4d4d4d4d4d4d4d4d5663707d8996a3b0bcc9c2b5a99c8f8276695c4f433635312a231a110700000009141f29333b42464e545a61676d727a81878a7d70665c50444b555d60615e574d454f59626e7b8684807b76716d67625f5853504a454039352f2823292f353a40454a5153596063686e73787d81868a7d70655b5044382e23170c0100000000000000010d1924303946525e6873808d98a2acaba8a6aaa29f9c9a9796918e8b8884817d7975706d67625f58554f48443d3b3c4247484d5354575e6165696e72767b7f83888c91969a9ea1a9acaa9c8f8275685e5246392d20150a00000000000000000714202d3a46525e6976828f9c9f93887e716a60574d4c545c606b70797f84898e9297989b9d9fa2a9a3a4a5a6a7a8a8a9a9aaaaababacacacafb5acadadadadadadadacb5afacacacababaaaaa9a9ac988b7f7265584c3f2e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d687885919894949595949992918e8a847c6f695f534638313c46505a616b70797d828587898b8c8d8e8e8f90909191919292929292919191908f8f8e8d8c8b8a898785827e7a736d665c554b4034281f1409000000000000000000000000000a1723303d4a5663707d8996a3acacacaca5988b7e727985929eaba39f9c95908b847f7a736d67605d55514b433e3732292a31373b41464c52555c60666d71777d83898f949c9e9f95897d7063594f44382c20160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cdd4cdc7c4c3c2c4b7aa9e9184776d7a8793a0adbac6c1b5a89b8e8275685b5a5a5a5a5a5a5a5a5a5a5a5a63707d8996a3b0bcc9c2b5a99c8f8276695c4f433629251f191108000000020e1a25313b454d535860626c71797f858e939183786d60544a515d676d6e695f574e54616b76828f918d88837e79746f6a64605b54514b454039342f343a41454b51545c60646b6f757b7f84898e929083786c60544a3f34281d12070000000000000004111d2935414c56616d7a86929faab4b7b5b3b3aeaba9a6a8a19e9b9896918d8a85817d79746f6a636159544f4647494d5355575e6165696e72767b7f83878c9095999da0a8abadb3b8ac9f92867a6e6154473c31261b0f03000000000000000814212e3b4754616e7b87939fa49a92867d6f695f56565d666d737d848b91969b9ea1a9a7a9abadb3b0b1b2b3b4b4b5b5b6b7b7b8b8b8b9b9bbc0b9b9bababababab9b9c0bbb9b9b8b8b8b7b6b6b4a79a8e817467544a4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8797a1aaa1a2a1aba39f9d9b9691857b6e61544a3f37434e58616c717d848a8e92979698999a9a9b9c9c9d9d9e9e9e9f9f9e9e9e9e9d9d9c9c9b9a9998979697928f8b8680786d675c51453b30251a0e020000000000000000000000000a1723303d4a5663707d8996a3b0b9b9b1a5988b7e727d8a97a1adafaca7a09d96918c85807a726d67605c555047433c35333c42474d52565d60676d72787e838a90949c9fa6aaa79c9083766b6054483d32271b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cdcbc2bcb7b6b5b6b5a89c8f82756d7a8793a0adbac6c1b5a89b8e8275686767676767676767676767676767707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c140e070000000005121e2a36424d575e616a6f767e848c92989f958b7e71665c505b606d797b6e695f585c66707d8a949e9994908b85817c76706c66605c55514b45403940454b51555d60666d71777c82868c91969b9f958a7e71665c5044392f23180c010000000000000713202c3945525d6873808d98a2aebcc4c2c0bebab8b6b3b2acaba8a8a09e9a98928e8a85817c76706b636059525355575f6166696e72767b7f83878c9095999da0a7aaacb2b8b9bebbafa3998c7f7265584e43372b1f120600000000000007131f2c38434e5866727f8c99a4aca29892857b6e685e5e686d78808891969ea0a8abadb3b4b6b8babebdbebfc0c1c1c2c2c3c3c4c4c4c4c3c3c3c3c3c2c2c2c2c2c2c2c2c2c2c3c3c3c3c3c4c3c3b6aa9d908377665c5144382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a9b3aeaeaeb5aeacaaa8a0978e8174665b50443a47535f6a717e8791969b9ea1a9a4a5a6a7a8a9a9aaaaababababababababaaaaaaa9a8a8a7a6a5a4a9a19e9c98928c82796d60574d42362a1e12050000000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e75828e9ba9b3bbb9b1aca8a19e97928c857f79726d67615a534e45403d454d53565e61686d72797e848a90959c9fa6abb0b7ab9f94897d7063584e43372b1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cdc2b8b0aba9a8aab0a69a8d80736d7a8793a0adbac6c1b5a89b8e8275737373737373737373737373737373737d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c100300000000000714212d3a46535e696e757c838a91969fa2a79e9184786d6059636d7581847b6f6a60606d7984919ea6a69f9c98928d88827d78726d67605d55514b444b51555d60676d72797e83898e92999ea0a8a79e9184786d60554b4034291e1308000000000004111d2935414c56606d7a85929faab4b5b7b9bbc0c0c3c2c0bdb9b7b4b2acaaaaa29f9b97928d88837d76706b615e5f6266696e72767b7f83878b90939a9d9fa7aaacb1b7b8bdc3c0bbb9b5ab9d9083776a5f53473a2e2115080000000000000915222e3b4854606a7784919dabb4aaa19791847a6e67686d7a828d939aa0a8acb2b8b9bec1c3c5c5c4c2c0bebdbcbbbbbabfbab9b8b8b7b7b6b6b6b6b6b5b5b5b5b5b5b5b5b6b6b6b6b6b6b7b7b8b8ac9f9286796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1bbbbbbbfbbb9b7b2a99f9285796c605346424d57626f7c869299a0a8abadb3b1b2b3b4b5b5b6b7b7b7b8b8b8b8b8b8b8b7b7b6b6b5b4b3b3b2b1b3adabaaa29f948d8073695e52463a2d2014070000000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e7a86929facb9bec3bcb8b2ada9a29f97928c857f79716c625f58514b464e575f62686e737a7f858b91969da0a7abb0b7bbbcb0a69c8f82766a6054473a3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c7bcb0a69f9c9b9ea6a4978b7e716d7a8793a0adbac6c4b7aa9d91848080808080808080808080808080808080818e9ba8b5c1cec2b5a99c8f8276695c4f4336291c100300000000000815212e3b4854616e7b818990959ea1a8aeaca0968b7e7166616b727f8c91857c6f6b68727f8c96a0acb0abaaa29f9a948f8a847e79726d67605c5550555c60676d73797f848b90959b9fa3abacb2aca0968b7e71675c51453a2f24190d02000000000713202c3945525d6873808c98a2a4a6a8abacafb6b4b6b9babfc2c4c1bdb9b7b4aeaca9a29f9a948f8a837d756e686a6f73777b7f83878c90939a9d9fa4acabb1b6b8bcc3bebab8b6afacaaa8a095887c6f6255483c2f221509000000000004101c2934404b55626f7c8996a0acbcb3a9a0969083796d6d7a838f949fa4acb2b9bdc4c6c5c2bfbab9b7b5b3b2b0afaeaeadb4aeacababaaaaaaa9a9a9a9a9a9a8a8a8a8a9a9a9a9a9a9aaaaaaababacaca399887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3bcc3c4c7c7c5c4baada297887b6e62554846535f6976828f98a3abb2b8b9bebebfc0c1c1c2c3c3c4c4c4c5c5c5c5c5c4c4c4c3c2c2c1c0bfbebdbeb9b8b4aea69f92867b6e6154483b2f24180d0100000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e7e8b98a3abadb3b7bcc2bdb9b3ada9a29e97918b847e766f6a605d554e5860696e747b80858c91979ea0a8acb1b7bcc2c3bcb7ab9f94897c6f62564c41362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c4b7ab9f94908f939ea595897c6f6d7a8793a0adbac6c5b8aca096918d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8e939eaab6c3cfc2b5a99c8f8276695c4f4336291c100300000000000a1724303d4a5763707d8a939d9fa7acb2bab2a89d9184786c69707d87939792867d6f6e7b86929fa8b2bcb7b3aeaba69f9c96918b857f79726d67605b60676d727a7f858c91969da0a7acaeb5b9bdb2a89e9184796d60554c4135291e1308000000000714212d3a4754606d7a85929896989a9c9e9fa4aca7aaacaeb4b5b8babec4c4bfbab8b3adaba69f9c959089817a74787c8083888c90939a9d9fa4acacafb6b8bcc0bbb9b6b3adabaca49f9d9996918d8073675a4d4034271a0d010000000006131f2c3845515c6774818d9aa8b2bdbbb2a8a0958f82787a8390959fa6afb6bec3c6bfbbb9b5b4aeacaaa8a6a5a4a3a2a1a1a0a39f9f9e9e9d9d9d9c9c9c9c9c9c9b9b9c9c9c9c9c9c9d9d9d9d9e9e9f9fa4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b556975828f9ca8aeafb6b7bcc2cbcabeb3a996897d7063564a4855616e7b88949faab4bdc4c6c9c8c4c3bfbdbcbbc0bbb9b9b8b8b8b8b8b8b8babfbabbbcbec0c4c6c9c6c5bfbaafa3998c7f7366554b4135291d110400000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e8390979a9fa2a9abb0b9bbc0bebab3ada9a19e96918a827c746d675d54606a6f7b81868d92989ea1a9acb2b8bcc3c0bbb9b1aca9a19c8f8275685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c3b6a99c9082828e939d97877a6d6d7a8793a0adbac6c8bdb2a8a09d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9ea5afbac6cfc2b5a99c8f8276695c4f4336291c100300000000000916232f3c4855616b76828f99a3afb9bdc4b8aca0968a7d706e7b859299a19892867d75818e98a2aebac3c5bebab8b0aba8a09e97918c857f79716c656c71797f858c92979ea1a8acb1b9bbbfc6c3b9ada1968c7f72675d51453a3025190d010000000a1724303d4a5763707d838587898b8d8f91939a989a9d9fa3aba8abaeb4b7b9bdc4c5bebab8b0aba79f9d938e858184888c9095999d9fa4acacafb6b9bbbdb9b7b5afaca9a9a29f9b9a93908c8884817d6f6356493c3023160900000000000714202d3a4753606d7985929fabb8c3c4bab1a79f948e81839095a0a7b0bbc0c4bdb9b5aeaca8aba39f9d9b9998979695949493999292919190909090908f8f8f8f8f8f8f8f8f8f909090909091919292939a948d8074675a4d4134271a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677784919ea2a1a2a9abb1b9c2cdbeb1a4978b7e7164584b4c5965727f8c98a6b0bcc6cfcbc3bcb8b6b2b0afaeb5afacacacabababababacaeb4aeafb0b1b4b8b9bec4cdcac0b5ab9d908377675d5145392c20130600000000000000000000000a1723303d4a5663707d8996a3b0bcbeb2a5988b7f8185898d92979c9fa6acafb5babfbeb9b3ada8a19e948f8780796d6056626f7c878e92989fa2aaadb3b9bdc3bfbab6afaca7a09d97928c867a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f8279818d92918578686d7a8793a0adbac6cec3bab2acaaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a8aaafb7c1cccfc2b5a99c8f8276695c4f4336291c100300000000000714202c38444f59626f7c87929faab4bfc8bdb2a89c90837679839197a2aaa29892867f88939faaaeb5b8babfc5c2bbb7b2aca9a19e97928c847e7871787e848c92979ea2a9adb2b8bcc3c7cbc9c6bdb2a89e92857a6d60564c41362a1d11050000000a16232f3c4855616b7077797a7c7e80828486898b8d909299989c9fa2aaaaacb2b8babec5c2bbb7b1aba59e97928e9196999da0a7a9acafb6b9bbb9b8b4b2acaaaba39f9d9997928e8b8783807c78746f6b6054483b2f22150900000000000b1824313e4b5764717e8a97a2aab3bbc4c3b9b0a69e938e90949fa7b1b9c2bebab2acaba39f9c989992918f8d8b8a89888887878686858584848383838383828282828282828283838383838384848585868687878276695c504336291d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693959594969d9fa7b1bcc7beb1a5988b7e7265584b4f5b6875828e9ba8b5c1cec6beb9b1abaaa6a4a2a2a1a49f9f9f9e9e9e9e9f9fa3aaa1a2a3a4a7abadb3bbc2cac6b9ac9f93867a6d6054473a2d21140700000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e74797d81858b90949b9fa3abaeb4bbbfbeb9b2aca69f999084796d6053606c7884919da3aaaeb3b9bec4beb9b4aeaca49f9c95908b857f7a6d685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f837677808c8f8376696d7a8793a0adbac6d5ccc3bdb8b7b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b5b6bac1c9d3cfc2b5a99c8f8276695c4f4336291c1003000000000004101c28333e47535f6a74818e98a3aebac6c3b7ab9f94887c818f95a0a9b3aaa298928c939a9e9fa3abacaeb4b9bbc0c3bdb9b3ada9a19e96918b837e838a91969ea1a9adb3b9bdc4c8cac6c4beb9b8b3ada1978c8073685e5246392d2013070000000714202c38444f5961636a686e6f717375787a7c7e818386898c8f92989a9ea0a8abadb3b9bec4c2bcb8afa9a29e9a9ea1a8aaacb1b6b9bab8b5b3adaba8a8a09e9a9992908c8985827e7a77736f6c656360594f44382c1f130700000000000a1623303d495663707d869298a1a9b2bbc4c2b8afa59e9b9c9fa6b0b9c3bcb3aea8a09e99928f8c89868482807f7d7c7b7b7a7a7979787877777776767676767675757575767676767676777777787879797a7a7b7b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b888a8988888990959fabb7c4beb2a5988b7f7265584c4b556a7784919daab7c4c9beb4aca79f9d9997969594999392929292929292929893949596989a9ea1a9b0b8c2c7bbafa499897c6f6356493c3023160900000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e726d7074797e83888e92999fa3aaaeb5bdc1bdb3a99f93887c6f665c505b65717e8b96a1acb9bec3bcb8b3adaaa39f9a938f89837e79736d685e564c41362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f83766c74808b8074676d7a8793a0adbac6d3d5cec8c5c4c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c1c3c6ccd3dccfc2b5a99c8f8276695c4f4336291c10030000000000000b16212b37434e58616e7b86929fabb4bfc7bcb0a69e91858f939ea7b1bcb4aaa29f989f969192999b9fa2aaacafb5b9bdc4beb9b3ada8a19e95908a90959ea1a8adb3b9bec5c9c7c5bebab8b3adaba9a29f9b92857a6d6154473a2e21140700000004101c28333e474f5557565e6163656769676d6f727477797c7f8285898d91969a9fa2a9adb2bbc0c7c1bbb3adaba7abacb2b7b8b8b5b3adaba8a9a19e9b9896918d8a8683807c7975716e686662605b53544f473d32271b0f0300000000000916222f3c4854606b707d869297a1a9b2bac3c1b7afa9a7a9abb0b9c2b9b1aaa29f96918b86827f7c797775737271706f6e6e6d6d666c6b6b6a6a6a69696969696969696969696969696a6a6a6a6b6b656c6d6d6e6e695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c7f7d7c7b7b7c82909da9b6c3beb2a5988b7f7265584c515d677985929facb8c5c1b7aca29b95908c8a8988878686868585858585858586878788898b8d91979fa6b0bbc7c0b5ab978b7e7164584b3e3125180b00000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e726563676d71767c81868d92989fa3abafbbb9ada1978e81746b60544a53606d7984919ea9b3bebbb1aca9a19e98928e87827d77716d67605d564c443a3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f8376696d737f7f72656d7a8793a0adbac6d8cfc6bfbab9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8babec5ced7cfc2b5a99c8f8276695c4f4336291c1003000000000000050f1a26313c46535e6974808d99a3aebac7c2b9ada19791979ea5afb9c3bcb4aeaca59e9184868a8f92989c9fa3abacb2b7bbc2beb9b2aca79f9d979d9fa7acb2b9bec5cac7c0bbb9b3adaba9a19e9a97928e8a877e7265584b3f3225180c000000000b17212c353e44484a4c525456585a5e696e6e6e6e6e6e6f7275797c8084888d92979ea1a9aebbc0c7c5beb9b8b4b7b9bcb3aeaba8a9a29f9b9897928e8b8884817d7a76736f6d6d6d6d6d665c53504948443d352b21160a0000000000000713202c38444f59606b6f7c859197a1a8b1bac3c1bab6b4b6b7bcc2b8b0a7a098928b847f7a7676767676767676767676767676767676767676767676767676767676767676767676767676767676767670606161615f574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a6f73716f6f6e707d8a97a3b0bdbeb2a5988b7f7265584c53606d7a8698a2aebac6bbafa59b908b837f7d7c7b7a7a797979787878787879797a7b7c7d7e81858f949fabb7c5bfb3a6998c807366594d4033261a0d00000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e7265555c60646a6f747b81868d92999ea5afb0a69e92857a6d61595858585c66727e8b97a1adb5afa7a09d97928c86817b75706b65605c55544e463d32291e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f837669636d72796d606d7a8793a0adbac6d1c6bdb4aeacababababababababababababababababababaeb3bcc5d0cfc2b5a99c8f8276695c4f4336291c1003000000000000000a15202a36424d57616e7b86929facb6c0c9beb2a9a19ea1a9adb3bbc2c5bfbab7ab9e91847c7e82868b8f92999ea1a8abb0b8bdc3bdb9b1aba9a4a9abb1b9bdc4cac5beb9b5afaca9a29f9a97918d8985817e7a726d62564a3d3124180b0000000005101a232c33383c3d414647494b54616e7b7b7b7b7b7b7b7b7b7b7b7a777c80858b91979da4afb6bec7cac6c5c1c4beb3aaa29f9c9897928f8b8885817e7b7a7a7a7a7a7a7a7a7a7a7a796d6053463f3838322b23190f0400000000000004101c27333d474f59606a6f7c859196a0a8b1b9c2c6c2c1c3c4c2b9b0a69f9590857f7c82838383838383838383838383838383838383838383838383838383838383838383838383838383838383838276695c5455534d453b31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f6266646262636f7c8996a2afbcbeb2a5988b7f7265584c54616d7a8794aab4bfc3b6aa9e938b7e7773716f6f6e6d676c6c6b6b6b6b6c656c6d6e6f70717479828f9ca9b3bec1b4a79a8e8174675b4e4134281b0e01000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e7265656565656565696e747a80868e939fa4ac9f948b7e7168656565656565656d7985919eababa39f95908b857f7a746e6965656565656260584e43382c1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f8376695b62666d66606d7a8793a0adbac6cbbfb4aba39f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2aab3becacfc2b5a99c8f8276695c4f4336291c100300000000000000030e1a25313b46525e6974818e9aa4afbbc8c4bbb2ada9a19ea1a9b0b8c2cac5b9ada19690837a757a7e82868c91969c9fa6acb2bac3c2bcb8b6b1b6b7bcc2c9cbc3bbb3adaba39f9c97928d8985817d7975716d68625b51453a2e221509000000000008111a21282c2f3036393b44515d6a77838888888888888888888882756f74797f848d929fa4acb6c0ccd2d1cdc6baaea298928f8c8885827f7b7875717b87878787878787878787877e7165584b3e2d2c272119110700000000000000000b16212b353d474f58606a6f7b849195a0a7b0b9c2cdced0c5bcb1a79f948f837b727d898f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f85796c5f524846423b33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e535559575656636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebac2b5a89b8f82756c6664636261605d555f5f5f5f5f5f5b606061626365676f7c8897a1adb9c2b5a89b8f8275685c4f4235291c0f02000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e727072727272727272727272747b818e939aa49c90837972727272727272727272727f8c99a5a399928e837e79737272727272727272726f6a6054483b2e22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050e1b2734414e5a6774818d9aa7b4c0c2b6a99c8f8376695c545c605c606d7a8793a0adbac6c7baaea3999292929292929292929292929292929292929298a2aebac6cfc2b5a99c8f8276695c4f4336291c1003000000000000000009141f2a36424d57626e7b87939facb9c5cdc4b9ada19791979fa6b0b8c2c9bdb2a8a0958f82776d71767b7f848a8f949da0a8b2bdc8c8c4c3bdc3c4c7cdcec3b9b1a9a29e99928f8a85817c7874706d6664615d5651493f34291d12050000000000000810171c2023252a2d3744515d6a77849094949494949494948f827568676d7279808b939aa4afbbc2cdd8d2c5b8ab9f9285827f7c7975726f6a686e7b879393939393939393938b7e7165584b3e32251b160f07000000000000000000050f19232b353d464e585f696e7b8390959fa6b0bbc4cfcabeb4aa9f958f82796e707d89969c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9285796c5f52463a36312921170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c4347484c4a4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabeb1a4988b7e71655a5756555453514b525252525249505354545556555f6a7885929eabb8c3b6a99c908376695d5043362a1d1003000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e727d7f7f7f7f7f7f7f7f7f7f7f7f7f8186939f9a8d807f7f7f7f7f7f7f7f7f7f7f7f7f8c99a69f9286827f7f7f7f7f7f7f7f7f7f7f7f7f7d6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c11151b2734414e5a6774818d9aa7b4c0c2b6a99c8f8376695c4a515354606d7a8793a0adbac6c5b9ac9f9287858585858585858585858585858585858585929fabb8c5cfc2b5a99c8f8276695c4f4336291c10030000000000000000030e1a25303b47535f6a76828f9ca9b3becac4b8ab9e91858f949fa6b0b9c2c4bab1a79e948c7f736b696e73787d82889196a0acb8c5d1d1d0cad0d1d3d4c8bcb1a7a097928d87827e7974706c6663605c5454524c443f372d23180c0100000000000000050b101416191e2a3744515d6a7784909da1a1a1a1a1a19b8f8275685d60676d747f88939fa6b0bcc7d3c7baaea194877b75726f6c6665625f616e7b8794a0a0a0a0a0a0a0988b7e7165584b3e3225180a040000000000000000000000071119232b343c464e575f696e7a8390949fa9b2bec9c6baaea2989083796d67707d8996a3a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99f9285796c5f5246392a261f170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222a31373a3c403e4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabcafa296897c6f63564a49484747454046454545453f44464748494a4e586a7783909daab6c3b7aa9d9084776a5d5144372a1e1104000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e74808b8b8b8b8b8b8b8b8b8b8b8b8b8e939aa49d928d8b8b8b8b8b8b8b8b8b8b8b8b8c919ca8a399928e8b8b8b8b8b8b8b8b8b8b8b8b8b807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911171d21242734414e5a6774818d9aa7b4c0c2b6a99c8f8376695c50444754606d7a8793a0adbac6c1b5a89b8e8178787878787878787878787878787878787d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c100300000000000000000009141f2b37434e5864717e8a97a2adbac6bfb3a6998c80828f949fa7b1bac3c3b9b0a69f93887d706861666c70767c84919daab7c4d0d7d3d2d2d3d7d1c5b8aca0959085807b75716d6763605b5453504a4746413a322d251b1106000000000000000000000407080e1e2a3744515d6a7784909daaaeaeaeaea89b8f8275685c555d606d737f8c949fabb7c4cfcabdb1a4978a7e716562605b545554616e7b8794a1adadadadada4988b7e7165584b3e3225180b00000000000000000000000000071119222b343c454d575e686d7a829097a1adb9c6c5b8ab9f92867b6e6763707d8996a3b0b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6ac9f9285796c5f5246392c1a140d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f333c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c3c3b3a39352f3838382d3337393a3b3c43505d697683909ca9b6c3b7ab9e9184786b5e5145382b1e0700000000000000000000000a1723303d4a5663707d8996a3b0bcbeb1a5988b7e74818d9898989898989898989898989b9fa4aca49d9a989898989898989898989898999ca3adaba39f9b9898989898989898989898988c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292e313235414e5a6774818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e82756b6b6b6b6b6b6b6b6b6b6b6b6b6b6b707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000020f1a26313c4653606d7985929fabb8c5c2b5a99c8f827a8290959fa8b2bbc5c1bbafa49a92857a6e655b606d727e88939facb9c6d1cbc7c5c5c7cbd1c3b7aa9d908479736e6964605c5553504a46443f3a39353028201b12090000000000000000000000000000111e2a3744515d6a7784909daab7bbbbb5a89b8f8275685c4b515b606c7783909ca8b2bdc2c2c0b4a79a8d8174675a53504a4854616e7b8794a1aebababab1a4988b7e7165584b3e3225180b0000000000000000000000000000071019222a333b454d565e686d7984919eabb8c4bfb2a5988c7f72695f63707d8996a3b0bcc2c2c2c2c2c2bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbec2c2c2c2c2c2b8ac9f9285796c5f5246392c1f0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b1f2123303c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f2e2d2c29242c2c2c22272b2d2d2e3643505c6976838f9ca9b6c2b8ab9e9285786b5f52452e23180c0000000000000000000000061723303d4a5663707d8996a3b0bcbeb1a5988b7e74818d9aa5a5a5a5a5a5a5a5a5a5a5a8acafb6aea9a7a5a5a5a5a5a5a5a5a5a5a5a5a6a8adb6b5afaca8a5a5a5a5a5a5a5a5a5a5a5998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3e42424e5a6774818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275685f5f5f5f5f5f5f5f5f5f5f5f5f63707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c10030000000000000000000009151f2c3845515c6674818e9babb4bfc5b8ab9f92857979839096a0a9b3bcc6c0b6aca1978f82776c606c727f88939aa4afbbc8c6bfbab9b9bbbfc6c5b8aca0958d80746e645b53514b46443f3a38342e2d29241e160e09000000000000000000000000000004111e2a3744515d6a7784909daab7c3c2b5a89b8f8275685c4f45505b65707d8996a1adb6b6b6b6b6aa9d9083776a544a443f4854616e7b8794a1aebac6beb1a4988b7e7165584b3e3225180b000000000000000000000000000000071018212a333b444c565d677784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc9cdc5beb9b8b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b2b3b8bfc7cfc5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f2223303c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f22201f1d181f1f1f171b1f20212936424f5c6975828f9ca8b5b6b3ac9f9285796c5f4a4034281c10040000000000000000030a111723303d4a5663707d8996a3b0bcbeb1a5988b7e74818d9aa7b2b2b2b2b2b2b2b2b2b2b4b9bbc0bab5b4b2b2b2b2b2b2b2b2b2b2b2b2b2b4b8bfc0bbb9b5b2b2b2b2b2b2b2b2b2b2a6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222d363f454a4b4f4f4f5a6774818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275685b52525252525252525252525663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c10030000000000000000000004101c2834404b5463707d8a99a3aebac6baaea298887b6e7a849197a1aab4bfc7beb3a99f948c7f726b717e88939aa4acb6c0c4bdb4aeacacaeb5bdc6bcb1a79d928d80736d635a50463c38332d2b2823201d19130c0400000000000000000000000000000004111e2a3744515d6a7784909daab7c3c2b5a89b8f8275685c4f3f4953606b7884919ea9a9a9a9a9a9a99f928578665c5144404854616e7b8794a1aebac7beb1a4988b7e7165584b3e3225180b00000000000000000000000000000000060f182129323a444c556a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bccfc5bbb3adaba3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a5a7adb5bfc9c5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111921272c2f30373c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f221513100c0712120b0f12131c2935424f5c6875828f9ba8aca9aaa29f938679665c5144382c1f120600000000000000030c151c2328303d4a5663707d8996a3b0bcbeb1a5988b7e74818d9aa7b4b8b9bbbfbebebebebec0bbb9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9bbc0bebebebebebfbab9b8b3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f485056585b5b5b5b6774818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275685b4f4545454545454545454a5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c100300000000000000000000000c18232e3a4753606d7a86929facb9c5beb4aa978a7e716e7b859298a2aebac0c5bbb0a69f92867b6f7d87929aa4acb6bec3bbb2aba39f9fa3abb5bdc3b9aea49d928c7f726c61584e433a2f241f1c1713110d08020000000000000000000000000000000004111e2a3744515d6a7784909daab7c3c2b5a89b8f8275685c4f4d4d4f596875828e9b9c9c9c9c9c9c9c9c9786796d60534d4d4d54616e7b8794a1aebac7beb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000060f1720293244515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bccabeb3a9a19e97979797979797979797979797979797979797979797989ba3adb8c3c5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232b32383b3c433f4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f22150904000005000003050f1c2835424f5b6875828e9ba39f9c9998928f86796d6053463a2d201307000000000000000a151e262e34383d4a5663707d8996a3b0bcbeb1a5988b7e74818d9aa7ababacaeb5bdc6d1c7bdb5afacabababababababababababababababababababababacafb6bec7d1c6bcb4aeacababa6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a45505a6265686868686874818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275685b4f4f4f4f4f4f4f4f4f4f4f5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000007131f2c3945515d6776838f9ca9b6c2c0b3a6998d8073696f7c86929fa4aeb9c2c2baaea2988f827b859299a3acb6bec2b9b1a9a199929299a3abb4bdc0b6aea49f93877e706a5f554c41352920170b06050100000000000000000000000000000000000004111e2a3744515d6a7784909daab7c3c2b5a89b8f8275685c59595959596673808c8f8f8f8f8f8f8f8f8f8f877a6d615959595959616e7b8794a1aebac7beb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000050e172b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc6b9ada197928a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b919ba7b3c0c5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b353d444849504c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f22150900000000000000020f1c2835424f5b6875828e9a9992908c8985827f786d6053463a2d20130700000000000006111c2630383f44464a5663707d8996a3b0bcbeb1a5988b7e74818d9a9e9e9e9fa3abb5bfcbc0b5aba39f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa4acb6c0cbbfb4aaa39f9e9e9e998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313d4a56626c71757575757575818d9aa7b4c0c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275685b5b5b5b5b5b5b5b5b5b5b5b5b63707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000004101d2935404b556673808c99a6b3bfc1b5a89b8e8275686a717e8b929da6b0bcc5bfb4aa9f948f859297a1abb4bec1b8b0a7a0979186869299a3abb4bdc0bbafa49992867c6f675d51453e32291f1409000000000000000000000000000000000000000008101e2a3744515d6a7784909daab7c3c2b5a89b8f82756866666666666666707e8383838383838383838383827b6e666666666666666e7b8794a1aebac7beb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc5b8ab9e92857e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7f8b98a5b2bec5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d474f54565d595456636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f22150906060606060606060f1c2835424f5b6875828e8d8a86837f7c7975726d665c5044382b1f12060000000000000c17232e38424a5053505663707d8996a3b0bcbeb1a5988b7e74818d929292929299a3aebbc7bbafa39992929292929292929292929292929292929292929292939aa4afbbc7baaea39892929292928c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e81828282828184919eaab7c4c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275686868686868686868686868686868707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c10030000000000000000000000000c18242f3d4a5763707d8a96a9b3bec3b7aa9d9084776a616c74808d949faab4bec6bcb0a69f979297a1a9b3bdc1b8b0a69f9590857c7d879299a3abb5bfc0b5aba29891847a6d605a50443b3025190e0500000000000000000000000000000000000009111a22283744515d6a7784909daab7c3c2b5a89b8f827573737373737373737373767676767676767676767676737373737373737373737b8794a1aebac7beb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9184787070707070707070707070707070707070707070707b8895a2aebbc5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38444f5960636a65615e636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f2215131313131313131313131b2835424e5b68758184807d7a76736f6d6665605c544a3f34281c1003000000000003101c28343f4a545c605c5463707d8996a3b0bcbeb1a5988b7e7380858585858587929facb9c5b9ac9f928785858585858585858585858585858585858585858588939facb9c5b9ac9f928685858585857f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d8e8e8e8e8e9196a0acb9c5c2b6a99c8f8376695c50434754606d7a8793a0adbac6c1b5a89b8e8275757575757575757575757575757575757d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c10030000000000000000000000000714212e3a4754616d7a8797a1adb9c5b8ac9f928579685d606d78829098a2aebac1c2b8b0a9a29ea2a9b3bbc2b8b0a69e948f837a6f707e879299a3aebbc1bdb4aaa0968e81756c62564d42362a21170b000000000000000000000000000000000009121b232c333944515d6a7784909daab7c3c4b7aa9d9184808080808080808080808080808080808080808080808080808080808080808080808d9aa7b3c0cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9185786b646464646464646464646464646464646464646f7b8895a2aebbc5b8ac9f9285796c5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b6f76726e69656f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f22202020202020202020202020202d3a4753606d797774706d676663605c5453504a42382e23170b00000000000006121f2c3844505c666d665e63707d8996a3b0bcbeb1a5988b7e72737878787878828f9ca9b6c2b6a99c908378787878787878787878787878787878787878787885929eabb8c1b4a79b8e817878787878726d63574b3e3225180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9a9b9b9b9b9ea0a8b2bdc9c2b6a99c8f8376695c50434754606d7a8793a0adbac6c4b8ab9e9184828282828282828282828282828282828282909ca9b6c3cfc2b5a99c8f8276695c4f4336291c10030000000000000000000000000713202d3946525e687885929eabb8c5baaea298877a6d605c666e7b86929fa6b0bcc6c2bbb3adabadb3bbc3b9b0a69e948f82796e686c707e87929fa5afb9c3bcb2a89e938b7e71695e52463e33281c100400000000000000000000000000000109121b242d363e4449515d6a7784909daab7c3c5b8aca096918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8d929da9b5c1cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9185786c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6f7b8895a2aebbc5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7d837f7b76726f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c2f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c3845515d676d676763605d555653504a46443f3830261c1106000000000005111d2935414c56606d796d6863707d8996a3b0bcbeb1a5988b7e72666b6b6b6b76838f9ca9b6c2b6a99c9083766b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b7885929eabb8c1b4a79b8e81746b6b6b6b66635b51463b2f22160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7a8a8a8aaacb2bac4cec2b6a99c8f8376695c50434754606d7a8793a0adbac6c5b9ada196918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e90949fabb7c4cfc2b5a99c8f8276695c4f4336291c100300000000000000000000000005111e2a36414c566a7683909da9b6c3bfb4aa95887b6f62545f69717e8b949eaab4bfcac5beb9b8b9bec5bcb1a79f948f82796d675e616c727f8b939ea7b1bcc4baafa59f92857b6e61594f44392d201408000000000000000000000000000109131b242d363e485055575d6a7784909daab7c3c8bdb2a8a09d9999999999999999999999999999999999999999999999999999999999999999999a9da4aeb9c5cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000207111e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9184787878787878787878787878787878787878787878787c8895a2aebbc5b8ac9f9285796c5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c8c87837f7b7d8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f6255483c3939393939393939393939393939393935404b555d605d555754514b4946443f3a38342e261e140a0000000000000713202d3946525e6875817a6d65707d8996a3b0bcbeb1a5988b7e72655f5f5f6976838f9ca9b6c2b6a99c9083766d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d7885929eabb8c1b4a79b8e8174685f5f5f595751493f352a1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4b5b5b7b9bdc4cccfc2b6a99c8f8376695c50434754606d7a8793a0adbac6c9bdb2a8a19e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c9fa6b0bbc7cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000010d192530414e5b6874818e9ba7b4c1bcb0a396897d70635657626c75828f98a2aebac3cecac6c5c6cac5b8aca0958f82796d67696969696d75818e95a0acb8c5c1baada2978e81756c6155493c3023160a000000000000000000000000010a131b252d363f48505a6164626a7784909daab7c3cec3bab2acaaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a7a9aeb6c0cbcbbeb1a4988b7e7165584b3e322518100c060000000000000000000000000000080e13171e2b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc6b9ac9f93888585858585858585858585858585858585858585858585929fabb8c5c5b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566875828e9a93908c8784919eaab7c4beb2a5988b7f7265584c54616e7b8794a1aebabbaea295887b6f62554846464646464646464646464646464646464646434b5153514b4a4745413e3a38342e2b28231c140c020000000000000714212e3a4754616d7a8782776c707d8996a3b0bcbeb1a5988b7e726558525c6976838f9ca9b6c2b6a99d90837a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a85929eabb8c1b4a79b8e8174685b52524c4b463f372e23180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0c1c4c5c9cececec2b6a99c8f8376695c50434754606d7a8793a0adbac6cfc4bab2adaba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9abb0b8c2cdcfc2b5a99c8f8276695c4f4336291c100300000000000000000000000000081a2733404d5a6673808d99a6b3c0bdb1a4978a7e716457505a616e7b86929fa8b2bdc8d4d2d1d2d0c3b7aa9d90847a7575757575757575757984909daab7c3cabeb3a99e938a7d7064574a3d3124170a0000000000000000000000010a131c252d373f48505a626c706f6a7784909daab7c0c0c0c0bdb8b7b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b5b9c0c0c0c0beb1a4988b7e7165584b3e32251f1c17110a0300000000000000000000020a12191f23262b3744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc8bbafa49a93929292929292929292929292929292929292929292929298a2aebac6c5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687884919e9f9d98969196a0acb9c5beb2a5988b7f7265584b54616e7b8794a1aebabbaea295887b6f62555353535353535353535353535353535353535353535353535353535353534b49453e362c2217110a0200000000000004101c2934404b5564717e8b8c7f72707d8996a3b0bcbeb1a5988b7e726558505c6976838f9ca9b6c2b8ab9f95908787878787878787878787878787878787878787879297a2adb9c1b4a79b8e8174685b4e453f3e3b352e251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0c2c2c2c2c2c2c2c2b6a99c8f8376695c50434754606d7a8793a0adbac6d6ccc4bdb9b8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6b7bbc2cad4cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000c1925323f4c5865727f8b98a5b2bebeb2a5988b7f7265584c535e69727f8c96a0acb8c3cdd8deddd0c3b6aa9d9083828282828282828282828283909daab6c3d0c5bcafa59b8e8175685b4e4235281b0f02000000000000000000000a131c252e373f49515a626c717d7c727784909daab4b4b4b4b4b4b4b4b4b4b5b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b8b9bbb9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b1a4988b7e7165584b3e322d2c28231c150c030000000000000000000a141c242a2f32333744515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcccc0b6aca49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2aab4becac5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8796a1aca9a8a09ea0a8b2bdc9beb2a5988b7f72655c5554616e7b8794a1aebabbaea295887b6f6260606060606060606060606060606060606060606060606060606060606060575550483e34281d11000000000000000006131f2c3845515c6775828f92877c707d8996a3b0bcbeb1a5988b7e726558505c6976838f9ca9b6c2bcb1a79f9d9494949494949494949494949494949494949494949ea2a9b3bec1b4a79b8e8174685b4e4135322f2a231c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4b5b5b5b5b5b5b5b5b5b5a99c8f8376695c50434754606d7a8793a0adbac6d3d6cfc9c5c4c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c3c4c7cdd4dccfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000b1824313e4b5764717e8a97a4b1bdbfb2a6998c7f7366594c4d57606d7984919da7b1bcc8d4dfddd1c4b8ab9f95908f8f8f8f8f8f8f8f8f8f8f9095a0acb8c4d1cec1b4a89b8e8175685b4e4235281b0f02000000000000000000030d1c252e373f49515b626c717e87867f7884909da7a7a7a7a7a7a7a7a7a7a7a8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7abadafaca8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a4988b7e7165584b413e3a38342e261e150d030000000000000008121c262e363b3f404244515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcd2c7beb6afacabababababababababababababababababababababababaeb4bcc5d0c5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a8b2b6b2acaaacb2bac4cebeb2a5988b7f726d67615f616e7b8794a1aebabbaea295887b6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d211508000000000000000714202d3a4753606d798592999184797d8996a3b0bcbeb1a5988b7e726558505c6976838f9ca9b6c2c2b9b1aba9a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0abadb3bbc5c1b4a79b8e8174685b4e413528221e18120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7a8a8a8a8a8a8a8a8a8a8a8a89c8f8376695c50434754606d7a8793a0adbac6d6cdc4bdb9b8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6b7bcc2cbd4cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000a1724303d4a5763707d8a96a3b0bdc0b3a6998d8073665a4d44515c66717d8a959fabb8c2cdd8e0d4c8bcb1a79f9d9c9c9c9c9c9c9c9c9c9c9c9da0a7b1bcc8d4cec1b4a89b8e8175685b4e4235281b0f020000000000000000010b151f2e374049515b626d727f8893928c8384919d9a9a9a9a9a9a9a9a9a9a9a9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9ea1a49f9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a988b7e716558494e4a46443f3830271f150b010000000000020e19242e3840474b4d4f4f515e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc9d0c7c0bbb9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8babec5cec8c5b8ac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfbdb9b7b9bdc4ccd0c4b7aa9d91837e79736e69626e7b8794a1aebabbaea295887c797979797979797979797979797979797979797979797979797979797979797979716c6155493d3024170a000000000000030f1b27333f495363707d8a98a0968d807d8996a3b0bcbeb1a5988b7e726558505c6976838f9ca9b6c2cbc2bcb8b6adadadadadadadadadadadadadadadadadadadadadb8b9bec5cdc1b4a79b8e8174685b4e4135281b120d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9a9b9b9b9b9b9b9b9b9b9b9b9b9b9b8f8376695c50434754606d7a8793a0adbac6cfc4bbb2adaba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9abb0b9c2cdcfc2b5a99c8f8276695c4f4336291c100300000000000000000000000000091623303c4956636f7c8996a2afbcc0b4a79a8d8174675a4e404a54616c7783909da7b1bcc8d4e0d8cdc3b9b1abaaa8a8a8a8a8a8a8a8a8a8a8aaacb1b9c3cdcecec1b4a89b8e8175685b4e4235281b0f02000000000000000007121d27314049525b636d727f88939a9f948f9195908d8d8d8d8d8d8d8d8d8d8d8f8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d929799938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8b7e71655b535b5753504a423931271d1207000000000007131f2a36404a52585a5b5b5b5e6a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc9d6cfc9c6c5bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb8ac9f9285796c5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d576976828f9ca9b5c2c6c5c4c5c9ced6d1c5b8aca095918b85807b766e6e7b8794a1aebabcb0a4988e888686868686868686868686868686868686868686868686868686868686868686867e7164574b3e3124180b00000000000005121f2b3744505b6574818e9aa89d928d808d9aa6b3c0beb1a5988b7e726558505c6976838f9ca9b6c2c5bbb3adaba7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7acaeb4bcc6c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8276695c50434754606d7a8793a0adbac6c9bdb2a9a19e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c9fa6b0bcc7cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000915222f3c4855626f7b8895a2aebbc1b4a89b8e8175685b4e4242505a63707d89959fabb8c4ced9ded4cbc3bcb8b6b5b5b5b5b5b5b5b5b5b5b5b6b8bcc1c1c1c1c1c1b4a89b8e8175685b4e4235281b0b0500000000000000000c18232f3943525b636d727f8b939aa4a69f9c9d90838181818181818181818181828081818181818181818181818181818085929386818181818181818181818181818181818181818181817d6f6c656a6864605c544b43392f23180c00000000000a17232f3b47525c6366686868686a7784919daab7c4bdb1a4978a7e71645763707d8996a3b0bcc9cdc5beb9b8afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3a47535f697885929eabb3b8b9bec5c6cacfd7d4c8bdb1a8a09d97928d87827c6e7b8794a1aebac0b5aaa0989593939393939393939393939393939393939393939393939393939393939393938a7e7164574b3e3124180b0000000000000613202d394653606c7884919eaba49f9386939facb9c6beb1a5988b7e726558505c6976838f9ca9b6c2beb3a9a19e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa3aab4bfc1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727f8282828282828282828282828282828282807366594d404754606d7a8793a0adbac6c5b9ada196918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90949fabb7c4cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000815222e3b4855616e7b8894a1aebbc1b5a89b8e8275685b4f423e4854606b7683909da8b2bdc9d5d6ccc4bdb9b7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a89b8e8175685b4e4235281c160f0800000000000004101c2934404b55636d737f8c919fa4acb0aba99f92867d7474747474747474747a86827e787474747474747474747474747e8b979991837b747474747474747474747474767779797a7a7b7b7a7a79787774716d665c554b4034291c1004000000000d1926323f4b58636e7375757575757784919daab7c4bdb1a4978a7e71645763707d8996a3b0bccfc5bbb3adaba2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b88979fa2aaabadb3b8b9bec5cdd7cec3bab1aca9a19e9a938a7d717b8794a1aebac6bcb2aaa4a29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7e7164574b3e3124180b0000000000000916232f3c4956626f7c8997a1adafa4999399a4afbbc7beb1a5988b7e726558505c6976838f9ca9b6c2b9ada197928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a3aebac1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313d4a56626d727575757575757575757575757575757575736e63574b3a4754606d7a8793a0adbac6c4b8ab9e9184828282828282828282828282828282828282909ca9b6c3cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000814212e3b4754616e7a8794a1adbac2b5a89c8f8275695c4f4238444f5964717e8a96a0acb9c6d0cec4bab2acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79b8e8175685b4e42352c2721191108000000000006131f2c3845515c67737f8c919ba3afb6beb7aea39992877d70696767676766737f8c908a85807c77736f6a6767676a707d87929fa09591857c6f6b67676767676c707b7f82848586878787878786868583817e786d675c5145382c1f1307000000000d1a2733404d5a66738082828282828286929fabb8c5bdb1a4978a7e71645763707d8996a3b0bcc9beb3a9a19e95959595959595959595959595959595959595959595959595959595959595959285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a8e92989a9ea1a9abadb3bbc5cfd5ccc3bdb8b3adaca4968a7d707b8794a1aebac7c4bcb5b0aeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca4978a7e7164574b3e3124180b000000000005121e2a36424d576673808d99a9b2b5aba49fa4abb5c0ccbeb1a5988b7e726558505c6976838f9ca9b6c2b8ab9e928581818181818181818181818181818181818181818186929facb9c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222e3a45515b62656868686868686868686868666d6668686866635b52473a4754606d7a8793a0adbac6c1b5a89b8e8275757575757575757575757575757575757d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000714212e3a4754616d7a8794a0adbac2b5a99c8f8276695c4f4343434653606d7884919eaab4bfcbc9bdb2a8a09e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b8e8175685b4e423c38332b23190f05000000000714202d3a4753606d79818891969fa4acb3bbb5aba39992857b6e665c5a606d7984919c97928d8884807c77736f6c6e7c859299a3a7a09792867d6f695f555e68707e868c8f9192989394949494999392908e8a82796d6053473a2e23180c00000004111d2a3744505d6a77838e8e8e8e8e8e9298a2aebac6bdb1a4978a7e71645763707d8996a3b0bcc6b9ada1979289898989898989898989898989898989898989898989898989898989898989898986796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d797e81858a8e92979a9ea1a9b3becad6d5cec8c5beb9b6a396897c707b8794a1aebac7cdc6c0bcbbb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b1a4978a7e7164574b3e3124180b00000000000714212d3a46535f697784909daab7bdb5afacafb5bdc7d2beb1a5988b7e726558505c6976838f9ca9b6c2b6a99c908376747474747474747474747474747474747474747885929eabb8c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f495156585c5c5c5c5c5c5c5c5c5e686e79726d615e57575249403a4754606d7a8793a0adbac6c1b5a89b8e8275686868686868686868686868686868707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000714212d3a4754606d7a8793a0adbac2b6a99c8f8376695c5050505050505c66727f8b98a3aebac7c5b9aca096918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8175685b504a48443d352b21160b0000000006131f2c3845515c676d747d848d939aa2a9b2bbb5aba2979083786d605864717e8a96a1a19e9a96918c8884807c797a849197a2abb1a9a29892857b6e675c616e7a8692989c9e9fa2aaa1a1a1a1a49f9e9d9b948c7f7266554b4034281c1004000004111d2a3744505d6a7783909b9b9b9b9b9fa2aab4becabdb1a4978a7e71645763707d8996a3b0bcc5b8ab9e92857c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c6f6256493c2f23160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d7175797d8185898e9297a1adb9c6d2d8d1cbc7c5bcafa295897c6f7b8794a1aebac7d3ccc6c3c1c0c0c0c0c0c2c4c7cdc6c6c6d0cac6c5c0c0c0c0c0c0c1c2c5cbc6c6bdb1a4978a7e7164574b3e3124180b00000000000815222e3b4855616e7b8895a0acb8c7c0bbb9bbc0c7d0cbbeb1a5988b7e726558505c6976838f9ca9b6c2b6a99c9083766968686868686868686868686868686868686b7885929eabb8c1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232d373f454a4b4f4f4f4f4f4f4f4f59616e7a847e766e69625a524d453f4754606d7a8793a0adbac6c1b5a89b8e8275685c5c5c5c5c5c5c5c5c5c5c5c5c63707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000714202d3a4753606d7a8693a0adb9c3b6a99c908376695d5d5d5d5d5d5d54606d7a86929facb8c5c4b7aa9e9184818181818181818181818181818181818181818181818181817f71655d5d56544f473d33271c100400000004101c2934404b555c606b6f7980889297a1a9b2bcb3a99f958b7f7268606a7683909ca8adaba8a09e9995918c89858490959fa3abb3b3aaa2979183796d6065727f8b98a2aaaaacaeb4adaeaeb5afacabaaa69d908377675c5145382c1f1306000004111d2a3744505d6a7783909da8a8a8a8abaeb4bcc5d0bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9185786f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a6054473b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c555d6064666d7074797d8185929eabb8c5d1cfc6bfbab9baaea195887b6e7b8794a1aebac7c9c1bab6b5b4b4b4b4b4b6b7bbc2cad4cec5bebab8b4b4b4b4b4b4b4b5bac0c9cabdb1a4978a7e7164574b3e3124180b00000000000c1926323f4c5965727f8c9aa4afbbc3ccc7c6c7ccd2d9cbbeb1a5988b7e726558505c6976838f9ca9b6c2b6a99c908376747474747474747474747474747474747474747885929eabb8c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3f4242424242404b55616b75818e8b827b716d615e5750464754606d7a8793a0adbac6c1b5a89b8e8275685b4f4f4f4f4f4f4f4f4f4f4f5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000714202d3a4753606d7a8693a0adb9c3b6a99d9083766a6a6a6a6a6a6a6a6a6a6875818e9ba8b4c1c4b7ab9e918478747474747474747474747474747474747474747474747474716d6a6a6a6360594f44382c201307000000000c18232f39434b515960676d737d859196a1aab3bcb1a79f92857a6d626f7c88949fabb9b8b2acaaa7a09d99978f82848c9299a2a9b3b3a9a0958c8073686875818e9baab4b7b8baafaaa8a7a7a8acafb5ac9f9386796d6053463a2d201307000004111d2a3744505d6a7783909daab5b5b5b8babec5cecabdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e9185786b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6260584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a434c5154545c6063666d70747d8996a2afbcd1c6bdb4aeacaeb4a194877b6e7b8794a1aebaccc1b7afaaa8a7a7a7a7a7a9abb0b8c2cdc5bcb3aeaba7a7a7a7a7a7a7a9afb7c0cbbdb1a4978a7e7164574b3e3124180b00000000000a1623303d495663707d87939fa7b1bec7d2d2d4d7ddd8cbbeb1a5988b7e726558505c6976838f9ca9b6c2b8ab9e918581818181818181818181818181818181818181818186929facb9c1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b23292e3132353535303945515d67707d8993948f867e766e69625a524d54606d7a8793a0adbac6c1b5a89b8e8275685b4f4242424242424242424a5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6a99d9083766e76767676767676767676767d8996a3afbcc5b9aca196887c7676767676767676767676767676767676767676767676767676767676706b6054483c2f2216090000000007121d27313940454f555c606b707c849198a2aebabaada2978c7f726874818e9ba6b0bcc3bab2adabacaaa9998c7f797f879297a2abb5b1a79f92857a6d6976838f9ca9b6c2baafa59e9b9a9a9b9fa3abafa499887b6e6155483b2e221508000004111d2a3744505d6a7783909daab6c1c1c5c6cad0c9c9bdb1a4978a7e71645763707d8996a3b0bcc4b8ab9e91847878787878787878787878787878787878787878787878787878787878787878786d675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313a4145474b5153545c60636f7c8996a2afbccbbfb4aba39fa3aba094877a6e7b8794a1aebac6baafa59e9b9a9a9a9a9a9c9fa6b0bbc7beb3aaa29f9a9a9a9a9a9a9a9da5afbac5bdb1a4978a7e7164574b3e3124180b00000000000916222f3b4854606b73808d95a0acb6c0ccd8e0e3e8d8cbbeb1a5988b7e726558505c6976838f9ca9b6c2b9ada197918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a3aebac1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181d22242529232e39424e58606d7984919e9f98928b827b716c615e5754606d7a8793a0adbac6c1b5a89b8e8275685b4f4f4f4f4f4f4f4f4f4f4f5663707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6a99d9083767b838383838383838383838383909da9b6c3c9bdb2a89e918483838383838383838383838383838383838383838383838383838383837d7063564a3d3023170a00000000010b151f272f343d434b5159616a6f7c86929fa7b1bcb3a99e9184776a75818e9ba9b3bebdb2a8a19e9fa3ab988b7e72737d859299a3aebaaea2988b7f726a7683909da9b6bdb2a89e938f8d8d8e9299a3afab95887c6f6255493c2f221609000004111d2a3744505d6a7783909daab6bcbcbcbcbcbcbcbcbcb1a4978a7e71645763707d8996a3b0bcc6b9ac9f9387858585858585858585858585858585858585858585858585858585858585858585796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a4045464a5056636f7c8996a2afbcc7baaea39992999b9f99867a6e7b8794a1aebac3b6aa9e938e8d8d8d8d8d8f949fabb7c4baaea298928d8d8d8d8d8d8e929da9b5c2bdb1a4978a7e7164574b3e3124180b00000000000713202c38444f59606d7983909aa4afbbc5d0dbe6e4d8cbbeb1a5988b7e726558505c6976838f9ca9b6c2beb3a9a19e9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9fa3aab4bfc1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111518151e2834404b54606a74808d96a0aaa29f948f857e766e695e54606d7a8793a0adbac6c1b5a89b8e8275685c5c5c5c5c5c5c5c5c5c5c5c5c63707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c889090909090909090909090959fabb8c4cec4b8aca09691909090909090909090909090909090909090909090909090909090908a7e7164574b3e3124180b0000000000030d151d2329313940454f585f6a717e8b95a0acb8b9aca096887c6f6f7b8897a1adb9b9ada1969192999c978a7e716b707d87929facb6b4aa9c908376677683909da9b6b9aca0968f8280808187929fa9a296897c6f6356493c30231609000004111d2a3744505d6a7783909daab0b0b0b0b0b0b0b0b0b0b0a4978a7e71645763707d8996a3b0bcc7bbafa499939292929292929292929292929292929292929292929292929292929292929292867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e24292c2e34383a3f4956636f7c8996a2afbcc5b9ac9f9286898e929386796e7b8794a1aebac1b5a89b8e818181818181828f9ca9b6c2b8ab9f9286818181818181818e9aa7b4c1bdb1a4978a7e7164574b3e3124180b000000000004101c27323d45515c676f7c87939fa9b3becad6e0e4d8cbbeb1a5988b7e726558505c6976838f9ca9b6c2c4bbb3adaba7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7acaeb4bcc6c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507121d27303945515c666f7c87939fa8b2aea69f98928b827b6e665b606d7a8793a0adbac6c1b5a89b8e8275686868686868686868686868686868707d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c88959d9d9d9d9d9d9d9d9d9d9fa7b1bcc8d4c8bdb2a8a09e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d978a7e7164574b3e3124180b000000000000030b17222c363e45494b4e58616c7783909daab7bdb2a8998c7f736a7885929eabb8b8ab9e9184868b90938a7d70636b73808d9aa4afb9ac9f92867a6d7683909da9b6b7aa9e918477747475818e9a9b9792897c706356493d3023160a000004111d2a3744505d6a7783909da3a3a3a3a3a3a3a3a3a3a3a3a3978a7e71645763707d8996a3b0bcccc0b5aba49f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e93867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2023282c2e3c4956636f7c8996a2afbcbfb2a5988c7f7d81868b85796e7b8794a1aebabbaea295887c74747474747e8b97a4b1beb7aa9e9184777474747474788693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000b16212834404b55606a74818e97a2adbac4cfdae5d8cbbeb1a5988b7e726558505c6976838f9ca9b6c2c7bdb5afacacacacacacacacacacacacacacacacacacacacacacaeb4bcc5cdc1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232e39424e58606d79839099a4afbabab0aaa29f948f84796c60606d7a8793a0adbac6c1b5a89b8e8275757575757575757575757575757575757d8996a3b0bcc9c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c8895a2a9a9a9a9a9a9a9a9a9abb1b9c2cdd8cec3bab2acaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a4978a7e7164574b3e3124180b00000000000005111d28333e4850555759595a65727f8b98a9b3beb5a99c8f82766a7784919daab7b2a6998c7f7a7f8387897c6f62616e7b87939facb9afa399897c6f7683909da9b6b6aa9d9083776a67717e8b928e8a85817b6e6154473b2e211408000004111d2a3744505d6a7783909696969696969696969696969696968a7e71645763707d8996a3b0bcd2c7bdb5afacababababababababababababababababababababababababababababababa093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d151b1f2223303c4956636f7c8996a2afbcbeb2a5988b7f72757a7f82766e7b8794a1aebabbaea295887b6f676767717e8b97a4b1beb7aa9e9184776b6767676d798693a0acb9bdb1a4978a7e7164574b3e3124180b000000000000050c18232e39434e58616e7a85929fa8b2bdc9d5e0d8cbbeb1a5988b7e726558505c6976838f9ca9b6c2c0b5aba49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2aab3bbc5c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2834404b54606a73808c95a0abb5c0c2bcb1a79f93887d70665b606d7a8793a0adbac6c4b8ab9e9184828282828282828282828282828282828282909ca9b6c3cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c8895a2afb6b6b6b6b6b6b6b6b8bcc2cbd2d5d5ccc3bdb8b7b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b1a4978a7e7164574b3e3124180b0000000000000814212d3945505a6164666666666e7a8797a1adb9b8ab9f928578697784909daab7b2a6998c7f7372767b7f7b6e6465697783909daab6b5ab988b7e717683909da9b6b6aa9d9083776a65707d8a85817d79746e695e52463a2d201407000004111d2a3744505d6a778389898989898989898989898989898989897e71645763707d8996a3b0bcc9d0c7c0bbb9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272b2e2f393c4956636f7c8996a2afbcbeb2a5988b7f72686d7276706e7b8794a1aebabbaea295887b6f625a64717e8b97a4b1beb7aa9e9184776b5e5a606d798693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000007121d27303d46525e68727f8c96a1adb9c4ced9d8cbbeb1a5988b7e726558505c6976838f9ca9b6c2bbafa4999392929292929292929292929292929292929292929298a1a9b3bec1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313945515c666f7c87929fa7b1bdc7bfb4aaa0958d80736b6054606d7a8793a0adbac6c5b9ada196918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90949fabb7c4cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c8895a2afbbc3c3c3c3c3bab9b9b9b9c4c5c9ced5cec8c5c4c3c3bbb9b9b9b9b9b9b9b9b9b9bec3c3c3c3c3c3bdb9b9b9b9b1a4978a7e7164574b3e3124180b0000000000000a1723303d4955616c7172727272727885919eabb8baada297877b727784909daab7b2a6998c7f73727272726e6c71717174818d9aa7b4b3a6998c80737683909da9b6b6aa9d9083777171717b7d79747171706c61574d42362a1e11050000000916232f3c4956626f7c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7a6e615663707d8996a3b0bcc9d6cfc9c5c4b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bac5c5c5c5c5c5b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32373b3c46464956636f7c8996a2afbcbeb2a5988b7f7265616569616e7b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000b151e2a36414c56606d7984919ea8b2bdc9d5d8cbbeb1a5988b7e726558505c6976838f9ca9b6c2b9ac9f93878585858585858585858585858585858585858585868997a1adb9c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f39434e58606d79839099a3afb9c3c5baaea3989083796d605954606d7a8793a0adbac6c9bdb2a9a19e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9c9fa6b0bcc7cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c8895a2afbbcfc6bfbab9adacacacacb7b9bdc4ccd6d4c4bbb5b0aeacacacacacacacacacacb1b9babfbeb7b2b0acacacacaca4978a7e7164574b3e3124180b0000000000000b1824313e4b5764717e7f7f7f7f7f7f84919eaab7beb3a99a8d807f7f85919eabb8b5a99c8f827f7f7f7f7f79717e7e7e7e818f9ba8b5b6a99c8f827e7e84919eaab7b7ab9e91847e7e7e7e7e7e7e7e7e7e7d7064574a3d30251a0e020000000815222e3b4754606a6f70707070707070707070707070707070706e685e5663707d8996a3b0bcc9cdc4bdb9b8adadadadadadadadadadadadadadadadadadadadadadafb3bac2d1c6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b343d43474953535356636f7c8996a2afbcbeb2a5988b7f726558585c616e7b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000000030c1925303b45515c67727e8b96a0acb9c4cfdacbbeb1a5988b7e726558505c6976838f9ca9b6c2b6a99c908379797979797979797979797979797979797979797985929eabb8c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55606a73808d95a0abb5c0c5bbb0a69f92867c6f675c5154606d7a8793a0adbac6cfc4bbb2adaba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9abb0b9c2cdcfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777c8895a6b0bbc6bcb4aeaca1a0a0a0a0aaacb2bac4cec6bbb2aaa4a1a0a0a0a0a0a0a0a0a0a0a5acaeb4b4aca6a4a0a0a0a0a0a0978a7e7164574b3e3124180b000000000003101d293643505c6976828c8c8c8c8c8c9196a0acb9c5b5a99d928d8c8c9197a1adb9b7ab9f948f8c8c8c8c877a78858b8b8b8f939eaab6b7ab9f948f8b8b9196a0acb9b9aca196918b8b8b8b8b8b8b8b8b8b83766a5d5043372a1d090000000006131f2b37434e5860626363636363636363636363686363636363615e565663707d8996a3b0bccfc4bbb2adaba0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a1a3a8b0bac5c6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e54565f5f5f5f636f7c8996a2afbcbeb2a5988b7f72655f5f5f616e7b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000008141e2834404b55606d7984919ea8b2bdc9d5cbbeb1a5988b7e726558505c6976838f9ca9b6c2b6a99c9083766c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c7885929eabb8c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d676f7c87929fa7b1bdc7beb3a99e948b7f726a5f554b54606d7a8793a0adbac6d6cdc4bdb9b8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6b7bcc2cbd4cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083777b88949fabb7bfb4aaa39f94939393939ea0a8b2bdc9c0b5aaa0989593939393939393939393989fa3abaca29a97939393939393938a7e7164574b3e3124180b000000000003101d293643505c6976838f99999999999ea0a8b2bdc5baaea49d9a99999ea1a9b3bebbb0a69f9c99999993877a78859198989b9ea5afbbbbb0a69f9c98989ea0a8b2bdbdb2a8a19e9898989898989898989083766a5d5043372a1d1004000000030f1b27323d464e545656565656565656545e696e756d675f575654524c5663707d8996a3b0bcc9bdb2a9a19e93939393939393939393939393939393939393939394979ea8b3bfc6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e5860626c6c6c6c6c6f7c8996a2afbcbeb2a5988b7f726c6c6c6c656e7b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b000000000000000000020c18232e3944515c66717e8b96a1adb9c5d0cbbeb1a5988b7e726558505c6976838f9ca9b6c2b6a99c908376707070707070707070707070707070707070707885929eabb8c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f59606d79849199a3afb9c3c3b9ada1978f82756d62584e4754606d7a8793a0adbac6c6c6cfc9c5c4c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c3c4c7cdc6c6c6c2b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d90837776828f9ca7b1baaea3989287868686869196a0acb9c5bcb0a4988e88868686868686868686868b9299a3a69a908a86868686868686867e7164574b3e3124180b000000000003101d293643505c6976838f9ca5a5a5a5aaacb2babebebeb6aea9a7a5a5abadb3bbc4c2b8b0aba9a5a5a093877a7885919ea4a8aaafb7c1c2b8b0aba9a4a4aaacb2bac4c4bab2acaba4a4a4a4a4a4a4a49d9083766a5d5043372a1d1004000000000a15202b343d4347494a4a4a4a4a4a505c666e7b817a6e6a615950494a5663707d8996a3b0bcc5b9ada19691868686868686868686868686868686868686868686878c97a3afbbc6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a6f7979797979797d8996a2afbcbeb2a5988b7f7979797979726e7b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000000000007121d2834404a54606d7984919eaab3becacbbeb1a5988b7e726558505c6976838f9ca9b6c2b7aa9d90837d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d85929fabb8c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3b4854606b74808d96a0abb5c0c3baafa59e92857a6e615b51464754606d7a8793a0adb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b5a99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776f7c8995a0acb9ac9f92867b7979797884919eaab7c4bbaea195887c797979797979797979787e86929fa4978a7e7879797979797979776c605346392d201306000000000003101d293643505c6976838f9ca9b2b2b2b2b2b2b2b2b2b2b2b2b6b4b2b2b8b9bec4c0bbb9b2b2b2b2ada093877a7885919eabb5b5b5b5b5b5b5b5b5b6b1b1b7b9bdc4c3bcb8b7b5b5b1b1b1b1b1b1b1a99d9083766a5d5043372a1d100400000000040f19222b32373b3c3d3d3d3d444f59606d78828e847c706c605b534c5663707d8996a3b0bcc4b8ab9e9184797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a8794a1adbac6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c86868686868686929facb9c5c5b9ac9f928786868686867f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000c18232e3944515c66727f8c98a2aebac7d1beb1a5988b7e726558505c6976838f9ca9b6c2b8aca095908989898989898989898989898989898989898989899298a2aebac1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c86939ea2a9afb9bdb2a89d938a7d70685e52493f4754606d7a8793a0acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca99c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776b7783909dacb6aea3988d80736d6d74818e9ba7b4c1bdb1a4978a7e716d6d6d6d6d6d6f79818b9299a3ab9f92867c6e6d6d6d6d6d6d6c655b5044372b1f1205000000000003101d293643505c6976838f9ca5a5a5a5a5a5a5a5a5a5a5a5a5a9abb0b8c2c6c7bdb5afaca5a5a5a5a5a093877a7885919ea8a8a8a8a8a8a8a8a8a8acafb5bdc7c9c3b9b1acaaa8a8a8a8a8a8a8a8a8a89d9083766a5d5043372a1d1004000000000007101920272b2e2f302d38424c56606b73808c9491867d736c655d555663707d8996a3b0bcc4b8ab9e9185786d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d7a8693a0adb9c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8992929292929299a3aebac7c7bbafa39992929292928b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b000000000000000000000007121c2834404a54606d7a85929fabb5c0cbbeb1a5988b7e7265554b5c6976838f9ca9b6c2bcb1a7a09d9696969696969696969696969696969696969696969fa2aab3bec1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b828b92979ea5adb3aba0968e81746c61564c413a4754606d7a87939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9c8f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776a727f8b9aa4afaeaa9f9285796d65717e8b98a9b2bdbfb3a79a8d8074676060606c717c838e939fa3abaea29891847a6d6060606060605b53493f33271b0f03000000000003101d293643505c6976838f98989898989898989898989898989c9fa6b0bbc7c0b5aba49f98989898989893877a7885919c9c9c9c9c9c9c9c9c9c9c9fa3abb5c0c8bcb1a7a09d9c9c9c9c9c9c9c9c9c9c9c9083766a5d5043372a1d1004000000000000070f151b1f222328333f4a545e68707d87939f98928880776d675f5763707d8996a3b0bcc4b8ab9e9185786b6262626262626262626262626262626262626d7a8693a0adb9c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89959f9f9f9f9fa3abb4bfcbcbc0b5aba39f9f9f9f988b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000000000000000c18232e3945515d6773808d99a3afbbc7c1b4a79a8e8174675d515c6976838f9ca9b6c2c3b9b1acaaa3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3abaeb3bcc5c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e757e858e939ea1a9a3999184796d60594f443b3a4754606d7a879393939393939393939393939393939393939393939393939393939393939393939393939393938f8276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776a6e7b87939faaa29f9c988a7e71646e7b8896a1adb2b5aea99d908376675c616c717e8691959ea5aeaea59d9590857c6f635653535353504941382d22170b00000000000003101d293643505c6976828b8b8b8b8b8b8b8b8b8b8b8b8b8b8b90949fabb7c4bbafa499938b8b8b8b8b8b8b877a78858f8f8f8f8f8f8f8f8f8f8f8f9299a3afbbc5b8aca095908f8f8f8f8f8f8f8f8f8f8f8f83766a5d5043372a1d100400000000000000040a0f131e28323a44505b666e7a859199a4a29a938c82796e696163707d8996a3b0bcc4b8ab9e9185786e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e7a8693a0adb9c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2acacacacaeb4bdc6d1d1c7bdb5afacacaca5988b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000007121c2935414c55616e7b87929facb9c3c5b8ab9f92857a6d60535c6976838f9ca9b6c2cbc3bcb8b7b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b8babec5cec1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e616c717a818a91979d9f92877c6f675d51473e323a4754606d7a86868686868686868686868686868686868686868686868686868686868686868686868686868686868276695c4f4336291c1003000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776a687683909b9898928f8c89827569697884919ea7a5aba39f9d9286796d6064717d8a9298a0a7afaaa29f938e837b6f6b60544747474745413a31281d1307000000000000000a1724313d4a5764707e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f82909ca9b6c3b9ac9f93877f7f7f7f7f7f7f7f79758182828282828282828282828287929facb9c3b7aa9d90838282828282828282828282828073675a4d4034271a0d01000000000000000007101925303a444f59606c78828f97a1abaca49f938f837b706b63707d8996a3b0bcc4b8ab9e91857c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c8895a2afbbc6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afb9b9b9babfc6cfd8d9cfc7c0bbb9b9b2a5988b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b000000000000000000000000000d19242f3a46525e6975828f9ba8b2bdc6baaea2988b7e7165585c6976838f9ca9b6c2c3bab2acaaa4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4acaeb4bcc5c1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b454d525a61686e757e858e93958c7f736a60554b40352c3945525d687679797979797979797979797979797979797979797979797979797979797979797979797979797979797670665a4e4135281c0f02000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776a66737f8c8e8b8885827f7d796d606875818e9b9b99979992918f897c6f62606d78828f96a1aba8a098928b81796e6960595454545454514b433a2f24180d01000000000004111d2935404b55616c70727273777a7e817c72727272727274808d9aa7b3c0b9ac9f928679727272727272726d6f757575797d7b7575757575757985929facb8beb2a5988b7f757575757575757575757575736e64584c3f3326190d0000000000000000040d19222935414c56606b727f8c949fa9b3b6afa69e9591867d7063707d8996a3b0bcc6b9ada19791888888888888888888888888888888888888888888888e99a4b0bdc6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afbcc0c1c2c6cbd3dbdcd4ccc7c3c2beb2a5988b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e53606d798693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000000000000000008131e2a36424d5763707d8996a0acb8c6beb4aa9d9083766a5f5c6976838f9ca9b6c2bdb2a8a09e9797979797979797979797979797979797979797979fa2aab4bfc1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b424650565e616c717a81899083786d60584e43392f2935414c565d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493d3225190d00000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776a63707d84827f7c797673706d676065727e8b908e8c8a88868482807b6e6260666d7a849199a39e9691867e746d6760606060606060605d554b4135291d110400000000000613202c3945515d676d75797c8083878b8e82766b6565656774808d9aa7b3c0b9ac9f9286796c65656565686d72767a7e82858a82766b6969696c7985929facb8beb2a5988b7f72696969696969696969696967645c52473b2f23170b00000000000000010c161f2b343c46525e686f7d87929fa6b0bbc0bbb0a89f958d807467707d8996a3b0bcc9beb3a9a19e9595959595959595959595959595959595959595959599a0aab5c1c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afb3b3b4b6bac1c9d3d4cac2bbb7b6b3b2a5988b7f727b8794a1aebabbaea295887b6f625864717e8b97a4b1beb7aa9e9184776b5e57606d798693a0acb9bdb1a4978a7e7164574b3e3124180b00000000000000000000000000010e1a25303b4653606c7884919eabb5bfc5b8ab9f95887c6f62536976838f9ca9b6c2b8aca096918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9298a2aebac1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212930363e444c525a61686d747d847b6e665c50463d3128242f3a444c525f60606060606060606060606060606060606060606060606060606060606060606060606060606060605c5a544c42382c21150900000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d9083776d6d6d777875726f6d6d6d6d6d6d6d6d6f7c8583817f7d7b797775736e6d6d6d6d6d6f7c87929f948f847c716d6d6d6d6d6d6d6d6d6d6d675d5145392c20130600000000000714202d3a4753606d798185898d90939a94897d727272727274808d9aa7b3c0b9ac9f9286797272727272717a7f83868b8f9294897d71717171717985929facb8beb2a5988b7f727171717171717171716f6a5f58524a40362b1f13070000000000000008131e28313c46515b616d7a849199a3afb8c2c0b5aba2979083786d63707d8996a3b0bccfc4bbb3adaba1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a2a4aab2bcc6c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2a6a6a6a8aaafb7c1cbccc2b8b0aba9a6a6a5988b7f727b8794a1aebabbaea295887b6f646464717e8b97a4b1beb7aa9e9184776b6464646d798693a0acb9bdb1a4978a7e7164574b3e3124180b000000000000000000000000000009141f2b3744505b65727f8c99a3aebbc7bcb1a7998d8073655b6976838f9ca9b6c2b7aa9e91847e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e86929facb8c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a323b414650565d616b70796e695f544a3f342b1f1e28323a41455353535353535353535353535353535353535353535353535353535353535353535353535353535353534f4e49423a30261b100500000000000000000000000000000713202d3a4653606d798693a0acb9c3b6aa9d90837a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7f8c998f827b7a7a7a7a7a7a7a7a7a7a7a7a7a6d6054473a2d21140700000000000613202c3945515d6775828f98999d9fa49d90837f7f7f7f7f7f82909ca9b6c3b9ac9f93877f7f7f7f7f7f7e79859093999b9f9d90837e7e7e7e7e7e86929facb9c1b4a79b8e817e7e7e7e7e7e7e7e7e7e7c6f62554940382e24190e02000000000000010d19242f3a434e58626d75828f96a1abb5c0c3bbafa49992857b6e6663707d8996a3b0bcc9cdc4beb9b8aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafb0b5bcc4d0c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995999999999b9ea5afbac6c7bbb0a69f9c999999988b7f727b8794a1aebabbaea295887b71717171717e8b97a4b1beb7aa9e9184777171717171798693a0acb9bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000030f1b27333f4953616d7a86929facb9c5c2b7ab9e9184786c606976838f9ca9b6c2b6a99c908376717171717171717171717171717171717171717885929eabb8c1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a202930363e444c525961656c655f574d42382e22191620282f353946464646464646464646464646464646464646464646464646464646464646464646464646464646464643413d3830281e140a0000000000000000000000000000000713202d3a4653606d798693a0acb9c4b8aca09590878787878787878787878787878787878787878787878787878787878787878787878787878c919c948f8787878787878787878787878783776a5d5144372a1e11040000000004111d2935404b55626e7b87929fabacaca095908b8b8b8b8b8b90949fabb7c4bbafa499938b8b8b8b8b8b84787f8c97a2abaca095908a8a8a8a8a8a9298a3aebac2b6a99d938e8a8a8a8a8a8a8a8a8a8a8073675a4d4034271c12080000000000000004111d2935414c55606a727f8c949ea8b2bdc3bab0a69f93877d70695e63707d8996a3b0bcc3c3c3c3c3c3bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbc3c3c3c3c3c3b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c898d8d8d8d8d8e939eaab6c2c3b7ab9f948f8d8d8d8d8b7f727b8794a1aebabfb2a5988c7f7e7e7e7e7e808d9aa7b4c0b8ab9e91857e7e7e7e7e7e7e8a97a4b1bdbdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000b17222d3846525e6875828f9ba9b3bec5b9aca196897c6f636976838f9ca9b6c2b6a99c9083766a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6b7885929eabb8c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e171e252a323a41464f535b605b534d453c30261c100d161e24292c3939393939393939393939393939393939393939393939393939393939393939393939393939393939393635322c261e160c020000000000000000000000000000000713202d3a4653606d798693a0acb9c8bcb1a7a09d93939393939393939393939393939393939393939393939393939393939393939393939393999ca39e9c9493939393939393939393939084776a5d5144372a1e110400000000010d18242f3a47535f6974818e99a3aeb1a7a09d9898989898989c9fa6b0bbc7c0b5aba49f98989898989184787a85929fabb1a7a09d9797979797979fa3aab4bfc6baafa59d9b9797979797979797978d8073675a4d4034271a0d01000000000000000613202c3945515d676f7c87929fa6b0bac4bcb2a89e948c7f736b615763707d8996a3b0b6b6b6b6b6b6b6b6b7b8bdc3ccc8c8c8c8cbc3bcb8b7b6b6b6b6b6b6b6b6b6b6b6b6b6b6ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b808080808080818e9ba8b4c1c2b6a99c8f8280808080807d6f7b8794a1aebac0b4a79b918c8a8a8a8a8a8d929da9b5c2b9ada197918a8a8a8a8a8a8a909aa6b2bfbdb1a4978a7e7164574b3e3124180b00000000000000000000000000000006111b2a36414c5664707d8a97a1adb9c6bdb2a89a8d8074656976838f9ca9b6c2b6a99c908377777777777777777777777777777777777777777885929eabb8c1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d1419202830353d414950535049413c332a1e150a040c13191d202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292825211b140c04000000000000000000000000000000000713202d3a4653606d798693a0acb9cdc3b9b1acaaa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a5a7adaaa9a1a0a0a0a0a0a0a0a0a0a09d9084776a5d5144372a1e1104000000000007131d2b37424d57616e7b86929fabb5b1acaaa5a5a5a5a5a5a9abb0b8c2cdc7bdb5afaca5a5a5a59e91847873808d99a3afb1acaaa4a4a4a4a4a4acaeb4bcc6cbc0b7afa9a7a4a4a4a4a4a4a4a49a8d8073675a4d4034271a0d010000000000000915212e3a45505a606d7a849199a3aeb8c1bfb4aaa0968f82776c60595663707d8996a3a9a9a9a9a9a9a9a9a9aaacb1bac3cfd8d9cec3b9b1acaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e7373737373737c8996a2afbcbeb2a5988b7f73737373736f6e7b8794a1aebac4b8ada39b9897979797979a9da4aebac5beb3a9a19e979797979797979aa2acb7c2bdb1a4978a7e7164574b3e3124180b000000000000000000000000000000000d1925303a4653606d7985929eabb8c4c4b8ab9e9184786c6976838f9ca9b6c2b8ac9f928684848484848484848484848484848484848484848487929facb9c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e161e24292f383f4446443f382f2a21180c030001080d11131420202020202020202020202020202020202020202020202020202020202020202020202020202020201c1c1915100a0200000000000000000000000000000000000713202d3a4653606d798693a0acb9c6cbc3bcb8b6adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadb2b4b8b7b5aeadadadadadadadadadaa9d9084776a5d5144372a1e11040000000000010e1a26313c46525e6974818e99a4afbbb8b6b2b2b2b2b2b2b6b7bbc2cad4d0c7c0bbb9b2b2b2ab9e9184786e7b87929facb9b8b7b1b1b1b1b1b1b9babfc6cfd2c9c0bab6b4b1b1b1b1b1b1b1a69a8d8073675a4d4034271a0d010000000000000b1724313d4a56626c75818e96a0abb4bfc3baaea29891847a6d655b505663707d89969d9d9d9d9d9d9d9d9d9d9da0a8b1bdc6d1d4c8bcb1a7a09d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d93867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e6166666666666f7c8996a2afbcbeb2a5988b7f7266666666626e7b8794a1aebac9bfb5ada7a5a4a4a4a4a4a7a9aeb6c0cbc4bbb3adaba4a4a4a4a4a4a4a6acb4bec8bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000008131f2c3844505c6673808d9aa8b2bdc6b9ada197887c6f6976838f9ca9b6c2baaea298929191919191919191919191919191919191919191919299a3afbbc1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d262d33373937332d261d180f0600000000010407071313131313131313131313131313131313131313131313131313131313131313131313131313131313100f0d0905000000000000000000000000000000000000000713202d3a4653606d798693a0acb9c5c5c5c5c5c3babababababababababababababababababababababababababababababababababababababfc5c5c5c2bababababababababab7aa9d9084776a5d5144372a1e11040000000000000915202a36424d57626e7b87939facb9c4c0b6aea8a6a6a6a9abb1b9c2cdc7beb6afaca6a6a6a69e9184786975828f9ba8b2bdc1b7afa9a7a7a7acafb5bdc7cdc2b9b1aba9a7a7a7a7a7a7a7a69a8d8073675a4d4034271a0d010000000000000b1825323e4b5865717e8b939da5aeb4bcb9afa59f92867c6f685d53495663707d8990909090909090909090909195a0abb5bfcbd1c5b8aca095909090909090909090909090909090909090867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b454d52545a5a5a5a636f7c8996a2afbcbeb2a5988b7f72655a5a5a616e7b8794a1aebac7c7bfb8b4b2b1b1b1b1b1b4b5bac0c8d2cdc4beb9b8b1b1b1b1b1b1b1b2b7bec6cabdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000003101c28343f4a54626f7c8996a1acb9c5beb2a9998c80736976838f9ca9b6c2bfb4aaa29f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb5c0c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080b141b22272b2d2b27221b140b0600000000000000000006060606060606060606060606060606060606060606060606060606060606060606060606060606060302000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9babfc6cfc6c6c6c6c6c6cec6bfbab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7aa9d9084776a5d5144372a1e1104000000000000030e1a25303b47535f6975828f9ba8b2bdb9aea49c9a99999d9fa7b1bcc8c0b6aca49f99999999999184786b707d8996a1adb9baafa59e9b9a9a9fa3abb5c0c7bcb1a79f9d9a9a9a9a9a9a9a9a9a8d8073675a4d4034271a0d010000000000000815212e3b4854616e7b838e939fa3aab2b1a79d938b7e716a5f564c4956626f7c838383838383838383838383849199a3aebbc7d0c3b7aa9d9083838383838383838383838383838383838383796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b4246484d4d4d56636f7c8996a2afbcbeb2a5988b7f7265584d54616e7b8794a1aebac7cbc9c4c0bfbdbdbdbdbdc0c2c5cbcbcbcbcfc9c6c4bdbdbdbdbdbdbdbfc2c8cbcabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000c17232e384754606a7884919eabb7c4c3b6aa9d9083776976838f9ca9b6c2c6bcb4aeacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacafb5bdc7c1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f201f1b17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acacacacacacacacacacacacacacacacacacacacacacacacacaeb4bcc6d1dcd3d3d7cec5bcb4aeacacacacacacacacacacacacacacacacacacacacacaa9d9084776a5d5144372a1e11040000000000000009141f2b37424d5763707d8996a1acb9b5a89c928d8c8c90959fabb8c4bbafa49a938c8c8c8c8c8c84786b6c7884919eabb7b6a99e938e8e8e9299a3afbbc4b7ab9f95908e8e8e8e8e8e8e8e8e8d8073675a4d4034271a0d010000000000000714212d3a46535e696e79818b9298a1a8aaa0958e81746c62584e434754606a6f7676767676767676767676767a86929facb9c5c4bfb2a5988c7f7676767676767676767676767676767676766d665c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212930363a3b40404956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aebabebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebdb1a4978a7e7164574b3e3124180b000000000000000000000000000000000006111c2b37434e586773808d9aa8b2bdc4b8aca095877b6e76838f9ca9b6bfbfbfbfbab8b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b9bbc0bfbfbfb4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3aab4bfcbd7e3dbd0c5bcb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9084776a5d5144372a1e110400000000000000020e1a26313c4653606c7884919eabb7b3a69a8d80808083909da9b6c3b9ac9f93888080808080807f72656573808d99a7b1b4a79b8e81818187929facb9c3b6a99d9082818181818181818181817e7164574a3e3124170b0000000000000005121e2a36424d575e676d747e8691969fa2989083796d605a50463c434e5860626a6a6a6a6a6a6a6a6a6a6a6875828f9baab3b9b8b6b5aa9d9184776b6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a605c544b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e333c4956636f7c8996a2afbcbeb2a5988b7f7265584c54616e7b8794a1aeb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000f1b27323d4955626f7c8896a1acb9bfbab1a7978a7e7176838f9ca9b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798692929292929292929292929292929292929292929292929292929298a3aebac7d3e0d6cabfb4aaa29892929292929292929292929292929292929292929292929084776a5d5144372a1e1104000000000000000009151f2b3744505b65737f8c99a7b1aea3968a7d7374808d9aa7b3bab9ac9f9286797373737373726d62626f7b8895a0acb0a396897d747985929facb8bcb2a5988b7f74747474747474747474716c6155493c3023170a00000000000000020e1a25313b454d555c606c717c848f949f92857b6e675d51483f343d464e54565d5d5d5d5d5d5d5d5d5d5664717d8a98a2aeacaba9a8a6a095897c6f63555d5d5d5d5d5d5d5d5d5d5d5d5d5d53514b42392e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e2023303c4956636f7c8996a2afbcbdb2a5988b7f7265584c54616e7b8794a1a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4978a7e7164574b3e3124180b0000000000000000000000000000000000000a16222e3b4754606a7884919eabb4b4aeaca79a8e817476838f9ca6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7886858585858585858585858585858585858585858585858585858586929facb9c5d2dfd3c6baaea2988a86858585858585858585858585858585858585858585858583766a5d5043372a1d10040000000000000000030f1b27333f4953616e7b87959faba39f9b8e817474808d9aa7aeaeaeac9f9286796c6666666665625b5f6a7784909da8a5a89a8e81747985929facb0b0b0a5988b7f7267676767676767676764615a5045392d211408000000000000000009141f29333b434b515a626a6f7a828d928a7e70695f554b40362d343d4347495050505050505050505053606d7985929fa49f9e9d9b9998968e8174675d51505050505050505050505050504645403930271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121623303c4956636f7c8996a2afb0b0b0a5988b7f7265584c54616e7b879498989898989898989898989898989898989898989898989898989898989898989898989898989898978a7e7164574b3e3124180b00000000000000000000000000000000000006131f2b37434e586774808d9aaaa7aaa29f9c9a91847776838f9999999999999999999999999999999999999999999999999999999999999999999999999999998e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0e0e0b0a08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c666d797979797979797979797979797979797979797979797979797979808d99a6b3c0ccd2d2c5b8ac9f92867879797979797979797979797979797979797979797979797671665b4f4236291c10030000000000000000000b17222d3846535e697783909a989992908d847874808d9aa1a1a1a1a19f9286796c5f595959595751586673808d999b9996969185787985929fa3a3a3a3a3988b7f72655b5b5b5b5b5b5b5b575550483e33281c11050000000000000000030d17212930394045505860686d78808980736c61574d43392f242b32373b3c43434343434343434345515c6774818e969a9391908e8d8b8a88867a6d6054474343434343434343434343433a38342e271e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002091623303c4956636f7c8996a2a3a3a3a3a3988b7f7265584c54616e7b878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a7e7164574b3e3124180b000000000000000000000000000000000000030f1b27323d4a5663707d89989d9a979892908d8a877b76828c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f14181a1b171614100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000306070707070707060503000000000000000000000000000000000000000000000000000000000003101c28343f4a545c606c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c687783909daab6c2c4c5c7c2b5a89c8f8275666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a665f554a3e32261a0e0100000000000000000006111b2a36424d5766727f8c8e8b888683817e7874808d949494949494949286796c5f534d4d4c4a4956636f7c89918e8c898784827a798592969696969696968b7f7265584e4e4e4e4e4e4e4a49453e362c22170c00000000000000000000050f171e272e343f464e565e666d737d786d605a50453c31271d20272b2e2f373737373737373734404b5564707d8a898886858382807e7d7b7a6d675d51453937373737373737373737372d2c28231d150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996979797979797978b7f7265584c54606d797f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7b6e6255483b2f221508000000000000000000000000000000000000000a13202d3a4653606d798592908d8b888583807e7b77717e7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a202427282423211c170f0a04000000000000000000000000000000000000000000000000000000000000000003050609060c101213141414141413120f0b06080705020000000000000000000000000000000000000000000000000b17232e38424a50535f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f616d7a87939facb3b5b7b9babdb2a8988b7f72655f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5b554d43382d22160a00000000000000000000000e1a25313b4855626e7b83817e7c797774716d748087878787878787878787796c5f5346403f394653606c788584827f7d7a78756d79868989898989898989897f7265584c4141414141413e3c39332c241a10050000000000000000000000050c151d2328343d444c545c606b706d665c50483e332a1f15151b1f22232a2a2a2a2a2a2a232f3a4753606d797e7d7b797876757372706f6d675d554c4135292a2a2a2a2a2a2a2a2a2a201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c898a8a8a8a8a8a8a8a8a7f7265584c515d676d72727272727272727272727272727272727272727272727272727272727272727272727272727272727272726e695f53473a2e2114080000000000000000000000000000000000000006131f2c3845515c6675818683817e7b797674716e6c6c717373737373737373737373737373737373737373737373737373737373737373737373737373737373706b6155483c2f23160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b141d252b30333531302d28221b160e090300000000000000000000000000000000000000000000000000000000060b0f12131619171c1f202121212120201f1b17181514120e09040100000000000000000000000000000000000000000006111c2630383f444652525252525252525252525252525252525252525252525864717e8b9aa4a5a7a8aaacaeb4aca096887b6e6155525252525252525252525252525252525252525252504f4a433b31271c110500000000000000000000000914212e3a47535f696e7774726f6d666765606d7a7b7b7b7b7b7b7b7b7b7b6e6154473b33323844505b666d79777572706d686963707d7d7d7d7d7d7d7d7d7d7b6e6154483b343434343431302d28221a120800000000000000000000000000030b1218222b323a424a50596063605c544a3f362c21180d0a0f1315161d1d1d1d1d1d1d1f2c3845515d676d71706e6d676a6866656362605d554c433a2f24191d1d1d1d1d1d1d1d1d1313100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7d7d7d7d7d7d7d7d7d7d7b6e6155484b555d606565656565656565656565656565656565656565656565656565656565656565656565656565656565656565625f574d42372b1e12060000000000000000000000000000000000000004101c2834404b54616d7a797674716f6d6667646260616466666666666666666666666666666666666666666666666666666666666666666666666666666666666361594f44382c20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121d262f363c40413e3c39332c27211a140c0700000000000000000000000000000000000000000000000001080d11171b1f20232623282c2d2d2e2e2d2d2d2b27222521211e1a14110d080100000000000000000000000000000000000000000a141e262e34383a464646464646464646464646464646464646464646464e5b6875818e9996989a9c9d9fa3aba59e918477695f5346464646464646464646464646464646464646464643423e3831291f150a00000000000000000000000006121e2b37424d575f626a676562605c54585d686d6e6e6e6e6e6e6e6e6e6e695e52463a2d28333f4a545c676d67686663615e56606b707070707070707070706e695e53463a2d282828282423211c17100800000000000000000000000000000000071019202930383f444f545653504a42382e241a0f060003060809101010101010101d2935404b555d60656361605c555b5a58575554514b433a31281e130810101010101010100706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d686d707070707070707070706e695f5346434b5154585858585858585858585858585858585858585858585858585858585858585858585858585858585858585855534d453c31261a0e0200000000000000000000000000000000000000000c18232e3946525d686d6d66676462605c545755535557595959595959595959595959595959595959595959595959595959595959595959595959595959595957554f473e33281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1b242f3941484c4e4a49443e38322a251f18120b03000000000000000000000000000000000000000000040c13191b22272b2d2f322e34383a3a3a3a3a3a3937332d322e2d2a25201d19130c0400000000000000000000000000000000000000020c141c23282b2d39393939393939393939393939393939393939393943505d6a768386888a8b8d8f91929996989a8d807467574d4237393939393939393939393939393939393939393736322d271f170d03000000000000000000000000020e1a26313c454d53555d5b585553514b4c565d60616161616161616161615e574d42362a222d38424b555c605c55595654524f596063636363636363636363615e574d42362a1e1b1b1b171714110c05000000000000000000000000000000000000070e171e262e343d44484a46443f3830261c12080000000000000404040404000c18242f39434b515358565553514b4f4d4b4a484745413a31281f160c01040404040404040400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c565d6164646464646464646464615f574d423a4145474c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4847423c332a1f150900000000000000000000000000000000000000000007121d2935414c565d61605c54585553504a4b4846494b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a48443e352c21170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202d36414b53595b57555048443d363128231d150c0701000000000000000000000000000000000000070d161e24292d3337393c3f423f4446474747474746443f413e3b3a36312c29241e160d0800000000000000000000000000000000000000020a11171c1f202c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c35424e5b667176797b7d7f8082848687898b8d897d706356493d31262c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a2926221c150d04000000000000000000000000000009151f2a333c424748514e4b49464540434c525454545454545454545454524d453b30251c262f39434b5153514b4c4a4746474f545656565656565656565654534d453b31251a0e0e0e0b0a0805000000000000000000000000000000000000000000050c141c232833383c3d3a38342e261e150a0000000000000000000000000007121d2731394045474b4a4846454042403f3d3c3a39352f281f160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c52545757575757575757575755534d453b3135393a3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3b3a37312a21180e03000000000000000000000000000000000000000000000d1924303a444c525453514a4b4846443f3e3b393d3e40404040404040404040404040404040404040404040404040404040404040404040404040404040403d3c38332c231a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323f48535d646864615a544f46423b342e271e18120b03000000000000000000000000000000000710191f282f35383f4446494c4e4a505354545454535350494e4b4846423b39352f28201a12090000000000000000000000000000000000000000060b1012131f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f26323e4a555e66666d6e7072747577797b7d7e8081786c605346392d201f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1c1a16110a03000000000000000000000000000000030e18212a31373a3b44413f3c3a38343a4145474848484848484848484746423b33291f141d27313940454745403f3d3a393d44484a4a4a4a4a4a4a4a4a4a4846423b33291f140900010000000000000000000000000000000000000000000000000000020a111721272c2f302d2c28231c150c0300000000000000000000000000010b151f272f35383a3e3d3b3a38342e3332302f2d2c29241d160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a4146474a4a4a4a4a4a4a4a4a4a4846423b332a292c2d32323232323232323232323232323232323232323232323232323232323232323232323232323232323232322f2e2b261f180f06000000000000000000000000000000000000000000000008131e28323a4146474644403e3c3a38342e2f2d30313333333333333333333333333333333333333333333333333333333333333333333333333333333333302f2c28211a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d1925303a44505a646f74716c636059534d4540393029231d150d060000000000000000000000000000060f19222b313a414549505356595b545c606061616060605b535a5854534d4745413a322c241b120900000000000000000000000000000000000000000003060713131313131313131313131313131313131316222d38434c55545c606163656769666c6e707273756c665b5044382b1f12131313131313131313131313131313131310100e0a05000000000000000000000000000000000000060f181f262b2e2f3734322f2d2c282f35393a3b3b3b3b3b3b3b3b3b3b3a36302920170b151f272f34383a38342f302e2d33383c3d3d3d3d3d3d3d3d3d3d3b3a36312921170d03000000000000000000000000000000000000000000000000000000000000060b161c202223201f1c17110a03000000000000000000000000000000030d151d24292c2d32302e2d2c28232725242221201d18130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1620283035393a3d3d3d3d3d3d3d3d3d3d3b3a36312a211d2021252525252525252525252525252525252525252525252525252525252525252525252525252525252525252522211e1a150e06000000000000000000000000000000000000000000000000020c1620283035393a3a38342e2f2d2b28232220242426262626262626262626262626262626262626262626262626262626262626262626262626262626262423201c1710080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a36414c56626c74817d766f6b615e57514b433d342f271f181008000000000000000000000000030d18212b343c434c51535b606265686a666d6d6d6d6d6d6c65696765615e5754524c443e362d241b10060000000000000000000000000000000000000000000000060606060606060606060606060606060605111c27313a43424a51535557585a545b606163656768605b544a3f33281c0f0306060606060606060606060606060606040301000000000000000000000000000000000000000000060e151a1e21222a282522201f1e24292c2d2e2e2e2e2e2e2e2e2e2e2d2a251f170e050d151d23292c2d2c2923232120272c2f303030303030303030302e2d2a251f170f050000000000000000000000000000000000000000000000000000000000000000050b101416171312100c06000000000000000000000000000000000000030b12181d1f20252322201f1c181a1817151413110d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e161e24292d2e313131313131313131312e2d2a261f1811131419191919191919191919191919191919191919191919191919191919191919191919191919191919191919191514120e09030000000000000000000000000000000000000000000000000000040e161e24292d2e2d2c282322201f1c17151317181919191919191919191919191919191919191919191919191919191919191919191919191919191919171614100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313946525e68717e8b8a837c756e69605c554f454039312a221a1206000000000000000000000009141f29333c464e555d60656c6f72757778797a7a7a7a7a79787674716e6965605d5650483f362d22180e03000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f28313039404446484a4c4d4a50535456585a5b53504a42382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151e1b1816131313191d202121212121212121212121201e1a140d0500030b12181c1f201f1c181714161c20222323232323232323232321211e1a140d0500000000000000000000000000000000000000000000000000000000000000000000000407090a07060300000000000000000000000000000000000000000001070c1013141817151313100c070c0a09070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d20212424242424242424242422211e1a140e0606070c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080806020000000000000000000000000000000000000000000000000000000000040c13191d2021201f1c18151312100b06060a0b0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0a0a070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b18242f39434f59616d7a8592959089827b736d676059514b433c342c2417110a020000000000000000020e1a26313b454e5860676d73787c7f818385868787878786868483817e7b77726d68615a50483f342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f1e272e34383a3b3d3f413f4446484a4b4d4e46443f382f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060808110e0c090706080d1113141515151515151515151414110e090200000001070c10131413100c07070b101316171717171717171717171514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070b0a0807060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314171717171717171717171514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1113141312100c070706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2935404b55606b75818e979f9d938f867f796f6b605c554e463e3627221b140b020000000000000005121e2a36424d57606a6f7a8084898c8e909297939494939992918f8d8b87847f7a706c625a50463c31261a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000040d0c151c23282c2d2e30322d3338393b3d3f40423938332d261d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004010000000000010406070808080808080808080807050200000000000000000406070604000000000407090a0a0a0a0a0a0a0a0a0a080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070a0a0a0a0a0a0a0a0a0a0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3845515d67707d89939ea9a59e98928c847d736d675f58504840332d261d140a000000000000000714212d3a46535f696f7c848c9196989b9d9fa2a9a0a0a0a39f9e9c9a9896918c857e716c62584e43372b1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f2022242522282b2d2e303234352d2b28221c140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070808080808080808080808070502000000000000000000000000000000000000000002030405050606060605020000000000000000000000030608090b0a080500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424e58606d7984919ea5afafaaa29f96918780796f6a615a52443f382f261b1106000000000005121e2b37424d57616e7b8591969ea1a9a8aaabadb3adadb5afacaba9a7a8a09d97928a7e716a5f53473a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101213151719171c1f202123252728201f1c17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607070707070707070707070706040100000000000000000000000000000000000000000000000000000000000004060707070707070707070707070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101213151515151515151515151514120e09030000000000000000000000000000000406070f1011111213131312120f0b0706040000000000040a0f131516181715110c06000000000000000000000000000000000000000000000204050506060606060505040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708090a0908070502000000000000000000000104060606050401000000000000000000000000000000000000000000000000000000000000000004060707070605030000000000000000050a0d10100f0b080705020000000000000000000000000000000000000000000000000000000000000000000000010507080a0d100707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545f6a73808d96a0acb7bcb4aea8a099938d837c716c635b504941382d22171007000000000714212d3a46535f6975828f97a1a9adb2b4b6b8babebabac0bbb9b7b6b4b2aca9a19e92877c6f62564c4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a060b0f12131517181a1b13120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b101213141414141414141414141413110d07010000000000000000000000000000000000000000000000000001070c101314141414141414141414141312100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f202121212121212121212121211e1a140d05000000000000000000000001070c1013141c1d1d1e1f1f20201f1e1c181312100c070000070f151b1f22232524211d170c07000000000000000000000000000000000306070a0d0f11121213131313121211100f0c08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141617161414110e09020000000003070b0d0e1112131312110e0b0706030000000000000000000000000000000000000000000003070b0d070c101213141413120f0b0607070501000a11161a1c1d1b181514120e09060401000000000000000000000000000000000000000000000000000000010507080d111414171a1d1413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666f7c87929fa8b2bdc6bfbab2aba49f9591867e736e605b53493f332722190d030000000815222e3b4855616e7b88949ea9b2b9bdc1c3c5c6cad0d1cbc7c5c4c2c0bdb8b3ada3998e8275685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606080a0c0d0f060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f202020202020202020202020201d18130c040000000000000000000000000000000000000000000000030b12181d1f2020202020202020202020201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d2e2e2e2e2e2e2e2e2e2e2e2d2a251f170f05000000000000000000030b12181c1f2028292a2b2b2c2c2d2c2b2825201f1c18120b07101920272b2e2f31302d282218120b03000000000000000000000000060b101213161a1c1d1e1f1f2020201f1f1e1d1b191514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607070705030a0f14191e202123242321201e19140f0a0401080e1317191a1d1f20201f1e1b171312100b0600000000000000000000000000000000000001080e13171a1a181c1f202020201f1b17181413110d08151c2226292a282522211e1a1413110d0806030000000000000000000000000000000000000000000306080d111314191e202124272a21201d19130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953606c78839099a3afbac3c9cac3bdb5afa8a098928a80746c655b50443f342b1f150b0100000c1926323f4c5965727f8c98a6b0bbc4c9cfd0cec8c5c4c3c3c3c5c7cbcec8c5beb5ab9f92867a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c23282b2d2d2d2d2d2d2d2d2d2d2d2d2c29241d160d09090909090909090909090909090909090909090909090d151d24292c2d2d2d2d2d2d2d2d2d2d2d2d2c28231c150c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3b3b3b3b3b3b3b3b3b3b3b3a36312921170d0300000000000000030d151d23292c2d3536373838393939393835312d2c28231c151119222b32373b3c3e3d393428231c150c05000000000000000000020a11171c1f202326292a2b2c2c2c2c2c2c2b2b2a282621211e1a140b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000001080d1113141413110d151a1f252a2d2e2f30302e2d2a251f1b160f0b12191f2326272a2c2c2c2c2a2824201f1c17110a02000000000000000000000000000000020b131a1f24262723282c2d2d2d2d2b27222521201d19131f272d32353735322e2d2a2621201d1915120f0a060400000000000000000000000000000004060c101213191e2021252a2d2e3134362e2d2a251e160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b65727f8b959fa7acb2b9bec5ccc7c0bbb1aaa29f928c80776c605b51463d31271d120700020f1b2835424e5b6875818e9ba8b4c1cdd5d0ccc3bdb9b7b6b6b7b9bbc0c7cfcfc6bbafa3998a7d7164574a3e3124170b0000000000000000000000000000000000000306070707050100000000000000000000000000000000000000000000000000000000000203000003060707080809090a0a0a0a0b0b0b0a0a0a0a0909090908070606030000030000000000000000000000000000000000000000000000000a141e262e34383a3a3a3a3a3a3a3a3a3a3a3a39352f281f161616161616161616161616161616161616161616161616151f272f35393a3a3a3a3a3a3a3a3a3a3a3a38342e271e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c273039404446484848484848484848484846423b33291f1409000000000000010b151f272f34383a42434444454646464545423e3a38342e271e1a232b343d4347494b49453e342e271e170e0600000000000000090c141c23282b2d303335373838393939393938383735322e2d2a251f17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506100e0c0a08070604000000000000000000000000000000060b13191d202121201d1920262b30363a3b3c3d3c3b3a36302b272019141d242b30333437393939383734312d2b28231c140c0700000000000000000000000000010b141d242b3033342e34383a3a3a3937332d322e2d2a251e2831383e4243423e3b3a36312d2c2924211f1b1312100c070400000000000000000004070c1013171c1f20252a2d2e3036393b3d40433a3936302820160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78828a90959ea0a8adb3bbc0c7ccc3bcb4aea49c928d80746d62594f43392f24180c0204101d2a3743505d6a7683909da9b6c3d0d0c6bebab2acaaa9a9aaacafb5bdc2cacbc0b5ab9a8d8073675a4d4034271a0d01000000000000000000000000000000060b1012131413110d08020000000000000000000000000000000000000001040607090a0c0d0e0f060c1012131415151616161717171717171717171616161615151413120f0b0610070704010000000000000000000000000000000000000006111c2630383f4446474747474747474747474745403a312823232323232323232323232323232323232323232323232323273139404547474747474747474747474644403930271c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424a51535454545454545454545454534d453b31251a0e02000000000007121d2731394045474f5050515252535352514f4b46444039302a232c353d464e5456585650444039302920180f0700000000020b121b1e262e34383a3d40424445454646464645454443423f3b3a363127221b140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131d1b1917151312100c070a08060603000000000000020a11171e24292c2d2e2d2a252a31373b424647494a494746423b38322b221d262e363c3f41444546464544413e3a38342e261e19100700000000000000000000000008131d262f363c3f4144404446474746443f413e3a39363028313a434a4e504e4b4846423d3a39352f2e2b26201f1c1813100c070300000000070c1012181d1f23282c2d3036393a3e4146474a4d504746413a32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c767d838a91969ea1a9afb5bdc3ccc6bfbaaea49d928b7f726b60554b4035291e130800121e2b3845515e6b7884919eabb7c4d1ccbeb4aca8a09e9c9c9d9fa3abb0b8c2ccc2b5a89b8f8275685c4f4235291c0f0200000000000000000000000000020a11171c1f2021201d19130c040000000000000000000000000000030607070d1013141517191a1b1c1d171c1f2021212222232324242424242424242323232322222121201f1c171d1c1413110d080200000000000000000000000000000000000b17232e38424a50535353535353535353535353514b433a32303030303030303030303030303030303030303030303030302f39434b51535353535353535353535353514a42392e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a545c6061616161616161616161615e574d42362a1e120500000000000c18232f39434b51535b5c5d5e5e5f5f605f5e5b5853514a423c332c353d474f58606264615a514a423b322a211910070000000b141d242d30383f4446494d4f50515252535353525251504e4c4846423b332d261d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f202a28262422201f1c1818171513120f0b060a0806080b141c22282f35393a3a393630343c43474d525456575654524d47433d342b232e3840474c4d5052535352514e4a46443f38302b2219100600000000000000000000030e1a242f3841474c4d514a515353535350494e4b4746413a3334434c555b5d5b5855534d4a4745413c3a37312d2c28231f1c1812100c060a0f12181c1f24292c2e34383a3d4146474b4c5254575a5d54524c443a3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b606b70787d848b92979fa4abb1bac0cbcabfb6aea49f92877c6f675d51453a3025190d01121f2c3845525f6b7885929eabb8c5cec3baaca29a969190909092999fa6b0bbc7c3b6aa9d9083776a5d5044372a1d1104000000000000000000000000020c141c23282b2d2e2d29241e160e040000000000000000000004060c10121316181d20202224252728292a23282c2d2d2e2f2f303030313131313131303030302f2f2f2e2d2d2b28222a2921201d19130c0400000000000000000000000000000003101c28343f4a545c6060606060606060606060605d554c443c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c404b555d6060606060606060606060605c544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c666d6e6e6e6e6e6e6e6e6e6e6e695e53463a2d2114070000000004101c2934404b555c6068696a6b6b6c6c6c6c6b6864605c544e453c363e474f59606a6f716c605c544c443c332b221911070009131d262f363e424a505356595c5d5e5f5f5f5f5f5f5e5e5d5b5954534d443f382f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272b2d373533312f2d2c2823252321201f1c171817151314191d262d333a4145474746413a3c464e53565e61626363615e56544e463d352b33404a52585a5d5f5f5f5f5d5b5753504a423c342b22180e0400000000000000000007131f2b36414a52585a5e545c606060605b535b5854524c443f3c46555e666a6865615f575754514c4847433d3a38342e2c29231f1c1711151b1c23282c2f35393a3f4446494c525457565e61646769615e564c41362a1d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d384149505961656c71797f858d9399a0a8aebbc0c7c8c0bbafa3999184796d60564c4135291d1105121f2c3945525f6c7885929fabb8c5c8bdb2a89a908a84838383868f949faab7c5c4b7aa9e9184776b5e5144382b1e07000000000000000000000000000a141e262e34383a3a3935302820160c0300000000000000070c1013171c1f202324292c2d2f3132333536372e34383a3a3b3b3c3c3d3d3d3d3e3e3e3d3d3d3d3c3c3c3c3b3a3938332d37362d2c29241e160e04000000000000000000000000000006121f2b3844505c666d6d6d6d6d6d6d6d6d6d6d6d675d564c49494949494949494949494949494949494949494949494949494949515d676d6d6d6d6d6d6d6d6d6d6d6d665c5144382c1f1206000000000000000000000000000000000407090a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0706040100000000000000000000000000000713202d3a4653606d787b7b7b7b7b7b7b7b7b7b7b6e6154483b2e2115080000000006131f2c3845515c676d7576777778797979787875716d665f574e443e485059616b6f7c7e746d665e564d453c342b231910070c1b252f38414850545c606366686a6b6b6c6c6c6c6c6b6b6a6865615e57504941382d22170b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d33373943413f3d3b3a38342e32302e2d2b2822252321201f252a2f383f444c525454524c44434e585f62696e6f706f6e696260584f473d313b45525c64676a6c6c6c6b6a6764605c544e463c342a20150a0000000000000000000b1724303c47525c64676a6b666d6d6d6c656a6865615e56504a424e5866707675716e696764605d5555534e4a4644403a38342f2c28231c1f262b2e34383a4045474a505356565e616467686e7073766d685e5246392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f444f535b60666d727a818791959da4afb5bdc7cbc0b5aba0968c8073685e5246392d20160a121f2c3945525f6c7885929fabb8c5c5b9aca0968a7e777676777a828f9ca9b3bec4b8ab9e9185786b5e52452f23180c00000000000000000000000006111c2630383f44464746413a32281e150b0200000002080d12181c1f23282c2d302f35393a3c3d3f40414243443f44464748484949494a4a4a4a4a4a4a4a4a4949494948484746443f4443433a3935302820160c02000000000000000000000000000713202d3a4653606d787a7a7a7a7a7a7a7a7a7a7a76685d565656565656565656565656565656565656565656565656565656565656606d797a7a7a7a7a7a7a7a7a7a786d6053463a2d2013070000000000000000000000000000050b10131616181818181818181818181818181818181818181818181818181818181413110d08010000000000000000000000000815222f3b4855626e7b8787878787878787878786796c5f5246392c1f13000000000714202d3a4753606d7981838384858586868584827e786e6a5f564c48505a616b707d868b80786e685f574e463d352b22190f151e2d37414a535a61666d707375777878797979797878777675726e69605b53493f33271e14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f4446504e4c4a48464440413f3d3b3938332d32302e2d2b30363d424a50565d60615e564c47535f6a6f777a7c7d7c7b766f6a60594f4339424d57646e7477787979787774716d6660584e463c32261b0f0400000000000000000d1a26333f4c58646e74777879797a7a79787774716d68605b544a535f6a7683817e7b7774706d6766625f585653514a4745403a38342e2b2c3137394044464b5153545c606366686d7174777a7d80837a6d6154473a2d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333e414950545c60686d747c838d929fa3abb5bec7c7bdb2a89f92857a6d6154473d32271b0f121f2c3945525f6c7885929fabb8c5c4b7aa9e9184776c6969686e7b8897a1adb9c5b8ab9f9285786c554b4034291c100400000000000000000000000b17232e38424a505354524c443a30271d140a0001070c13191d23282c2e34383a3c3f404547484a4c4d4e4f50514a50535454555556565757575757575757565656565555545453504a51504f4745413a32281e1308000000000000000000000000000a1723303d4a5663707d86868686868686868686867a6d636363636363636363636363636363636363636363636363636363636363636b7784868686868686868686867f7266594c3f3326190c00000000000000000000000000070f161c2022232525252525252525252525252525252525252525252525252525252521201d19130c0400000000000000000000000815222f3b4855626e7b8894949494949494949285796c5f5246392c1f1300000000091623303c4956636f7c898f90919192929392918e8b847c6e685d52515a616c717d8692928d827a6e6960584f473d342b21181c27303f49535c646c71787c80828384858586868685858483817f7b736c655b50443b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414950535d5b59575553514a4d4b4a4846443f403f3d3b39383b41464e545b60686d6d685e524855626f7c8387898a8987837c706b60554b4046525e697480838586868583817d786f6a60584e43372b20150a0000000000000005121e2a36424d57677480848586868686868583817e7a736c665b5055626f7c888e8b8884817d7a76726f6a6763605c5453514b46443f3837383c43474a5153555d6064666d7073777a7e8184878a8d8a7e716453493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272f383f444a51565d616a6f79808b9299a3acb6c0ccc3baaea2988c7f7366584e43372b1f13121f2c3945525f6c7885929fabb8c5c2b5a89c8f8275695a565f697885929eabb8c5b9ac9f928679675c5145382c1f13060000000000000000000003101c28343f4a545c60615d564c43392f261b11060b12181e252a2e34383a3f4446494c4b51535557585a5b5c5d5e545c6060616262636363646464646464636363636262626160605b5e5e5d5c54524c443a3024190d010000000000000000000000000a1723303d4a5663707d89939393939393939393877a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f77849193939393939393938c7f7266594c3f3326190c00000000000000000000000007111921272c2f30323232323232323232323232323232323232323232323232323232322d2c29241e160d04000000000000000000000815222f3b4855626e7b8895a1a1a1a1a1a19f9285796c5f5246392c1f13000000000c1925323f4c5865727f8b989d9e9e9f9f9f9f9e9b9691857a6d60535b626c717e8792989d9490847b6f6a60594f463c332a20232e3942515b646e747e84898c8f90919292929292929191908e8c8780776c60564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b606a68666462605c545a58565453504a4d4b4a484644444d525860666c717a7a6d61544b5865717e8b959596969590877d70675c51454854616e7b879092929292908e8a847c6f6a5f53473c31261b0f030000000000000714212d3a46535e6978859192929993999392908e8b8680786c60595766737f8c999896918d8a86837f7b7874706d6664605c5553504a474344464e53545c6064676d7175797c8083878a8e9196979a8e8174655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171d262d333940444c525860676d747f87929aa4afbbc3cabeb4aa9e9184776a6054473b2e2215121f2c3945525f6c7885929fabb8c5c1b5a89b8e8275685b4d576a7783909daab6c3bbafa399867a6d6053473a2d201407000000000000000000020c19232b3844505c666d6d685d554b41382d221711151d24293036394045464a50535659555d606264656668696a6a6b666d6d6e6e6f6f70707070717171707070706f6f6f6f6e6d6c666b6a6a69605d564c4135291d11040000000000000000000000000a1723303d4a5663707d8996a0a0a0a0a0a0a096897d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d84919ea0a0a0a0a0a0998c7f7266594c3f3326190c0000000000000000000000050f19232b33383c3d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3a39352f281f160c010000000000000000000815222f3b4855626e7b8895a1aeaeaeaeac9f9285796c5f5246392c1f1300000005111d2935414c566875818e9ba8aaabacacacababa8a0978d8073655b636d727e879299a2a69f9691857c6f6b60584e453c32282834404a54626d74808b9196999b9d9e9e9f9f9f9f9f9e9e9d9b99928c8073685e5246392d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c767472706e6d666967656361605b545a585654535051565e616a6f787e857f7265544b5a6773808d9aa8a3a79f999185796d6053474a5763707d8a969f9f9f9e9d9a9691867c6f62584e43372b1f12060000000000000815212e3b4854616e7b87979e9fa3a0a49f9e9d9b98928c81746b605e697783909da8a09e9a9992908c8884807d7974706d6763605c54534e5053585f62666d7075797d8185898d90939a9a9da0a89e9185786c605346392d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b141b22272e343a41464e555d606d727e88939fa7b1bcc8c5b9aca096897c6f6256493c2f2316081f2c3945525f6c7885929fabb8c5c1b5a89b8e8275685b505c6976838f9ca9b6c2c0b5a094877a6d6154473a2e2114070000000000000000000a141e2a36414c56606d787a6d675c53493f332723191f272f353a41464b5153545c60636668676d6f707273747576777879797a7b7b7c7c7c7d7d7d7d7d7d7d7d7d7c7c7c7c7b7b7a7978787776766d685d5245392c2013070000000000000000000000000a1723303d4a5663707d8996a3adadadadada59a8f89898989898989898989898989898989898989898989898989898989898989898989899196a1adadadadada5998c7f7266594c3f3326190c00000000000000000000000b16212b353d4448494b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4745413a31281e13080000000000000000000815222f3b4855626e7b8895a1aebabab8ac9f9285796c5f5246392c1f130000000713202d3946525e687784919eaab7b8b8b9b9b8b7b2a99e9184786c606d727f889299a3abb0a8a19792867d6f6a60574e443a2f2c3844515c66727f8b929ea0a8a8aaababacacacacababaaa9aba39f92867a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7883817f7d7b7977757472706e6c666867656361605b5c60686e757c838b8f8275665c555c6975828f9ca8b0b1aba1978a7e7164574b4c5966727f8c99a5acacabaaa8a0989083766a5f53473a2e2115080000000000000a1724313d4a5764707d8a97a9acafb5afacabaaaaa39f93897c6f63616e7b87959fabacaaaba39f9c9996918d8985817d7974706d66625f585c60646a6f74797d81858a8e9297999d9fa4acaaacada197887c6f6255483c2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c232830353d434b515b626c73808c95a0abb8c4c9bdb2a8998c7f7366594c403025190d1f2c3945525f6c7885929fabb8c5c1b5a89b8e8275685b4f5c6875828f9ba8b5c2baaea194877b6e6154483b2e211508000000000000000006111c26303846525e68727f83796d655b50443e352b232b313940454c52545c6064666d6f7275787a7c7d7f80818283848585868787888889898a8a8a8a8a8a8a8a89898989888887878685858483827a6d6054473a2d2114070000000000000000000000000a1723303d4a5663707d8996a3b0b9b9b9b6aba19a96969696969696969696969696969696969696969696969696969696969696969696969ea1a8b2bdb9b9b2a5998c7f7266594c3f3326190c0000000000000000000004101c27333d474f54565858585858585858585858585858585858585858585858585858585854524c433a2f24190d0100000000000000000815222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000714212e3a4754616d7a8796a0acb9c4c5c5c6c5c3b9ada196887b6f6e737f8b939aa3abb4bab2a9a19892867c6f6a5f564c41382d3a4653606d7985929ea5acb2b5b6b7b8b8b9b9b9b8b8b7b6b5aea3998c7f7265594c3f3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a878e8c8a88868482807e7d7b7977757372706e6c66666d727b818790959285796d6060676d7784919eaab7bdb3a99b8e827568554c4a546875818e9ba8b4b9b8b7b2aa9f94887c6f6255483c2f2215090000000000000d1a2633404d596673808c99a6b3bbc0bbb9b8b6b4aea59a8d81746765727f8b98a7b1b9b7b5afaca9a8a19e9a97928e8a85817d79736f6a64666d71767c80858a8e92989b9fa2a9aaacafb6b7b8b3a9998c7f7266554b4035291d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b12181e242931394045515a606d7883909da8b2bdc9c2b5a99c8f827669564c41362a1e111f2c3945525f6c7885929fabb8c5c1b5a89b8e8275685b4f5b6874818e9ba7b4c1bbaea195887b6e6255483b2f22150800000000000000000b17232e38424f59616e7a858e81776c605a50473d3328353d434b51565e61666d7075797c7f828486888a8b8d8e8f90919192989394959596969697979797979796969696959595949a9392919190897d7063564a3d302317090000000000000000000000000a1723303d4a5663707d8996a3b0bcc6c7bdb3aba5a3a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2abadb2bac4cfbfb2a5998c7f7266594c3f3326190c000000000000000000000713202c38444f59606365656565656565656565656565656565656565656565656565656565605d564c4135291d110400000000000000000815222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000a1724303d4a5763707d8a96a8b2b7b9bdc4ccd2c9bdb2a9978a7d7173808c919fa4acb5bdc4bbb3aaa29892857c6e685d53493f333d4a5764707d8a97a1adb9bdc2c3c4c5c5c5c5c5c5c4c4c3bfb4ab9c8f827669564c4135291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b889599979992918f8d8b8987868482807e7d7b797775797f868e939a9f97897c6f676d73797986939facb9bbb8ab9e918578675d51505c667784909daab7babfc3bcb0a6998c7f7366594c403326190d000000000005111d2935414c566875828f9ba8b5c2c5c7c6c5c3bfb7aa9d9083776a6876828f9ca9b5c2c4c0bbb9b6b2acaba9a29f9b98928e8a85807c767172797e83888d92979b9fa2aaabadb3b6b9bbc0c4c2b6a99c8f8376675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c13191f272f353f44505c66707d8a96a1acb9c5c5b8ab9f928578685e5246392d201b1f2c3945525f6c7885929fabb8c5c1b5a89b8e8275685b4f5a6774818d9aa7b4c0bcafa295897c6f6256493c2f2316090000000000000003101c28343f4a54606b74818e938c80736c62594f453c343f474f555d60686d73797d8185898c8f9196959798999b9c9d9d9e9fa3aaa1a1a2a2a3a3a3a3a4a4a4a3a3a3a3a2a2a2a2a1a49f9f9e9d998c7f7366594c4031251a0e0200000000000000000000000a1723303d4a5663707d8996a3b0bcc9cfc5bdb6b1b0afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafb8b9bdc4ccccbfb2a5998c7f7266594c3f3326190c000000000000000000000916222f3c4854606b70717171717171717171717171717171717171717171717171717171716d685d5245392c2013110c070705010000000815222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000d1a2633404d596673808c99a6a8abadb2bac3cbcfbfb2a5998c7f727b848e939fa2aab2bac2c5bcb3aaa19791847a6d655b50443b404d5a6773808d9aa9b3bec9cecbc7c5c1bfbebebfc4c6c9c5b8ab9e928578685d5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a3aba39f9e9c9a98969892918f8d8b8987868482818c92989fa4a9998c7f73727a80847c8999a4a8aaafb9ada197877a6d605455606d7986929fa9acaeb4bcc2b5a89b8f8275685c4f4235291c0600000000000713202d3946525e687884919eabb4b7b9bdc3ccd0c5b8ac9f928579676d7a86929facb2b5b7b9bdbfc2bdb9b7b3adabaaa29f9b97918d88837e7f848a90949a9ea1a9acaeb4b8babec3c1c0bbb9b7b5ac9f92867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d151d2429343f4a54616b7884919eabb7c4c6baada297877a6e6154473b2e2828282c3945525f6c7885929fabb8c5c1b5a89b8e8275685b4f5a6673808d99a6b3c0beafa396897c706356493d3023160a000000000000030c19232b3844505c666f7c89939c928b7e716b60574d444044515960676d737a80858a8e9298999b9ea1a8a3a5a6a7a8a9aaabacaeb4aeaeafafafb0b0b0b0b0b0b0b0b0afafafafaeb6afacababa89c8f827569574d42362a1e120500000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6cfc7c2bebcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcc4c5c9cfd6ccbfb2a5998c7f7266594c3f3326190c000000000000000000000a1623303d495663707d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7a6d6054473a2d21141d191413110d0802000815222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000005121e2a36424d576975828f9c9b9b9ea1a8b1b9c3cdbfb3a6998c80736e79818a9298a1a8b0b8c1c5bcb3a9a1968f82776c60574d42434f5c6976828f9ca9b5c2cfc7c0bbb9b4b2b2b2b3b8b9bec4b9ada197877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b5afacaaa8a7a5aaa39f9d9b9a98969892918f8e939fa2aaafa99c8f82787e858d8f828f94949b9ea5afb3a995887b6f626062626f7b88999d9d9fa2aab2bab7aa9d9184776a5e51442d22170b00000000000714212e3a4754616d7a8796a1a7a7aaacb2bac1c9c7baaea298877a6d717e8a99a2a9a5a8abacb2b2b5b8babebebab8b3aeaba9a19e9a95908b8b91969c9fa6abadb3b8babfbfbab9b6b4b6afacaaa8a6a3998a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b1218232e38424f596774818d9aa7b4c0cabeb3a996897c6f6356493c34343434343945525f6c7885929fabb8c5c1b5a89b8e8275685b4f5966737f8c99a6b2b5b3ada3968a7d7063574a3d3024170a0000000000000a151e2a36414c56606d7883909da49f92877d70695f564c4a515b636b6f7980868c91979b9fa2aaa8abacb2b0b2b3b4b5b6b7b8b8babfbabbbbbcbcbdbdbdbdbdbdbdbdbcbcbcbcbbbbc0bbb9b8b8ab9e918578695e53463a2d21140700000000000000000000000a1723303d4a5663707d8996a3b0bcc9d3c9c1bbb6b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b8babfc5ceccbfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b887b6e6255483b2f22202a2621201d19130f0a0815222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000714212d3a46535f69788591908f8e9196a0a7b1bcc8c0b3a79a8d8074676d747e8691969fa6b0b8c1c5bbb2a89e948c7f72695f534644515d6a7784909daab7c3c7bdb5afaca7a5a5a5a6abadb3bbbeb3a995887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bbb9b7b5b3b1b4aeacaaa8a6a5aaa39f9d9c9a9d9ea1a8b2ac9f9287848b9297948f8d87878f939eaab4a296897c6f636a6f6a717e8a9291909298a0a8b2b8ab9e9285786b5f4a3f33281c0f03000000000a1723303d4a5663707d89969a9a9b9ea0a8afb7c1cabfb4aa94877a6e75828e929796999b9ea1a8a6a9abaeb3b5b8babebab8b3adaba79f9d97989ea1a8abb0b8b9bebbb7b5b4aeacaaa7aca49f9e9c9997958d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000107111c26303e4b5764717e8a97a4b1bdd0bdb1a4978a7e7164574b4141414141414145525f6c7885929fabb8c5c1b5a89b8e8275685b4f5865727f8b98a5aba8a9a19e978a7d7164574a3e3124170b000000000006111c26303846525e68727f8b95a0aca39992857b6e685e55545c606d727d848c92989ea1a9abaeb4b5b7b9bdbdbec0c1c2c3c4c4c5c7cbd0c8c7c7c7c7c7c6c6c6c6c6c6c6c6c6c6c6d2ccc8c6c5b9ada197877b6e6154483b2e21150600000000000000000000000a1723303d4a5663707d8996a3b0bcc9ccc1b7afaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8acaeb4bcc5d0bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9898989898989898989898989898989898989898989898989895887b6e6255483b2f2c2d37332e2d29251e1a150f15222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000815222e3b4855616e7b8784838282849095a0abb8c4c0b4a79a8d817467606c717c8490949ea6afb7c1c4bab0a69f92867b6e61594f44515e6b7884919eabb7c4c0b5aba39f9b989898999ea1a9b3bdb0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b0b2b3b5b7b8babfbab9b7b5b3b1b4aeacaaa8a1969196a1acaea3999290959ea1998d807a7b818f98a2aea396897d70686f7c76738088858483869196a0acb8ac9f928579665b5044382b1f1206000000000c1926323f4c5965727f8c8e8d8d8e91969ea5afbac6baaea194877b6e73808385878a8c8f919696999c9fa2aaa8abadb3bbc2beb9b8b1aba9a4a5abacb2b7bcc2c2b8b0aaa9aba39f9d9a989a93918f8d8b89878276695d5043362a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15222f3c4855626f7b8895abb5bfcbbeb1a5988b7e7265584e4e4e4e4e4e4e4e4e525f6c7885929fabb8c5c1b5a89b8e8275685b4f5865717e8b98a19e9b9897928f8b7e7165584b3e3225180b00000000000c17232e38424f59616e7a85929fa7b1aba29791847a6d675c5c666d747f8791969fa2aaadb3b8babec2c4c5c7c5c4c3c2c0c0bfbebebdbcbcbbbbbababababab9b9b9b9b9b9b9b9b9babababbbbbcbeb3a9978a7d7164574a3e2d22170b00000000000000000000000a1723303d4a5663707d8996a3b0bcc9c6bbafa59e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa2aab4bfcabfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a195887b6e6255483b35383a443f3a3935302b261f1c17222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000713202d3a4653606d7879787675757983909daab6c3c0b4a79a8d8174675a616a6f7a828f949ea5afb8c2c1baaea3988f82756b615548525f6b7885929eabb8c5bbafa399928e8c8b8b8c9197a1abb5b1a4978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9baaa3a5a6a8aaacaeb4b1b2b4b6b8b9bebab9b7ab9e9184919eabb4aba39f9da0a7a89b8e82756e7a86929faca3978a7d706e7b87837c7d7c7877767a84919daab7aea39886796c605346392d201306000000000d1a2633404d596673808281808081848e939ea9b6c2baaea194877b6e6e7376787b7d7f828487898c8f9298989b9fa2a9b1b9c2c6c2bcb8b6b1b2b7b9bdc4c7c7bbb0a69f9c989992908e8b89868482807e7c7a7670665a4e4235291c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8799a3aebbc7bfb2a6998c7f73665b5b5b5b5b5b5b5b5b5b5b5f6c7885929fabb8c5c1b5a89b8e8275685b4f5764717e8a9797918e8b8885827f7b6e6154483b2e2115080000000003101c28343f4a54606b75818e97a2adb9b3a9a0969082796d65676d78818c9299a0a8aeb4b9bec4c6c5c3c0bfbab9b7b6b5b4b3b2b2b1b0b0afaeaeaeadadadadadadacacacacacacadadadaeaeaeafafb0a6998d807366544a3f33281c0f03000000000000000000000a1723303d4a5663707d8996a3b0bcc9c3b6aa9e938f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a2aebac6bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1aea195887b6e6255483b404547504c4746413a37312b2822222f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000006131f2c3845515c666d6d66696867717e8b97a4b1bec0b4a79a8d8174675a585f686d79828f939ea6b0bac3bfb4aa9e948a7d7063594f525f6b7885929eabb8c5b9ac9f9287817f7f7f80859199a3afb1a5988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f989596989a9b9d9fa2aaa4a6a8a9abadb3b0b2b3a69a8d808d99a3afb4aea8a19ea1a89f92867a6d76838f9ca9a3978a7d70727f8c9089827c726d68717e8b97a9b3b4a09386796d6053463a2d201307000000000c1926323f4b57636e73767474747478818e9ba7b4c1baaea194877b6e616669696e707275787a7d7f8285888b8f92979fa7b1bcc8cdc8c4c3bebec4c5c9ced0c3b7aa9f948f8c898683817e7c7a777573716f6d68665e554a3e32261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d687986929facb9c5c0b3a6998d8073676767676767676767676767676c7885929fabb8c5c1b5a89b8e8275685b4f5764707d8a8b8885817e7b7975726e695e52463a2d2014070000000006121f2c3844505c666f7d89939ea9b3bebbb2a89f948e81776c6d79828e939fa3abb2babfc5c6c0bbb9b6b3b4aeacaaa9a8a7a6a5a5a4a4a3a2a2a1a1a1a1a0a0a0a0a09f9fa0a0a0a0a0a0a1a1a1a2a3a3a49c8f8376665b5044382b1f1206000000000000000000000a1723303d4a5663707d8996a3b0bcc9c2b5a89b8f818282828282828282828282828282828282828282828282828282828282828282828186929facb8c5bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5bebebebebebebebebebebebebebebebebebebebbaea195887b6e625548434b51535d5954524c47433c38332d2a2f3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000004101c2834404b545c60605c5455626f7c8995a2afbcc0b4a79a8d8174675a4e565e676d78818f949fa8b2bcc6bcb0a69d9083766b6054525f6b7885929eabb8c1b4a79b8e8174727272737b87929facb2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875818587888a8b8d8f9092989597999b9d9ea1a9a4a5a7a296897c86929facb9ada1969196a1a3998c7f7274818e9ba7a3978a7d707784919d948f887f72666d7a8797a2adaca09386796d6053463a2d201307000000000a17232f3b47525c636669686767656f7c8996a2afbcbaaea194877b6e615a575e61636668686d707376797b7f828590959fabb8c4cfc9c5c4bdbdc3c4c8cdcfc2b5a99c8f827f7c797774726f6d6769666462605d56554c43382d22160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566b7885929eabb8c5c0b3a6998d807474747474747474747474747474747885929fabb8c5c1b5a89b8e8275685b4f56626f7c817e7b7875726f6c6565615e574d42362a1e1205000000000713202d3a4653606d7984909da5afb7c1c4bab0a69e938c807379828f949da5afb5bdc4c0bbb9b5afaca9a6aba39f9e9c9b9a9999989797969695949494949493939393939393939393939494949595969697989285796c605346392d201306000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a7575757575757575757575757575757575757575757575757575757575757575757784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1cbcbcac4c0bfbfbfbfbfbfbfc2c4c7cdcbc8bbaea195887b6e6255484b555d606a66615e56534e46443f3836303b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000c18232e39424b515353514b55616e7b8894a1aebbc0b4a79a8d8174675a4e4c555c666d78828f96a0aab4bfc1b8ab9f95897d7063564c5f6b7885929eabb8bfb2a5988c7f72656565697683909ca9b3a69a8d8073675a4d4034271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2834414d59656f75797a7b7d7f8082848587898a8c8e9092979597999b9c94887b83909ca9b6ab9e9184919ea99d91847774818d9aa7a3978a7d707c8995a09f96897d7063687885929fabaca09386796d6053463a2d2013070000000007131f2a35404a5257595c5b5a53626e7b8895a1aebbbaaea194877b6e61544d52545759565e616366666c6f72757983909da9b6c3c4bdb9b7b0b0b6b8bcc3c9c3b6a99c90837b706d67676562605d555a585654524c44433a31271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f45525f6b7885929eabb8c5c3b7aa9d90838181818181818181818181818181818186929facb9c5c1b5a89b8e8275685b4f54606a6f74716e69686562605b5354524d453b30251a0e02000000000713202d3a4653606d78818e939ea5afb7c1c2b8afa59c928b7e828f949ea6afbbc0c0bbb6afacaba39f9d9997999291908f8d8d8c8b8b8a898988888787878787868686868686868686878787888889898a8a8b8c887b6e6255483b2f221508000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d686868686868686868686868686868686868686868686868686868686868686b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1cec7bfb8b4b2b2b2b2b2b2b2b6b7bbc2cac8bbaea195887b6e625548515d676d77726d68625f5853504a46413a3b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000007121d27303940454646454855616e7b8894a1aebbc0b4a79a8d8174675a4e434b545c666d7a849198a3aebac3bcb1a79c8f8275685e525f6b7885929eabb8beb1a5988b7e726558576774818d9aa7b1a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925313d49535d6568676d6f7072737577797a7c7e7f81838587888a8c8e9091877a808d99a6b3a79b8e818e97a1a095897c74818d9aa7a3978a7d74818e9aa79e9184786c606b7784919eaaaca09386796d6053463a2d20130700000000020e19242e3840474b4d4f4e4d55626e7b8895a1aebbbaaea194877b6e61544846484a4c4c525456545b60696e7a8290959fabb8c0bab2adaba4a3aaacb1b9bdc4b7ab9f9490857d726d605b5353514b4d4b494745413a3231281f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081f2b3845525e6b7885919eabb8c4c5b8aca095908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9299a3aebac7c1b5a89b8e8275685b4f4e5860626865615f5758555350494846423b33291f1409000000000006121f2c3844505c666d78818e939ea5afb7c1c1b7aea49b908b8f949ea6b0b8c1beb6afaca49f9c9992908d8a888684838281807f7f7e7d7d7c7b7b7b7a7a7a7a7a7a7979797979797a7a7a7b7b7b7c7c7d7d7e7f807c6f6255483c2f221509000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d605b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5e6b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1cabfb5ada7a5a5a5a5a5a5a5a9abb0b8c2cdbbaea195887b6e62554a54606d79837f7a746e6a64605b54524c48444855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000b151e272e34383a3a3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e41424b545d686e7c86929fa8b2bdc2b9ac9f92867a6d61545f6b7885929eabb8beb1a5988b7e7265585966737f8c99a6a8a09c8f8275695c4f4236291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c37424b5359555d6062636567686a686d6f71737576787a7c7d7f81838586797d8a97a8b2a5998c7f85929ea89a8e8174818d9aa7a3978a7d7985929fa2988c7f72655b6a7784919daaaca09386796d6053463a2d201307000000000007121c262e353b3f4043414855626e7b8895a1aebbbaaea194877b6e6154483b3b3d3f4146474d575e696e7b8490959fa7b1bcbaafa8a19e97979da0a7adb2bbbcb0a69f9792877f736c655c544a42403e3c3a39352f28201f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4c8bcb1a7a09d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9fa3abb4bfcbc1b5a89b8e8275685b4f464e54565b5855534d4b4846443f3b3a36302921170d02000000000003101c28343f4a545c666d78818e939ea5afb7c1bfb6aca39b989c9ea6b0b8c1b9b1aca49f9a938f8a8683807d7b79777675747372727171706f6f6e6e6e6e6d6d6d6d6d6d6d6d6d6d6d6d6d6e6e6e6f7070717172736f6a5f53473a2e211508000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d60544f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f515e6b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1c4b8ada39c999999999999999c9fa6b0bbc7bbaea195887b6e6255515c66727f8b8c86817b76706c66615e56544f4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000000030c151d23282c2d2e3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e41434c51565f6a737f8c96a0acb8c4bbaea3998b7e7265555f6b7885929eabb8beb1a5988b7e7265585965727f8c989b9795918d83766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b25303942494b555d606363636363636363636466686a676d6f71727476787a787a8796a1aca79a8e81808d9aa79e928578818d9aa7a3978a7d7e8b98a29f92857a6d60536a7784919daaaca09386796d6053463a2d2013070000000000000a131c242a2f3233363b4855626e7b8895a1aebbbaaea194877b6e6154483b2e303038424b555e696e7b8491969fa7b1b9b4aea59d96918a8a90959ea1a8afb5b9b0a9a199938b80776d665c544a42382e2d2c29241e160d0d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4cec3b9b1acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7acaeb4bdc6d1c1b5a89b8e8275685b4f424347494e4b4846423f3c3937332d2d2a251f170f05000000000000000c17232e38424a545c666d78818e939ea5afb7c1beb5aca7a4a8aab0b8c0b7afa7a09a938e87827e7a7673716e6d66696867666665646463636261616d797a7a7a7a7a7a7a7a7a7a796d6161616262636364656566625f584e43372b1f1206000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d60544c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c515e6b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1c0b4a79c918c8c8c8c8c8c8c8f949fabb7c4bbaea195887b6e625554606d79849198928e88827d78726d686360595455626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000000030b12181c1f222e3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e424c555d605d606d7984919ea8b2bdbfb5ab9c8f8376675c5f6b7885929eabb8beb1a5988b7e7265585865717e8b918e8a8784807d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e272c3945515d676d707070707070707070707070707070707070707070706f7884919eaba99c90837c8895a0a2978a7d818d9aa7a3978a7e83909da49a8d8074685d5e6a7784919daaaca09386796d6053463a2d201307000000000000010a12191f2326262f3b4855626e7b8895a1aebbbaaea194877b6e6154483b2e2d333f4a545d676e7b849196a0a8b1b9b3aaa29f938e847d7d838a91969fa3abb2bab3aba49f928d81786d665c544a3f3428241d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4d1cbc3bcb8b7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b9babfc6cfcec1b5a89b8e8275685b4f42373b3c413e3b3a37312f2d2b2722201e1a140d05000000000000000006111c263038424a545c666d78818e939ea5afb7c1beb7b3b1b5b7bbc0b6aea59e959187817b7671787f7d7066605c545c5a5a595858575656555c697682878787878787878787878175685b55555656575758595955534e463c31261b0f03000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d6058585858585858585858585858585858585858585858585858585858585e6b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1bfb2a5998c7f7f7f7f7f7f7f828f9ca9b6c2bbaea195887b6e62555c66717e8b96a19f9a948f8a847f7a75706b66615e626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000000050e171f252a2e3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e4a545d676d676266717e8b96a1adb9c5b9ac9f9286796d605f6b7885929eabb8beb1a5988b7e7265585764717e8884817e7a7774706b6155483c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020714202d3a4753606d797d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d75828f9ca8ab9e92857883909da99b8e81818d9aa7a6998d808d959f9f93877b6e62565e6a7784919daaaca09386796d6053463a2d20130700000000000000000810171d21222f3b4855626e7b8895a1aebbbaaea194877b6e6154483b383a4644505b666d79839096a0a8b2bab3a9a198928a81797170787e848d9299a0a8afbab5afa49d938e81786d665c50443f362c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4cdcdcec8c5c3c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c5c7cbd1cdcdc1b5a89b8e8275685b4f42352e2f35322e2d2b2622201f1b1714120e0902000000000000000000000a151e263038424a545c666d78818e939ea5afb7c1c3bfbec2c3c1b7aea49d938e837c756e737c838c84796d60564d4f4e4d4c4c4b4a4a49505c6976838f93939393939393938e8275685b4f4849494a4a4b4c4d4847433c342a20150a00000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a6d656565656565656565656565656565656565656565656565656565656565656b7784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f938679727272727273808d99a6b3c0bbaea195887b6e6253606d7884919ea8aca69f9c96918c86817c77726e69646e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000000020d17202930363a3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e515c666d7a726d606d7984919eabb7c4baaea398897c70635f6b7885929eabb8beb1a5988b7e72655854616e7a7b7874716e68676361594f44382c2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b888989898989898989898989898989898989898989898377808d99a6ada297877a7f8c99a89f9286818e9ba7ab9e9285929ea79c8f8275695f535e6a7784919daaaca09386796d6053463a2d2013070000000000000008121a22282d30313b4855626e7b8895a1aebbbaaea194877b6e6154483f4446534f59606c78818f95a0a8b2bab3a9a19792867e746d67656c7179808791969da5aeb4bbaea59e938e81786d605b51483e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b5a89b8e8275685b4f42352823282522211e1a1513120f0b060502000000000000000000000000030c151e263038424a545c666d78818e939ea5afb7c1cbcbcec3b9afa59d928d81796f7079808790958c7f72685e524641403f3f3e3e3d43505c6976838f9ca0a0a0a0a0a09b8e8275685b4f423c3d3d3e3e3f403c3a37312a22180e0400000000000000000000000a1723303d4a5663707d8996a3b0bcc6baada093877a7272727272727272727272727272727272727272727272727272727272727272727784919eaab7c4bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c6666666673808d99a6b3c0bbaea195887b6e625b65717e8a96a0acb8b0aba8a09e98928e89847f7b76716e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000009141f29323b4246474855616e7b8894a1aebbc0b4a79a8d8174675a4a54606d78847f756d6873808d99a8b2bdbfb4aa998c8073665f6b7885929eabb8beb1a5988b7e726558525e686e6e726d64615e5657554f473e33281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895969696969696969696969696969696969696969084777e8a97a4b3a996897c7b8896a09f989285929eabaa9f948f92989f95897c6f63574d5e6a7784919daaaca09386796d6053463a2d20130700000000000006101a242c34393d3e3d4855626e7b8895a1aebbbaaea194877b6e6154484a50535f56606b73808c939ea7b1bab3a9a19791857c716c605d5b60676d737c848e939fa3abb4b7afa59e938e81746d635a5045392d2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070707121f2b3845525e6b7885919eabb3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a89b8e8275685b4f4235281c1b181514120e090605030000000000000000000000000000000000030c151e263038424a545c666d78818e939ea5afbac6d2c8bcb1a79d938d80746d747d848d92999f92867b6e61574d4236333231313643505c6976838f9ca9adadadada89b8e8275685b4f42353030313232332f2e2b26201810060000000000000000000000000a1723303d4a5663707d8996a3b0bcc9bfb2a5988c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f85929eabb8c5bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60595a6673808d99a6b3c0bbaea195887b6e62606c7883909da8b2bdbbb7b2acaaa39f9b96918c86827e7a7c8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000000020e1925303b444d52545355616e7b8894a1aebbc0b4a79a8d8174675a505c66717e8b8c817a6f6f7c8896a0acb9c2b5a89b8f827568556b7885929eabb8beb1a5988b7e726558585f6a6e7b7f726a5f534d4a48443e352c21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39d9084777c8996abb4a4978a7d7784919895908c8f939eaaa99c8f82858d929083766b6059565e6a7784919daaaca09386796d6053463a2d2013070000000000000c17222c363e45494b494855626e7b8895a1aebbbaaea194877b6e61544a545c6a6c6c686f7d87939fa5afb9b9ada19791857c6f6a6c6c6c6c6c6c6c6a6f79818b9299a3aebab7afa59d938c7f726c6155493c3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013131414141f2b3845525e6b7885919ea6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69b8e8275685b4f4235281c14141414141413120f0b060000000000000000000000000000000000030c151e263038424a545c666d78818e939ea9b6c2cfc5b8aca0958e8174707a818891969fa3a2988d8174695f53463b302525293643505c6976838f9ca9b6babab5a89b8e8275685b4f423528242425262622211f1b150e06000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9c0b4a79c918c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9297a1adb9c6bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e6264707d8a95a0acbac3c7c4bdb9b4aeaca8a09e99928f8a85828f9ca8b5c2c5b8ac9f9285796c5f5246392c1f130000000005111e2a36424d565e61605c616e7b8894a1aebbc0b4a79a8d8174675a53606d788491938f847c707784919eaab7c4b7aa9e918477675c6b7885929eabb8beb1a5988b7e726558606a6f7c84877c6e625a50433a38332c231a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeb0b0b0b0b0b0b0b0b0b0b0b0b0b0b0aa9d9084777a8799a3aea5988c7f74818d8c87837f818f9ba8a3978a7e7a81878a7d7064636662606a7784919daaaca09386796d6053463a2d201307000000000005111d28343e48505557565455626e7b8895a1aebbbaaea194877b6e6154505c66747979797a849199a4afb8c1b8ab9e92857c79797979797979797979797979797e86929facb9c1b7afa59f93887e7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20202020202b3845525e6b7885919a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8275685b4f42352820202020202020201f1c17110a0200000000000000000000000000000000030c141e263038424a545c666c78818e9ba7b4c1cec4b7aa9d918379747d848e939aa0a8afaa9f92867b6e61564d42362a1d293643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c1718191a1515120f0a0400000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9c4b8ada39c98989898989898989898989898989898989898989898989898989898989898989898989ea1a9b3bec9bfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e626b7683909da7b1bcccd3cec9c6bfbab9b2acaba39f9c98928f949eaab7c3c5b8ac9f9285796c5f5246392c1f13000000000714202d3a46525e696e6d66626e7b8894a1aebbc0b4a79a8d8174675a5b65717e8a969e9691867e74818e9ba7b4c1b9ac9f93867a6d606b7885929eabb8beb1a5988b7e7265606a6f7c85918f82766c61564c4135291d1a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeb9b5b3b2b4b6babcbab5b4b2b4b6b7aa9d9084777986929faca69a8d80737e837f7b7674818d9aa7a3978a7d70747b80776c606e736f6a6a7784919daaaca09386796d6053463a2d20130700000000000815212d3945505a6164636059626e7b8895a1aebbbaaea194877b6e615453606d78868686869196a1abb5c0c5b9ac9f92878686868686868686868686868686868687939facb9c6c0bbafa49a9184776b5e5144382b1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d2d2d2d2d2d3845525e6b78848d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8175685b4f42352d2d2d2d2d2d2d2d2d2b28221c140b0200000000000000000000000000000000020c141e263038424a545b666d7a8793a0adbac6beb1a4988b7e74818a91969fa4acb2bbaea3998e8174695e5246392e23293643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f0b0c0d09080603000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9c9bfb5ada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5abadb3bbc5cfbfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e63707d89959fabb9c3ceded9d5d1cbc7c3bdb9b5afacaaa29f9c9ea6b0bbc7c5b8ac9f9285796c5f5246392c1f13000000000814212e3b4754616e7b79746f6e7b8894a1aebbc0b4a79a8d8174675a606c7883909da8a09892887f7f8b98a5b1bebbafa499887b6f626b7885929eabb8beb1a5988b7e72656b707c859297948a7e71685d52453c2f261b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeaea9a7a5a8aaafb7afa9a7a5a8aaafaa9d9084777884919eaba89b8e82757076726f6f74818d9aa7a3978a7d706f6f736d686873807c77717784919daaaca09386796d6053463a2d20130700000000000a1723303d4955616c71706b65626e7b8895a1aebbbaaea194877b6e615453606d798692929299a1a8b2bdc7c7bbafa39992929292929292929292929292929292929399a4afbbc7ccc0b6ac9e9184776b5e5144382b1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3a3a3a3a3a3a404c5966737f80808080808080808080808080808080808080808080808080808080808080808080808080807e7164574b3e3a3a3a3a3a3a3a3a3a3938332d261d140a0000000000000000000000000000000000020c141e263038424a54606d7a8693a0adb9c6beb1a4978b7e737f8c95a0a8afb6bebfb5ab9f92867b6e61544b403428293643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9ccc7bfb8b4b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b8b9bec5cdccbfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e6976838f99a4afbbc7d4d9d1c9c4c0bfc1c5c7c0bbb9b3aeaba8aab0b8c1ccc5b8ac9f9285796c5f5246392c1f1300000006121e2b37424d5768748185807c767b8894a1aebbc0b4a79a8d8174675964707d8a95a0acaaa29a938c83909daab7c3c0b5ab968a7d70636b7885929eabb8beb1a5988b7e726c717d869297a19e91857a6d60584e41382d22170b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aea49d9a999b9ea5afa59d9a999b9ea5aa9d9084777783909daaa99d9083767b7c7c7c7c7c818f9ba8a5988c7f7c7c7c7c7a6d6d7a8889837e7984919daaaca09386796d6053463a2d20130700000000000b1824313e4b5764717e7c77726d6e7b8895a1aebbbaaea194877b6e615453606d7986939f9fa3abb2bac4d0cbc0b5aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa4abb5c0ccd2c4b7aa9e9184776b5e5144382b1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d273039404546474747474747474757636d737373737373737373737373737373737373737373737373737373737373737373737373737373716c6155474747474747474747474746443f382f261c11060000000000000000000000000000000000020c141e262f3a4753606d7a8693a0adb9c6beb1a4978b7e717883909da5afbdc7c6bbaea3998d8073665c5145382c293643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcbfbfbfbfbfbfbfbebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebec4bfbfbfbfbfbfb2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e65717e87939facb9c6d2d1c7bfb8b3b2b4b9babfc6c5bebab8b5b7bbc1cad2c5b8ac9f9285796c5f5246392c1f130000000814212e3a47535f697884918d8883808c99a6b3bfc0b4a79a8d817467606b7683909da7b1b4aca49f959095a0acb8c5beb1a4988b7e71656b7885929eabb8beb1a5988b7e72727e879298a2a9a1978d80746a5f53493f33271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a99d928d8c8e939ea99d938e8c8e939eaa9d90847776828f9ca9ab9e9184788088888888888f939eaaa79b918c888888887d70707d8a95908b8586929facaca09386796d6053463a2d20130700000000030f1c2936424f5c69758289847f7a747b8895a1aebbbaaea194877b6e615453606d798693a0acaeb5bdc4c5c5c5c5bdb5afacacacacacacacacacacacacacacacacacacafb5bdc5c5c5c4b7aa9e9184776b5e5144382b1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424b51535353535353535353535b6366676767676767676767676767676767676767676767676767676767676767676767676767676764615a53535353535353535353535353504a42382d22170b000000000000000000000000000000000000020c14202d3a4753606d7a8693a0adb9c6beb1a4978b7e71707d89939eabb5c0cbbfb5ab9e9285796d6053463a2e233643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b7b8bcc3cbcbcbcbcbcbcbcdc4beb9b8b2b2b2b2b2b2b2a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e626c74808d9aa7b3c0cdc9bfb5ada7a5a7acaeb4b9bdc4c6c5c2c3c7ccd3d2c5b8ac9f9285796c5f5246392c1f130000000815222f3b4855626e7b88969a95908c929ca8b4c1c0b4a79a8d81746763707d89959fabb9beb6afa7a09da0a7b1bcc8bfb2a6998c7f73666b7885929eabb8beb1a5988b7e737f879299a2aab3a99f92877c6f655b5044392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a79a8d807f818e9ba79a8e817f818e9ba89d90847775818e9ba8ac9f928679808d959595959b9ea5afada39b989595958a7d7073808d9a9d98929298a2aeaca09386796d6053463a2d2013070000000004101c2834404b556a778490908b86817e8a97a4b0bdbaaea194877b6e615453606d798693a0acb8b8b8b8b8b8b8b8b8b8b8b8b8b8b9b9b9b9b9b9b9b9b9b9b8b8b8b8b8b8b8b8b8b8b8b8b7aa9e9184776b5e5144382b1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545c606060606060606060606060606060606060606060606060606060606060605c55555c60606060606060606060606060606060606060606060606060606060606060605b544a3f33281c0f030000000000000000000000000000000000000714202d3a4753606d7a8693a0adb9c6beb1a4978b7e716b75828f99a4afbbc7c6b9ada1978a7d7063544a3f34283643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5aaacb1b9c1cbd1d8d8dacfc4bbb3adaba5a5a5a5a5a5a5a5998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62636f7c8996a2afbcc9c4b8ada39b989b9fa3aaacb2b7bbc2c6cad0d7dfd2c5b8ac9f9285796c5f5246392c1f130000030f1c28333f4a5465727e8b98a79f9d999ca4aeb9c4c0b4a79a8d8174676a76828f9ca7b1bcc3c0bbb1acaaacb1b9c3cec1b4a79a8e8174676b7885929eabb8beb1a5988b7f808b9399a3abb4bbafa3999083786c60554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a295887c727d8a97a396897d727d8a97a49d90847774818d9aa7afa399877a808d9aa2a2a2a8aaafb7b5ada7a5a2a2978a7d707683909daaa29f9fa2aab4aca09386796d6053463a2d2013070000000006131f2c3845515c677885929d98928e8a909aa6b2bfbaaea194877b6e615453606d798693a0acacacacacacacacacacacacacacacaeb4bcc5c5c5c5bcb4aeacacacacacacacacacacacacacaa9e9184776b5e5144382b1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d675c5c676d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c665b5044382b1f12060000000000000000000000000000000000000714202d3a4753606d7a8693a0adb9c6beb1a4978b7e71646e7c87939facb9c2cabeb3a99b8e8175665c5044382b3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d899699999999999999999999999999999999999999999999999999999999999da0a7afbabfc6cfd6d5c9beb3a9a19e9999999999999999998c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7b8794a1aebac7c0b3a79b918c8e92989ea1a8abb0b8babfc6ced1d2c5b8ac9f9285796c5f5246392c1f13000006121f2b3844505b6675828f9ba8aba9a6a8aeb6bfcac0b4a79a8d8174676f7c89949ea5acb1b9bec3bcb8b7b8bcc3cbcec1b5a89b8e8275686b7885929eabb8c4b8ab9e91858d929fa4abb4bdc0b5ab9f958b7e71675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a295887b717d8a97a396897d717d8a97a49d90847773808d9aa6b5ab94887b808d9aa7afafb5b6bbc1bfb8b3b2afa3978a7d707a86929facaeabacaeb4bcaca09386796d6053463a2d201307000000000713202d3a4653606d798697a1a29f9a979aa2acb7c2baaea194877b6e615453606d7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2aab4bcc6cabfb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9e9184776b5e5144382b1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d60606d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786c605346392d2013060000000000000000000000000000000000000714202d3a4753606d7a8693a0adb9c6beb1a4978b7e71646a75818e9ba7b1bcc8c5b8ab9f9285796d6053463a2d3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000a1723303d4a5663707d898c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c90959da5aeb4bcc4ccd2c6b9ada197918c8c8c8c8c8c8c8c8c8c7f7266594c3f3326190c000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bfb2a5988c7f81868c91969c9fa6acaeb4bcbfc8d2c5b8ac9f9285796c5f5246392c1f1300000613202d394653606c7985929eabb8b6b3b4b9bfc8cdc0b4a79a8d80746f717e868e939da0a7adb3bbc0c7c3c5c8ced5cfc2b5a99c8f8276696b7885929eabb8c5b9ada19791979da4afb5bdbeb6afa79f9792857a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a295887b717d8a97a396897d717d8a97a49d908477737f8c99a6afa295897c808d9aa7b3bbbbbbbbbbbbbbbbbbb0a3978a7d707d8999a3afbab8b8babfb9aca09386796d6053463a2d201307000000000815222e3b4855616e7b8894a9aeaca7a4a6acb4bec8baaea194877b6e615453606d7986929292929292929292929292929292929298a2aab4bfc6baaea2989292929292929292929292929292929184776b5e5144382b1a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a66738086868686868686868686868686868686868686868686868686868686868276696875818686868686868686868686868686868686868686868686868686868686867c6f6255493c2f2216090000000000000000000000000000000000000714202d3a4753606d7a8693a0adb9c6beb1a4978b7e7164626f7c88959fabb8c4c6baaea298887c6f6255493c2f3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000815212e3b4854616e7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f838e939fa3aab2bac2cbc4b8ab9e91857f7f7f7f7f7f7f7f7f7f7c6f6256493c2f231609000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c747a7f848a8f949a9fa2aaaeb6bfcac5b8ac9f9285796c5f5246392c1f1300000916222f3c4955626f7c8897a2adb9c3bfc1c4cad1d2c5b8ac9f9286817c77727b818990959ea2a9afb6bec3cbd1d8dccfc3b6a99c908376696b7885929eabb8c5beb3a9a19ea1a9aebbc0bbb3aca49f9590857d70675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a295887c727d8a97a396897d727d8a97a49d908477727f8c98a5b0a396897d808d9aa7aeaeaeaeaeaeaeaeaeaeaea3978a7d73808d99abb5bebab8babeb9aca09386796d6053463a2d20130700000000091623303c4956636f7c8996a2afb8b4b0b2b7bec6c7baaea194877b6e66605d606d788685858585858585858585858585858585868998a2aebac5b8ac9f928685858585858585858585858585858583776a5d5144352c21170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d9393939393939393939393939393939393939393939393939393938f8376696875818e93939393939393939393939393939393939393939393939393939393887c6f6255493c2f2216090000000000000000000000000000000004080714202d3a4753606d7a8693a0adb9c6beb1a4978b7e71645f6a7683909da9b6c3cabeb3aa988c7f7265594c3f2e3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000714212d3a46535e696e7272727272727272727272727272727272727272727272727272727272727279818b9298a1a8b0b8c0c6b9ada1978e817972727272727272726f6a6054473b2e221508000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706d72787d82888d92989ca4aeb9c4c5b8ac9f9285796c5f5246392c1f130004101c2834404b5466727f8c99a9b3bdc3c6cad0d7dfd3c6baaea298928e89837f7a757c838b92979fa4acb1babfc6cfd4d0c3b7aa9d9084776a6b7885929eabb8c5c4bbb3adabadb3bbbfbbb0a9a19a938d837b706b61554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a6998d807f818e9ba79a8d807f818e9ba79d908477727e8b98a5b0a4978a7d808d9aa1a1a1a1a1a1a1a1a1a1a1a1a1978a7d7683909da9b6b3adabadb3bcaca09386796d6053463a2d201307000000000b1824313e4b5764717e8a97a4b1bdc1bdbfc2c8d0cbbeb1a4988b7e78726d6761666d79797979797979797979797979797979797986929facb8bbaea195887c7979797979797979797979797979797771675b4f473e33281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09c8f8376696875818e9ba0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095887c6f6255493c2f2216090000000000000000000000000000050b10141617202d3a4753606d7a8693a0adb9c6beb1a4978b7e71645865727f8c98a7b1bcc8c1b4a89b8e817568544a3f343643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f030000000000000000000000000000000000000000000005121e2a36424d575e61666666666666666666666666666666666666666666666666666666666666676d747e8691969fa6afbbc0beb3a99e938e827a6e6866666666666260584e43382b1f1306000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c7063666d70767b81868c929ca8b4c1c5b8ac9f9285796c5f5246392c1f130006131f2c3845515c6676828f9cacacb2b8babec5cdd0d6cabfb4aaa29f9a95908b86817d797e858e939aa0a8aeb4bdc2cad1c4b7aa9e9184776b6b7885929eabb8c5cdc4beb9b8b9bebdb5aea69f97928880786e6961594f43392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a89c928d8b8e939da99d928d8b8e939daa9d908477717e8b98a4b1a4978b7e808d9595959595959595959595959595958a7d7a86929facb2a9a29fa2a9b3aca09386796d6053463a2d201307000000000c1926323f4c5965727f8c98a5b2bec4c7cdced3d8ccbfb3a69b908b847f79736d68606c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c7985929facb8bbaea195887b6e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a666361594f44382c2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6adadadadadadadadadadadadadadadadadadadadadadada99c8f8376696875818e9ba8adadadadadadadadadadadadadadadadadadadadadadadada295887c6f6255493c2f221609000000000000000000000000000810171c202324272d3a4753606d7a8693a0adb9c6beb1a4978b7e716458616e7b8895a0acb8c5c3b7aa9d908477665c5044383643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c0f0f0c0b0906010000000000000000000000000000000000020e1a25313b454d53545959595959595959595959595959595959595959595959595959595959555d606c717c8490949da5afb6bebbafa59e9490837a6e695f58595956544e463d32271b0f03000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c70635c60646a6e747a808c99a6b3bfc5b8ac9f9285796c5f5246392c1f13000713202d3a4653606d7985929a9da0a8abadb3bbbec7d0d0c5bcb4aeaca7a09d98928e8478727a818891959fa3abb0b8c0c8c4b7ab9e9184786b6b7885929eabb8c5d1cfc9c6c4c0bbb1aba39f948f857d736d665e574f473e31271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aea49c99989b9da5aea49d9a989b9da5aa9d908477717e8a97a4b1a5988b7e8088888888888888888888888888888888887d7d8999a3aea8a0979297a2adaca09386796d6053463a2d201307000000000e1a2734414d5a6774808d9aacadb3b7bbc2c6cbd2cfc3b7aca29b96918b85807a6d6d73737373737373737373737373737373737985929facb8bbaea195887b7373737373737373737373737373737373706b6155483c2f23160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b6a99c8f8376696875818e9ba8b4b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9afa295887c6f6255493c2f22160900000000000000000000000008111a22282d303134343a4753606d7a8693a0adb9c6beb1a4978b7e7164585f697784909daab7c3c5b9ac9f9286796d6053463a3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235281c1c1c181815120c06000000000000000000000000000000000009141f29333b4246484c4c50555759595959595959595959595959595959595959595959595959595a626a6f7a828e939fa4acb6c0b7afa69f9590847b6f6a60584e4947433d342b20160a00000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c70635653585f62686e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000814212e3b4754616e7a82878c91969a9fa2a9acb5bec9d7cec5bfbab8b1acaaa39c8f8275686d747d848c92999fa6aeb6c0c4b8ab9e9185786b6b7885929eabb8c5d1d2ccc4beb6afa7a099928c827a706b605c544d453e352c1f150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeaea8a6a5a7a9afb6aea9a7a5a7a9afaa9d908477717d8a97a4b0a5998c7f7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b79808d99abaca0969185929fabaca09386796d6053463a2d201307000000000f1c2835424f5b6875828e9a9ea1a9abb0b6bac1c9d2c9beb4aca8a19e97928c867a797f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f86929facb9c0b3a79a8d807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0c6cec5bebab8b8b8b8b8b8b8b8b8b9bbc0c7d0c2b6a99c8f8376696875818e9ba8b4c1d0c7c0bbb9b8b8b8b8b8b8b8b8b8b8babfc6cec6bbafa295887c6f6255493c2f221609000000000000000000000005101a232c33393c3d4141414753606d7a8693a0adb9c6beb1a4978b7e716458576774818d9aa7b4c0c7bbaea399887b6e6155483b3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4235292929292524221d1811090000000000000000000000000000030a111617212931363a3b45505a61646666666666666666666666666666666666666666666666666666666666686d78818c939aa4afbbc1b8b0a7a09691857c6f6a60574d4238322b2219100b05000000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356494e5356626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000714202d3946525e686e767b7f84898d92979ba3acb7c3cfd7d0cac6c3bcb8b4a6998c807366616b6f797f8690949da4aeb9c5b8ab9e9285786b6b7885929eabb8c5d1c9c0bab2aca49f9591877f786e686159514a423b332c231a0d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeb9b4b3b2b4b6bac0bab5b4b2b4b6b7aa9d908477707d8a97a3b0a6998c7f736e6f707070707070707070707070706e6e7683909da9aa9d918484919daaaca09386796d6053463a2d201307000000000e1b2834414e5b677481878d91979c9fa6a9afb7c1cbd0c7bebab2aca9a29e9285797a878c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c9299a3aebac1b5a99d928d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0cfc5bcb3adabababababababababacafb5bdc7c2b6a99c8f8376696875818e9ba8b4c1c7beb6afacabababababababababacaeb4bcc6d0bbafa295887c6f6255493c2f22160900000000000000000000000b17222c363e44494a4e4e4e4e53606d7a8693a0adb9c6beb1a4978b7e7164585865727e8b98a5b1becbbfb5ab96897c6f6356493c3643505c6976838f9ca9b6c2c1b5a89b8e8275685b4f42363636363632312e29231b1309000000000000000000000000040d151c2226292a252a303c4955616c717373737373737373737373737373737373737373737373737373737373737373747f88939facb9c6c2b9b1a8a09791857c6f695f53463a2d2423201c1710080000000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c70635649434855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130005111e2a36414c565e61696e73777c81858b919ba7b3bfccd6cec9c5c4c5beb3a9978a7d70645960666d737b828d929da8b5c5b8ab9f9285786c6b7885929eabb8c5c8bfb7aea8a19a938d837c726c665e564f4440393029211a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeb6b1afadb1b3b7beb7b2b0adb1b3b7aa9d908477707d8a96a3b0a6998d80736f7c7c7c7c7c7c7c7c7c7c7c7c7c7d796d7a86929facab9a8d8084919daaaca09386796d6053463a2d201307000000000d1a2733404c59646f747b80858a8f949b9da5afbac6d2d0ccc4bdb9b3aa9d9184777a8794999999999999999999999999999999999fa3abb4bfc5b9aea49d9a999999999999999999999999999999998e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0c6bcb3a9a29f9f9f9f9f9f9f9f9f9fa4abb5c0c2b6a99c8f8376696875818e9ba8b4c1c0b6aca49f9f9f9f9f9f9f9f9f9f9fa2aab4bfcabbafa295887c6f6255493c2f2216090000000000000000000004101c28333e485055575a5a5a5a5a606d7a8693a0adb9c6beb1a4978b7e71645856636f7c8996a9b3becabdb1a4978a7e7164574b424243505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4242424242423f3d3a342d251b110600000000000000000000000d161f272d323536342e313e4a5764717e8080808080808080808080808080808080808080808080808080808080808080808083909daab6c3cbc3bab2a9a19792867b6e6155483b2e31302d28221a120800000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300010d1925303b444c52575e61666a6f74797f8b98a5b1becbccc4bdb9b7b8b9ada197877b6e6154545c606a6e77808d9aa6b3c0b8ac9f9285796c6b7885929eabb8c5bfb5ada49d96918880796f6a605b544d443e342e271e170f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aeaba5a3a1a4a7acb4aca6a4a1a4a7acaa9d908477707d8996a3b0a69a8d80737682898989898989898989898989887b707d8a99a3afa3998a7e84919daaaca09386796d6053463a2d201307000000000b1824303c48535d64696e73797d83888e939da9b6c2cfdbd6cec9c2b6a99c8f83767a8794a1a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6acaeb4bdc6cbc0b6aea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0bfb4aaa2979292929292929292929399a4afbbc2b6a99c8f8376696875818e9ba8b4c1bbafa49a939292929292929292929298a2aebac6bbafa295887c6f6255493c2f221609000000000000000000000814202d3944505a61646767676767676d7a8693a0adb9c6beb1a4978b7e71645854606d7a8797a2adbac6bfb2a5988c7f7265594f4f4f4f505c6976838f9ca9b6c2c1b5a89b8e8275685b4f4f4f4f4f4f4f4b4a463f372d23180c0100000000000000000008111f2831383e4243403b3a424f5b6875818c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c9095a0acb8c4d1ccc4bbb3a9a298897c6f6256493c3a3d3c39332c241a0f06000000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000008141e29323b41464d5354586062676e7b8894a1aebbcec4bab2acaaabadab9e928578695e524c52575f65717e8b97a4b1beb8ac9f9285796c6b7885929eabb8c5b8ada39c928d847d746d675f58504a423b3228231c150c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aba1999694989ba3aca29a9794989ba3aa9d908477707c8996a3afa79a8d80747683909696969696969696969695887b74818d9aabac9f92867a84919daaaca09386796d6053463a2d201307000000000814202b36414a53575f61666d71767c818e9ba7b4c1ced1cac4c1c0b4a79b8e81747a8794a1adb2b2b2b2b2b2b2b2b2b2b2b2b2b2b9babfc6cfd2c8c0b9b5b3b2b2b2b2b2b2b2b2b2b2b2b2b2b2a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0baaea3988985858585858585858587939facb9c2b6a99c8f8376696875818e9ba8b4c1b9ac9f938885858585858585858586929facb8c5bbafa295887c6f6255493c2f221609000000000000000000000a1623303c4955616c7074747474747474798693a0adb9c6beb1a4978b7e716458525d687885929fabb8c5bfb3a6998c8073665c5c5c5c5c5c5c6976838f9ca9b6c2c1b5a89b8e8275685c5c5c5c5c5c5c5c585651493f34291d1206000000000000000005101a23313a434a4e504d4846424f5b6875828e9999999999999999999999999999999999999999999999999999999999999999999da0a7b1bcc8d4d6cdc4bbb3aa95897c6f62564945474a49443e362c21180e030000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000020d17202930363b4246484e5455616e7b8894a1aebbc9bdb2a8a09e9fa2a99c8f827669574d565d605d64717e8b97a4b1beb8ac9f9285796c6b7885929eabb8c5b4a89c918c8179706b615e564e443f382f292018120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3b4855626e7b8895a1a5998f89878b909ba69a908a878b909baa9d908477707c8996a3afa79a8d81747683909ca3a3a3a3a3a3a3a3a195887b7784919eaaa99d90837784919daaaca09386796d6053463a2d20130700000000030f1a252f3841454d53545c60646a6f7b8895a1aebbc8c8bfb9b4b3b3a6998c80737a8794a1adbabfbfbbb7b6b2b2b2b2b2b2b2b2b9babfc6cfd2c8c0b9b5b3b2b2b2b2b2b2b2b3b5b9bfbfbfb4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f928679787878787878787884919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e91857878787878787878787d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000a1724313d4a5764707e81818181818181818e9aa7b4c1cabeb1a4978b7e7164584c566a7784919daab7c4c0b3a79a8d807469696969696969696976838f9ca9b6c2c1b5a89b8e827569696969696969696965625b51463a2e22150900000000000000000b16212c35434c555a5d5a54524d4f5b6875828e9ba6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6aaacb1b9c3cdd9d5d6cdbcafa295897c6f62564c5254575550483e332a1f15090000000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000050e171e252a31363a3d434855616e7b8894a1aebbc5b9aca0969192979d998d8073665a525d686d6864717e8b97a4b1beb8ac9f9285796c6b7885929eabb8bfb2a6998c7f746d686e6e685e52463d31271d170e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424a54626e7b8895a1a396897d7a7e8b98a4978a7e7a7e8b98a49d9084776f7c8996a2afa79a8e81747683909ca9afafafafafafaea195887b7b8896a0acaa998d807784919daaaca09386796d6053463a2d201307000000000008131d262f333b42464a515358626e7b8895a1aebbcabfb6aea8a6aba4988b7e717a8794a1adbac2b8b0aba9a5a5a5a5a5a5a5a5acaeb4bdc6cac0b6aea8a6a5a5a5a5a5a5a5a7a9aeb6c0c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c6c6c6c6c6c6c7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786c6c6c6c6c6c6c707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d8d8d8d8d8d8d8e939da9b5c2cabeb1a4978b7e716458505d697683909ca9b6c3c1b4a79b8e817575757575757575757576828f9ca9b6c2c1b5a89b8e8175757575757575757575726d62564a3d3124180b0000000000000004101c27333d47555e666967615e57535b6875828e9ba8b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b8bcc3cbc8c8c8c8c8bcafa295897c6f6256565d6064615a50453c31261a0e0100000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000000050d14191f252a2d323b4855616e7b8894a1aebbc4b7aa9e9184858b90958a7d71645758606d7a756f717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e726d727a7a6e61594f43392f24180c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b666e7b8895a1a295887b717d8a97a396897d717d8a97a49d9084776f7c8996a2afa79a8e81747683909ca9b6b8b8b8b8b8aea195887b7f8c98a8aea298897c7784919daaaca09386796d6053463a2d2013070000000000010b141d212931363940444855626e7b8895a1aebbc4b9aea49c999ea196897d707a8794a1adbabbb0a69f9c99999999999999999fa3abb4bfc5b9aea49d9a999999999999999a9da4aeb9c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c5f5f5f5f5f6a7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786b5f5f5f5f5f63707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d999a9a9a9a9a9a9da5afbac5cabeb1a4978b7e7164584f5c6975828f9ca8b5c2c4b8ab9e9185828282828282828282828285929eabb8c5c4b8ab9e9184828282828282828282827f7265584b3f3225180c000000000000000714202c38444f59667076736e69625f586875828e9ba8b5bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcbfbfbfbfbfbfbfbfbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbafa295897c6f625f61686d706c61574d42372b1e130800000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000002080d171d21222e3b4855616e7b8894a1aebbc0b4a79a8d80797e8389887b6e6155606a7783827c757e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e72787f8581756b61554b4035291f150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666c787b8895a1a295887b717d8a97a396897d717d8a97a49d9084776f7c8996a2afa79b8e81747683909ca9abababababababa195887b838f999fa29f9286797784919daaaca09386796d6053463a2d201307000000000000020b0f181f262a2e343b4855626e7b8895a1aebbc1b4a89c928d919695887b6e7a8794a1adbab7ab9f948f8c8c8c8c8c8c8c8c9299a3aebac1b5a89d928d8c8c8c8c8c8c8c8d929da9b5c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c5f5352525e6a7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786b5e5252525763707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6a7a7a7a7a7a9afb7c0cbcabeb1a4978b7e7164584e5b6875818e9ba8b4c1c6b9ada197918f8f8f8f8f8f8f8f8f8f8f9297a1adb9c6c5b9ada196918f8f8f8f8f8f8f8f8f8d8174675a4e4134271b0e010000000000000916232f3c4855616b7683807b746f6a626875828e9ba8afafafafafafafafafafafafafafafafafafb7b9bdc4c4bdb9b7afafafafafafafafafafafafafafafafafa295897c6f62696e747a7d70695f53473a2f24190d00000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000009121b22282d30313b4855616e7b8894a1aebbc0b4a79a8d817471777c81776c6054626f7c888f8882808d9aa6b3c0b8ac9f9285796c6b7885929eabb8beb1a5988b7f7c838b92897d70675d51453c31261a0c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78817c8895a2a295887b717d8a97a396897d717d8a97a49d9084776f7c8995a2afa79b8e81747683909c9f9f9f9f9f9f9f9f9f95887b81878d92989c8f82767784919daaaca09386796d6053463a2d20170e0500000000000000060e151b1c232f3b4855626e7b8895a1aebbc0b3a6998d80848a90867a6e7a8794a1adbab6a99c8f827f7f7f7f7f7f7f7f86929facb9c0b3a69a8d807f7f7f7f7f7f7f808d9aa7b3c0b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c5f5348515e6a7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786b5e52484a5763707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6b3b4b4b4b4b5bac0c9d2cabeb1a4978b7e7164584e5b6774818e9aa7b4c1c9beb2a9a19e9c9c9c9c9c9c9c9c9c9c9c9ea1a9b3bec9c9bdb2a9a19e9c9c9c9c9c9c9c9c9a8d8174675a4e4134271b0e01000000000006121f2b37434e5863707d898d86817c756f6a75828e9ba2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3abacb2babab2acaaa2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a295897c6f6f757b8085887b6e61564c4135291c1106000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000006101b242d34393d3e454855616e7b8894a1aebbc0b4a79a8d8174676a6f746c655b5c6674808d9a948f8d929da8b5c5b8ac9f9285796c6b7885929eabb8c4b7aa9d91838790959e9184796d60574d42372b1e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c88828f9ca9a295887b717d8a97a396897d717d8a97a49d9084776f7c8995a2afa89b8e81757683909292929292929292929292887b757b80858b918c7f727784919daaaca09386796d6053463a302920170d02000000000006101820262b2e2f3b4855626e7b8895a1aebbbaaea194877b797e8385786e7a8794a1adbab3a6998d80737272727272727985929facb8bbaea195887b727272727272727c8895a2afbbb4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c5f5555555e6a7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786b5e5555555763707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6b3c0c0c0c1c2c5cbd0d0cabeb1a4978b7e7164584d5a6774808d9aa7b3c0cfc4bbb2adaba8a8a8a8a8a8a8a8a8a8a8abadb3bbc5cfcfc4bbb2adaba8a8a8a8a8a8a8a79a8d8174675a4e4134271b0e0100000000010c15212e3b47535f6a76828f99928e88827c7575828e95959595959595959595959595959595959595969ea1a8b2b2a8a09e96959595959595959595959595959595959595897c757c81878d928d8074685d5245382e23170b000000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000c17222d363e45494b525255616e7b8894a1aebbc0b4a79a8d817467606267605b53606d7985929e9e9c9a9da4aeb9c5b8ac9f9285796c6b7885929eabb8c5b8aca09591939aa0a0968c8073695f53473d30271c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f949faba5988c7f7d808d9aa6998c807d808d9aa69d9084776f7c8995a2afa89b8e81757682858585858585858585858585857b6e6e737a7f84887c6f7784919daaaca09386796d605346413b32291f140800000000040e18222a32373b3c434855626e7b8895a1aebbbaaea194877b6e71787c6f6e7a8794a1adbab3a6998d807366666666666c7985929facb8bbaea195887b6e66666666666f7c8895a2afbbb4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796c61616161616a7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786b616161616163707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6b3c0c3c3c3c3c3c3c3c3c3beb1a4978b7e7164584d5a6773808d9aa6b3c0cdcdc4beb9b8b5b5b5b5b5b5b5b5b5b5b5b8b9bec5cdd7d6cdc4bdb9b8b5b5b5b5b5b5b4a79a8d8174675a4e4134271b0e010000000007131d2a36424d57626f7c88949f9f9b948f88827c818b88888888888888888888888888888888888888899196a1acaca096918988888888888888888888888888888888888b8b7f82888e93999f92857a6d60544a3f34281c10030000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000005111d28343e485056585f5f5f616e7b8894a1aebbc0b4a79a8d8174675f5f5f56545764717d8a97a1aaa8a6a8aeb6c0c5b8ac9f9285796c6b7885929eabb8c5bcb1a7a09d9fa4aca89f92867b6e61594f42392e23180c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e586875828f9b9fa6b0a79b918c8a8d929da89c928c8a8d929daa9d9084776f7c8995a2afa89b8e81757076787878787878787878787878786e6962676d72787d786c7784919daaaca09386796d6054524d443b3025190e020000000a15202a343c4347494f4f55626e7b8895a1aebbbaaea194877b6e656c6f6a6e7a8794a1adbab3a6998d807369696969636c7985929facb8bbaea195887b6e65696969696f7c8895a2afbbb4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f9286796e6e6e6e6e6e6e7784919daab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e9185786e6e6e6e6e6e6e707d8a96a3b0bdbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6b3b7b7b7b7b7b7b7b7b7b7b7b1a4978b7e7164584d5a6673808d99a6b3c0ccd6cfc9c6c4c2c2c2c2c2c2c2c2c2c2c2c5c6c9cfcfcfcfcfcfc9c5c4c2c2c2c2c2c0b4a79a8d8174675a4e4134271b0e01000000010d18242f3a46525e6975818e9ba6aca69e9c938f86837e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d84919eabaa9e91847d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7f858b8f949b9fa4a2988c7f72665c5044382b1f150a0000000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000815212d3945505a61646c6c6c6c6e7b8894a1aebbc0b4a79a8d81746c6c6c6c63605f6976828f9ca9b3b5b3b5b9c0c8c5b8ac9f9285796c6b7885929eabb8c5c3b9b1acaaacafb6aea3998f82756b61544a4034281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a7885929eabb0b8ada39b98979a9da4aea49c99979a9da4aa9d9084776f7c8995a2afa89b8e817575757575757575757575757575757575756f6a62666c706c667784919daaaca09386796d62615e564d41362a1e11050000030f1b26323c464e53555c5c5c626e7b8895a1aebbbaaea194877b6e616062616e7a8794a1adbab3a6998d807676767676706b7985929facb8bbaea195887b6e7176767676767c8895a2afbbb4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ac9f92867b7b7b7b7b7b7b7b7b84919eaab7c2b6a99c8f8376696875818e9ba8b4c1b8ab9e92857b7b7b7b7b7b7b7b7b7e8b98a4b1bebbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d99a6aaaaaaaaaaaaaaaaaaaaaaaaaaa4978b7e7164584d596673808c99a6b3bfccd7d0cac6c5c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c0b4a79a8d8174675a4e4134271b0e0100000004111d2935414b55616e7b86929facb9b0aaa69e9a939087817a726f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7b839096a1acaca0968f82786f6f6f6f6f6f6f6f6f6f6f6f6f747c828b91979c9ea6acafaa9e9184786d6053463c32271b0f0200000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000a1724303d4956616c7178787878787b8894a1aebbc0b4a79a8d8078787878786f6b616e7b87939facb9c2c0c1c5cad2c5b8ac9f9285796c6b7885929eabb8c5ccc3bcb8b7b9bbbfb4ab9e94897d70665c51443a3024190d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8897a1adb9bfb5ada7a5a4a6a8aeb6aea8a6a4a6a8aeaa9d9084776f7c8995a2afaa9e91848181818181818181818181818181818181817c6f6e6f6f6f6f6f7784919daaaca09386796f6f6e685e5246392d201407000006131f2b37434e585f62696969696e7b8895a1aebbbaaea194877b6e696969696e7a8794a1adbab7ab9e918482838383827d707985929facb8bbaea195887b717f828383838383909da9b6c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0baaea399928888888888888888889196a0acb9c2b6a99c8f8376696875818e9ba8b4c1b9ada197928888888888888888888b919ba7b3bfbbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d999d9d9d9d9d9d9d9d9d9d9d9d9d9d9d978b7e7164584d596673808c99a6b3bfcccec5bebab8b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b4a79a8d8174675a4e4134271b0e010000000613202c3945515d6773808d99a3aebbbbb7b0aca49f99928d857f79706c6262626262626262626b707c849095a0a8b2b2a89e948e81786d65626262626262676d727a81878f939ea1a9aab0b9b9aca1968a7d7164584e43372b1f140900000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825313e4b5864717e858585858585929fabb8c5c5b9ac9f928685858585857d6f6673808d9aa4afbbc8cdced1d6d2c5b8ac9f9285796c6b7885929eabb8c5c4bab2adabadb2babdb0a69d9184786d60564c4135291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a9b3bec9bfb8b3b2b0b3b5b9bfb9b4b3b0b3b5b7aa9d9084776f7c8995a2afaca096918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8a7d707c7c7c7c7c7c7c84919eabafa295897c7c7c7a6e6154473b2e21140800000815212e3b47535f6a6f76767676767b8895a1aebbbaaea194877b76767676766e7a8794a1adbab9aca196918f8f8f8f8b7e717985929facb8bbaea195887b73808d8f8f8f8f90959fabb8c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0bfb4aba39f9494949494949494949ea0a8b2bdc2b6a99c8f8376696875818e9ba8b4c1beb3a9a19e949494949494949494989ba3acb7c3bbafa295887c6f6255493c2f221609000000000000000000000d1a2733404d5a6673808d90909090909090909090909090909090908b7e7164584d596673808c99a6b3bfd0c5bcb3aeaba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a79a8d8174675a4e4134271b0e01000003101c28343f4a54606d7a85929fabb5bfc7c1beb6afaba39f97928c847d756e69605b53555b656c737d869196a0a7b1babab0a69e938e81786c6055575e616b70797f858e93999ea5adb3b7bbc1bdb2a89c9083766a6054473b3025190e02000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b929292929298a2aebac6c7baaea3999292929292897c706d7985919eacb6c0c6c4c6c9cfd2c5b8ac9f9285796c6b7885929eabb8c5bdb2a8a19ea1a8b2bbb8aca0968c7f72685d52453b31251a0e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d576875818e9ba8b5c1cec5bebab8b3b3b3b3b8b9bebfbdc0bcb7aa9d9084776f7c8995a2afb2a8a09e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b978a7d77838888888888889196a1acb1a4998e8988887f7366594c403326190d00000916222f3c4955626f7c828282828282909ca9b6c3c3b6a99c908282828282827b7a8794a1adbabdb2a8a19e9c9c9c978b7e717985929facb8bbaea195887b73808d9a9c9c9c9d9fa7b1bcc1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0c6bdb4aeaca1a1a1a1a1a1a1a1a1aaacb2bac4c2b6a99c8f8376696875818e9ba8b4c1c5bbb3adaba1a1a1a1a1a1a1a1a1a4a7acb5bec9bbafa295887c6f6255493c2f221609000000000000000000000c1925323f4c5865727f838484848484848484848484848484848484837e7064574d596673808c99a6b3bfcabeb3aaa29f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9a8d8174675a4e4134271b0e01000006121f2c3844505c66727f8c97a2adb9babfc6c7c0bbb5afa9a29f96918a827b726c655f57606c777f889298a1a8b1b9c1b8b0a79f9590847a6d615b60696e757d848c92989fa4abafb9bec4c7c7c2b7ab9f94887c6f62564d42362a1e1105000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b989f9f9f9fa2aab4becacbbfb4aba39f9f9f9f96897c70717e8a97a1adbebeb9b8b9bec4cdc5b8ac9f9285796c6b7885929eabb8c5b9ada1969196a1a9b3bdb2a89f92857a6d60574d42362a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f697885919eabb8c4c5bcb3aeaba6a6a6a6abadb3bbc3b9b1acaa9d9084776f7c8995a2afbab2acaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a3978a7d77839095959595959ea1a8b2b5aaa09995958c7f7366594c403326190d00000a1723303d4a5663707d898f8f8f8f90949fabb7c4c4b7ab9f94908f8f8f8f887c7a8794a1adbac4bab2acaba9a9a4978b7e717985929facb8bbaea195887b73808d9aa6a9a9a9abb1b9c2c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0cfc6bfbab9aeaeaeaeaeaeaeaeaeb7b9bdc4ccc2b6a99c8f8376696875818e9ba8b4c1cdc5beb9b8aeaeaeaeaeaeaeaeaeb1b3b7bec7c8bbafa295887c6f6255493c2f221609000000000000000000000b1825313e4a56626d7277777777777777777777777777777777777777706c61554d596673808c99a6b3bfc6baaea2989290909090909090909090909090909090909090909090909090909090909090908d8174675a4e4134271b0e0100000713202d3a4653606d7984919d9fa7acaeb4babec5c7c0bbb3ada8a09e938f857f776e696265727f8b939aa2aab2bac0bbafa69e9590837a6e685f666c727b828a91969fa2aaafb5bdc1c9c6bfbab9b0aba69b8e8175695e52463a2d201407000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a4abababaeb4bcc5d0d1c6bdb4aeacababa396897c707683909da9b3bbb3adabadb3bbc4c5b8ac9f9285796c6b7885929eabb8c4b7ab9e91849197a1adb9baada2978d8073695e53463c31261b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8896a1abb5c0beb3aaa29f999999999ea1a9b3bcb1a7a09d999084776f7c8995a2afbcbdb9b7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b0a3978a7d7783909da2a2a2a2abacb2babcb2aaa4a2998c7f7366594c403326190d00000a1723303d4a5663707d89969c9c9c9c9fa6b0bcc7c7bbb0a69f9c9c9c9c95887c7a8794a1adbac9c1bbb6b5b0b0a4978b7e717985929facb8bbaea195887b73808d9aa6b2b2b3b5b9c0c8c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0c2c2c2c2c2bbbbbbbbbbbbbbbbbbc2c2c2c2c2c2b6a99c8f8376696875818e9ba8b4c1c2c2c2c2c2bbbbbbbbbbbbbbbbbbbec2c2c2c2c2bbafa295887c6f6255493c2f221609000000000000000000000916222e3a46515b62656a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a64615a504d596673808c99a6b3bfc5b8ab9f92868383838383838383838383838383838383838383838383838383838383838383837f7265594c3f3226190c0000000916222f3c4955626f7c858b90959b9fa3abadb3b9bec4c5bebab2aca59e98928b837b726d616d79828f95a0a8b2bbb6afa59d948f837a6e6860696e787f868f939ea0a8aeb4bbc0c7c5bebab4aeaca69f9c9792867a6e6154473b2e211408000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60535a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a4b1b8b8babec5ced7d8cfc6bfbab9b8afa396897c707c88959fabbbb3a9a19ea1a9b3bec5b8ac9f9285796c6b7885929eabb8bfb2a5998c7f85929ea8b2bdb3a99f92867b6e61584e43372b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a849199a3afbbbaaea298928c8c8c8c9297a1adb8aca095918c8c83776f7c8995a2afbcbfbbb9b8b8b8b8b8b8b8b8b8b8b8babfbdb0a3978a7d7783909daaafafafb7b9bdc4c5bcb5b2a6998c7f7366594c403326190d00000a1723303d4a5663707d8996a3a9a9a9abb0b8c2cdcdc2b8b0aba9a9a9a295887c7a8794a1adbac1b7afaaa8a3a3a3978b7e717985929facb8bbaea195887b73808d9aa5a5a5a6a8aeb6c0c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a99c8f8376696875818e9ba8b4b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6afa295887c6f6255493c2f2216090000000000000000000006121e29343f495156585d5d5d5d5d5d5d5d5d5d58626c71716c625b5d575550474d596673808c99a6b3bfc2b6a99c8f83767676767676767676767676767676767676767676767676767676767676767676726d62574a3e3125180b0000000815222e3b47545f6a6f797e83898e92999fa2a9adb3b9bec4c4bdb9afaaa29f9590867f766e696d79839096a0a9b2aca49f938e82796d68656c727b838b92989ea5acb2babec5c4beb9b3adaaa39f9a94908a85807a6e6154473b2e211408000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c60575a6673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a4b1bec5c6cad0d7e0e1d8d1cbc7c5bcafa396897c74818e9aa7b1b5aba1979197a1adb9c5b8ac9f9285796c6b7885929eabb8beb1a5988b7e7f8b96a0acb9baaea3988e81756a5f53473c32261b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d686f7d87929fa8b1b8ab9f92858080808085929ea6b0aa9d918380807f726f7c8995a2afbdb5aeacababababababababababacaeb4bcb0a3978a7d7783909daab6bbbbc4c5c9cecec7bfb2a6998c7f7366594c403326190d00000a1723303d4a5663707d8996a3b0b5b6b7bcc2cad4d4cac2bbb7b6b5afa295887c7a8794a1adbabbafa59e9b979797978b7e717985929facb8bbaea195887b73808d989898989a9da4aeb9c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99c8f8376696875818e9ba8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a295887c6f6255493c2f22160900000000000000000000010d18232d373f464a4c51515151515151514b555f6a717e7e726d635b504941404d596673808c99a6b3bfc2b6a99c8f8376696969696969696969696969696969696969696969696969696969696969696965625b51463a2e22160900000006131f2b37434e585f676d71767c81868d92979ea1a9adb3babec5c1bcb3aea79f98928b827b706c6d7a849196a1a9a29a938c81786d67686e777f8690949fa2aaafb9bdc4c5bebab3ada9a29f98928e88837e79746e685e5246392d201407000f1c2835424f5b6875828e9ba8b5c1b9ac9f9386796c6464646673808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a4b1b9bbbdc0c6ced6dbd2cbc5c2c1b9afa396897c7a86929facb8afa4999185919eabb8c4b8ac9f9285796c6b7885929eabb8beb1a5988b7e7884919ea7b1bcb4aa9f93877c6f62584e43372b1c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56606b73808d95a0acb8aea2988a7d7373737e8b949fabac9f92867b73726d6f7c8995a2afb5aba39f9f9f9f9f9f9f9f9f9f9f9fa3aab4b0a3978a7d7783909daab6b7b7b9bbbfc6ccc4bdb2a6998c7f7366594c403326190d00000a1723303d4a5663707d8996a3b0bcc3c4c7cdd4dcdcd4cdc7c4c3bbafa295887c7a8794a1adbab6aa9e938f8a8a8a8a8a7e717985929facb8bbaea195887b73808b8b8b8b8b8d929da8b5c1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d999c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c8f8376696875818e9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c95887c6f6255493c2f221609000000000000000000000007111b252d343a3e3f4444444444444445515d676f7c86877f736d605b534a424d596673808c99a6b3bfc2b6a99c8f8376695d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d595751493f35291e1206000000030f1b26323c464e555d60656a6f747a80858c91979ea1a9adb3bbc0c5bebab1aaa29f948f857d736d6e7b849197a09892887f746d666b707a828b92989fa6aeb4bcc1c6bfbab3aea9a19e97928d86817b76716d67615e564d41362a1e1105000f1c2835424f5b6875828e9ba8b5c1b9ac9f938679717171717173808d99a6b3c0bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a4adadaeb0b5bcc4ced2c9c0bab5b4adada396897d7f8c98a3aeb9ac9f9387808c99a6b3bfb8ac9f9285796c6b7885929eabb8beb1a5988b7e727e8a95a0acb8bbafa49a8f82756a5f5447382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444f59606d7984919da5afb3aa9d9083786d6c78839099a3aea3998f82766c626f7c8995a2afaea39992929292929292929292929298a3aeb0a3978a7d7783909daaaaaaaaacaeb5bdc4bab2aca6998c7f7366594c403326190d00000a1723303d4a5663707d8996a3b0bbbcbec1c7cfd7d7cec7c1bdbcbbafa295887c7a8794a1adbab5a89b8f817d7d7d7d7d7b6e7985929facb8bbaea195887b6f7d7f7f7f7f7f808d9aa6b3c0b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8276696875818e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f887c6f6255493c2f22160900000000000000000000000009131b23292e313237373737333d47515b606d798491938b80746c655c544b4d596673808c99a6b3bfc2b6a99c8f8376695c5050505050505050505050505050505050505050505050505050505050504c4a463f372d23180d01000000000a15202a343c434b5153586062686e737a7f858b91979fa2a9afb5bdc2c2bcb4aea69f97928a80786e6f7c85929691867e726d666c737d858f949fa2aab0babfc5c1bcb4aeaaa29f97918c85807a746e6a64605c55524d443b3025190e02000f1c2835424f5b6875828e9ba8b5c1bdb1a4978a7e7e7e7e7e7e7e828f9ca8b5c2bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b98a0a0a0a2a4aab2bcc6cbc0b7afa9a7a0a0a096897d85919eaab4b1a79c8f827e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e727883909da6b0bbb4ac9f93877c6f62544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323d45515c676f7c89939eaab4aca0958b7e716e6f7c87929facab9e948a7d70666f7c8995a2afac9f92878585858585858585858586929facb0a3978a7d7783909d9e9e9e9e9fa3abb5bdb2a8a09e998c7f7366594c403326190d00000a1723303d4a5663707d8996a3aeaeb0b1b6bdc5cfcec5bdb6b1afaeaea295887c7a8794a1adbab3a6998d8073707070706e697985929facb8bbaea195887b6e6f72727272727c8895a2afbbb4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e828383838383838383838383838383838383838383838383838383838280736766727f8283838383838383838383838383838383838383838383838383838383827b6e6255483b2f221508000000000000000000000000010911181e2225252a2a28313b454f59636d75818e969f928c80776d665d554c596673808c99a6b3bfc2b6a99c8f8376695c5958565553514b4e4c4a48474540434343434343434343434343434343433f3e3a352d251b11070000000000040e19222a31394045474e54565e61676d72797f858c92979fa3abb0babec5bfbab0a9a29e928d827a6f6f7d868f847c706c686d78808891979fa6aeb4bcc2c4bdb9b0aaa39f98928c857f7a736e68625f5853514b46413b32291f140800000f1c2835424f5b6875828e9ba8b5c1bfb2a69a908a8a8a8a8a8a8a8f949eaab7c3bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8b939393939598a0aab5c0c5baafa59d9a939393938e818e97a1abaeaca095897d7e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e72707d8a949fabaeaaa39f988f8275665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202834404b55606b75818e98a2aeb1a79e91847b7a7a7a818e9ba7b0a69e9184786c6f7c8995a2afa89b8e81787878787878787878787f8c99a5b0a3978a7d77839091919191919299a3aeb9aca09691918c7f7366594c403326190d00000a1723303d4a5663707d8996a1a1a1a3a5abb3bdc7c7bdb3aba5a3a1a1a195887c7a8794a1adbab3a6998d807366646464616c7985929facb8bbaea195887b6e65676767676f7c8895a2afbbb4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313d4a56626c717676767676767676767676767676767676767676767676767676767676736e63636d727676767676767676767676767676767676767676767676767676767676766e695f53473a2e2114080000000000000000000000000000070d121618191b262f39434d57606b727f8c939ea49c928d81786d675d56596673808c99a6b3bfc2b6a99c8f8376696766646362605d555b59575553514b4d4b4846443f3e3b3a3631363636363632312e29231b130a000000000000000710191f282f35393d43474c52555d60676d72797f858d92999fa6adb3bbc1c2bbb3ada49d9490857c71707d827a6f6a696e7a828c939aa1a9b0babfc6c0bbb2ada69e98928d857f79726d67615e56534e4745403936302920170d0200000f1c2835424f5b6875828e9ba8b5c1c3b7aca29a979797979797979c9ea6b0bbc7bbaea195887b6e62616e7a8794a1adbac7bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000b1825323e4b5865717e8686868686888e98a4b0bdc2b5a99d928e8686868686868e92999fa2a99d9083777e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e726b7683909ca6a39f98928d8680786c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18232e39434f59616e7b86929fa9b3ada19691878787878e939da9b6aca096867a6d6f7c8995a2afa89b8e81756c6c6c6c6c6c6c6c727f8c99a5b0a3978a7d758184848484848487929facb7aa9e918484847f7265584b3f3225180c00000a1723303d4a5663707d89949494949699a1abb6c1c1b6aba1999694949494887c7a8794a1adbab3a6998d80736965615e566c7985929facb8bbaea195887b6e7274747474747c8895a2afbbb4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a45505a6265696969696969696969696969696969696969696969696969696969696967635c5b6366696969696969696969696969696969696969696969696969696969696969625f574d42372b1e12060000000000000000000000000000000106091017222d38414b555f69707d87929fa5ada49d938e82796d685e566673808c99a6b3bfc2b6a99c8f827675747271706e6d676967666462605d555a575553504a4b4846423f3b3a37312c2725221e18110a010000000000000000070d161d24292c32373b41464b51555c60676d727a80878f949fa2a9b0babfc5beb9aea69f9791867e7270756d686b6f7b848f949fa4acb3bbc2c4bdb5afa8a19e948f86807a736d67605d55524c47433c38342f2a251f170e050000000f1c2835424f5b6875828e9ba8b5c1c8beb4aca6a4a4a4a4a4a4a4a8aab0b8c1ccbbaea195887b6e62616e7a8794a1adbac1bcafa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000713202d3a4653606d787a7a7a7a7a7c8895a2aebbc1b4a79a8e81797a7a7a7a7b81868d92989f978b7e717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e7265707d89949f99928d86807b746c665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303d46525e6973808c97a1adb2a9a19e949494949b9da5afbab2a893867a6d6f7c8995a2afa89b8e81756969696969696969727f8c99a5b0a3978a7d707577777777777784919daaaca09386787777726d62564a3d3124180b00000a1723303d4a5663707d8888888888898f99a5b1bebdb1a5998f8988888888887c7a8794a1adbab5a89c8f827b76726d68636c7985929facb8bbaea195887b727f8080808080818e9ba8b4c1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f485056585c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a58525157595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c55534d453c31261a0e0200000000000000000000000000000000060f192327333f49535d676e7b859299a3afb6aea59e948f827a6e685e6673808c99a6b3bfc5b8ac9f92868382807f7e7c7b7a78767472706f6d6769666462605b545754534d4b4847433c38322b23190f070000000000000000000000040c12181d20272b30363a40454b51555d60686d747c828b92979ea6aeb4bcc3c0b8b0a9a19892887f736e616c707d8591969ea6afb6bec4c1bab2aba49f96918a827b736d68605d55514b46413b37312c29231d19140d05000000000f1c2835424f5b6875828e9ba8b5c1cec6beb7b2b1b1b1b1b1b1b1b5b7bbc1cac8bbaea195887b6e62616e7a8794a1adb5b5b5afa396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000006121f2c3844505c666d6d6d6d6d6e7b8894a1aebbc0b4a79a8d81746d6d6d6d6e747b80868d92928579717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e72656b76828f928e86817b746e69605b544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a36424d56606d7a85929ea9b3b2adaba1a1a1a1a7a9afb7b9ada093867a6d6f7c8995a2afa89b8e81767676767676767676767f8c99a5b0a3978a7d70686b6b6b6b6b7784919daaaca09386796d6b65625b51463a2e22150900000714202d3a4753606d797b7b7b7b7b7d8996a3b0bcbcafa396897d7b7b7b7b7b797a8794a1adbab7aa9e948f88837f7a75706c7985929facb8bbaea195887b76828d8d8d8d8d8e939eaab6c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17222d363f454a4b50505050505050505050505050505050505050505050505050505050504d4b47464b4c5050505050505050505050505050505050505050505050505050505050504847423c332a1f150900000000000000000000000000000000050e18212b353d44505b656d79839097a2abb5c0b7afa69e9490837b6e616673808c99a6b3bfc6baaea29892908e8d8c8b8988868583817f7d7b7a787573716e6c666764615e575855534e48443d352b21160b00000000000000000000000001070d10151b1e252a2f353940454b51565e616a6f767e858f939fa3aab1bac1c2bbb3aaa29a938c80736e707e869297a0a8b0bbc0c6bfbaafa8a199938d847e756e69615e56514b45413a36302b261f1c18120e080200000000000f1c2835424f5b6875828e9ba8b5c1c8c8c8c3bfbdbdbdbdbdbdbdc2c3c7ccc8c8bbaea195887b6e62616e7a8794a1a8a8a8a8a8a396897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000003101c28343f4a545c60606060616e7b8894a1aebbc0b4a79a8d81746760606062696e747a80858c7f73717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e726563707d8986817b746e69615e56504a42382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1925303b45515d67727f8c97a1adb9b9b8aeadadadb4b6bac1b9ada093867a6d6f7c8995a2afab9e91858282828282828282828284919daab0a3978a7d70645e5e5e5e6a7784919daaaca09386796d60585651493f34291d1206000006131f2c3845515d676d6e6e6e6e6e7b8895a1aebbbaaea194877b6e6e6e6e6e6e7a8794a1adbabbb0a69e9c95908b86827d787985929facb8bbaea195887b76838f9a9a9a9a9b9ea5afbac1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3e4343434343434343434343434343434343434343434343434343434343403f3b3a3e3f4343434343434343434343434343434343434343434343434343434343433b3a37312a21180e03000000000000000000000000000000040d17202a333d47505a606c77818f95a0a9b3bdc7c1b8afa59f92867c6f626673808c99a6b3bfcabfb4aaa29f9c9b9a999796959791908e8c8a88868482807e7b797674716e696865625f58544f473d32271b10030000000000000000000000000001040a0f14191d24292f343940454c52585f626c717a828b9298a0a8afbbc0c4bcb4aca49f928d80757e879298a1a9b2bac1c5bdb4aea59e9691878079716c615f57524c454039352f2a251e1a15100c0701000000000000000f1c2835424f5b6875828e9ba8b5bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaea195887b6e62616e7a87949b9b9b9b9b9b9b96897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f13000000000c17232e38424a5053535355616e7b8894a1aebbc0b4a79a8d8174675a5353575e61686d737a7f7a6d717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e7265606b727f7b746e69615e57524d443f382f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2935414b55606d7985929eaab4bec4bababfbab8b8b8b8b8ada093867a6d6f7c8995a2afada197918f8f8f8f8f8f8f8f8f8f9196a0acb0a3978a7d70645751515e6a7784919daaaca09386796d605346463f372d23180c01000004101d2935404b555d60616161626e7b8895a1aebbbaaea194877b6e616161616e7a8794a1adbac1b8b0aaa79f9d99928e89847f85929facb8bbaea195887b76838f9ca7a7a7a8aaafb7c1c1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292e3132363636363636363636363636363636363636363636363636363636363634322f2f32333636363636363636363636363636363636363636363636363636363636362f2e2b261f180f06000000000000000000000000000000010c161f29323c454f59616c73808c939ea7b1bbc5c4bab1a79d938b7f726a606673808c99a6b3bfd0c6bcb4aeaca9a8a7a5a4a3a9a19e9c9a99979a93918f8d8a888583807e7b7875726e6a6360594f44382c2013070000000000000000000000000000000002080e13181d23292f353a41464e535a62686e757f8691959ea5afb6bec6beb6afa49c928d82879299a3aab3bbc3c3bbb3aba39f938f847d746d67615a534d46413a352f29241d19140f0a04000000000000000000000f1c2835424f5b6875828e9ba8afafafafafafafafafafafafafafafafafafafafafaea195887b6e62616e7a878e8e8e8e8e8e8e8e8e897c706356493d4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000006111c2630383f4446474855616e7b8894a1aebbc0b4a79a8d8174675a4e474d52565e61686d736d68717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e726559636d726e69615e57524d46423b332d261d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18242f3a45515d67737f8c98a2aebac6c6bcb4aeacacacacacaca093867a6d6f7c8995a2afb2a9a19e9c9c9c9c9c9c9c9c9c9c9da0a8b2b0a3978a7d7064574a515e6a7784919daaaca09386796d6053463a342d251b1106000000000c18242f39434b5153555555626e7b8895a1aebbbaaea194877b6e615555616e7a8794a1b5b8babebbb7b1ababa39f9b968e8185929facb8bbaea195887b76838f9ca9b3b3b4b6babbbbbbb4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911171d212425292929292929292929292929292929292929292929292929292929292927262322252629292929292929292929292929292929292929292929292929292929292922211e1a150e060000000000000000000000000000000008131e28313b444d57606b717e8a929ca5afb9c3c5bcb2a89f958e81746d62586673808c99a6b3bfcccec6bfbab8b6b5b3b2b1afb3adaba9a7a5aca49f9e9c99979892908d8a8784827e7b78706b6054483b2f22160900000000000000000000000000000000000001070d12181d242930353c434750565e616d727c838e939fa4acb4bcc5c0bbaea49d948f9299a3abb4bcc5c1b9b1a9a199928b817a706b605d555046423b363029241d18130d08020000000000000000000000000f1c2835424f5b6875828e9ba2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a195887b6e62606d7a81828282828282828282817c6f6255483c4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f1300000000000a151e262e34383a3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e4142464c52565d60666164717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e7265585b6366615f57534d46423b363028221c140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d2935404b55606d7a85929fabb8c2bfb4aaa29f9f9f9f9f9f9f93867a6d6f7c8995a2afbbb2adaba9a9a9a9a9a9a9a9a9a9aaacb2bab0a3978a7d7064574a515e6a7784919daaaca09386796d6053463a2d201b1309000000000007121d273139404547484855626e7b8895a1aebbbaaea194877b6e615454616e7a8794a4ababadb3b8babcb8b4aeac9f94887c85929facb8bbaea195887b76838f9ca9afafafafafafafafafa79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111517181d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1a19171618191d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1514120e090300000000000000000000000000000000010d19242f3a434d565f696f7d86929fa4aeb7c1c7bdb3a9a1969083786d605b596673808c99a6b3bfc5c6c7cac6c5c3c1c0bfbebcbeb9b8b6b4b2b6afacaba8a6aaa29f9c9a9796918e8b88847d706356493d3023160a000000000000000000000000000000000000000001070c12181e252931373e444c525b626a6f79818c939aa2aab3bbc4c0b6aea69e9c9fa3abb5bdc6c1b8b0a7a09792877e756d686059514b433e36312a251e18120d070100000000000000000000000000000f1c2835424f5b6875828e9595959595959595959595959595959595959595959595959595887b6e625d686d75757575757575757575756f6a5f53473b4855626e7b8895a1aebbc5b8ac9f9285796c5f5246392c1f130000000000030c151c23282c2e3b4855616e7b8894a1aebbc0b4a79a8d8174675a4e41363a41464c5254595864717e8b97a4b1beb8ac9f9285796c6b7885929eabb8beb1a5988b7e72655851575955534d46423b36302a251f17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18242f3945525d6874818d9aa6b0bbbaaea2989292929292929292867a6d6f7c8995a2afbcbeb9b8b5b5b5b5b5b5b5b5b5b5b7b8bdbdb0a3978a7d7064574a515e6a7784919daaaca09386796d6053463a2d201307000000000000010b151f272f35383a3b4855626e7b8895a1aebbbaaea194877b6e615454616e7a8793999b9fa2a9abadb3b8bab2a89c90837985929facb8bbaea195887b76838f9ca2a2a2a2a2a2a2a2a2a2a29b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090b0b10101010101010101010101010101010101010101010101010101010100d0d0a0a0c0c1010101010101010101010101010101010101010101010101010101010100808060200000000000000000000000000000000000004111d2935414c555e686e7b859298a3aeb6bfcbc0b5aba29791847a6e665c51596673808c99a6b3b7b8b9bbc0bcbebfc1c2c3c5c6c9c6c4c3c1bfc0bbb9b7b5b3b4aeaca9a7a8a19e9b9893867a6e6154473b2e2114080000000000000000000000000000000000000000000001070c131920262b323b414651585f676d757f889298a1a9b3bbc4c0b8b0aaa8acaeb5bdc6c0b7afa69e9590857d726d615d564f45403a312a261f19130d0701000000000000000000000000000000000f1c2835424f5b687582888888888888888888888888888888888888888888888888888888887b6e62565d606868686868686868686868625f584e433b4855626e7b8895a1aebbc4b8ac9f9285796c5f5246392c1f13000000000000030a11171c222e3b4855616e7b8894a1aebbbdb4a79a8d8174675a4e413430363a4145474c5864717e8b97a4b1bbb8ac9f9285796c6b7885929eabb8beb1a5988b7e7265584b4b4c4846423b36312a251f19140b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414c56626e7b88949fabb7b8ac9f92868585858585858586796d6f7c8995a2afb3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b0a3978a7d7064574a515e6a7784919daaaca09386796d6053463a2d20130700000000000000030d151d24292c2f3b4855626e7b8895a1aebbbaaea194877b6e615454606d7a83868a8e92979a9fa2a9acaeada1968a7d7985929facb8bbaea195887b76838f959595959595959595959595958e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676e7a849197a2aab4bfc8c0bbafa39992857c6f685e544b596673808c99a6a9aaabacafb5b0b1b2b4b5b7b8babfbebfc1c4c5c7c8c6c4c2c0bfbab8b6b3b2adaba89d908377685e5246392d20140700000000000000000000000000000000000000000000000002080d151a202930363f464e555d606d737e869297a1a9b2bac4c1bbb7b5b9bbbfc6c0b7afa59e948f837b6f6b625b524c443d352f281f1a140d08020000000000000000000000000000000000000815212e3b4854616e7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c796d605352545b5b5b5b5b5b5b5b5b5b5b55534e463c3b4855626e7b8895a1aeb8b8b8ac9f9286796c5f5246392c1f130000000000000000060c15222e3b4855616e7b8894a1aeb0b0b0a79a8d8174675a4e4134252a3035393e4b5864717e8b97a4aeaeaeac9f9285796c6b7885929eabb1b1b1a5988b7e7265584b3f3f3b3a36312a251f1a140e0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a47535f6a76838f9caab4b1a4988b7e79797979797979796d676f7c8995a2a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a3978a7d7064574a515e6a7784919daaaca09386796d6053463a2d2013070000000000000000030b12181d222f3b4855626e7b8895a1aebbbaaea194877b6e6154525d686d777a7d8185898e92979b9fa3aa9e9184797985929facb8bbaea195887b76828888888888888888888888888888888174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d13131313131313131313130604010000000000000000000000000000000003080b0d0e111111111111111111100f0d0a05000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a849096a1a9b3bcc6c0b7aea49f92877d706a5f564c4d596673808c999c9c9d9e9fa4aba3a4a6a7a8aaacaeb4b1b3b5b7b9bbbfc0c2c5c6cac6c5c3c0bdb9b2a9998c807366564d41362a1e11050000000000000000000000000000000000000000000000000000030a0e171e252a343c434b515b636c717c859197a1a8b2bac4c7c3c2c5c7cbc0b6aea59d938e82796e6960595146413a3229241d160d090300000000000000000000000000000000000000000714212d3a46535e696e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d675c5145474f4f4f4f4f4f4f4f4f4f4f4847433c343b4855626e7b8895a1ababababab9f9285796c5f5246392c1f130000000000000000000815222e3b4855616e7b8894a1a3a3a3a3a39a8d8174675a4e4134271e2429313e4b5864717e8b97a1a1a1a1a19f9285796c6b7885929ea5a5a5a5a5988b7e7265584b3f332e2d2a261f1a140e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2b37434e5864717e8b98a2aeb5a99c8f8276686c6c6c6c6c6c60626f7c899599999999999999999999999999999999999999999999978a7d7064574a515e6a7784919daaaca09386796d6053463a2d20130700000000000000000001070c15222f3b4855626e7b8895a1aeb2b2aea194877b6e61544c565d60686d7175797d81858a8e92989c988c7f727985929facb4b4aea195887b6e7b7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e1317191a202020202020202020202013110d070100000000000000000000000001080f14181a1b1e1e1e1e1e1e1e1e1e1d1c1916100a0300000000000000000000000000000000000000000000000000000000000000000613202d394653606c78808c919fa3abb4bcb8afa59c928b7e716b60584e444d596673808c8e8f9091929399959697999a9c9d9fa2aaa4a6a8aaacaeb5b3b5b8b9bec0c3c5c7c6b9ada197887c6f6255493c3025190e0200000000000000000000000000000000000000000000000000000000050d1419222a31394045515a616a6f7c859196a0a8b2bbc4cecbcbc9c0b6aea49d938e81786d675e574f473f3530282018130c040000000000000000000000000000000000000000000005121e2a36424d575e6162626262626262626262626262626262626262626262626262626262605c554b403a42424242424242424242423c3a37312f3b4855626e7b88959e9e9e9e9e9e9e9285796c5f5246392c1f130000000000000000000815222e3b4855616e7b8894979797979797978d8174675a4e4134271b1925313e4b5864717e8b949494949494949285796c6b788592989898989898988b7e7265584b3f3225211e1a140e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1a26313c4753606d7a85929facaca99f92867a6d615f5f5f5f5f56626f7c898c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8a7d7064574a515e6a7784919da8a8a09386796d6053463a2d20130700000000000000000000000815222f3b4855626e7b8895a1a5a5a5a5a194877b6e6154484c52565e6164666d7074797d82868b8f92867a6d7985929fa7a7a7a7a195887b6e6e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695e53463a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f2326272d2d2d2d2d2d2d2d2d2d2d201d18130c0400000000000000000000020b131a202427282a2a2a2a2a2a2a2a2a292926211c150d040000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c747f8b9299a2aab3b0a69d938c80736c62594f463d4a5663707d808182838485868788898b8c8e8f9092989697999b9d9fa3aba6a9abadb3b3b6b9babfb8ab9e9185786c605346392d201308000000000000000000000000000000000000000000000000000000000000020810181f282f3540485058606a6f7b849196a0a9b3bcbebebebeb7aea49d928d80786d665d554d453d3429241e160e07010000000000000000000000000000000000000000000000020e1a25313b454d53545555555555555555555555555555555555555555555555555555555553514b43392e35353535353535353535352f2e2b262f3b4855626e7b8891919191919191919185796c5f5246392c1f130000000000000000000815222e3b4855616e7b888a8a8a8a8a8a8a8a8a8074675a4e4134271b1825313e4b5864717e88888888888888888886796c6b78858b8b8b8b8b8b8b8b8b7e7265584b3f322518120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c3945515d6775818e9ba29f9d9b998b7e7165585252525254616e7b80808080808080808080808080808080808080808080808080807c6e625548515e6a7784919c9c9c9c9386796d6053463a2d20130700000000000000000000000815222f3b4855626e7b889598989898989894877b6e61544841454c5254545c6063676d70757a7e82868074687985929b9b9b9b9b9b95887b6e62626262626262626262626262626262615e574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141c242a2f323339393939393939393939392c29241d160d040000000000000000010b141d252b3033343737373737373737373635322d261f160d03000000000000000001000000000000000000000000000000000000000000030f1b27333f49535b606d727e879298a1a9a69e948e81746e635a50473d3c4854606b70747575767778797a7b7d7e7f8182848587898b8c8e91929997999c9ea1a9a6a9acaeb4b4aa9a8e8174655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000060d161d2429363e464e585f696e7b849197a1a9b3b1b1b1b1afa59d928d80746c665c544b433b332b2219130c04000000000000000000000000000000000000000000000000000009141f29333b42464849494949494949494949494949494949494949494949494949494949464540393027282828282828282828282822211f222e3b4855616e7b8485858585858585858584776a5e5144372b1e110000000000000000000714202d3a4753606d797d7d7d7d7d7d7d7d7d7d7c6f6255483c2f221514212d3a4754606d797b7b7b7b7b7b7b7b7b7b6e6164717e7e7e7e7e7e7e7e7e7e7c6e6255483b2f221508020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b5564707d8a989892908e8c8a8276695c50464646525e696e73737373737373737373737373737373737373737373737373736e6a5f5347515e6a77848f8f8f8f8f8f86796d6053463a2d20130700000000000000000000000815222f3b4855626e7b888b8b8b8b8b8b8b8b877b6e6154483b3a4146474a5153555c6064676d71767a7a6e6c79858e8e8e8e8e8e8e8e887b6e6255555555555555555555555555555554534d453b31251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262e363b3f40464646464646464646464639352f281f160c060400000000000008131d262f363c404144444444444444444443423e3831281f150a00000000000406070e0a0a07040000000000000000000000000000000000000b17222d384149505b636c717d869297a09f948f82786d605c52483f3538444f596063676869696a666d6e6f707173747577797a7c7e80828486888a8d8f9297979a9d9fa3aba9a3988a7d706453493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000040c1218242c343d464e575f696e7b859197a2aaa4a4a4a4a69e938d80746e605b544a423931292119100802000000000000000000000000000000000000000000000000000000030d17212931363a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a38342e271e151c1c1c1c1c1c1c1c1c1c151514212d3a46535f696e787878787878787878787772675b4f43362a1d100000000000000000000613202c3945515d676d707070707070707070706f6a5f53473a2e211513202c3945515d676d6e6e6e6e6e6e6e6e6e6e695f626c717272727272727272726e6a5f53473a2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a4753606d79868a888583817f7d7b6e6154483b36424d575e616666666666666666666666666666666666666666666666666666625f584e434e5a67748082828282828282786c605346392d20130600000000000000000000000714212d3a4754606d7a7f7f7f7f7f7f7f7f7f7f7a6d6054473a3035393a4044464b5153555d6064686e6e686774808181818181818181817a6e615449494949494949494949494949494846423b33291f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e19242e3840474b4d535353535353535353535345403a31281d1312100c07000000030f1a252f3841484c4e515151515151515151504e49423a31261c10050000070c1012131b171614100b050000000000000000000000000000000006111b262f383f44515a626b707c859196959082796d665c504940362d333d474f54565a5b5c5d545c60616263646667696a686e6f71737577797b7d808285878a8d909299999c9f92867a6d6053473a2d22170b00000000000000000000000000000000000000000000000000000000000000000000000107121a222b343c454d575f696f7c859298989898989898948e81786c605c504a423830281f170f07000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2c28231d150c0f0f0f0f0f0f0f0f0f0f0908121e2a36424d575f616b6b6b6b6b6b6b6b6b6b6a6760564b3f33271b0e00000000000000000004101d2935404b555d6064646464646464646464625f584e43372b1f12111d2935414b555d60616161616161616161615f575a6264656565656565656565625f584e43372b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c3945515d67717e7d7b79767472706e695e52463a303b454d5254595959595959595959595959595959595959595959595959595955534e463c4c58646e74757575757575756c665b5044382b1f120600000000000000000000000713202c3945525d686d727272727272727272726d675d5145392c292d2e34383a4045464c5154565e61615e646e747474747474747474746e685e52463c3c3c3c3c3c3c3c3c3c3c3c3c3b3a36312921170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36404a52585a606060606060606060605f514b433a2f24201f1c18120b03000814202b36414a53585b5d5d5d5d5d5d5d5d5d5c5a544c42382d21160a030b12181c1f20272423201c171008000000000000000000000000000000000a141d262d333f485059616a6f7b849090837a6d675d544a3f372e242b353d44484a4e4e4f504a505354555658595b5c565e6163646668666d6e717376787b7d808386898c90928f8276675d5145392c1b110600000000000000000000000000000000000000000000000000000000000000000000000000081019222a333c454d575f6a6f7d868b8b8b8b8b8b8b8b82796d665b50443f382f261e160d050000000000000000000000000000000000000000000000000000000000000000050d141a1e212122222222222222222222222222222222222222222222222222222222201f1c18120b030002020202020202020200020e1a26313b454d53555e5e5e5e5e5e5e5e5e5e5e5b564e44392e23170b000000000000000000010d18242f39434b51535757575757575757575755534e463c31261b0f0d18242f3a434b515455555555555555555555534d50565858585858585858585855534e463c31261a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55616c71706e6c65686563615e574d42362a333b4246484d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847433c3c48535c646769696969696969605b544a3f33281c0f03000000000000000000000004111d2935414c565d6065656565656565656565605d554c4135291d2023282c2e34383a4145474c525454525c6467686868686868686868615e564d41362f2f2f2f2f2f2f2f2f2f2f2f2e2d2a251f170f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a17232f3b47525c63666c6c6c6c6c6c6c6c6c6c6c5d554b4035332d2c28231c150c060b1824303c48535c64676a6a6a6a6a6a6a6a6a69665e54493e3226190d0c151c23282c2d34302f2c28211a1108000000000000000000000000000000020b141b2227363e474f5860696e7a83837a6d685d554b42382e251c232b33383c3d414242433f444647484a4b4c4e4f4c5254565859545c6062646669696e717376797c7f8386897f7265554b4035291d0a000000000000000000000000000000000000000000000000000000000000000000000000000000071018212a333b454e58606b6f7c7e7e7e7e7e7e7e7e796d675c544a3f332d261d150c040000000000000000000000000000000000000000000000000000000000000000000003090e121415161616161616161616161616161616161616161616161616161616161313100c07000000000000000000000000000009141f2a333b42464852525252525252525252514f4b443b32281d12060000000000000000000007121d2831394045474a4a4a4a4a4a4a4a4a4a4847433c342a20150a07131d28313a41454748484848484848484848464245494b4b4b4b4b4b4b4b4b4b4847433c342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3943505a61646361605b53595754524d453b30252930363a3b40404040404040404040404040404040404040404040404040403b3a373136414a53585a5c5c5c5c5c5c5c53504a42382d22170b000000000000000000000000010d1924303a444c52545858585858585858585854514c433a2f241913181c1f23282c2f35393b414647474653585a5b5b5b5b5b5b5b5b5b54524d443b3025222222222222222222222221211e1a140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4b58636e737979797979797979797976675d51453d403a38342e271e180f071a2733404c58646f747777777777777777777670665a4e4235291c0e171e272e34383a413d3c38332c231a0d03000000000000000000000000000000020a1117242d353d464e575f686e7a7a6d685e564c433930261c131921272c2f303435362e34383a3b3c3d3e404142414647494b4d4a515355575a575e616467676d6f73767a7d7a6e6154473b2f24180d01000000000000000000000000000000000000000000000000000000000000000000000000000000060f182129333c464f59606a6f71717171717171716d675d554b42382d221c140b0300000000000000000000000000000000000000000000000000000000000000000000000000020507080909090909090909090909090909090909090909090909090909090907060400000000000000000000000000000000030e18212a31363a3b4545454545454545454544433f39322920160b0000000000000000000000010c161f282f35393a3d3d3d3d3d3d3d3d3d3d3c3a37312a22180e04010c161f282f35393a3b3b3b3b3b3b3b3b3b3b3a36393d3e3f3f3f3f3f3f3f3f3f3b3a37312a22180e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313e4850555757555350494c4a4846423b33291f1f252a2d2e33333333333333333333333333333333333333333333333333332f2e2b262f3841484c4e4f4f4f4f4f4f4f46443f382f261c11060000000000000000000000000008131e28323a4145474c4c4c4c4c4c4c4c4c4c4745413a31281e13080c1012181c1f24292c3036393b3b41484c4e4e4e4e4e4e4e4e4e4e4746413b32291f16161616161616161616161514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a66738086868686868686868686796d6053474a4d4644403930292118121b2834414e5b6774818484848484848484848276695c504336291d18202930394044464e4a48443e352c1f150b010000000000000000000000000000000006121b232c343d454d565e676d6d685e564c433a31271e140a0f161c20222327282923282b2d2e2f303133343036393b3c3e40404446484a4d4d535457555c606366676d706e685e5246392d1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a343d474f5860626565656565656565605d554b43392f261c110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f181f262a2d2e383838383838383838383736332e2820170e04000000000000000000000000040d161d24292c2d313131313131313131312f2e2b26201810060000040d161d24292c2d2e2e2e2e2e2e2e2e2e2e2d2a2d30313232323232323232322f2e2b2620180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2c363e45494a4a4846443f3f3d3b3a3630292117141a1e2021262626262626262626262626262626262626262626262626262622211f1a262f363c4041424242424242423938332d261d140a0000000000000000000000000000020c1620283035393a3f3f3f3f3f3f3f3f3f3f3a39352f281f160c010004070c1013191d20252a2d2e2e363c40414141414141414141413b3936302920170d0909090909090909090908070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d9393939393939393867a6d605354565a53514a423b3329241d16293643505c6976838f909090909090909085786b5e5245382b1a222a323a424a51535a57554f473e31271d1207000000000000000000000000000000000009111a222b333c444c555d60615e564c443a31281f150c02050b101316171b1b1c171c1f20212223252628252a2d2e30312e34383a3b3e404246484a4b515356555d6063615e564c41362a1e0c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222b353d464e5456585858585858585854514b433a30271d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e141a1e21222b2b2b2b2b2b2b2b2b2b2b2a27231d160e050000000000000000000000000000040c12181d20202424242424242424242422211f1b150e0600000000040c13181d202122222222222222222222211e21242525252525252525252522211f1a150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d1a242c33393d3e3d3b3937332d302e2d2a251f170f090e1214151a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a151412141d252b303334363636363636362d2b28221c140b02000000000000000000000000000000040e161e24292c2d323232323232323232322d2c29241e160d04000000000004080d1114191e2021212b3033343535353535353535352e2d2a251f170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d999f9f9f9f9f9f93867a6d6059606366605c544d453e352f281f293643505c6976838f9c9d9d9d9d9d9d9185786b5e5245382b232c343c444c545c60676361594f43392f24180c030000000000000000000000000000000000081019212a323b434c515454524c443a32281f160d030000000407090a0e0f060b10121314151718191b191e2021232523282c2d2f3131363a3b3e404547494b51535654524c443b3025190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232b343d4348494b4b4b4b4b4b4b4b4745413a31281e150b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151f1f1f1f1f1f1f1f1f1f1e1d1b17120b040000000000000000000000000000000001070d101314171717171717171717171515120f0a0400000000000001070d1113141515151515151515151514121517181818181818181818181514120f0a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a22282d3031302e2d2b27222421201e1a140d0500020507080d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0808060b131a1f24272729292929292929201f1c17110a020000000000000000000000000000000000040c13191d20212525252525252525252521201d19130c0400000000000000000104080e111414142024272728282828282828282821201e19140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6acacacaca093867a6d60606b70736d665f57504540393129293643505c6976838f9ca9aaaaaaaa9e9185786b5e5245382227353e464e565e666d74706b61554b4035291f1509000000000000000000000000000000000000070f182029313a4145474746413a322920160d0400000000000000000102000003060708090a0b0d080d1114141618181c1f202224252a2d2e2f34383a3c4045474a4746413b32291e1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071119222b32383b3c3e3e3e3e3e3e3e3e3a39352f281f160c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507081212121212121212121211100e0b060000000000000000000000000000000000000000010406070a0a0a0a0a0a0a0a0a0a090806030000000000000000000001040607080808080808080808080705080a0b0c0c0c0c0c0c0c0c0c08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d2123242422201f1b17171514120e0902000000000000000000000000000000000000000000000000000000000000000000000001080f14181a1b1c1c1c1c1c1c1c13120f0b06000000000000000000000000000000000000000002080d111314191919191919191919191413110d0801000000000000000000000000020507080f14181a1b1b1b1b1b1b1b1b1b1b1414110e080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3b9b9ada093867a6d6067707d80786e69615a514b433b322a3643505c6976838f9ca9b6b7b7ab9e9185786b5e5245382d333f474f585f686d78817d70675d51453c31261a0d04000000000000000000000000000000000000060e171f282f35393a3a3936302920170e05000000000000000000000000000000000000000000000105070809070c10121315171a1e212123292c2d2f35393a3d3b3936302920170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921272c2e2f32323232323232322d2c29241d160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11141717171513120f0b060807050200000000000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e0f0f0f0f0f0f0f060603000000000000000000000000000000000000000000000000010407070c0c0c0c0c0c0c0c0c0c0706040100000000000000000000000000000000000003080b0d0e0e0e0e0e0e0e0e0e0e08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d606d79848d837b716c605d554d443c343643505c6976838f9ca9b6c2b8ab9e9185786b5e52452f383f445159616a6f7a828d84796d60574d42372b1f160c01000000000000000000000000000000000000050d161e24292c2d2e2d2a251e170e0500000000000000000000000000000000000000000000000000000000000004060708090e121415181c1f2024292c2d302e2d2a251e170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f2223252525252525252521201d18130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607070707070707070707070604000003050607070808070604000000000000000407090a080806020000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000005080a0b0a08060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010103030303030303000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d6a73808d9590867e746d675e564e463e3543505c6976838f9ca9b6c2b8ab9e9185786b5e5245384149505b626b707c8490948c8073695f53473e31281d120700000000000000000000000000000000000000040c13191d202121201e19130d05000000000000000000000000000000000000000000000000000000000000000000000000020507070c101314181d20202321201e19140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13151618181818181818181413110d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313120f0b060000000000000000000000000000000000000000000203040505050606060606060606050504040301000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013131414141414141414141313100c0b0f1213141415141313100c07060200050b101416171514120f0903000000000000000000000000000000000000010407070d10060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010202020202020201000000000000000000000000000000000000000407090a0d0d0e0f0f1010100f0f0e0c0a0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d6e7c87929f98928a81796e695f584f473f43505c6976838f9ca9b6c2b8ab9e9185786b5e5245424a535b606d727d8691969f92867b6e615a5043392f24180d030000000000000000000000000000000000000001080d1113141413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070d101314171414110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030709090b0b0b0b0b0b0b0b070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f20201f1b17110a020000000000000000000000000000030608090c0e1011111212121313131313131212121111100e0c0a0706040000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20202020202020202020201f1c18171b1f2021212121201f1c1814120e0910161c20232422211f1a150e0802000000000000000000000000000001080d1113141a1d13120f0b060000000000000000000000000000000000000000000000000000000000000306070b080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0b0c0d0d0e0f0f0f0f0f0f0e0e0d0c0b0a09070705010000000000000000050b10141617191a1b1b1c1c1c1c1c1b1a19171413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d77829099a3a29f938e837b6f6a6159514943505c6976838f9ca9b6c2b8ab9e9185786b5e52434b545c656c737f879298a1a3988f82766c61554b40352920150a00000000000000000000000000000000000000000001040607070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070a08070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b141b22272b2d2d2b27221b140b020003060809080705020000040a0f131516191b1d1d1e1e1f1f1f202020201f1f1f1e1e1d1c1b19171413100c070100000000000000000000000000000000000000000000000000000000000000030c151d23282c2d2d2d2d2d2d2d2d2d2d2d2c282322272b2d2d2e2e2e2d2c2823211e1a151a21282c2f302f2e2b262019140d07010000000000000000000001070d13191d2021262a201f1c17110a020000000000000000000000000000000000000000000000000000060c101213181414110e08050300000000000000000000000000000000000000000000000000000000000000000000000306060708090909090908080706040000000000000000000000000000000000000000000000000000000000000000000000000000000000010507090e121415161819191a1b1b1c1c1c1c1b1b1a1a191817161413110d08070502000000080f161c2022232627282829292929292827262421201d1913110c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a717e8b949fabaea59e9590847c706b625b5149505c6976838f9ca9b6c2b8ab9e9185786b5e524b555c666d77808b9299a2aaaa9f948a7e71675d51453c31261a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060608090a0b0b0c0c0b0a0907070501000000000000000000060b0e10111313131313131313130d0d0b070200000000000000000000000002070a0c0d111111111111111111100f0d0a0500000000000000000000000000000000070e161d262d3337393937332d261d140a0a0f1215151414110e090b0f151b1f21222628292a2b2b2c2c2c2c2c2c2c2c2c2c2b2b2a29282623201f1d18120e08020507080a090704000000000000000000000000000000000000000000000b151e272e34383a3a3a3a3a3a3a3a3a3a3a38342e2d3337393a3a3b3b3a38342e2e2b2620232c33383c3d3b3a37312a251e18120c040000000000000000040c13181e24292c2d33372d2b28221c140b020000000000000000000000000000000000000000000000030a11171c1f202421201e1913120f0b0603000000000000000000000000000000000000000000000000000002060808060b0f12131415151616161615151313100c070c09070603000000000000000000000000000000000000000000000000000000000000000002080d1113141a1e20212324252627282828292928282827262625242221201d191514120e090308111a21272c2f30333434353536363635353432302e2d29241e1c170c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a7a85929ea6b0baafa7a09691867d726d625b51505c6976838f9ca9b6c2b8ab9e9185786b5e4b555d676d78818d929fa3abb4b0a69e9184796d60584e43372b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060708080808080808080808070604000000000000000000000000000000000000000000000000000000000000000000030607080808080808080808080706040100000000000000000000000000000000000000000000060b0f1213151617181818181817161413110d08060300000000040b11171a1d1e2020202020202020201a1917130e0801000000000000000000070e1317191a1e1e1e1e1e1e1e1e1e1d1c1a16100a030000000000000000000000000107101920282f383f444646443f382f261b11151b1f212221201e1a14161b20262b2e2f32353637383838393939393939393938383737363433302d2c29241d19140e121415171614100b030000000000000000000000000000000000000007121d27303940454647474747474747474746454039383f4446474748474645403b3a3731272c353e44484a4847433c363029241d160d090300000000030a0d161d24292f35393a40433938332d261d140a00000000000000000000000000000000000000000000030c151c23282c2d312e2d2a25201f1b17120f0b060000000000000000000000000000000000000000000003090e12141519171c1f20212222232323222221201f1c181b19161312100c060000000000000000000000000000000000000000000000000000000000060b13191d2021252a2d2e3031323334343535353535353534333232302f2e2d292421211e1a140d0f1a232b33383c3d40404142424343434242413f3d3a3935302d282218120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada0938679818e97a2adb8c1b9b1a8a19892877f726d625b515c6976838f9ca9b6c2b8ab9e9185786b5e545d676d79818e939ca4afb5bdb9ada1968d80736a5f53473a2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111314151515151515151515151313100c070000000000000000000000000000000000000000000000000000000000060c101213151515151515151515151413110d0801000000000000000000000000000000000000020a11171c1f202223242425252525242321201e1913120f0b0600050e161d22272a2a2d2d2d2d2d2d2d2d2d2726231f19120a02000000000000010a12191f2326262a2a2a2a2a2a2a2a2a2a2926221c150d0400000000000000000000040c1218222b323a4149505353504941382d221c1f262b2e2f2e2d2a251f21272c32373b3c3f41434444454545464646464646454545444443413f3d3a39352f2a251e1a1e20212423201c160f0b0600000000000000000000000000000000000c18232e39424b515353535353535353535353514b424a4950535454545453514b4847423c33323e474f555755534e46413b352f281f1a140b060000060c151a1f282f353a4145474d5046443f382f261c11060000000000000000000000000000000000000000000a151e262e34383a3e3b3936302d2b27221f1b17110e09030000000000000000000000000000000000040a0f151a1e21222622282b2d2e2f2f2f30302f2f2e2d2c2823282523201f1c17110f0a04000000000000000000000000000000000000000000000000020a11171e24292d2e30363a3b3d3e3f4040414242424242424141403f3e3d3c3a3935302e2d2a251f1916212b353d44484a4c4d4e4e4f4f4f4f4f4e4d4c4a4746413a393328231d150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0bdb0a3978a7d8a939fa4acb1bbbfbab2aaa299928b7f726d625b5c6976838f9ca9b6c2b8ab9e9185786b5e5c666d79828f939ea5aebbc0c3bdb2a89f92877c6e6255483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d202121212121212121212121201f1c18120b0300030303030303030303030303030303030303030303030300030a11171c1f202121212121212121212121201d19130c0400000000000000000000000000000000020b141c22282b2d2e2f303132323231312f2e2d2a25201f1c17110a0e1720272e33363739393939393939393934332f2b241c140a0100000000000a131c242a2f32333737373737373737373635322d261f160d030000000000000000060d161d2429343d444c535b60605b53493f3327282b32373b3c3b3a3630292b32383c4347494c4e50505151525252535353535252525151504f4e4c4a47454039363029252a2d2e302f2c281f1b17110b06000000000000000000000000000004101c2834404b545c60606060606060606060605c545156535b6060616161605c5455534e443f3b444f596163625f58524c454039312a261f17110a0a111720262b313a41454c5254595d53504a42382d22170b000000000000000000000000000000000000000006111c2630383f44464b4746413c3937332d2b27221b1a140f0b060000000000000000000000000000070e151b1f262b2d2e332d3338393a3b3c3c3c3c3c3b3b3a38342e34322f2d2c28231c1b160d0801000000000000000000000000000000000000000000020b141c22283035393a3f424648494b4c4c4d4e4e4f4f4f4f4e4e4d4d4c4b4a494746413f3b3a363129241e27333d474f5456595a5b5b5c5c5c5c5c5b5a595754524c49453e342e271e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0beb2a5988b7f868e939aa0a7aeb5bdbcb4aba39f918b7f726d625a6976838f9ca9b6c2b8ab9e9185786b5c666d78828f949ea6afb7c0bfbbb1aba39f978f8376695c504336291d1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2d2e2e2e2e2e2e2e2e2e2e2d2c28231d150c101010101010101010101010101010101010101010101010100c151c23282c2d2e2e2e2e2e2e2e2e2e2e2d2c29241e160d040000000000000000000000000000000a141d262d3338393b3c3d3e3e3f3f3e3d3c3a3936302d2b28221c140b202932393f4344464646464646464646403f3b362e261c120c0c0c0c0c0c121c262e353b3f4044444444444444444443423e3831281f150a00000000000000070f181f282f353f464e565d656c6c655b5044372d33383c4347484746423b33353d44484e5355595b5c5d5e5e5f5f5f5f5f5f5f5f5f5f5e5e5d5c5b595653514b46413b3230363a3b3d3c38332b27221b17110b0600000000000000000000000006131f2c3845515c666d6d6d6d6d6d6d6d6d6d6d665c5b6265656c6d6d6e6e6d6667625f575049414c56616b706e6a615e56514b433e363128231c14151c232831373e434b51565d60666a605b544a3f33281d1207000000000000000000000000000000000000000c17232e38424a50535754524c4946443f3937332d2a261f1c17110c07000000000000000000000009101920262b31373a3b3f423f444647484849494949484846454043413f3c3a38342e2c272119130c0400000000000000000000000000000000000000020b141d262d333a4146474b4d5254565758595a5b5b5b5c5c5b5b5b5a595958575554524c4c4846423b352f282c38444f59606366676768686969696868676563615d56555045403930271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada09386797b818891959fa3abb1b9bdb5afa39b918b7f726c626976838f9ca9b6c2b8ab9e9185786b656d78818e949ea6b0b8c1bdb5aea7a099928d857e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a3b3b3b3b3b3b3b3b3b3b3a38342e271e151c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c151e262e34383a3b3b3b3b3b3b3b3b3b3b3a39352f281f160c010000000000000000000000000006111c262f383f444648494a4b4b4b4b4b4a494746413d3938332d261d1727323b444a4f515353535353535353534d4c4740382e241919191919191919242e3840474b4d515151515151515151504e4a433a31261c100500000000030b1218212a31394045515860686d79776c6053463c383f44464e535554524d453b3e474f54585f626568696a6b6b6b6c6c6c6c6c6c6c6c6b6b6a6a69676663605d55524c443c3b4246484a48443e37332d27221b17110a02000000000000000000000713202d3a4653606d797a7a7a7a7a7a7a7a7a796d60626d7278797a7a7b7a7977746e6a605b5349525e68707d7b746e68605d555046423b342e261e1e262e343c434750555d60686d73766c665b5044392e23180c01000000000000000000000000000000000003101c28343f4a545c6064615e565653504946443f3836312b28221c18120b06000000000000000009121b222a32373c4247484c4f4a505354555556565655555453514b504e4c4946443f38383229241e160d040000000000000000000000000000000000000a141d262f383f444c525458575e6163646566676768686868686868676665656362615d565954534d45413a322f3c4854606b70737374757576767675757472706d6864615a514b43392e23180c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6e747d838c9299a0a7aebabebbada39f93887f716c6976838f9ca9b6c2b8ab9e9185786b6c77818e939ea6b0b8c0b9b1aba39f9590878079716c6155493d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313a414547484848484848484848484645403930272929292929292929292929292929292929292929292929292929292630383f4446484848484848484848484745413a31281e1308000000000000000000000000000b17222d38424a50535556575758585858575654524c4a46443f382f29202e39444d555b5d6060606060606060605a58524a40362b25252525252525252a35404a5257595d5d5d5d5d5d5d5d5d5d5a544c43382d22160a000000030c151d2328333c434b515b626a6f7a827e7064584e43454a5053585f62615e574d4247505960636a6f72747677777878787979797979797878787777767472706d67615e564e46454d525457554f46443f38332d28221c140b080000000000000000000d1a2633404d5966738086868686868686868680746765727f8586878787878684817b736c655b5059616e7a8586817a736d67615a534d443f38302a2930383f444e535a61676d737a8083786c60554b4034281d1307000000000000000000000000000000000006121f2c3844505c666d716e686662605b5353504946423b38332d28231d17110a02000000000008111b242d343c43474d5355595b545b60616262626363626261605c555c5b585653504a48433d352f281f160d030000000000000000000000000000000006111b262f38424a50565d616569696e7071727373747575757575757474737271706f6d686965615e57524c443a333f4a5463707d7f808181828282828281807f7d7a76716c605c554b40342821160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d6b6f797f8790959da4adb3bbbbafa49a93887e716a76838f9ca9b6c2b8ab9e9185786d74808d939da5afb8bfbaafa7a099928c837c736d67615a5045392d2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a434b51545454545454545454545453514b42392e3636363636363636363636363636363636363636363636363636362e38424a50535454545454545454545454514c433a2f24190d010000000000000000000000030f1c28333f4a545b6061626364656565646462615e565753504a423b3229333f4a555f676a6c6c6c6c6c6c6c6c6c67645c52473b323232323232323232323b47525c63666a6a6a6a6a6a6a6a6a69665e544a3e32261a0d0000000b151e272e343e454e555d606d727c848f82766a60544b51545b60646a6f6e695e5246505a616b6f777c7f81838384848585858686868685858584848382817f7d79746e685f584e4d575e61636159535049443f38332d261d1a120800000000000000000d1a2633404d596673808c939393939393938d8174676875828f929994949496918d877f776c6057616b75818e928e868079716c615f57504a423c33333b424a50585f626c717a7f858c8b7e71675c51453a2f24180d02000000000000000000000000000000000713202d3a4653606d787e7a77736f6c6563605b53534d46443f38342e27221b140b06000000040d1a232d363f464e54575f6166686a666c6d6e6f6f6f6f6f6e6e6d676b69676562605c54544e45413a31281f150b010000000000000000000000000000000b17222d38414a545b60686d7275787b7c7e7f7f80818182828282818180807f7e7d7c7a7875726e69605d564c443a44505b6676838c8d8e8e8f8f8f8f8f8e8d8c8a86837e756d675c51453d32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d60666d737c838d929fa2a9b1bab6aca49a92867c6f76838f9ca9b6c2b8ab9e918578727f8b929da5afb7bcb4aea59d9591877f786f6a605d5550483e34281d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b555d6061616161616161616161605c544b4043434343434343434343434343434343434343434343434343434343433f4a545c6061616161616161616161605d554c4135291d1104000000000000000000000006121f2b3844505b666c6e6f707171727271706f6d686864605b544c443b3036434f5b677177797979797979797979736e64584c3f3f3f3f3f3f3f3f3f3f3f3f4b57636e737777777777777777777670665a4e4235291c0f000007121d273039404550575f676d757f879194887c6f6256555d60666c70767b7b6e61584e56616c707d83888c8e8f909191929292929292929292929191908f8e8c8986817a6e6a5f54525e696e706b64605b535049443f382f2c241a1006000000000000000d1a2633404d596673808c99a0a0a0a0a09a8d817467687884919ea3a0a1a8a09e99938c7f73695f67707d89939f98928c847e756e69605c544d453f3e454d545c606a6f767e858c92979184796d60554b4135291e130800000000000000000000000000000007131f2c38444f5964717e8a8783807c78746f6c65615f5753504a454039332d261d17110a02010c161f2c353f4850585f62696e72757778797a7b7b7c7c7c7c7b7b7979777674726f6d66626058514c433a31271d12070000000000000000000000000000030f1b27333f49535b666c727a7e828587898a8b8c8d8e8e8e8f8f8e8e8e8d8c8c8b8a888785827f7b746d685e564c414653606c7985929a9a9b9b9c9c9c9b9b9a989993908a81796d60594f43382c1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0b9ada093867a6d605c606a6f79808a9297a0a8b0b8b6aca39891857b76838f9ca9b6c2b8ab9e9185787d87929fa4aeb7bbb2aaa29f938e837c736d666058514b433e362c22170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d6e6e6e6e6e6e6e6e6e6e6d665c514f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f505c666d6e6e6e6e6e6e6e6e6e6e6d675d5145392c20130600000000000000000000000613202d394653606c787b7c7d7e7e7e7e7e7d7c7a7875706c665e564c42382e44515d6a77838686868686868686868073675a4d4c4c4c4c4c4c4c4c4c4c4c4c4d596673808484848484848484848276695d5043362a1d1000000c18232e39424b515a616a6e79818b92999b8e8175685f61676d72787d828881756a5f535d68707e879095989b9c9d9e9e9e9f9f9f9f9f9f9f9f9e9e9d9d9c9a9998928e857c6e665c54616e7b7d77706c65605b53504a423e362c22170c000000000000000d1a2633404d596673808c99a6adadada79a8d8174676d7a8796a1acb5aeb2acaba49f93877b6e616d7984919ea5a29f96918a827b726d665f5751454450575f666d737c828b92979fa1968b7f72675d51453a3025190d0300000000000000000000000000020c15222f3b4854606b76839093908d8984807c78736e6964605b54514b443f382f28231c140c07131d28313e47505a626a6f767b7f8284858687888889898988888786858483817f7c79756f6a605d554c43392f24180c030000000000000000000000000005121f2b3744505b656c787f868b8f9297969798999a9a9b9b9b9b9b9b9b9a999898969597928f8c87817a6d685e52464855626e7b8898a2a7a8a8a9a9a9a8a8a7aba49f9c938e81756b6054483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b1a2733404d5a6673808d99a6b3c0b9ada093867a6d6053585f676d747e8591959fa6afb7b4aaa19790837a828f9ca9b6c2b8ab9e91857b859299a3afb6b9b1a9a198928a81796f6a605c544e45413a312c241a10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d797b7b7b7b7b7b7b7b7b7b786d605c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c606d787b7b7b7b7b7b7b7b7b7b7a6d6054473a2d2114070000000000000000000000091623303c4956636f7c88898a8a8b8b8b8b8a898785827d786e685e544a3f3444515d6a778490939393939393938d8073675a58585858585858585858585858585b6874818e909090909090909085786b5f5245382c1f120004101c2834404b545c606c717c838e939fa39f92867a6d696e747a7f848a8f93877c6f6258606d7a859299a0a7a7a9aaaaabababacacacacacacabababaaaaa9a7aaa29f979183786d605c6673808a837d78716c65605b5450483e34281d11050000000000000d1a2633404d596673808c99a6b3b9b4a79a8d817467707d8996a8b2b7bcbdb9b5afa4998d80746a73808d96a0acaea8a19e948f867f786e69625b52505a61696e78808790949ea1a9a89e92857a6d60564c41362a1f14090000000000000000000000000008131e2b37424d57636f7c89959f9d9996918d8984807b76706c66605c545049413c342e261e160e18242f3a43505a626c717c82888c8e9092939995959596969595949892918f8e8b8985817c756d675d554b4035291f140900000000000000000000000004111d2935414c56606c77818c92989c9fa2a9a4a5a6a6a7a8a8a8a8a8a8a7a7a6a5a4a3a9a19e9c99928e837a6d61584e4b5764717e8a97aab4b4b5b5b5b5b5b4b3b5afaca59e93897c6f6356493c3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b2733404d5a6673808d99a6b3c0b9ada093867a6d60534e555c606c707b838f949ea5aeb6b2a99f958e81828f9ca9b6c2b8ab9f9285849197a2abb5b8b0a7a09791867e746d675f58504a423c352f281f1a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e878787878787878787877c6f69696969696969696969696969696969696969696969696969696969696969696969696e7b878787878787878787877f7265594c3f3226190c00000000000000000000000c1925323f4c5865727f8b95969798989897979597918e8a837a6e665c50443844515d6a7784909d9f9f9f9f9f9a8d807367656565656565656565656565656565656874818e9b9d9d9d9d9d9d9285786b5f5245382c1f120006131f2c3845515c666d747e8691959ea5aea3988c7f72727b80858b91969c9a8f82766a6065727f8b97a2abb1b4b6b6b7b7b8b8b7b7b7b7b7b7b7b7b7b7b6b5b4b4aea9a0958a7d7164606d798491908a837d78716c66615a5045392d2114080000000000000d1a2633404d596673808c99a6b3bfb4a79a8d817467727f8c99a5a9abb0b8c2c0b5ab9d9084776f7c87929fa8b2bab2ada69e98928c837b726d605d5b606c717b838c92999fa6adb3ada1978c8073685e52463b31261a0e020000000000000000000000010d1924303a46535f6975828f9ba7aaa9a19e9a96918c87827d78716d66605b534e443f38302820171d2935404b55616c717e878f94999b9d9e9fa4aba2a2a2a2a2a1aaa29f9e9c9a9898928e8981796d675d51453b31251a0e0200000000000000000000000713202c3945525d68727f8c939fa2aaabadb3b1b2b2b3b4b4b5b5b5b5b4b4b3b3b2b1b0b3adababa39f958f82756a605449536773808d9aa6b3c0c2c2c2c2c2c1c0c0bbb9afa59b8e817468564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272b33404d5a6673808d99a6b3c0b9ada093867a6d6053474b515a61696e7a828e939da4aeb6b1a79e938e86929facb9c5baada297929195a0a9b3b7afa69e9590857c716c605c554e443f383029241d160d0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b9494949494949494887c767676767676767676767676767676767676767676767676767676767676767676767676767b8894949494949494948c7f7265594c3f3226190c0000000000000000000004101d2935404b556874818e9ba3a4a4a5a5a4a3a9a19e9b949083786d6053463a44515d6a7784909daaacacaca69a8d807372727272727272727272727272727272727274818e9ba7aaaaaaaa9e9285786b5f5245382c1f12000713202d3a4653606d79808a9298a0a7afb4aa9d9184777f878d92989ea0a89e94897c6f626975828f9ca9b3bdc1c0b9b5b4aeababaaaaaaaaaaaaabacafb5b8bcbfbab1a79b8e82756864717d8a979d95908a837e78716c6155493d3023170a0000000000000d1a2633404d596673808c99a6b3bfb4a79a8d81746875828e99999c9fa6b0bac4b9ac9f93867977839099a3aebac4bdb9b0aaa39f9590867f756d68656c737e8590959fa3abb0b9beb3a99f92867a6d61574d42362a1e1205000000000000000000000004111d2935414c56616e7b87939facb7b2adaba8a19e9a938f8a847e79716c655f58504a423a322921202c3945515d67707e8a92999fa6a8aaabacafb5aeafafafafaeb4aeacaaa9a7aaa29f9b938e83796d60574d42362a1e120500000000000000000000000714212d3a4754606d7a85929fa5aeb4b8babebdbebfc0c1c1c1c2c2c1c1c1c0bfbfbebdbeb9b8b5afa79e93887c6f6255505b6576838f9ca9b6c1c1c1c2c5c6c9cfccc7c1b7ab9e918478685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333739404d5a6673808d99a6b3c0b9ada093867a6d605347404550575f686d78818d929ca4aeb6afa59e999299a3aebbc7beb3a9a29f9da0a7b1b7afa59e948f837b6f6a615a514b433c342e29241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a1a1a1a1a1a19c90838282828282828282828282828282828282828282828282828282828282828282828282828282909ca1a1a1a1a1a1988c7f7265594c3f3226190c0000000000000000000006131f2c3945515d677784909daab1b1b1b1b1b0b3adaba69f958b7e7165544b4044515d6a7784909daab7b9b6a99c8f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f83909da9b6b7b7ab9e9285786b5f5245382c1f12000f1b2835424e5b6875818d929fa2aab1b9b8aca096897c7b86929fa2aaacb0a69b8f82756a657884919eabb7c4c0b6aea9aaa29f9e9e9d9d9d9d9e9e9fa3ababb1b9c3b8ab9e918578686a7683909ca7a09d95908a837e7164574b3e3124180b0000000000000d1a2633404d596673808c99a6b3bfb4a79a8d81746777848e8c8c90949fa8b2bdbbafa499877a7e8b949fa9acb2b9bec1bcb4aea79f98928b817a6f6d77808a92989fa7afb5bdc2beb9aea2988d8074695f53463a2d21140700000000000000000000000713202c3945525d6874808d99a4afbbbdb9b8b2acaca49f9c96918b847e786f6a605c544c443b3329202d3a4753606d7985929ea3abb0b5b7b8b9bbc0bbbbbabababbbfbab8b7b6b4b4aeaba59e958d8074695e53463a2d21140700000000000000000000000b1825323e4b5865717e8b98a2aebabfc5c6c7c3c2beb9b8b7b6b6b5b5b6b6b7b8b9bbc0c7c6c5c0bbafa59a8d8074675553606c7985929fabb5b5b4b4b5b8b9bec5cdd2c5b9ada196877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f4446444d5a6673808d99a6b3c0b9ada093867a6d6053474343454d565d666d77808d929ca4aeb7afaba39fa3abb5bfcbc5bbb3adabaaacb1b7afa59e938e82796e69605850454043433a39352f281f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5aeaeaeaeab9f94908f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90949fabaeaeaeaea5988c7f7265594c3f3226190c000000000000000000000714202d3a4753606d7a86929facb9bebebebebdbeb9b8b0a79c908376665c514544515d6a7784909daab7c3b7ab9f948f8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b90959fabb8c3b8ab9e9285786b5f5245382c1f12000b1825313e4b5864717e8b96a1adb4bcc3bdb2a89a8d8074808c96a1acb9b9ac9f93877c6f6c7986929facb9c5bdaea49d9a9892919191919191919192999d9fa7b1bcb9ada197877a6d6f7c88949fabaca7a09d958e8175685b4e4235281b0f0000000000000d1a2633404d596673808c99a6b3bfb4a79a8d81746d798381807f829096a0acb9c0b5ab94887b848c91979ea1a8adb3babebfbab1aaa29f938f847c7a818d929fa2aab1bbc0bdb9b2ada9a29f92867b6e6155483b2e2215080000000000000000000004101c2834404a54606d7a86929fabb5c0c5c5c4bdb9b6afaca8a09e96918b837c736d665d564d453b3228333f4a5465717e8b97a1adb5bdc1c3bfbbb9b3b0aeaeadadaeafb1b4b9bbc0bebab8afa79f92867b6e6154483b2e2115080000000000000000000003101c28343f4a546875828e9baab3becacac2bbb7b5b3adabaaaaa9a9a8a9aaaaabacafb5b6bac1cbc1b7aa9d908477675d55626e7b8898a2a9a8a8a7a7a8abadb3bbc1c9c9bdb2a895887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d384149505350495a6673808d99a6b3c0b9ada093867a6d60534f505050504c545c656c73808d929da5afb7b5aeacaeb5bdc6d1cdc5bebab8b7b8b7afa59e938e81786d675e574e50505050504745413a31281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bababcb0a69f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa6b0bbbabab2a5988c7f7265594c3f3226190c00000000000000000000091623303c4956636f7c8999a3afbbbcc0c2c5cbc9c6c2b9ac9f9286796d60534644515d6a7784909daab7c3bbb0a69f9c98989898989898989898989898989898989898989d9fa7b1bcc5b8ab9e9285786b5f5245382c1f12000713202d3a4653606d7984919eaab4bfcac3b8ab9e9285797984919ea7b1bbafa49a8e81756d7a8699a3afbbc0b5ab9d928d87858484848484848484868990959faab4beb2a995887c6f74818e9ba6b0b8b1aa9f92867b6e6155483b2e2215080000000000000d1a2633404d596673808c99a6b3bfb4a79a8d8174676d767473727884919eaab7baaea194877b7a7f858b91969ea1a9aeb3bbc0bcb4aea59e969186848e939ca4aeb3bcbfbab2ada9a19e97928d887f7366594c403326190d0000000000000000000006121f2c3844515c66727f8c98a2aeb5b7b8bcc2c5c7c0bbb9b2aca8a19e95908780786d685e574d443b303844505b6676828f9ca9b3bec7c6bdb5aeaca6a3a2a1a0a0a1a2a4a7acafb5bdc7c1bbafa3998c7f7266594c3f3025190d0100000000000000000006121f2b3844505c667784919eaab7c4ccc2b8b0aba9a9a19e9e9d9c9c9c9c9d9d9e9fa3aba9afb7c1c6b9ac9f93867a6d605764717e8a979d9c9b9b9b9b9c9ea1a9afb7c1cbbcb0a396897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b605b535a6673808d99a6b3c0b9ada093867a6d60535c5d5d5d5d5d5d535b606e73808d929da5afbbbbb9bbbfc6cfd8d7d0cac6c5c4bbafa59e938e81786d665d555d5d5d5d5d5d5d54524c433a2f24190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1becdc2b9b0aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9abb0b8c2cdbfb2a5988c7f7265594c3f3226190c000000000000000000000c1925323f4c5865727f8b98abb5afafb4b5b9c0c8d2c7baaea398887b6e62554844515d6a7784909daab7c3c2b8b0aba9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a9abb1b9c2c5b8ab9e9285786b5f5245382c1f120006121f2c3844515c66727f8c98a2aebac6c6b9ada197897d717e8a95a0acb8b6ac9f92867b6e7a8793a0b5c0bbafa4998d807b787877777777777778797d839098a3aebaafa396897c707b86929facb9baaea3988d8174695f53463a2d2114070000000000000d1a2633404d596673808c99a6b3bfb4a79a8d817467646a67666674818e9aa7b4baaea194877b6e72797e848b91979fa2aaafb6bebfbaafa8a0989291959ea5aebabebcb4aea9a19e97918c85807c736d63574b3e3225180c000000000000000000000713202d3a4653606d7984919d9fa3abaaacb1b5b9bbc0c7c4bdb9b2aca79f99928c827a6e695e564c4239394653606c7985929fabb8c5cbbfb5aba39f9a96959494949496979b9fa3abb5bdc7c0b5ab9c8f837669564c41362a1e11050000000000000000000713202d3a4653606d7986929facb9c5c3bab0a69f9c9697919190908f8f8f90919192999b9da5afb8c1bbafa499887c6f625a6773808d91908f8f8e8e8e8f92979ea5afbac6bdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c65625a6673808d99a6b3c0b9ada093867a6d6065696a6a6a6a6a6a6a6a6a6a6e74808e939eaab6c3c5c7cbd1d8e1e1dbd6d3d2c3b6aa9e938e81786d666a6a6a6a6a6a6a6a6a6a605d564c4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec7bdb3aba5a3a1a1a1a1a1a1a1a1a1a1a1a1a1a9abb0b5b5b5b5b5b2acaaa1a1a1a1a1a1a1a1a1a1a1a1a1a2a4aab3bcc7bfb2a5988c7f7265594c3f3226190c00000000000000000004101d2935404b556874818e9ba3a3a2a3a7a9aeb6c0cbcbbfb4aa96897c7063564944515d6a7784909daab7c3cac2bbb7b6b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b6b8bcc2cbc5b8ab9e9285786b5f5245382c1f120004101c2834404a54606d7a85929facb8c2c9beb3a99a8d80747884919da7b1bbaea3998c80737a8793a0adbab9ac9f93867a6e696b6b6c717a6f6a666d707a86929facb9b0a3978a7d73808d99a3aebbb3aa9f92867b6e61574d42362a1e12050000000000000d1a2633404d596673808c99a6b3bfb4a79a8d817471717171717173808d99a6b3baaea194877b6e676d72797f858c92989fa4acb1bbbfbab2aaa29f9da0a7afb7bfbab0aaa39f96918b847f79746f6a635b51463b2f22160a000000000000000000000b1824313e4b5764717e8a8d9092999a9da0a7a9acafb5b8bcc3c4bdb9b1aba39f948f837b6e685e544a403b4854616e7b8798a2aebac6c7bbaea399928d8a8887878788898b8e9299a3abb5c0c5b8ac9f928579685e5246392d2014070000000000000000000814212e3b4754616e7a8799a3afbbc7bdb2a89f948f89868584838382828383848586898e939da6b0bbc0b5ab978a7d70645c697682868483828282818182858e939eaab6c5bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78716c626673808d99a6b3c0b9ada093867a6d60707576767676767676767676767678828f9ba8b5c2ced3d7dce3eaece6e2dbcec2b5a89b8f8279767676767676767676767676766d685d5245392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec1b6aba19996949494949494949494949494949c9fa6b0bbc2bdb2a8a09e949494949494949494949494949599a1aab5c1bfb2a5988c7f7265594c3f3226190c00000000000000000006131f2c3945515d6777849097969695969a9da4aeb9c2cdbdb0a3968a7d7063574a44515d6a7784909daab7c3d0ccc7c3c2bebebebebebebebebebebebebebebebebebebebec3c4c8cdd1c5b8ab9e9285786b5f5245382c1f1200000c18232e3945525d6874818d9aa7b1bcc7c4b7ab9e918478717e8a95a0acb8b5ab9e9285797a8793a0adbab8ab9f928578675e5e69717e847c726d606876838f9ca9b6b1a4988b7e7985929fabb5baaea2988d8073695e52453b31261a0e020000000000000d1a2633404d596673808c99a6b3bfb5a99c8f827e7e7e7e7e7e7e7e818f9ba8b5baaea194877b6e6160666d72797f858e939aa0a7aeb5bdbcb4aeacaaacb1b9bcb4aea69e98928c847e79726d67625f58514940352a1e1206000000000000000000000714212e3a4754616d7a7d808386898d9095989c9fa3abacb1b7bcc2c3bdb5afa69f9591847a6e665c51443c4855626f7b8895aab3becabfb4ab9f9287807d7b7b7a7a7b7c7e81879299a3afbbc6baaea298877a6e6154473b2e2114080000000000000000000815222f3b4855626e7b8895abb5c0c5b9aca0968f827d7a78777776767576777778797c818e949eaab7beb1a4988b7e716558606d7979787676757574747579818e9baab4bebdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d7e716a6673808d99a6b3c0b9ada093867a6d6975828383838383838383838383838383909daab7c3d0dde3e7edf4f7f2e9ddd0c3b6aa9d908383838383838383838383838383837a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebeb1a5998f89878787878787878787878787878f949fabb7c3b9aca0969187878787878787878787878787898e99a4b1bdbfb2a5988c7f7265594c3f3226190c0000000000000000000714202d3a4753606d7a868c8a8a8989898d929da6b0bcc7bdb0a4978a7d7164574a44515d6a7784909daab7c3d0ccc7c3c2bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdc3c4c7cdd1c5b8ab9e9285786b5f5245382c1f12000007121c2935414c56626e7b88959fabb7c6c5b9aca196887b6f7883909da9b2b9ada1978b7e7a8793a0adbab8ab9e9285786b5c666e7b8691877f756d6774818e9ba7b4b1a5988b7f7f8c97a2adbdb3a99f92857a6d61574d42332a1f1409000000000000000d1a2633404d596673808c99a6b3bfb7ab9f948f8a8a8a8a8a8a8a8a8f939eaab6baaea194877b6e61545c60676d727a818790959fa3abb2babfbab8b7b8bcbfb4aaa29f948f868079726d67605d55534e4640372e23190d02000000000000000000000713202d3946525e686d7073767a7d8084878b8f92999da0a7abb0b9bec5c0bbb0a8a0969082786d60584e434956636f7c8996a2afbcc7baaea3998b7e73706f6e6d6d6e6f71747d87929facb9c5bfb4aa95887c6f6255493c2f2216090000000000000000000915222f3c4855626f7b8895a2aebbc4b7aa9e918478706d676b6a696969696a6a676d6f75828f9ca8b5bfb2a5998c7f7266595d676d676b6a6968686868666e7b8898a2aebabdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d57677380867c6e6773808d99a6b3c0b9ada093867a6d6b7885909090909090909090909090909095a0acb8c4d1deeaf3f8fffff7eaddd1c4b8aba0959090909090909090909090909090877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebcafa396897d7a7a7a7a7a7a7a7a7a7a7a7a7a828f9ca9b5c2b7aa9e91847a7a7a7a7a7a7a7a7a7a7a7a7a7c8995a2afbcbfb2a5988c7f7265594c3f3226190c0000000000000000000815222e3b4855616e7b817f7e7d7c7c7d808d949fabb7c4bdb0a4978a7d7164574a44515d6a7784909daab7c3cac1bbb7b5b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b6b7bbc2cac5b8ab9e9285786b5f5245382c1f120000000d19242f3a47535f6a7683909daab4bfc9bdb2a8988b7f72717e8a96a1adb9b3a99c90837a8793a0adbab8ab9e9285786b606d78829098928b817a6f74808d9aa7acaaa6998c8085919ea9b3b9ada1978c7f73685e52453b3021180e03000000000000000d1a2633404d596673808c99a6b3bfbbb0a69f9c97979797979797979b9ea5afbbbaaea194877b6e615451555d60686e747c838c9299a1a8b2bdc7c5c4c5c6baaea298928b827b736d67605c55514b47433c342e251c1207000000000000000000000005111d2a36414c565e616467676d7073777b7e82868b90959c9fa6adb3bbc3c2bab1a89f948d80736a5f53474956636f7c8996a2afbcc5b9ac9f9286796d63626161616163646b74818e9ba7b4c1bcb0a396897d7063564a3d3023170a0000000000000000000916222f3c4955626f7c8895a2afbbc0b3a69a8d807366605d555d5d5c5c5c5d555c6064707d8a97a3b0bdb3a69a8d8073675a555d605d555d5c5c5b5b545f697885929fabb8bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6977849083796d73808d99a6b3c0b9ada093867a6d6b7885919d9d9d9d9d9d9d9d9d9d9d9d9da0a7b1bcc8d4e0edf0f5fbf7f2ece0d4c8bcb1a7a09d9d9d9d9d9d9d9d9d9d9d9d9d94877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebbafa295887c6f6e6e6e6e6e6e6e6e6e6e6e75828f9ca8b5c2b7aa9d9184776e6e6e6e6e6e6e6e6e6e6e6e7b8894a1aebbbfb2a5988c7f7265594c3f3226190c0000000000000000000714212d3a46535f696e74727170706f707683909ca9b6c3bdb0a4978a7d7164574a44515d6a7784909daab7c3c1b8b0aaa8a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a9abb0b8c2c5b8ab9e9285786b5f5245382c1f1200000008131e2b37434e5865717e8b98a3aebac7c2b5a89b8f82756d7984919eaab4b7ab9f94897c8995a2afbcb8ab9e9285786b6b73808c949f9f938e847c73808d99a8a09e9b9792859197a1adbcb2a89e92857a6d60564c4133291f0f0600000000000000000d1a2633404d596673808c99a6b3bfc2b8b0aba9a4a4a4a4a4a4a4a4a8aaafb7c1baaea194877b6e6154484b51565e616a6f787f879196a1acb9c5d2d0d2c5b8ac9f92867f766e69605d55514b45403937312a221c130a000000000000000000000000010d1925303a444c525457555d606367696e72767a7f838a90949ea1a9b1b9c3c3bab0a69f92877c6f62584e4956636f7c8996a2afbcc4b7ab9e918478675c5554545455565965717e8b98a4b1bebdb0a4978a7d7164574a3e3124170b0000000000000000000916222f3c4955626f7c8895a2afbbbeb2a5988b7f726554514b50504f4f50504b5155616e7b8894aab4bfb4a79a8e8174675b4b5153514b504f4f4f4e4d576b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b88958e817473808d99a6b3c0b9ada093867a6d6b7885919ea9a9a9a9a9a9a9a9a9a9a9aaacb1b9c3cdd9dee0e4eaf1ece6e2dfd9cdc3b9b1abaaa9a9a9a9a9a9a9a9a9a9a9a094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebbafa295887c73737373737373737373737375828f9ca8b5c2b7aa9d9184777373737373737373737373737b8894a1aebbbfb2a5988c7f7265594c3f3226190c00000000000000000005121e2a36424d575f616766646363626774808d9aa7b3c0bdb0a4978a7d7164574a44515d6a7784909daab7c3bbb0a69e9c97979797979797979797979797979797979797979c9fa6b0bbc5b8ab9e9285786b5f5245382c1f12000000010f1a26313c4754606d7a86929facb8c5c5b8ab9f9285796c737f8c98a3aeb7b0a69b8e818e9ba7b4c0b8ab9e92857868707d87929fa6a59e9691867e7f8c999796918e8b8c9297a1a9b3b9aca1968b7f72675d51443a3020170d0000000000000000000d1a2633404d596673808c99a6b3bfc0b6aca49f9f9f9f9f9f9f9f9f9fa4acb6c0baaea194877b6e61544840454c525860666d737c84919eabb7c4d1d2cdc0b3a79a8d80746d615e57514b454039352f2b262018100a010000000000000000000000000008131e28323a4146474a4b515356575e6165686d72777d838b9297a0a7b1bac4c2bbafa3998f82756a5f534f56636f7c8996a2afbcc4b7aa9d9184776a554b4f4f4f4f4f5663707d8996a3b0bcbeb1a5988b7e7265584b3f3225180c0000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e7165584b4c4d4e4f4f4f4f4f4d53606d7a8698a2aeb6b3a89b8e8275685b4f454745404444444445515e6b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5665727f8c98938a7e73808d99a6b3c0b9ada093867a6d6b7885919eabb6b6b6b6b6b6b6b6b6b6b7b8bcc3cbcad0d1d4d9dfe7e1dbd6d3d2cacbc3bcb8b6b6b6b6b6b6b6b6b6b6b6ada094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec1b4a79a8e818080808080808080808080808084919eaab7c4b8ab9e928580808080808080808080808080808d9aa7b4c0bfb2a5988c7f7265594c3f3226190c000000000000000000020e1a26313b454d53555a59575756596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c3b7aa9e948f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a90949fabb7c5b8ab9e9285786b5f5245382c1f12000000000915202c3945515d6775828f9babb5c0c6baada297887b6e6d7a86929facaaa8a09e9285929facb4b4b4ab9e9285786d7a849199a3afafa8a098928b828e8e8b8784817e808c99a9b3bbb1a79e9184796d60554b4132281e0e050000000000000000000d1a2633404d596673808c99a6b3bfbbafa49a939292929292929292939aa4afbbbaaea194877b6e6154483b3b41464e545c666e7b86929facb8c5c6c5c6c6b9ac9f93887d70695f554b4039342e29241d1a150e06000000000000000000000000000000020c1620283036393a3d4045474a4d5254565e61656b70767e859095a0a8b2bdc9c0b5ab9e94887c6f625b5b5b636f7c8996a2afbcc4b7aa9d9184776a5e5b5b5b5b5b5b5b63707c8996a3afc0bbb2a5998c7f7266594c3f3326190c0000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e71655855595a5b5c5c5c5c5b5a585d677985929faca9a7a99c8f8276695c51515151515151515149515e6b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d6876838f9c9f92857b808d99a6b3c0b9ada093867a6d6b7885919eabb8bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdc3c5c8ced5ddd7d0cac6c5bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbaada094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec2b5a99d938e8c8c8c8c8c8c8c8c8c8c8c8c8c9196a0acb9c5b9ada197928c8c8c8c8c8c8c8c8c8c8c8c8c8d929da9b5c2bfb2a5988c7f7265594c3f3226190c0000000000000000000009141f29333b4246484e4c4b4a4d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c2b5a89c8f827e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e82909ca9b6c3b8ab9e9285786b5f5245382c1f120000000004111d2935414b5564717e8a99a3afbbc7beb3a9978a7e716875818e9ba09d9996918d898f99a7a7a7a7a79e92857877828f96a1abb5b1a79e938d807e84817e7b77747984919daab3b9aca0958b7e71675c51433a2f20160c000000000000000000000d1a2633404d596673808c99a6b3bfb9ac9f9388868686868686868688939facb9baaea194877b6e6154483b3038414e58606d78839098a2aebabfbab8babfbbafa49a92857b6e675d51453c2f261d18120f0a030000000000000000000000000000000000050e161e252a2d2e2f3539414c565e616868686868686c717b839096a0acb9c5c7bdb0a69a8d807468686868686f7c8996a2afbcc4b7aa9d9184776a6868686868686868686f7c8996a2afb5afaca6998d8073665a4d4033271a0d0000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e71655f6166676768696969686765636b7885919e9f9d9a97979083766a5d5d5d5d5d5d5d5d5d5d55545e6b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929fa2978f82808d99a6b3c0b9ada093867a6d6b7885919eabb0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b7b8bcc3cbd5cdc5bebab8b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ada094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec5baafa59d9a999999999999999999999999999ea0a8b2bdc8beb3a9a19e999999999999999999999999999a9da4aeb9c5bfb2a5988c7f7265594c3f3226190c00000000000000000000030d17212931363a3b413f3e404d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d807371717171717171717171717171717171717174818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000010d18242f3a4754606d7a86929facb9c5c0b3a79a8d807467707d8a9795918c8884807d89969a9a9a9a9a9a9285787f8c949ea9b2b2a8a0958f8178797774716e69717d8a969ea1a9aca69d9083786c60554b4031281d0e04000000000000000000000d1a2633404d596673808c99a6b3bfb4a79a8d807979797979797979808c99a6b3baaea194877b6e6154483b333f49535f6a73808c959faab4bcb4aeacaeb4bcb6aca2979083796d60584e41382d22170b010000000000000000000000000000000000000000050c13191d2021242d3946525e686d7575757575757575757a84919eaab7c4cfc1b7ab9e9184787575757575757c8996a2afbcc4b7aa9d91847775757575757575757575757c8995a2a8aba49f9d9a8d8074675a4d4134271a0e0000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e7165696e727374757676757574726f6d7884919892908d8a8885817467696a6a6a6a6a6a6a6a6a6260586b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a5464717e8a99a3a99f948f85919eabb8c4b9ada093867a6d6b7885919ea4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4aaacb1b9c3cec5bbb3adaba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec8bdb4aba6a3a1a1a1a1a1a1a1a1a1a1a1a1a1a9abb0b8c2cdc4bab2acaaa1a1a1a1a1a1a1a1a1a1a1a1a1a3a5abb3bdc7bfb2a5988c7f7265594c3f3226190c0000000000000000000000060f171f262a2d2e343333404d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d807367646464646464646464646464646464646874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000713202c3945525d687683909da9b6c3c2b6a99c8f8376696d7985928d84807c77737a878d8d8d8d8d8d8d8d857a8590949fa3aba9a1969083796d6d66676461677480888d92979c9f9f94897d726d62564d42362a20150a000000000000000000000d1a2633404d596673808c99a6b3bfb4a79a8d81746c6c6c6c6c6c73808c99a6b3baaea194877b6e6154483b3744505b656f7c87929fa7b1b9b0aaa29fa2aab3bcb3a9a0958d80736a5f53493f33271d120700000000000000000000000000000000000000000002080d111314212e3a4754616d7a8182828282828282828283909daab6c3d0c5b9ada1968f82828282828282828f9ca9b6c2c5b8ab9f9286828282828282828282828282828f9c9e9c999993908e8b8174685b4e4135281b0e0000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e71656e7b7f80818282828282807f7c7977848b888683807e7b78746f70767777777777777777776f6a606b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c6675818e9babb0a69f979197a1adb9c6b9ada093867a6d6b7885919797979797979797979797979797979797979da0a7b1bcc8beb3a9a29f97979797979797979797979797979797979794877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec2b6aba29a97959595959595959595959595959c9fa6b0bbc7bdb2a8a09e959595959595959595959595959699a1abb6c1bfb2a5988c7f7265594c3f3226190c000000000000000000000000060d141a1e2122272a33404d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a57575757575757575757575757575b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000004111d2935414c566673808c99a6b3bfc4b8ab9e918578686673808d8077736f6a6d7980818181818181818180737b828c9299a2a19791847a6e67605c545854646e747b80858a8f939a8f827e7f72695e52463c32261b0c030000000000000000000d1a2633404d596673808c99a6b3bfb4a79a8d807473737373737373808c99a6b3baaea194877b6e6154483b404b55606c78839099a3afb9b0a69f989298a2a9b3bbb1a79f92877c6f655b5044392e23180c000000000000000000000000000000000000000000000001050815212e3b4854616e7b878e8e8e8e8e8e8e8e8e9095a0acb8c4d1c9bdb2a89e948f8e8e8e8e8e8e8f949fabb7c4c6baaea298928e8e8e8e8e8e8e8e8e8e8e8e8f9497928f8c898684817e7b6e6155483b2e2215080000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e7166727f8c8d8e8f8f8f8f8e8d8b898580817f7c797674716e69676976828484848484848484837c6f626b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929eabb8b0a9a19ea1a9b3bec9b9ada093867a6d6b78858a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9095a0acb8c5baada297928a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebeb2a69a908a888888888888888888888888888f949fabb7c4b9aca0969188888888888888888888888888898f99a5b1bebfb2a5988c7f7265594c3f3226190c0000000000000000000000010b141c242b3033343733404d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d4b4b4b4b4b4b4b4b4b4b4b4b4e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f120000000000010d1924303d4a5763707d8a96a8b2bdc6b9ada197877a6d6c78828f8d827b726c676d747474747474747474736e6f787f8792989892857c6e685e55504a4b525c64696e73797d82879191848a867b6e61584e43372b1e150b0000000000000000000d1a2633404d596673808c99a6b3bfb6aa9d9083808080808080808083909da9b6baaea194877b6e6154483b45515d67717e8a949fabb5b3aa9f9490859297a2abb5bbafa3999083776c60544b4034281c11060000000000000000000000000000000000000000000000000815212e3b4854616e7b87949b9b9b9b9b9b9b9b9da0a7b1bcc8d4cfc4bab0a69e9c9b9b9b9b9b9b9c9fa6b0bbc7cabeb4aaa29f9b9b9b9b9b9b9b9b9b9b9b9b9c918b85827f7d7a7774716e695f53463a2d2114070000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e716875828e9a9a9b9c9c9c9b9a9897928d847b6f6d666764615f576c78859090909090909090897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8997a1adb9bbb3adabadb3bbc4cfb9ada093867a6d63707d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e83909daab7c3b8ab9f92857e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebdb0a3978a7e7b7b7b7b7b7b7b7b7b7b7b7b7b828f9ca9b6c2b7aa9e91847c7b7b7b7b7b7b7b7b7b7b7b7b7d8996a3b0bcbfb2a5988c7f7265594c3f3226190c000000000000000000000008121c262e363c3f404340404d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d403e3e3e3e3e3e3e3e3e3e414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f120000000000000814212e3a4754616d7a8796a1acb9c5beb3a996897c6f727f8c94948f867f776e6967676767676c7178797a7b7b7c7c7e859292857c6f6a61594f443f414a52575f62666d71767b849191968e81746a5f54473e30271d120700000000000000000d1a2633404d596673808c99a6b3bfb8aca095908d8d8d8d8d8d8d8d90959fabb8baaea194877b6e615448404b55606d7984919ea6b0baaea29890827b859299a4afbbb5ab9f948b7e71665c5145382d22170b0000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1a8a8a8a8a8a8a8aaacb1b9c3cdcbcbccc1b8b0aaa8a8a8a8a8a8a8a9abb0b8c2cdd0c5bcb4aeaba8a8a8a8a8a8a8a8a8a8a8a5988b7f787573706d676764615f574d42362a1e12050000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e71677784919ea7a8a9a9a8a8a7a9a19e969184796d60545755535f6c7885929d9d9d9d9d9d96897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a9b3bec4beb9b8b9bec4cdc6b9ada093867a6d606b7071717171717171717171717171717171717176828f9ca9b6c2b8ab9e918578717171717171717171717171717171717171716d665c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebbafa295887c6f6e6e6e6e6e6e6e6e6e6e6e75828f9ca8b5c2b7aa9d9184776e6e6e6e6e6e6e6e6e6e6e6e7b8894a1aebbbfb2a5988c7f7265594c3f3226190c00000000000000000000030e19242e3840474c4d504d494d596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d4034313131313131313135414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f120000000000000713202d3946525d687884919eabb7c4bdb1a4978a7e717c87929f9f98928b827b716c605c5564717e848586878888888b92989286817c706b61564c41444b51565e616a6e767d8491969e9f93877c6f625a5042392e23180c02000000000000000d1a2633404d596673808c99a6b3bfbcb1a7a09d9a9a9a9a9a9a9a9a9d9fa7b1bcbaaea194877b6e61544845515d67737f8c96a1adb9b1a79f92857b707d87939fa7b1bdb0a69e9184796d60544a3f33281c0f0300000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeb5b5b5b5b5b5b6b8bcbebebebebebebebebbb7b5b5b5b5b5b5b5b6b7bbbebebebebebebebab8b5b5b5b5b5b5b5b5b5b5b1a4978a7e71696663605d555855534d453b31261a0e020000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e716d7a86939facb5b5b5b5b5b3b3ada8a0968c7f73655b5048525f6c7885929faaaaaaaaa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d2a3643505d697683909ca5afbbc5c9c6c4c6c9cfd6c6b9ada093867a6d60616364646464646464646464646464646464646976838f9ca9b6c2b8ab9e9185786b646464646464646464646464646464646464605c544b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bebbafa295887c74747474747474747474747475828f9ca8b5c2b7aa9d9184777474747474747474747474747b8894a1aebbbfb2a5988c7f7265594c3f3226190c0000000000000000000007131f2b36404a52585a5d595653596673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d4034272424242424242835414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000005111d2935414c566975828f9ca8b5c2bfb2a6998c7f7a849199a3aaa29f948f857e746d675f6773808d929894959595989fa298928e867d70685d524a50555c60686d747c828a9196a1a8a49a9082766c61544b4034281e1308000000000000000d1a2633404d596673808c99a6b3bfc3b9b1acaaa6a6a6a6a6a6a6a6a9abb1b9c2baaea194877b6e6154484b55606d7985929ea9b2b8ab9f958b7f726b73808d95a0acb8b9ada1968b7e71665b5044382b1f140800000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac1c1c1c0b9b5b3b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b3b8bec1c1c1bdb1a4978a7e7164595654514b4b4846423b33291f1409000000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e716f7c899aa4afb5b5b7b9bdc0beb9b2a89e9184786c605346525f6c7885929fabb7b7afa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d89939ea9b3becad2d1d2d5dad3c6b9ada093867a6d6053575c646768686868686868686868686868686976838f9ca9b6c2b8ab9e9185786b686868686868686868686868686868605c5553514b42392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec1b5a89b8e818181818181818181818181818184919eabb7c4b8ab9f928581818181818181818181818181818e9ba8b4c1bfb2a5988c7f7265594c3f3226190c000000000000000000000b1723303c47525c64676a6663605c6673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d40342b2b2b2b2b2b2b2b35414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000000010d192430404d5a6673808d99a6b3c0c1b4a79a8e81818e96a1abb4aea69f97928a81796e696976828f9ca3aaa2a2a2a4abaaa29f9892857a6d6054545b60676d727a80878f949ea1a8b2ac9f948a7d70665c51453a3025190d010000000000000d1a2633404d596673808c99a6b3bfc0b5aba39f9f9f9f9f9f9f9f9f9fa3abb5c0baaea194877b6e615448515d67727f8c97a2adbbb0a69d9083786c606d7983919da5afbdb2a89d9184786c6053463b3025190e02000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7cac0b6aea8a6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a7adb5bec9cabdb1a4978a7e7164574b4745413e3b3a36312921170d03000000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e71727f8b98aca9a8a8aaacb2babec4b9ada196887c6f625549525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855606b74818e97a2adbac3ced9dfe1e6d3c6b9ada093867a6d605358646e7474747474747474747474747474747476828f9ca9b6c2b8ab9e918578747474747474747474747474747474746d675c5145403930271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bec3b6aa9e938e8d8d8d8d8d8d8d8d8d8d8d8d8d9196a1acb9c5baada297928d8d8d8d8d8d8d8d8d8d8d8d8d8e939eaab6c2bfb2a5988c7f7265594c3f3226190c000000000000000000000d1926333f4c58646e737673706d666673808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d4038383838383838383838414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000081825323e4b5865717e8b98a4b1bec5b8ac9f92868e939ea8b2bbbab0a9a29e938e837b706c7885919eabb4aeaeafb1b8b4aeaaa1978b7e72655b60666c71797f858d92999fa6acb2bab0a69e9184796d60564c4135291d1105000000000000061a2633404d596673808c99a6b3bfbbafa3999292929292929292929299a3afbbbaaea194877b6e61544853606d7985919ea9b3b7aa9e94897c6f665c676f7c89939eabb5b8aca0968a7e7164564d41362a1e1105000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7c5b9aea49c9a9898989898989898989898989898989898989898989898989898989898989898989ba3adb8c3cabdb1a4978a7e7164574b3e39352f2e2d2a261f170f0600000000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e7174818e9b9c9c9b9c9ea0a8acb4bebdb2a8988b7e7265584b525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59616d7a85929fa7b1bcc8d4dee9e0d3c6b9ada093867a6d60535a6774808181818181818181818181818181818185919eabb8c4b8ac9f92868181818181818181818181818181818181796d6053463a2e271e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1bcbcbaafa59e9b9a9a9a9a9a9a9a9a9a9a9a9a9a9ea1a8b2bdbcbeb3a9a29f9a9a9a9a9a9a9a9a9a9a9a9a9a9b9ea5afbabcbcb2a5988c7f7265594c3f3226190c000000000000000000030f1b27333f495367738083807c79757273808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a4d4444444444444444444444444e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000000000a1723303d4a5663707d8996a3b0bcc6baaea2989290949ea1a9afb6bbb3ada59d9590867e737a8797a1adb0b0b6b7bbc2bfbab3a99b8f827568666c71787e848c92979fa3abb0b9bdb9b2aca0968c7f72685e5246392d20130700000000020a11172633404d596673808c99a6b3bfb9ac9f9287868686868686868687929facb9baaea194877b6e61544e5865717e8b97a1adbbb0a69c8f82756a6055606b75828f99a4afbbb2a89c8f8276685e5246392d201408000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7c1b5a89c928d8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b919ba7b3c0cabdb1a4978a7e7164574b3e31292422211e1a140d060000000000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e7177849090908f8f8f91969aa2acb9c0b4a79a8d8174675a4e525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d46525e68727f8b95a0acb8c2cdd8e4e0d3c6b9ada093867a6d60535f6b78858e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9197a1adb9c6baaea398928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e867a6d6053473a2d20150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5afafafafafafaaa8a7a7a7a7a7a7a7a7a7a7a7a7a7abacb2afafafafafb3adaba7a7a7a7a7a7a7a7a7a7a7a7a7a8aaafafafafafafa5988c7f7265594c3f3226190c00000000000000000005121f2b3744505b657683908c8985827e7b808c99a6b3bfbdb0a4978a7d7164574a44515d6a7784909daab7c0b3a69a8d8073675a51515151515151515151515151515b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000000000815222f3b4855626e7b8895aab4bfc5b9ac9f9287838b92979fa4acb2bab9afa7a09892887f7d8996a9a3a3a4a9abb0b8c2c4b7aa9e9184776a6f787e838b91969fa2a9afb5bdb9b2aca8a09d9590857a6d6154473a2e211407000000020b141b222733404d596673808c99a6b3bfb4a79a8d807979797979797979808c99a6b3baaea194877b6e6154565f6a7783909da9b3b7ab9f94887c6f62585959626f7c87939facb9b9ac9f93877b6e6154473b2f24190d010000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7c0b3a69a8d807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8b98a5b2becabdb1a4978a7e7164574b3e3124181514120e0903000000000000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e717987858483828282848a909aa7b1bcb5a99c8f8276695c4f525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212a36414c56606d7883919da6b0bbc7d3dee0d3c6b9ada093867a6d60535f6b7885929b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea1a9b2bec9bfb4aaa39f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b93867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3a5988c7f7265594c3f3226150c0400000000000000000613202d394653606c7985929998928f8b8786929facb8c5bdb0a4978a7d7164574a47515d6a7784909daab7c0b3a69a8d8073675e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000000000714212d3a4754606d7a8798a3aebac7bbaea39986787e858d939aa0a8aeb9b9b1aaa29a938c849199979696979c9fa6b0bbc5b9ac9f9286796f7c838a91959ea1a8adb3bbb9b2aca8a19e96918a837e70685e5246392d2013070000000a141d262d3337404d596673808c99a6b3bfb4a79a8d81746c6c6c6c6c6c73808c99a6b3baaea194877b6e615a62646f7c88959fabbbb5ab9c8f82766a66666666666a76828f9cacb6bbafa4998b7f7265564c4135291d11040000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7bbafa295887c72727272727272727272727272727272727272727272727272727272727272727986939facb9c6bdb1a4978a7e7164574b3e312418070705020000000000000000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e71787a787776767575777e8a95a0acb8b7aa9d9084776a544a525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d1925303a44505c66707d8a949fabb7c1ccd7e3d3c6b9ada093867a6d60535f6b7885929ea7a7a7a7a7a7a7a7a7a7a7a7a7a7abadb2bbc4cfc6bcb4aeaca7a7a7a7a7a7a7a7a7a7a7a7a7a7a093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595969e988c7f7265594c3f2f271e160d04000000000000000815222f3b4855626e7b8898a2a29f9b98989298a2aebac6bdb0a4978a7d71645755534d5d6a7784909daab7c0b3a69a8d80736b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b74818e9ba7b4c1b8ab9e9285786b5f5245382c1f12000000000000000613202c3945515d677986929facb9c5bfb5ab94877a717a818891969da4adb3bbb4aca49f9691928c8b8a898a8f949fa9b3bebaaea399867a6d7984919da0a7acb2bab8b2aca8a19e96918b847e78706c61564c4135291d1105000006111b262f383f44464d596673808c99a6b3bfb4a79a8d807878787878787878808c99a6b3baaea194877b6e61626c7174808d9aa7b1bbafa4998a7d7373737373737373737d8a9aa4afbbb5ab9d908376685d5245392c2013060000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7bbafa295887c6f6565656565656565656565656565656565656565656565656565656565656c7986939facb9c6bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e716d6d686a696968696c7783909daab6b8ab9e928578665c51525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28343f4a54616b76828f9ca6b0bbc7d3ded3c6b9ada093867a6d60535f6b7885929eabb4b4b4b4b4b4b4b4b4b4b4b4b4b8b9bec4cdd1cec6bfbab8b4b4b4b4b4b4b4b4b4b4b4b4b4ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898991928c7f72655949413930281f160c010000000000000b1824313e4b5764717e8a97aaaeaba8aaa29fa2aab4bfcabdb0a4978a7d716966625f575d6a7784909daab7c0b3a69a8d807777777777777777777777777777777777777777818e9ba7b4c1b8ab9e9285786b5f5245382c1f120000000000000004111d2935414b556b7884919eabb7c4bbaea195887b6e6d747d848d929ea1a9b0b8b4aaa29892867f7e7d7d7d828f97a2adbabfb4ab94877a6d717e8a949facb6bab2aca8a09e96918b847e78716c66615a50443a3025190d0100000b17222d384149505359596673808c99a6b3bfb8ac9f9286858585858585858586929facb8baaea194877b6e6164717e7f85929fabb8b9ac9f9387807f7f7f7f7f7f7f7f7f8087939facb9b8ab9f95877a6d6054473a2d2114070000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7bbafa295887c6f625e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e606c7986939facb9c6bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbbeb1a4988b7e7165605d565d5c5c5a6773808d9aa6b3b9ac9f9386796d6053525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17232e38424f59636f7c89949eaab7c1ccd7d3c6b9ada093867a6d60535f6b7885929eabb8c1c1c1c1c1c1c1c1c1c1c1c1c4c4c4c4c4c4c4c4c4c4c4c1c1c1c1c1c1c1c1c1c1c1c1b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d848d807a6e615b534b423a31281e13080000000000000d1a2733404d5a6673808d99a6b3b8b5b4aeacaeb4bcc6d0c0b4a79a8d807b77726e6966616a7784909daab7c3b8ab9f9285848484848484848484848484848484848484848486929fabb8c5b8ab9e9285786b5f5245382c1f1200000000000000010d18242f44505d6a7783909daab6c3bcafa295897c6f626b7079808a91979fa6b0aba39892867d73717070717985929fabb8baada194877a6e6c7683909aa4afaea8a09e96918b847e79716d66605b5450483e32281e13080000030f1b27333f49535b6066666673808c99a6b3bfbaaea3989292929292929292929298a2aebabaaea194877b6e616a76838c9297a2adbabbafa499938c8c8c8c8c8c8c8c8c8c8c939aa4afbbbcb1a794877a6d6154473a2e2114070000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7bbafa295887c6f6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6c7986939facb9c6bdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000030b16222f3c4955626f7c8895a2afbbbeb1a4988b7e716558524c504f4f5864717e8b97a4b1bbafa49a877a6e6154525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303e4854606b75828f9ca6b0bbc7d3d3c6b9ada093867a6d60535f6b7885929eabb8c5cecdc4beb9b8b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8b9bdc4cccec6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686e7a7d7c7b7a7a79797878787777767676757575747473737372727171717070706f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f79829093887f736c655c544c433a2f24190d010000000005121e2a36424d576976828f9ca9b5c2c2bfbab8babfc6cecec2b5a99d928d87837f7b77736e697784909daab7c3baada2979291919191919191919191919191919191919191919298a2aebac5b8ab9e9285786b5f5245382c1f120000000000000000071d2a3643505d697683909ca9b6c3bcafa396897c706360676d747d858f949fa6a39992867d706b646363677683909ca9b6baada194877a6e626f7c87939faaa39f96918b847e79726d66605c54504a423e362c20160c02000005121f2b3744505b656c73737373808c99a6b3bfbfb4aaa39f9e9e9e9e9e9e9e9e9fa2aab4bfbaaea194877b6e6a6a7683909da2a9b3bec0b5aba49f99999999999999999999999fa4acb6c0baada094877a6d6154473a2e2114070000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7bbafa295887c77777777777777777777777777777777777777777777777777777777777777777986939facb9c6bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000030d151d242f3c4955626f7c8895a2afbbbeb1a4988b7e7165584b414343495663707c8996a3afc0b6ac95887c6f6255525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2c38434f59626f7c88949eaab7c2ccd8c6b9ada093867a6d60535f6b7885929eabb8c5cfc4bbb2adabababababababababababababababababababababababadb2bac4cfc6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c5666727f898888878686868585848484838382828281818180807f7f7f7e7e7d7d7d7c7c7c7b7b7a7a7a7a797979797878787777777676767a8390949a938c80776d665d554c4135291d1104000000000714202d3a46525e697885929eabb8bfc4c5c6c5c6cad0d8d1c5baaea49d9a95908c8884807b6e7784909daab7c3beb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2aab4bec5b8ab9e9285786b5f5245382c1f1200000000000000030f1c2936424f5c6975828f9ca8b5c2bdb0a3968a7d7063686e6f6f707a828f949f9f92877d706f6f6f6f6f6f75828f9ca8b5baada194877a6f6f6f74818e99a398928d847e78716f6f6f6a60544a443f382f2c241a0e040000000613202d394653606c777f7f7f7f828f9ca9b6b9b1b1b4aeacababababababababacaeb4b1b5b7aea194877b7676767683909da9b3bcc5c7bdb5afaca6a6a6a6a6a6a6a6a6a6a6acafb6bec7baada094877a6d6154473a2e2114070000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7c4b7ab9e91848484848484848484848484848484848484848484848484848484848484848484848993aab7c4cabdb1a4978a7e7164574b3e3124180b000000000000000000000000000000010b151f272f353c4955626f7c8895a2afbbbeb1a4988b7e7165584b3e3d3d4855626e7b8895abb5bfb0a3968a7d706357525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1b27323d4754606a75828f9ca6b0bbc7d3c6b9ada093867a6d60535f6b7885929eabb8c5c9beb2a9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea1a8b2bdc9c6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c6676828f959494939992929291919090908f8f8e8e8e8d8d8c8c8c8b8b8b8a8a89898988888887878786868686858585848484838383828490959fa49f928d81786d675d5145392c201306000000000815212e3b4854616e7b8797a1acaeb4b7b9bdc4c5c8ced5d6cbc0b6aea9a7a09d9995918c80737784909daab7c3c5bbb3adabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaeb4bcc5c5b8ab9e9285786b5f5245382c1f1200000000000000020f1c2835424f5b6875828e9ba8b5c1bdb1a4978a7e71646e7a7c7c7c7c7d838f9c998d807c7c7c7c7c7c7c7c7c82909ca9b6bdb0a3968a7d7c7c7c7c7e86929f9285807d7c7c7c7c7c7c6f6256493c332d261d1a1108000000000713202d3a4653606d79868c8c8c8f949fabaeaca4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a9aab0aa9d90838383827683909da9b6c3ced0c7c0bbb9b3b2b2b2b2b2b2b2b2b2b3b9bbc0c7d0baada094877a6d6154473a2e2114070000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7c5b9ada1969191919191919191919191919191919191919191919191919191919191919191919196a0acb9c5cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000007121d27313940454955626f7c8895a2afbbbeb1a4988b7e7165584b4a4a4a4a54606d7a8799a3aebbb1a4978b7e716458525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b37434e58626f7c89949fabb7c3cdc6b9ada093867a6d60535f6b7885929eabb8c5c6b9ada197919191919191919191919191919191919191919191919196a1adb9c5c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929fa1a0a0a39f9f9e9e9e9d9d9c9c9c9b9b9a9a9a9999989898979797969695959594949493939399929292919191919090908f91969fa7afa49d938e82796d6054473a2d211407000000000a1724313d4a5764707d8a979c9fa2aaaaacb2b7b8bdc3ccd5d2c8c0bab5b1abaaa7a0988b7f727784909daab7c3cdc5bebab8b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8babec5cec5b8ab9e9285786b5f5245382c1f1200000000000000010e1b2834414e5b6774818e9aa7b4c1beb1a4988b7e7165727f89898989898f949f9c928d89898989898989898990949fabb7beb1a59a8f8a898989898a9299a398928d89898989898986796c60534639221c140b0800000000000713202d3a4653606d79869399999c9fa6aaa39f97979797979797979797979797979797979c9ea6aca095909090867983909da9b6c2c2c2c2c2c2c2bfbfbfbfbfbfbfbfbfbfbfc2c2c2c2c2baada094877a6d6154473a2e2114070000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aebac7c9bdb2a8a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea0a8b2bdc9cabdb1a4978a7e7164574b3e3124180b0000000000000000000000000000000c18242f39434b515355626f7c8895a2afbbbeb1a4988b7e7165585757575757575d687986929facb9b2a5988b7f726558525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323c4754606a76828f9ca7b1bcc8c6b9ada093867a6d60535f6b7885929eabb8c5c4b8ab9e918484848484848484848484848484848484848484848484919eabb8c4c6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8998a2aeadb5aeacabababaaaaa9a9a9a8a8a8a7a7a6a6a6a5a5a4a4a4a3a3a3a2a2a1a1a1a0a0a0a0a39f9f9f9e9e9e9d9d9d9c9c9ea0a8b1bbaea59e948f8376695d5043362a1d10030000000d192633404c5966737f888b8f92989a9ea0a8aaacb2bac3ced9d2cbc5c3bcb8b6b1a4978b7e717784909daab7c3d0cfcac6c5c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c5c6cad0d1c5b8ab9e9285786b5f5245382c1f1200000000000000010e1b2734414e5a6774818d9aa7b4c0beb1a5988b7e7265727f8b959595969c9fa6a49c999595959595959595959c9fa6b0bcbeb6aba19a9695959595979fa3aaa39f9a96959595959386796c605346392d200a020000000000000713202d3a4653606d798693a0a6a9abaea398928b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f949eaaa7a09d9d92867983909da9b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ada094877a6d6154473a2e2114070000000000000000000000000000000000000000030815212e3b4854616e7b8794a1aebac7cfc4bab2adabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacb2bac4cec9bdb1a4978a7e7164574b3e3124180b050200000000000000000000000004101d2935404b555d6060626f7c8895a2afbbbeb1a4988b7e716564646464646464646c7885929fabb8b3a6998c80736659525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e5863707d8995a0abb8c4cfbaada194877b6e61535f6b7885929eabb8c5bbafa295887c7878787878787878787878787878787878787878787b8794a1aebac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a5466727f8c99aaa8aaabadb3b3b7b7b7b7b6b6b5b5b5b4b5aba39f9d9d9e9e9fa2aaa1a1a2a3a3a4a5a5a6a7a7a8a9a9aaababaaaaaaa9a9a9aaacb2bbaea59e9590847c6f6255483c2f221509000000000613202d394653606c777c7f8285898d9196999da0a8b2bdc8d4dcd6d1cdc8c4bdb0a3978a7d707784909daab7c3cdc5beb9b8b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8babec5cdc5b8ab9e9285786b5f5245382c1f1200000000000000010e1a2734414d5a6774808d9aa7b3c0beb2a5988b7f7265727f8b98a2a2a2a9abb0aea8a6a2a2a2a2a2a2a2a2a2a9abb0b2b2b2b2b2aba5a3a2a2a2a2a3acafb4aeaca7a2a2a2a29f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb6b9ac9f92867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e828f9ca9b1acaa9f92867983909da9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a094877a6d6154473a2e211407000000000000000000000000000000000000040a0f1315212e3b4854616e7b8794a1aebabcbcbcbcbdb9b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b9bdbcbcbcbcbcb1a4978a7e7164574b3e31241814110e09020000000000000000000006131f2c3845515d676d6c656f7c8895a2afbbbeb1a4988b7e71707070707070707070707885919eabb8b4a79a8d8174675a525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323d4854606b7783909da8b2bdc9bfb2a5998c7f72655b5f6b7885929eabb8c5bbafa295887c6f6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6e7b8794a1aebac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c6676828f999a9c9d9fa2a9a7aaacb1b5b9babfc2c1bbaea39992909091919298939495959697979899999a9b9b9c9d9d9e9fa3abb5b6b6b5b7b9b5afa49d938f837a6f6a5f53473a2e2115080000000005121f2b3744505b656c6f7275797d8084888c9196a0acb8c5d1d2cbc5c1c0c1bcafa296897c6f7784909daab7c3c5bbb3adabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabadb3bbc5c5b8ab9e9285786b5f5245382c1f1200000000000000000d1a2733404d5a6673808d99a6b3c0bfb2a5988c7f7265727f8b98a5afafb6b7b7afaaa8a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5acaeb4b3afafafac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9b8ac9f92857971717171717171717171717171717173808d9aa6b3b9ac9f92867983909c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c94877a6d6154473a2e21140a0000000000000000000000000000000000070f161b1f22232e3b4854616e7b8794a1aeafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafa4978a7e7164574b3e312621201e19140d05000000000000000003101c28343f4a54606d79786d6f7c8895a2afbbc0b4a79a8d807d7d7d7d7d7d7d7d7d7d7d7e85929eabb8b4a89b8e8175685b525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16202c38444f5964717e8a96a1adb9c6c4b7aa9e9184786c605f6b7885929eabb8c5bbafa295887c6f625e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e616e7b8794a1aebac6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79868b8c8e8f909297979a9da0a7a8acaeb4b9bab9ac9f928683838485858687878889898a8b8b8c8d8d8e8e8f9090919299a3afbbc3c2bcb3aba39f928d81796e685f584e43372b1f120600000000030f1b27333f49535b606265676d7074777b7f84919daab7c4d0c8c0b9b5b3b4b8aea295887b6f7784909daab7c3beb3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa2a9b3bec5b8ab9e9285786b5f5245382c1f1200000000000000000d1a2633404d596673808c99a6b3bfbfb2a5998c7f7266727f8b98a5b2bcc2baafa59e9b9898989898989898989898989898989898989898989898989898989fa2aab4bfbcb9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9b8ac9f92857975757575757575757575757575757575808d9aa6b3b9ac9f928679838f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f877a6d6154473a30261c110600000000000000000000000000000007111921272c2f30333b4854616e7b8794a1a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978a7e7164574b3e33332e2d2a251f170e050000000000000006121f2b3844505c66727f827a6f7c8895a2afbbc2b5a99d928d8a8a8a8a8a8a8a8a8a8a8a8a9297a1adb9b5a89c8f8275695c525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d4653606d7984919eaab4bfc5b9aca096897d7063566b7885929eabb8c5bbafa295887c6f625551515151515151515151515151515154616e7b8794a1aebac6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d797d7e7f81828485878a8d9095989c9fa3abacaeb4aea3999287827f7c79787a7a7b7c7c7d7e7e7f808081828283848487929facb9c2bab2a9a299928b80786d675e564e463c31261b0f0300000000000b17222d384149505355555c6063676a6e73808c99a6b3bfcbc0b6aea9a7a7abadab94877b6e7784909daab7c3b9ada1979290909090909090909090909090909090909090909297a2adbac5b8ab9e9285786b5f5245382c1f1200000000000000000d1a2633404d596673808c99a6b3bfbfb2a6998c7f7366727f8b98a5b2bec2b6aa9e938e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9298a2aebac7b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9b9ac9f9287818181818181818181818181818181818183919daab7b9ac9f9286798082828282828282828282828282828282828282828282828282828282828282827a6d60544a42382e23170b0000000000000000000000000000040f19232b32383b3c40404854616e7b879496969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696968a7e7164574b4040403b3a36302920170d020000000000000713202d3a4653606d78848f847c7c8895a2afbbc5b9aea49d9a9797979797979797979797979ea1a9b3beb6a99c8f8376695c525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b161f2c3844505c66737f8c98a3aebac7bdb2a89b8e8275685d6b7885929eabb8c5bbafa295887c6f625552525252525252525252525252525254616e7b8794a1aebac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c676d707173747577787a7d8084878b8f92999c9fa3abacaba39992908c8884817d7975717070717272737474757676777e86929facb9bbb0a8a09792877f736c665d554d443c342a20150a00000000000006111b262f383f4446484b515356585f6673808c99a6b3bfc5b9aea49d9a9b9fa2a399867a6d7784909daab7c3b8ab9e9285848484848484848484848484848484848484848485929fabb8c5b8ab9e9285786b5f5245382c1f1200000000000000000d192633404c5966737f8c99a6b2bfbfb2a6998c7f7366727f8b98a5b2bec1b4a89b8e817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f86929facb8c5b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9bbafa399928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9195a0acb8b9ac9f92867974767676767d7e76767676767676767676767676767676767676767676767676766d67605c544a3f34281c1003000000000000000000000000000a16212b353d4448494d4d4d54616e7b87898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989897e7164574d4d4d4d4746423b32291f1409000000000006131f2b37434e5864717d8a969186808d9aa7b3c0cbc0b6aea9a7a3a3a3a3a3a3a3a3a3a3a3a3abadb3bbc3b6aa9d9083776a5d525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616d7a86929facb8c3c4b9ac9f92867a6d606b7885929eabb8c5bbafa295887c6f625f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f616e7b8794a1aebac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b555d686d6f6e6d666b696e7074777b7e82868a8f92999c9fa4aba39f9c9996918d8a85827e7a75716d67666768686e737f8b9299a3afb6afa69f9691857d726d605b544b433b322a22180e03000000000000000a141d262d3337393c4045464a4e596673808c99a6b3bfc1b5a99d928d8e92979b928679677784909daab7c0b3a69a8d807777777777777777777777777777777777777777818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000d192633404c5966737f8c99a6b2bfbfb3a6998c807366727f8b98a5b2bebeb1a4978b7e72727272727272727272727272727272727272727272727272727885929fabb8c5b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9c0b5aba39f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9da0a7b1bcb9ac9f9286796c686e788087877e716a6969696969696969696969666d7072747575757575757575756d665c5044382b1f1206000000000000000000000000030f1b27323d474f545659595959606d797c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a6d61595959595954524d443b3025190e02000000000a15212e3b47535f6a7683909c98928d929da9b5c1cec8c0b9b5b4b0b0b0b0b0b0b0b0b0b0b0b0b8b9bec5c4b7aa9d9184776a5e525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3846525e6874818e9aa7b1bcc7baaea3988b7e71656b7885929eabb8c5bbafa295887c6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6e7b8794a1aebac6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3a4754606d7a7c7a79787877767574737272757a7e82868b8f939aa4afaca9a8a19e9a98928e8a86827e7a75716d676673808c92999ea5abaca49f948f847c706b625b504a42393129201810060000000000000000020b141b22272b2d2e34383a404d596673808c99a6b3bfc0b3a79a8d8081858a8e9285786b7784909daab7c0b3a69a8d80736a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a74818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bebeb1a4978b7e77777777777777777777777777777777777777777777777777777885929fabb8c5b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb9c7bdb5afaca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8aaacb1b9c3b9ac9f9286796b6f7a828c9392867c6f675d5c5c5c5c5c5c59616c70787d7f81828282828282828281786d6053463a2d20130700000000000000000000000007131f2c38444f5960636666666666676d6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d68666666666666615e564d42362a1e110500000006111c2a36414c56626f7c88949fa39f9a9da4aeb9c5d1d4cbc5c2c0bdbdbdbdbdbdbdbdbdbdbdbdc5c6c9cfc4b7aa9e9184776b5e525f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36414c56626f7c8895a0abb8c6bfb4aa9c908376696b7885929eabb8c5bbafa295887c7979797979797979797979797979797979797979797b8794a1aebac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071724313d4a5764707d898786858483838281807f7e7d7d7c7b7b7e8387939facb9b6b2adabaaa29f9b98928f8b86827e7974706d7a80868e939d9fa39a938c827a6e6a605951443f382f271f170e0600000000000000000000020a11171b1f2023282c33404d596673808c99a6b3bfbdb0a4978a7d74797d818584776b7784909daab7c0b3a69a8d8073675d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec4b7ab9e918483848484848484848484848484848484848484848484848484848387939facb9c6b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0acb4b9c0c0bbb9b4b4b4b2b1b1b4b4b4b4b4b4b4b1b1b4b4b7b8bcc3beb9ac9f928679727d858f949f989184796d60584e4f4f4f55616b707e84898c8e8e8f8f8f8f8f8f8f887b6e6155483b2e2215080000000000000000000000000915222f3b4854606b6f73737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373736e695e52463a2d2014070000000c17232e3946525e6874818e9ba6aeaca7a9aeb6c0cbccc8c6bebabababababababababababababababababac0b8ab9e9185786b594f5f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303a47535f6a7783909daab4bfc6b9ac9f93877b6e6b7885929eabb8c5c5b8ac9f928685858585858585858585858585858585858585858586929facb8c5c6b9ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9a939291908f8e8e8d8c8b8a89888888878586929facb8c3bdb9b8b4aeacaaa39f9c98928f8a85817d7873737b8189909598928880786d685f584f473f332d261d150d05000000000000000000000000030b12181c1f20292933404d596673808c99a6b3bfbdb0a4978a7d716d7075797d6f6a7784909daab7c0b3a69a8d8073675a51515151515151515151515151515b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec5b9ada196919090909090909090909090909090909090909090909090909090909399a4afbbc7b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d798693a0a6a8aeb6c0c7bfb5ada8a6a5a5aaacb1b9b5ada7a5a5a8aab0b8c1beb5acac9f9286777f8791979fa6a0968e81746a5f5447424d5763707d889196999a9b9b9b9b9b9b9b96897d7063564a3d3023170a000000000000000000000000091623303c4956636f7d80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080807b6e6154473b2e211408000003101c28343f4a54616d7a86929facb8b8b3b5b9c0c8c7c0bbb9b1adadadadadadadadadadadadadadadadadadb3b8ab9e9285786b60585f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2b37434e5865727f8b98a3aebac7bbafa49a8b7f726b7885929eabb8c5c7baaea298929292929292929292929292929292929292929292929298a2aebac6c6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1b2734414e5a6774818d9a9f9f9e9d9c9b9a999998979695949993929298a2aeb8b8b9bbc0bfbab8b4aeacaaa39f9b98928e8984807b76757c838a90867e736c665e564e463d3528221c1415130f0a04000000000000000000030d151d23292c2d363636404d596673808c99a6b3bfbdb0a4978a7d716463676d6f6b6a7784909daab7c0b3a69a8d8073675a4d4444444444444444444444444e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec9bdb2a8a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa4abb5c0ccb9ac9f9386796c605346392d2013060000000000000713202d3a4653606d79869398999ca4aeb9c4b8ada39c9998989da0a7b1ada39b98989b9ea6b0bbb7aca39b989387828c9299a1a9b0a89d93887c6f62574d47535f697783909aa1a8a7a8a8a8a8a8a8a5988b7e7265584b3f322518060000000000000000000000000c1926333f4c5966727f8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c887c6f6255493c2f221609000006121f2c3844505c66737f8c98a3aebac5c0c1c5cbc7beb6afaca5a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a7a9ac9f92877c6f6a5f576c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b26323c4754606d7a86929facb8c5c0b6ac9c8f8376687885929eabb8c5cabfb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2aab4bfcac6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f2834404a546976828f9ca9ababaaa9a8a7a6a5a5a4a3a2aba49f9f9fa2aaaaababacafb5aeaeafafb0b1b4aeacaaa29f9b96918d88837e7a767d837c716c605b544c443c332b24242423221f1b160f0700000000000000010b151f272f34383a434343434d596673808c99a6b3bfbdb0a4978a7d7164555d6063606a7784909daab7c0b3a69a8d8073675a4d4037373737373737373737414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2becabfb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2a9b3bcc5d0b9ac9f9386796c605346392d2013060000000000000713202d3a4653606d79868b8b8d929ca8b4c0b4a89c918c8b8b9195a0aca79b918b8b8f939eaab6b3a79b918b8b8d8f949fa3abb2baafa59b8f8275695f534855616e7b8895a0acb2b4b5b5b5b5b5b3a69a8d8073675a4d402d22170b0000000000000000000000000c1926333f4c5966727f8c999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999995887c6f6255493c2f22160900000713202d3a4653606d7884919eaab4bfcbcdced1ccc0b6aca49f989393939393939393939393939393939393939a9da4a39992857c6f695e6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c3945525d6875818e9ba9b3bec5b9ac9f92867a6d7885929eabb8c5d0c6bcb4aeacacacacacacacacacacacacacacacacacacacacacacacaeb4bcc6d0c6b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921272c2f3844515c667784919d9fa3ababadb3b4b3b2b1b0b0afb5afa9a29f9c9d9e9e9f9fa4a0a1a2a2a3a3a4a4a5a7acaeaca9a19e9a94908b85807b76706c65605c544a3f3431313131312f2e2b272019100700000000000007121d2731394045474f4f4f4f4f596673808c99a6b3bfbdb0a4978a7d7164575153565d6a7784909daab7c0b3a69a8d8073675a4d40342a2a2a2a2a2a2a2a35414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec7baaea2989292929292929292929292929292929292929292929292929292929297a2a9b3becab9ac9f9386796c605346392d2013060000000000000613202d394653606c777f7e7e808d99a6b3bfb2a6998c7f7e7e83919daaa5988b7f7e818f9ba8b5b1a5988b7f7e818d939ea8b2bdc0b6aa9e93887b6e61554a5764717d8a97a7b1bec1c1c2c2c2bdb5a89b8f82756853493f33271b0f0300000000000000000000000c1926333f4c5966727f8c99a5a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a295887c6f6255493c2f22160900000b1724313e4a5764717d8a959ea6aeb6bfcbd1d4c8bbafa49a938b8787878787878787878787878787878787878d929daba29791847b6e686c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5663707d8997a2adb9c6bbafa3998b7e717885929eabb8c5cecec6bfbab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8babfc6cecec6b9ada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32383b3c4653606d79868f9092999a9fa2a9acafb5b9bebcbbbaada29792909091919293999494959596969798989a9fa3aaadadaba69f9c97928d87827d78716d665c50443e3e3e3e3e3e3c3b38322b22190f0400000000000c18232f39434b51535c5c5c5c5c5c6673808c99a6b3bfbdb0a4978a7d71645c5c5c5c5d6a7784909daab7c0b3a69a8d8073675a4d40342d2d2d2d2d2d2d2d35414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec5b8ac9f92868585858585858585858585858585858585858585858585858585858997a2adbac6b9ac9f9386796c605346392d20130600000000000005121f2b3744505b656c7272727c8895a2afbaaea194877b7276828f9ca9a0938679737f8c99a6b2ac9f9386797275818e96a1acb9c2bbb0a6988b7f7265584c5865727f8b98a5b2beccc4bdb9b8b1afaa9d908477655b5044372b1f120500000000000000000000000c1926333f4c5966727f8c99a5b2b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3afa295887c6f6255493c2f22160900000815212e3b4854616e7b838f939da4adbbc0c7cfc6b9ac9f93867e7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a808d9aa7a9a19691837a6d677885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4653606d7985929eabb8c5c0b5ab9b8f82757885929eabb8c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b9ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b343d4348494b54606d7a808284868a8e92979c9fa3abadb3bbc2b8ab9f92858283848585868687878889898a8a8b8b8e92989ea1a9acb0aba9a29f9a938f8a837e786d60534b4b4b4b4b4b4b4947433d342b20160a0000000004101c2934404b555c606969696969696973808c99a6b3bfbdb0a4978a7d716969696969606a7784909daab7c0b3a69a8d8073675a4d403a3a3a3a3a3a3a3a3a3a414e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bebeb1a4978b7e78787878787878787878787878787878787878787878787878787885929fabb8c5b9ac9f9386796c605346392d201306000000000000030f1b27333f49535b6065656f7c8895a2afbaaea194877b6e76828f9ca9a0938679737f8c99a6b2ac9f9386796c6d7a84919ea6b0bbc1b5a99c8f827669564c5966737f8c99a6b2bfc4bab2adaba4a2a29f9285796c605346392d20130600000000000000000000000c1926333f4c5966727f8c99a5b2b7b7b7b7b7b7b7b7b7b7b7b7b7b8babfbfbfbfbfbfbfbfbab8b7b7b7b7b7b7b7b7b7b7b7b7b8b9bdbfbfbfbfbfbfbfbdb9b7b7b7b7b7b7b7b7b7b7b7b7b7b7afa295887c6f6255493c2f22160900000714212d3a46535e696e79828d929ba3afb5bdc6c8bbafa49a92877e716d6d6d6d6d6d6d6d6d6d6d6d6d6d74808d929da9b2a8a0959082796d7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2c3844515c6674818e9aa9b3bec2b8ab9f9285797885929eabb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464f545657575d686d7475777a7d81858a8f92999ea1a9b0b8baada29791847f7b7878797a7a7b7b7c7c7d7e7e7f81868c92979da0a8afb3adaca49f9c95908a8174675b5757575757575756544e463d32271b0f0300000006131f2c3845515c676d7676767676767676808c99a6b3bfbdb0a4978a7e7676767676766d677784909daab7c0b3a69a8d8073675a4d4747474747474747474747474e5b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bebeb1a4978b7e716f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7885929fabb8c5b9ac9f9386796c605346392d201306000000000000000b17222d384149505358626f7c8895a2afbaaea194877b6e76828f9ca9a0938679737f8c99a6b2ac9f9386796c68707d8a949fabb7c5b8ab9e928578685d52596673808c99a6b3bfbdb2a8a19e9795959598877b6e6154473b2e21140800000000000000000000000c1926333f4c5966727f8c99a5aaaaaaaaaaaaaaaaaaaaaaaaaaaaacaeb4bcc6d0d0c6bcb4aeacaaaaaaaaaaaaaaaaaaaaaaaaabadb2bbc4cfcccec4bab2acaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa295887c6f6255493c2f221609000005121e2a36424d575e676d78808c919fa3abb5bdc6c0b6aca39992877e716b606060606060606060656c74808d929ca4aebab1a79f948f82787885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a5463707d8997a2adb8b5b1aca298897c7885929ea8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f59606364646464646768676d7074797d82878d92979fa6b0bbb3a9a096918c87827d79726d6e6f6f7070717172747a80858b91969fa3abb5b0a69e948f857e776c6464646464646464646260584e43382b1f13060000000714202d3a4753606d79828282828282828284919eaab7c4c3b6aa9d9083828282828282796d7784909daab7c0b3a69a8d8073675a54545454545454545454545454545b6874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bebfb3a6998c807c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c86929facb8c5b9ac9f9386796c605346392d2013060000000000000006111b262f383f444955626f7c8895a2afbaaea194877b7376828f9ca9a0938679737f8c99a6b2ac9f9386796c616b76828f9cabb4bfb9ada197877a6d6054596673808c99a6b3bfb9ada196918a89888888887c6f6356493c3023160900000000000000000000000c1926333f4c5966727f8c999d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3aab4bfcbcabfb4aaa29f9d9d9d9d9d9d9d9d9d9d9d9d9ea1a9b2bdc9d5c9bdb2a8a09e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d95887c6f6255493c2f2216090000020e1a25313b454d555d666c737f8b9299a3abb5bdc7beb5aba39992877d706a6057545454545c666c77808d929ca4aeb6c0b9b0a69e948d817885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3a4653606d7985929fababa8a7a09d998d807885929b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b93867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b6f71717171717171717171717171757b80858f949fabb7bbb2a8a09e99938f8a847f7a7471717171717171717173797e848e9299a3afaa9e948f827b7271717171717171717171716f6a6054473b2e2215080000000714202d3a4753606d7a868f8f8f8f8f8f8f9196a0acb9c5c4b8aca095908f8f8f8f8f877a6d7784909daab7c0b3a69a8d807367606060606060606060606060606060606874818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bec1b4a89c928c8888888888888888888888888888888888888888888888888888889298a2aebac6b9ac9f9386796c605346392d20130600000000000000000a141d262d333c4955626f7c8895a2afbbb3a79a8d80808084919eaaa0938679737f8c99a6b2ac9f9386796c5963707d8a99a3aebabeb3a995887b6e6255596673808c99a6b3bfb8ab9e91847e7c7c7c7c7c7a6d6054473a2d21140700000000000000000000000c1926333f4c5966727f8c919191919191919191919191919191919298a3aebac7c6baaea298929191919191919191919191919196a1adb9c3cec5b9aca0969191919191919191919191919191919191887c6f6255493c2f22160900000009141f29333b434b545b606d727e879299a3abb5bdc7bdb5aba39992867d6f695f564c545c666d78818d929da4aeb6c0bcb4aaa39992867d7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121f2c3844515c6675828e9ba29f9b9895908d898378858f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e838f9ca9b6c2bab2acaba49f9c96918c86817e7e7e7e7e7e7e7e7e7e7e7e7e8286929faca89c8f827e7e7e7e7e7e7e7e7e7e7e7e7e7e7c6f6256493c2f2316090000000714202d3a4753606d7a86939c9c9c9c9c9c9ea0a8b2bdc9c8bcb1a7a09d9c9c9c9c93877a6d7784909daab7c0b3a69a8d80736d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d74818e9ba7b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b2bcbcb9ada49c999595959595959595959595959595959595959595959595959595959fa2aab4bfbcb9ac9f9386796c605346392d2013060000000000000000020b141b222f3c4955626f7c8895a2afbbb5a99d928d8c8c9196a0aca0938679737f8c99a6b2ac9f9386796c60606d7986929facb9bcafa295897c6f6256596673808c99a6b3bfb2a5988c7f726f6f6f6f6f6d685d5245392c20130700000000000000000000000b1825323e4b5865717e848484848484848484848484848484848486929facb8c5c5b8ac9f928684848484848484848484848484919ea7b1bcc8c4b7aa9e918484848484848484848484848484848484847c6f6255483c2f221509000000030d172129313a424a505b626c717e879299a3abb5bdc7bdb5aba29892857b6e685d555d666d78818e939da4aeb6c0bcb4aaa29892877e707885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a5465717e8b9898928f8b8784807d7974818282828282828282828282828282828282828282828282828282828282828282828282828282828282828281796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b8f949fabb7c4c3bdb8b5afaca8a19e98928e8a8a8a8a8a8a8a8a8a8a8a8a8b8e9299a3afaa9e948f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0a9a9a9a9a9aaacb2bac4cecdc3b9b1acaaa9a9a9a093877a6d7784909daab7c0b3a79a8d807a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a818e9ba8b4c1b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a5b0b0b0b0b0ada8a6a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2acaeb4b0b0b0b0ac9f9386796c605346392d201008000000000000000000020a16222f3c4955626f7c8895a2afbbb9aea49d9a99999ea0a8b2a0938679737f8c99a6b2ac9f9386796c605d677784909daab7bcb0a396897d706356596673808c99a6b3bdb0a4978a7d716462626262605d564c4135291d110400000000000000000000000b1724313d4a56626c71777777777777777777777777777777777985929facb8c5bcb1a7998c807777777777777777777777777c8895a0acb8c5bdb1a4978a7e77777777777777777777777777777777776f6a5f53473a2e21150800000000050f171f282f383f44515a626c717e879299a3abb5c0c6bdb4aaa29791847a6d665d676d78818e939da5aeb6c0bbb3aaa29892867d706c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3b4854616e7b878d8985827e7b7773706d6f7475757575757575757575757575757575757575757575757575757575757575757575757575757575757575756d675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e979797979797979797979797979797989c9fa6b0bbc7cec8c7c0bbb9b2adaaa39f9a979797979797979797979797979b9fa3abb5b0a69e9c979797979797979797979797978e8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0adb5b5b5b5b7b9bdc4ccd6d5cbc3bcb8b6b5b5ada093877a6d7784909daab7c3b5a99d928d87878787878787878787878787878787878787878e939eaab6c5b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b98a3a3a3a3a3a3a3a3a3a3a3a3a3a4acafb6afafafafafafb1acaaa3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39f9386796c6053463928221a11080000000000000000000916222f3c4955626f7c8895a2afbbc0b6aea9a7a6a6aaaaaaaaa0938679737f8c99a6b2ac9f9386796c60556875828f9ba8b5bdb0a3968a7d706357596673808c99a6b3bdb0a3978a7d70645755555554524c443a3024190d0100000000000000000000000915212e3a45505a62656a6a6a6a6a6a6a6a6a6a6a6a6a6a6a717e8a98a2aebac4b8aba095887b6e6a6a6a6a6a6a6a6a6a6a6a7784909daab7c3c1b5a89b8e8275676a6a6a6a6a6a6a6a6a6a6a6a6a6a6a625f584e43372b1f12060000000000050d161d262d333f48505a616c717e879299a4afbbc0c6bcb3a9a0968f82786d686d79828f939ea5afb7c0bab2a9a19892867d706b6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e697581807c7975716e6967636065686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868605c554b4034291c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a9abb0b8bbbbbbbbbbbbbbbbbdb9b4aeaca7a4a4a4a4a4a4a4a4a4a4a4a4a4a8acafb5bdb8b0aaa8a4a4a4a4a4a4a4a4a4a4a4a49a8e8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0adb9c2c2c2c4c5c9ced6deddd5cdc8c4c3c2baada093877a6d7784909daab7c3b9aea49d9a93939393939393939393939393939393939393939b9ea5afbac5b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8b9696969696969696969696969696979fa4acb6c0bbbbbcb1a7a09d969696969696969696969696969696969696969386796c60534639332c231a100500000000000000000916222f3c4955626f7c8895a2afbbbdb2a8a09d9d9d9d9d9d9d9d938679737f8c99a6b2ac9f9386796c605b6774818e9aa7b4bdb0a3968a7d706357596673808c99a6b3bdb0a3978a7d7064574a49494745413a32281e130800000000000000000000000005111d29343f485056585e5e5e5e5e5e5e5e5e5e5e5e5e5d6775828f9baab4bfc0b5ab9d9083776a5f5e5e5e5e5e5e5e5e576673808c99a7b1bcc5b8ab9f9285796d605e5e5e5e5e5e5e5e5e5e5e5e5e5e55534e463c31261a0f03000000000000040b141c2228363f48505a616c717e87939fa4aeb7c0c5bbb2a89f948d80746e7a828f949ea5afb7c1b9b1a8a19792867d706b616c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57656f7573706d6665615e575653595b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c53514b43392f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba8aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb1b2b7bab8b4b1b1b1b1b1b1b1aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea79a8e8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0adb9bcbcbcc1c2c6cbd2dbdad1cac4c0bfbcbaada093877a6d7784909daab7c3c0b6aea9a7a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a8aaafb7c1c5b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366727f8989898989898989898989898989898a939aa4afbbc8c4b8aca09590898989898989898989898989898989898989898986796c605349443e352c22170b00000000000000000916222f3c4955626f7c8895a2afbbb8aca0969190909090909090908679737f8c99a6b2ac9f9386796c605a6773808d9aa6b3bdb0a3968a7d706360606673808c99a6b3bdb0a3978a7d7064574a3d3c3a3935302820160c02000000000000000000000000010c18222d363f454a4b51505557606060606060606060606d7a86929facb8c5bbafa4998c7f726557606060606060606060626f7b8895a0acb8c5baaea2988a7d70636060606060606060605f5e5951514847433c342a20150a0000000000000000020a1117242d363e48505a616c727f8b929ca5afb8c2c3bab0a69d928a7e7a8390949fa6afb7c1b9b1a7a09691857c6f6b61596c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b45545d65686663605c5454524d49464d4e4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4745403931271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a4a6acb4bec1bdbdbdb6aea8a6a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19a8e8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0adafafafafb4b6bac1c9d2d1c8bfb8b4b2afafada093877a6d7784909daab7c3c8c0b9b5b3adadadadadadadadadadadadadadadadadadadadb4b6bac1c9c5b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c8073666e7b7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e88939facb9c6c3b6aa9d90837d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d706357575550473e33281c1004000000000000000916222f3c4955626f7c8895a2afbbb7aa9d918484848484848484848378737f8c99a6b2ac9f9386796c605a6673808d99a6b3bdb0a3968a7d706d6d6d6d73808c99a6b3bdb0a3978a7d7064574a3d312d2c29241e160e04000000000000000000000000000006111b242d343a3d45505a61646c6c6c6c6c6c6c6c6c6c717e8b98a3aebac6b9ac9f93877b6e6c6c6c6c6c6c6c6c6c6c6c6c6a7784919daab7c4beb4aa9a8e8174666c6c6c6c6c6c6c6c6c6c6a63594e3c3a37312a22180e030000000000000000000006121b242c363e48505a626d73808d939da6b0bac3c2b8aea49f92868490959fa6b0b8c0b8b0a79f9591847c6f6a60595f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2933424b54595c5a5653514a4846423d3a404142424242424242424242424242424242424242424242424242424242424242424242424242424242424242423a38342f271f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e95959595959595959595959595959595959595959595959595959595979aa2acb7bcbdbdb9aea49c99959595959595959595959595959595959595959595959595959595958e8174675b4e4134281b0e0100000714202d3a4753606d7a8693a0a2a2a2a2a2a7a9afb7c1cbcabfb5ada8a6a2a2a2a093877a6d7784909daab7c3d0cbc5c1c0babababababababababababababababababababac1c2c6cbd0c5b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c807366696e70707070707070707070707070707076828f9cabb5c0c5b9ac9f92867a70707070707070707070707070707070707070706b646464615a5044392d201408000000000000000916222f3c4955626f7c8895a2afbaaea194877b7777777777777777776d737f8c99a6b2ac9f9386796c60596673808c99a6b3bdb0a3978a7e797a7a7a7a79808c99a6b3bdb0a3978a7d7064574a3d3124201d19130c040000000000000000000000000000000009121b2229303d4955616c717979797979797979797979828f9caab4bfc2b6a99c8f8279797979797979797979797979797979808c99a6b3bfc5b8ab9e9285787979797979797979797979756a5e5245382b262018100600000000000000000000000009121a242c363e48515b636e74818e949fa8b1bbc5c0baaea298929196a0a7b0b8c0bbafa69e9590837b6e6a60584f5f6c7885929fabb8bcafa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d1721303942494d4f4d494644403b3a36302d343535353535353535353535353535353535353535353535353535353535353535353535353535353535353535352d2c29231d150d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b68758188888888888888888888888888888888888888888888888888888888888a909aa6afafb0b1b1a89c928c88888888888888888888888888888888888888888888888888888888888174675b4e4134281b0e0100000714202d3a4753606d7a86939696969696969b9ea5afbac6c4b8ada39c999696969693877a6d7784909daab7c3c3c3c3c3c3c3c5c7cbd1c6c6c6c6c6cfcac6c5c3c3c3c3c3c3c3c3c3c3c3c3b8ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfbfb3a6998c8073717171717171717171717171717171717171717e8a99a4afbbc7bbafa3998b7f7271717171717171717171717171717171717171717171706c6155493c3023160a000000000000000916222f3c4955626f7c8895a2afbaaea194877b6e6c6c6c6c6c6c6c6c6c737f8c99a6b2ac9f9386796c60596673808c99a6b3bfb2a69a908a8686868686868c929ca8b4bdb0a3978a7d7064574a3d312417110d080200000000000000000000000000000000000009111824313e4b5764717e86868686868686868686868f949eaabcc6c3b7ab9f948f868686868686868686868686868686868c929ca8b4c1c6b9ada1978a868686868686868686868687796c5f5346392c1a150e06000000000000000000000000000008121a242c363f49525c606d78828f95a0a9b3bdc7bfb4aaa29f9ea0a8b1b9beb6afa59d948f827a6e695f574e525f6c7885929fabb5b5afa396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1e2730373d4142403d3a38342e2d2a252027282929292929292929292929292929292929292929292929292929292929292929292929292929292929292929201f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7e8a97a1a2a3a3a4a4a8998c807b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a6e6154473b2e2114080000000714202d3a4753606d7a86898989898989898e939ea9b6c2c0b4a89c918c8989898989877a6d7784909daab6b6b6b6b6b6b6b6b9bbc0c7cfd9d3d7cdc5bebab8b6b6b6b6b6b6b6b6b6b6b6b6b6ab9e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfc2b5a89b8f817e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e87939facb9c6c0b5ab9d90837e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7064574a3d3124170a000000000000000916222f3c4955626f7c8895a2afbaaea194877b79797979797979797979797f8c99a6b2ac9f9386796c60596673808c99a6b3bfb6aca29a97939393939393999ca4aeb9bdb0a3978a7d7064574a3d3124170a010000000000000000000000000000000000000000000b1824313e4b5764717e8a939393939393939393939c9ea6b0bbcec7bbb0a69f9c93939393939393939393939393939393999ca4aeb9c4c9beb3a9a194939393939393939393939286796c5f5346392c200a030000000000000000000000000000000008121b242d374044505c666d7a839197a2abb5c0c6bcb4aeacaaacb2babcb4aca49f928e82796d685e574e45525f6c7885929fa9a9a9a9a396897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c151e262c31343533302d2c2823201e1a131a1b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e71767676767676767676756e73808c949595969697989896887b6e6e74767676767676767676746e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685e5246392d201b100400000613202d394653606c787c7c7c7c7c7c7c7c818e9ba7b4c1bfb2a6998c7f7c7c7c7c7c7c786d7784909da9a9a9a9a9a9a9a9a9acafb5bdc7d1dbcfc5bbb3adaba9a9a9a9a9a9a9a9a9a9a9a9a9a99e9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfc3b6aa9e938f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b9399a4afbbc7c7b8aca095908a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a84776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2afbbafa3978d8786868686868686868686868c919ca8b4ac9f9386796c60596673808c99a6b3bfbdb4aca6a3a0a0a0a0a0a0a6a8aeb6bfbdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000b1824313e4b5764717e8a979f9f9f9f9f9f9f9f9fa8aab0b8c1ccccc2b8b0aba99f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa6a8aeb6bfcacfc5bbb3adab9f9f9f9f9f9f9f9f9f9f9286796c5f5346392c201306000000000000000000000000000000000009121b2528343f4a545d686e7b859299a3afbbc1c6bfbab8b7b9bdbbb3aaa39a938c80786d675d564d4545525f6c7885929c9c9c9c9c9c96897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b212528292723201f1c1814120e090e0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2b36404a52565e61626262626262626262626262626265717f8283838383838383838275768287878889898a8a8b8b8c84786a74818383838383838383838174686262626262626262626262626262615e56544b42372c211509000006121f2b3844505b666c6f6f6f6f6f6f6f73808c99a6b3bfbdb0a4978a7d716f6f6f6f6f6d667784909d9d9d9d9d9d9d9d9d9d9fa3abb5c0cbd6cabeb3a9a29f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9285786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfc6bbafa59e9b9797979797979797979797979797979797979797989fa4abb5c0ccc8bcb1a7a09d979797979797979797979797979797979797979797979184776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2afbbb4a99f97949393939393939393939393999ca3adb8ac9f9386796c60596673808c99a6b3bfc6bdb6b2b0adadadadadadb3b4b9bfc8bdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4acacacacacacacacb5b7bbc1cac8c8cac2bbb7b6acacacacacacacacacacacacacacacacb3b4b9bfc8c8c8cdc5beb9b8acacacacacacacacac9f9286796c5f5346392c201306000000000000000000000000000000000000091317232e38424c565f69707d87929fa6b0bac4cac6c5c4c4bab2a9a19892887f746d665d554c443b45525f6c78858f8f8f8f8f8f8f8f897c70636b7884919eabb7bdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002091015191b1c1a161312100c0705020001020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1723303c47525c64676b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b73808d8f8f8f8f8f8f8f8f85796d797a7b7b7c7c7d7e7e7f7f7e716b77848f8f8f8f8f8f8f8f8f84776b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b68655d54493d3125190c0000030f1c28333f4a545b606363636363636673808c99a6b3bfbdb0a4978a7d716463636363606a778490909090909090909090909299a3afbbc7d3c6baada297929090909090909090909090909090909085786b5f5245382c1f1200000000000000000c1926333f4c5966727f8c99a5b2bfccc1b8afaaa8a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4acafb5bdc7d2cec3b9b1acaaa4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49e9184776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2afbbbbb1a9a3a19f9f9f9f9f9f9f9f9f9f9fa6a8adb5b9ac9f9386796c60596673808c99a6b3bfc0c0c0c0bdb9b9b9b9b9b9bfc0c0c0c0bdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1b9b9b9b9b9b9b9bbbbbbbbbbbbbbbbbbbbbbbbb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bbbbbbbbbbbbbbbbbbbbbbbbb9b9b9b9b9b9b9b9ac9f9286796c5f5346392c2013060000000000000000000000000000000000000006111c26303a434d57606b727f8c949ea8b2bdc7d2d2c9bdb2a8a19792867e726d605c544b433a32424f5b6875818282828282828282827c6f626b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0e0f0d0a070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1926333f4c58646e747878787878787878787878787878787878808d9a9c9c9c9c9c9c9286797878787878787878787878787878787884919c9c9c9c9c9c9c91847878787878787878787878787878787878756f655a4d4134281b0f0000000b17222d38424a50535656565656596673808c99a6b3bfbdb0a4978a7d7164575656565b687581838383838383838383838387929facb9c5d2c5b8ab9f9285838383838383838383838383838383838276695c4f4336291c1000000000000000000c1926333f4c5966727f8c99a5b2bfc1c1c1bbb6b5b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b9bbc0c1c1c1c1c1c1bcb8b7b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1aa9e9184776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2afbbbebbb4afaeacacacacacacacacacacacb2b4b8beb9ac9f9386796c60596673808c99a6b3b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4afafafafafafafafafafafafafafafafafafafafafb0b2b6bdc6c6c6c6c6c6c7beb8b3b2afafafafafafafafafafafafafafafafafafafafac9f9286796c5f5346392c20130600000000000000000000000000000000000000000a151e28313c454f59606c77828f96a1abb5c0ccd2c5b9aca19691857d716c635b504a42393134414d59656f757676767676767676766f6a5f6b7884919eabb7bdb0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a677480858585858585858585858585858585858586929fa9a9a9a9a9a29889858585858585858585858585858585858587939fa9a9a9a9a99f938785858585858585858585858585858585858275685c4f4235291c0f00000006111c262f383f4446494949494d596673808c99a6b3bfbdb0a4978a7d7164574a494959656f75767676767676767676767682909ca9b6c3cfc4b7ab9e9184787676767676767676767676767676767670665a4e4135281c0f00000000000000000c1926333f4c5966727f8c99a5b2b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5aa9e9184776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2afb1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1ac9f9386796c60596673808c99a6a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3a6acb4bdc8d3d2d4c9beb5ada7a5a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29f9286796c5f5346392c2013060000000000000000000000000000000000000000030c161f2a333d44505b656d7a849199a4afbbc4d0c4b7ab9e91847b6f6b615a51443f383027313d48535d6568696969696969696969625f586b7884919eabb7b9b0a4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d101013131313131313131313130c0c0a06020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060708080808080808080807060401000000000000000000000000000105050505050505050500000000000000000000000000000e1b2834414e5b6774818e929292929292929292929292929292929298a2aeb6b6b6b4aaa19792929292929292929292929292929292929399a4afb6b6b6afa49993929292929292929292929292929292928f8276695c504336291d10000000000a141d262d3338393c3c3c404d596673808c99a6b3bfbdb0a4978a7d7164574a3e48535d65686a6a6a6a6a6a6a6a6a6a727f8c99a9b3bec9c5b9aca196887c6f6a6a6a6a6a6a6a6a6a6a6a6a6a6a69665e54493d3225190d00000000000000000c1926333f4c5966727f8c99a5a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89e9184776b5e5144382b1e11050000000000000916222f3c4955626f7c8895a2a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49f9386796c60596673808c999a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a978a7d7064574a3d3124170a000000000000000000000000000000000000000000000b1824313e4b5764717e8a9595959595959595959595959595959595959595959595979aa2acb6c2cedecfc3b8ada39b98959595959595959595959595959595959595959595959286796c5f5346392c201306000000000000000000000000000000000000000000040d182127333f49535e686f7d87939fa8b2bec7c5b8ac9f92857a6e6159504840342e261e2c37424b53595b5c5c5c5c5c5c5c5c5c55535e6b7884919eabacacaca4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1c1d2020202020202020202020191816120d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090c0c0c0c0c0c0c0a090704000000000001070c1013141515151515151515151413110d07010000000000000003070b0d0e12121212121212121209090703000000000000000000000e1b2834414e5b6774818e9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2aab4bfc2c2bcb3a9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa4abb5c0c2c0b5aba49f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9c8f8376695c504336291d1000000000020b141c22282b2d303033404d596673808c99a6b3bfbdb0a4978a7d7164574a3e414b53595b5d5d5d5d5d5d5d5d5d626f7c8897a1adb9c6c9bdb2a8998c7f7366565d5d5d5d5d5d5d5d5d5d5d5d5c5a544c42382c21150900000000000000000c1926333f4c5966727f8c999b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9184776b5e5144382b1e11050000000000000916222f3c4955626f7c889598989898989898989898989898989898989898989898989898989386796c60596673808c8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7d7064574a3d3124170a000000000000000000000000000000000000000000000b1824313e4b5764717e8888888888888888888888888888888888888888888888888a909aa6b2bed0d2ccc0b3a79b918b888888888888888888888888888888888888888888888887796c5f5346392c20130600000000000000000000000000000000000000000000060f17222d38414c56606b74808d96a0acb6bab8b5aea2988d8074695f53463a2d231c1425303942484d4f4f4f4f4f4f4f4f4f4f48515e6b7884919e9f9f9f9f9f978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151c2226292a2d2d2d2d2d2d2d2d2d2d2d2625221e18120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13151619191919191919171614100b050000030b12181d1f2021212121212121212121201d18130c040000000001080e13171a1a1f1f1f1f1f1f1f1f1f1615130f0a0400000000000000000e1b2834414e5b6774818e9aa7ababababababababababababababacaeb4bcc6d0cec5bbb3adabababababababababababababababababacafb5bdc7d2c7bdb5afacababababababababababababababa99c8f8376695c504336291d100000000000020a11171c1f20232633404d596673808c99a6b3bfbdb0a4978a7d7164574a3e3941484d4e505050505050505053606c7885929eabb8c5c7c3b6a99d908376685e5250505050505050505050504f4e49423a30261b100500000000000000000c1926333f4c5966727f8c8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776b5e5144382b1e11050000000000000916222f3c4955626f7c888b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b86796c605763707d81818181818181818181818181818181818181818181818181817c6f6255483c2f221509000000000000000000000000000000000000000000000714212d3a4754606d7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7e8a97a3b0bdc4c5c6bdb2a8988b7f7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c6f6255483c2f22150900000000000000000000000000000000000000000000000006111b262f3a444f59606d7984919aa4afaeacaba39f9c92867b6e6155483b2e2215141e2730373d414243434343434343434345515e6b788491929292929292928a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f272d323637393939393939393939393933322f2a231c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f151b1f2223252525252525252323201c161008030d151d24292c2d2e2e2e2e2e2e2e2e2e2d2c29241d160d0c0c0c0c0c13191f2426272b2b2b2b2b2b2b2b2b23221f1b160f07000000000000000e1b2834414e5b6774818e9aa7aaaaaaaaaaaaaaaaaaaaaaaaaaaaabadb3bbc5cfc7bdb5afacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaeb4bdc6d1c6bdb4aeacaaaaaaaaaaaaaaaaaaaaaaaaaaaaa99c8f8376695c504336291d1000000000000000060b0f12131a2633404d596673808c99a6b3b8b8b0a4978a7d7164574a3e31373d40424343434343434344505b6575818e9ba8b4bfbab9b7ac9f93877a6e6154474343434343434343434343413d3830281e140a0000000000000000000a1724313d4a5764707e818282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828074675a4d4134271a0e010000000000000714212e3a4754616d7a7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e71655855616b7074747474747474747474747474747474747474747474747474746f6a5f53473b2e211508000000000000000000000000000000000000000000000713202c3945525d686d6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f717e8b98a4b1b6b7b8bab9ada196877b6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a5f53473b2e211508000000000000000000000000000000000000000000000000000a141d28323d45515d67707d88939faaa29f9b99928f8b87807366594d4033261a0d151e252c31343536363636363636363744515e6a77848686868686868686867e7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2831383e424346464646464646464646463f3e3a352e251c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272b2e2f32323232323232302f2c27211a110b151f272f35393a3b3b3b3b3b3b3b3b3b3a39352f281f1619191919191d242b303334383838383838383838302f2c27211910070000000000000e1b2834414e5b6774818e9a9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9ea1a9b3bec9c0b5aba49f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa3abb4bfcbbfb4aba39f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9c8f8376695c504336291d1000000000000000000003060d1a2633404d596673808c99a6ababababa4978a7d7164574a3e312c313435373737373737333f495365717e8b98a8b2b4aeacaaa8a49a8b7e7164584b3e3737373737373737373635322c261e160c020000000000000000000a1623303c4955616c7075757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575746e64584c3f33261a0d000000000000000713202d3946525e686d7171717171717171717171717171717171717171717171717171717171716c62564f5961636767676767676767676767676767676767676767676767676767625f584e43372b1f12060000000000000000000000000000000000000000000004111d2935414c565d60626262626262626262626262626262626262626262626575818e9ba6a8a9aaabadb3ab9e9184786862626262626262626262626262626262626262626262625f584e43372b1f120600000000000000000000000000000000000000000000000000020b16202935404b55606b75818e989a98928e8b86837f7b736e63574b3f3225190c0c141b20252828292929292929292936434f5b677277797979797979797979706c6155493c3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27313a434a4e5053535353535353535353534c4b463f372e23180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32373b3c3f3f3f3f3f3f3f3d3c38332c231a121d2731394045474848484848484848484745413a3128262626262626262f363c3f414545454545454545453c3b38322b22190f0400000000000e1b2834414e5b6774818e909090909090909090909090909090909297a1adb9bfbbafa4999390909090909090909090909090909090909299a3aebabfbaaea39992909090909090909090909090909090908f8376695c504336291d1000000000000000000000000d1a2633404d596673808c999e9e9e9e9e9e978a7d7164574a3e31242427282a2a2a2a2a222d3b4855616e7b8896a1a6aba39f9d9b99978e8175685b4f42352a2a2a2a2a2a2a2a292825211b140c04000000000000000000000814202d39444f5961646868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867645c52473c3023170b0000000000000005111d2a36414c565e61656565656565656565656565656565656565656565656565656565656565625a50474f55575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e463c32261b0f0300000000000000000000000000000000000000000000010d19242f3a444c5254555555555555555555555555555555555555555555606c788592999a9b9c9d9fa2a9a29b8f8275685655555555555555555555555555555555555555555555534e463c32261b0f030000000000000000000000000000000000000000000000000000050e18242f39434f59616e7b86918e8a85827e7a76726e69635c52473b2f23160a02090f15191b1c1c1c1c1c1c1c1c27333f4b5660676a6c6c6c6c6c6c6c6c6c64615a5044392d201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d38434d555b5d6060606060606060606060595751493f352a1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b343d4347494c4c4c4c4c4c4c4a48443d352c2118242f39434b515354545454545454545454514b433a2f323232323232323840474c4d5252525252525252524948433d342b21160a00000000000d192633404c5966737f838484848484848484848484848484848385929eabb3b3b3ac9f9387838484848484848484848484848484848387929facb3b3b3ac9f928783848484848484848484848484848484838174675b4e4134281b0e00000000000000000000000d1a2633404d596673808c92929292929292928a7d7164574a3e3124171b1b1d1d1d1d1d212d3a46535f697884919b99979992908e8c8a8884786b5e5145382b1e1d1d1d1d1d1d1c1c1915100a02000000000000000000000004101c28333e474f55575b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a58524a40362b1f130700000000000000010d1925303a444c52545858585858585858585858585858585858585858585858585858585858585650483f44484a4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4847433c342a20150a00000000000000000000000000000000000000000000000008131e28323a414547494949494949494949494949494949494949494955626f7c888b8c8d8e8f9192979495978c7f7266594c49494949494949494949494949494949494949494847433c342a20150a0000000000000000000000000000000000000000000000000000000007121d28313d46535e69738085817d7975716d6865615e57524940352a1f1307000004090c0e0f10101010101017232e39444e565b5e5f5f5f5f5f5f5f5f5f575550483e33281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a26323e4a555f666a6c6c6c6c6c6c6c6c6c6c6c66635b51463a2f22160a000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e54565858585858585856554f473d33271d2935404b555d60616161616161616161605d554b413f3f3f3f3f3f3f3f404a52585a5e5e5e5e5e5e5e5e5e56544f463d32271b0f03000000000c1925323e4b57636d737777777777777777777777777777777777808d9aa6a6a6a6a69f9286797777777777777777777777777777777784919ea6a6a6a6a69e91847777777777777777777777777777777777746f64594c4033271a0d00000000000000000000000c1926333f4c5966727f858585858585858585857d7063574a3d3024170a0f10101010121e2a36424d576875818e8e8c8a888684817f7d7b786c605346392d2013101010101010100f0d090500000000000000000000000000000b17212c353e44494a4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d4c4740382f24190e03000000000000000008131e28323a4146474b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a453f36383c3d41414141414141414141414141414141414141414141414141413c3b37322a22180e04000000000000000000000000000000000000000000000000010c1620282f35393a3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c4754616d7a7d7e7f80818384858687898a897d706356493d3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b37322a22180e0400000000000000000000000000000000000000000000000000000000010c161f2a36424d57606d787974706d6764615d5654534d4540372e24190e0200000000000202030303030306121d28323b444b4f515353535353535353534a49443e362c22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936424e5b6671767979797979797979797979726d63574b3e3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e586062656565656565656361594f44382c1f2c3945515d676d6e6e6e6e6e6e6e6e6e6d675d514c4c4c4c4c4c4c4c4c4c525c64676b6b6b6b6b6b6b6b6b6360594f43382c1f1307000000000a16232f3b46515b63666a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a73808d999999999999999285796c6a6a6a6a6a6a6a6a6a6a6a6a6a6b778491999999999999999184776b6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a67645d53483c3024180b00000000000000000000000c1825323e4b57636d7278787878787878787878706b6155483c2f23160a02040404020e1a26313e4b5865717f8482807d7b79777572706e6c655b5044372b1f120504040404040302000000000000000000000000000000000005101a232c33393c3d42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242413f3c362f261d1208000000000000000000020c1620283036393a3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d3a342d2c2f3034343434343434343434343434343434343434343434343434342f2e2b26201810060000000000000000000000000000000000000000000000000000040d161e24292c2d2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f3946525e686d70717273757677787a7b7c7d7f796d6054473a2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2b2620181006000000000000000000000000000000000000000000000000000000000000040d1a25313b44515c666d6c6663605c5554524c4846423b332e251c120700000000000000000000000000000b16202932393f43444646464646464646463d3c39332c241a10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a768386868686868686868686867f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a6f72727272727272706b6155483c2f202d3a4753606d797b7b7b7b7b7b7b7b7b796d60595959595959595959595959646e747878787878787878786f6b6054483b2f2215090000000006121e2a3540495157595d5d5d5d5d5d5d5d5d5d5d5d5d5d5d6773808c8c8c8c8c8c8c8c8c86796c5f5d5d5d5d5d5d5d5d5d5d5d5e6b77848c8c8c8c8c8c8c8c8c84776b5e5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b59534a41362b20140800000000000000000000000a16222f3b46515b63666b6b6b6b6b6b6b6b6b6b6361594f44382c2014070000000000091724313d4a56626d71777573716e6d6668666461605b53493f33271b0f030000000000000000000000000000000000000000000000000008111a21282d3031353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353433302b241d140b0100000000000000000000050e161e252a2d2e323232323232323232323232323232323232323232323232323232323232312e2922202324272727272727272727272727272727272727272727272727272722211f1b150e0600000000000000000000000000000000000000000000000000000000040c13191d202122222222222222222222222222222222222935414c565e616364666768696a676d6e6f70726d675d5145392c22222222222222222222222222222222222222211f1b150e06000000000000000000000000000000000000000000000000000000000000000009141f2834404a545c60605b5453514b4746413b3a363129211c130a000000000000000000000000000000040e1720282e33363739393939393939393931302d28221a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909393939393939393938c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c7f7f7f7f7f7f7f7d7063564a3d3024313d4a5764707d8787878787878787877e72656565656565656565656565656774808585858585858585857c6f6356493c3023160900000000020d19232e3740464b4c51515151515151515151515151515663707d8080808080808080807f72665951515151515151515151515865727f8080808080808080807f72655851515151515151515151515151514e4c4841382f251a0f03000000000000000000000006121e2a353f495157595f5f5f5f5f5f5f5f5f5f57554f473e33281c100400000000000915212e3a45505a62656a68666462605c5459575553504941382d22170b0000000000000000000000000000000000000000000000000000000810171c202324282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282726231f19120b02000000000000000000000000050c13191d202125252525252525252525252525252525252525252525252525252525252524211d181416171b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1515120f0a0400000000000000000000000000000000000000000000000000000000000001080d111314161616161616161616161616161616161925303a444c52545658595a5b5c555c6061626465605d554b4135291d16161616161616161616161616161616161515120f0a04000000000000000000000000000000000000000000000000000000000000000000030c18232e39424a515353504a4745403a3935302d2a251f170f0a0100000000000000000000000000000000050e161d23272a2b2c2c2c2c2c2c2c2c2c2423201c17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909d9f9f9f9f9f9f9f998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808b8b8b8b8b8b8b8275685b4f423528313d4a5764707d8a949494949494948b7e72727272727272727272727272727274818e91919191919191897c706356493d3023160a000000000007121c252e353b3e40444444444444444444444444444854606b70737373737373737373726d63574b4444444444444444444a56626d72737373737373737373726d62564a4444444444444444444444444441403c362f261d1308000000000000000000000000020d18232e373f464b4c525252525252525252524a48443e352c21170b00000000000005111d29343f485056585e5b59575553504a4c4a4846443f382f261b110600000000000000000000000000000000000000000000000000000000050b101416171c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1a1a17130e0801000000000000000000000000000002080d1113141818181818181818181818181818181818181818181818181818181818181715110c07090a0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e09080603000000000000000000000000000000000000000000000000000000000000000000000104070709090909090909090909090909090908131e28323a4146474a4b4c4d4e504b51535456575854514b433a2f24180d090909090909090909090909090909090908060300000000000000000000000000000000000000000000000000000000000000000000000007121c27303940444646443f3a38342f2d2924211e1a140d0500000000000000000000000000000000000000040b12171b1d1e202020202020202020171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9acacacacaca5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c98989898988e8275685b4f423528313d4a5764707d8a97a1a1a1a1a19b8e817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f83909d9e9e9e9e9e96897c706356493d3023160a0000000000000a131c232a2f323337373737373737373737373738444f59606366666666666666666666635b51463b373737373737373a46515b626566666666666666666665625b51463a3737373737373737373737373433302b251d140b010000000000000000000000000007121c252e353b3e3f454545454545454545453d3c38332c231a1005000000000000010c18222d363f454a4b514f4d4a4846443f3f3d3b3937332d261d140a0000000000000000000000000000000000000000000000000000000000000004080a0a0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0d0b0703000000000000000000000000000000000000010507070b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0905010000000101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1620283035393a3d3e3f40424340454748494a4b4745413a31281d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3938332d2c2923201d1914120e090300000000000000000000000000000000000000000000060b0e10111313131313131313130a0a080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6b9b9b9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a5a5a59b8e8275685b4f423528313d4a5764707d8a97a3aeaeaeaa9e938e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c90959fababababa396897c706356493d3023160a000000000000010a12191e2325262a2a2a2a2a2a2a2a2a2a2a27333d474f54565959595959595959595957514940352a2a2a2a2a2a29343f49515658595959595959595959585651493f34292a2a2a2a2a2a2a2a2a2a2a282724201a130b020000000000000000000000000000000a131c232a2f323338383838383838383838302f2c28211a1108000000000000000006111b242d343a3d3e4442403e3b3a38342e312e2d2b27221b140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e161e25292d2e30313334352f34383a3b3c3d3f3a39352f281f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d2d2b28221f1c1813110d08050200000000000000000000000000000000000000000000000000000204040606060606060606060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3c6bfb2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b2a89b8e8275685b4f423528313d4a5764707d8a97a3b0babbafa59e9b989898989898989898989898989898989d9fa7b1b8b8afa396897c706356493d3023160a0000000000000000070d121619191e1e1e1e1e1e1e1e1e1e1e212b353d44484a4d4d4d4d4d4d4d4d4d4c4b4640372e231e1e1e1e1e232d373f464a4c4d4d4d4d4d4d4d4d4d4c4a463f372d231e1e1e1e1e1e1e1e1e1e1e1b1a18140f080100000000000000000000000000000000010a12181e2225262c2c2c2c2c2c2c2c2c2c2423201c1710080000000000000000000009121b22292e3132373533312f2d2c28232422201f1b17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607090b0b0a09070604000000000000000000000000000000000000000000000000000000000000000000020608080807050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021232526272823292c2d2e2f31322d2c29241d160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20201f1c1713100c07050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000106090b0c0e1a2633404d596673808c99a6b3a89b8e8275685b4f423528313d4a5764707d8a97a3b0bdc1b7afaaa8a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5aaabb1b9c3bcafa396897c706356493d3023160a00000000000000000002060a0c0d111111111111111111110f1a232b33383c3d4040404040404040403f3e3b352e251c12111111111b252d343a3e3f4040404040404040403f3e3a342d251b11111111111111111111110e0d0b08030000000000000000000000000000000000000000070d121618191f1f1f1f1f1f1f1f1f1f171614100b050000000000000000000000000911181d2124252b28262422201f1c17171513120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070d11131416171817161312100c07000000000000000000000000000000000000000000000000000000000003090f1214151414110d080200000000000000000000000000000000000000000000000101020303040405000004060707070707070707070707070706030000050404030302010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1113141718191a1b181c1f202123242521201d18130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10121313120f0b06040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000060d121618191b1b2633404d596673808c99a6b3a89b8e8275685b4f423528313d4a5764707d8a97a3b0bdc9c1bbb6b5b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b6b8bcc3cbbcafa396897c706356493d3023160a00000000000000000000000000000404040404040404040408111a21272c2f3033333333333333333333322f2a231c130a04040409131b23292e313233333333333333333332312e29231b130904040404040404040404010100000000000000000000000000000000000000000000000002060a0c0c121212121212121212120a0a0704000000000000000000000000000000060c111517181e1c1a17151312100c0608060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013181d20202324252422201f1c1812100b0400000000000000000000000000000000000000000000000000060e151a1f212221201e19140d05000000000000000000000000000003060608090a0b0c0d0e0f1010111112070c10121314141414141414141414141312100c06121111100f0f0e0d0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070a0b0c0d070c101314151617181413110d070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070606030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000010911181e22242528282833404d596673808c99a6b3a89b8e8275685b4f423528313d4a5764707d8a97a3b0bdc6bcb4aeacababababababababababababababababacaeb5bdc6bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000080f161c2022232626262626262626262625221e18120a01000000010911181e2224252626262626262626262524221e1811090100000000000000000000000000000000000000000000000000000000000000000000000000000000000505050505050505050500000000000000000000000000000000000000000105090b0b110f0d0b0807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404040404040404040404040404040404040404040404040404040404040000000000000000000000000000000000030b12181c1f24292c2d303131312f2d2c28231c1b160d080200000000000000000000000000000000000000000001070f1820262b2e2f2e2d2a251e170e050000000000000001050707060b0f121315161718191a1b1c1c1d1d1e1e1f181c1f202021212121212121212120201f1c171f1e1e1d1d1c1b1b1a1413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000004060708090a0c07060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000009131b23292e313235353535404d596673808c99a6b3a89b8e8275685b4f423532313d4a5764707d8a97a3b0bdbfb4aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3abb5bfbcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000050b101416171a1a1a1a1a1a1a1a1a191816120d0700000000000000060d121618191a1a1a1a1a1a1a1a1a191816120d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b111111111111111111111111111111111111111111111111111111111111110b0b0905010000000000000000000000070c151c23282c2f35393a3c3e3e3d3c3a38342e2c272119130c0400000000000000000000000000000000000000040c1318212a31373a3b3b3936302920170d020000000306080d11131417171c1f202123242526272828292a2a2b2b2c23282c2d2d2d2d2d2e2e2e2d2d2d2d2d2c28232c2b2b2a2a29282727201f1d18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060707070808080706050300000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000006111b252d343a3e3f41414141414d596673808c99a6b3a89b8e8275685b4f42403e3b3d4a5764707d8a97a3b0bdbaaea29892929292929292929292929292929292929299a3aebbbcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000407090a0d0d0d0d0d0d0d0d0d0c0c0a06020000000000000000000106090b0c0d0d0d0d0d0d0d0d0d0c0b090601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0c0e0f1011121213131313131313131312121211100f0e0c0a07070401000000000000000000000000000000000000000000000000000000000000000000000000060c111517181e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e181715110c060000000000000000010911191e272e34383a404547494a4b4a4946444039383229241e160e040000000000000000000000000000000000070d161d2429333c4347484746413b32291e140800060b101213191d20212422282b2d2e2f3032333434353636373738382e34383a3a3a3a3a3a3a3a3a3a3a3a3a38342e3838373736363534332d2c29241d150d03000000000000000000000000000000000000000000000000000000000000000000000000000003060707080809090909080706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000508070c10121314141515141413120f0b060807050200000000000000000000000000000000000000000001050707090a0b0c0d0d0d0d0d0d0c0b0b0907070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000010d18232d373f464a4c4e4e4e4e4e4e596673808c99a6b3a89b8e8275685b4f4d4d4b47464a5764707d8a97a3b0bdb8ac9f92868585858585858585858585858585858587929facb9bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c10131416191b1c1d1e1f1f1f1f2020202020201f1f1f1f1e1d1c1b19171413110d08040100000000000000000000000000000000000000000000000000000000000000000910171d2124242a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2524211d171109000000000000020a131b232b30394044464b5153565758575553514a48443d35302820160e040000000000000000000000000000020810191f282f353f464e535554524c443b3025190d0e11171c1f2025292d2e302d3338393b3c3d3e3f40414243434444454546404446474747474747474747474746443f464545444443424241403a38352f271f150b010000000000000000000000000000000000000000000000000000000000000000030608060b10121314151515161616151413110d080705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111517181c1f20212121212121201f1b17181514120e0902000000000000000000000000000000010406080d111314161718191a1a1a1a1a1a191817161413110d080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000006121e29343f495156585b5b5b5b5b5b596673808c99a6b3a89b8e8275685b5959595854524d5764707d8a97a3b0bdb1a5988b7f78787878787878787878787878787878818e9ba7b4bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000020507080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12181d1f20232527292a2b2b2c2c2c2c2c2c2c2c2c2c2c2c2b2b2a2927262321201d1913100d0701000000000000000000000000000000000000000000000000000000000009121b22282d30313737373737373737373737373737373737373737373737373737373737373732312e29221b120705010000000a141c252d353d424a5153555d606364646462605c54544f45413a322820160b02000000000000000000000000040c1319222b313a414550585f62615e564c41362a1d141a1c23282b2d3035393a3d403f444648494a4b4c4d4e4f4f5050515152524a5153535454545454545454545353504a5252515150504f4e4e4d4745403931271d1207000000000000000000000000000000000000000000000000000000000000030a0f121515171c1f20212122222223222221201d191413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d212323282c2d2d2e2e2e2e2d2d2b27222521201e1a140e0902000000000000000000000001070d111314191d2021222425262627272727262625242321201d191414110e0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020303030303030303030303030303030303030303030304101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3326190c03030303030303030303030303030303030302010000000000000000000916222e3a46515b6265686868686868656673808c99a6b3a89b8e8275686565666665615e575764707d8a97a3b0bdb1a5988b7e726c6c6c6c6c6c6c6c6c6c6c6c6c6c74818e9ba7b4bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000002090e12141514120e09030000000000000000000000000000000000000000000000000000000000000000000000020608080c0b0906010000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f24292c2d30323436373738393939393939393939393938383736363432302d2c2924201d18120c0400000000000000000000000000000000000000000000000000000006101b242c34393d3e444444444444444444444444444444444444444444444444444444444444443e3d3a342d241b13110d080209131c262e373f474f545c6064676d6f7171706f6d66636059524c443a32281d140a0000000000000000000000070e161e2529343c434b515a626a6e6e685e5246392e231f252a2e34383a3d4146474a4d4a505354565758595a5b5b5c5d5d5e5e5f5f5f5c606060606061616160606060605c5f5f5f5e5e5d5d5c5b5a5a53514b43392f24180c0000000000000000000000000000000000000000000000000000000000060e151b1f212223282b2d2e2e2e2f2f2f2f2f2d2c292421201d19130c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a22282d302e34383a3a3a3b3b3b3a3937332d322e2d2a251f1a140d05000000000000000000060b13181d202024292d2e2f3132323333343433333232312f2e2d2a2521201e1a140e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d0f1010101010101010101010101010101010101010101010101d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332619101010101010101010101010101010101010100f0e0c08040000000000000b1824313e4a56626d72747474747474726d73808c99a6b3a89b8e82756e71727373716e69625b64707d8a97a3b0bdb1a5988b7e73737373737373737373737373737374818e9ba7b4bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000050d141a1e2021201e1a140f0b060000000000000000000000000000000000000000000000000000000000000003090f121415181815120d06000000000000000000000000000000000000000000000000000000000000000000000000060b141b22272b2f35383a3d3f414243444545464646464646464646454545444342413f3d3a39352f2c29241d160d0800000000000000000000000000000000000000000000000000000c17222c363e45494b515151515151515151515151515151515151515151515151515151515151514b4a453f362d21201e19130d101b252e384049515960666d71767a7c7d7e7d7c7975706b605d564c443a2f261b1106000000000000000000071019202830353f464e555d606c717b7a6e61544b4034282a3136383f4446494c52545759545b60616263656667676869696a6a6b6b6c6c666d6d6d6d6d6d6d6d6d6d6d6d6d666c6c6b6b6a6a6969686766605d554b4035291d100400000000000000000000000000000000000000000000000000000006101820262b2e2f2e34383a3a3b3b3c3c3c3c3b3a39352f2e2d2a251e160e090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a242c34393d3e40444647474848474746443f413e3b3a36302a251f170f06000000000000020a11171d24292c2d3035393a3c3d3e3f4040404040403f3e3e3c3a3936302e2d2a251f1a140e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1015191b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d2a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f33261d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1b18140f0902000000000c1925323f4c5865727f8181818181817f7273808c99a6b3a89b8e82757b7e7f80807e7b726d6264707d8a97a3b0bdb5a99c8f828080808080808080808080808080808083909daab7bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000060f171f252a2d2e2d2a251f1c17110d0701000000000000000000000000000000000000000000000000000003090e151a1f21222524221d18110901000000000000000000000000000000000000000000000000000000000000000000060f181d262d333739404547494c4e4f5051525252525353535353535252525251504f4e4c4a4745413a39352f281f1a120901000000000000000000000000000000000000000000000005111d28343e485055575d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d585650483f342e2d2a251e1919222d37404a525b626b6f797e8386898a8b8a8885827d756d685d564c41382d22170b0100000000000000040f19222b323a4146515860676d757e858073665c51453831363b42464a505356565e61636668666c6e6f707172737475767677777878797979797a7a7a7a7a7a7a7a7a7a7a797979797878777776757574736d675d5145382c1f13060000000000000000000000000000000000000000000000000000030e18222a31373a3c433f444647484848494949484745413f3a39363028201b130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222c363e45494b4a51535454545454545350494e4b4846423b3630292118100600000000030c141c23282f35393a3e414647494a4b4c4d4d4d4d4d4d4c4b4a494746413f3b3a36302a261f180f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b212528292929292929292929292929292929292929292929292929292a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f33292929292929292929292929292929292929292929282724201a130b030000000f1c2935424f5c6875828e8e8e8e8e8e827573808c99a6b3a89b8e82757f8b8c8c8c8b867f726a64707d8a97a3b0bdb7ab9f948f8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9095a0acb8bcafa396897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000060f18212930363a3b3a36302b28221c18130e09020000000000000000000000000000000000000000000003090e141a20262b2e2f32312e29231b13090000000000000000000000000000000000000000000000000000000000000000060f1821292f383f44464b515356585a5c5d5e5e5f5f5f5f5f5f5f5f5f5f5f5f5e5e5d5c5a595654524c47454039312c241b130900000000000000000000000000000000000000000000000815212d3945505a61646a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a65625a5045393a3936302a251f2b343f49525c636d727d848a90929997979798928f89817a6d685d53493f33271e1308000000000000000a16202b343d444c525b626a6f79818b9185796d6053463b3b42464d53545c606367686d70737577797b7c7d7e7f80818282838384848585868686868787878787878787878686868685858484838382818180796d6053473a2d20140700000000000000000000000000000000000000000000000000000a15202a343c434748504a5053545455555556555554524c4c4746413a322d251c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d28343e48505557545c60606161616160605b535b5854524d46423b332a22180d040000030c151e262e343a4045474b4c525455575859595a5a5a5a595958575654524c4c4746423b36312a211a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161e262c313536363636363636363636363636363636363636363636363636363743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f363636363636363636363636363636363636363636363534312c251d150b0200000f1c2935424f5c6875828f9b9b9b9b8f827573808c99a6b3a89b8e8275828e9899999992897c6f64707d8a97a3b0bdbbb0a69f9c9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9da0a7b1bcbcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000030e18212a333b42464846423b38332d29241d1a140f0a0400000000000000000000000000000000000003090e141a1f252a31373a3b3f3d3a342d251b0f06000000000000000000000000000000000000000000000000000000000000030c18212a333b41495053555d60636567696a6a6b6c6c6c6c6c6c6c6c6c6c6c6b6b6a6969676563605d5653514b433e362d251b1107000000000000000000000000000000000000000000000a1724303d4955616c7177777777777777777777777777777777777777777777777777777777777777716c62564a464746413a363029313d46515b636e737f8891959c9fa3aba4aaa29f9b938e837a6d655b50443a2f24190d000000000000030f1b27323d464e565e616d727c848e93978a7e7164574d42444d53575e61666d7074777a7d8082848687898a8b8c8d8e8e8f90909191929292999393939393949494939393939a93929292919190908f8e8d887c6f6255493c2f22160900000000000000000000000000000000000000000000000000030f1b26313c464e53555d545c606161616262626262605d565954524c443f372e251c10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212d3945505a61646a666d6d6d6e6e6e6d6c656a6865615e57524d453c342a1f160c01000b151e2730383f444b515358565d616264656566666767666665656462615e565854524d46423b332c241a120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2830383d4143434343434343434343434343434343434343434343434343434343505d6a7683909da9b6c3ccbfb2a5998c7f7266594c434343434343434343434343434343434343434343434342403d372f271d130900000f1c2935424f5c6875828f9ba7a79b8f827573808c99a6b3a89b8e827784919da6aba39b8e817468707d8a97a3b0bdc2b8b0aba9a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6aaacb1b9c3bcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000915202a333c454d5254524d46443f38352f2a251f1b150f0a040000000000000000000000000000030a0f141a1f252a31363c4347484b4a463f372d21180e0300000000000000000000000000000000000000000000000000000000000b151e2a333c454d535b6064676d70727475767778787979797979797979797878787776757472706d6865605d5550483f372d23190b020000000000000000000000000000000000000000000b1824313e4b5764717e838484848484848484848484848484848484848484848484848484848484837e7165584c5254524c46413a3239434f59626d73808c939aa0a8acafb5b1b4aeaca59e958f82776c60564c4135291c1106000000000006131f2b37434e5860686d757f8691969e9c8f8376695f534a50575f61696e74797c8084878a8c8f909298959698999a9a9b9c9c9d9d9e9e9f9fa3a0a0a0a0a0a0a0a0a0a0a0a0a49f9f9f9e9e9d9d9c9c9b978b7e7164584b3e312518080000000000000000000000000000000000000000000000000006121f2b37434e585f626a6b666d6d6e6e6f6f6f6f6e6d686965615e5651493f372e22180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4955616c717778797a7a7b7b7a7a79787674716e69615e574e463c31281d130707121c273039424a50555d606468686d6f7071727373737373737271716f6d686965615e57534d453e362c241a0f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26303a42494e4f505050505050505050505050505050505050505050505050505050505d6a7683909da9b6c3ccbfb2a5998c7f7266595050505050505050505050505050505050505050505050504e4d4841392f251a0f04000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e827986929facb4aa9e91847766707d8a97a3b0bdbdb2a8a09e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ea1a9b3bebcafa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000020e1a26313c454e575e615e5753504a45403a36302b26201b16100b0500000000000000000000030a0f151a1f262a30363b42464e5355585651493f332a2015090000000000000000000000000000000000000000000000000000000007121d27303c454d575f656c7175797c7f818283848585858586868686868685858585848382817f7d7a76726d67615a51493f352b1d140a0000000000000000000000000000000000000000000c1925323f4c5865727f8b90909090909090909090909090909090909090909090909090909090908c7f726659565e615e56524c443e404b55606b727f8b929fa4acb1b9bbc0bebfbab8afa79f948b7f72685d5245382e23170c00000000000815222e3b4754606a6f7a828b9299a0a89f93877b6e6155545c60696e757b8085898d919696999b9d9fa3aaa3a4a5a6a7a8a9a9aaaaababacacaeb5adadadadadadadadadadb6afacacacababaaaaa9a8a69a8d8073675a4d402f24190d010000000000000000000000000000000000000000000000000815212e3a47535f6a6f767778797a7b7b7b7c7c7c7b7a7876726d68625b51493f342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e838586878787878787868583817e7b756e695f584e433a2f24180d0c18232e39424a545c60676d7175787a7c7d7e7f8080808080807f7e7d7c7a7875726e69615f5750483e362c21170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c38424c545a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5d6a7683909da9b6c3ccbfb2a5998c7f72665c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b59534b41372c201408000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e827c8899a3afb9ac9f9286796d707d8a97a3b0bdb8aca096918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9197a1adb9bcafa396897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000006121e2b37424e575f696e6964605b54514b46423b37312c27211c16100b05000000000000060b0f161b20262b31363b42464d53585f6265625b51453c31261a0e040000000000000000000000000000000000000000000000000000000c18232e39424d575f696e787d8286898b8d8f9091919292929292929292929292929191908f8d8c8986837f79716c625b51473d2f261b110600000000000000000000000000000000000000000c1925323f4c5865727f8b989d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d998c7f7266565e686d68615e56504645515d676f7d87929fa4afb6bec3c7cbd0cac6c1b9b0a69f92857a6d60544a3f34281c1003000000000916232f3c4956626f7c848f949fa3abafa49a8c807366585e666d727b81868d92979a9ea0a8a6a8aaacaeb4b0b1b2b3b4b5b5b6b6b7b7b8b8b9bbbfb9bababababababababac0bbb9b9b8b8b7b7b6b6b5a99c8f827669564c4135291d11040000000000000000000000000000030607070707070707070915222f3c4855626f7c8384858687878888888988888785827f7a726d635b51463c31261b0f0707070707070707070707070707070707070706030000000000000000000000000000000000000005111d2a36414c566875818e92979394949494999292908e8b86817b6f6a5f554b4035291d11101c2834404a545c666d727a7e828487888a8b8c8c8d8d8d8d8c8c8b8a898785827f7b756e69615a50483e33291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925313d49545e656969696969696969696969696969696969696969696969696969696969696a7683909da9b6c3ccbfb2a5998c7f72696969696969696969696969696969696969696969696969696968655d53483d3124180c000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e827e8a97abb3bbafa399877a6d707d8a97a3b0bdb7aa9e91848383838383838383838383838383838385919eabb8bcafa396897c706356493d3023160a0000000000000000000000000000000000030000000000000000000000030e18222e3a47535f6a6e7b76706c66605d55524d47433c38322c27211c16100b050001070c11171b1f272c31373b42464d52575e616a6e726d62574e42372b20150a000000000000000000000000000000000000000000000000000004101c2834404b545f696e7b838a8f9299989a9c9d9d9e9f9f9f9f9f9f9f9f9f9f9f9e9e9d9c9c9a989a93908b857e726d62594f41382d22170b00000000000000000000000000000000000000000c1925323f4c5865727f8b98a5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa5998c7f72665e686d7a756d68615a524d57606d79849199a3afbbc0c7c8c6c0bfc5c6cac2baada2978c7f73665c5044382c1f1207000000000a1724303d4a5763707d8a969ea6aeb4b6ac9e9184776a60686d787f868e92999ea1a9aaacb2b3b5b7b9babfbdbebfc0c1c1c2c3c3c4c3c3c2c2c2c2c1c1c1c1c1c1c1c1c1c1c1c2c2c2c3c3c3c4c3c3b7ab9e918478685d5245392c201306000000000000000000000000060c10121313131313131313131825323f4b5865727e8b9192939a9494959595959597928f8c867f726d63584e43372b1b131313131313131313131313131313131313131312100c0600000000000000000000000000000000000713202d3946525e687784919ea2a9a0a1a1a1a39f9e9d9b99928e857c6f675d5145392c2014121f2c3844515c666d787f858b8e91969597989899999a9a99999898979597918f8b86817b716c615a50453b31251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835414e5a6570767676767676767676767676767676767676767676767676767676767676767683909da9b6c3ccbfb2a5998c7f767676767676767676767676767676767676767676767676767676756f65594d4034271b0e000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e82808d99a2aab3b5ab94877b6e707d8a97a3b0bdb1a5988b7e76767676767676767676767676767676818e9ba7b4bcafa396897c706356493d3023160a0000000000000000000000000106090b0c0f0a070603000000000000000a15202b37434e58626e7c87827d78726d67615e57534e48443d38332c28211c160f0a0d12181b22272b32383c43474d53575e61696e747b7f726a5f53473c32261b0f040000000000000000000000000000000000000000000000000006131f2c3845515c666e7b8590959c9fa3aba7a8a9aaababacacacacacacacacacabababaaa9a8a7aca49f9d97928a7f726b6053493f33271b0f03000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b2a5998c7f7266616d7a85817a716c615d565f6974808d96a0abb5c0c7c0bbb9b4b2b8babec5beb3a99e9285796d6053463a2f24180c000000000613202d394653606c7884919daab4bfb9aca096887c6f696e7a828c92989fa3abadb3b7b8bdbfc2c3c2c0bfbdbcbbbac0bbb9b8b8b7b6b6b5b5b5b5b5b5b4b4b4b4b4b4b4b4b5b5b5b6b6b6b7b7b8b8b9ada196877a6d6054473a2d21140700000000000000000000030a11171c1f202020202020202020202935404b556874818e9b9f9fa4a1a1a2a2a2a2a9a29f9c98928b7f726a5f5347382d2220202020202020202020202020202020202020201f1c17110a030000000000000000000000000000000714212e3a4754616d7a8796a0acb3adaeaeb5afacaba9aba39f979184796d6053473b3025191e2a36424d57606d78828c92979b9ea1a8a3a4a5a6a6a6a6a6a6a5a4a4a9a19e9c99928e867e716c61574d42362a1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976828383838383838383838383838383838383838383838383838383838383838286929fabb8c5d1c4b7aa9e91848383838383838383838383838383838383838383838383838383838175685b4e4235281b0f000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e82828d9298a2aeaea194887b6e707d8a97a3b0bdb1a5988b7e72696969696969696969696969696974818e9ba7b4bcafa396897c706356493d3023160a0000000000000000000000070d121618191c171312100b0600000000030f1b26313a47535f6a75818e8f8a847f7a736e69625f58544f48443d38332c27211b15191d23292d33373d43484e53575f61696e747b8187877b6e62584e43372b21160a000000000000000000000000000000000000000000000000000713202d3a4653606d798491979fa7acaeb5b4b5b6b7b8b8b8b8b9b9b9b9b9b9b8b8b8b8b7b6b5b4b6afaca9a19e91897d70655b5044372b1f1205000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bec3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3bfb2a5998c7f72666b75818e8e857e756d6860626e7b87929fa8b2bdc7beb6afaca7a5abaeb3bcc5b9ada1978a7d7063554b4035291d100400000005121f2b3744505b65727e8b98a2aebabdb2a89a8d80736e7b8490949fa2aaafb5b9bec4c5c4bdb9b7b5b4b2b1afafaeb5afacababaaaaa9a9a8a8a8a8a8a8a7a7a7a7a7a8a8a8a8a8a9a9a9aaaaababacafa896897c6f6356493c30231609000000000000000000050c151c23282c2d2d2d2d2d2d2d2d2d2d2d3945515d677784909daaacafb6aeaeafafafb3adabaaa29f92877c6f6253493f332d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c28231c150c0700000000000000000000000000000a1724303d4a5763707d8a96a8b2bdbababac0bbb9b8b6b5afa9a1968c7f7266564d41362a1e202d3a46525e6973808d949fa2a9abadb2b0b1b2b3b3b3b3b3b3b2b1b0b3adababa39f9892887e71695e53463a3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9298a2aebac6d2c5b9aca096918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f84776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e827f8086929fabaea194887b6e707d8a97a3b0bdb1a5988b7e72727272727272727272727272727274818e9ba7b4bcafa396897c706356493d3023160a000000000000000000010911181e2225252924201f1c17110e09040106121f2b37434e58626e7b87939c96918b85807b746f6a636059554f48443e38332b272025292f34383f44464f54585f62696e747b81868e928e81756a5f54473d32271b0b02000000000000000000000000000000000000000000000006121e2b37424d5765727f8b95a0a9b1b9bbbfc0c2c3c4c4c5c5c5c5c5c5c5c5c5c5c5c5c4c4c3c2c0c0bbb9b3ada39d9184786c605346392d201309000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2becbcfc6bfbab9b9b9b9b9b9b9b9b9b9b9babfc6cfccbfb2a5998c7f7267707d8a9397928a817a6f6b6b75828f99a3afbac4c0b6aca49f9a999fa2aab3bebeb3a99b8e8275675d5145392c1f1306000000030f1b27333f4953606d7a85929facb8c4b7aa9d9184777b8591969fa6aeb4bbc0c7c9c5bdbab2adaba9a7a5a4a3a2a1a0a39f9f9e9e9d9c9c9c9c9b9b9b9b9b9a9a9b9b9b9b9b9b9c9c9c9d9d9e9e9f9fa3ab988b7e7165584b3e3225180b0000000000000000050e171e262e34383a3a3a3a3a3a3a3a3a3a3a3a4753606d7a86929facadb5afacacaeb4b9bdbab8b4aea3998e8174655b50443a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a38342e261e191007000000000000000000000000030f1b27333f49536673808c99a6b3bfc4c5c7cac7c5c5c3c0bbb2a89d918477685e5246392d20212e3b4854616e7b86929fa6adb3b7b9bdbdbebfbfc0c0c0c0bfbfbebdbeb9b8b5afaaa29a92867b6e61564c41362a1d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa2aab4becad5c9bdb2a8a09e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275747f8c99a6aea194887b6e707d8a97a3b0bdb5a89b8e817f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f83909da9b6bcafa396897c706356493d3023160a00000000000000000009131b23292e313236302d2b28231c1a15110d0815212e3a47535f6a75818e99a4a09e97928d86817c756f6b636159554f48443d37322b30353940454950535960636a6f747b81868d92999f93877c6f62594f43382c1d140a00000000000000000000000000000000000000000000000814212e3a47535f697784919da8b1bbc2c7cbd1cfd0cec9d1cbc7c5c5c5c5c5c5c6c7ccd2cbcfcfd2ccc8c5beb8aca095897d7063564a3d30251a0e020000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bed1c6bcb4aeacacacacacacacacacacacaeb4bcc6cfbfb2a5998c7f726d7984919ea19e938e847d726f7c89949eabb5c0c8bbafa49a938d8c9298a2aebac4b8ac9f92867a6d6053473a2d201407000000000b17222d3845515d6774818e9aa8b2bdb8aca095897c849197a0a8b0babfc6cbd1c7bdb3aba8a19e9c9a989796959494999292919190908f8f8f8f8e8e8e8e8e8e8e8e8e8e8e8f8f8f909090919192929994948d8074675a4d4134271a0e00000000000000020d17202930383f444646464646464646464646464956636f7c8999a3a1a1a0a39f9fa3abacb2bac3bfb5ab9e9285786c60534646464646464646464646464646464646464646464646443f38302b22190f04000000000000000000000005121f2b3744505b6576828f9ca9b5b8b7b8babfc6cbd1d1cbc4b8aca096877a6e6154473b2e2128333f4a5466737f8c99a3afbabec4c5c9cfcac6c5c3c2c1c1c2c3c5c7c9c6c4c0bbb4aca2988e8174685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929fa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9abaeb4bcc5d0d9cec4bab2acaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b98a4aea194887b6e707d8a97a3b0bdb6aa9e938e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b90959fabb8bcafa396897c706356493d3023160a000000000000000007111b252d343a3e3f423d3a38342e2b26201d19131f2b37434e58626f7c87939fabaca9a29f99928e88827c76706b636159544f47433c343a41464b51535b60646b6f757c81878d92999fa3a49a8f82756b6054483d2f261b11060000000000000000000000000000000000000306070a0a15222f3b4855626e7b8895a0acbac3cdd3d7cbc6c2c1bdbabfbab9b8b8b8b8b8b9bbc0bcbec4c5c8ced4cfc8bcb1a79a8e817467574d42362a1e12050000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2becbbfb4aaa39f9f9f9f9f9f9f9f9f9f9fa3aab4bdc7bfb2a5998c7f7274808d96a1ada59e9691877f76828f9ca6b0bdc7bcb1a79f9388817f86929fa8b2bdbaaea2988a7d7063574a3d2f24180c0000000006111b2935414b55636f7c8996a0acb9bdb1a89f92859196a0a9b2bac2cad0d7cdc1b6aba19996918f8d8c8a898887878686858584838382828282828281818181818181818282828383838484858586868788888276695c504336291d100000000000000008141e29323b424a50535353535353535353535353535965727f8c9796959493999292999ea0a8b2bdc7b9ada297887b6e62555353535353535353535353535353535353535353535353504a423d342b20160a00000000000000000000000613202d394653606c7985929fabacababacaeb4bbbfc6cfd4c8bdb2a8968a7d7063574a3d30242b3844505b667683909cabb5c0cad0d2cec5bebab8b6b5b4b4b5b6b8babfc6cccbc6beb4aa9f92867a6d6154473a2e211406000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b8babec5ced7e0d6ccc4bdb9b7b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6aa9e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdbaafa59e9b989898989898989898989898989898989d9fa7b1bcbcafa396897c706356493d3023160a00000000000000010d18232d373f464a4c4f4a46443f3837312c29241f212e3a47535f6a75828e9aa4afb9b3adaba39f9b948f89837d77706b636059544e463c444c52555c60656c70767c82878e92999fa3abaeac9e94897c6f63594f41382d22170b00000000000000000000000000000004060b10121316161825313e4b5864717e8b97a7b1bcccd5d2c9c1bab6b4b0aeb4aeacababababacacafb5afb2b7b8bdc3ccd5cec3b8ab9e918578695e52463a2d2014070000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bec7baaea398929292929292929292929298a3abb5c0bfb2a5998c7f727c87939fa8b2afa8a199928c828f949fabb8c1c4b8ab9f958c7f74727e8a96a1acb9bfb4aa9a8d807367554b4035291d1004000000000d18242f3a4854606b7784919eaab7c3baaea2989298a0a8b2bbc4ccd1d6d7cabdb1a5998f898482817f7e7c7c7b7a79797878777776767575757575757474747474757575757576767677777878797a7a7b7c7c6f6255493c2f221609000000000000020e1925303b444c545c60606060606060606060606060606875818c8b89888787868686889196a0acb9c5beb3a9978a7d70646060606060606060606060606060606060606060606060605c544e463d32271b0f03000000000000000000000815222f3b4855626e7b8897a2a29f9e9e9fa2aaaeb5bdc6d1cebeb1a5988b7e7265584b3f32252d394653606c7986929facb8c5d1d0c7bebcb3adaba9a8a7a7a8aaacaeb4bbc0c7d0c6baaea3998b7e7164584b3e2d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb8c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c5c6cad0d7e0e8ded6cec9c5c4c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b7aa9e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdc1b7afaaa8a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a9abb1b9c2bcafa396897c706356493d3023160a0000000000000006121e29343f495156585c5753504a47423c3935302c282f3c4855626f7c87939faaacb1b9bab5aeaca69e9c949089837d76706b6260584e464c565e61676d71787d83898f939a9fa3abaeb4bab0a69c9083766b6153493f33271b0f03000000000000000000000104070c1013171c1f202323222734404d5a6773808d9aa6b3c0ced2c9c0b7afaaa8a3a1a0a39f9f9e9e9f9f9fa4a0a2a5aaacb2bac3ccd2c6b9ada197877b6e6154483b2e2115100c06000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bec5b9ac9f9286868686868686868686868999a3afbbbfb2a5998c7f79839099a4afbabab2aba39f948f949fa6b0bbc7bbb0a69d9083786c6c7884919eabb7c3b6aa9d908377675d5145392c1f13060000000007131d2c38434f596773808d9aaab4bfbeb4aaa29fa2aab2bac3c0c1c5cad2c9bcafa396897d7876747271706f6e6d6d676c6b6b6a69696969666c6d6e6f707070717070706f6f6e6d6c666b6b6c676d6d6e6f6f6a6054473b2e22150800000000000005111e2a36414c565e666d6d6d6d6d6d6d6d6d6d6d6d6d6d6d727f7f7e7c7b7a7a7979797b84919eaab7c4beb1a5988b7e726d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6660584e43382b1f1306000000000000000000000b1825313e4b5864717e8b96949892919192989fa3abb5bfcbccbfb2a6998c7f7366594c4033262e3b4854616e7b8798a3aebac7d3cabeb5ada9a29f9d9b9b9b9b9d9fa2aaafb5bdc7cbbfb4ab9b8e81746853493f33271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb8c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c5c6cacfd7dfe7ddd5cec8c5c3c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b7aa9e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdbcb1a79f9d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea0a8b2bdbcafa396897c706356493d3023160a000000000000000916222e3a46515b62656963605c54534d4745413a38342e424f5c6875828e92989da0a7acaeb5b9b9b0aaa69f9c95908a837d766f6a60584e535e686d73797e848a90949b9fa4acafb5babab9b0aa9f94897d70655b5044372b1f1205000000000000000104070d1013181c1f23282b2d30302f2c35424f5b6875828e9ba8b5c1cecbc0b7aea59e9b9694939892929292929293999495989da0a8b2bac3cec9beb2a9978a7d7064574a3d31241f1c17110d0701000000000000000000000000000c1925323f4c5865727f8b98a5b2bebaaea194877b7979797979797979797987929facb9bfb2a5998c7f7f8c95a0abb5c0c4bdb5afa69f9c9fa6b0b8c2c4b7ab9f94897d70666573808d9aaab4bfb9ac9f92867a6d6053473a2d20140700000000010f1b27323d4956636f7c8998a2aebac5bcb4aeabaeb4bcb9b5b3b5b9c0c8c8bbafa295887c6f6967656463626161605c55555c60686d717577797a7b7c7c7d7d7d7d7d7d7c7c7b7a797876736f6a626161626260584e43372b1f13060000000000000714202d3946525e68767979797979797979797979797979797979797979797979797979787f8b98a5b2bebfb2a5998c7f79797979797979797979797979797979797979797979797979796f6a6054473b2e221508000000000000000000010e1b2734414e5a6774818b898786858584858b9299a3aebbc7ccc0b3a6998d8073665a4d403327303c4956636f7c8996aab4bfcbccc1b8ada39b9792908f8e8e8f9092989fa4abb5c0ccc3b7aa9d908477655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b8b9bec5cdd7dfd5cbc3bcb8b7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5aa9e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb8ab9f95908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9196a0acb9bcafa396897c706356493d3023160a000000000000000b1825313e4a56626d7275706d66625f5754524c464440393d495663707d81868b90959b9fa3abadb3b9b7b0aba79f9d959089827c6f6a5f535b656d7a7f858b91969c9fa6acafb6bbb9b4aeaca69e9c959083796c605346392d201306000000000002080d1113181d2023282c2e34383a3d3d3b383243505d697683909ca9b6c3cfc5baaea49d938e8a878686868585858585868687898b9196a0a8b2bdc8cfbfb2a5988c7f7265594c3f322d2c28231c18120d080200000000000000000000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6c6c6c6c6c6c6c6c7986929facb9c1b4a79b8e8186929fa5adb2bac0c7c0bbb0aba9abb0b8c2c8bcb1a79c8f82766b6063707c8998a2aebabbafa399897c6f6356493c3023160800000000000a13202d3a4653606d7985929facb8c5c5bebab8babeb6aea9a6a9aeb6c0cabbafa295887c6f625a5957565554545351555d676d737a7e81848687888889898a8a8a8a8989888887868482807c776f6a605855544e463c32271b0f030000000000000814212e3b4754616e7a8686868686868686868686868686868686868686868686868686868b919ba7b3c0c0b4a89c918c86868686868686868686868686868686868686868686868686867c6f6256493c2f231609000000000000000000000c1825323f4b5865727f7e7c7a79797878797e87929facb9c5cdc0b3a79a8d8074675a4d413427313d4a5764707d8a97a3b0bdd0c7bbb0a69b918b85838281818283868b9399a4afbbc7c5b9ac9f9286796c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929fa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8abadb3bbc5cfd9cec3b9b1acaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89e9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb6a99d90838181818181818181818181818181818184919eaab7bcafa396897c706356493d3023160a00000000000004101c2834404b5465727f827d79736e6965605d5653514a47434854606b70757a7f83898e92999ea1a9acb2b8b7b1aba79f9d948f877c6f6255606c78848c92979da0a8abb0b9bbb8b3adaaa39f9b948f89837e776c605346392d20130600000000040c13191d2024292c2e34383a3f4446494948443d44505d6a7783909daab6c3d0c2b5a99d928d817d7b7a7979787878787979797a7c7f849196a0acb9c5cdc0b4a79a8d8174675a4e413c3a38342e29241d19130e09030000000000000000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e615f5f5f5f5f5f6c7986929facb9c3b6a99c9082858e939ea1a8afb9bec4c2bbb7b5b7bbc2cac5b8aca095897d706359606d7986929facb8c0b5ab988c7f7265594c3f2f24190d010000000006121f2b3844505c6676838f9ca9b6c2d0cac6c5bfb6ada49d9a9da4aeb9c5bbafa295887c6f62554c4b4949484746515d676d7980868b8e9192999595969697979796969695949992918f8c89837c6f6a60554b433c342b20150a000000000000000814212e3b4754616e7a879393939393939393939393939393939393939393939393939393989ba3adb8c3c4b8ada39c9993939393939393939393939393939393939393939393939393897c6f6256493c2f231609000000000000000000000b1724313d4a56626d72716f6d6c666b666d74818e9aa7b4c1cdc0b3a79a8d8074675a4d413427313e4b5864717e8b97a4b1becac3b7aa9e948b7f797675747475777a7f87939facb9c5c7baaea399877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea2a9b3becad4c8bcb1a7a09d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9184776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb1a5988b7e74747474747474747474747474747474818e9ba7b4bcafa396897c706356493d3023160a00000000000006131f2c3845515c6675828f8a84807b76726d6864605c54544e474f596063686d72777c81868c92979ea1a8acb2b9b8b1aba2988f82756a5f535b65727f8c97a1a9acb2b7bbb9b1aca9a19e98928e88827d77716c655b5044372b1f1205000000040e161e24292c2f35393a4045464a50535656544f4744515e6a7784919daab7c4cdc0b4a79a8d8175706e6d6c656c6b6b6c6c666d6d6f727984919eaab7c4cec2b5a89b8f8275685c4f474946443f38352f2a251e1a140f0a04000000000000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154535353535f6c7986929facb9bfb2a5998c7f7a818a91969da5adb3bbc1c7c3c2c3c7cccabfb4aa9d9083776b60545c6776838f9ca9b6c1b5a89b8e827568564c4135291d11040000000003101c28343f4a546673808d99a6b3c0d1d6cfc2b8ada49c928d929da9b5c1bbafa295887c6f62554947474747464e58606d79828d92989b9d9fa3aba2a3a3a3a4a3a3a3a2a2aba39f9e9c999590867c6f675d5145382c22190f04000000000000000814212e3b4754616e7a8794a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a5a7adb5bec9cabfb5ada8a5a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095897c6f6256493c2f231609000000000000000000000915222e3a45515b6265656361605b545c64707d8a97a3b0bdcac0b3a79a8d8074675a4d413427323e4b5865717e8b98a4b1becbc2b5a89c8f82756d6668686868676d73808c99a9b3becabfb4ab95887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c79868e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9297a2adb9c6d1c5b8aca095908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776b5e5144382b1e11000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb1a5988b7e72686868686868686868686868686874818e9ba7b4bcafa396897c706356493d3023160a0000000000000713202d3a4653606d79859296918d88837e7a75706d6662605854524f54565d60656b6f757b80858b91969ea0a8adb2b1a79f92857b6e61584e53606d7a85929eaab4bdb5afaca7a09d97928c86817c76706b64605b53493f33271b0f030000020c1620283035393a4045474b5153545c60636360594f44515e6b7784919eaab7c4c9bcafa396897d70636160605b5f5f5f5f5f5c60616267727f8c99a5b2bfccc3b6a99c908376695d4e535553504a45403936302a261f1b150e070000000000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154484646535f6c7986929facb9bfb2a5998c7f72757d848e939ea1a9b0babfc6cfd0d3d3c6baaea2988b7e7265594f5566737f8c99abb5bdb7aa9e918477685d5245392c20130600000000000b17232e3d4a5764707d8a97abb4bfcbd1c7bdb0a69c918c808d9aa6b3c0bbafa295887c6f6255535353535353535f6a74818e949fa2aaaaacafb5afafb0b0b0b0b0b0afafb5afacaba9a79f989184796d6053473a2f24180d01000000000000000814212e3b4754616e7a8794a1acacacacacacacacacacacacacacacacacacacacacacacacacaeb4bdc6d1d1c7bdb5afacacacacacacacacacacacacacacacacacacacacacacacaca295897c6f6256493c2f2316090000000000000000000005111d29343f4851565858565453504a56626f7c8995a2afbcc8c0b3a79a8d8074675a4d413427323f4b5865727e8b98a5b1becbbfb2a5998c7f72665c545b5b555d616e7b8797a1adb9c6bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818282828282828282828282828282828282828282828282828282828282828285929eabb8c5d0c3b7aa9d90838282828282828282828282828282828282828282828282828282828074675a4d4134271a0e000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb1a5988b7e75757575757575757575757575757575818e9ba7b4bcafa396897c706356493d3023160a0000000000000a1623303d495663707c8998a19e9995908b86827d79746f6a66615e5653515254596063696e73797f848a91969ea1a8ab9f958b7f72695e5c5c5c5d6773808c98a2aeb5aba49f9c95908b85807a746f6a63605953504941382d22170b00000008131e28323a4145474b5153555c6063666d70706b605448515e6b7784919eaab7c4c7bbaea194887b6e6155535350495252524a51535455636f7c8996a2afbcc9c4b7aa9d9184776a5e585f62605c54514b46413a36312b262018100c03000000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f726b707a818991979ea6aeb4bdc4cdd6d2c5b8ac9f92857a6d6054495663707c8999a3afb2acab9f93867a6d6054473a2d21140700000000000615212e3b4854616e7b8799a3aebac7cbc0b5ab9f948c7f7c8895a2aebbbbafa295887c6f62606060606060605c626f7c87939fa6aeb4b7b9bbc0bbbcbcbdbdbdbdbcbcbbc0bbb9b7b5b1aaa1968b7e7265554b4035291d1104000000000000000814212e3b4754616e7a87949f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3abb4bfcbcbc0b5aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f95897c6f6256493c2f23160900000000000000000000010c18232d363f454a4b4b494746444855626f7b8895a2aebbc8c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2becabdb1a4978a7e7164574a4e4e4b535e697885929eabb8c5bcb0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734404d59656f757575757575757575757575757575757575757575757575757575757575757683909da9b6c3ccbfb2a5998c7f757575757575757575757575757575757575757575757575757575746e64584c3f33261a0d000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb6a99d90838181818181818181818181818181818184919eaab7bcafa396897c706356493d3023160a000000000004111d2935414c566673808c99aaaba79f9d98928e8a85807c77726e6864605c5c646769696969676d72797e848b9196a1a3999083786c696969696969696d7a85929facafa499938f89837e79736e68696969696360594f44382c1b11060000010d1924303a444c5254555d6064676d7074797c7d7063584e515e6b7784919eaab7c4c7baada194877a6e61544746443f4545454044464855616e7b8894a1aebbd1c5b8ab9e9285786b555f6a6f6d66605d55524c46423b37322a221e150c020000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f7266676d747d858f939fa3abb2bbc4cfd0c3b6aa9d9083786c605c5253606d7a86929faca8a09e9992897c706356493d3023160a00000000000613202d394653606c7986929facb9c5c7bbafa3999082787b8895a2aebbbbafa295887c6f6d6d6d6d6d6d6d6d666774808d9aa4afbabfc4c5c7c6c4c1bebdbdbdbdbdbfc1c5c6c5c4c2bcb2a89c908376675d5145392c201306000000000000000814212e3b4754616e7a8792929292929292929292929292929292929292929292929292929299a3aebac7c7bbafa3999292929292929292929292929292929292929292929292929292897c6f6256493c2f231606000000000000000000000004111b242d343a3d3f3e3c3a393c4855626f7b8895a2aebbc8c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a4141424d576a7784909daab7c3bdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1824313c48535d6568686868686868686c71797d7069686868686868686868686868686868686a7683909da9b6c3ccbfb2a5998c7f72686868686868686868686868686868686868686868686868686867645c52473c3024170b000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdb8ab9f95908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9196a0acb9bcafa396897c706356493d3023160a00000000000613202c3945525d687683909da9b6b1abaaa39f9b97928d89847f7b75716d66626e74767676767676767676797e8491999f92867c7676767676767676767676808d9aa6ac9f9387827d77767676767676767676706b6054483b2f221609000004111d2935414c565d6064676d7175797d81858983776a6054515e6b7784919eaab7c4c7baada194877a6e6154473b37332d382e34383a4754606d7a8793a0b5bfcbc5b9ac9f928679675d676f7c79726d67615e56534d47433c3430271e14090000000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f72665d606b707a828b9299a1a9b2bec9d1c4b8ab9f958e81746e635b515d677783909d9f9b96918c86817b6e6255483b2f221508000000000006121f2b3844505b667784919eaab7c4c0b5ab9f92877b6f7b8895a2aebbbcafa296897d797a7a7a7a7a7a79786d687784919eacb6c0cacdc4beb9b8b4b2b0b0b0b0b1b2b4b8babec5cec4b9ac9f92867a6d6053473a2d201407000000000000000814212e3b4754616e7a86868686868686868686868686868686868686868686868686868686929facb9c5c5b9ac9f928786868686868686868686868686868686868686868686868686867c6f6256493c2d22170b02000000000000000000040d161e24292c2d313232302e2f3c4855626f7b8895a2aebbc8c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d3143505d697683909ca9b6c3bdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202c37414b53595b5b5b565e616a6f767e84867b6e61585b5b5b5b5b5b5b5b5b5b5b5b5b5d6a7683909da9b6c3ccbfb2a5998c7f72665b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a58524a41362b1f1307000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bdbcb1a79f9d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea0a8b2bdbcafa396897c706356493d3023160a00000000000714212d3a4754606d7a86929facb9bcb8b4aeaca9a19e9a95918c86827d79746f748082828282828282828282828286939f928582828282828282828282828283909da9aa9e91848282828282828282828282827d706356493d3023160a00000713202c3945525d686d71757a7d81858a8e9295887c6f62544a5e6b7784919eaab7c4c7baada194877a6e6154473b2e27222c23282d3a4653606d798699a3aebbc7c7bbaea399867a6d606d7985847f79736d68615f57534e46423930261b100400000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f7266595961686d757f879197a1adb9c6d2c8bcb1a79d938d80736d635a556774808d99928e89847f7a756e695f53473a2e2114080000000000030f1c28333f4a546976828f9ca9b5c2bbafa4998d80746f7b8895a2aebbbdb1a5998f8986868686868686867e716d7a8796a0acbec7cac2bbb3adaba7a5a4a3a3a3a4a5a8abaeb3bcc3c7bbaea399897c6f6356493c3023160900000000000007111e2a36424d575e686e7979797979797979797979797979797979797979797979797979797b8894a1aebbbfb3a6998c8079797979797979797979797979797979797979797979797979796f6a6053493f33271e13080000000000000000010c161f282f35393a39352f2d2c2f3c4855626f7b8895a2aebbc8c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d3643505c6976838f9ca9b6c2beb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f3941484d4f545c60686d747c828a918e81746a5f534f4f4f4f4f4f4f4f4f4f4f505d6a7683909da9b6c3ccbfb2a5998c7f7266594f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d4c4741382f241a0e03000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3b0bbbbb9b1aba9a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8aaacb2babbbbafa396897c706356493d3023160a00000000000a1724313d4a5764707d8a99a3afbbc6c6bfbab9b3adaba7a09d99928f8a85807c77838f8f8f8f8f8f8f8f8f8f8f8f9399a297928f8f8f8f8f8f8f8f8f8f8f8f90959fabaca096918f8f8f8f8f8f8f8f8f8f8f8a7e7164574b3e3124180b00000714212d3a4754606d7a7e82868a8e92989b9e9a8d8174665c515e6b7784919eaab7c4c7baada194877a6e6154473b2e21171f181f2c3844515c667986929facb9c5c8bfb5ab94877a6e64717e8a918b85807a746e69625f58544b42372c21150900000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f7266594f565e616d727c84919eabb8c4d1cdc3b9afa59c928c7f726c625964717e8a8c86817d78726d68625f574d42372b1e12060000000000000b17222d414e5b6774818e9aa7b4c1b9ac9f93877b6e6f7b8895a2aebbc1b5aaa19996939393939393938b7e716f7c8895a8b2bdd0c2b8b0a9a19e9a989797979797989b9fa2aab1b9c3bfb5ab988b7f7265584c3f3225190c0000000000040e19222d3a46525e696e706c656c6c6c6c6c6c6c6b6f757575757575757575757575757575757b8894a1aebbbfb3a6998c80757575757575757575757575756f6a6c6c6c6c6c6c6c6c6c6c6c656c655b50443a3025190d000000000000000008131e28313a41454745413d3a38343c4855626f7b8895a2aebbc8c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d36424f5c6975828f9ca8b5c2beb1a5988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a434b515960666d727a81878f949e93877c6f62584e43424242424242424243505d6a7683909da9b6c3ccbfb2a5998c7f7266594c4242424242424242424242424242424242424242424242413f3c362f261d130800000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a3aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea396897c706356493d3023160a0000000005121e2a36424d576774818d9aabb4b8babec5c7c5beb9b8b1acaba39f9c97928d867983909c9c9c9c9c9c9c9c9c9c9c9fa4a9a29f9c9c9c9c9c9c9c9c9c9c9c9c9d9fa7b1b2a8a09e9c9c9c9c9c9c9c9c9c9c978a7e7164574b3e3124180b0000101d2a3743505d6a76838b8f92989b9fa2aaab9e9285796d60535e6b7784919eaab7c4c7baada194877a6e6154473b2e211407101c2834404a5f6c7885929fabb8c0bbb9aea194887b6e6976828f9c97928c86817b756f6a655d54493d3125190c00000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483b46535f6c7986929facb9bfb2a5998c7f7266594c4c525b626a7784909daab7c3d0d4cbc0b7aea49c918b7e716b61616e7b847f7a75706c65615e56534d453c31261a0e02000000000000061a2633404d596673808c99a6b3bfb5a89c8f8275696f7b8895a2aebbc7bcb3aaa5a2a0a0a0a0a0a0988b7e71707d8a96a3b0bdc7bbb0a69f97918e8b8a8a8a8a8a8c8e9298a0a7b1bcc0b3a79a8d8074675a4d4134271a0e01000000000a15202b37424d57616e7b7d78726d67615e575f636f7d82828282828282828282828282828282828f9ca9b6c2c4b7aa9e9184828282828282828282828282827c6f625f5f5f565e61656a6e7276786c60564c41362a1d1207000000000000010d19242f3a434c5254524c494644403c4855626f7b8895a2aebbc8c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d35424f5b6875828e9ba8b5c1bfb2a5988c7f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b555d606b70787f858d93999fa4998f82756a6054473d3235353535353743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f353535353535353535353535353535353535353535353433302b241d140b0100000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a97a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a196897c706356493d30231a11080000000714202d3a46525e697784919da3aaabaeb3b6bbc1c9c6c3bcb8b5afaca9a19e93867983909da9a9a9a9a9a9a9a9a9a9acafb3adaba9a9a9a9a9a9a9a9a9a9a9a9a9abb1b9bab2acaaa9a9a9a9a9a9a9a9a9a4978a7e7164574b3e3124180b00000c1925323f4c5865727f8b999fa3aaabaeb3ada1978a7d7063555e6b7784919eaab7c4c7baada194877a6e6154473b2e2114080c18232e45515e6b7884919eabb6b6afacaaa295887c6f6e7b87939fa19e98928d87817c7570655a4d4134281b0f02000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6154483e46535f6c7986929facb9bfb2a5998c7f7266594c414754606d7a86939facb9c6d2dfd2c9c0b6ada39f92877d70695f696e77726d6863605b53524c47423c332a1f1509000000000000000c1926323f4c5965727f8c98a5b2bfb4a79a8d8174676f7b8895a2aebbc8c5bcb5b1afadadadadada4988b7e71717e8a97a4b1bdc3b7aa9f948f85817f7d7d7d7d7e7f81859095a0acb8c2b5a89b8f8275685c4f4235291c0700000000030f1b26323a47535f6974818a847e79736e69615f64717d8a8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f949fabb7c4c5b8aca096918f8f8f8f8f8f8f8f8f8f8f8f897c706356586062686d72777b7f838074685e5246392e23180c00000000000004111d2935414c565d605d565653514a484855626f7b8895a2aebbc8c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d34414e5b6774818e9aa7b4c1bfb2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d676d757d838b92979fa4abab9e93897c6f62594f43382c2828282a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332828282828282828282828282828282828282828282726241f1a130b020000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8a94949494949494949494949494949494949494949494949494949494949494949494897c706356493d332c231a100500000815212e3b4854616e7b878f92989b9fa2aaaaafb8c1cccec8c7c0bbb9b3ada093867983909daab5b5b5b5b5b5b5b5b6b5aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeb8b7b5b5b5b5b5b5b5b5aea4978a7e7164574b3e3124180b00000714212e3a4754616d7a86929facb4b8babeb3a99b8e8175675c5e6b7784919eaab7c4c7baada194877a6e6154473b2e211408071e2b3844515e6b7784919eaaa9aca49f9d9a96897c6f73808d9aa4adaaa29f99928e888275695c4f4236291c0f03000c1925323f4c5865727f8b98a5b2bebaaea194877b6e61544b4b4b535f6c7986929facb9bfb2a5998c7f7266594c3f495663707c8999a4afbbc7d4d5d2d1c8bfbbafa39992857b6e675e616a65615e5653504946413a37312a21180e03000000000000000b1825313e4b5864717e8b97a4b1beb4a89b8e8175686f7b8895a2aebbc8cec7c1bdbcb9b9b9b9b1a4988b7e71717e8b98a4b1bec2b5a99c8f82797472717070707172757a83909daab6c3b6aa9d9083776a5d50442f24180c0000000006131f2b37434e58626e7b8792918b85807b746e6964717d8a979c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa6b0bbc7c8bdb2a8a09e9c9c9c9c9c9c9c9c9c9c9c96897c706360636a6f757a7f83888c90867a6d61554b4034281c100400000000000613202c3945525d686d686763605c54555355626f7b8895a2aebbc8c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d34414d5a6774808d9aa7b3c0bfb3a6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d79828991959fa2a9afb5afa59c8f82766b6054483b312622222a3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332622222222222222222222222222222222211e1a1c1a1a17130e0801000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e707d8888888888888888888888888888888888888888888888888888888888888888888888887d70635649443e352c21160b00000714202d3a4753606d797e82868a8e92989b9ea5afbbc6d2d4d1cbc7c5beaca093867983909da4a6acb4bec2c1b8b0aaa8a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1abadb3bbc2c2bdb5afaca1a1978a7e7164574b3e3124180b00000713202d3946525e6875828f9caab4bfc6c5b8ab9f9285796d605e6b7784919eaab7c4c7baada194877a6e6154473b2e211408111e2b3744515e6a7784919d9f9c999a93918e8b887d707985919eacb6b4aeaba39f9b8e8175685b4e4235281b0f02000c1925323f4c5865727f8b98a5b2bebaaea194877b6e6158585858585f6c7986929facb9bfb2a5998c7f7266594c3f4c5865727f8b98abb5c0cccfc9c6c4c6c9c0b5aba2979183796d655b5e5954524c46443f3836302b261f180f0600000000000000000b1724313e4a5764717d8a97a4b0bdb5a89c8f8275696f7b8895a2aebbc8cac2bbb7b6b5b5b5b5b1a4988b7e71727e8b98a5b1bebcb0a396897d70676564646464646568717d8a97a4b0bdb8ab9e9185786b554b4035291d1004000005101a232e3b47545f6a75818e999d97928d86817b746e717d8a97a3a3a3a3a3a3a3a3a3a3a3a3a3a3a5a7acb5bec9ccc1b7afaaa8a3a3a3a3a3a3a3a3a3a3a396897c70636b70767c81868c909599988c7f73675c5145382c1f160b00000000000714212d3a4754606d7a7774706d6665625f57626f7b8895a2aebbc8c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d33404d5a6673808d99a6b3b9b7b3a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d677683909ca0a7adb3bbc0b7ab9f94897c6f63574d42362f2f2f2f3743505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2d2a261f170f0b07030000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e6d797b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b796d6057554f473e33281c1004000613202c3945515d676d71757a7d81858a8f939eaab6c3cfcfc7c1bdbcb9aca0938679839095979aa2acb7c2bbb0a69e9c959595959595959595959595959595959595959595959ea1a9b3bec0b5aba39f9595958a7e7164574b3e3124180b000005111d2a36414c5664717e8a98a3aebac7c6baaea2988a7d7063546b7784919eaab7c4c7baada194877a6e6154473b2e211408111e2a3744515d6a77849098928f8d8a8684817e7b70707d8a97a1adbebfbab5aca196897d7063564a3d3023170a00000c1925323f4c5865727f8b98a5b2bebaaea194877b6e646464646464646c7986929facb9bfb2a5998c7f7266594c3f49536874818e9ba7b4c1cdc4beb9b8b9bec4bdb3a9a0958f81776c60594f4746413a37332d2a251e1a150e060000000000000000000a1724303d4a5763707d8a96a3b0bdb6a99c8f8376696f7b8895a2aebbcdc2b8b0aba9a8a8a8a8a8a4988b7e71727e8b98a5b1bebaada194877a6e6155575757575756616e7b8894a1aebbb9ac9f928679675d5145382c1f130600000b17212c38444f59626f7c87939fa9a29f99928e87817b747d8a979797979797979797979797979797989ba3acb7c3c6baafa59e9b979797979797979797979796897c706f767d83888e92999da0a79e9185796d6053463d33271c100300000004111d2935414c5668758184807c7975726e6967636f7b8895a2aebbc8c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d33404c5966737f8c99a6afacaaa8ab9a8d8073675a4d4034271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b55626f7c89939eabb5bec5c7bbb0a69b8f8275695f53463c3c3c3c3c3c43505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b3a36312921170d03000000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e676d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d676a6361594f44382c2014070004101d2935404b555d6064676d7175797d818f9ba8b5c2cec5bdb6b1afb2aca09386788388888a909aa6b2bfb7aa9e948f888888888888888888888888888888888888888888889197a1adb9bbafa39992888888887e7164574b3e3124180b0000010d1925303a4754606d7a86929facb8c5cabeb4aa9b8e8174665c6b7784919eaab7c4c7baada194877a6e6154473b2e211408111d2a3744505d6a77838b898583807d7a7774716e6976828f9ca9b3becac0b5ab9e9184786c605346392d20130600000c1925323f4c5865727f8b98a5b2bebaaea194877b7171717171717171717986929facb9bfb2a5998c7f7266594c44505b657783909daab6c3c4bbb3adabadb3bbc1bbb1a79e938c7f736b60564c4136302b27221b19130e0903000000000000000000000a1623303d495663707c8996a3afbcb6a99c908376696f7b8895a2aebbc7bbb0a69f9c9b9b9b9b9b9b988b7e71727e8b98a5b1bebaada093877a6d60544a4a4a4a4b54606d7a8793aab4bfbaaea399867a6d6053473a2d2014070004101c28333b4854606b76828f9aa4afadaba39f99928e87817f8c8b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b919ba7b3bfc2b6aa9e938e8a8a8a8a8a8a8a8a8a8a8a8a897c757c838990949b9fa3abacada1978b7e7164594f44382c20150a0000000713202c3945525d687884918d8985827f7b7774706f7b8895a2aebbc8c0b3a79a8d8074675a4d413429323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d323f4c5965727f8c98aca49f9d9b98998e8174675b4e4134281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a4754606a75818e99a3aebbc6cdc2b9ac9f93877b6e61564c48484848484848505d6a7683909da9b6c3ccbfb2a5998c7f7266594c4848484848484848484848484848484848484846423b33291f1409000000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b6e757676767676767675706d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d6d72767676767676767676706b6155483c2f23160900010d18242f39434b5153555d6064666d707d8a96a3b0bdc7bdb3aba5a3a6aaa09386797b7b7b7e8a97a4b1bdb5a89c8f827b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c85919eabb8b9ac9f92877c7b7b7b796d6054473a2d2114070000000813202c3945515d6775828f9babb4bfcbc5b8ab9e9285796d606b7784919eaab7c4c7baada194877a6e6154473b2e2114080d1a2633404d596673807f7c797673706d686764626e7b87939facb9c4c7bbafa3998c8073665b5044382b1f120600000c1925323f4c5865727f8b98a5b2bebfb2a5988c7f7e7e7e7e7e7e7e7e7e7e87939facb9bfb2a5998c7f7266594c4653606c7985929facb8c5beb3a9a19ea1a9afb7c1b9afa59f93877d70685d52453e32291e17110d0802000000000000000000000000091623303c4956636f7c8996a2afbcb6aa9d9083776a6f7b8895a2aebbc4b7ab9f948f8f8f8f8f8f8f8f8b7e71727e8b98a5b1beb9ada093867a6d6053473d3d3d4653606c798698a3aebabfb4ab94877a6e6154473b2e211408000814202d39444f5963707d89949facb6bab5afaba39f99928e8c837e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7f8b98a5b1bec1b5a89b8e817d7d7d7d7d7d7d7d7d7d7d7d7d7c818990949c9fa6acaeb5b8b3a99d9083776b6054483c31261a0f0200000714212d3a4754606d7a87969a98928f8b8884807d797c8895a2aebbc8c0b3a79a8d8074675a4d4139352f3f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d323f4c5865727f8b98999a93918e8b89868073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d2b38434e58616e7b86929faab4bfcbc7bbafa4998d8074685d5555555555555555555d6a7683909da9b6c3ccbfb2a5998c7f7266595555555555555555555555555555555555555555534d453b31261a0e020000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b75818383838383838382757581868686868686868686868686868686868477727f8383838383838383837d7063574a3d3024170a000007121d2831394045474b5153545c63707d8a96a3b0bdc1b6aba19996999da09386796e6e6f7c8996a2afbcb4a89b8e81756e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e7885919eabb8b9ac9f9286796e6e6e6d675d5145392c20130600000004111d2935414b5564717e8a99a3aebac7c6b9ada297897c6f636b7784919eaab7c4c7baada194877a6e6154473b2e2114080c1925323f4b57636e73726f6d666663615d565c6773808d9aa4afbbc8c5b9ac9f92867b6e61544a3f33281c0f0300000c1925323f4c5865727f8b98a5b2bec0b3a79b918c8b8b8b8b8b8b8b8b8b8b9399a4afbbbfb2a5998c7f7266594c4855616e7b8898a2aebac6b9ada19791979ea5afb9c1bbafa49991847a6d605a50443b3025190c0300000000000000000000000000000916222f3c4955626f7c8895a2afbbb7aa9d9084776a6f7b8895a2aebbc2b6a99c8f8282828282828282827d70727e8b98a5b1beb9ada093867a6d6053473a313844505b667985929facb8b7b6a194887b6e6155483b2e221508000a1623303c4955616c7683909da6afb6b9bdbbb5afaba39f9b9591857e777070707277767675757474737b8894a1aebbbfb3a6998c807370707070707070707070787f868e939c9fa6abb0b9bbbab8b5aca095897d7063584e43372b1f120600000a1623303d495663707c8996a8a29f9c9896918d8985828f9ca9b6c2cdc0b3a79a8d8074675a4d4745403c3f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d323f4b5865727e8b8f8c898684817f7c79736e63574b3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b27323d46535f6974818e98a3aebac6ccc0b5ab9f92867a6d62626262626262626262626a7683909da9b6c3ccbfb2a5998c7f72666262626262626262626262626262626262626262615f574d42362a1e12050000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b778490909090909090857875818e939393939393939393939393939391847774808d909090909090908b7e7164584b3e3125180b0000010c161f282f35393a4045474b5763707d8a96a3b0bdbdb1a5998f898c90959386796d636f7c8996a2afbcb4a89b8e817979797979797979797979797979797979797979797984919eabb8b9ac9f9286796c6262605d554b4135291d1104000000010d18242f3a4754606d7a86929facb9c5cabeb3a99a8d8073676b7784919eaab7c4c7baada194877a6e6154473b2e2114080a16232f3b47525c63666562605c5457545253606d7985929eacb6c0c9bdb2a89c8f8275695e5242382d22170b0000000c1925323f4c5865727f8b98a5b2bec3b8ada39b98979797979797979797979fa4abb5c0bfb2a5998c7f7266594c4a5663707d8996aab4bfc4b8ab9e91858e939ea7b1bbc0b5aba1968e81756c61564c41362a1e150b00000000000000000000000000000915222f3c4855626f7b8895a2aeb8b7aa9d9184776a6f7b8895a2aebbbbafa295887c7575757575757575706b727e8b98a5b1beb9ada093867a6d6053473a2d333f4a5f6b7885929eabacaaaca495887c6f6255493c2f221609000a1724313d4a5764707d8a959c9fa4acacb2b9bbbbb5afaca7a097918b837c73727f8383838281818080808d99a6b3c0bfb3a6998c8076757473726f6b646d727c838c92989ea5abb0b7bab8b4aeaca8aaa29c8f82766a5f53473a2e21140800000c1926323f4c5965727f8c98a5aeaca8a8a09e9a98928f949fabb7c4cdc0b3a79a8d807467575753514b49464c5865727f8b98a5b2becabdb0a3978a7d7064574a3d323e4b5865717e85827f7d7a7775726f6d67635c52473b2f23170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16202a36424d57616e7b86929fabb4bfcbc7baaea2988c7f726f6f6f6f6f6f6f6f6f6f6f6f7683909da9b6c3ccbfb2a5998c7f726f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695f53463a2d2114070000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b7784919d9d9d9d9d91857875818e9ba0a0a0a0a0a0a0a0a0a0a0a09e91847774808d9a9d9d9d9d9d978b7e7164584b3e3125180b000000040d161d24292c2f35393d4a5763707d8a96a3b0bdbcafa396897d7f84888c86796d636f7c8996a2afbcb9ac9f92878585858585858585858585858585858585858585858688939facb9b9ac9f9286796c5f5554514b433a2f24180d01000000000713202c3945515d6775828f9cacb6c0ccc4b7aa9d918477696b7784919eaab7c4c7baada194877a6e6154473b2e21140807131f2a354049525759585653514a4a474e5864717e8b97a1adbec7c5b9ada1968a7d7064574d422f261c11060000000c1925323f4c5865727f8b98a5b2bec9bfb5ada7a5a4a4a4a4a4a4a4a4a4a4acafb5bdc7bfb2a5998c7f7266594c4c5865727f8b98a5b2bec0b5ab978b7e818e959fa9b3bebdb2a89e938a7e71685e52463e30271d1207000000000000000000000000020815222f3b4855626e7b8895a1acacacaa9e9184776b6f7b8895a2aebbbbafa295887c6f686868686868686365727e8b98a5b1beb9ada093867a6d6053473a2d2d45515e6b7884919ea49f9d9a9a93897c6f6356493c30231609000e1b2734414e5a677480878b90939a9ea0a8acafb5babbb9b1a9a19e9590867f79818e908f8f8e8e8d8c8d929ca8b5c1c5b8ab9e9285838281807e7d6f6d757f8690959fa2aaafb7b8b4aeacaaa29f9c98989290867c6e6255483b2f2215080004101c2834404b546874818e9ba7b4b8b5b2acaaaaa29f9c9fa6b0bbc7cdc0b3a79a8d8074696763605d555653505865727f8b98a5b2becabdb0a3978a7d7064574a3d313a4653606d78787573706d68686562605c55524a40352a1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a26313b46525e6974808d99a3aebac7cabfb4aa9e91847c7b7b7b7b7b7b7b7b7b7b7b7b7c83909daab7c3cdc0b3a79a8d807c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6e6155483b2e2215080000000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b7784919da9a9a99e91857875818e9ba8aaaaaaaaaaaaaaaaaaaaaa9e91847774808d9aa7a9a9a9a4978b7e7164584b3e3125180b00000000040c12181d202429303d4a5763707d8a96a3b0bdbaada094877a73777b7f83786d636f7c8996a2afbcbbafa3999292929292929292929292929292929292929292929292939aa4afbbb9ac9f9286796c5f534745413a31281d1307000000000004111d2935414c5565717e8b9aa4afbbc8c5b8aca096877b6e6b7784919eaab7c4c7baada194877a6e6154473b2e211408020e19242e3740474b4d4c494644403d4754606a7683909da9b3becbbfb4ab9e9184786d6053463b3020140a000000000c1925323f4c5865727f8b98a5b2becbc7bfb8b3b2b1b1b1b1b1b1b1b1b1b1b9bbc0c7d0bfb2a5998c7f7266594c4e5a6774818d9aa7b4c0bbafa399887c79839097a1acb6c0baafa59e92857a6e615a5043392e23180c0200000000000000000000010b141d222f3b4855626e7b88959f9f9f9f9f9e9184776b6f7b8895a2aebbbbafa295887c6f625c5c5c5c5c5c5865727e8b98a5b1beb9ada093867a6d6053473a2d3744515e6a7784919a9a93908d8a86837c6f6255483c2f221509000d1a26333f4c58646e747a7f83878c91969b9fa3abaeb4babbb3ada79f99928c8383909d9c9c9b9a9a99999ca4aeb9bbbcb9ada29792908f8e8c8b80747a828c92999fa7aeb4b8b1acaaa29f9b98928f8b888583817c6f6356493c302316090006131f2c3845515c667784909daab7c3c2bdb9b7b4aeaba9abb0b8c2cdcfc2b5a89c8f827b7774706d676662605b5465727f8b98a5b2becabdb0a3978a7d7064574a3d313844515c666d66686663605d56585653514b4340382e24190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57616e7b86929fabb5c0ccc6b9ada1969188888888888888888888888888889095a0acb8c5cec1b5a99d928d888888888888888888888888888888888888888888888276695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b7784919daab6ab9e91857875818e9b9e9e9e9e9e9e9e9e9e9e9e9e9e91847774808d9aa7b3b6b1a4978b7e7164584b3e3125180b000000000001070d10131824303d4a5763707d8a96a3b0bdbaada094877a6d696e73776d66636f7c8996a2afbcc0b5aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa4acb6c0b9ac9f9286796c5f534639352f281f160c010000000000010d19242f3b4754616e7a87939facb9c6c8bdb2a8988b7e726b7784919eaab7c4c7baada194877a6e6154473b2e2114080007121c252e353b3f403f3c3a3836414c56626f7c89959fabbbc5c7baaea3998c7f73665c5044382b1f1202000000000c1925323f4c5865727f8b98a5b2becbcdc9c3c0bfbebebebebebebebebebec6c7ccd2ccbfb2a5998c7f7266594c49536976828f9ca9b5c2b9ac9f9286796e7b85919aa4afbbc1b9ada1978f82756c61554b4034281f14090000000000000000000008131d262f363b4855626e7b88929292929292929184776b6f7b8895a2aebbbbafa295887c6f62554f4f4f4f4f5865727e8b98a5b1beb9ada093867a6d6053473a2e3744505d6a7783908d8a8684807d7a776f6a5f53473b2e211508000b1724303c47525c64686e72767b7f84898f92999fa2aaaeb4bbb9b1aba39f959090959fa9a8a8a7a7a6a6abacaeb4aeafb0b3a9a29e9d9b9a978a7e7c848f949fa3abb1b8b1aba7a09d98928e8a85827f7c7976746f6b6054483b2f221509000713202d3a4653606d7986929facb8babec2c5c4bebab8b6b7bbc2cad4d0c3b7aa9e948f8784807d7a76736f6c666065727f8b98a5b2becabdb0a3978a7d7064574a3d3134404a545c605c54595654524c4c4946454039302e261c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303b46525e6974818e99a4afbbc7c9bdb2a8a19e95959595959595959595959595959da0a7b1bcc8d1c5b9aea49d9a959595959595959595959595959595959595959595908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b7784919daab7ab9e91857875818e919191919191919191919191919191847774808d9aa7b3beb1a4978b7e7164584b3e3125180b000000000000000104071724303d4a5763707d8a96a3b0bdbaada094877a6d6162666a605c636f7c8996a2afbcc2b9b1aba9a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4abadb3bbc5b9ac9f9286796c5f53463929241d160d04000000000000000814202d3946525e687683909da9b6c3cec2b5a89b8f8275667784919eaab7c4c7baada194877a6e6154473b2e21140800000a131c242a2f3233322f2d2d3946525e6874818e9ba7b1bccdc5b9ac9f92867a6d61544a3f34281c1003000000000c1925323f4c5865727f8b98a5b2bec0c0c0c0c5c7cbd1cacacacec8c5c4c0c0c0c0c0c0bfb2a5998c7f7266594c505b657784919daab7c4b7aa9e91847769707d88939fa7b1bcbeb3a99e948a7d70675c51453b30251a0e000000000000000000030e1a242f3841474855616e7b86858585858585858583776a6f7b8895a2aebbbbafa295887c6f625551515151515865727e8b98a5b1beb9ada093867a6d6053473b3b3b43505c69768284817d7a7774716d68625f584e43372b1f12060008141f2b36414a52565e6165696e72787d82878d92989fa2aaafb5bdb4aea79f9d9d9fa7a69f9c9b9c9d9d9e9fa3aaa1a2a3a4a5a6a7a8a8a5988b7e8591969ea6aeb4b2aca79f9d95908b85817d7975726f6d66676360594f43382c1f1307000916222f3c4955626f7c8899a3a8abadb3b5b8babfc3c5c2c4c7cdd4dcd3c7bbb0a69e9c96918d8a86837f7c78706b65727f8b98a5b2becabdb0a3978a7d7064574a3d312e39424a5153514a4c4a4745413f3c3a38342e271e1c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d56616e7b87939facb9c2cdc4bab2adaba2a2a2a2a2a2a2a2a2a2a2a2a2a2aaacb1b9c3ced6cbc0b6aea9a7a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8a89b8f827573808c99a6b3a89b8e8275717e8b97a4aea194887b7784919daab7ab9e918578738084848484848484848484848484848484827674808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d6155595d5356636f7c8996a2afbcbcb1a79f9d979797979797979797979797979797979797979797979fa2a9b3beb9ac9f9286796c5f5346392c18130c04000000000000000005111e2a36414c5666737f8c99a9b2bdc9c5b8ab9f9285796d7784919eaab7c4c7baada194877a6e6154473b2e2114080000010a12191f232526252328343f4a54616d7a86929facb9c2c8bcb1a79b8e8175685e5242382e23170b00000000000c1925323f4c5865727f8b98a5b2b4b4b4b4b4b9babfc6cfd5ccc3bdb8b7b4b4b4b4b4b4b4b2a5998c7f7266594c53606c7986929facb9c2b5a89c8f8275696b73808d959faab4bfbbb0a69e9184796d60574d42362a1c1106000000000000000007131f2b36414a52585a5f696e7979797979797979797771626f7b8895a2aebbbbafa295887c6f625e5e5e5e5e5e5e65727e8b98a5b1beb9ada093867a6d605348484848484853606d797774716d686764615e56534e463c32261b0f0300030e1a242f3841444c5254575e61656c70757b80868d92989fa3abb1babab1abaaa9abab9f948f8f8f9091919298949596979798999a9c9d9f9f92869298a1a8b0b4aea8a09e959089837e7a75706d676562605c5456544f473d32271b0f03000b1825313e4b5864717e8b97989b9fa2a9a9acaeb4b6b9bbc0c7cfd0d9d7ccc1b8b0aaa8a09d9a9992908c89857d7065727f8b98a5b2becabdb0a3978a7d7064574a3d312730394044464440403d3a39352f2f2d2c28231d150c0a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1925303b46535f6975818e9ba7b1bcc8ccc4bdb9b8aeaeaeaeaeaeaeaeaeaeaeaeaeaeb7b8bcc3cbd5dcd2c8c0b9b5b3aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea99c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8a99c8f827a7a808d9aa6b3a89c8f827a7a7f8b98a5aea194887b7784919daab7ab9e9185786e7377777777777777777777777777777777767074808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d61544c514956636f7c8996a2afbcb7ab9f95908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9297a2adbab9ac9f9286796c5f5346392c200701000000000000000000010d1925303c4855626f7c8896a1adb9c5c6baaea298897c6f7784919eaab7c4c7baada194877a6e6154473b2e21140800000000070e1316191a191f2c3844505c66737f8c98a3aebac7c4b8ab9f95897c6f63564c4130261c110600000000000c1925323f4c5865727f8b98a5a7a7a7a7a7a7acaeb4bdc6cec3bab2acaaa7a7a7a7a7a7a7a7a5998c7f7266595354616e7a8798a3aebac0b3a69a8d807367606d78839098a3aebac1b9aca0968c7f72695e5246382d22170b00000000000000000b1724303c47525c64676b6b6b6c6c6c6c6c6c6c6c6c6b6b6b6f7b8895a2aebbbbafa295887c6f6b6b6b6b6b6b6b6a65727e8b98a5b1beb9ada093867a6d6054545454545454545d676d676764615e565754524c47433c342a20150a00000008131d262f323b41464a5053535b6063696e737a80868d92999fa7aeb4bcb8b6b6b5a99c8f82828383848585868788898a8b8c8d8e8f909299999299a2aab2b2aba39f96918a837d77716d6763605c555553504a4948433d352b21160a00000b1825323e4b5865717e85888b8f9297999c9fa2aaa9acafb5bdbec7d0dbd3cac1bbb7b2acaaaba39f9c9997897d7065727f8b98a5b2becabdb0a3978a7d7064574a3d3124272e34383a38342e302d2c292423201f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37424d57626f7c89959fabb8c5cfcfc9c5c4bbbbbbbbbbbbbbbbbbbbbbbbbbbbc3c5c8ced5dde4dad2cbc5c1c0bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb6a99c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8aa9e948f87878d929da8b5aa9e948f87878b919ba7aea194887b7784919daab7ab9e9185786b7072727272727272727272727272727272726d74808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d615447444956636f7c8996a2afbcb6a99d90837e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e85929fabb8b9ac9f9286796c5f5346392c201306000000000000000000000815212e3b47535f6a7884919eabb8c4cabeb4aa998c7f737784919eaab7c4c7baada194877a6e6154473b2e21140807090a080705070a0c0d13202d3a4653606d7984919eaab4bfc9beb3a99d9083776b6054443a301e140a0000000000000c1925323f4c5865727f8b989a9a9a9a9a9a9a9fa3abb4bfc8bdb2a8a09e9a9a9a9a9a9a9a9a9a998c7f726661605b626f7c8995aab4bfbeb1a5988b7e72655c666e7b86929fa7b1bebdb2a89f92867b6e61544a3f33281c0f03000000000000000d1a26333f4c58646e74787878787878787878787878787878787c8895a2aebbbbafa295887c78787878787878787771727e8b98a5b1beb9ada093867a6d616161616161616161616161616161616161605c544a3f37322a22180e04000000010b141d2028343f4a545c60606060606061686e737a808790959fa2aab4bfc3c3b7aa9d90837a7676777879797a7b7c7d7e7f8081828386929f9fa3abb3b2a8a099928c847d76706b65606060606060605d554b423838322b23190f0400000b1724313d4a56626d71787c7f8285888c8f9298999d9fa3abadb5bec9d4dcd3ccc7c3bdb8b7b5aeaca9a995897c6f65727f8b98a5b2becabdb0a3978a7d7064574a3d31241c23282c2d2c28232321201d19161313100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c4854606a7683909da9b3bec9d5d5d2d1c8c8c8c8c8c7c7c7c7c7c7c7c7c7d0d1d4d8dfe6ece3dcd5d0cdccc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c3b6a99c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8b0a69e9c94949a9da4aeb9b0a69e9c9494989ba3adaea194887b7784919daab7ab9e918578707d7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7274808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcb4a89b8e817571717171717171717171717171717171717171717884919eabb8b9ac9f9286796c5f5346392c2013060000000000000000000006121f2b37434e586874818e9bacb6c0ccc2b6a99c8f83767784919eaab7c4c7baada194877a6e6154473b2e2114101416171414110d0806131f2b37434e5864717e8a96a1adbcc6c6b9ada1978b7e7164594f4332291e0c020000000000000c1925323f4c5865727f8b8d8d8d8d8d8d8d8d9299a3aebac5b8aca096918d8d8d8d8d8d8d8d8d8d8c7f72706e6c6568717d8a97a4b0bdc0b5ab96897d7063545f69727f8c95a0acb6b2aca69f988e8175665b5044382b1f1206000000000000010e1a2734414d5a6774808484848484848484848484848484848484919eabb8c4c4b8ab9e918484848484848484848377727e8b98a5b1beb9ada093867a6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5044382c1f18100600000000000206121f2b3844505c666d6d6d6d6d6d6d6d6d6d6e747c838c9298a2aebac6c5b8aca0959083796d6d6d6d6d6e6e6f7071727374757f8b99a3acafb5b9aca09691867f79706d6d6d6d6d6d6d6d6d6d6d675d544a3f3428211910070000000915212e3a45505a62656c6f7275797c7f8286898c9092999ba3adb8c3cfded6cec9c5c4c5c4bfbbb9aea194887b6e65727f8b98a5b2becabdb0a3978a7d7064574a3d312417181c1f201f1c18171413110d080706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c38434e5864717e8a97a1adb9c6d2dfdfded0c9c3c0bebababababababababac3c4c8cdd4dde3dad1cac4c1bfbabababababababababababababababababab6a99c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8b5b0aaa9a1a1a6a8aeb6c0b8b0aaa8a1a1a5a7adb5aea194887b7784919daab7ab9e91857875818c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c847774808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcb4a89b8e817878787878787878787878787878787878787878787884919eabb8b9ac9f9286796c5f5346392c20130600000000000000000000030f1b26323e4b5764717e8a9aa4afbbc8c5b9ac9f9286797784919eaab7c4c7baada194877a6e6154473b2e21141c20222321201e19140d15222e3b4754606a7683909da8b2bdcbbfb4ab9e9285796d6053463d3220170d000000000000000a1623303d495663707d80818181818181818086929facb9c4b7aa9e918480818181818181818181807d797d7b797775737f8c98a5b2bfbbafa499887b6e615557606d7883909aa4aea8a19e94908781786c605346392d201306000000000000020f1c2835424f5b6875828e9191919191919191919191919191919196a1adb9c5c6b9ada1979191919191919191918579727e8b98a5b1bebbaea195887c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786d6053463a2d201307000000000000000713202d3a4653606d787a7a7a7a7a7a7a7a7a7a7a7a797f85929facb8c5c8bcb1a7a0958f827a7a7a7a7a7a7a7a7a7a7a7a7a7e88939fabb4bbc0b7aa9e91847c797a7a7a7a7a7a7a7a7a7a7a7a7976665c5044382c1f12060000000005111d29343f4850535b606265666c6f7276797c8083868b919ba7b3bfccd6ccc4bdb9b7b8b9bec3bbafa49a877a6d65727f8b98a5b2becabdb0a3978a7d7064574a3d3124170c10121312100c07070704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d4653606d7985929eabb8c2cdd8dbd0c7beb8b3b2adadadadadadadadadb6b8bcc3cbd4dcd1c8bfb9b4b3adadadadadadadadadadadadadadadadadadada99c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8b5bbb7b5adadb3b5b9c0c8c1bbb7b5adadb2b3b8bbaea194887b7784919daab7ab9e91857875818e999999999999999999999999999991847774808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcb9ac9f92878585858585858585858585858585858585858585858588939facb9b9ac9f9286796c5f5346392c20130600000000000000000000000a14212e3a4754616d7a87939facb9c6c7baaea398897c7784919eaab7c4c7baada194877a6e6154473b2e2121272c2f302e2d2a251e171e2a36424d57626f7c89959fabbac4c7baaea3998c8073675c5145382c1f1305000000000000000916222f3b4854606b7074747474747474747885929fabb8c1b5a89b8e817574747474747474747474707b888785838280828f9ca9b5c2b9ac9f9386796d6462605d666f7c87939fa29f96918a827c746c665b5044382b231a10050000000000020f1c2835424f5b6875828e9b9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea1a9b2bdc9c9beb2a9a19e9e9e9e9e9e9e9e928579727e8b98a5b1bebcb0a4988e88878787878787878787878787878787878787877b6e6155483b2e221508000000000000000a1623303d495663707d868686868686868686868686878c9298a2aebac6cec3b9b1a79f948f878686868686868686868686868a939aa4afbdc6c5b9aca09691898686868686868686868686868686796d6053463a2d20130700000000010c18222d363f4149505355545b606266676d7073767a7f8b98a5b1becbcec4bab2acababadb3b6b9ac9f9386796c65727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a04060706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161f2c3844515c6673808d9aa6b0bbc7d3d4c9beb5ada7a5a0a0a0a0a0a0a0a0a0aaabb1b9c3cdd5cabfb6aea8a6a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09c908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8b5c2c3c2babac0c1c5cad2ccc7c3c2bababec0c3bbaea194887b7784919daab7ab9e91857875818e9ba5a5a5a5a5a5a5a5a5a5a5a59e91847774808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcbbaea3999292929292929292929292929292929292929292929292939aa4afbbb9ac9f9286796c5f5346392c20130600000000000000000000000713202d3946525e687783909daab6c3cbbfb4aa998c7f7784919eaab7c4c7baada194877a6e6154473b2e212b33383c3d3b3936302920212d3a46535e6975818e9ba7b1bcccc5b9ac9f92867a6e61554b4034281c1004000000000000000713202c38444f596063676767676767676c7885929fabb8c1b5a89b8e827568676767676767676767707d899892908e8c8f949fabb7c4b8ab9e91847873716f6d67696a74818e9898928c847e766f6a605b544a443e352c21160b0000000000020f1c2835424f5b6875828e9ba8ababababababababababababababadb2bbc4cfcfc4bbb2adababababababab9f928579727e8b98a5b1bec0b5aaa09895949494949494949494949494949494949494887b6e6155483b2e221508000000000000000a1623303d495663707c89939393939393939393939393989fa2aab4bfc5c5c5c3b9b0a69f9c93939393939393939393939393979fa4acb6c0c5c5bdb2a8a09e969393939393939393939393939386796d6053463a2d201307000000000006111b242d2f383f4446484a505355555c606366686f7b8895a2aebbc8c9bdb2a8a19e9ea1a9aaacab9f9285786665727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54626e7b88949fabb7c6d1cfc3b8ada39b989494949494949494949d9fa7b1bcc8d0c4b9aea49c99949494949494949494949494949494949494949494908376695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8b5bababababdbec2c8cfd8d1cac4c0bfbababababaaea194887b7784919daab7ab9e91857875818e9ba8aaaaaaaaaaaaaaaaaaaaaa9e91847774808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000000000030a1724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcbfb5aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa4acb6c0b9ac9f9286796c5f5346392c201306000000000000000000000005111d2a36414c566673808d99aab4bfcac2b6a99c8f837784919eaab7c4c7baada194877a6e6154473b2e2b353d44484a4746413b32282935414c56616e7b87929facb9c2c7bbb0a69b8e8174685e5243392e23180c000000000000000004101b27323d474f54565a5a5a5a5a5a5f6c7885929fabb8c1b5a89b8e8275685b5a5a5a5a5a5a5a64717e8b979f9d9b999c9fa6b0bbc5b8ac9f928681807e7c7a787674727a85928e867f79716c625f585957554f473e33281c100400000000020f1c2835424f5b6875828e9ba8b5b7b7b7b7b7b7b7b7b7b7b7b7b8b9bdc4cdcec8c5c3beb9b8b7b7b7b7b7ac9f928579727e8b98a5b1bec6bbb2aaa4a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a194887b6e6155483b2e221508000000000000000a1623303d495663707c8996a0a0a0a0a0a0a0a0a0a0a0a5acaeb4b8b8b8b8b8babfb8b0aba9a0a0a0a0a0a0a0a0a0a0a0a0a0a4acafb6b8b8b8b8b8b8b2acaaa2a0a0a0a0a0a0a0a0a0a0a0a09386796d6053463a2d20130700000000000009121b1d262d3337393c3f4446494b51535656626f7b8895a2aebbc8c5b9aca196919297999d9fa49e9184776b65727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3947535f697683909caab4bfcbccc0b3a79b918b87878787878787878790959fabb8c4cdc1b4a89c928c878787878787878787878787878787878787878787878276695d5043362a1d100300000000000f1c2935424f5c6875828f9ba8aeaeaeaeaeb0b1b6bdc5cfc8bfb8b4b2aeaeaeaeaeaea194887b7784919daab7ab9e91857875818e9b9d9d9d9d9d9d9d9d9d9d9d9d9d91847774808d9aa7b3beb1a4978b7e7164584b3e3125180b00000000000001080e131724303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcc4bab2acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7acaeb4bcc5b9ac9f9286796c5f5346392c2013060000000000000000000000010d1925303d495663707c8998a2aebac6c5b8ac9f92857984919eaab7c4c7baada194877a6e6154473b2e323d474f545654524c443d342e3946525e6874808d99a3afbbc7c4b7ab9f94887c6f62564c4130271d12070000000000000000000b16212b353d4448494e4e4e4e4e525f6c7885929fabb8c1b5a89b8e8275685b4f4e4e4e4e4e5966727f8c99a5aaa8a6a9abb0b8c2c6baaea298928e8c8a88878583817f7d8187817b7472706e696a68666361594f44382c20140700000000020f1c2835424f5b6875828e9ba8b5b6b6b6b6b6b6b6b6b6b8babec4c5c9cfcbc3bcb8b7b6b6b6b6b6b6b6b6ac9f928579727e8b98a5b1becbc4bbb5b0aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea194887b6e6155483b2e221508000000000000000a1623303d495663707c8996a3acacacacacacacacacacacacacacacacacacacaeb4bcbbb7b6adadadb4aeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca09386796d6053463a2d20130700000000000000090b141b22272b2d2d3338393c4045464955626f7b8895a2aebbc8c4b7ab9e918485898c90939a9b9083776a65727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c2b37424d5765717e8b98a3aebac7cbbeb2a5988b7f7a7a7a7a7a7a7a7a7a83909daab6c3ccbfb3a6998c807a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a6d6054473a2d2114070000000000000f1c2935424f5c6875828f9ba1a1a1a1a1a1a3a5abb3bdc8bfb5ada8a6a1a1a1a1a1a1a194887b7784919daab7ab9e91857875818e909090909090909090909090909090847774808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000000020b12191f2324303d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcbdb2a8a09e9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9fa2aab4bfb9ac9f9286796c5f5346392c2013060000000000000000000000000813202d3a4653606d7985929facb8c5c7baaea298897c84919eaab7c4c7baada194877a6e6154473b303b444f596063615e564f443f38414b55616d7a86929fabb5c0c8bcb1a79c8f82766a5f53443b301e150b00000000000000000000040f19232b32383b3d4141414145525f6c7885929fabb8c1b5a89b8e8275685b4f424141414e5a6774818d9aa7b4b5b3b5b7bbc2cacabfb4aaa29f9b9997959791908e8c8a8e868482807f7d7b79777573706b6155483c2f23160900000000020f1c2835424f5b6875828e9ba8a9a9a9a9a9a9a9a9a9a9abadb3bbc5d0cec3b9b1acaaa9a9a9a9a9a9a9a9a99f928579727e8b98a5b1becbcbc6c0bcbbbababababababababababababababaaea194887b6e6155483b2e221508000000000000000a1623303d495663707c89969f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2aaafb7c0c2babfb4aaa39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9386796d6053463a2d2013070000000000000000020a11171b1f2022282b2d2e34383c4855626f7b8895a2aebbc8c0b3a79a8d80787c8083878b8e8f82766965727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c4754606d7a86929facb9c5d0c1b5a89b8e82756d6d6d6d6d6d6d7683909da9b6c3ccbfb2a5998c7f726d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d685d5245392c2013060000000000000f1c2935424f5c6875828f94949494949494969aa1abb6c2b8ada39c999494949494949494887b7784919daab7ab9e918578738084848484848484848484848484848484827574808d9aa7b3beb1a4978b7e7164584b3e3125180b00000000010b141d242b3033343d4a5763707d8a96a3b0bdbaada094877a6d6154473c4956636f7c8996a2afbcb9aca096918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a2aebab9ac9f9286796c5f5346392c20130600000000000000000000000006131f2c3845515c6676828f9ca9b5c2cabfb4aa988c7f84919eaab7c4c7baada194877a6e6154473b36414c56606b706e686059504a4245515d6773808c98a2aebdc7c5b8aca0958a7d7063584e4332291e0c03000000000000000000000007111921272c2f303434343945525f6c7885929fabb8c1b5a89b8e8275685b4f423535424f5c6875828f9ba8b5c1bfc2c3c7ccd4d0c5bcb4aeaca8a6a4a9a19e9c9a98979a93918f8d8b89878583817f7d7063574a3d3024170a00000000020f1c2835424f5b6875828e9b9c9c9c9c9c9c9c9c9c9c9c9fa2a9b3becac8bcb1a7a09d9c9c9c9c9c9c9c9c9c9c928579727e8b98a5b1bebebebebebebebebebebebebebebec2c3c7ccc7c7bbaea194887b6e6155483b2e221508000000000000000a1623303d495663707c89929292929292929292929292929292929292929292989da5afb9c3bdb9aea398929292929292929292929292929292929292929292929292929292929292929292929286796d6053463a2d20130700000000000000000000060b11171c1f20202023282f3c4855626f7b8895a2aebbc8c0b3a79a8d80746f73777a7e828581756865727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c3945525d6875828f9baab4bfcbc5b8ac9f9285796d61616161616a7683909da9b6c3ccbfb2a5998c7f72666161616161616161616161616161616161616161605d564c4135291d11040000000000000f1c2935424f5c68758187878787878787878a8f9aa5b1beb4a89c918c8787878787878787877b7784919daab7ab9e9185786e7377777777777777777777777777777777757074808d9aa7b3beb1a4978b7e7164584b3e3125180b0000000008121d262e363c3f41414a5763707d8a96a3b0bdbaada094877a6d615447414956636f7c8996a2afbcb7aa9e91848181818181818181818181818181818181818181818186929facb8b9ac9f9286796c5f5346392c20130600000000000000000000000004101c2834404b5466737f8c99aab4bfc1beb5a89b8f8184919eaab7c4c7baada194877a6e6154473b3a46525e68707d7a706b605c544d4b55606d7a85929faab4bfc9bdb2a89d9083786c6053463c3220170d00000000000000000000000000070f161b20222327272c3945525f6c7885929fabb8c1b5a89b8e8275685b4f423b3b3f4a546a7683909da9b6bbbfc6c6ccd3dcd7cec5bfbab8b4b3b1b3adaba9a7a5aca49f9e9c9a98969892908e8c83766a5d5043372a1d1004000000020f1c2835424f5b6875828e8f8f8f8f8f8f8f8f8f8f8f8f9297a2adbac6c5b8aca095908f8f8f8f8f8f8f8f8f8f8f8579727e8b98a5b1b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b6b7bbc2cac7bbaea194887b6e6155483b2e22150800000000000000091623303c4956636f7d868585858585858585858585858585858585858585858e939da7b1b7b2adab9f92868585858585858585858585858585858585858585858585858585858585858585858586786d6053463a2d201307000000000000000000030c151c23282c2d2d2d2d2d2f3c4855626f7b8895a2aebbc8c0b3a79a8d80746766686e7175797b6e6165727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5664717d8a98a3aebac7c6baaea298897d70635654545d6a7683909da9b6c3ccbfb2a5998c7f7266595454545454545454545454545454545454545454524c433a2f24190d010000000000000714212e3a4754616d7a7b7b7b7b7b7b7b7b7d8a96a3b0bdb2a6998c7f7b7b7b7b7b7b7b7b7b787784919daab7ab9e918578757575757575757575757575757575757575757575808d9aa7b3beb1a4978b7e7164584b3e3125180b000000030e19242e3840474c4d4e4e5763707d8a96a3b0bdbaada094877a6d61544e4e4956636f7c8996a2afbcb4a89b8e817574747474747474747474747474747474747474747884919eabb8b9ac9f9286796c5f5346392c201306000000000000000000000000000c18232e3c4956636f7c8998a3aeb8b5b3adab9e918584919eaab7c4c7baada194877a6e6154473b434f59616e7a85857d736d665e57515d67727f8c97a2adbcc6c5b9ada1968b7e71655b5044372b1f12050000000000000000000000000000040b101316161b1f2c3945525f6c7885929fabb8c1b5a89b8e8275685b4f48484848505b667885919eaaacaeb5b6bbc1cad3d7d0cac6c5c5c1bfbdbeb9b8b6b4b2b6afacaba9a7a5aaa29f9d9b8f8275685c4f4235291c0f02000000000d192633404c5966737f8383838383838383838383838385929fabb8c5c3b7aa9d908383838383838383838383838276727e8b98a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a9abb0b8c2ccbbaea194887b6e6155483b2e221508000000000000000915222f3b4854606b6f79797979797979797979797979797979797979797979818e959faaaba9a19e9b8e8179797979797979797979797979797979797979797979797979797979797979797979796d665c5044382b1f12060000000000000000000a151e262e34383a3a3a3a3a3a3c4855626f7b8895a2aebbc8c0b3a79a8d807467565e6165666c6e695e65727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4753606d7a86929facb8c5c3beb4aa9a8d807467574d505d6a7683909da9b6c3ccbfb2a5998c7f7266594c4747474747474747474747474747474747474745413a31281e1308000000000000000713202d3946525e686d6e6e6e6e6e6e6e6f7c8895a2afbbb2a5988b7f726e6e6e6e6e6e6e6e6d7784919daab7ac9f92868182828282828282828282828282828282828282828184919daab7beb1a4978b7e7164584b3e3125180b00000007131f2b36404a52585a5b5b5b63707d8a96a3b0bdbaada094877a6d615b5b5b5356636f7c8996a2afbcb4a89b8e817676767676767676767676767676767676767676767884919eabb8b9ac9f9286796c5f5346392c201306000000000000000000000000000713202d3a4653606d7986929facaba8a9a29e9b979186929facb9c5c7baada194877a6e615447414c55616b75818e918780786e696159606d7a85929ea9aeb4babeb3a99e9184796d6053493f33271b0f03000000000000000000000000000000000407090a121f2c3945525f6c7885929fabb8c1b5a89b8e8275685b545454545454606c7986929b9d9fa3abaab0b8c1cccec6bfbab8b8babfbec0c2c4c3c1bfc0bbb9b7b5b3b2b4aeaca79a8d8174675a4e4134271b0e01000000000c1925323e4b57636d7376767676767676767676767676828f9ca9b6c2bdb0a3968a7d76767676767676767676767670727e8b9898989898989898989898989898989898989c9fa6b0bbc7bbaea194887b6e6155483b2e2215080000000000000007131f2c38444f5960636b706b6c6c6c6876797a7a7a7a7a7a7a79756c6c6c6d79839098a39f9c96918f8e897c706c6c6c6c717a6e696c6c6c6c6c6c6c6e7b7b7b7b7b7b7b7b7b7a6d6c6c6c6c6c6c605c544a3f34281c1005000000000000000006111c2630383f44464646464646464855626f7b8895a2aebbc8c0b3a79a8d8074675a5254545b60615e5665727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202c3945515d6775828f9cacb6b9b6b3adaa9e918477695f53505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39352f281f160c010000000000000005111d2935414c565e61616161616161626f7c8895a2afbbb2a5988b7f7265616161616161616a7784919daab7aea398928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9196a0acb8beb1a4978b7e7164584b3e3125180b0000000b1723303c47525c646767676767707d8a96a3b0bdbaada094877a6d67676767605d636f7c8996a2afbcb8ab9e91858282828282828282828282828282828282828282828286929facb9b9ac9f9286796c5f5346392c2013060000000000000000000000000006131f2c3845515c677683909ca19e9b9897928f8c889196a0acb9c5c7baada194877a6e61544745515d67707d8a9399938d827b706b6066737f8c939a9fa3abaeb4ada1978b7f72665c5141382d22170b000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e82756861616161616161616e7a878c8f9192999b9ea6b0bbc6c6bcb4aeacacaeb4b2b4b6b8b9bebec0c2c4c4c2c0bebfbab2a6998c7f7366594c403326190d00000000000a16232f3b46515b636669696969696969696969696976838f9ca9b6c2bdb0a3968a7d70696969696969696969696965727e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f949fabb7c3bbaea194887b6e6155483b2e221508000000000000030c18212935414c56606b707c746c65616d7a868686868686868687796c5f5c676e7c86929f948f878583817f7c6f62676d747e857b6e665c575f625f6a768387878787878787877f72655e686d756e695e544a3f342820170b02000000000000000c17232e38424a50535353535353535355626f7b8895a2aebbc8c0b3a79a8d8074675a535353535354535865727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b5565717e8b9aa4afaca9a9a29f9b96887b6e6255505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2c29241e160d040000000000000000010d1925303a444c5254545454545455626f7c8895a2afbbb2a5988b7f72655854545454545e6a7784919daab7b4aaa39f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9da0a8b2bdbeb1a4978b7e7164584b3e3125180b0000000d1926333f4c58646e7474747474747d8a96a3b0bdbaada094877a74747474746d67636f7c8996a2afbcb9ada197918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9298a3aebab9ac9f9286796c5f5346392c2013060000000000000000000000000004101c2834404b556673808c9897928e8b8885827f7c84919eaab7c4c7baada194877a6e6154474f59606d7a84919ea49f9490857d746d666f7c81878e92999fa2aaa99e9285796d60544a402f261b1106000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e82756e6e6e6e6e6e6e6e6e6e797e80828486888f939eaab6c3bfb4aaa29f9fa3aaa5a7a9abadb3b1b3b5b7b9babfbfc0beb1a4988b7e7165584b3e3225180b000000000006121e2a3540495157595c5c5c5c5c5c5c5c5c5c5c6976838f9ca9b6c2bdb0a3968a7d70635c5c5c5c5c5c5c5c5c5c626f7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f828f9ca9b6c2bbaea194887b6e6155483b2e2215080000000000000b151e2a333c45525d68707d8680776c656d7a879393939393939286796c5f555f6a737f8c998f827b787674726f6a696e79818a9083786d605f696e696a7683909494949494948c7f7265696e7a827b6e665c50443d32291d140a00000000000003101c28343f4a545c606060606060606060626f7b8895a2aebbc8c0b3a79a8d80746760606060606060605c65727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b4754616e7a87939fa39f9c9997928f8b887e716458505d6a7683909da9b6c3ccbfb2a5998c7f7266594c3f332621212121212121212121212121212121201d19130c040000000000000000000008131e28323a414647484848484955626f7c8895a2afbbb2a5988b7f7265584c484848515e6a7784919daab7bcb4aeaca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8aaacb2bac3beb1a4978b7e7164584b3e3125180b0000010e1a2734414d5a6774808181818181828f9ca9b5c2c1b4a89b8e818181818181796d636f7c8996a2afbcbeb2a9a19e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa3aab4bfb9ac9f9286796c5f5346392c20130600000000000000000000000000000c18232e3d4a5663707d898b8885827f7c7975727784919eaab7c4c7baada194877a6e61544c56616b74818e96a1ada69f97928a80786e6a6f757b81868d92989ea1978c7f72675d5142392e1d140a00000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c2b5a89c8f827b7b7b7b7b7b7b7b7b7b7b7b7b7a7577797b828f9ba8b5c2baaea29892929896989a9c9ea1a9a4a6a8aaacaeb4b2b4b6b0a3968a7d7063574a3d3024170a0000000000020d19232e3740464b4c4b5153535353535353535c6976838f9ca9b6c2bdb0a3968a7d7063575353535353535350535f6a6f72727272727272727272727272727272727273808d9aa6b3c0bbaea194887b6e6155483b2e221508000000000007121d27303c45505a606d7a84918d81776c6d7a8794a0a0a0a09f9286796c5e615f6a75818e9b948f86807a726d666c717b838e93958c7f726a6a6f7b716c7683909da1a1a1a1988c7f726a6f7b838f82786d60594f443b2f261b1106000000000006121f2c3844505c666d6d6d6d6d6d6d6d6d6d6f7b8895a2aebbc8c0b3a79a8d80746d6d6d6d6d6d6d6d6d6665727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687783909a9992908c8985827e7b716c6256505d6a7683909da9b6c3c3bfb2a5998c7f7266594c3f33261914141414141414141414141414141413110d08010000000000000000000000020c1620283035393a3b3b3b3c4955626f7c8895a2afbbb2a5988b7f7265584c3f3b44515e6a7784919daab7bbbfbab8b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b7b8bdbbbbbbb1a4978b7e7164584b3e3125180b000005121f2c3845525f6b78858e8e8e8e8e8f949fabb7c3c2b6aa9e938e8e8e8e8e877a6d636f7c8996a2afbcc3b9b1acaaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6abaeb4bcc5b9ac9f9286796c5f5346392c20130600000000000000000000000000000714202d3a4753606d79817e7b7875726f6c656b7784919eaab7c4c7baada194877a6e6154525d68707d8a939da8b2b0a9a29e928d837b706c6a6e747b80858c919792857a6d60554b4030271c0b0200000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5b7aa9e948f878787878787878787878787878074666d75818e9ba8b4c1b8ac9f92868688898b8d8f91979597999b9e9fa3aba5a7a9abab95887c6f6255493c2f22160900000000000007121c252e353b404b555d6060606060606060606976838f9ca9b6c2bdb0a3968a7d706360606060606060605c54585f6265656565656565656565656565656565656773808d9aa6b3c0bbaea194887b6e6155483b2e22150800000000000c18232e39424d57626c75818e96938d80746d7a8794a0adadac9f9286796c686d686f7c87939f9f98928d857f7970747e8690959d9f92867c6f6f7c867e717683909da9aeaea5988c7f72707c8490948c80736b60564c41382d22170b000000000613202d3946535f6c7678797979797979797979797c8895a2aebbc8c0b3a79a8d80787979797979797979786d65727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566773808d8d8a86837f7c7975726e69625a50505d6a7683909da9b6b6b6b6b2a5998c7f7266594c3f3326190c07070707070707070707070707070604010000000000000000000000000000040e161e25292d2e2e2e2f3c4955626f7c8895a2afbbb2a5988b7f7265584c3f3744515e6a7784919daaaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea4978b7e7164584b3e3125180b000005121f2c3845525f6b7885929a9a9a9a9c9fa6b0bbc7c6baafa59e9b9a9a9a93877a6d636f7c8996a2afbcbcb1a7a09d999999999999999999999999999999999999999999999fa2aab4beb9ac9f9286796c5f5346392c20130600000000000000000000000000000613202c3945515d676d75726e6a686562605b6b7784919eaab7c4c7baada194877a6e61545a616d7a84919ea5afbabbb3ada49d9590857d706462696e737a7f858b8c7f72675d5143392f1e150b0000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5bbb0a69e9c9494949494949494949494948d8174676976838f9ca9b6c1b4a79a8e81787b7d7f81838587898b8d8f91929996989a9c9ea199877a6e6154473b2e211408000000000000000a131c1f2c3845515d676d6d6d6d6d6d6d6d6d6d76838f9ca9b6c2bdb0a3968a7d706d6d6d6d6d6d6d6d6d665c505355585858585858585858585858585858585a6773808d9aa6b3c0bbaea194887b6e6155483b2e2215080000000004101c2834404b545f69717e8b939e9d928c80737a8794a0adb9ac9f9286796c737a6d75828f99a4aaa29f97928c847d818a9298a0a7a399908378788390877d7683909da9b6b2a5988c7f727d8691969f93877d70685e53493f33271b0f030000000613202d394653606c798686868686868686868686888e98a4b0bdc9c1b5a99d928d86868686868686868685786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303d4a5663707d84817d7a76736f6d6665615f575048505d6a7683909da9aaaaaaaaaaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000040c13191d202121222f3c4955626f7c8895a2afb4b2a5988b7f7265584c3f3744515e6a7784919da2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978b7e7164584b3e3125180b000005121f2c3845525f6b7885929ea7a7a7a9abb0b8c2cccbc1b7afaaa8a7a7a093877a6d636f7c8996a2afbcb8aca095908d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9298a2aebab9ac9f9286796c5f5346392c201306000000000000000000000000000004111d2935404b555d606865625f585855535e6b7784919eaab7bdbdbaada194877a6e6157616c75818e96a1adb7c0c5beb9aea79f93877d7063575e61686d72797e83796d60554b4131271d0c030000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5c1b8b0aaa8a1a1a1a1a1a1a1a1a1a1a19a8d8174676a7784909daab7bfb3a6998c80736e70727476787a7c7e80818486888a8c8d8f91979286796c605346392d20130600000000000000010714202d3a4753606d797a7a7a7a7a7a7a7a7a79828f9ca9b6c2bdb0a4978a7e7a7a7a7a7a7a7a7a7a786d605346484c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4d5a6773808d9aa6b3c0bbaea194887b6e6155483b2e2215080000000006131f2c3845515c666e7b86929fa5a49c928b7e7a8794a0adb9ac9f9286797880857a7c8893999fa3aba9a29f96918a8e939fa2aaa59e9691867d7f8c9592867c83909da9b6b2a5988c7f7f879298a1a49991857a6e655b5044372b1f12050000000613202d394653606c7986939393939393939393939598a0aab5c0ccc5b9aea49d9a93939393939393939285786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000816222f3c4854606b707774706d686662605c5455534d4543505d6a7683909d9d9d9d9d9d9d9d998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000002080d11131416222f3c4955626f7c8895a2a7a7a7a5988b7f7265584c3f3744515e6a77849195959595959595959595959595959595959595959595959595959595959595959595959595958b7e7164584b3e3125180b000005121f2c3845525f6b7885929eabb4b4b5b7bbc2cad4d3c9c1bab6b4b4ada093877a6d636f7c8996a2afbcb7aa9d90838080808080808080808080808080808080808080808086929fabb8b9ac9f9286796c5f5346392c2013060000000000000000000000000000010d18242f3a434b51535b5855534e4c48515e6b7784919eaab1b1b1b1ada194877a6e615e69717e8a939ea9b2bdc9cabfb4aaa0958d80736b605452565d60676d71766d675d51433a2f1f150b000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5cac1bbb7b5aeaeaeaeaeaeaeaeaeaea79a8d817467657885919eabb8beb2a5988b7f726563656769686d6f71737c847c7b7d7f81838587888578665b5044382b1f12060000000000000004111d2a3744505d6a7783868686868686868686868f949fabb7c4beb2a69a908a8686868686868686867d7063564a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d5a6773808d9aa6b3c0bbaea194887b6e6155483b2e221508000000000713202d3a4653606d79839098a2aaada49f92877d8a97a3b0b9ac9f92877a828d8e817c81878e92999fa4aba8a09d979a9da5aba49f938e847c7c87929f98918584919eabb7b8ab9e91848c9399a2aaaba1978f82786c605346392d2013060000000613202d394653606c7986939fa0a0a0a0a0a0a0a0a2a4aab2bcc6d1cbc0b6aea9a7a0a0a0a0a0a0a09e9285786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f5960636b6764605d565653504a4846423b43505d6a7683909090909090909090908c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000105070916222f3c4955626f7c88959b9b9b9b9b988b7f7265584c3f3744515e6a7784888888888888888888888888888888888888888888888888888888888888888888888888888888887e7164584b3e3125180b000005121f2c3845525f6b7885929eabb8c1c2c3c7ccd4dcdbd3cbc6c2c1baada093877a6d636f7c8996a2afbcb4a89b8e817573737373737373737373737373737373737373737884919eabb8b9ac9f9286796c5f5346392c20130600000000000000000000000000000007131d28313a4045474e4b4847433f44515e6b7784919ea4a4a4a4a4a4a194877a6e61666e7b85929fa5afbbc4ccc3baaea2989083796d60594f464c52555c606569605d554b4031281d0d03000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5d2ccc7c3c2bababababababababab4a79a8d8174676c7986929facb9bdb1a4978a7e716457585a565d606b707d8691857b70727476787a7c7d7063544a3f33281c0f030000000000000004111d2a3744505d6a7783909393939393939393939c9fa6b0bbc7c2b7aca29a979393939393939393897d7063565659595959595959595959595959595959595a6773808d9aa6b3c0bbaea194887b6e6155483b2e221508000000000713202d3a4653606d78808a9298a1a9aea3999285929fabb8b9ac9f9388848f94938a7e757b81868e9399a4afacaaa3a7a9afa499938b817a79839099a3a197919196a1acb9b9ada19691969fa4abafa69f9691857b6e6255483b2f2215080000000613202d394653606c7986939facacacacacacacacaeb0b5bcc4ced8d2c8c0b9b5b3acacacacacacab9e9285786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d474f54565e5a5754524c4946443f3b3a3631414e5b68748183838383838383838383837e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c888e8e8e8e8e8e8e8b7f7265584c3f323b4855616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a6d6054473a2d211407000005121f2c3845525f6b7885929eabb8bcbfc0c4cad1d9d8cfc8c2bebdbaada093877a6d636f7c8996a2afbcb4a89b8e817878787878787878787878787878787878787878787884919eabb8b9ac9f9286796c5f5346392c201306000000000000000000000000000000010c161f282f35393a423f3b3a373144515e6b778491979797979797979794877a6e616c78828f97a2adb7c1cdc3baafa59f92867c6e675c51473d41454b5153585d53514b43392f1f160c00000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5cbc3bcb8b6b2b2b2b2b2b2b2b2b2b2a79a8d8174676d7a8799a3afbbbcb0a396897d7063564c515a616c707d86929791847b6e6969676d6f706b615542382d22170b000000000000000004111d2a3744505d6a7783909da0a0a0a0a0a0a0a0a9abb0b8c2cdc8bdb4aca6a4a0a0a0a0a0a0a096897d706360636666666666666666666666666666666666666773808d9aa6b3c0bbaea194887b6e6155483b2e2215080000000006121f2b3844505c666d737e869297a1a9aba2979297a2adbabbafa49a9391969e9e92857b6e747b8187939facb9b7b0b4b9ac9f93867e75737f8c959ea5a9a19e9ea1a8b2bdbdb2a8a19ea1a8afaba49f948f847c6f6a5f53473a2e2114080000000613202d394653606c7986939facb9b9b9b9b9b9b9bbbdc0c6ced6e0dad2cbc5c1c0b9b9b9b9b9b8ab9e9285786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353d44484a514e4a4745413c3a38342e2d2a33404c59646f747777777777777777777777716c6256493d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8181818181818181817d706356493d303a47535f696e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d685d5245392c201307000005121f2c3845525f6b7885929eabafafb2b4b8bfc7d1cfc6bdb6b2b0afada093877a6d636f7c8996a2afbcb8ac9f92868484848484848484848484848484848484848484848487929facb9b9ac9f9286796c5f5346392c20130600000000000000000000000000000000040d161d24292c2d35322f2e2b3844515e6b77848a8a8a8a8a8a8a8a8a8a877a6e6a727f8c949fa9b3bec9c6bcb2a89e938b7e716a5f554b403535394045464b504745403931281d0d0400000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5c3b9b1acaaa5a5a5a5a5a5a5a5a5a5a59a8d8174676e7b8895abb5c0c0b5ab95887c6f6255515b626c717e879298a19691847b6e685e60626361594f442f261c1106000000000000000004111d2a3744505d6a7783909daaadadadadadadadb6b7bbc2cad4cfc6bdb7b2b0adadadadadada396897d70636b707373737373737373737373737373737373737373808d9aa6b3c0bbaea194887b6e6155483b2e2215080000000003101c28343f4a545c606c717c859196a1a8a9a29fa2a9b3bec0b6aca49f9ea0a8a2978f82756c6f7a828f9ca8b3adabacafafa49990827b717b838e939da5adababacb2bac4c4bab2adabadb0a9a199938c827a6f6a5f584e43372b1f12060000000613202d394653606c7986939facb9c6c6c6c6c6c6c8c9ccd1d8e0e8e4dcd6d1cecdc6c6c6c6c5b8ab9e9285786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a232b33383c3d44413d3a39352f2d2b28232124303c48535d64686a6a6a6a6a6a6a6a6a6a6a64625a5045392d21150800000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e696e747474747474747474706b6054483c2f37424d575f6162626262626262626262626262626262626262626262626262626262626262626262626262626262605d564c4135291d1104000005121f2c3845525f6b7885929ea3a3a3a5a8adb5bfcac8bdb4aba6a3a3a3a093877a6d636f7c8996a2afbcbaaea29892919191919191919191919191919191919191919191919299a3afbbb9ac9f9286796c5f5346392c2013060000000000000000000000000000000000040c13181d20202825222124313d4a5764707d7e7e7e7e7e7e7e7e7e7e7e796d6f7c87929fa6b0bcc5cbbfb4aaa0968e81756c62574e43392e292e34383a3e433a39352f281f160c0000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5bcb1a7a09d9898989898989898989898988d8174676f7c8996a2afbcbbafa499877a6e61545b636d727e879299a2a8a09691837a6d685d5557554f473e331d140a00000000000000000004111d2a3744505d6a7783909daab6b9b9b9b9b9b9c2c4c7cdd4dcd8cfc8c2bebdb9b9b9b9b9b0a396897d7063707d808080808080808080808080808080808080808083909da9b6c3bbaea194887b6e6155483b2e22150800000000000b17232e38424a505a616a6f7c849196a1a9adabadb3bcc5c7beb6afacaaaca69f98928a7d727d848f949eaaa9a19e9fa3abab9f9490857e7279818e939da4aeb7b9bdc4ccccc4bdb9b4aea69e97918780786d685f584e463c31261a0f020000000613202d394653606c7986939facb9bcbcbcbcbcbcbebfc3c8d0d8e2dbd3ccc6c3c1bcbcbcbcbcb8ab9e9285786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21272c2f303834312d2c2924201f1c1714202b37414b53595b5d5d5d5d5d5d5d5d5d5d5d585650483e34291d1105000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575e616868686868686868686360594f44382c313c454d53555555555555555555555555555555555555555555555555555555555555555555555555555555555554524c443a2f24190d01000005121f2c3845525f6b78859296969696999ca3adb8c4c2b6aba29a9796969693877a6d636f7c8996a2afbcbfb4aaa29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa3abb5c0b9ac9f9286796c5f5346392c20130600000000000000000000000000000000000001070d1113141b18151623303c4955616c7071717171717171717171716d6d79849199a3aeb8c2ccc3baaea3989184796d605a50453c30271d23282c2d32362d2c29241d160d040000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5b8aca095908c8c8c8c8c8c8c8c8c8c8c8c8c807467707d8a97a3b0bdb9ac9f9386796d605b606d727f879299a3abb2a8a09590837a6d675d544a443e352c210b0200000000000000000004111d2a3744505d6a7783909daab4b4b4b4b4b4b4b8b9bec4cdd6d4cac2bbb7b6b4b4b4b4b4b0a396897d706673808c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c90959fabb8c4bbaea194887b6e6155483b2e221508000000000006111c2630383f445058606a6e7b849197a1aab4babec5ced0c7bdb5afa9a19e948f867f777f8791969ea6a59e97929299a0a7a69f97928a7f7278808d929da5afb8c2cdd2c9c0b9b1aaa39f948f857d736c665e564e463c332a201509000000000613202d394653606c7986939facafafafafafafafb1b2b7bec6d0dad3c9c1bab6b5afafafafafafab9e9285786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f161c2022232b272421201d191312100b0f1a252f3941484c4e50505050505050505050504b49453e362d22170c000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b454d53545b5b5b5b5b5b5b5b5b56544f473d33272a333c424748484848484848484848484848484848484848484848484848484848484848484848484848484848484745413a32281e130800000005121f2c3845525f6b788589898989898c919ca8b4c0beb2a69a908a89898989877a6d636f7c8996a2afb2b2b2b4aeacababababababababababababababababababababababacafb5b2b2b2ac9f9286796c5f5346392c2010080000000000000000000000000000000000000000010406070f0c0814202d3944505a616464646464646464646464646c74818e96a0abb5bfcac3baafa59f92867c6f675d51483f332a1e15181c1f20252a20201d18120c04000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c3b6aa9d90837f7f7f7f7f7f7f7f7f7f7f7f7f7d7065717e8b98a4b1beb8ab9e928578665c656c737f8b9399a3abb4bab1a8a0959083796d665c5044382c231a100000000000000000000004111d2a3744505d6a7783909da7a7a7a7a7a7a7a7abadb2bbc4cfccc2b8b0aba9a7a7a7a7a7a7a396897d706673808c999999999999999999999999999999999999999d9fa7b1bcc7bbaea194887b6e6155483b2e2215080000000000000a141e262e343e464e585f696e7b859298a2aebac0cfd2c7bdb5aba39f97928b827b726e7b86929fa7a19e938e858790959fa4a29891847a6d6c74808d939ea6b0bbc4cbc0b7afa79f98928b827a706b605b544c443c342a21180e03000000000613202d394653606c7986939fa2a2a2a2a2a2a2a2a4a6acb4bec8d3ccc1b7afaaa8a2a2a2a2a2a2a29e9285786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101416171e1b171413110d0806030009131d272f373c404144444444444444444444443e3d39342d241b10060000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b4246484e4e4e4e4e4e4e4e4e4948443d352b21212a31373a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a39352f2820160c0100000000091623303c4956636f7d7c7c7c7c7c7f8c99a5b2bfbdb0a3978a7e7c7c7c7c7d786d636f7c8996a2a5a5a5a5a5a5a5a5a5a5a5a5a8aaafb7b7b7b7b7b2acaba5a5a5a5a5a5a5a5a5a5a5a5a59f9286796c5f53463928211a11080000000000000000000000000000000000000000000000020004101c28333e475055575757575757575757555f69717e8a939ea8b2bdc6c6bcb2a89e938b7f726a5f554b41362d21180c0c101313181d1413100d070100000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e8175727272727272727272727272706b66727f8c99a5b2bfb7aa9d9084776a666d77808c919fa4abb5bdc3bab1a79f959083796d6053463a2d2013070000000000000000000004111d2a3744505d6a7783909b9b9b9b9b9b9b9b9b9ea1a9b2bec9c7bbb0a69f9c9b9b9b9b9b9b9b96897d706673808c99a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a9abb1b9c2cdbbaea194887b6e6155483b2e221508000000000000020c141c26313b454d53575f696f7c86929fa4aebcc6ccc0b5aba399928d857e766e696b727e8b959f96918a817a7c838d93999f92867c6f68606c77818e949fa9b2bec6baafa59d9590867f756d686059544e463d322a22180f0600000000000613202d394653606c798693969696969696969696979aa2acb7c3cfc6baafa59e9b96969696969696969285786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a110e0a0706040100000000010b151d252b303335373737373737373737373731302d29221b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212931363a3b4141414141414141413d3c38332b2319181f262b2d2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2c29241e160d0400000000000915222f3b4854606b6f70707070707d8a96a3b0bdbaada094877a70707070706d66636f7c8996989898989898989898989898989b9ea5afbac4bdb2a8a19e98989898989898989898989898989286796c5f534638332c231a1005000000000000000000000000000000000000000000000000000b17222c353e44494a4b4b4b4b4b4b4b515c676e7b86929fa5afbac4cabfb4aaa0968e81756d62584e433a2f241b0f06000406070b1007060401000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e827568656565656565656565656563606673808d99a6b3c0b6a99c8f8376686d78818d929ca3afb5bdc2bab2a9a29992887f72665c5044382c1f12060000000000000000000004111d2a3744505d6a77838e8e8e8e8e8e8e8e8e8e9197a1adb9c6c3b7ab9f948f8e8e8e8e8e8e8e8e897d706673808c99a6b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b8bcc2cbc7bbaea194887b6e6155483b2e2215080000000000000005121e2a36424d575f6166666a707e8a929daab4bfc7bbafa4999287807a716c6165707d808390938e847d756d6f79808791978a7e716a6164656d78828f97a1adb9c2b6a99d938e837b726d6666666260584e43372b1f13060000000000000613202d394653606c7986898989898989898989898b909aa6b2bfcbc3b6aa9e938e89898989898989898985786b727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050100000000000000000000020b131a202427282a2a2a2a2a2a2a2a2a2a2a2524211d17100900000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e353535353535353535302f2c272119110e151a1e21222222222222222222222222222222222222222222222222222222222222222222222222222222222221201d19130c0400000000000007131f2c38434f59606363636363707d8a96a3b0bdbaada094877a6d63636363605c636f7c898b8b8b8b8b8b8b8b8b8b8b8b8b8b8e939eaab6c3b9aca196918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b87796c5f5348443e352c21160b0000000000000000000000000000000000000000000000000005101a232c33393c3d3e3e3e3e3e45505a606d79839098a2aeb7c1cbc2baaea2989184796d605b51463c31281d12090000000000000300000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e8275685b59595959595959595959565b6774818e9aa7b4c1b5a89b8e82756e7a828e939da4adbbc0c0b8b0a8a19792877e726d62544a3f34281c100300000000000000000000000d192633404c5966737f8181818181818181818185919eabb8c4c2b6a99c8f828181818181818181817c6f6673808c99a6b3bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfc3c4c7cdc7c7bbaea194887b6e6155483b2e221508000000000000000714212d3a46535f696e7373737373808d98a3aebac6b9ac9f93877b747373736d6c78838c909387817a706b61676d737d85918a7d70696c707373737a84919eabb8c1b4a79b8e81797373737373736f6a6054473b2e22150800000000000000091623303c4956636f7d7c7c7c7c7c7c7c7c7c7c7e8b97a4b1becac1b5a89b8e817c7c7c7c7c7c7c7c7c7c6f65727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f14181a1b1d1d1d1d1d1d1d1d1d1d1d181715110c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e21212828282828282828282322201c160f0703090e121415151515151515151515151515151515151515151515151515151515151515151515151515151515151413110d080100000000000000030f1b27323d474f545656565763707d8a96a3b0bdbaada094877a6d615656565356616e7a7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f818e9ba8b5c1b7ab9e91847f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f72655857554f473e33281c10040000000000000000000000000000000000000000000000000008111a22282d303131312f3a434e57616c74808d95a0aab4bfc9c2b9aea49f92867c6f675d51493f342a1f160c000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e8275685b4f4c4c4c4c4c4c4c4c4c4f5c6875828f9ba8b5c0b4a79a8d81747b848f949ea5aeb6bfbfbbafa69f9691857d716c625b5142382e23170c0000000000000000000000000c1925323e4b57636d7374747474747474747476828f9ca9b6c2bdb0a3968a7d7474747474747474746f6a6673808c99a6b3bababababababababababababababababababababababaaea194887b6e6155483b2e221508000000000000000815222e3b4855616e7b80808080808086929facb9c5b9ac9f938780808080807a717d8a959d9286817b746e69696e767e849192857b6e707e80808080828f9ca9b5c2b6a99c8f82808080808080807c6f6256493c2f231609000000000000000915222f3b4854606b6f6f6f6f6f6f6f6f6f6f6f7b8895a2aebbc8c0b3a79a8d80746f6f6f6f6f6f6f6f6f6a65727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0e0e11111111111111111111110b0a080500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151b1b1b1b1b1b1b1b1b161613100b05000000020608080909090909090909090909090909090909090909090909090909090909090909090909090909090907070401000000000000000000000a16212b343d434849494a5763707d8a96a3b0bdbaada094877a6d61544f59606364686e7272727272727272727272727272727f8b98a5b2beb6a99d9083767272727272727272727272727272726d64646361594f44382c20140700000000000000000000000000000000000000000000000000000810171c202324242935404b555f6a717e8a929da7b1bcc5c5bbb1a79d928b7e716a5f554b40372d22180d04000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c1b5a89b8e8275685b4f423f3f3f3f3f3f3f43505c6976838f9ca9b6bfb3a6998c807379828f949fa7b1b9bdb5aea59d9490847c706b615a51493f30261c11060000000000000000000000000a16232f3b46525b636668686868686868686976838f9ca9b6c2bdb0a3968a7d706868686868686868625f6673808c99a6aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea194887b6e6155483b2e221508000000000000000a1623303d495663707c898c8c8c8c8d9298a3aebac7bbafa49a938c8c8c8c887c7783909da399928e87817b74737b828a91969790827874818c8c8c8c8f949fabb7c3b7ab9f948f8c8c8c8c8c8c8b7e7265584b3f3225180c0000000000000007131f2c38434f5960636363636363636363636f7b8895a2aebbc8c0b3a79a8d80746763636363636363626065727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080e0e0e0e0e0e0e0e0e0a090704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32383b3c3d4a5763707d8a96a3b0bdbaada094877a6d615454606b6f7171717171717171717171717171717171727f8b98a5b2beb6a99d908376717171717171717171717171717171717171706b6155483c2f231609000000000000000000000000000000000000000000000000000000050b10141617202c3945515d676e7c86929fa4aeb9c3c7bdb3a99f958d80746c61584e433a2f251b100700000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8b9b5a89b8e8275685b4f423532323232323744505d6a7783909daab6bfb2a5988c7f726d79828f959fa7b1b3aba39f938e827a6f6a605950483f372d1e150a0000000000000000000000000007131e2a3540495257595b5b5b5b5b5b5b5c6976838f9ca9b6c2bdb0a3968a7d70635b5b5b5b5b5b5b55596673808c99a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a194887b6e6155483b2e221508000000000000000a1623303d495663707c8996999999999fa3aab4bfcbc0b6aca49f99999995887c7d8a95a0aba39f99928e868080878f949ea19f948c8074818e9999999c9fa6b0bbc7bbb0a69f9c9999999999988b7e7265584b3f3225180c00000000000000030f1b27323d474f54565656565656565656626f7b8895a2aebbc8c0b3a79a8d8074675a565656565656565865727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921272c2f303d4a5763707d8a96a3b0bdbaada094877a6d615456636f7d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e818e9ba8b4c1b7aa9e91847e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000408121f2b37434e58606d79839198a2aeb6c0cbc0b5aba1979083786d605a50463c31281d13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabacacaca89b8e8275685b4f4235282626262b3845515e6b7884919eabb7b9b1a4988b7e71676d79839095a0a8a9a199928b81786d685f584f473e362d251b0c0300000000000000000000000000020d19242e3740464b4c4e4e4e4e4e4e505c6976838f9ca9b6babab0a3968a7d7063574e4e4e4e4e4e4d596673808c9494949494949494949494949494949494949494949494949494949494887b6e6155483b2e221508000000000000000a1623303d495663707c8996a3a6a6a6acaeb4bcc3ccc7beb6afaca6a6a295887b8390959c9fa6aba39f98928d8d92999fa6a79f9a93867d818e9ba6a6a9abb0b8c2cec2b8b0aba9a6a6a6a6a5988b7e7265584b3f3225180c00000000000000000a16212b353d4348494949494949494955626f7b8895a2aebbc8c0b3a79a8d8074675a4d49494949494c5865727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f24303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8e939eaab6c2b9aca096918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000815212e3a47535f6a75828f95a0aab4bfc6c2bbafa39992857b6e665c51483e342a1f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929f9f9f9f9f9f9b8e8275685b4f4235281c191c2934404b556c7885929fabacacaca4978a7d7164676d7a839096a09f9791877f746d665e564e463d352c241b130900000000000000000000000000000007121c252e353b3e40414141414143505c6976838f9ca9aeaeaeaea3968a7d7063574a41414141414d59667380878787878787878787878787878787878787878787878787878787878787877b6e6155483b2e221508000000000000000a1623303d495663707c8996a3aaaaaaaaaaacb1bac3cfc3b9b1acaaaaa295887c7e83898f949fa3aaaaa39f9a999fa3aba69f959087817a818e9ba7aaaaacaeb4bcc6c4bbb3adabaaaaaaaaa5988b7e7265584b3f3225180c0000000000000000040f19232b32383b3c3c3c3c3c3c3c4855626f7b8895a2aebbc8c0b3a79a8d8074675a4d413c3c3c3f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1724303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818e97979797979797979797979797979797979b9ea5afbac6bdb2a8a09e979797979797979797979797979797979797908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8691969ea5aeb5bdb9afa59f92877d70695e544b40362d22180d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c788592929292929292928e8275685b4f4235281c131f2c3845515c677986929f9f9f9f9f9f96897d70635d686d7a8491969490857d726d605c544c443c342b231a120901000000000000000000000000000000000a131c242a2f3233353535353643505c6976838f9ca1a1a1a1a1a1968a7d7063574a3d3535353a4754606d7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786d6053463a2d201307000000000000000a1623303d495663707c89969d9d9d9d9d9da0a8b1bdc7bdb1a7a09d9d9d95887b71777d828a9298a3aeaeaca7a6acaeab9f948f837c7474818e9b9d9d9d9fa2aab4bfbeb3a9a19e9d9d9d9d9d988b7e7265584b3f3225180c00000000000000000007101921272c2f3030303030303c4855626f7b8895a2aebbc8c0b3a79a8d8074675a4d413430323f4c5865727f8b98a5b2becabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818e9ba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a8aaafb7c1cbc4bab2acaaa4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49c908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000815212e3a47535f6a6f7c848e939fa3abb2b1a79e938b7f726b60574d42392e241b100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b78858686868686868686868174685b4e4135281b14202d3a4753606d7a869292929292929399897c6f63565e686e7b84918d827a6f6b625b514b423a322a221a1108000000000000000000000000000000000000010a12191e232526282828293643505c6976838f94949494949494948a7d7063574a3d30282c3945515d676d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5044382b1f1206000000000000000a1623303d495663707c899090909090909195a0acb8c0b5aba09590909090887b6f6b70767d86929facb9b7b1b3b9b6a99c8f83796f6a74818e909090909298a2aebab9ada197919090909090908b7e7265584b3f3225180c00000000000000000000070f161b1f2223232323232f3c4855626f7b8895a2aebbc3c0b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2bec3bdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818e9ba7b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b4b6bac1c9d3ccc4bdb9b7b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a99c908376695d5043362a1d1003000000000000000000000000000000000000000000000000000000000006121f2b37434e585f6a6f7a818b9299a1a8a89f958e81756d62594f453b30271d12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2b3744505c687378797979797979797979746f65594d4034271a14212d3a4754606d7a858585858586868686867c6f6256565e696e7b8480786e68605951454039302920181008000000000000000000000000000000000000000000070d131619191b1b1d293643505c697682878787878787878787877d7063574a3d30242935414c555d6061616161616161616161616161616161616161616161616161616161616161605c544a3f34281c1003000000000000000916232f3c4956626f7c8384848484848484919daab7bbafa3998983848484837b6e727a80869298a3aeacaba4a7a9afab9f948f827b717380848484848386929facb8b8ab9e9185848484848484837e7164574a3e3124170b0000000000000000000000040a0f131516161616222f3c4855626f7b8895a2aeb6b6b6b3a79a8d8074675a4d413427323f4c5865727f8b98a5b2b6b6b6b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818e9ba7a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9aaacb2bac3cec5bcb4aeaba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99c908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000000030f1b26313c464e585f676d757f8791969fa1969083796d605b51473d33291e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b2834404c5761686b6c6c6c6c6c6c6c6c6c68655d53483c30241813202c3945525d686d787878797979797979786f6a60544d575f696e7a736d665e564f473f342e271e170e06000000000000000000000000000000000000000000000002070a0c0d0e0e14212e3a4754616d7a7b7b7b7b7b7b7b7b7b7b796d6053473a2d20242f3a434c51545454545454545454545454545454545454545454545454545454545454545453504a42382e23170b00000000000000000815222e3b4754606a6f777777777777777a8794a0adb9ac9f928679777777776e797f858c9298a2aaa8a19e989b9da5aca69f9490867f7173777777777783909da9b6b2a5988c7f77777777777777716c6155493c3023170a0000000000000000000000000003070909090915222f3c4855626f7b8895a2aaaaaaaaaaa79a8d8074675a4d413427323f4c5865727f8b98a5aaaaaaaaaaa3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0bdbaada094877a6d61545b6874818e9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ea0a8b2bdc8beb4aaa29f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000000000a15202a343c464e555d606d727c848f949891847a6e675c51493f352b21170c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3a454f575c5e5f5f5f5f5f5f5f5f5f5b59534b41372c2014111d2935414c565d606b6c6c6c6c6c6c6c666c6660584e454d575f676d67605c544d443d3528231d150c050000000000000000000000000000000000000000000000000000000000020713202d3946525e686d6e6e6e6e6e6e6e6e6e6e6d675c5145382c1f1e28313a4145474848484848484848484848484848484848484848484848484848484848484846443f3830261c1106000000000000000006131f2b37434e5860626a6a6a6a6a6a6d7a8794a0adb3ac9f9286796c6a6a6a75828c92979fa2a9a19e96918b8e939da0a8a69f9892897c706a6a6a6a7683909da9b3b2a5988c7f726a6a6a6a6a6a64615a5045392d2114080000000000000000000000000000000000000915222f3c4855626f7b88959d9d9d9d9d9d9d9a8d8074675a4d413427323f4c5865727f8b989d9d9d9d9d9d9d978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0b6b6ada094877a6d61545b6874818e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9196a0acb9c3baaea298928f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8376695d5043362a1d1003000000000000000000000000000000000000000000000000000000000000040e18222a343c434c515b626a6f7a828c92867c6f685e554b40372d23190f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e29333d454c50525353535353535353534e4d4841392f251a0f0d19242f3a434c52545f5f5f5f5f5f5f605b605b544e463d454d555d605d55504a423b322b2318120b030000000000000000000000000000000000000000000000000000000000000005111d2a36414c565e6161616161616161616161605c554b4034291c161f282f35393a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a38342e261e140a000000000000000000030f1b27323d464e54565d5d5d5d5d616d7a8794a0a6a6a69f9286796c5f5d636f7c89939da9a29f97928b847e818991959fa3a0958e81746b605d5d6a7683909da6a6a6a5988c7f72655d5d5d5d5d575550483e33281c11050000000000000000000000000000000000000915222f3c4855626f7b889090909090909090908d8074675a4d413427323f4c5865727f8b9090909090909090908a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3a9a9a9a9a094877a6d61545966727f83838383838383838383838383838383838384919eaab6b6b6ab9f9286828383838383838383838383838383838383838074675a4d4134271a0e0100000000000000000000000000000000000000000000000000000000000000061018222a313a4145515860686d7880867d706a5f564d43392f251b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212b333a40444546464646464646464641403c372f271d130908131e28313a414547525252525253534a5053504a423d343b434b5153514b443f38302920191007000000000000000000000000000000000000000000000000000000000000000000010d1925303a444c52545454545454545454545453514b43392f23180d161e24292c2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2b28231c140c02000000000000000000000a15202b343d4347495151515154616d7a879499999999999286796c5f54606b74818e979f97928c857f7971747d848c9299989083796d60594f5d6a7683909999999999988c7f726559515151514a49453e362c22170c000000000000000000000000000000000000000815222e3b4855616e7b83838383838383838383837f7265594c3f3226313e4a5764717e83838383838383838383837d706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a969c9c9c9c9c9c94877a6d615457636d727676767676767676767676767676767676767f8b98a5aaaaaaa99d908376767676767676767676767676767676767676746e64584c3f33261a0d0000000000000000000000000000000000000000000000000000000000000000000610181f282f353f464e565e666c737b706b61584e443b31271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1821292f3437383939393939393939393534302c251d150b01010c161f282f35393a454545464646463f4446443f382f2b3139404547454039342e261e170e07000000000000000000000000000000000000000000000000000000000000000000000008131e28323a414647484848484848484848484745403931271d12070c13191d202121212121212121212121212121212121212121212121212121212121212121201f1c17110a020000000000000000000000040f19222b32373b3c4444444754616d7a878c8c8c8c8c8c8c87796c5f4f59616d7a8592928d857f79726d666b70797f879092867b6e675c51505d6a76838c8c8c8c8c8c8c8c7f7265594c4444443e3c39332c241a1005000000000000000000000000000000000000000714212d3a46535f696e7777777777777777777777726d62574a3e3125303c4955616c717777777777777777777777706b6054483b2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a8f8f8f8f8f8f8f8f877a6d6154515b63666969696969696969696969696969696969727f8b989d9d9d9d9d9d9083766a696969696969696969696969696969696967645c52473c3024170b00000000000000000000000000000000000000000000000000000000000000000000060d161e2429343d444c545b60696e6961594f463c32291f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171e24282b2b2c2c2c2c2c2c2c2c2c282724201a130b030000040d161e24292c2d3839393939392d33383938332d261f272f35393a39352f28231c150c05000000000000000000000000000000000000000000000000000000000000000000000000020c1620283036393a3b3b3b3b3b3b3b3b3b3b3a38342f271f150b0101080d111314151515151515151515151515151515151515151515151515151515151515151312100b06000000000000000000000000000007101920272b2e2f37373a4753606d7980808080808080807f7366594c525e68727e8b85807a736d67605c60666d737c838a7e71695f554b4b5865717e80808080808080807d6f6356493c373731302d28221a1208000000000000000000000000000000000000000005121e2a36424d575f616a6a6a6a6a6a6a6a6a6a6a65625b51463a2e222d3945505a61646a6a6a6a6a6a6a6a6a6a6a6360594f44382c201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c828383838383838383827a6d6054475157595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c65727f8b909090909090909083766a5d5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a58524a41362b1f13070000000000000000000000000000000000000000000000000000000000000000000000040c1319222b323a424a50575e615e574f473e342a20170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13181b1e1f2020202020202020201b1a18140f090100000000040c13191d20212c2c2c2c2c2c22282b2d2b28221c151d24292c2d2c29241d17110a030000000000000000000000000000000000000000000000000000000000000000000000000000050e161e252a2d2e2e2e2e2e2e2e2e2e2e2e2d2c29231d150d0300000001040607080808080808080808080808080808080808080808080808080808080808080706030000000000000000000000000000000000070f151b1f22232a2c3945515d676d7373737373737373736d63574b4c56606c777f7a736d68605d5551545c606a6f797d716c61574d434a56626c7173737373737373736f6b6054483b2f2a2423211c171008000000000000000000000000000000000000000000020e1a26313b454d53555d5d5d5d5d5d5d5d5d5d5d595751493f35291e28333e485055575d5d5d5d5d5d5d5d5d5d5d56544f473d32271b1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a6f767676767676767676766d675d5145464b4c5050505050505050505050505050505764717e8383838383838383838174685b505050505050505050505050505050504d4c4741382f241a0e030000000000000000000000000000000000000000000000000000000000000000000000000108101920282f383f444d5254524d453e352c22190e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c0f11121313131313131313130e0e0c08040000000000000001080d1113141f1f1f1f1f20171c1f201f1c17110b12181d1f201f1d18120c060000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13191d202121212121212121212121201f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315161d2935404b555d60666666666666666666635b514644505b656c726d68605d56514b454b51585f666d706c615a50453c45505a626566666666666666666360594f43382c1f171714110c05000000000000000000000000000000000000000000000009141f2a333b42464850505050505050505050504c4a463f372d2318222c363e45494a50505050505050505050504948443d352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58606269696969696969696969605d554c413a3e3f43434343434343434343434343434955616c71777777777777777777746f64594c434343434343434343434343434343413f3c362f261d1308000000000000000000000000000000000000000000000000000000000000000000000000000000070e161d262d333b42464846423b332c231a1007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305050606060606060606060201000000000000000000000000010406071212121313130b0f1213120f0b0601070c10131413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314151515151515151515151413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080c18242f39434b5153595959595959595959575149403f49535b6065615e56524c45403a40454e545c6064615a50483e333f48505658595959595959595956544f463d32271b0f0a080500000000000000000000000000000000000000000000000000030e18212a31363a3b44444444444444444444443f3e3a352d251b111a242c33393c3e44444444444444444444443d3b38322b23190f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e54565c5c5c5c5c5c5c5c5c5c54514c433a2f3233363636363636363636363636363945505a61646a6a6a6a6a6a6a6a6a68645d53483c36363636363636363636363636363433302b241d140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000050b141c222830363a3b3a363029211a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005060606060000030606060300000000000406070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070808080808080808080807060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2731394045474d4d4d4d4d4d4d4d4c4b46403738414950535954524c45413a352f343c424a5153575550473e362d363f454a4b4d4d4d4d4d4d4d4d4948433d342b21160a0000000000000000000000000000000000000000000000000000000000060f181f262a2d2e373737373737373737373732312e29231b1309121a22282d30313737373737373737373737302f2c2721191107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16202b343d434749505050505050505050504745413a3128252629292929292929292929292928333e485055575d5d5d5d5d5d5d5d5d5b59534b41372b292929292929292929292929292726241f1a130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171f252a2d2e2d2a251f170f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f272f35393a4040404040404040403e3b352e2f383f44464c4746413a353029242830394044464a49443e352c242d343a3d3e40404040404040403c3b38322b22190f04000000000000000000000000000000000000000000000000000000000000060e141a1e21222a2a2a2a2a2a2a2a2a2a2a2625221e181109010810171c2123242a2a2a2a2a2a2a2a2a2a2a2322201b160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222b32373b3c434343434343434343433a39352f281f16191d1d1d1d1d1d1d1d1d1d1d1d222c363e45494a5050505050505050504e4c4841392f251d1d1d1d1d1d1d1d1d1d1d1d1d1a1a17130e0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b141a1e2021201e1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151d24292c2d333333333333333333322f2a1d262d3337393f3a39363029241e181e272e34383a3d3c39332c231b22292e31323333333333333333302f2c2721191007000000000000000000000000000000000000000000000000000000000000000003090e1214151d1d1d1d1d1d1d1d1d1d1d191816120d07000000050c111417171d1d1d1d1d1d1d1d1d1d1d161613100b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272b2e2f363636363636363636362d2c29241e160d0c1010101010101010101010101a242c33393c3e44444444444444444441403c372f271d131010101010101010101010100e0d0b070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12141514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181d1f2026262626262626262625231e141b22272b2d322e2d2a251e19130c151c23282c2d31302d28221a11181d212425262626262626262623221f1b160f0700000000000000000000000000000000000000000000000000000000000000000000000205070811111111111111111111110c0b09060100000000000005080a0b11111111111111111111110a09070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f22232929292929292929292921201d19130c0400030303030303030303030308121a22282d30313737373737373737373533302b251d150b03030303030303030303030301000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1013141a1a1a1a1a1a1a1a191916120a11171b1f202621201d19130d08030b12181c1f202423201c1710080c111517181a1a1a1a1a1a1a1a1615130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315161d1d1d1d1d1d1d1d1d1d1413110d080100000000000000000000000000000810171c2123242a2a2a2a2a2a2a2a2a282724201a130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070d0d0d0d0d0d0d0d0d0c0a0600060b0f1213191413110d0802000000070c101213171614100b05000105090b0b0d0d0d0d0d0d0d0d090907030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080910101010101010101010070604010000000000000000000000000000000000050c111417171d1d1d1d1d1d1d1d1d1b1a18140f0901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060c07070501000000000000000406070a0a080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003030303030303030303000000000000000000000000000000000000000000000005080a0b1111111111111111110e0e0b0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 m_StreamData: serializedVersion: 2 offset: 0 diff --git a/Client/Assets/Editor/KVGameLoadValidation.cs b/Client/Assets/Editor/KVGameLoadValidation.cs index 4a4bc5070..a35d82dc1 100644 --- a/Client/Assets/Editor/KVGameLoadValidation.cs +++ b/Client/Assets/Editor/KVGameLoadValidation.cs @@ -9,14 +9,22 @@ public static class KVGameLoadValidation // Fixed assembly/type/method and explicit case allow-list; no arbitrary reflection arguments. public static async Task RunAsync(string caseId) { - if (caseId != "M08-M23" && caseId != "M21-M22-M24" && caseId != "M09-M10-M12" && - caseId != "M14" && caseId != "M07" && caseId != "M20-M21-M22-M24-M28-M29" && caseId != "M16-M17" && - caseId != "M06-M13" && caseId != "M15-M26-M27" && caseId != "M30" && caseId != "M19" && caseId != "M11" && caseId != "M25" && - caseId != "M01-M02-M21-M22-M24" && caseId != "M04-M21-M22-M24" && caseId != "M05-M21-M22-M24" && caseId != "M03" && caseId != "M18" && caseId != "M31" && caseId != "B2-20") throw new ArgumentException("Unknown fixed validation case."); + if (caseId != "M08-M23" && caseId != "M21-M22-M24" && caseId != "M09-M10-M12" && caseId != "M14" && caseId != "M07" && caseId != "M20-M21-M22-M24-M28-M29" && caseId != "M16-M17" && caseId != "M06-M13" && caseId != "M15-M26-M27" && caseId != "M30" && caseId != "M19" && caseId != "M11" && caseId != "M25" && caseId != "M01-M02-M21-M22-M24" && caseId != "M04-M21-M22-M24" && caseId != "M05-M21-M22-M24" && caseId != "M03" && caseId != "M18" && caseId != "M31" && caseId != "B2-20" && caseId != "M01-Immediate" && caseId != "Module02-OriginalLoad" && caseId != "M03B-LoginRetry" && caseId != "M03B-LoginRetry-Cleanup" && caseId != "M03C-CustomId" && caseId != "M03D-Destroy") + { + if (caseId != "P6A-InitializationLastLogin" && caseId != "P6B-OrdinarySave" && caseId != "P6B-OrdinarySave-Cleanup" && caseId != "P8A-Leaderboard" && caseId != "P8B-Friends" && caseId != "P8C-TitleNews" && caseId != "P8C-TitleNews-Cleanup" && caseId != "P8D-Matchmaking" && caseId != "P12A-OrdinaryCadence" && caseId != "P12B-FormalReadAdapters" && caseId != "P12C-StartupSubscriptions" && caseId != "P14-FormalRealtime" && caseId != "P15-FormalMatchmaking" && caseId != "P15-FormalMatchState") + { + throw new ArgumentException("Unknown fixed validation case."); + } + } + var assembly = AppDomain.CurrentDomain.GetAssemblies().Single(a => a.GetName().Name == "HotUpdate"); var type = assembly.GetType("game.PlayerDataStorage.PlayerKVEditorValidationHost", true); var method = type.GetMethod("RunAsync", BindingFlags.Static | BindingFlags.NonPublic, null, new[] { typeof(string) }, null); - if (method == null) throw new InvalidOperationException("Validation entry unavailable."); + if (method == null) + { + throw new InvalidOperationException("Validation entry unavailable."); + } + return await (Task)method.Invoke(null, new object[] { caseId }); } } diff --git a/Client/Assets/Editor/KVGameplayLoopSetup.cs b/Client/Assets/Editor/KVGameplayLoopSetup.cs index a36a5f663..42f354aa8 100644 --- a/Client/Assets/Editor/KVGameplayLoopSetup.cs +++ b/Client/Assets/Editor/KVGameplayLoopSetup.cs @@ -1,11 +1,9 @@ -#if UNITY_EDITOR +#if UNITY_EDITOR using System; using System.IO; using System.Linq; using System.Reflection; -using System.Security.Cryptography; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using UnityEditor; using UnityEngine; @@ -19,11 +17,36 @@ public static class KVGameplayLoopSetup public static async System.Threading.Tasks.Task RunValidationAsync(string caseId) { - if(caseId!="equipment-chain" && caseId!="fishing-consume" && caseId!="fishing-reward") throw new ArgumentException("Unknown fixed validation case."); + string methodName; + switch (caseId) + { + case "equipment-chain": + methodName = "VerifyEquipmentForEditorAsync"; + break; + case "fishing-consume": + methodName = "VerifyFishingForEditorAsync"; + break; + case "fishing-reward": + methodName = "VerifyFishingRewardForEditorAsync"; + break; + case "fishing-original-reward": + methodName = "VerifyOriginalFishingRewardForEditorAsync"; + break; + case "fishing-original-consume": + methodName = "VerifyOriginalFishingForEditorAsync"; + break; + default: + throw new ArgumentException("Unknown fixed validation case."); + } if(EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || EditorApplication.isUpdating) + { throw new InvalidOperationException("Idle editor required."); - var method=Find("PlayerKVGameplayLoop").GetMethod(caseId=="equipment-chain"?"VerifyEquipmentForEditorAsync":caseId=="fishing-consume"?"VerifyFishingForEditorAsync":"VerifyFishingRewardForEditorAsync",BindingFlags.Static|BindingFlags.NonPublic); - if(method==null) throw new InvalidOperationException("Fixed equipment validation entry unavailable."); + } + var method = Find("PlayerKVGameplayLoop").GetMethod(methodName, BindingFlags.Static | BindingFlags.NonPublic); + if (method == null) + { + throw new InvalidOperationException("Fixed equipment validation entry unavailable."); + } return await (System.Threading.Tasks.Task)method.Invoke(null,null); } @@ -37,17 +60,6 @@ public static class KVGameplayLoopSetup processMarkers=Directory.Exists(history)?Directory.GetFiles(history,"*.claimed").Select(Path.GetFileName).OrderBy(x=>x).ToArray():Array.Empty()}); } - public static string ValidatePermit(string path) - { - var type=Find("PlayerKVLoopPermit"); - try - { - var permit=type.GetMethod("Read",BindingFlags.Static|BindingFlags.NonPublic).Invoke(null,new object[]{Path.GetFullPath(path)}); - return JsonConvert.SerializeObject(permit); - } - catch(TargetInvocationException e) { throw e.InnerException ?? e; } - } - public static string InspectPFBackup(string path) { if(EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || EditorApplication.isUpdating) @@ -57,29 +69,6 @@ public static class KVGameplayLoopSetup catch(TargetInvocationException e) { throw e.InnerException ?? e; } } - public static string PreparePermit(string account,string backupPath,string[] allowedKeys) - => PreparePermitCore(account,backupPath,allowedKeys,false); - public static string PrepareFishingPermit(string account,string backupPath,string[] allowedKeys) - => PreparePermitCore(account,backupPath,allowedKeys,true); - public static string PrepareFishingRewardPermit(string account,string backupPath,string[] allowedKeys) - => PreparePermitCore(account,backupPath,allowedKeys,true,true); - static string PreparePermitCore(string account,string backupPath,string[] allowedKeys,bool fishing,bool reward=false) - { - if(EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling) - throw new InvalidOperationException("Stop play before preparing a new process run."); - backupPath=Path.GetFullPath(backupPath); - var bytes=File.ReadAllBytes(backupPath); - string hash; - using(var sha=SHA256.Create()) hash=BitConverter.ToString(sha.ComputeHash(bytes)).Replace("-",""); - var candidate=Path.Combine(Root,"permit.candidate.json"); - Directory.CreateDirectory(Root); - var json=JObject.FromObject(new{Version=reward?3:fishing?2:1,Enabled=true,PlayerId=account, - Api="http://s101.local:18080/",BackupPath=backupPath,BackupSha256=hash,AllowedKeys=allowedKeys}); - if(fishing) json["Operation"]=reward?"fishing-reward-once":"fishing-consume-once"; - File.WriteAllText(candidate,json.ToString(Formatting.Indented)); - var validated=ValidatePermit(candidate); // Empty/mismatched backups cannot enable a run. - File.WriteAllText(Path.Combine(Root,"permit.json"),validated); - return State(); - } + } #endif diff --git a/Client/Assets/Editor/KVPromptStateValidation.cs b/Client/Assets/Editor/KVPromptStateValidation.cs new file mode 100644 index 000000000..cc9b3b661 --- /dev/null +++ b/Client/Assets/Editor/KVPromptStateValidation.cs @@ -0,0 +1,632 @@ +#if UNITY_EDITOR +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Reflection; +using System.Runtime.ExceptionServices; +using System.Threading; +using System.Threading.Tasks; +using game; +using game.Account; +using game.PlayerDataStorage; +using Newtonsoft.Json; +using UnityEditor; +using UnityEngine; + +// Fixed B01 synthetic cases only. No global container replacement, permission UI or Play mode. +public static class KVPromptStateValidation +{ + private static bool running; + private static object failedCleanup; + private static readonly BindingFlags PrivateInstance = BindingFlags.Instance | BindingFlags.NonPublic; + + public static async Task RunAsync(string caseId) + { + if ((caseId != "B01" && caseId != "CP3A" && caseId != "P6D") || EditorApplication.isPlayingOrWillChangePlaymode || running || failedCleanup != null) + { + throw new InvalidOperationException("B01 requires an idle Editor and completed prior cleanup."); + } + running = true; + var run = new FixedRun(); + var staticField = typeof(RedPointManager).GetField("instance", BindingFlags.Static | BindingFlags.NonPublic); + object previous = null; + var isolated = false; + var errors = new List(); + string result = null; + try + { + previous = staticField.GetValue(null); + staticField.SetValue(null, new RedPointManager()); + isolated = true; + result = caseId == "P6D" ? await run.ExecuteP6D() : caseId == "B01" ? await run.Execute() : await run.ExecuteCP3A(); + } + catch (Exception ex) + { + errors.Add(ex); + } + finally + { + try + { + await run.Close(); + } + catch (Exception ex) + { + failedCleanup = run; + errors.Add(ex); + } + try + { + if (isolated) + { + staticField.SetValue(null, previous); + if (!ReferenceEquals(previous, staticField.GetValue(null))) + { + throw new InvalidOperationException("Red point instance was not restored."); + } + } + } + catch (Exception ex) + { + failedCleanup = run; + errors.Add(ex); + } + finally + { + running = false; + } + } + if (errors.Count != 0) + { + throw new AggregateException(errors); + } + var report = Newtonsoft.Json.Linq.JObject.Parse(result); + report["restored"] = true; + report["remainingTestObjects"] = 0; + return report.ToString(Formatting.None); + } + + sealed class Handler : HttpMessageHandler + { + readonly Func send; + internal Handler(Func send) { this.send = send; } + protected override Task SendAsync(HttpRequestMessage r, CancellationToken t) => Task.FromResult(send(r)); + } + static HttpResponseMessage Json(object value) => new HttpResponseMessage(HttpStatusCode.OK) + { Content = new StringContent(JsonConvert.SerializeObject(value)) }; + + sealed class FixedRun + { + private readonly List children = new List(); + private readonly List restoreFaults = new List(); + readonly Uri api = new Uri("http://b01-editor.invalid/"); + readonly string cache = Path.GetFullPath(Path.Combine(Application.dataPath, + "../../CodexOutput/upserver/B3BatchMigration/B01Tests/unity-runs", Guid.NewGuid().ToString("N"))); + readonly List sessions = new List(); + readonly List objects = new List(); + PlayerKVGameSessionBridge bridge; + long epoch = 1; + int assertions, requests; + void Check(bool value, string label) { assertions++; if (!value) throw new InvalidOperationException("B01: " + label); } + static object Call(object target, string method, params object[] args) + { + try { return target.GetType().GetMethod(method, PrivateInstance | BindingFlags.Public).Invoke(target, args); } + catch (TargetInvocationException ex) { ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); throw; } + } + static void Field(object target, string name, object value) => target.GetType().GetField(name, PrivateInstance).SetValue(target, value); + static T Bound(PlayerKVGameSessionHandle handle) => (T)typeof(T).GetConstructor(PrivateInstance, + null, new[] { typeof(PlayerKVGameSessionHandle) }, null).Invoke(new object[] { handle }); + void Reject(Action action) + { + try { action(); } + catch (InvalidOperationException) { assertions++; return; } + throw new InvalidOperationException("B01: expected owner rejection"); + } + async Task Open() + { + var session = new S101AccountSession(api, jar => new Handler(r => + { + Check(r.RequestUri == new Uri(api, "account/Login"), "synthetic login only"); + jar.Add(api, new Cookie("sid", "101")); + return Json(new { state = 0, internalId = 101, newCreate = false, + createTime = "2026-01-01T00:00:00Z", svrTime = "2026-01-01T00:00:00Z" }); + })); + sessions.Add(session); + Check((await session.LoginAsync("101")).Success, "synthetic login"); + var opened = await bridge.OpenAsync(session, cache, "101", api, epoch, e => e == epoch); + Check(opened.Success, "synthetic owner open"); + return opened.Handle; + } + T Panel() where T : Component + { + var go = new GameObject("B01-" + typeof(T).Name) { hideFlags = HideFlags.HideAndDontSave }; + go.SetActive(false); objects.Add(go); + return go.AddComponent(); + } + internal async Task Execute() + { + Func factory = jar => new Handler(r => + { + Check(r.RequestUri == new Uri(api, "playerdata/Get"), "no write/no real transport"); + requests++; + return Json(new { data = new Dictionary() }); + }); + bridge = (PlayerKVGameSessionBridge)typeof(PlayerKVGameSessionBridge).GetConstructor(PrivateInstance, + null, new[] { typeof(Func), typeof(bool) }, null).Invoke(new object[] { factory, false }); + var handle = await Open(); + var settings = Bound(handle); + var club = Bound(handle); + Check(!settings.ShowNotice, "valid missing key"); + settings.ShowNotice = true; + Check(settings.ShowNotice && requests == 1, "accepted local only"); + var original = settings.GetType().GetProperty("LastPromptEdit", PrivateInstance).GetValue(settings); + settings.ShowNotice = true; + Check(ReferenceEquals(original, settings.GetType().GetProperty("LastPromptEdit", PrivateInstance).GetValue(settings)), "same value no duplicate"); + // A fresh real ClubService retains its original initialized flag. + Check(club.IsOpenClubRed, "fresh real club retains original flag"); + await bridge.CloseAsync(); + Reject(() => settings.ShowNotice = false); + Reject(club.SetOpenClubRed); + Check(club.IsOpenClubRed, "stale real club preserves flag"); + + // Notification constructor validates the current owner. Create a fresh fixed instance, then revoke it. + epoch++; + var nextHandle = await Open(); + var nextSettings = Bound(nextHandle); + var tables = new cfg.Tables(name => SimpleJSON.JSON.Parse(File.ReadAllText( + Path.Combine(Application.dataPath, "../../cfgData", name + ".json")))); + var notifications = (LocalNotificationService)typeof(LocalNotificationService).GetConstructor(PrivateInstance, + null, new[] { typeof(DefaultSettingService), typeof(cfg.Tables) }, null).Invoke(new object[] { nextSettings, tables }); + var pendingInit = notifications.Init(); + await bridge.CloseAsync(); + try { await pendingInit; throw new InvalidOperationException("B01: stale init succeeded"); } + catch (InvalidOperationException ex) { Check(!ex.Message.Contains("stale init succeeded"), "stale Editor permission continuation rejected"); } + + var grade = Panel(); + Field(grade, "settings", nextSettings); Field(grade, "notifications", notifications); + var popup = Panel(); Field(popup, "notifications", notifications); + var settingPanel = Panel(); Field(settingPanel, "settingService", nextSettings); Field(settingPanel, "notificationService", notifications); + var gift = Panel(); Field(gift, "notificationService", notifications); + var social = Panel(); Field(social, "_socialData", club); + var errors = new List(); + void Capture(string message, string stack, LogType type) { if (type == LogType.Error || type == LogType.Exception) errors.Add(message); } + Application.logMessageReceived += Capture; + try + { + Reject(() => Call(grade, "DestroyUI")); + Reject(() => Call(grade, "OnBtnOk")); + Reject(() => Call(popup, "OnBtnOk")); + Reject(() => Call(popup, "DestroyUI")); + Reject(() => Call(settingPanel, "OnToggleNotification", true)); + Reject(() => Call(settingPanel, "OnToggleNotification", false)); + Reject(() => Call(gift, "OnClickYES")); + Call(social, "Start"); + Check(errors.Count == 1, "only unchanged social entry logs its owner rejection"); + Check(errors.TrueForAll(e => e.Contains("ShowNotice owner=") || e.Contains("IsOpenClubRed owner=")), "no unexpected exception"); + foreach (var go in objects) Check(go != null, "stale callback did not destroy another UI"); + } + finally { Application.logMessageReceived -= Capture; } + Check(requests == 2, "read-only synthetic transport"); + return JsonConvert.SerializeObject(new { success = true, assertions, requests, formalRequests = 0, + playing = EditorApplication.isPlaying, globalContainerChanged = false, caseId = "B01", cache }); + } + internal async Task ExecuteP6D() + { + foreach (var value in new[] { null, "0", "1", "" }) + { + var fixture = new FixedRun(); + children.Add(fixture); + await fixture.HealthyPrompt(value); + } + foreach (var club in new[] { false, true }) + { + foreach (var stage in new[] { "BeforeWrite", "AfterReplace" }) + { + var fixture = new FixedRun(); + children.Add(fixture); + await fixture.FaultPrompt(club, stage); + } + var revoked = new FixedRun(); + children.Add(revoked); + await revoked.RevokedDuringPrompt(club); + } + var callback = new FixedRun(); + children.Add(callback); + await callback.RevokedDuringClubCallback(); + foreach (var fixture in children) + { + assertions += fixture.assertions; + requests += fixture.requests; + } + return JsonConvert.SerializeObject(new { success = true, caseId = "P6D", assertions, + cases = children.Count, requests, formalRequests = 0, playing = EditorApplication.isPlaying, + globalContainerChanged = false }); + } + + private async Task OpenPrompt() + { + Func factory = jar => new Handler(r => + { + Check(r.RequestUri == new Uri(api, "playerdata/Get"), "P6D synthetic Get only"); + requests++; + return Json(new { data = new Dictionary() }); + }); + bridge = (PlayerKVGameSessionBridge)typeof(PlayerKVGameSessionBridge).GetConstructor(PrivateInstance, + null, new[] { typeof(Func), typeof(bool) }, null).Invoke(new object[] { factory, false }); + return await Open(); + } + + private static PlayerKVEditResult Edit(object service) + { + return (PlayerKVEditResult)service.GetType().GetProperty("LastPromptEdit", PrivateInstance).GetValue(service); + } + + private static bool? Cached(DefaultSettingService settings) + { + return (bool?)typeof(DefaultSettingService).GetField("_showNotice", PrivateInstance).GetValue(settings); + } + + private sealed class RedProbe : IUIRedPoint + { + private readonly Action callback; + internal RedProbe(Action callback) + { + this.callback = callback; + } + public void SetRedPointState(bool state) + { + callback(state); + } + } + + private void ObserveRed(Action callback) + { + RedPointManager.Instance.RemoveRedPoint(RedPointName.Home_Club); + RedPointManager.Instance.AddRedPoint(RedPointName.Home_Club, new RedProbe(callback)); + } + + private static Delegate FaultDelegate(Action callback) + { + return new Action(stage => callback(stage.ToString())); + } + + private void InjectFault(PlayerKVGameSessionHandle handle, Action callback) + { + var owner = handle.GetType().GetProperty("Owner", PrivateInstance).GetValue(handle); + var state = owner.GetType().GetField("state", PrivateInstance).GetValue(owner); + var store = state.GetType().GetField("store", PrivateInstance).GetValue(state); + var field = store.GetType().GetField("fault", PrivateInstance); + var previous = field.GetValue(store); + var method = typeof(FixedRun).GetMethod("FaultDelegate", BindingFlags.Static | BindingFlags.NonPublic) + .MakeGenericMethod(field.FieldType.GetGenericArguments()[0]); + var fault = method.Invoke(null, new object[] { callback }); + restoreFaults.Add(() => field.SetValue(store, previous)); + field.SetValue(store, fault); + Check(ReferenceEquals(field.GetValue(store), fault), "actual cache fault installed"); + } + + private async Task HealthyPrompt(string initial) + { + var handle = await OpenPrompt(); + if (initial != null) + { + Check(handle.Update("ShowNotice", initial).Accepted, "seed initial value"); + } + var settings = Bound(handle); + var expected = initial == "1"; + Check(settings.ShowNotice == expected, "first read follows original string comparison"); + Check(handle.Update("ShowNotice", expected ? "0" : "1").Accepted, "other consumer updates actual cache"); + Check(settings.ShowNotice == expected, "first-read nullable cache survives other consumer writes"); + var fresh = Bound(handle); + var target = !expected; + var observedWrites = 0; + InjectFault(handle, stage => + { + if (stage == "BeforeWrite") + { + observedWrites++; + Check(Cached(fresh) == target, "nullable cache assigned before actual disk write"); + } + }); + fresh.ShowNotice = target; + Check(Edit(fresh)?.Accepted == true && observedWrites == 1, "setter before getter writes even when stored value matches"); + var receipt = Edit(fresh); + fresh.ShowNotice = target; + Check(ReferenceEquals(receipt, Edit(fresh)) && observedWrites == 1, "same cached value does not write"); + target = !target; + fresh.ShowNotice = target; + Check(observedWrites == 2 && !ReferenceEquals(receipt, Edit(fresh)), "changed cached value writes"); + RestoreFaults(); + + Check(handle.Update("IsOpenClubRed", "0").Accepted, "seed present club value"); + var club = Bound(handle); + var calls = 0; + ObserveRed(red => + { + calls++; + Check(!red && !club.IsOpenClubRed, "flag clears before red callback"); + Check(handle.ReadLocalSnapshot().Data["IsOpenClubRed"] == (calls == 1 ? "0" : "1"), "red callback precedes write"); + }); + club.SetOpenClubRed(); + Check(calls == 1 && Edit(club)?.Accepted == true && handle.ReadLocalSnapshot().Data["IsOpenClubRed"] == "1", "present key does not replace original flag gate"); + var clubReceipt = Edit(club); + club.SetOpenClubRed(); + Check(calls == 1 && ReferenceEquals(clubReceipt, Edit(club)), "false flag skips red and write"); + club.IsOpenClubRed = true; + club.SetOpenClubRed(); + Check(calls == 2 && !ReferenceEquals(clubReceipt, Edit(club)), "true flag writes existing value"); + + // A diagnostic result is not a second owner state. Do not unlock a real failed owner. + var rejected = handle.Update(null, "1"); + Check(!rejected.Accepted, "actual rejected diagnostic"); + fresh.GetType().GetProperty("LastPromptEdit", PrivateInstance).SetValue(fresh, rejected); + club.GetType().GetProperty("LastPromptEdit", PrivateInstance).SetValue(club, rejected); + Check(fresh.ShowNotice == target, "healthy owner ignores old rejected diagnostic"); + club.SetOpenClubRed(); + Check(calls == 2, "healthy false club ignores diagnostic without business effects"); + await bridge.CloseAsync(); + Reject(() => + { + _ = fresh.ShowNotice; + }); + Reject(() => fresh.ShowNotice = target); + Reject(club.SetOpenClubRed); + Check(calls == 2 && Cached(fresh) == target && !club.IsOpenClubRed, "stale cache-hit entries cause no effects"); + } + + private async Task FaultPrompt(bool useClub, string failureStage) + { + var handle = await OpenPrompt(); + var settings = Bound(handle); + var club = Bound(handle); + var redCalls = 0; + ObserveRed(red => + { + redCalls++; + Check(!red && !club.IsOpenClubRed, "failed write still follows original red order"); + }); + var faults = 0; + InjectFault(handle, stage => + { + if (stage == failureStage) + { + faults++; + Check(useClub ? !club.IsOpenClubRed && redCalls == 1 : Cached(settings) == true, + "business state precedes actual storage failure"); + throw new IOException("P6D synthetic " + failureStage); + } + }); + Reject(() => + { + if (useClub) + { + club.SetOpenClubRed(); + } + else + { + settings.ShowNotice = true; + } + }); + var edit = Edit(useClub ? (object)club : settings); + Check(faults == 1 && edit != null && !edit.Accepted, "actual rejected write preserved"); + Check(edit.StateResult.Error == PlayerKVChangeError.StorageError && + edit.StateResult.LocalCommitMayHaveSucceeded == (failureStage == "AfterReplace"), "actual uncertainty preserved"); + Check(handle.Status == PlayerKVSyncStatus.StorageError, "actual storage terminal state retained"); + Reject(() => + { + _ = settings.ShowNotice; + }); + Reject(() => settings.ShowNotice = true); + Reject(club.SetOpenClubRed); + Check(faults == 1 && redCalls == (useClub ? 1 : 0), "actual unreadable owner blocks repeat effects"); + Check(useClub ? !club.IsOpenClubRed : Cached(settings) == true, "no added rollback"); + } + + private async Task RevokedDuringPrompt(bool useClub) + { + var handle = await OpenPrompt(); + var settings = Bound(handle); + var club = Bound(handle); + var redCalls = 0; + ObserveRed(red => + { + redCalls++; + }); + InjectFault(handle, stage => + { + if (stage == "AfterReplace") + { + epoch++; + } + }); + Reject(() => + { + if (useClub) + { + club.SetOpenClubRed(); + } + else + { + settings.ShowNotice = true; + } + }); + Check(Edit(useClub ? (object)club : settings)?.Accepted == true, "completed disk write not disguised as unaccepted"); + Check(useClub ? !club.IsOpenClubRed && redCalls == 1 : Cached(settings) == true, "revocation does not roll back original front effects"); + Check(!handle.ReadLocalSnapshot().Success && requests == 1, "revoked old owner has no replay or transport write"); + } + + private async Task RevokedDuringClubCallback() + { + var handle = await OpenPrompt(); + var club = Bound(handle); + var redCalls = 0; + ObserveRed(red => + { + redCalls++; + epoch++; + }); + var writes = 0; + InjectFault(handle, stage => + { + writes++; + }); + Reject(club.SetOpenClubRed); + Check(!club.IsOpenClubRed && redCalls == 1, "callback revocation preserves front effects"); + Check(Edit(club)?.Accepted == false && writes == 0 && requests == 1, "callback revocation refuses old write without replay"); + } + internal async Task ExecuteCP3A() + { + Func factory = jar => new Handler(r => + { + Check(r.RequestUri == new Uri(api, "playerdata/Get"), "CP3A synthetic Get only"); + requests++; + return Json(new { data = new Dictionary() }); + }); + bridge = (PlayerKVGameSessionBridge)typeof(PlayerKVGameSessionBridge).GetConstructor(PrivateInstance, + null, new[] { typeof(Func), typeof(bool) }, null).Invoke(new object[] { factory, false }); + var tables = new cfg.Tables(name => SimpleJSON.JSON.Parse(File.ReadAllText( + Path.Combine(Application.dataPath, "../../cfgData", name + ".json")))); + var settingCtor = typeof(DefaultSettingService).GetConstructor(PrivateInstance, + null, new[] { typeof(bool) }, null); + var clubCtor = typeof(ClubService).GetConstructor(PrivateInstance, + null, new[] { typeof(bool) }, null); + var notificationCtor = typeof(LocalNotificationService).GetConstructor(PrivateInstance, + null, new[] { typeof(cfg.Tables) }, null); + Check(settingCtor != null && clubCtor != null && notificationCtor != null, + "formal service constructors exist"); + var settings = (DefaultSettingService)settingCtor.Invoke(new object[] { true }); + var club = (ClubService)clubCtor.Invoke(new object[] { true }); + var notifications = (LocalNotificationService)notificationCtor.Invoke(new object[] { tables }); + var pendingNotifications = (LocalNotificationService)notificationCtor.Invoke(new object[] { tables }); + var pendingInit = pendingNotifications.Init(); + Reject(() => Call(pendingNotifications, "PreflightFormalPromptSettings", settings)); + await pendingInit; + await notifications.Init(); + Reject(() => { _ = settings.ShowNotice; }); + Reject(() => settings.ShowNotice = true); + Reject(club.SetOpenClubRed); + var handle = await Open(); + Call(settings, "BindFormalPromptOwner", handle); + Call(club, "BindFormalPromptOwner", handle); + Call(notifications, "BindFormalPromptSettings", settings); + Call(settings, "BindFormalPromptOwner", handle); + Call(club, "BindFormalPromptOwner", handle); + Call(notifications, "BindFormalPromptSettings", settings); + Check(!settings.ShowNotice, "bound missing ShowNotice"); + settings.ShowNotice = true; + club.SetOpenClubRed(); + Check(settings.ShowNotice && !club.IsOpenClubRed, "bound prompt effects"); + Check(requests == 1, "one synthetic KV Get and no transport write"); + await bridge.CloseAsync(); + Reject(() => { _ = settings.ShowNotice; }); + Reject(club.SetOpenClubRed); + epoch++; + var nextHandle = await Open(); + Reject(() => Call(settings, "BindFormalPromptOwner", nextHandle)); + Reject(() => Call(club, "BindFormalPromptOwner", nextHandle)); + var partialSetting = (DefaultSettingService)settingCtor.Invoke(new object[] { true }); + var partialClub = (ClubService)clubCtor.Invoke(new object[] { true }); + Call(partialSetting, "BindFormalPromptOwner", nextHandle); + await bridge.CloseAsync(); + Reject(() => Call(partialClub, "BindFormalPromptOwner", nextHandle)); + Reject(() => { _ = partialSetting.ShowNotice; }); + epoch++; + var thirdHandle = await Open(); + Reject(() => Call(partialSetting, "BindFormalPromptOwner", thirdHandle)); + Check(requests == 3, "same owner binds and partial failure add no transport requests"); + return JsonConvert.SerializeObject(new { success = true, caseId = "CP3A", assertions, + requests, formalRequests = 0, globalContainerChanged = false }); + } + internal async Task Close() + { + var errors = new List(); + foreach (var child in children) + { + try + { + await child.Close(); + } + catch (Exception ex) + { + errors.Add(ex); + } + } + try + { + RestoreFaults(); + } + catch (Exception ex) + { + errors.Add(ex); + } + try + { + if (bridge != null) + { + await bridge.CloseAsync(); + } + } + catch (Exception ex) + { + errors.Add(ex); + } + foreach (var session in sessions) + { + try + { + session.Dispose(); + } + catch (Exception ex) + { + errors.Add(ex); + } + } + foreach (var go in objects) + { + try + { + if (go != null) + { + UnityEngine.Object.DestroyImmediate(go); + } + if (go != null) + { + throw new InvalidOperationException("Test object survived cleanup."); + } + } + catch (Exception ex) + { + errors.Add(ex); + } + } + if (errors.Count != 0) + { + throw new AggregateException(errors); + } + } + + private void RestoreFaults() + { + var errors = new List(); + foreach (var restore in restoreFaults) + { + try + { + restore(); + } + catch (Exception ex) + { + errors.Add(ex); + } + } + if (errors.Count != 0) + { + throw new AggregateException(errors); + } + restoreFaults.Clear(); + } + } +} +#endif diff --git a/Client/Assets/Editor/KVPromptStateValidation.cs.meta b/Client/Assets/Editor/KVPromptStateValidation.cs.meta new file mode 100644 index 000000000..162c65d87 --- /dev/null +++ b/Client/Assets/Editor/KVPromptStateValidation.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 67d5bde18c99423aa2168a5af1c2b0da diff --git a/Client/Assets/Editor/KVSaveRouteValidation.cs b/Client/Assets/Editor/KVSaveRouteValidation.cs deleted file mode 100644 index 4976bd445..000000000 --- a/Client/Assets/Editor/KVSaveRouteValidation.cs +++ /dev/null @@ -1,19 +0,0 @@ -#if UNITY_EDITOR -using System; -using System.Linq; -using System.Reflection; -using System.Threading.Tasks; - -public static class KVSaveRouteValidation -{ - public static async Task RunAsync(string caseId) - { - if (caseId != "fixed-route") throw new ArgumentException("Unknown fixed validation case."); - var assembly = AppDomain.CurrentDomain.GetAssemblies().Single(a => a.GetName().Name == "HotUpdate"); - var type = assembly.GetType("game.PlayerDataStorage.PlayerKVSaveRouteEditorValidationHost", true); - var method = type.GetMethod("RunAsync", BindingFlags.Static | BindingFlags.NonPublic, null, new[] { typeof(string) }, null); - if (method == null) throw new InvalidOperationException("Validation entry unavailable."); - return await (Task)method.Invoke(null, new object[] { caseId }); - } -} -#endif diff --git a/Client/Assets/Editor/KVSaveRouteValidation.cs.meta b/Client/Assets/Editor/KVSaveRouteValidation.cs.meta deleted file mode 100644 index aca1614bf..000000000 --- a/Client/Assets/Editor/KVSaveRouteValidation.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: dc9b5dbb615a4746a95df66b46987589 diff --git a/Client/Assets/Scenes/PreBoot.unity b/Client/Assets/Scenes/PreBoot.unity index 8d3c7496a..2281a4dc1 100644 --- a/Client/Assets/Scenes/PreBoot.unity +++ b/Client/Assets/Scenes/PreBoot.unity @@ -4068,7 +4068,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0} m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 0, y: 109.05} + m_AnchoredPosition: {x: 0, y: 109.049805} m_SizeDelta: {x: 0, y: 74.69995} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &2775237510373940736 diff --git a/Client/Assets/Scripts/Camp/CampDataMM.cs b/Client/Assets/Scripts/Camp/CampDataMM.cs index 6f1bc3082..72f5c4f9c 100644 --- a/Client/Assets/Scripts/Camp/CampDataMM.cs +++ b/Client/Assets/Scripts/Camp/CampDataMM.cs @@ -1,4 +1,4 @@ -using asap.core; +using asap.core; using cfg; using game; using GameCore; @@ -104,23 +104,10 @@ public class CampDataMM public bool IsFix => _isFix && AreaIndex < AreaList.Count; bool _isFix; - internal static game.PlayerDataStorage.PlayerKVCampState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => game.PlayerDataStorage.PlayerKVSaveSchema.DecodeCamp(raw,errors); - internal void ResetForKVLoad() - { - CampDataDic=new Dictionary(StringComparer.Ordinal); - _isFix=false; _isOpenSkyscraper="0"; _id=101; - PreID=AreaIndex=AreaStep=AreaId=AreaStepCount=TimelineId=0; - AreaIcon=null; constructionArea=null; StepInfo=null; AreaStepList=null; IsUpdataArea=false; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVCampState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - CampDataDic=state.Values.ToDictionary(p=>p.Key,p=>p.Value,StringComparer.Ordinal); - _isFix=state.IsFix; _isOpenSkyscraper=state.Skyscraper; - } - internal game.PlayerDataStorage.PlayerKVCampState SnapshotForKVValidation() => - new game.PlayerDataStorage.PlayerKVCampState(_isFix,_isOpenSkyscraper,CampDataDic); + + + + public void InitData(Dictionary userData) { string value; diff --git a/Client/Assets/Scripts/Core/KVMgr.cs b/Client/Assets/Scripts/Core/KVMgr.cs index 7dd95dfdf..f7dffb602 100644 --- a/Client/Assets/Scripts/Core/KVMgr.cs +++ b/Client/Assets/Scripts/Core/KVMgr.cs @@ -1,19 +1,156 @@ +using System; +using UnityEngine; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using game.PlayerDataStorage; -internal static class KVMgr +internal class KVMgr : MonoBehaviour { + private static KVMgr instance; + private KVPlayerSaveStore store; + private CancellationTokenSource tokenSource; + + private void Awake() + { + instance = this; + tokenSource = new CancellationTokenSource(); + UpdateUserDataValue(tokenSource.Token); + } + + internal static void Bind(KVPlayerSaveStore original) + { + if (instance != null) + { + instance.store = original; + } + } + + internal static void Unbind(KVPlayerSaveStore original) + { + if (instance != null && ReferenceEquals(instance.store, original)) + { + instance.store = null; + } + } + + internal static void Stop(KVPlayerSaveStore original) + { + if (instance != null && ReferenceEquals(instance.store, original)) + { + instance.Stop(); + } + } + + private void Stop() + { + tokenSource?.Cancel(); + tokenSource?.Dispose(); + tokenSource = null; + } + + private async void UpdateUserDataValue(CancellationToken token) + { + try + { + while (!token.IsCancellationRequested) + { + SyncData(); + await Task.Delay(40000); + } + } + catch (Exception ex) + { + Debug.LogError("KV save schedule failed: " + ex.GetType().Name); + } + } + + private void SyncData() + { + var original = store; + if (original != null && original.IsCurrent) + { + ObserveSync(original.SyncDataAsync()); + } + } + + private static async void ObserveSync(Task task) + { + try + { + var result = await task; + if (result.TransportError != PlayerKVError.None || result.Blocked != 0 || result.Unknown != 0) + { + Debug.LogError("KV ordinary save failed: " + result.TransportError); + } + } + catch (Exception ex) + { + Debug.LogError("KV ordinary save failed: " + ex.GetType().Name); + } + } + + private void OnApplicationPause(bool paused) + { + if (paused) + { + Stop(); + SyncData(); + } + else + { + tokenSource = new CancellationTokenSource(); + UpdateUserDataValue(tokenSource.Token); + } + } + + private void OnApplicationQuit() + { + Stop(); + } + + private void OnDestroy() + { + Stop(); + SyncData(); + store = null; + if (ReferenceEquals(instance, this)) + { + instance = null; + } + } + + internal static Task SyncKVAsync(PlayerKVGameSessionHandle handle, + CancellationToken waitToken = default) + { + if (PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Sync)) + { + return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Cancelled, + handle == null ? PlayerKVSyncStatus.NotLoaded : handle.Status)); + } + if (handle == null) + { + return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Validation, PlayerKVSyncStatus.NotLoaded)); + } + return handle.SyncDataAsync(waitToken); + } + internal static PlayerKVKeyReadResult ReadKV(PlayerKVGameSessionHandle handle, string key) { if (PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.ReadLocal)) - return new PlayerKVKeyReadResult(PlayerKVKeyReadError.LoadGuardActive, handle); + { + return new PlayerKVKeyReadResult(PlayerKVKeyReadError.LoadGuardActive, handle); + } if (handle == null || !KVSnapshot.ValidKey(key)) - return new PlayerKVKeyReadResult(PlayerKVKeyReadError.InvalidInput, handle); + { + return new PlayerKVKeyReadResult(PlayerKVKeyReadError.InvalidInput, handle); + } var read = handle.ReadLocalSnapshot(); if (!read.Success) - return new PlayerKVKeyReadResult(read.Error == PlayerKVLocalReadError.StaleOrClosing - ? PlayerKVKeyReadError.StaleOrClosing : PlayerKVKeyReadError.NotReady, handle); + { + return new PlayerKVKeyReadResult(read.Error == PlayerKVLocalReadError.StaleOrClosing + ? PlayerKVKeyReadError.StaleOrClosing : PlayerKVKeyReadError.NotReady, handle); + } var found = read.Data.TryGetValue(key, out var value); return new PlayerKVKeyReadResult(PlayerKVKeyReadError.None, handle, found, value); } @@ -22,20 +159,58 @@ internal static class KVMgr string key, string value, bool remoteStore = true) { if (PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Update)) - return new PlayerKVEditResult(new PlayerKVStateResult(PlayerKVChangeError.Blocked)); + { + return new PlayerKVEditResult(new PlayerKVStateResult(PlayerKVChangeError.Blocked)); + } if (handle == null) - return new PlayerKVEditResult(new PlayerKVStateResult(PlayerKVChangeError.Validation)); - return handle.Update(key, value, remoteStore); + { + return new PlayerKVEditResult(new PlayerKVStateResult(PlayerKVChangeError.Validation)); + } + return handle.Update(key, value, remoteStore, ZZTimeHelper.UtcNow().Ticks); + } + + internal static async Task SyncDataImmidiate(PlayerKVGameSessionHandle handle, string key, string value) + { + var success = false; + if (!PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Immediate) && handle != null && + KVSnapshot.ValidKey(key) && value != null) + { + success = await handle.SyncDataImmidiate(key, value); + } + if (!success) + { + UnityEngine.Debug.LogError("[KVMgr::SyncDataImmidiate] Save failed."); + } + return success; + } + + internal static async Task SyncDataImmidiate(PlayerKVGameSessionHandle handle, + IReadOnlyDictionary values) + { + var success = false; + if (!PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Immediate) && handle != null && values != null && values.Count > 0) + { + success = await handle.SyncDataImmidiate(values); + } + if (!success) + { + UnityEngine.Debug.LogError("[KVMgr::SyncDataImmidiate] Save failed."); + } + return success; } internal static Task FlushKVAsync(PlayerKVGameSessionHandle handle, CancellationToken waitToken = default) { if (PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Sync)) - return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Cancelled, - handle == null ? PlayerKVSyncStatus.NotLoaded : handle.Status)); + { + return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Cancelled, + handle == null ? PlayerKVSyncStatus.NotLoaded : handle.Status)); + } if (handle == null) - return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Validation, PlayerKVSyncStatus.NotLoaded)); + { + return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Validation, PlayerKVSyncStatus.NotLoaded)); + } return handle.FlushAsync(waitToken); } @@ -43,10 +218,14 @@ internal static class KVMgr PlayerKVSyncTicket ticket, CancellationToken waitToken = default) { if (PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Sync)) - return Task.FromResult(new PlayerKVTicketResult(PlayerKVTicketStatus.Blocked, PlayerKVError.Cancelled, - handle == null ? PlayerKVSyncStatus.NotLoaded : handle.Status)); + { + return Task.FromResult(new PlayerKVTicketResult(PlayerKVTicketStatus.Blocked, PlayerKVError.Cancelled, + handle == null ? PlayerKVSyncStatus.NotLoaded : handle.Status)); + } if (handle == null) - return Task.FromResult(new PlayerKVTicketResult(PlayerKVTicketStatus.Blocked, PlayerKVError.Validation, PlayerKVSyncStatus.NotLoaded)); + { + return Task.FromResult(new PlayerKVTicketResult(PlayerKVTicketStatus.Blocked, PlayerKVError.Validation, PlayerKVSyncStatus.NotLoaded)); + } return handle.WaitForTicketAsync(ticket, waitToken); } } diff --git a/Client/Assets/Scripts/Core/PlayFabMgr.cs b/Client/Assets/Scripts/Core/PlayFabMgr.cs index faf13a402..c80c6a978 100644 --- a/Client/Assets/Scripts/Core/PlayFabMgr.cs +++ b/Client/Assets/Scripts/Core/PlayFabMgr.cs @@ -26,8 +26,6 @@ public class PlayFabMgr : MonoBehaviour private CancellationTokenSource tokenSource; static PlayFabMgr _instance = null; - // An inactive, never-awakened component proves that no timer or PF send has ever been started. - internal bool IsUnstartedForKVLoad => tokenSource==null && dataBuffer==null && swapData==null && localData==null && lastUpdateTime==null && _instance!=this; internal static bool HasLiveInstanceForKVLoad => _instance!=null; public static PlayFabMgr Instance @@ -45,9 +43,6 @@ public class PlayFabMgr : MonoBehaviour public Dictionary CompareDatas(Dictionary remoteDatas, string userId) { -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerKVGameplayLoop.Enabled) throw PlayerKVGameplayLoop.Stop("PF archive comparison is disabled in KV loop."); -#endif PlayerKVGameLoadGuard.RequireLegacyAllowed(PlayerKVGuardPoint.Compare); Last_Update_Time_Key = $"{Last_Update_Time_Key_Prefix}_{userId}"; Local_Data_Key = $"{Local_Data_Key_prefix}_{userId}"; @@ -124,24 +119,11 @@ public class PlayFabMgr : MonoBehaviour { if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Lifecycle)) return; _instance = this; -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerKVGameplayLoop.Enabled) return; -#endif InitBuffer(); tokenSource = new CancellationTokenSource(); UpdateUserDataValue(tokenSource.Token); } -#if UNITY_EDITOR && !SERVICE_HOST - internal void StartKVGameplayLoopSync() - { - if(!PlayerKVGameplayLoop.Ready || tokenSource!=null) return; - tokenSource=new CancellationTokenSource(); - UpdateUserDataValue(tokenSource.Token); - } - internal void StopKVGameplayLoopSync() - { tokenSource?.Cancel(); tokenSource?.Dispose(); tokenSource=null; } -#endif void InitBuffer() { dataBuffer = new LinkedList>(); @@ -154,14 +136,6 @@ public class PlayFabMgr : MonoBehaviour void OnApplicationPause(bool is_pause) { -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerKVGameplayLoop.Enabled) - { - if(is_pause) { StopKVGameplayLoopSync(); _=PlayerKVGameplayLoop.FlushObservedAsync(); } - else StartKVGameplayLoopSync(); - return; - } -#endif if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Lifecycle)) return; if (is_pause) { @@ -178,9 +152,6 @@ public class PlayFabMgr : MonoBehaviour void OnApplicationQuit() { -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerKVGameplayLoop.Enabled) { StopKVGameplayLoopSync(); _=PlayerKVGameplayLoop.CloseAsync(); return; } -#endif if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Lifecycle)) return; tokenSource.Cancel(); tokenSource = null; @@ -189,9 +160,6 @@ public class PlayFabMgr : MonoBehaviour void OnDestroy() { -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerKVGameplayLoop.Enabled) { StopKVGameplayLoopSync(); _=PlayerKVGameplayLoop.CloseAsync(); return; } -#endif if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Lifecycle)) return; tokenSource?.Cancel(); tokenSource = null; @@ -215,9 +183,6 @@ public class PlayFabMgr : MonoBehaviour public void UpdateUserDataValue(string key, string data, bool remoteStore = true) { -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerKVGameplayLoop.Enabled) { PlayerKVGameplayLoop.Write(key,data,remoteStore); return; } -#endif PlayerKVGameLoadGuard.RequireLegacyAllowed(PlayerKVGuardPoint.Update); if (remoteStore) { @@ -248,9 +213,6 @@ public class PlayFabMgr : MonoBehaviour /// public string GetLocalData(string key) { -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerKVGameplayLoop.Enabled) return PlayerKVGameplayLoop.Read(key); -#endif PlayerKVGameLoadGuard.RequireLegacyAllowed(PlayerKVGuardPoint.ReadLocal); if (localData.ContainsKey(key)) { @@ -264,9 +226,6 @@ public class PlayFabMgr : MonoBehaviour private void SyncData() { -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerKVGameplayLoop.Enabled) { _=PlayerKVGameplayLoop.FlushObservedAsync(); return; } -#endif if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Sync)) return; // Logout clears credentials before RootCtx is destroyed. Keep pending data local. if (!PlayFabClientAPI.IsClientLoggedIn()) return; @@ -320,13 +279,9 @@ public class PlayFabMgr : MonoBehaviour GameDebug.LogError("[PlayFabMgr]UpdateUserData Error: {0}", error.ToString()); } - internal void FlushBufferedData() => SyncData(); public async Task SyncDataImmidiate(string key, string data) { -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerKVGameplayLoop.Enabled) throw PlayerKVGameplayLoop.Stop("Immediate/consuming saves are outside the equipment loop."); -#endif if(PlayerKVGameLoadGuard.Reject(PlayerKVGuardPoint.Immediate)) return false; foreach (var buff in dataBuffer) { diff --git a/Client/Assets/Scripts/DataCenter/AchievementDataManager.cs b/Client/Assets/Scripts/DataCenter/AchievementDataManager.cs index 8c3f70939..3f4fd773c 100644 --- a/Client/Assets/Scripts/DataCenter/AchievementDataManager.cs +++ b/Client/Assets/Scripts/DataCenter/AchievementDataManager.cs @@ -32,30 +32,14 @@ public class AchievementDataManager : IDisposable { _tables = tables; } - internal static game.PlayerDataStorage.PlayerKVAchievementState DecodeForKVLoad( - IReadOnlyDictionary raw, IReadOnlyDictionary modern, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot, game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) - => game.PlayerDataStorage.PlayerKVSaveSchema.DecodeAchievements(raw, modern, snapshot, errors); + - internal void ResetForKVLoad() - { - _achievementDatas = new Dictionary(); - } + - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVAchievementState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - var replacement = new Dictionary(); - foreach (var entry in state.Values) - replacement.Add((ConditionType)entry.Key, new AchievementData - { Id = entry.Value.Id, Target = entry.Value.Target, day = entry.Value.Day }); - _achievementDatas = replacement; - } + - internal bool IsEmptyForKVValidation => _achievementDatas.Count == 0; - internal AchievementData FindForKVValidation(ConditionType key) - => _achievementDatas.TryGetValue(key, out var value) - ? new AchievementData { Id = value.Id, Target = value.Target, day = value.day } : null; + + public void LoadAchievementData(string value) { diff --git a/Client/Assets/Scripts/DataCenter/BargainPackData.cs b/Client/Assets/Scripts/DataCenter/BargainPackData.cs index 8f6d049e3..f470b404a 100644 --- a/Client/Assets/Scripts/DataCenter/BargainPackData.cs +++ b/Client/Assets/Scripts/DataCenter/BargainPackData.cs @@ -1,4 +1,4 @@ -using asap.core; +using asap.core; using cfg; using GameCore; using UnityEngine; @@ -15,61 +15,13 @@ public class BargainPackData private readonly TbSpecialPack _spp = GContext.container.Resolve().TbSpecialPack; private GeneralEventPackData _data; - private bool _kvLoadPresent; -#if UNITY_EDITOR - internal bool SelectionsAreIndependentForKVValidation() - { - var source = new List { 7, 9 }; - var state = new game.PlayerDataStorage.PlayerKVBargainState(true,0,_data.redirectID,0,0,0,0,0,0,0,0,0,false,false,0,source); - ReplaceFromKVDecoded(state); - source.Clear(); - if (_data.selections.Count != 2 || ReferenceEquals(_data.selections, source) || ReferenceEquals(_data.selections, state.selections)) return false; - var previous = _data.selections; - _data.selections[0] = 10; - if (state.selections[0] != 7) return false; - ResetForKVLoad(); - return _data.selections.Count == 0 && !ReferenceEquals(previous, _data.selections) && !_kvLoadPresent; - } -#endif - internal bool KVLoadPresent => _kvLoadPresent; - internal static game.PlayerDataStorage.PlayerKVBargainState DecodeForKVLoad( - IReadOnlyDictionary raw, game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeBargain(raw, snapshot, errors); + + + - internal void ResetForKVLoad() - { - _kvLoadPresent = false; - _data = default(GeneralEventPackData); - _data.selections = new List(); - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVBargainState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - if (!state.IsPresent) { ResetForKVLoad(); return; } - var replacement = new GeneralEventPackData - { - currentEventID = state.currentEventID, - redirectID = state.redirectID, - VIPLvlWhenEventActivate = state.VIPLvlWhenEventActivate, - purchaseCount = state.purchaseCount, - savingProgress = state.savingProgress, - discountLvl = state.discountLvl, - visualProgress = state.visualProgress, - visualDiscountLvl = state.visualDiscountLvl, - rodID = state.rodID, - lastPackIDBought = state.lastPackIDBought, - packID = state.packID, - doNeedTrigger = state.doNeedTrigger, - isTriggered = state.isTriggered, - inflation = state.inflation, - selections = state.selections == null ? null : new List(state.selections), - }; - _data = replacement; - _kvLoadPresent = true; - } - internal game.PlayerDataStorage.PlayerKVBargainState SnapshotForKVValidation() => - new game.PlayerDataStorage.PlayerKVBargainState(_kvLoadPresent, _data.currentEventID, _data.redirectID, _data.VIPLvlWhenEventActivate, _data.purchaseCount, _data.savingProgress, _data.discountLvl, _data.visualProgress, _data.visualDiscountLvl, _data.rodID, _data.lastPackIDBought, _data.packID, _data.doNeedTrigger, _data.isTriggered, _data.inflation, _data.selections); + + + public int CurrentEventID => _data.currentEventID; diff --git a/Client/Assets/Scripts/DataCenter/BattlePassData.cs b/Client/Assets/Scripts/DataCenter/BattlePassData.cs index 35de19450..099c13228 100644 --- a/Client/Assets/Scripts/DataCenter/BattlePassData.cs +++ b/Client/Assets/Scripts/DataCenter/BattlePassData.cs @@ -37,28 +37,9 @@ public class BattlePassData public BattlePassRecord BattlePassRecord; public BattleTask BattleTask; - internal static game.PlayerDataStorage.PlayerKVBattlePassState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeBattlePass(raw,snapshot,errors); - internal void ResetForKVLoad() - { - BattlePassRecord=new BattlePassRecord(); - BattleTask=new BattleTask(); - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVBattlePassState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - var record=new BattlePassRecord { - ID=state.Record.ID,Level=state.Record.Level,Exp=state.Record.Exp,BuyVipToastIndex=state.Record.BuyVipToastIndex, - IsUnlockVip=state.Record.IsUnlockVip,NormalRewardGet=new List(state.Record.Normal),VipRewardGet=new List(state.Record.Vip), - LastDropIDs=new List(state.Record.LastDrops),InflationRate=state.Record.Inflation - }; - var task=new BattleTask { - dic_dailyTasks=state.Task.Daily.ToDictionary(p=>p.Key,p=>p.Value),dic_weeklyTasks=state.Task.Weekly.ToDictionary(p=>p.Key,p=>p.Value), - loginDays=new List(state.Task.LoginDays),DailyTaskEndTime=state.Task.DailyEnd,WeeklyTaskEndTime=state.Task.WeeklyEnd - }; - BattlePassRecord=record; BattleTask=task; - } + + + private Tables _tables; diff --git a/Client/Assets/Scripts/DataCenter/BuffDataCenter.cs b/Client/Assets/Scripts/DataCenter/BuffDataCenter.cs index d8947dd18..c0f81eeeb 100644 --- a/Client/Assets/Scripts/DataCenter/BuffDataCenter.cs +++ b/Client/Assets/Scripts/DataCenter/BuffDataCenter.cs @@ -1,4 +1,4 @@ -using asap.core; +using asap.core; using cfg; using GameCore; using System; @@ -19,38 +19,10 @@ public class BuffDataCenter FishBuffTimeData fishDailyBuff = null; public List showFishBuffIds = new List(); - internal static game.PlayerDataStorage.PlayerKVBuffState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeBuffs(raw,snapshot,errors); - internal void ResetForKVLoad() - { - mapBuffDataList=new Dictionary(); - targetBuffDataList=new List(); - globalBuffDataList=new Dictionary(); - showFishBuffIds=new List(); fishDailyBuff=null; - } - static FishBuffTimeData MaterializeKVBuff(game.PlayerDataStorage.PlayerKVBuffValue value) => value==null ? null : new FishBuffTimeData - { SortID=value.SortID,sourceID=value.sourceID,buffID=value.buffID,isEnd=value.isEnd,buffEndTime=value.buffEndTime,isNew=false,addDown=0 }; - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVBuffState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - var map=new Dictionary(); var global=new Dictionary(); var target=new List(); - foreach(var item in state.Map) map.Add(item.Key,MaterializeKVBuff(item.Value)); - foreach(var item in state.Global) global.Add(item.Key,MaterializeKVBuff(item.Value)); - foreach(var item in state.Target) target.Add(MaterializeKVBuff(item)); - mapBuffDataList=map; globalBuffDataList=global; targetBuffDataList=target; fishDailyBuff=MaterializeKVBuff(state.Daily); - } -#if UNITY_EDITOR - internal FishBuffTimeData BuffForKVValidation(int kind,int key) - { - if(kind==0) return mapBuffDataList.TryGetValue(key,out var value) ? value : null; - if(kind==1) return targetBuffDataList.Count>key ? targetBuffDataList[key] : null; - if(kind==2) return fishDailyBuff; - return globalBuffDataList.TryGetValue(key,out var global) ? global : null; - } - internal bool IsEmptyForKVValidation => mapBuffDataList.Count==0 && targetBuffDataList.Count==0 && - globalBuffDataList.Count==0 && showFishBuffIds.Count==0 && fishDailyBuff==null; -#endif + + + + public void InitData(Dictionary userDatas) { if (userDatas.TryGetValue("BuffDataList", out string buffDataStr)) diff --git a/Client/Assets/Scripts/DataCenter/DataCenter.FishingEventData.cs b/Client/Assets/Scripts/DataCenter/DataCenter.FishingEventData.cs index 68b1ddb8a..850f5beea 100644 --- a/Client/Assets/Scripts/DataCenter/DataCenter.FishingEventData.cs +++ b/Client/Assets/Scripts/DataCenter/DataCenter.FishingEventData.cs @@ -1,4 +1,4 @@ -using Activity.Services; +using Activity.Services; using asap.core; using Assets.Scripts.UI.SocialRush; using cfg; @@ -141,45 +141,9 @@ namespace GameCore //待释放 IDisposable disposable; - internal static game.PlayerDataStorage.PlayerKVEventBaseState DecodeForKVLoad(IReadOnlyDictionary raw, - IReadOnlyDictionary modern,game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) - => game.PlayerDataStorage.PlayerKVSaveSchema.DecodeEventBase(raw,modern,snapshot,errors); - internal void ResetForKVLoad() - { - limitedTimeEventDic=new Dictionary(); fixedTimeEventDic=new Dictionary(); - ETDropAfterDropDic=new Dictionary(); RankTargetCount=new Dictionary(); WheelLevelCount=new Dictionary(); - TurntableCoupon=_tables.TbGlobalConfig.InitWheelTicket; WheelOperateCount=0; AllWheelOperateCount=0; freecount=0; PVPToken=0; - collectingTargetEventID=-1; virtualCollectingTargetEventID=-1; NewPlayerEvent=default; - collectingTargetInit=null; collectingTargetInitTokenID=0; collectingTargetInitTaskID=0; - TargetList=null; collectingTarget=null; preCollectingTarget=null; targetItemDatas=null; preRankTarget=null; rankItemDatas=null; - rankEvent=null; rankInit=null; rankTarget=null; turntableEvent=null; wheelInit=null; wheelLevel=null; - SystemOpen=new Dictionary(); _unlocked=new HashSet(); _isTargetGuidance=true; - IsJoinUsPanelOpen=false; collectingTargetResoure=true; IsAquariumOpen=false; IsOpenDrop=false; OpenAquariumID=0; - requiredCount=0; requiredRankCount=0; curActivateItemId=0; - duelData=null; rankTierChangeState=0; curSolomain=null; Pack1A1Data=null; Pack1A2Data=null; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVEventBaseState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - limitedTimeEventDic=state.Limited.ToDictionary(p=>p.Key,p=>new LimitedTimeEvent { id=p.Value.Id,duration=p.Value.Duration,startTime=p.Value.StartTime }); - fixedTimeEventDic=state.Fixed.ToDictionary(p=>p.Key,p=>new FixedTimeEvent { id=p.Value.id,endTime=p.Value.endTime }); - ETDropAfterDropDic=state.Target.ToDictionary(p=>p.Key,p=>p.Value); RankTargetCount=state.Rank.ToDictionary(p=>p.Key,p=>p.Value); - WheelLevelCount=state.Wheel.ToDictionary(p=>p.Key,p=>p.Value); TurntableCoupon=state.Coupon; - WheelOperateCount=state.Operate; AllWheelOperateCount=state.AllOperate; freecount=state.Free; PVPToken=state.PvpToken; - } -#if UNITY_EDITOR - internal game.PlayerDataStorage.PlayerKVEventBaseState SnapshotForKVValidation() => new game.PlayerDataStorage.PlayerKVEventBaseState( - limitedTimeEventDic.ToDictionary(p=>p.Key,p=>new game.PlayerDataStorage.PlayerKVLimitedValue(p.Value.id,p.Value.duration,p.Value.startTime)), - fixedTimeEventDic.ToDictionary(p=>p.Key,p=>new game.PlayerDataStorage.PlayerKVFixedTimeValue(p.Value.id,p.Value.endTime)), - ETDropAfterDropDic,RankTargetCount,WheelLevelCount,TurntableCoupon,WheelOperateCount,AllWheelOperateCount,freecount,PVPToken); - internal void MutateCollectionsForKVValidation() - { limitedTimeEventDic.Values.First().duration=99; fixedTimeEventDic.Values.First().id=99; ETDropAfterDropDic.Clear(); RankTargetCount.Clear(); WheelLevelCount.Clear(); } - internal bool IsInactiveForKVValidation => collectingTargetEventID==-1 && virtualCollectingTargetEventID==-1 && NewPlayerEvent==default && - collectingTargetInit==null && collectingTargetInitTokenID==0 && collectingTargetInitTaskID==0 && TargetList==null && collectingTarget==null && - preCollectingTarget==null && targetItemDatas==null && preRankTarget==null && rankItemDatas==null && rankEvent==null && rankInit==null && rankTarget==null && - turntableEvent==null && wheelInit==null && wheelLevel==null && SystemOpen.Count==0 && _unlocked.Count==0 && duelData==null && curSolomain==null && - Pack1A1Data==null && Pack1A2Data==null && !IsJoinUsPanelOpen && !IsAquariumOpen && !IsOpenDrop && OpenAquariumID==0 && requiredCount==0 && requiredRankCount==0 && curActivateItemId==0; -#endif + + + public void InitData(Dictionary userDatas) { diff --git a/Client/Assets/Scripts/DataCenter/DataCenter.GuideData.cs b/Client/Assets/Scripts/DataCenter/DataCenter.GuideData.cs index 5faa34d71..290d7eb21 100644 --- a/Client/Assets/Scripts/DataCenter/DataCenter.GuideData.cs +++ b/Client/Assets/Scripts/DataCenter/DataCenter.GuideData.cs @@ -58,19 +58,9 @@ namespace GameCore public GuidanceGroupDefine curGroupDefine; public GuidanceDefineSetting guidanceDefineSetting; - internal static game.PlayerDataStorage.PlayerKVGuideState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => game.PlayerDataStorage.PlayerKVSaveSchema.DecodeGuides(raw,errors); - internal void ResetForKVLoad() - { - GuideSaveDataDic = new Dictionary(StringComparer.Ordinal); - curSaveData = null; curDefine = null; curGroupDefine = null; popupPanelNode = null; CurPanelName = null; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVGuideState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - GuideSaveDataDic = state.Values.ToDictionary(p=>p.Key, - p=>new GuideSaveData { guideSubIndex=p.Value.Index, isFinish=p.Value.Finished, groupName=p.Value.Group },StringComparer.Ordinal); - } + + + //待释放 IDisposable disposable; IDisposable disposable2; @@ -119,13 +109,7 @@ namespace GameCore if (GuideSaveDataDic.TryGetValue(item.groupName.ToString(), out _saveData)) { -#if UNITY_EDITOR && !SERVICE_HOST - if (DeferUnavailablePotionGuide(item, _saveData)) - { - keyValuePairs[item.groupName.ToString()] = _saveData; - continue; - } -#endif + if (!_saveData.isFinish && _saveData.guideSubIndex > 0) { for (int i = _saveData.guideSubIndex; i < item.guidanceDefines.Length; i++) @@ -178,29 +162,7 @@ namespace GameCore } } } -#if UNITY_EDITOR && !SERVICE_HOST - private static bool DeferUnavailablePotionGuide(GuidanceGroupDefine group, GuideSaveData saved) - { - if (!game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled || !game.PlayerDataStorage.PlayerKVGameplayLoop.Ready || - group.groupName != GroupName.EventPotion01 || saved == null || saved.isFinish || saved.guideSubIndex <= 0 || - group.guidanceDefines == null || saved.guideSubIndex >= group.guidanceDefines.Length || - group.guidanceDefines[saved.guideSubIndex] == null || - group.guidanceDefines[saved.guideSubIndex].panelName != "EventPotionPanel") - return false; - try - { - // Existing potion activity classification; availability query does not initialize activity data. - const int potionEventType = 4; - const int potionEventSubType = 5; - return GContext.container.Resolve().GetEvent(potionEventType, potionEventSubType) == -1; - } - catch (Exception ex) - { - Debug.LogWarning("Potion guide availability query failed; retaining original guide recovery: " + ex); - return false; - } - } -#endif + public bool GetIsFinish(string groupName) { return GuideSaveDataDic.ContainsKey(groupName) && GuideSaveDataDic[groupName].isFinish; diff --git a/Client/Assets/Scripts/DataCenter/DataCenter.LeadboardData.cs b/Client/Assets/Scripts/DataCenter/DataCenter.LeadboardData.cs index e87daf30e..f4368202c 100644 --- a/Client/Assets/Scripts/DataCenter/DataCenter.LeadboardData.cs +++ b/Client/Assets/Scripts/DataCenter/DataCenter.LeadboardData.cs @@ -166,22 +166,28 @@ namespace GameCore } if (userService is KVUserService kvUser) { - var store = kvUser.SaveStore; + var store = kvUser.SaveStore as KVPlayerSaveStore; var writtenNames = new HashSet(StringComparer.Ordinal); - bool accepted = false; + var data = new Dictionary(StringComparer.Ordinal); foreach (var statistic in Statistics) { - if (!writtenNames.Add(statistic.StatisticName)) continue; - var write = store.Write(statistic.StatisticName, statistic.Value.ToString(CultureInfo.InvariantCulture)); - if (write.Accepted) accepted = true; - else Debug.LogError("KV statistic write failed: " + statistic.StatisticName + ": " + write.Error); + if (!writtenNames.Add(statistic.StatisticName)) + { + continue; + } + if (!KVSnapshot.ValidKey(statistic.StatisticName)) + { + Debug.LogError("KV statistic write failed: " + statistic.StatisticName + ": Validation"); + continue; + } + data.Add(statistic.StatisticName, statistic.Value.ToString(CultureInfo.InvariantCulture)); } - if (accepted) + if (data.Count > 0) { - var confirmation = await store.FlushAsync(); - if (confirmation.Status != PlayerSaveStatus.Confirmed) - Debug.LogError("KV statistic save not confirmed: " + string.Join(",", writtenNames) + - ": " + confirmation.Status + ": " + confirmation.Error); + if (store == null || !await store.SyncDataImmidiate(data)) + { + Debug.LogError("KV statistic save failed: " + string.Join(",", data.Keys)); + } } return; } @@ -193,6 +199,35 @@ namespace GameCore } public async Task GetLeadboardData(string leaderboardNaem, int maxCount = 50) { + if (userService is KVUserService) + { + var json = await customServerMgr.CustomServerPost("leaderboard/GetLeaderboard", + Newtonsoft.Json.JsonConvert.SerializeObject(new + { + statisticName = leaderboardNaem, + startPosition = 0, + maxResultsCount = maxCount + })); + if (string.IsNullOrEmpty(json)) + { + return null; + } + try + { + var response = Newtonsoft.Json.JsonConvert.DeserializeObject(json); + if (response == null || response.Code != 1 || response.Leaderboard == null || + response.Leaderboard.Any(entry => entry == null || entry.Profile == null)) + { + return null; + } + return new GetLeaderboardResult { Leaderboard = response.Leaderboard }; + } + catch (Newtonsoft.Json.JsonException ex) + { + Debug.LogError("KV leaderboard response failed: " + ex.GetType().Name); + return null; + } + } GetLeaderboardRequest reques = new GetLeaderboardRequest() { StartPosition = 0, @@ -209,6 +244,21 @@ namespace GameCore return await PlayFabClientAsyncAPI.GetLeaderboardAsync(reques); } + private sealed class KVLeaderboardResponse + { + public int Code + { + get; + set; + } + + public List Leaderboard + { + get; + set; + } + } + public async void SetLvData() { isRefreshing = true; diff --git a/Client/Assets/Scripts/DataCenter/DataCenter.PlayerData.cs b/Client/Assets/Scripts/DataCenter/DataCenter.PlayerData.cs index aa92b6e2b..6fbc2bcef 100644 --- a/Client/Assets/Scripts/DataCenter/DataCenter.PlayerData.cs +++ b/Client/Assets/Scripts/DataCenter/DataCenter.PlayerData.cs @@ -1,4 +1,4 @@ -using asap.core; +using asap.core; using Assets.Scripts.UI.OfferSweep; using cfg; using CodeStage.AntiCheat.ObscuredTypes; @@ -36,41 +36,9 @@ namespace GameCore Dictionary NewPlayerDataDic = new Dictionary(); public IReadOnlyDictionary PlayerDataDic => NewPlayerDataDic; - internal static game.PlayerDataStorage.PlayerKVPlayerState DecodeForKVLoad(IReadOnlyDictionary raw, - IReadOnlyDictionary modern,game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => game.PlayerDataStorage.PlayerKVSaveSchema.DecodePlayer(raw,modern,snapshot,errors); - internal void ResetForKVLoad() - { - NewPlayerDataDic=new Dictionary(StringComparer.Ordinal); vipScoreDic=new Dictionary(); - newRodList=new List(); - lv=vip=vipAllScore=0; vipLastScore=PriceLv=0; priceLevel=null; - energy=pearl=diamond=equipRodID=magnification=seasonId=rewardNewMap=0; - gold=0; goldRM=0; energyRM=0; _currentMapId=_lastMapId=0; - _fishingFrequency=_allFishingFrequency=0; _lastEnergyRecoveryTime=DateTime.MinValue; - IsOpenAppraise=false; InfiniteBuildingData=null; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVPlayerState state) - { - if(state==null || state.Core==null) throw new ArgumentNullException(nameof(state)); - var modern=state.Modern.ToDictionary(p=>p.Key,p=>p.Value,StringComparer.Ordinal); - var scores=state.VipScores.ToDictionary(p=>p.Key,p=>p.Value); - var rods=new List(state.NewRods); - var core=state.Core; - lv=core.Integer(0); gold=core.Unsigned(1); vipAllScore=core.Integer(2); energy=core.Integer(3); - pearl=core.Integer(4); magnification=core.Integer(5); equipRodID=core.Integer(6); _lastEnergyRecoveryTime=core.EnergyTime; - rewardNewMap=core.Integer(8); energyRM=core.Integer(9); goldRM=core.Unsigned(10); diamond=core.Integer(11); - _currentMapId=core.Integer(12); _lastMapId=core.Integer(13); _fishingFrequency=core.Integer(14); _allFishingFrequency=core.Integer(15); - NewPlayerDataDic=modern; vipScoreDic=scores; newRodList=rods; - seasonId=state.Season; IsOpenAppraise=state.Appraise; InfiniteBuildingData=state.Building; - } -#if UNITY_EDITOR - internal game.PlayerDataStorage.PlayerKVPlayerState SnapshotForKVValidation() => - new game.PlayerDataStorage.PlayerKVPlayerState(new game.PlayerDataStorage.PlayerKVCoreState(new object[] { - (int)lv,(ulong)gold,(int)vipAllScore,(int)energy,(int)pearl,(int)magnification,(int)equipRodID,_lastEnergyRecoveryTime, - (int)rewardNewMap,energyRM,goldRM,(int)diamond,(int)_currentMapId,(int)_lastMapId,_fishingFrequency,_allFishingFrequency,0,0,0 - }),NewPlayerDataDic,vipScoreDic,newRodList,seasonId,IsOpenAppraise,InfiniteBuildingData); - internal bool IsDerivedEmptyForKVValidation => (int)vip==0 && vipLastScore==0 && PriceLv==0 && priceLevel==null; -#endif + + + public ObscuredInt lv { get; set; } public ObscuredInt vip { get; private set; } public ObscuredInt vipAllScore { get; private set; } @@ -1140,57 +1108,6 @@ namespace GameCore public void SavePlayerData(bool remote = true) { GContext.Publish(this); - SerializeAndSavePlayerData(remote); - } - -#if UNITY_EDITOR && !SERVICE_HOST - internal async System.Threading.Tasks.Task ConsumeEnergyForKVLoopAsync(int cost, - game.PlayerDataStorage.PlayerKVGameplayLoop.FishingAction action) - { - if(cost<=0 || Energy!r.Remote)}); - await game.PlayerDataStorage.PlayerKVGameplayLoop.ConfirmFishingAsync(action,batch,primary); - } - catch(System.Exception e) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault(e.Message); throw; } - } - internal async System.Threading.Tasks.Task SetEquipRodIDForKVLoopAsync(int id) - { - var batch=game.PlayerDataStorage.PlayerKVGameplayLoop.BeginEquip(); - game.PlayerDataStorage.PlayerKVEditResult primary; - try - { - using(batch) - { - equipRodID=id; - GContext.container.Resolve().SetRedPoint(); - GContext.Publish(this); - primary=SerializeAndSavePlayerData(true); - } - await game.PlayerDataStorage.PlayerKVGameplayLoop.ConfirmEquipAsync(batch,primary); - } - catch(System.Exception e) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault(e.Message); throw; } - } -#endif -#if UNITY_EDITOR && !SERVICE_HOST - internal game.PlayerDataStorage.PlayerKVEditResult SaveFishingRewardForKVLoop() - { - game.PlayerDataStorage.PlayerKVGameplayLoop.CheckRewardMainSave(); - return SerializeAndSavePlayerData(true); - } -#endif - private game.PlayerDataStorage.PlayerKVEditResult SerializeAndSavePlayerData(bool remote) - { StringBuilder sb = new StringBuilder(); sb.Append(lv).Append(","); sb.Append(gold).Append(","); @@ -1231,11 +1148,7 @@ namespace GameCore NewPlayerDataDic["ct"] = GContext.container.Resolve().CTSerialize(); NewPlayerDataDic["rt"] = GContext.container.Resolve().RTSerialize(); ; -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) return game.PlayerDataStorage.PlayerKVGameplayLoop.Write("NewPlayerDataDic",Newtonsoft.Json.JsonConvert.SerializeObject(NewPlayerDataDic),remote); -#endif playerSaveStore.Write("NewPlayerDataDic", Newtonsoft.Json.JsonConvert.SerializeObject(NewPlayerDataDic), remote).RequireAccepted(); - return null; } public void Init() { diff --git a/Client/Assets/Scripts/DataCenter/DataCenter.PlayerFishData.cs b/Client/Assets/Scripts/DataCenter/DataCenter.PlayerFishData.cs index 68b0c02fe..c163376aa 100644 --- a/Client/Assets/Scripts/DataCenter/DataCenter.PlayerFishData.cs +++ b/Client/Assets/Scripts/DataCenter/DataCenter.PlayerFishData.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using UnityEngine; using cfg; @@ -86,45 +86,9 @@ namespace GameCore public Dictionary LuckDataDic = new Dictionary(); public bool IsOpenPiercing = false; public int RodSelectedInPack = 0; - internal static game.PlayerDataStorage.PlayerKVFishState DecodeForKVLoad(IReadOnlyDictionary raw, - IReadOnlyDictionary modern,game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) - => game.PlayerDataStorage.PlayerKVSaveSchema.DecodeFish(raw,modern,snapshot,errors); - internal void ResetForKVLoad() - { - mapFishData=new Dictionary>(); fishData=new Dictionary(); fishCardData=new Dictionary(); - mapProgress=new Dictionary(); rodData=new Dictionary(); rodLevelData=new Dictionary(); - fishSwimToMap=new Dictionary(); fishSwimToMapCount=new Dictionary(); _honorlevel=new Dictionary(); - LuckDataDic=new Dictionary(StringComparer.Ordinal); rodAccessoriesData=null; - InitBotLuck=0; InitFishLuck=0; BotCount=0; _isRedPoint_up=false; RodCanUp=false; RodCanUpLevel=false; - MapTipforUnlocked=0; IsOpenMap=false; IsOpenRod=false; IsOpenPiercing=false; RodSelectedInPack=0; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVFishState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - var maps=state.Maps.ToDictionary(m=>m.Key,m=>m.Value.ToDictionary(p=>p.Key,p=>new FishWeightData { - Level=p.Value.Level,MaxG=p.Value.Weight,TotalCard=p.Value.Cards,TotalNum=p.Value.Number,NewFish=p.Value.New })); - var flat=new Dictionary(); - foreach(var map in maps.Values) foreach(var p in map) flat.Add(p.Key,p.Value); - mapFishData=maps; fishData=flat; fishCardData=state.Cards.ToDictionary(p=>p.Key,p=>p.Value); - rodData=state.Rods.ToDictionary(p=>p.Key,p=>p.Value); rodLevelData=state.RodLevels.ToDictionary(p=>p.Key,p=>p.Value); - fishSwimToMap=state.Swim.ToDictionary(p=>p.Key,p=>p.Value); fishSwimToMapCount=state.SwimCount.ToDictionary(p=>p.Key,p=>p.Value); - mapProgress=state.Progress.ToDictionary(p=>p.Key,p=>p.Value); _honorlevel=state.Honor.ToDictionary(p=>p.Key,p=>p.Value); - LuckDataDic=state.Luck.ToDictionary(p=>p.Key,p=>p.Value,StringComparer.Ordinal); - var a=state.Accessories; - rodAccessoriesData=a==null ? null : new RodGSAData { GloveID=a.Glove,RodToSkin=a.RodSkin.ToDictionary(p=>p.Key,p=>p.Value), - GloveIds=new List(a.Gloves),SkinIds=new List(a.Skins),GloveNewIds=new List(a.NewGloves),SkinNewIds=new List(a.NewSkins) }; - } -#if UNITY_EDITOR - internal FishWeightData FishForKVValidation(int map,int id) => mapFishData[map][id]; - internal bool IndexesMatchForKVValidation(int map,int id,int card) => ReferenceEquals(mapFishData[map][id],fishData[id]) && fishCardData[card]==fishData[id].TotalCard; - internal bool EmptyForKVValidation => mapFishData.Count==0 && fishData.Count==0 && fishCardData.Count==0 && mapProgress.Count==0 && rodData.Count==0 && rodLevelData.Count==0 && - fishSwimToMap.Count==0 && fishSwimToMapCount.Count==0 && _honorlevel.Count==0 && LuckDataDic.Count==0 && rodAccessoriesData==null && - InitBotLuck==0 && InitFishLuck==0 && BotCount==0 && !_isRedPoint_up && !RodCanUp && !RodCanUpLevel && !IsOpenMap && !IsOpenRod && !IsOpenPiercing && MapTipforUnlocked==0 && RodSelectedInPack==0; - internal bool DictionariesMatchForKVValidation(game.PlayerDataStorage.PlayerKVFishState s) => - rodData.OrderBy(p=>p.Key).SequenceEqual(s.Rods.OrderBy(p=>p.Key)) && rodLevelData.OrderBy(p=>p.Key).SequenceEqual(s.RodLevels.OrderBy(p=>p.Key)) && - fishSwimToMap.OrderBy(p=>p.Key).SequenceEqual(s.Swim.OrderBy(p=>p.Key)) && fishSwimToMapCount.OrderBy(p=>p.Key).SequenceEqual(s.SwimCount.OrderBy(p=>p.Key)) && - mapProgress.OrderBy(p=>p.Key).SequenceEqual(s.Progress.OrderBy(p=>p.Key)) && _honorlevel.OrderBy(p=>p.Key).SequenceEqual(s.Honor.OrderBy(p=>p.Key)); -#endif + + + public void InitData(Dictionary userDatas) { @@ -1195,14 +1159,6 @@ namespace GameCore SetFishData(id, fishData[id]); } -#if UNITY_EDITOR && !SERVICE_HOST - internal void SaveCaughtFishForKVLoop(int fishId) - { - if(!fishData.TryGetValue(fishId,out var data)) throw game.PlayerDataStorage.PlayerKVGameplayLoop.Stop("Caught fish data is missing."); - game.PlayerDataStorage.PlayerKVGameplayLoop.CheckCaughtFishSave(fishId,data.TotalNum); - SetFishData(fishId,data); - } -#endif void SetFishData(int id, FishWeightData data) { int mapID = _tables.TbFishData.GetOrDefault(id).AreaID; diff --git a/Client/Assets/Scripts/DataCenter/DataCenter.PlayerShopData.cs b/Client/Assets/Scripts/DataCenter/DataCenter.PlayerShopData.cs index 70a26d979..342645e21 100644 --- a/Client/Assets/Scripts/DataCenter/DataCenter.PlayerShopData.cs +++ b/Client/Assets/Scripts/DataCenter/DataCenter.PlayerShopData.cs @@ -1,4 +1,4 @@ -using asap.core; +using asap.core; using cfg; using CodeStage.AntiCheat.ObscuredTypes; using game; @@ -133,43 +133,10 @@ namespace GameCore Dictionary advertCount = new Dictionary(); #endregion - internal static game.PlayerDataStorage.PlayerKVShopState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) - => game.PlayerDataStorage.PlayerKVSaveSchema.DecodeShop(raw,snapshot,errors); - internal void ResetForKVLoad() - { - shopPackDailyBuyCount=new Dictionary(StringComparer.Ordinal); shopAllPackBuyCount=new Dictionary(); - shopGiftBuyCount=new Dictionary(); buyData=new List(); advertCount=new Dictionary(); - Voucher=0; ChainPackData=null; VIPAdPackData=null; TurntableAdData=null; - _diamondShopItemRecords=new Dictionary(); _diamondShopRefreshCount=0; _diamondShopRefreshTime=default; - CouponData.ResetForKVLoad(); - } - static DailySignEvent KVDaily(game.PlayerDataStorage.PlayerKVDailyValue value) => value==null ? null : - new DailySignEvent { ID=value.Id,index=value.Index,lastID=value.LastId,time=value.Time }; - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVShopState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - shopPackDailyBuyCount=state.Daily.ToDictionary(p=>p.Key,p=>p.Value,StringComparer.Ordinal); - shopAllPackBuyCount=state.All.ToDictionary(p=>p.Key,p=>p.Value); shopGiftBuyCount=state.Gift.ToDictionary(p=>p.Key,p=>p.Value); - advertCount=state.Advert.ToDictionary(p=>p.Key,p=>p.Value); buyData=new List(state.Buy); Voucher=state.Voucher; - ChainPackData=KVDaily(state.Chain); TurntableAdData=KVDaily(state.Turntable); - VIPAdPackData=state.Vip==null ? null : new AdvertData { ID=state.Vip.Id,index=state.Vip.Index,day=state.Vip.Day,cdTime=state.Vip.Time,isOpen=state.Vip.Open }; - _diamondShopItemRecords=state.Items.ToDictionary(p=>p.Key,p=>new ItemShopRecord(p.Value.Id,p.Value.Discount,p.Value.Bought)); - _diamondShopRefreshCount=state.RefreshCount; _diamondShopRefreshTime=state.RefreshTime; CouponData.ReplaceFromKVDecoded(state.Coupon); - } -#if UNITY_EDITOR - internal game.PlayerDataStorage.PlayerKVShopState SnapshotForKVValidation() - { - game.PlayerDataStorage.PlayerKVDailyValue Daily(DailySignEvent v) => v==null ? null : new game.PlayerDataStorage.PlayerKVDailyValue(v.ID,v.index,v.lastID,v.time); - return new game.PlayerDataStorage.PlayerKVShopState(shopPackDailyBuyCount,shopAllPackBuyCount,shopGiftBuyCount,advertCount, - _diamondShopItemRecords.ToDictionary(p=>p.Key,p=>new game.PlayerDataStorage.PlayerKVShopItemValue(p.Value.ItemID,p.Value.Discount,p.Value.hasBought)), - buyData,Voucher,_diamondShopRefreshCount,_diamondShopRefreshTime,Daily(ChainPackData),Daily(TurntableAdData), - VIPAdPackData==null ? null : new game.PlayerDataStorage.PlayerKVAdvertValue(VIPAdPackData.ID,VIPAdPackData.index,VIPAdPackData.day,VIPAdPackData.cdTime,VIPAdPackData.isOpen), - new game.PlayerDataStorage.PlayerKVCouponState(CouponData.ActivateTime,CouponData.EventId,CouponData.RedirectId,CouponData.IsBought)); - } - internal void MutateCollectionsForKVValidation() - { buyData.Clear(); advertCount.Clear(); _diamondShopItemRecords.Values.First().Discount=99; } -#endif + + + + public void InitData(Dictionary userDatas) { diff --git a/Client/Assets/Scripts/DataCenter/DataCenter.SignupData.cs b/Client/Assets/Scripts/DataCenter/DataCenter.SignupData.cs index 3bd41007b..306f4798b 100644 --- a/Client/Assets/Scripts/DataCenter/DataCenter.SignupData.cs +++ b/Client/Assets/Scripts/DataCenter/DataCenter.SignupData.cs @@ -1,4 +1,4 @@ -using asap.core; +using asap.core; using cfg; using game; using LitJson; @@ -39,18 +39,9 @@ namespace GameCore MonthlySignEvent _monthlySignEvent = null; - internal static game.PlayerDataStorage.PlayerKVMonthlySignState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => game.PlayerDataStorage.PlayerKVSaveSchema.DecodeMonthlySign(raw,errors); - internal void ResetForKVLoad() { _monthlySignEvent = null; } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVMonthlySignState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - _monthlySignEvent = !state.IsPresent ? null : new MonthlySignEvent - { - index = state.Index, - dailySignEvent = new DailySignEvent { ID=state.DailyId, index=state.DailyIndex, lastID=state.LastId, time=state.Time } - }; - } + + + public DailySignEvent dailySignEvent { diff --git a/Client/Assets/Scripts/DataCenter/DataCenter.SmallGame.cs b/Client/Assets/Scripts/DataCenter/DataCenter.SmallGame.cs index dd388e975..ff056ec6f 100644 --- a/Client/Assets/Scripts/DataCenter/DataCenter.SmallGame.cs +++ b/Client/Assets/Scripts/DataCenter/DataCenter.SmallGame.cs @@ -48,25 +48,9 @@ namespace GameCore public int FishHuntGameCount => _fishHuntGameCount; public int BombGameCount => _bombGameCount; - internal void ResetForKVLoad() - { - _heistGameCount=_bombGameCount=_fishHuntGameCount=0; - opponentItemDatas=new List(); opponentFriendItemDatas=new List(); - opponentNotFriendItemDatas=new List(); opponentFriend=new List(); - opponentFriendDic=new Dictionary(); opponentEnemy=new Dictionary>(); - opponentItemDatasPre=new List(); opponentFriendItemDatasPre=new List(); - opponentNotFriendItemDatasPre=new List(); powerData=new Dictionary(); - opponentData=null; nextOpponent=null; curEnemyType=EnemyType.Aquarium; RobotMapId=nextRobotMapId=0; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVCoreState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - _heistGameCount=state.Integer(16); _bombGameCount=state.Integer(17); _fishHuntGameCount=state.Integer(18); - } - internal bool IsOpponentEmptyForKVValidation => opponentItemDatas.Count==0 && opponentFriendItemDatas.Count==0 && - opponentNotFriendItemDatas.Count==0 && opponentFriend.Count==0 && opponentFriendDic.Count==0 && opponentEnemy.Count==0 && - opponentItemDatasPre.Count==0 && opponentFriendItemDatasPre.Count==0 && opponentNotFriendItemDatasPre.Count==0 && - powerData.Count==0 && opponentData==null && nextOpponent==null && RobotMapId==0 && nextRobotMapId==0; + + + //public UnityEngine.Vector3 image_extra_pos { set; get; } diff --git a/Client/Assets/Scripts/DataCenter/DataCenter.TriggerPackData.cs b/Client/Assets/Scripts/DataCenter/DataCenter.TriggerPackData.cs index ad7827993..945add617 100644 --- a/Client/Assets/Scripts/DataCenter/DataCenter.TriggerPackData.cs +++ b/Client/Assets/Scripts/DataCenter/DataCenter.TriggerPackData.cs @@ -1,4 +1,4 @@ -using asap.core; +using asap.core; using cfg; using game; using LitJson; @@ -55,28 +55,9 @@ namespace GameCore //VIP 等级叠加 public Dictionary giftVIPDData = new Dictionary(); - internal static game.PlayerDataStorage.PlayerKVTriggerState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => game.PlayerDataStorage.PlayerKVSaveSchema.DecodeTriggers(raw,errors); - internal void ResetForKVLoad() - { - triggerPackList=new List(); - giftVIPDData=new Dictionary(StringComparer.Ordinal); - fixedTimeShopDic=new Dictionary(); - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVTriggerState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - var packs=state.Packs.Select(p=>new TriggerPackBuyData { - ID=p.ID,index=p.index,lastID=p.lastID,vipLevel=p.vipLevel,mapID=p.mapID,time=p.time }).ToList(); - var gifts=state.Gifts.ToDictionary(p=>p.Key,p=>new GiftVIPDData { - oldVipLevel=p.Value.oldVipLevel,curVipLevel=p.Value.curVipLevel,timer=p.Value.timer },StringComparer.Ordinal); - var fixedValues=state.Fixed.ToDictionary(p=>p.Key,p=>new FixedTimeEvent { id=p.Value.id,endTime=p.Value.endTime }); - triggerPackList=packs; giftVIPDData=gifts; fixedTimeShopDic=fixedValues; - } -#if UNITY_EDITOR - internal FixedTimeEvent FixedForKVValidation(int key) => fixedTimeShopDic.TryGetValue(key,out var value) ? value : null; - internal bool IsEmptyForKVValidation => triggerPackList.Count==0 && giftVIPDData.Count==0 && fixedTimeShopDic.Count==0; -#endif + + + public void Init() { playerShopData = GContext.container.Resolve(); diff --git a/Client/Assets/Scripts/DataCenter/EventPackData.cs b/Client/Assets/Scripts/DataCenter/EventPackData.cs index f146e69d7..c3a59ff51 100644 --- a/Client/Assets/Scripts/DataCenter/EventPackData.cs +++ b/Client/Assets/Scripts/DataCenter/EventPackData.cs @@ -21,18 +21,10 @@ public class EventPackData } private Data _data; - internal static game.PlayerDataStorage.PlayerKVEventPackState DecodeForKVLoad(System.Collections.Generic.IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeEventPack(raw,snapshot,errors); - internal void ResetForKVLoad() { _data=default(Data); } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVEventPackState state) - { - if (state == null) throw new System.ArgumentNullException(nameof(state)); - _data=new Data { currentEventID=state.EventId,purchaseCount=state.PurchaseCount, - VIPLvlWhenEventActivate=state.VipLevel,redirectID=state.RedirectId }; - } - internal game.PlayerDataStorage.PlayerKVEventPackState SnapshotForKVValidation() => - new game.PlayerDataStorage.PlayerKVEventPackState(_data.currentEventID,_data.purchaseCount,_data.VIPLvlWhenEventActivate,_data.redirectID); + + + + public int CurrentEventID { get { return _data.currentEventID; } } public int PurchaseCount { get { return _data.purchaseCount; } } public int VIPLvlWhenEventActivated { get { return _data.VIPLvlWhenEventActivate; } } diff --git a/Client/Assets/Scripts/DataCenter/EventPartnerGatherManager.cs b/Client/Assets/Scripts/DataCenter/EventPartnerGatherManager.cs index cc77fb685..38ae023ac 100644 --- a/Client/Assets/Scripts/DataCenter/EventPartnerGatherManager.cs +++ b/Client/Assets/Scripts/DataCenter/EventPartnerGatherManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -104,51 +104,10 @@ namespace DataCenter private const bool EnableTraceLogs = false; public const string SaveKey = "EventPartnerGatherData"; - internal static game.PlayerDataStorage.PlayerKVPartnerState DecodeForKVLoad( - IReadOnlyDictionary raw,game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => game.PlayerDataStorage.PlayerKVSaveSchema.DecodePartner(raw,snapshot,errors); + - internal void ResetForKVLoad() - { - // Only a fresh controlled container is admitted. Never detach active gameplay work. - if(_isInit || _act!=null || _disposables!=null || _autoMatchStatusInFlight!=null || PartnerInfoManager.HasSubscriptionsForKVLoad) - throw new InvalidOperationException("Active partner module cannot enter KV load."); - var partner=new PartnerInfoManager(); - var robot=new EventPartnerGatherRobotInvitationSystem(); - GatherData=null; _isEventDataChanged=false; CurrentBuildPartner=null; - PartnerInfoManager=partner; RobotInvitationSystem=robot; - _fishingEvent=null; EventPartnerMineMainData=null; EventPartnerMineSpinPointList=null; EventPartnerMineInitData=null; - _nodeCumulativeSteps.Clear(); _nodeSteps.Clear(); _stageDropList.Clear(); StartTime=default; EndTime=default; - _isInit=false; _spinId=-1; _userGm=false; BonusPercent=0; BonusExpireDuration=0; - _dateTimeForGetEvent=default; startTime=0; delta=0; _lastAutoMatchStatusUtc=default; _cachedAutoMatchStatus=null; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVPartnerState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - if(!state.Present) { GatherData=null; return; } - GatherData=new EventPartnerGatherData - { - FirstOpen=state.FirstOpen,EventId=state.EventId,StartTime=state.StartTime,EndTime=state.EndTime, - CurrentPoints=state.CurrentPoints,CurrentMiningProgress=state.CurrentMiningProgress,Token=state.Token, - InvitedCount=state.InvitedCount,TicketCount=state.TicketCount, - CompletedNodesList=state.CompletedNodesList.Select(n=>new List(n)).ToList(), - BuilderPartnerScore=new List<(int,int)>(state.BuilderPartnerScore),PartnerBonus=(state.BonusPercent,state.BonusExpireUtc), - FreeSpinNum=state.FreeSpinNum,Bots=state.Bots.ToDictionary(p=>p.Key,p=>new EventBuildBotInfo - { Id=p.Value.Id,ScorePlayer=p.Value.ScorePlayer,ScoreBot=p.Value.ScoreBot,Grade=p.Value.Grade, - TargetScore=p.Value.TargetScore,WakeStartTime=p.Value.WakeStartTime,WakingSeconds=p.Value.WakingSeconds }), - IsRecvFinalReward=state.IsRecvFinalReward,UIFinishedPartners=new List(state.UIFinishedPartners), - IsFinished=state.IsFinished,SpinState=(ESpinState)state.SpinState,InflationRate=state.InflationRate, - IsEnableAutoMatch=state.IsEnableAutoMatch,LastAutoMatchTime=state.LastAutoMatchTime - }; - } -#if UNITY_EDITOR - internal bool RuntimeEmptyForKVValidation => !_isInit && !_isEventDataChanged && _act==null && _disposables==null && - _autoMatchStatusInFlight==null && _cachedAutoMatchStatus==null && _fishingEvent==null && CurrentBuildPartner==null && - EventPartnerMineMainData==null && EventPartnerMineSpinPointList==null && EventPartnerMineInitData==null && - _nodeCumulativeSteps.Count==0 && _nodeSteps.Count==0 && _stageDropList.Count==0 && StartTime==default && EndTime==default && - _spinId==-1 && !_userGm && BonusPercent==0 && BonusExpireDuration==0 && _dateTimeForGetEvent==default && - startTime==0 && delta==0 && _lastAutoMatchStatusUtc==default && !PartnerInfoManager.HasSubscriptionsForKVLoad; -#endif + + [Inject] public Tables _tables { get; set; } [Inject] public EventPartnerService EventPartnerService { get; set; } diff --git a/Client/Assets/Scripts/DataCenter/EventPinballDataManager.cs b/Client/Assets/Scripts/DataCenter/EventPinballDataManager.cs index 2510230a3..78462c355 100644 --- a/Client/Assets/Scripts/DataCenter/EventPinballDataManager.cs +++ b/Client/Assets/Scripts/DataCenter/EventPinballDataManager.cs @@ -450,38 +450,11 @@ namespace game #region 数据相关 private EventPinballData m_PinballData; - internal bool IsInactiveForKVValidation => m_Tables==null && m_TbEventPinballMain==null && m_TbEventPinballPoint==null && - m_TbEventPinballReward==null && m_UIPanel==null && m_InfoPanel==null && m_RewardList.Count==0 && - m_PointWeightList.Count==0 && !m_IsSimulatorMode && !m_IsMultipleMax && m_CumulativeResponseNumber==0 && - m_AccumulatedTriggerCount==0 && m_TemporaryScore==0 && m_TemporaryConsumedToken==0 && m_MagnificationListIndex==0 && m_BonusResponseNumber==10; - internal static game.PlayerDataStorage.PlayerKVPinballState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodePinball(raw,snapshot,errors); - internal void ResetForKVLoad() - { - m_PinballData=null; m_BonusResponseNumber=10; m_CumulativeResponseNumber=m_AccumulatedTriggerCount=m_TemporaryScore=m_TemporaryConsumedToken=m_MagnificationListIndex=0; - m_IsMultipleMax=false; m_IsSimulatorMode=false; m_RewardList=new List(); m_PointWeightList=new List(); m_UIPanel=m_InfoPanel=null; - m_Tables=null; m_TbEventPinballMain=null; m_TbEventPinballPoint=null; m_TbEventPinballReward=null; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVPinballState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - m_PinballData=!state.IsPresent ? null : new EventPinballData - { - EventID=state.EventID, - PinballMainID=state.PinballMainID, - SpinPoint=state.SpinPoint, - Scores=state.Scores, - Multiple=state.Multiple, - Token=state.Token, - ConsumedToken=state.ConsumedToken, - RewardIndex=state.RewardIndex, - Force=state.Force, - LuckyValue=state.LuckyValue, - InflationRate=state.InflationRate - }; - } + + + + public EventPinballData PinballData { get { return m_PinballData; } } public int RewardMaxIndex { diff --git a/Client/Assets/Scripts/DataCenter/EventPotionDataManager.cs b/Client/Assets/Scripts/DataCenter/EventPotionDataManager.cs index d58015968..2d87cd241 100644 --- a/Client/Assets/Scripts/DataCenter/EventPotionDataManager.cs +++ b/Client/Assets/Scripts/DataCenter/EventPotionDataManager.cs @@ -127,54 +127,11 @@ namespace game #region 数据相关 private EventPotionData m_PotionData; - internal static PlayerDataStorage.PlayerKVPotionState DecodeForKVLoad(IReadOnlyDictionary raw, - PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => PlayerDataStorage.PlayerKVSaveSchema.DecodePotion(raw,errors); - internal void ResetForKVLoad() - { - m_PotionData=null; m_PendingFirstPlayedEventId=0; m_SpriteAtlas=null; m_Tables=null; - m_TbEventPotionMain=null; m_TbEventPotionStage=null; m_TbEventPotionBlock=null; m_TbEventPotionBottle=null; - m_PotionResDict=new Dictionary(); m_WallsBefore=new List(); m_WallsAfter=new List(); - m_UIPanel=m_InfoPanel=m_RewardPopupPanel=null; m_ScrollerDataList=new List(); - } - static PotionItemData MaterializeKVPotionItem(PlayerDataStorage.PlayerKVPotionItem value) => new PotionItemData { - name=value.Name,index=value.Index,isOver=value.IsOver,DataType=(EventPotionDataType)value.DataType, - ColorTypeList=new List(value.Colors),ShelfTypeList=value.Shelves.Select(n=>(EventPotionShelfType)n).ToList(), - GridStateList=value.Grids.Select(n=>(EventPotionGridState)n).ToList(),FromDisplayAreaIndexList=new List(value.FromDisplay) - }; - internal void ReplaceFromKVDecoded(PlayerDataStorage.PlayerKVPotionState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - m_PotionData=!state.IsPresent ? null : new EventPotionData { - EventID=state.EventID, - PotionID=state.PotionID, - StageID=state.StageID, - Stage1TotalLevel=state.Stage1TotalLevel, - Stage2TotalLevel=state.Stage2TotalLevel, - LevelID=state.LevelID, - LevelIndex=state.LevelIndex, - CorrectNum=state.CorrectNum, - SubmitNum=state.SubmitNum, - Token=state.Token, - ConsumedToken=state.ConsumedToken, - Rule=state.Rule, - PreEventID=state.PreEventID, - PrePotionID=state.PrePotionID, - PreStageID=state.PreStageID, - PreLevelID=state.PreLevelID, - Round=state.Round, - FirstPlayedEventId=state.FirstPlayedEventId, - IsOver=state.IsOver, - Name=state.Name, - InflationRate=state.InflationRate, - LevelTargetData=MaterializeKVPotionItem(state.LevelTargetData), - LevelDisplayData=MaterializeKVPotionItem(state.LevelDisplayData), - LevelProcessedList=state.LevelProcessedList.Select(MaterializeKVPotionItem).ToList() - }; - } - internal bool IsInactiveForKVValidation => m_PendingFirstPlayedEventId==0 && m_SpriteAtlas==null && m_Tables==null && - m_TbEventPotionMain==null && m_TbEventPotionStage==null && m_TbEventPotionBlock==null && m_TbEventPotionBottle==null && - m_PotionResDict.Count==0 && m_WallsBefore.Count==0 && m_WallsAfter.Count==0 && m_ScrollerDataList.Count==0 && - m_UIPanel==null && m_InfoPanel==null && m_RewardPopupPanel==null; + + + + + public EventPotionData PotionData { get { return m_PotionData; } } public void InitLevel() diff --git a/Client/Assets/Scripts/DataCenter/EventScratchTicketDataManager.cs b/Client/Assets/Scripts/DataCenter/EventScratchTicketDataManager.cs index 6e675e89f..89bfe10ef 100644 --- a/Client/Assets/Scripts/DataCenter/EventScratchTicketDataManager.cs +++ b/Client/Assets/Scripts/DataCenter/EventScratchTicketDataManager.cs @@ -95,45 +95,11 @@ namespace game #region 数据相关 private EventScratchTicketData m_ScratchTicketData; - internal bool IsInactiveForKVValidation => m_Tables==null && m_TbEventScratchMain==null && m_TbEventScratchCard==null && - m_TbEventScratchReward==null && m_ChainPackData==null && m_NormalPackData==null && m_SpriteAtlas==null && m_SpriteDict==null && - m_UIPanel==null && m_InfoPanel==null && m_RewardPanel==null && m_ChainPackPanel==null && m_PackPanel==null && - m_RecordList.Count==0 && m_PointWeightList.Count==0 && m_ScratchStampList.Count==0 && - TempRecordRewardTaskID==0 && TempRecordRewardTaskConsumedToken==0; - internal static game.PlayerDataStorage.PlayerKVScratchState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeScratch(raw,snapshot,errors); - internal void ResetForKVLoad() - { - m_ScratchTicketData=null; TempRecordRewardTaskID=TempRecordRewardTaskConsumedToken=0; m_RecordList=new List(); - m_PointWeightList=new List(); m_ScratchStampList=new List(); m_ChainPackData=null; m_NormalPackData=null; - m_UIPanel=m_InfoPanel=m_RewardPanel=m_ChainPackPanel=m_PackPanel=null; m_SpriteAtlas=null; m_SpriteDict=null; - m_Tables=null; m_TbEventScratchMain=null; m_TbEventScratchCard=null; m_TbEventScratchReward=null; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVScratchState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - m_ScratchTicketData=!state.IsPresent ? null : new EventScratchTicketData - { - EventID=state.EventID, - ScratchMainID=state.ScratchMainID, - ChainPackID=state.ChainPackID, - Token=state.Token, - ConsumedToken=state.ConsumedToken, - RewardTaskConsumedToken=state.RewardTaskConsumedToken, - EventScratchRewardTaskID=state.EventScratchRewardTaskID, - EventScratchCardID=state.EventScratchCardID, - TotalConsumedToken=state.TotalConsumedToken, - ChainPackProgress=state.ChainPackProgress, - magIndex=state.magIndex, - IsOver=state.IsOver, - LuckyValue=state.LuckyValue, - InflationRate=state.InflationRate, - StampRewardList=new List(state.StampRewardList), - StampRewardDict=state.StampRewardDict.ToDictionary(p=>p.Key,p=>new EventScratchTicketOwnedStampRewardData { EventScratchCardID=p.Value.EventScratchCardID,Count=p.Value.Count }) - }; - } + + + + public EventScratchTicketData ScratchTicketData { get { return m_ScratchTicketData; } } public EventScratchMain GetFreshScratchTicketData() { diff --git a/Client/Assets/Scripts/DataCenter/FishingBoxData.cs b/Client/Assets/Scripts/DataCenter/FishingBoxData.cs index 3d6af2e18..b31fb1a8d 100644 --- a/Client/Assets/Scripts/DataCenter/FishingBoxData.cs +++ b/Client/Assets/Scripts/DataCenter/FishingBoxData.cs @@ -13,19 +13,9 @@ public class FishingBoxData public Dictionary FishingNewBoxs = new(); public Dictionary FishingBoxOpenNum = new(); - internal static game.PlayerDataStorage.PlayerKVIntMapState DecodeForKVLoad(IReadOnlyDictionary raw, - IReadOnlyDictionary modern, game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeFishingBox(raw,modern,errors); - internal void ResetForKVLoad() - { - FishingNewBoxs = new Dictionary(); - FishingBoxOpenNum = new Dictionary(); - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVIntMapState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - FishingBoxOpenNum = state.Values.ToDictionary(p=>p.Key,p=>p.Value); - } + + + public void InitData(string data) { diff --git a/Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs b/Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs index 63d91899a..aadaeb62a 100644 --- a/Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs +++ b/Client/Assets/Scripts/DataCenter/FishingChallengeManager.cs @@ -1,4 +1,4 @@ -using asap.core; +using asap.core; using cfg; using game; using GameCore; @@ -63,44 +63,11 @@ public class FishingChallengeManager private DateTime EndTime; // public FishingChallengeData fishingChallengeData { get; private set; } - internal bool IsInactiveForKVValidation => !IsInit && CurFishingEventData==null && eventChallengeMain==null && - eventChallengeConfig==null && challengeMapData==null && _stageDropList.Count==0 && _eliminateListScore.Count==0; - internal static game.PlayerDataStorage.PlayerKVChallengeState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeChallenge(raw,snapshot,errors); - internal void ResetForKVLoad() - { - fishingChallengeData=null; IsInit=false; PrefabName=null; -#if UNITY_EDITOR - _cheatingScore=0; -#endif - TopRankTier=Rank=FullStep=PlayerFullNumber=PreScore=0; - CurFishingEventData=null; StartTime=EndTime=default; eventChallengeMain=null; eventChallengeConfig=null; challengeMapData=null; itemDataList=null; - _stageDropList.Clear(); _eliminateListScore.Clear(); _eventTrackStageList=new List(); _eventTrackNormalRewardList=new List(); InVisibleReason=string.Empty; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVChallengeState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - fishingChallengeData=!state.IsPresent || state.IsExplicitNull ? null : new FishingChallengeData - { - FirstOpen=state.FirstOpen, - EventId=state.EventId, - RankTierLevel=state.RankTierLevel, - Finished=state.Finished, - RedirectID=state.RedirectID, - Score=state.Score, - ProcessedScore=state.ProcessedScore, - step=state.step, - uiStep=state.uiStep, - index=state.index, - StartTime=state.StartTime, - EndTime=state.EndTime, - eliminateNumber=new List(state.eliminateNumber), - robotAccountList=new List(state.robotAccountList), - InflationRate=state.InflationRate - }; - } + + + + public EventChallengeMain eventChallengeMain { get; private set; } public EventChallengeConfig eventChallengeConfig { get; private set; } public MapData challengeMapData { get; private set; } diff --git a/Client/Assets/Scripts/DataCenter/OfferChainsChestManager.cs b/Client/Assets/Scripts/DataCenter/OfferChainsChestManager.cs index e21d41220..d759af2ce 100644 --- a/Client/Assets/Scripts/DataCenter/OfferChainsChestManager.cs +++ b/Client/Assets/Scripts/DataCenter/OfferChainsChestManager.cs @@ -53,27 +53,10 @@ namespace DataCenter // 当前可保存数据 public TOfferChainsData OfferChainsData { get; private set; } - internal static game.PlayerDataStorage.PlayerKVOfferState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeOffer(raw,false,snapshot,errors); - internal void ResetForKVLoad() - { - OfferChainsData=null; ValidIds=new List(); _fishingEvent=null; _isInit=false; - OfferChainsChestMain=null; OfferChainsChestRewards=null; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVOfferState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - OfferChainsData=!state.IsPresent ? null : new TOfferChainsData - { - FirstOpen=state.FirstOpen,EventId=state.EventId,StartTime=state.StartTime,EndTime=state.EndTime, - ItemId=state.ItemId,LotteryNum=state.LotteryNum, - Items=state.Items.Select(item=>new TOfferChainsData.TItem { - Id=item.Id,Item=item.Item,Number=item.Number,Status=item.Status }).ToList(), - RewardList=new List(state.RewardList),Finished=state.Finished,ChestReward=state.ChestReward - }; - } - internal bool IsInactiveForKVValidation => !_isInit && _fishingEvent == null; + + + + public List ValidIds; public bool IsFirstOpen diff --git a/Client/Assets/Scripts/DataCenter/OfferDiscoPartyManager.cs b/Client/Assets/Scripts/DataCenter/OfferDiscoPartyManager.cs index 595bd3e30..b48f543dd 100644 --- a/Client/Assets/Scripts/DataCenter/OfferDiscoPartyManager.cs +++ b/Client/Assets/Scripts/DataCenter/OfferDiscoPartyManager.cs @@ -62,27 +62,10 @@ namespace DataCenter public TOfferDiscoPartyData OfferDiscoPartyData { get; private set; } - internal static game.PlayerDataStorage.PlayerKVOfferState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeOffer(raw,true,snapshot,errors); - internal void ResetForKVLoad() - { - OfferDiscoPartyData=null; ValidIds=new List(); _fishingEvent=null; _isInit=false; - OfferDiscoParty=null; OfferDiscoPartyRewards=null; FreeTime=1; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVOfferState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - OfferDiscoPartyData=!state.IsPresent ? null : new TOfferDiscoPartyData - { - FirstOpen=state.FirstOpen,EventId=state.EventId,StartTime=state.StartTime,EndTime=state.EndTime, - ItemId=state.ItemId,LotteryNum=state.LotteryNum, - Items=state.Items.Select(item=>new TOfferDiscoPartyData.TItem { - Id=item.Id,Item=item.Item,Number=item.Number,Status=(TItemStatues) item.Status }).ToList(), - RewardList=new List(state.RewardList) - }; - } - internal bool IsInactiveForKVValidation => !_isInit && _fishingEvent == null; + + + + public List ValidIds; // diff --git a/Client/Assets/Scripts/DataCenter/PiggyBankPackData.cs b/Client/Assets/Scripts/DataCenter/PiggyBankPackData.cs index b3cd6df1e..f72b7aa9f 100644 --- a/Client/Assets/Scripts/DataCenter/PiggyBankPackData.cs +++ b/Client/Assets/Scripts/DataCenter/PiggyBankPackData.cs @@ -36,38 +36,13 @@ public class PiggyBankPackData } private Data _data; - private bool _kvLoadPresent; - internal bool KVLoadPresent => _kvLoadPresent; - internal static game.PlayerDataStorage.PlayerKVPiggyBankState DecodeForKVLoad( - IReadOnlyDictionary raw, game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodePiggyBank(raw, snapshot, errors); + + + - internal void ResetForKVLoad() - { - _kvLoadPresent = false; - _data = default(Data); - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVPiggyBankState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - if (!state.IsPresent) { ResetForKVLoad(); return; } - var replacement = new Data - { - currentEventID = state.currentEventID, - purchaseCount = state.purchaseCount, - VIPLvlWhenEventActivate = state.VIPLvlWhenEventActivate, - savingProgress = state.savingProgress, - redirectID = state.redirectID, - doNeedTrigger = state.doNeedTrigger, - isTriggered = state.isTriggered, - inflation = state.inflation, - }; - _data = replacement; - _kvLoadPresent = true; - } - internal game.PlayerDataStorage.PlayerKVPiggyBankState SnapshotForKVValidation() => - new game.PlayerDataStorage.PlayerKVPiggyBankState(_kvLoadPresent, _data.currentEventID, _data.purchaseCount, _data.VIPLvlWhenEventActivate, _data.savingProgress, _data.redirectID, _data.doNeedTrigger, _data.isTriggered, _data.inflation); + + + public bool IsWithinEventTime { get diff --git a/Client/Assets/Scripts/DebugFunc.cs b/Client/Assets/Scripts/DebugFunc.cs index 8ba5db7bf..85f8469cb 100644 --- a/Client/Assets/Scripts/DebugFunc.cs +++ b/Client/Assets/Scripts/DebugFunc.cs @@ -473,20 +473,28 @@ public class DebugFunc private static void LoginTime(int hours) { - var userService = GContext.container.Resolve() as game.PlayFabUserService; - if (userService == null) return; + var userService = GContext.container.Resolve(); + if (userService is not game.PlayFabUserService && userService is not game.KVUserService) + { + return; + } var loginTime = userService.LoginTime; var newLoginTime = loginTime.AddHours(hours); - var prop = userService.GetType().GetProperty("LoginTime"); + var prop = userService is game.KVUserService + ? typeof(game.KVUserService).GetProperty("LoginTime") + : userService.GetType().GetProperty("LoginTime"); prop.SetValue(userService, newLoginTime); Debug.Log($"loginTime: {loginTime} newLoginTime: {newLoginTime} prop: {userService.LoginTime}"); } private static void AccoutInfo() { - var userService = GContext.container.Resolve() as game.PlayFabUserService; - if (userService == null) return; + var userService = GContext.container.Resolve(); + if (userService is not game.PlayFabUserService && userService is not game.KVUserService) + { + return; + } Debug.Log($"pfid: {userService.UserId} tyid: {userService.CustomId} lastLogin: {userService.LoginTime}"); if (PlayerPrefs.HasKey("KEY_ACCOUNT_INFO")) diff --git a/Client/Assets/Scripts/Duel/UI/EventFishingDuelPanel.cs b/Client/Assets/Scripts/Duel/UI/EventFishingDuelPanel.cs index a05cc5382..1f8fd8960 100644 --- a/Client/Assets/Scripts/Duel/UI/EventFishingDuelPanel.cs +++ b/Client/Assets/Scripts/Duel/UI/EventFishingDuelPanel.cs @@ -607,7 +607,8 @@ public class EventFishingDuelPanel : BasePanel } void CreateMatchmakingTicket() { - if (GContext.container.Resolve() is not PlayFabUserService) + if (GContext.container.Resolve() is not PlayFabUserService && + GContext.container.Resolve() is not KVUserService) { Debug.LogWarning("KV matchmaking service is not connected."); FDM.MachingEnd(null); @@ -631,46 +632,58 @@ public class EventFishingDuelPanel : BasePanel IUserService userService = GContext.container.Resolve(); List Group = FDM.GetGroups(); string details = GetDetails(); - var request = new CreateMatchmakingTicketRequest + var attributes = new { - Creator = new MatchmakingPlayer - { - Entity = new EntityKey - { - Id = ((PlayFabUserService)userService).entityKey.Id, - Type = ((PlayFabUserService)userService).entityKey.Type - }, - Attributes = new MatchmakingPlayerAttributes - { - DataObject = new - { - Tier = matchTierListStr.ToArray(), - Map = mapIDsStr.ToArray(), - Group = Group.ToArray(), - Details = details, - } - } - }, - GiveUpAfterSeconds = MaxMatchTime, - QueueName = FishingDuelManager.QueueName // 需要根据实际的匹配队列名称修改 + Tier = matchTierListStr.ToArray(), + Map = mapIDsStr.ToArray(), + Group = Group.ToArray(), + Details = details, }; - - PlayFabMultiplayerAPI.CreateMatchmakingTicket(request, - (result) => + Action success = (result) => + { + currentTicketId = result.TicketId; + Debug.Log("匹配请求已创建,等待匹配..."); + Debug.Log("匹配Ticket ID: " + result.TicketId); + //// 开始轮询匹配状态 + StartCoroutine(CheckMatchmakingStatus()); + //显示取消按钮 + but_stop.gameObject.SetActive(true); + }; + Action failure = (error) => + { + Debug.LogError("创建匹配请求失败: " + error); + FDM.MachingEnd(null); + }; + if (userService is KVUserService) + { + RequestKVMatch("CreateMatchmakingTicket", new { - currentTicketId = result.TicketId; - Debug.Log("匹配请求已创建,等待匹配..."); - Debug.Log("匹配Ticket ID: " + result.TicketId); - //// 开始轮询匹配状态 - StartCoroutine(CheckMatchmakingStatus()); - //显示取消按钮 - but_stop.gameObject.SetActive(true); - }, - (error) => + queueName = FishingDuelManager.QueueName, + giveUpAfterSeconds = MaxMatchTime, + attributes + }, response => response.ToObject(), success, failure); + } + else + { + var request = new CreateMatchmakingTicketRequest { - Debug.LogError("创建匹配请求失败: " + error.GenerateErrorReport()); - FDM.MachingEnd(null); - }); + Creator = new MatchmakingPlayer + { + Entity = new EntityKey + { + Id = ((PlayFabUserService)userService).entityKey.Id, + Type = ((PlayFabUserService)userService).entityKey.Type + }, + Attributes = new MatchmakingPlayerAttributes + { + DataObject = attributes + } + }, + GiveUpAfterSeconds = MaxMatchTime, + QueueName = FishingDuelManager.QueueName + }; + PlayFabMultiplayerAPI.CreateMatchmakingTicket(request, success, error => failure(error.GenerateErrorReport())); + } } IEnumerator CheckMatchmakingStatus() @@ -680,7 +693,9 @@ public class EventFishingDuelPanel : BasePanel yield return new WaitForSeconds(3f); if (string.IsNullOrEmpty(currentTicketId)) + { yield break; + } var request = new GetMatchmakingTicketRequest { @@ -689,41 +704,53 @@ public class EventFishingDuelPanel : BasePanel EscapeObject = false }; - PlayFabMultiplayerAPI.GetMatchmakingTicket(request, - (result) => + Action success = (result) => + { + string statusInfo = "匹配状态: " + result.Status; + if (result.MatchId != null) { - string statusInfo = "匹配状态: " + result.Status; - if (result.MatchId != null) - { - statusInfo += ", Match ID: " + result.MatchId; - } - Debug.Log(statusInfo.ToString()); + statusInfo += ", Match ID: " + result.MatchId; + } + Debug.Log(statusInfo.ToString()); - if (result.Status == "Matched") - { - but_stop.gameObject.SetActive(false); - Debug.Log("匹配成功,获取服务器信息: "); - GetMatchDetails(result.MatchId); - } - else if (result.Status == "Canceled") - { - Debug.Log("匹配已取消: Canceled " + result.CancellationReasonString); - //if (result.CancellationReasonString != "Requested") - //{ - MachingEnd(); - //} - } - }, - (error) => + if (result.Status == "Matched") { - Debug.LogError("检查匹配状态失败: " + error.GenerateErrorReport()); + but_stop.gameObject.SetActive(false); + Debug.Log("匹配成功,获取服务器信息: "); + GetMatchDetails(result.MatchId); + } + else if (result.Status == "Canceled") + { + Debug.Log("匹配已取消: Canceled " + result.CancellationReasonString); + //if (result.CancellationReasonString != "Requested") + //{ MachingEnd(); - }); + //} + } + }; + Action failure = (error) => + { + Debug.LogError("检查匹配状态失败: " + error); + MachingEnd(); + }; + if (GContext.container.Resolve() is KVUserService) + { + RequestKVMatch("GetMatchmakingTicket", new + { + queueName = request.QueueName, + ticketId = request.TicketId + }, response => response.ToObject(), success, failure); + } + else + { + PlayFabMultiplayerAPI.GetMatchmakingTicket(request, success, error => failure(error.GenerateErrorReport())); + } } } void GetMatchDetails(string matchId) { - if (GContext.container.Resolve() is not PlayFabUserService) + if (GContext.container.Resolve() is not PlayFabUserService && + GContext.container.Resolve() is not KVUserService) { Debug.LogWarning("KV matchmaking service is not connected."); FDM.MachingEnd(null); @@ -737,52 +764,63 @@ public class EventFishingDuelPanel : BasePanel ReturnMemberAttributes = true }; - PlayFabMultiplayerAPI.GetMatch(request, - (result) => + Action success = (result) => + { + Debug.Log("匹配成功: " + result.MatchId); + if (string.IsNullOrEmpty(currentTicketId)) { - Debug.Log("匹配成功: " + result.MatchId); - if (string.IsNullOrEmpty(currentTicketId)) + return; + } + // 添加玩家信息 + if (result.Members != null && result.Members.Count > 0) + { + //AddMatchmakingLog("玩家数量: " + result.Members.Count); + IUserService userService = GContext.container.Resolve(); + MatchDetails matchDetails = null; + int[] mapArray = null; + try { - return; - } - // 添加玩家信息 - if (result.Members != null && result.Members.Count > 0) - { - //AddMatchmakingLog("玩家数量: " + result.Members.Count); - IUserService userService = GContext.container.Resolve(); - MatchDetails matchDetails = null; - int[] mapArray = null; - try + for (int i = 0; i < result.Members.Count; i++) { - for (int i = 0; i < result.Members.Count; i++) + MatchmakingPlayerWithTeamAssignment member = result.Members[i]; + if (member.Entity.Id != (userService is KVUserService ? userService.UserId : ((PlayFabUserService)userService).entityKey.Id)) { - MatchmakingPlayerWithTeamAssignment member = result.Members[i]; - if (member.Entity.Id != ((PlayFabUserService)userService).entityKey.Id) - { - JObject dataObject = JObject.FromObject(result.Members[i].Attributes.DataObject); - string[] tierArray = dataObject["Tier"].ToObject(); - mapArray = dataObject["Map"].ToObject(); - string matchDetailsStr = dataObject["Details"].ToString(); - matchDetails = Newtonsoft.Json.JsonConvert.DeserializeObject(matchDetailsStr); - break; - } + JObject dataObject = JObject.FromObject(result.Members[i].Attributes.DataObject); + string[] tierArray = dataObject["Tier"].ToObject(); + mapArray = dataObject["Map"].ToObject(); + string matchDetailsStr = dataObject["Details"].ToString(); + matchDetails = Newtonsoft.Json.JsonConvert.DeserializeObject(matchDetailsStr); + break; } } - catch - { - matchDetails = null; - mapArray = null; - } - currentTicketId = null; - FDM.MachingEnd(result.MatchId, matchDetails, mapArray); - StartCoroutine(CheckReady()); } - }, - (error) => + catch + { + matchDetails = null; + mapArray = null; + } + currentTicketId = null; + FDM.MachingEnd(result.MatchId, matchDetails, mapArray); + StartCoroutine(CheckReady()); + } + }; + Action failure = (error) => + { + Debug.LogError("获取匹配详情失败: " + error); + MachingEnd(); + }; + if (GContext.container.Resolve() is KVUserService) + { + RequestKVMatch("GetMatch", new { - Debug.LogError("获取匹配详情失败: " + error.GenerateErrorReport()); - MachingEnd(); - }); + queueName = request.QueueName, + matchId = request.MatchId + }, ReadKVMatch, success, failure); + } + else + { + PlayFabMultiplayerAPI.GetMatch(request, success, error => failure(error.GenerateErrorReport())); + } } IEnumerator CheckReady() { @@ -806,7 +844,9 @@ public class EventFishingDuelPanel : BasePanel void CancelMatchmaking() { if (string.IsNullOrEmpty(currentTicketId)) + { return; + } but_stop.gameObject.SetActive(false); var request = new CancelMatchmakingTicketRequest { @@ -814,15 +854,98 @@ public class EventFishingDuelPanel : BasePanel QueueName = FishingDuelManager.QueueName // 需要根据实际的匹配队列名称修改 }; currentTicketId = null; - PlayFabMultiplayerAPI.CancelMatchmakingTicket(request, - (result) => + Action success = (result) => + { + Debug.Log("匹配已取消: "); + }; + Action failure = (error) => + { + Debug.LogError("取消匹配失败: " + error); + }; + if (GContext.container.Resolve() is KVUserService) + { + RequestKVMatch("CancelMatchmakingTicket", new { - Debug.Log("匹配已取消: "); - }, - (error) => + queueName = request.QueueName, + ticketId = request.TicketId + }, response => response.ToObject(), success, failure); + } + else + { + PlayFabMultiplayerAPI.CancelMatchmakingTicket(request, success, error => failure(error.GenerateErrorReport())); + } + } + + private static async void RequestKVMatch(string action, object request, Func parse, + Action success, Action failure) + { + string body = await GContext.container.Resolve().CustomServerPost("matchmaking/" + action, + Newtonsoft.Json.JsonConvert.SerializeObject(request)); + T result = default; + string error = "KV matchmaking request failed"; + bool accepted = false; + try + { + if (!string.IsNullOrEmpty(body)) { - Debug.LogError("取消匹配失败: " + error.GenerateErrorReport()); + var response = Newtonsoft.Json.JsonConvert.DeserializeObject(body); + if (response != null && response["code"]?.ToObject(Newtonsoft.Json.JsonSerializer.CreateDefault()) == 1) + { + result = parse(response); + accepted = true; + } + } + } + catch (Newtonsoft.Json.JsonException ex) + { + error = "KV matchmaking response: " + ex.GetType().Name; + } + if (accepted) + { + success(result); + } + else + { + failure(error); + } + } + + private static GetMatchResult ReadKVMatch(JObject response) + { + var result = new GetMatchResult + { + MatchId = response["matchId"]?.ToObject() + }; + var members = response["members"]; + if (members == null || members.Type == JTokenType.Null) + { + return result; + } + if (members is not JArray array) + { + throw new Newtonsoft.Json.JsonSerializationException("Invalid match members."); + } + result.Members = new List(); + foreach (var token in array) + { + if (token is not JObject member || member["playerId"]?.Type != JTokenType.String || + member["attributes"] is not JObject attributes) + { + throw new Newtonsoft.Json.JsonSerializationException("Invalid match member."); + } + result.Members.Add(new MatchmakingPlayerWithTeamAssignment + { + Entity = new EntityKey + { + Id = member["playerId"].ToObject() + }, + Attributes = new MatchmakingPlayerAttributes + { + DataObject = attributes + } }); + } + return result; } #endregion Matchmaking diff --git a/Client/Assets/Scripts/EventCubeMelt/Data/EventCubeMeltManager.cs b/Client/Assets/Scripts/EventCubeMelt/Data/EventCubeMeltManager.cs index 2a4993774..87605d425 100644 --- a/Client/Assets/Scripts/EventCubeMelt/Data/EventCubeMeltManager.cs +++ b/Client/Assets/Scripts/EventCubeMelt/Data/EventCubeMeltManager.cs @@ -1,4 +1,4 @@ -// EventCubeMeltManager.cs +// EventCubeMeltManager.cs // 锻刀大赛 using System; @@ -171,33 +171,10 @@ public class EventCubeMeltManager public EventCubeMeltData EventData { get; private set; } - internal static game.PlayerDataStorage.PlayerKVCubeState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeCube(raw,snapshot,errors); - internal void ResetForKVLoad() - { - EventData=null; _isInit=false; _fishingEvent=null; - EventCubeMeltMainData=null; EventCubeMeltConfig=null; EventCubeMeltStageData=null; EventCubeMeltCollectionData=null; - EventCubeMeltPieces=null; EventCubeMeltPieceItems=new List(); EventCubeMeltItems=null; EventCubeMeltCollections=null; - EventStageList=null; StageCount=0; StartTime=EndTime=default; CurrentPieceItems=new List(); _pieceDimension=default; - PrevData=null; NextData=null; PrevBoardData=null; PrevPieceDatas=null; CurrentBoardData=null; CurrentPieceDatas=null; GuideIndex=0; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVCubeState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - EventData=!state.IsPresent ? null : new EventCubeMeltData { - TicketCount=state.TicketCount,FirstOpen=state.FirstOpen,IsFinished=state.IsFinished,EventId=state.EventId, - IsInGuide=state.IsInGuide,StartTime=state.StartTime,EndTime=state.EndTime,CurrentStagetId=state.CurrentStagetId, - CollectItems=state.CollectItems.Select(p=>new CollectItem { ItemId=p.ItemId,Count=p.Count,MaxCount=p.MaxCount,ItemTrueId=p.ItemTrueId }).ToList(), - BoardData=new List(state.BoardData),BoardViewSize=new Vector2Int(state.Width,state.Height), - CollectRewardsId=new List(state.CollectRewardsId),IsFinalRewardGet=state.IsFinalRewardGet, - PieceDatas=state.PieceDatas.Select(p=>new List(p)).ToList(),Cycle=state.Cycle,InflationRate=state.InflationRate - }; - } - internal bool IsInactiveForKVValidation => !_isInit && _fishingEvent==null && EventCubeMeltMainData==null && - EventCubeMeltStageData==null && EventCubeMeltCollectionData==null && EventCubeMeltPieces==null && - EventCubeMeltPieceItems.Count==0 && CurrentPieceItems.Count==0 && PrevData==null && NextData==null && - PrevBoardData==null && CurrentBoardData==null && PrevPieceDatas==null && CurrentPieceDatas==null; + + + + public FishingEvent FishingEvent {get => _fishingEvent;set => _fishingEvent = value;} diff --git a/Client/Assets/Scripts/GampPlay/FishingB/FishingBehaviorB.cs b/Client/Assets/Scripts/GampPlay/FishingB/FishingBehaviorB.cs index d698a05ad..2837eaac7 100644 --- a/Client/Assets/Scripts/GampPlay/FishingB/FishingBehaviorB.cs +++ b/Client/Assets/Scripts/GampPlay/FishingB/FishingBehaviorB.cs @@ -7,7 +7,6 @@ using GameCore; using System; using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; using UniRx; using UnityEngine; @@ -25,52 +24,6 @@ public class ShowHandEvent [DefaultExecutionOrder(10000)] public partial class FishingBehaviorB : MonoBehaviour { -#if UNITY_EDITOR && !SERVICE_HOST - game.PlayerDataStorage.PlayerKVGameplayLoop.FishingAction kvFishingAction; - bool KVFishingCurrent() - { - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) return true; - return this!=null && isActiveAndEnabled && game.PlayerDataStorage.PlayerKVGameplayLoop.FishingCurrent(kvFishingAction); - } - void CancelKVFishing(string reason) => game.PlayerDataStorage.PlayerKVGameplayLoop.CancelFishing(kvFishingAction,reason); - void TrackKVCastTween(Tween tween) - { - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) return; - var action=kvFishingAction; - bool completed=false; - tween.onComplete+=()=>completed=true; - tween.onKill+=()=> { if(!completed) game.PlayerDataStorage.PlayerKVGameplayLoop.CancelFishing(action,"cast tween killed"); }; - } - async Task ConsumeBaitOnKVAsync() - { - try - { - if(!KVFishingCurrent()) return; - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.ClaimFishingConsumption(kvFishingAction)) return; - if(fishingData.fishItem==null || !fishingData.IsGeneralFish() || fishingData.IsFree || fishingData.IsRetry || - fishingData.IsDuel || fishingData.IsPackItemFish() || fishingData.curFishData==null) - throw game.PlayerDataStorage.PlayerKVGameplayLoop.Stop("Only one ordinary paid fishing action is permitted. fishItem.ID="+(fishingData.fishItem==null?"null":fishingData.fishItem.ID.ToString())+", fishItem.SubType="+(fishingData.fishItem==null?"null":fishingData.fishItem.SubType.ToString())+", curFishData.ID="+(fishingData.curFishData==null?"null":fishingData.curFishData.ID.ToString())+", IsFree="+fishingData.IsFree+", IsRetry="+fishingData.IsRetry+", IsDuel="+fishingData.IsDuel); - if(Application.internetReachability==NetworkReachability.NotReachable) - throw game.PlayerDataStorage.PlayerKVGameplayLoop.Stop("Fishing stopped before consumption: offline."); - if(_tables.TbFishingEvent.DataList.Any(e=>e.ConditionList.Any(c=>c.Condition==ConditionType.ConsumeEnergy))) - throw game.PlayerDataStorage.PlayerKVGameplayLoop.Stop("ConsumeEnergy activity activation requires separate review."); - var player=GContext.container.Resolve(); - int mag=player.magnification; - if(mag<0 || mag>=_tables.TbEnergyDef.DataList.Count) - throw game.PlayerDataStorage.PlayerKVGameplayLoop.Stop("Invalid fishing magnification."); - int fish=fishingData.curFishData.ID, rod=fishingData.RodId, map=player.lastMapId; - int cost=_tables.TbEnergyDef.DataList[mag].Mag; - game.PlayerDataStorage.PlayerKVGameplayLoop.PrepareFishingReward(kvFishingAction,fishingData); - await player.ConsumeEnergyForKVLoopAsync(cost,kvFishingAction); - if(!KVFishingCurrent()) return; - if(fishingData.curFishData==null || fishingData.curFishData.ID!=fish || fishingData.RodId!=rod || - player.lastMapId!=map || (int)player.magnification!=mag || fishingData.IsFree || fishingData.IsRetry || fishingData.IsDuel) - throw game.PlayerDataStorage.PlayerKVGameplayLoop.Stop("Fishing context changed during confirmation."); - game.PlayerDataStorage.PlayerKVGameplayLoop.ContinueFishing(kvFishingAction,WaitForFishBiteED); - } - catch(Exception e) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault(e.Message); } - } -#endif IPlayerSaveStore saveStore; Tables _tables; [Header("RELATED OBJECT SETTINGS")] @@ -762,25 +715,9 @@ public partial class FishingBehaviorB : MonoBehaviour //开始抛鱼线 public async void CastLineBehavior() { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) - { - try - { - var action=game.PlayerDataStorage.PlayerKVGameplayLoop.BeginFishing(this); - if(action==null) return; - kvFishingAction=action; - if(!KVFishingCurrent()) return; - } - catch(Exception e) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault(e.Message); return; } - } -#endif //计算主画布分辨率下的宽高和屏幕的宽高的比列: fishingData.mainCamera.DOLocalRotateQuaternion(Quaternion.identity, 0.1f); await Awaiters.NextFrame; -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) return; -#endif CastBait(); //播放抛竿动画 @@ -791,18 +728,12 @@ public partial class FishingBehaviorB : MonoBehaviour rodHandleAni.SetBool("_idle", false); rodHandleAni.SetTrigger("_drawing"); await Awaiters.Seconds(fishingBehaviorConf.audioDelay); -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) return; -#endif GContext.Publish(new EventFishingSound(SoundType.ThrowingAudio)); GContext.Publish(new VibrationData(1)); } private void ConsumeBait() { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) { _=ConsumeBaitOnKVAsync(); return; } -#endif if (fishingData.IsFree) { WaitForFishBiteED(); @@ -855,8 +786,8 @@ public partial class FishingBehaviorB : MonoBehaviour { GContext.Publish(new ConditionTypeEvent(ConditionType.ConsumeEnergy, energy)); } - var success = (await saveStore.WriteAndConfirmAsync("NewPlayerDataDic", - Newtonsoft.Json.JsonConvert.SerializeObject(commonDatas))).Confirmed; + var success = await saveStore.SyncDataImmidiate("NewPlayerDataDic", + Newtonsoft.Json.JsonConvert.SerializeObject(commonDatas)); Debug.Log($"[FishBehaviourB::ConsumeBaitOnPlayfab] {success}"); } @@ -1004,9 +935,6 @@ public partial class FishingBehaviorB : MonoBehaviour } public void BaitMove() { -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) return; -#endif flyEndPosTrue = _bait.transform.position; GContext.Publish(new EventFishingSound(SoundType.audio_fishing_throwing_baitintowater)); @@ -1017,12 +945,9 @@ public partial class FishingBehaviorB : MonoBehaviour var fishEffect = _effectDic["fx_fishing_splashloopwaiting"]; float z = WaitingZ(); float timer = Mathf.Lerp(fishingBehaviorConf.waitingLineDrawMinTime, fishingBehaviorConf.waitingLineDrawMaxTime, Random.value); - var waitingTween=_bait.transform.DOLocalMoveZ(z, timer).OnUpdate( + _bait.transform.DOLocalMoveZ(z, timer).OnUpdate( (() => { -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) return; -#endif flyEndPosTrue = _bait.transform.position; if (fishEffect) { @@ -1031,9 +956,6 @@ public partial class FishingBehaviorB : MonoBehaviour fishEffect.transform.position = vector; } })); ; -#if UNITY_EDITOR && !SERVICE_HOST - TrackKVCastTween(waitingTween); -#endif StartCoroutine(WaitForFishBite(timer)); } IEnumerator PlayWaitingFx() @@ -1056,9 +978,6 @@ public partial class FishingBehaviorB : MonoBehaviour } private IEnumerator WaitForFishBite(float timer) { -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) yield break; -#endif EventFishingSound eventFishingSound1 = new EventFishingSound(SoundType.audio_fishing_waiting); EventFishingSound eventFishingSound2 = new EventFishingSound(SoundType.ReelingAudio, loop: true); @@ -1068,9 +987,6 @@ public partial class FishingBehaviorB : MonoBehaviour timer += Mathf.Lerp(fishingBehaviorConf.waitingMinTime, fishingBehaviorConf.waitingMaxTime, Random.value) * (1 - EnhancedWaitingTime); yield return new WaitForSeconds(timer); -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) yield break; -#endif if (eventFishingSound2.Sound != null) { @@ -1194,27 +1110,18 @@ public partial class FishingBehaviorB : MonoBehaviour } private async void CastBait() { -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) return; -#endif InitEffect(); if (fishingBehaviorConf.fishFreeControlTime > 0f) { await new WaitForSeconds(fishingBehaviorConf.fishFreeControlTime); -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) return; -#endif _isCastLine = true; _bait.transform.SetParent(transform); - var castX=_bait.transform.DOMoveX(0, fishingBehaviorConf.flyToWaterTime); - var castZ=_bait.transform.DOMoveZ(fishingBehaviorConf.flyDistance, fishingBehaviorConf.flyToWaterTime).SetEase(fishingBehaviorConf.flyForwardCurve); + _bait.transform.DOMoveX(0, fishingBehaviorConf.flyToWaterTime); + _bait.transform.DOMoveZ(fishingBehaviorConf.flyDistance, fishingBehaviorConf.flyToWaterTime).SetEase(fishingBehaviorConf.flyForwardCurve); _cameraAnimator.SetTrigger("_waiting"); - var castY=_bait.transform.DOMoveY(_waterHeight, fishingBehaviorConf.flyToWaterTime) + _bait.transform.DOMoveY(_waterHeight, fishingBehaviorConf.flyToWaterTime) .SetEase(fishingBehaviorConf.flyDownCurve).OnComplete((() => { -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) return; -#endif fishingRodAnimator.SetTrigger("_waiting"); GContext.Publish(ERightState.Waiting); LoadEffect("fx_fishing_splashinto"); @@ -1224,25 +1131,16 @@ public partial class FishingBehaviorB : MonoBehaviour BaitMove(); _bait.SetActive(false); })); -#if UNITY_EDITOR && !SERVICE_HOST - TrackKVCastTween(castX); TrackKVCastTween(castZ); TrackKVCastTween(castY); -#endif AddLinePos(); } else { await new WaitForSeconds(1.15f); -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) return; -#endif //当前动画_fishingRodAnimator播放时间 float time = fishingRodAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime; _isCastLine = true; _cameraAnimator.SetTrigger("_waiting"); await new WaitForSeconds(time); -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVFishingCurrent()) return; -#endif _bait.transform.SetParent(transform); _bait.SetActive(false); //鱼漂位置 @@ -2023,9 +1921,6 @@ public partial class FishingBehaviorB : MonoBehaviour _cameraAnimator.SetBool("_reeling", false); fishingRodAnimator.SetBool("_pulling", false); CameraPullingEnd(); -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled && (!KVFishingCurrent() || !game.PlayerDataStorage.PlayerKVGameplayLoop.RewardCanAdvance)) yield break; -#endif fishingData.IsCaughtFish = true; PlayCollectingEffect(); if (fx_fishing_splashwaveloop != null) @@ -2438,9 +2333,6 @@ public partial class FishingBehaviorB : MonoBehaviour private void OnDisable() { -#if UNITY_EDITOR && !SERVICE_HOST - CancelKVFishing("disabled"); -#endif CloseAllEffect(); } public void CloseAllEffect() @@ -2464,9 +2356,6 @@ public partial class FishingBehaviorB : MonoBehaviour } private void OnDestroy() { -#if UNITY_EDITOR && !SERVICE_HOST - CancelKVFishing("destroyed"); -#endif disposables?.Dispose(); disposables = null; foreach (var o in _effectDic) diff --git a/Client/Assets/Scripts/GampPlay/FishingB/FishingUpdateSys.cs b/Client/Assets/Scripts/GampPlay/FishingB/FishingUpdateSys.cs index 9da5aba3f..7215d1daf 100644 --- a/Client/Assets/Scripts/GampPlay/FishingB/FishingUpdateSys.cs +++ b/Client/Assets/Scripts/GampPlay/FishingB/FishingUpdateSys.cs @@ -522,22 +522,6 @@ public class FishingUpdateSys : MonoBehaviour int isFailCount = 0; // 按了收线按钮 public void PiercingFish(int waitingZone) - { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) - { - try - { - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.BeginRewardDrawing(this)) return; - using(game.PlayerDataStorage.PlayerKVGameplayLoop.BeginRewardSegment("strike")) PiercingFishCore(waitingZone); - } - catch(System.Exception e) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault(e.Message); } - return; - } -#endif - PiercingFishCore(waitingZone); - } - void PiercingFishCore(int waitingZone) { //waitingZone==100表示鱼没有开启刺鱼 if (!fishingData.IsDrawing) @@ -639,9 +623,6 @@ public class FishingUpdateSys : MonoBehaviour if (piercingToComboB > 0) { await Awaiters.Seconds(damageProtectionTime); -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.RewardCanAdvance) return; -#endif _comboMultiplayer += Random.Range(piercingToComboA, piercingToComboB); //新技能生效 刺鱼触发全力收线进度 PublishPerkEvent(RodPerkType.BattlePerk_PiercingToCombo); @@ -651,9 +632,6 @@ public class FishingUpdateSys : MonoBehaviour public async void EternalDeath() { await Awaiters.Seconds(damageProtectionTime); -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.RewardCanAdvance) return; -#endif StopAllCoroutines(); OnFishingIsOver(); @@ -1064,10 +1042,6 @@ public class FishingUpdateSys : MonoBehaviour private void Update() { -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.RewardCanAdvance) return; -#endif - if (fishingData.IsDrawing) { Vector3 fishPos = fishingBehavior.GetFishPos(); @@ -1245,34 +1219,6 @@ public class FishingUpdateSys : MonoBehaviour } void FishEnd() - { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) - { - try - { - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.BeginRewardEnding(this,fishingData.IsCaughtFish && !isFail)) return; - using(game.PlayerDataStorage.PlayerKVGameplayLoop.BeginRewardSegment("ending")) FishEndCore(); - _=ShowKVRewardPanelAsync(); - } - catch(System.Exception e) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault(e.Message); } - return; - } -#endif - FishEndCore(); - } -#if UNITY_EDITOR && !SERVICE_HOST - async Task ShowKVRewardPanelAsync() - { - try - { - var panel=await UIManager.Instance.ShowUI(UITypes.FishingRewardPanel); - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.RewardRunCurrent && panel!=null) Destroy(panel); - } - catch(System.Exception e) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault(e.Message); } - } -#endif - void FishEndCore() { if (isFail) { @@ -1351,9 +1297,6 @@ public class FishingUpdateSys : MonoBehaviour } else { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) return; // Wrapper opens UI after S2 disposal. -#endif _ = UIManager.Instance.ShowUI(UITypes.FishingRewardPanel); } } @@ -1803,15 +1746,6 @@ public class FishingUpdateSys : MonoBehaviour //全力收线 public async void FullCombo() { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) - { - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.RewardCanAdvance) return; - try { game.PlayerDataStorage.PlayerKVGameplayLoop.CheckRewardGuide(); } - catch(System.Exception e) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault(e.Message); return; } - } -#endif - if (_isCombo == 1 && curFishingStateName != FishingStateName.UIEating) { if (comboToExDmg > 0 && comboToExDmgCount < curComboToExDmgCount) @@ -1852,9 +1786,6 @@ public class FishingUpdateSys : MonoBehaviour } } await Awaiters.Seconds(0.2f); -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.RewardCanAdvance) return; -#endif lockCombo = false; } } @@ -3199,10 +3130,6 @@ public class FishingUpdateSys : MonoBehaviour } private void OnDisable() { -#if UNITY_EDITOR && !SERVICE_HOST - game.PlayerDataStorage.PlayerKVGameplayLoop.CancelReward(this,"controller disabled"); -#endif - StopSoundCombo(); StopRodAudio(); StopNotReeling(); @@ -3249,10 +3176,6 @@ public class FishingUpdateSys : MonoBehaviour } private void OnDestroy() { -#if UNITY_EDITOR && !SERVICE_HOST - game.PlayerDataStorage.PlayerKVGameplayLoop.CancelReward(this,"controller destroyed"); -#endif - disposables?.Dispose(); _comboDisposable?.Dispose(); _hpcoroutine = null; diff --git a/Client/Assets/Scripts/SandDig/DiggingGameManager.cs b/Client/Assets/Scripts/SandDig/DiggingGameManager.cs index b525d4e64..6a721e4eb 100644 --- a/Client/Assets/Scripts/SandDig/DiggingGameManager.cs +++ b/Client/Assets/Scripts/SandDig/DiggingGameManager.cs @@ -27,25 +27,10 @@ namespace Script.RuntimeScript private DiggingGameModel _dataModel; public DiggingGameModel DataModel => _dataModel; - internal static game.PlayerDataStorage.PlayerKVEmptyModuleState DecodeForKVLoad() => - game.PlayerDataStorage.PlayerKVEmptyModuleState.Instance; - internal bool CanResetForKVLoad => _monoBehaviour==null && _digAni==null && _cameraVir==null && _tables==null && - fx_DgSanddig==null && fx_DgSanddighard==null && fx_DgSanddisappear==null && diggingMoveCurve==null && - _broadLogic==null && _broadContainer==null && _gridContianer==null && _gridPropContianer==null && - _propContainer==null && _showPropPositon==null && _explosionManager==null && sanddig_dig_sound==null && - sanddig_dig_audio==null && sanddig_dighard_audio==null && _fxRoot==null && _onCloseAwardPanel==null && - (_dataModel==null || (_dataModel.CurActivityId==0 && _dataModel.digActivityConfig==null && _dataModel.AllClamps.Count==0)); - internal void ResetForKVLoad() - { - if(!CanResetForKVLoad) throw new InvalidOperationException("KV digging module is active."); - _dataModel=new DiggingGameModel(); _broadLogic=null; _gameState=SandDigGameState.Normal; - IsCanClick=true; ClampIsPass=false; itemDatas=new List(); _awardPanelIsOpen=false; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVEmptyModuleState state) - { - if(state==null) throw new ArgumentNullException(nameof(state)); - if(!CanResetForKVLoad || _dataModel==null) throw new InvalidOperationException("KV digging reset required."); - } + + + + private Animation _digAni; diff --git a/Client/Assets/Scripts/Services/AggKVUserService.cs b/Client/Assets/Scripts/Services/AggKVUserService.cs new file mode 100644 index 000000000..f410bffac --- /dev/null +++ b/Client/Assets/Scripts/Services/AggKVUserService.cs @@ -0,0 +1,267 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using asap.core; +using tysdk; +using System.Linq; +using game.PlayerDataStorage; + +namespace game +{ + public class AggKVUserService : KVUserService + { + private bool channelLoginRunning; + + protected override string NewPlayerName + { + get + { + if (TYSdkFacade.TYAccountInfo == null) + { + return base.NewPlayerName; + } + if (TYSdkFacade.TYAccountInfo.channel == EAccoutType.hwFacebook + || TYSdkFacade.TYAccountInfo.channel == EAccoutType.hwGoogle) + { + if (!string.IsNullOrEmpty(TYSdkFacade.TYAccountInfo.userName)) + { + return TYSdkFacade.TYAccountInfo.userName; + } + } + + return base.NewPlayerName; + } + } + + protected override string NewPlayerAvatar + { + get + { + if (TYSdkFacade.TYAccountInfo == null) + { + return base.NewPlayerAvatar; + } + if (TYSdkFacade.TYAccountInfo.channel == EAccoutType.hwFacebook + /*|| TYSdkFacade.TYAccountInfo.channel == EAccoutType.hwGoogle*/) + { + if (!string.IsNullOrEmpty(TYSdkFacade.TYAccountInfo.avatar)) + { + return TYSdkFacade.TYAccountInfo.avatar; + } + } + + return base.NewPlayerAvatar; + } + } + + public override async Task Login(Action progress, bool tryLoginByToken = true) + { + if (channelLoginRunning || LoginLifetime.IsCancellationRequested) + { + return ELoginStep.Sdk; + } + channelLoginRunning = true; + try + { + if (IsLogin) + { + progress?.Invoke(3); + return ELoginStep.Done; + } + + UnityEngine.Debug.Log("AggUserService Login"); + + LoginInfo loginInfo = new LoginInfo(); + if (!TYSdkFacade.IsLoggedIn) + { + loginInfo = await TYSdkFacade.Instance.LoginBySns(); + if (LoginLifetime.IsCancellationRequested) + { + return ELoginStep.Sdk; + } + + if (!loginInfo.isSuccess && tryLoginByToken) + { + loginInfo = await TYSdkFacade.Instance.LoginByToken(); + if (LoginLifetime.IsCancellationRequested) + { + return ELoginStep.Sdk; + } + } + + if (!loginInfo.isSuccess) + { + var evt = new LoginTypeEvt(); + GContext.Publish(evt); + var loginType = await evt.loginType.Task; + if (LoginLifetime.IsCancellationRequested) + { + return ELoginStep.Sdk; + } + loginInfo = await TYSdkFacade.Instance.Login(loginType); + if (LoginLifetime.IsCancellationRequested) + { + return ELoginStep.Sdk; + } + } + } + else + { + loginInfo.isSuccess = true; + loginInfo.userId = TYSdkFacade.TYAccountInfo.userId; + } + + if (!loginInfo.isSuccess) + { + return ELoginStep.Sdk; + } + + progress.Invoke(1); + + CustomId = loginInfo.StrUserId; + + var step = await base.Login(step => progress?.Invoke(step + 1)); + if (LoginLifetime.IsCancellationRequested) + { + return ELoginStep.Api; + } + if (step != ELoginStep.Done) + { + return step; + } + + if (ChannelManager.IsRustoreStore) + { + GEvent.SetProp("sdk_channel", "ru_store"); + } + + GEvent.SetProps(new Dictionary() + { + {"pf_id", UserId}, + {"CreateTime",CreateTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss")} + }); + + GEvent.SetUserProps(new Dictionary() + { + {"pf_id", UserId}, + {"CreateTime",CreateTime.ToString("yyyy-MM-dd HH:mm:ss")} + }); + + AvatarToKV(TYSdkFacade.TYAccountInfo); + + GEvent.OnLogin(UserId, CustomId); + if (config.Get("NewlyCreated", false)) + { + using (var e = GEvent.CompleteRegistrationEvent()) + { + e.AddContent("login_type", TYSdkFacade.TYAccountInfo.channel.ToString()); + } + + GEvent.SetProps(new Dictionary() + { + {"vip_level", 0} + }); + + GEvent.SetUserProps(new Dictionary() + { + {"vip_level", 0}, + {"total_consumption", 0} + }); + + if (AFHelper.Instance.GetDLReferer(out var pid, out var uid)) + { + UnityEngine.Debug.Log("[AggUserService] deeplink referer:" + pid + " " + uid); + + using (var e = GEvent.GameEvent("deeplink_invited")) + { + e.AddContent("referrer_uid", uid); + e.AddContent("referrer_pid", pid); + } + + var refererData = new Dictionary() + { + {"refererPid", pid}, + {"refererUid", uid}, + {"playerUid", CustomId} + }; + + _ = customServerMgr.CustomServerPost("friend/RecoreReferer", + Newtonsoft.Json.JsonConvert.SerializeObject(refererData)); + } + } + + using (var e = GEvent.LoginEvent()) + { + e.AddContent("login_type", TYSdkFacade.TYAccountInfo.channel.ToString()); + e.AddContent("display_name", DisplayName); + e.AddContent("avatar_url", AvatarUrl); + e.AddContent("linkedAccout", string.Join('#', TYSdkFacade.TYAccountInfo.linkedAccout)); + } + + return step; + } + finally + { + channelLoginRunning = false; + } + } + + public override void Logout() + { + TYSdkFacade.Instance.Logout(); + base.Logout(); + } + + public override async Task GetLinkState(EAccoutType accoutType) + { + return await TYSdkFacade.Instance.LinkCheck(accoutType); + } + + public override async Task<(int code, int userid)> LinkAccount(EAccoutType accoutType) + { + var linkResult = await TYSdkFacade.Instance.LinkAccount(accoutType); + if (linkResult.code == 0 && !LoginLifetime.IsCancellationRequested) + { + var _accountInfo = TYSdkFacade.TYAccountInfo; + if (_accountInfo != null) + { + AvatarToKV(_accountInfo); + if (_accountInfo.channel == EAccoutType.hwFacebook) + { + _ = UpdateAvatarUrl(_accountInfo.avatar); + } + } + } + return (linkResult.code, linkResult.userId); + } + + protected override void InitData(IDictionary data) + { + if (data.TryGetValue(EAccoutType.hwGoogle.ToString(), out var google) && google == "1") + { + TYSdkFacade.TYAccountInfo.linkedAccout.Add(EAccoutType.hwGoogle); + } + + if (data.TryGetValue(EAccoutType.hwFacebook.ToString(), out var facebook) && facebook == "1") + { + TYSdkFacade.TYAccountInfo.linkedAccout.Add(EAccoutType.hwFacebook); + } + + if (data.TryGetValue(EAccoutType.Apple.ToString(), out var apple) && apple == "1") + { + TYSdkFacade.TYAccountInfo.linkedAccout.Add(EAccoutType.Apple); + } + + if (TYSdkFacade.TYAccountInfo.channel != EAccoutType.hwGuest && TYSdkFacade.TYAccountInfo.channel != EAccoutType.none) + { + var channel = TYSdkFacade.TYAccountInfo.channel.ToString(); + if (!data.ContainsKey(channel)) + { + data.Add(channel, "1"); + SaveStore.Write(channel, "1").RequireAccepted(); + } + } + + } + } +} diff --git a/Client/Assets/Scripts/Services/AggKVUserService.cs.meta b/Client/Assets/Scripts/Services/AggKVUserService.cs.meta new file mode 100644 index 000000000..f15999348 --- /dev/null +++ b/Client/Assets/Scripts/Services/AggKVUserService.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f3774b22ff7e4fd894180c42bed01400 diff --git a/Client/Assets/Scripts/Services/AggUserService.cs b/Client/Assets/Scripts/Services/AggUserService.cs index 6d9c90951..53251a628 100644 --- a/Client/Assets/Scripts/Services/AggUserService.cs +++ b/Client/Assets/Scripts/Services/AggUserService.cs @@ -13,17 +13,6 @@ namespace game public class AggUserService : PlayFabUserService { - public AggUserService() { } - internal AggUserService(PlayerDataStorage.PlayerKVControlledLoadCapability capability) : base(capability) { } - internal IReadOnlyList KVLinkedAccounts { get; private set; } = - Array.Empty(); - internal override void ResetForKVLoad() - { - base.ResetForKVLoad(); - KVLinkedAccounts=Array.Empty(); - } - internal override void ReplaceKVLinked(PlayerDataStorage.PlayerKVLoginState state) - { KVLinkedAccounts=new List(state.Linked).AsReadOnly(); } protected override string NewPlayerName { get @@ -56,15 +45,6 @@ namespace game public override async Task Login(Action progress, bool tryLoginByToken = true) { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) - { - CustomId=game.PlayerDataStorage.PlayerKVGameplayLoop.Permit.PlayerId; - OnInitData+=InitData; - try { return await LoginWithBackend(progress,"kv-loop"); } - finally { OnInitData-=InitData; } - } -#endif var backend=CaptureSaveBackend(); if(RejectSaveBackend(backend)) return ELoginStep.Api; var generation = logoutGeneration; @@ -190,9 +170,8 @@ namespace game public override void Logout() { - base.Logout(); - if(IsControlledKVInstance) return; TYSdkFacade.Instance.Logout(); + base.Logout(); } public override async Task GetLinkState(EAccoutType accoutType) @@ -218,25 +197,8 @@ namespace game return (linkResult.code, linkResult.userId); } - internal int KVNotificationCount { get; private set; } - internal override async Task LoadKVForValidationAsync(PlayerDataStorage.PlayerKVGameLoadCapability capability) - { - EnterKVReceiver(ReceiveKVData); - try { return await base.LoadKVForValidationAsync(capability); } - finally { ExitKVReceiver(); } - } - void ReceiveKVData(IDictionary data) - { - if(!IsControlledKVInstance || KVLoadingCopy==null || data.Count!=KVLoadingCopy.Count) - throw new InvalidOperationException("Controlled notification window invalid."); - KVNotificationCount++; - } private void InitData(IDictionary data) { -#if UNITY_EDITOR && !SERVICE_HOST - // Editor loop has no channel SDK login. M31 already replaced account URLs and linked flags. - if(PlayerDataStorage.PlayerKVGameplayLoop.Enabled) return; -#endif if (data.TryGetValue(EAccoutType.hwGoogle.ToString(), out var google) && google == "1") { TYSdkFacade.TYAccountInfo.linkedAccout.Add(EAccoutType.hwGoogle); diff --git a/Client/Assets/Scripts/Services/ClubService.cs b/Client/Assets/Scripts/Services/ClubService.cs index ae6dc9b59..46940f08f 100644 --- a/Client/Assets/Scripts/Services/ClubService.cs +++ b/Client/Assets/Scripts/Services/ClubService.cs @@ -1,4 +1,4 @@ -using asap.core; +using asap.core; using cfg; using GameCore; using System; @@ -67,19 +67,33 @@ namespace game } internal bool HasFormalPromptOwner(PlayerDataStorage.PlayerKVGameSessionHandle owner) => requiresFormalKV && ReferenceEquals(promptOwner, owner); + + internal void ReleaseFailedPromptOwner(PlayerDataStorage.PlayerKVGameSessionHandle owner) + { + if (promptOwner == null) + { + return; + } + if (!ReferenceEquals(promptOwner, owner) || owner.Status != PlayerDataStorage.PlayerKVSyncStatus.Closed) + { + throw DefaultSettingService.PromptFailure("IsOpenClubRed: failed owner has not closed."); + } + promptOwner = null; + LastPromptEdit = null; + } internal void RequirePromptOwner() { if (promptOwner != null) ReadPrompt(); else if (requiresFormalKV) throw DefaultSettingService.PromptFailure("IsOpenClubRed: formal owner not handed off."); } - PlayerDataStorage.PlayerKVKeyReadResult ReadPrompt() + private PlayerDataStorage.PlayerKVKeyReadResult ReadPrompt() { - if (LastPromptEdit != null && !LastPromptEdit.Accepted) - throw DefaultSettingService.PromptFailure($"IsOpenClubRed owner={promptOwner.OwnerInstanceId}: {LastPromptEdit.StateResult.Error}; uncertain={LastPromptEdit.StateResult.LocalCommitMayHaveSucceeded}"); var read = KVMgr.ReadKV(promptOwner, "IsOpenClubRed"); if (!read.Success) + { throw DefaultSettingService.PromptFailure($"IsOpenClubRed owner={promptOwner.OwnerInstanceId}: {read.Error}"); + } return read; } // END B01 fixed prompt owner @@ -101,25 +115,10 @@ namespace game LureDonateData lureDonateData; // KV loading owns these three fields only; membership, transport and chat lifecycle stay untouched. - internal static PlayerDataStorage.PlayerKVClubState DecodeForKVLoad(IReadOnlyDictionary raw, - PlayerDataStorage.PlayerKVSchemaSnapshot snapshot, PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - PlayerDataStorage.PlayerKVSaveSchema.DecodeClub(raw,snapshot,errors); - internal void ResetForKVLoad() - { - signTime = null; - lureDonateData = new LureDonateData(); - IsOpenClubRed = true; - } - internal void ReplaceFromKVDecoded(PlayerDataStorage.PlayerKVClubState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - var donation = new LureDonateData { DonateCountTime=state.DonateTime, - ClubLureDonateCount=state.DonateCount, ClubLureRequestCDEnd=state.RequestEnd }; - signTime = state.SignTime; lureDonateData = donation; IsOpenClubRed = state.OpenRed; - } - internal PlayerDataStorage.PlayerKVClubState SnapshotForKVValidation() => - new PlayerDataStorage.PlayerKVClubState(signTime,lureDonateData.DonateCountTime, - lureDonateData.ClubLureDonateCount,lureDonateData.ClubLureRequestCDEnd,IsOpenClubRed); + + + + public int ClubLureDonateCount => lureDonateData.ClubLureDonateCount; public DateTime ClubLureRequestCDEnd => lureDonateData.ClubLureRequestCDEnd; @@ -203,20 +202,24 @@ namespace game public void SetOpenClubRed() { - if (requiresFormalKV && promptOwner == null) RequirePromptOwner(); + if (requiresFormalKV && promptOwner == null) + { + RequirePromptOwner(); + } if (promptOwner != null) { - var read = ReadPrompt(); - // M14: any present string means read, including "0" and the empty string. - if (read.Found != true) + ReadPrompt(); + if (IsOpenClubRed) { + IsOpenClubRed = false; + SetClubRed(); LastPromptEdit = KVMgr.WriteKV(promptOwner, "IsOpenClubRed", "1"); if (!LastPromptEdit.Accepted) + { throw DefaultSettingService.PromptFailure($"IsOpenClubRed owner={promptOwner.OwnerInstanceId}: {LastPromptEdit.StateResult.Error}; uncertain={LastPromptEdit.StateResult.LocalCommitMayHaveSucceeded}"); + } } RequirePromptOwner(); - IsOpenClubRed = false; - SetClubRed(); return; } if (IsOpenClubRed) diff --git a/Client/Assets/Scripts/Services/DevKVUserService.cs b/Client/Assets/Scripts/Services/DevKVUserService.cs new file mode 100644 index 000000000..af1769ee8 --- /dev/null +++ b/Client/Assets/Scripts/Services/DevKVUserService.cs @@ -0,0 +1,6 @@ +namespace game +{ + public sealed class DevKVUserService : KVUserService + { + } +} diff --git a/Client/Assets/Scripts/Services/DevKVUserService.cs.meta b/Client/Assets/Scripts/Services/DevKVUserService.cs.meta new file mode 100644 index 000000000..02b68f57b --- /dev/null +++ b/Client/Assets/Scripts/Services/DevKVUserService.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5ccd01c3a579486180804cefdbc73f9d diff --git a/Client/Assets/Scripts/Services/FootPrintService.cs b/Client/Assets/Scripts/Services/FootPrintService.cs index 8a70c9945..af00e1391 100644 --- a/Client/Assets/Scripts/Services/FootPrintService.cs +++ b/Client/Assets/Scripts/Services/FootPrintService.cs @@ -1,4 +1,4 @@ -using System; +using System; public interface IFootPrintService { public EFootPrint FootPrint { get; } @@ -11,27 +11,14 @@ public interface IFootPrintService // ReSharper disable once ClassNeverInstantiated.Global public class FootPrintService : IFootPrintService { - [asap.core.Inject] public game.PlayerDataStorage.IPlayerSaveStore SaveStore { get; set; } + [asap.core.Inject] + public game.PlayerDataStorage.IPlayerSaveStore SaveStore + { + get; + set; + } private EFootPrint _footPrint; - private ulong _kvCompleteFootPrint; - internal ulong CompleteFootPrintForKVValidation => _kvCompleteFootPrint; - internal static game.PlayerDataStorage.PlayerKVFootPrintState DecodeForKVLoad( - System.Collections.Generic.IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) - => game.PlayerDataStorage.PlayerKVSaveSchema.DecodeFootPrint(raw, errors); - internal void ResetForKVLoad() - { - _kvCompleteFootPrint = 0; - _footPrint = 0; - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVFootPrintState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - _kvCompleteFootPrint = state.Bits; - // This legacy view contains only the low 32 bits. The ulong field retains the complete KV state. - _footPrint = unchecked((EFootPrint)(int)(uint)state.Bits); - } public EFootPrint FootPrint => _footPrint; public void UpdateFootPrint(EFootPrint newState) { @@ -41,15 +28,13 @@ public class FootPrintService : IFootPrintService public void UploadData() { - _kvCompleteFootPrint |= unchecked((uint)(int)_footPrint); - var data = _kvCompleteFootPrint; + var data = (ulong)_footPrint; SaveStore.Write("FootPrint", data.ToString()).RequireAccepted(); } public void LoadData(string data) { - _kvCompleteFootPrint = ulong.Parse(data); - _footPrint = unchecked((EFootPrint)(int)(uint)_kvCompleteFootPrint); + _footPrint = (EFootPrint) ulong.Parse(data); } public bool HasFootPrint(EFootPrint state) diff --git a/Client/Assets/Scripts/Services/FriendModel.cs b/Client/Assets/Scripts/Services/FriendModel.cs index 4c08bf469..3382aa88c 100644 --- a/Client/Assets/Scripts/Services/FriendModel.cs +++ b/Client/Assets/Scripts/Services/FriendModel.cs @@ -48,6 +48,32 @@ namespace game public int Code { get; set; } public string Msg { get; set; } public BFriendInfo? Info { get; set; } + public KvPublicProfile KvProfile + { + get; + set; + } + } + + public class KvPublicProfile + { + public string DisplayName + { + get; + set; + } + + public string AvatarUrl + { + get; + set; + } + + public int? Level + { + get; + set; + } } public class GetHomePageReq diff --git a/Client/Assets/Scripts/Services/FriendService.cs b/Client/Assets/Scripts/Services/FriendService.cs index bdafda41d..0db8edc90 100644 --- a/Client/Assets/Scripts/Services/FriendService.cs +++ b/Client/Assets/Scripts/Services/FriendService.cs @@ -142,7 +142,9 @@ namespace game } }; - var result = await PlayFabClientAsyncAPI.GetFriendsListAsync(getFriendsListRequest); + var result = userService is KVUserService + ? await GetKVFriendsListAsync() + : await PlayFabClientAsyncAPI.GetFriendsListAsync(getFriendsListRequest); var list = result?.Friends; if (list != null) { @@ -214,6 +216,57 @@ namespace game #endif } } + private async Task GetKVFriendsListAsync() + { + var json = await customServerMgr.FriendRequest("GetFriendsList", new { }); + if (string.IsNullOrEmpty(json)) + { + return null; + } + try + { + var response = Newtonsoft.Json.JsonConvert.DeserializeObject(json); + if (response == null || response.Code != 1 || response.Friends == null) + { + return null; + } + var friends = new List(); + foreach (var serialized in response.Friends) + { + if (string.IsNullOrEmpty(serialized)) + { + return null; + } + var item = Newtonsoft.Json.JsonConvert.DeserializeObject(serialized); + if (item == null) + { + return null; + } + friends.Add(new FriendInfo { FriendPlayFabId = item.PlayFabId, Profile = item.Profile }); + } + return new GetFriendsListResult { Friends = friends }; + } + catch (Newtonsoft.Json.JsonException ex) + { + Debug.LogError("KV friends response failed: " + ex.GetType().Name); + return null; + } + } + + private sealed class KvFriendItem + { + public string PlayFabId + { + get; + set; + } + + public PlayerProfileModel Profile + { + get; + set; + } + } #endregion #region 邀请好友 diff --git a/Client/Assets/Scripts/Services/ILocalNotificationService.cs b/Client/Assets/Scripts/Services/ILocalNotificationService.cs index 2427c1f7e..0778e888f 100644 --- a/Client/Assets/Scripts/Services/ILocalNotificationService.cs +++ b/Client/Assets/Scripts/Services/ILocalNotificationService.cs @@ -40,7 +40,6 @@ public class LocalNotificationService : ILocalNotificationService DefaultSettingService promptSettings; Task initialization; Task opening; - internal bool HasKVPromptOwner => promptSettings != null; public LocalNotificationService() { _notificationList = GContext.container.Resolve().TbNotification.DataList; diff --git a/Client/Assets/Scripts/Services/KVUserService.cs b/Client/Assets/Scripts/Services/KVUserService.cs index febf13b6f..85cf81f5f 100644 --- a/Client/Assets/Scripts/Services/KVUserService.cs +++ b/Client/Assets/Scripts/Services/KVUserService.cs @@ -11,33 +11,49 @@ using game.PlayerDataStorage; using GameCore; using tysdk; using UnityEngine; +using Newtonsoft.Json; +using YiDun.Protector; +#if UNITY_ANDROID +using TapjoyUnity.Internal; +#endif namespace game { - // One service belongs to one login lifetime. A revoked instance is never rebound. - public sealed class KVUserService : IUserService, IKVUserLoadReceiver, IKVUserLifecycle + // Failed login attempts may retry; explicit logout ends this service lifetime. + public class KVUserService : IUserService, IKVUserLifecycle { - [Inject] public ICustomServerMgr customServerMgr { get; set; } - [Inject] public IPlayerSaveStore SaveStore { get; set; } - readonly PlayerKVRuntimeSelection selection; - readonly Func handlerFactory; - readonly CancellationTokenSource lifetime = new CancellationTokenSource(); - readonly Dictionary profiles = new Dictionary(); - readonly Dictionary levels = new Dictionary(); - PlayerKVGameLoadCoordinator coordinator; - PlayerKVGameSessionHandle handle; - PlayerKVInitializationIntents intents; - bool attempted, loading, closing, published, promptsBound; - Task closeTask; - long epoch; - string playerId; - uint internalId; + [Inject] + public IConfig config { get; set; } + + [Inject] + public ICustomServerMgr customServerMgr { get; set; } + [Inject] + public IPlayerSaveStore SaveStore { get; set; } + + // + private readonly PlayerKVRuntimeSelection selection; + // + private readonly Func handlerFactory; + + private readonly CancellationTokenSource lifetime = new(); + private readonly Dictionary profiles = new(); + private readonly Dictionary levels = new(); + + private PlayerKVGameLoadCoordinator coordinator; + private PlayerKVGameSessionHandle handle; + private bool loading, closing, published, promptsBound; + private PlayerKVGameSessionHandle failedHandle; + private int mmTestValue; + private Task closeTask; + private long epoch; + private string playerId; + private uint internalId; public string CustomId { get; set; } - public string UserId => IsAuthorized ? playerId : null; + public string UserId => KVHandoffReady ? playerId : null; public string ApiPlayerId => UserId; - public uint InternalId => IsAuthorized ? internalId : 0; - public bool IsLogin => IsAuthorized; - public bool IsAuthorized => published && KVHandoffReady; + public uint InternalId => KVHandoffReady ? internalId : 0; + public bool IsLogin => KVHandoffReady && playerId != null; + public bool IsAuthorized => published && InternalId != 0 && KVHandoffReady; public CancellationToken LoginLifetime => lifetime.Token; public DateTime LastLoginTime { get; private set; } public DateTime LoginTime { get; private set; } @@ -47,7 +63,6 @@ namespace game public string Language { get; private set; } public string ContinentCode { get; private set; } public Dictionary EAccoutUrl { get; private set; } = new Dictionary(); - internal int KVTapJoyBalance { get; private set; } internal PlayerKVGameLoadError KVLastError { get; private set; } internal bool KVHandoffReady => !closing && handle != null && coordinator != null && coordinator.TryGetCurrentGameHandle(epoch, out var current) && ReferenceEquals(current, handle); @@ -57,88 +72,315 @@ namespace game public KVUserService() : this(SubBoostrap.RuntimeSelection, jar => new HttpClientHandler { CookieContainer = jar, UseCookies = true, AllowAutoRedirect = false }) { } - internal KVUserService(PlayerKVRuntimeSelection selection, Func handlerFactory) + private KVUserService(PlayerKVRuntimeSelection selection, Func handlerFactory) { this.selection = selection; this.handlerFactory = handlerFactory ?? throw new ArgumentNullException(nameof(handlerFactory)); - Application.quitting += Logout; + Application.quitting += OnApplicationQuitting; } - public async Task Login(Action progress, bool tyrLoginByToken = true) + protected virtual string NewPlayerName => $"Angler#{CustomId}"; + protected virtual string NewPlayerAvatar => string.Empty; + + protected virtual void InitData(IDictionary data) { - if (attempted || closing || selection == null || !selection.IsKV || - !selection.TryAdmitPlayer(CustomId, out var canonicalId)) - { KVLastError = PlayerKVGameLoadError.Input; return ELoginStep.Api; } - // Set before the first await: duplicate calls cannot authenticate or subscribe twice. - attempted = true; + } + + public virtual async Task Login(Action progress, bool tyrLoginByToken = true) + { + if (loading || closing) + { + return ELoginStep.Api; + } + if (IsLogin) + { + progress?.Invoke(2); + return ELoginStep.Done; + } + if (selection == null || !selection.IsKV || !selection.TryAdmitPlayer(CustomId, out var canonicalId)) + { + KVLastError = PlayerKVGameLoadError.Input; + return ELoginStep.Api; + } + + loading = true; var requestedId = CustomId; + bool successEventStarted = false; + IChatService chat = null; try { - if (customServerMgr is not CustomServerMgr server || - server.ApiBaseUri.AbsoluteUri != PlayerKVRuntimeSelection.FormalApiUrl) - throw new InvalidOperationException("Formal KV transport required."); - loading = true; - var transaction = PlayerKVGameplayBindings.Bind(this); - coordinator = new PlayerKVGameLoadCoordinator(transaction, - () => loading && !closing && !published && handle == null, - () => { }, () => intents?.Count ?? 0, server.BindKVForGame, server.ClearKVForGame); - server.KVUnauthorized += OnUnauthorized; - var identity = new PlayerKVIdentitySnapshot(null, false, PlayerKVIdentityChannel.none, - Array.Empty()); - var snapshot = PlayerKVGameplayBindings.Snapshot(DateTime.UtcNow, "formal-v1"); - var capability = PlayerKVGameLoadCapability.CreateForGame(identity, snapshot, selection.Api, - Application.persistentDataPath, handlerFactory, handlerFactory, handlerFactory); - var result = await coordinator.LoadForGameAsync(canonicalId, capability, LoginLifetime, - () => !closing && CustomId == requestedId); - KVLastError = result.Error; - if (result.State != PlayerKVGameLoadState.GameLoaded || closing || CustomId != requestedId || - result.Account == null || result.Account.PlayerId != canonicalId || result.Account.Epoch != result.Epoch || - !coordinator.TryGetCurrentGameHandle(result.Epoch, out var original)) - { Logout(); return ELoginStep.Api; } - epoch = result.Epoch; - handle = original; - if (SaveStore is not KVPlayerSaveStore store) throw new InvalidOperationException("KV save store required."); - store.Bind(original, LoginLifetime); - PrepareProfile(result.Account); - BindPromptServices(original); - // Chat subscribes before the unique success event. No SDK or analytics initialization here. - GContext.container.Resolve().WaitingForLogin(); - if (!KVHandoffReady || CustomId != requestedId) throw new InvalidOperationException("Stale KV login."); - server.EnableKVBusiness(epoch); + CustomServerMgr server; + KVPlayerSaveStore store; + PlayerKVGameLoadResult result; + PlayerKVGameSessionHandle original; + try + { + if (!await ReleaseFailedLoginAsync() || closing) + { + return ELoginStep.Api; + } + server = customServerMgr as CustomServerMgr; + if (server == null || server.ApiBaseUri.AbsoluteUri != PlayerKVRuntimeSelection.FormalApiUrl) + { + throw new InvalidOperationException("Formal KV transport required."); + } + coordinator = new PlayerKVGameLoadCoordinator( + () => loading && !closing && !published && handle == null, + server.BindKVForGame, server.ClearKVForGame); + server.KVUnauthorized += OnUnauthorized; + var capability = PlayerKVGameLoadCapability.CreateForGame(selection.Api, + Application.persistentDataPath, handlerFactory, handlerFactory, handlerFactory, prepareOriginalComparison: true); + result = await coordinator.LoadForGameAsync(canonicalId, capability, LoginLifetime, + () => !closing && CustomId == requestedId); + KVLastError = result.Error; + if (result.State != PlayerKVGameLoadState.PreparedForGame || result.Data == null || + closing || CustomId != requestedId || result.Account == null || + result.Account.PlayerId != canonicalId || result.Account.Epoch != result.Epoch || + !coordinator.TryGetCurrentGameHandle(result.Epoch, out original)) + { + await FailLoginAsync(); + return ELoginStep.Api; + } + epoch = result.Epoch; + handle = original; + store = SaveStore as KVPlayerSaveStore; + if (store == null) + { + throw new InvalidOperationException("KV save store required."); + } + store.Bind(original, LoginLifetime); + } + catch (Exception ex) + { + KVLastError = PlayerKVGameLoadError.Apply; + Debug.LogError("KV preparation failed: " + ex.GetType().Name); + await FailLoginAsync(); + return ELoginStep.Api; + } + await PrepareProfileAsync(result.Account); + if (!KVHandoffReady || CustomId != requestedId) + { + await FailLoginAsync(); + return ELoginStep.Api; + } playerId = result.Account.PlayerId; internalId = result.Account.InternalId; + ZZTimeHelper.AdjustTime(LoginTime); + ZZTimeHelper.WathForcusChange(); + if (!original.CompareDatas(ZZTimeHelper.UtcNow().Ticks).Success) + { + KVLastError = PlayerKVGameLoadError.Apply; + await FailLoginAsync(); + return ELoginStep.Api; + } + var merged = original.ReadLocalSnapshot(); + if (!merged.Success) + { + KVLastError = PlayerKVGameLoadError.Apply; + await FailLoginAsync(); + return ELoginStep.Api; + } + KVMgr.Bind(store); + InitializePlayerData(merged.Data.ToDictionary(pair => pair.Key, pair => pair.Value, StringComparer.Ordinal)); + if (!KVHandoffReady || CustomId != requestedId) + { + await FailLoginAsync(); + return ELoginStep.Api; + } + SetMMTestValue(); + try + { + BindPromptServices(original); + } + catch (Exception ex) + { + KVLastError = PlayerKVGameLoadError.Apply; + Debug.LogError("KV prompt binding failed: " + ex.GetType().Name); + await FailLoginAsync(); + return ELoginStep.Api; + } + chat = GContext.container.Resolve(); + chat.WaitingForLogin(); + OnYinDunLogin(); + if (!KVHandoffReady || CustomId != requestedId) + { + await FailLoginAsync(); + return ELoginStep.Api; + } + server.EnableKVBusiness(epoch); published = true; - GContext.Publish(new EvtAPISvrLoginSuccess { playerId = playerId, internalId = internalId }); - if (!IsAuthorized) return ELoginStep.Api; - _ = RunSaveScheduleAsync(store); + successEventStarted = true; + try + { + GContext.Publish(new EvtAPISvrLoginSuccess { playerId = playerId, internalId = internalId }); + } + catch (Exception ex) + { + // Original LoginApiServer catches subscriber errors and removes API authorization. + Debug.LogError(ex); + internalId = 0; + published = false; + server.DisableKVBusiness(); + } + if (closing) + { + return ELoginStep.Api; + } + InitTapJoy(); progress?.Invoke(2); return ELoginStep.Done; } catch (Exception ex) { + if (successEventStarted) + { + throw; + } KVLastError = PlayerKVGameLoadError.Apply; Debug.LogError("KV login failed: " + ex.GetType().Name); - Logout(); - return ELoginStep.Api; + try + { + (chat as IDisposable)?.Dispose(); + } + catch (Exception cleanupError) + { + Debug.LogError("KV chat cleanup failed: " + cleanupError); + } + try + { + await FailLoginAsync(); + } + catch (Exception cleanupError) + { + Debug.LogError("KV login cleanup failed: " + cleanupError); + } + throw; + } + finally + { + loading = false; } - finally { loading = false; } } - void PrepareProfile(PlayerKVAccountDescriptor account) + private void InitializePlayerData(Dictionary data) + { + mmTestValue = 0; + if (!data.ContainsKey("MMTest")) + { + if (config.Get("NewlyCreated", false)) + { + mmTestValue = -1; + } + else + { + SaveStore.Write("MMTest", "MMFailParam#0").RequireAccepted(); + } + } + else + { + var parts = data["MMTest"].Split('#'); + if (parts.Length > 1 && parts[0] == "MMFailParam") + { + int.TryParse(parts[1], out var value); + mmTestValue = value; + } + else + { + mmTestValue = 0; + SaveStore.Write("MMTest", "MMFailParam#0").RequireAccepted(); + } + } + GContext.container.Resolve().LoadPlayerData(data); + InitData(data); + } + + private async Task PrepareProfileAsync(PlayerKVAccountDescriptor account) { if (account.InternalId == 0 || account.CreateTimeUtc == DateTime.MinValue || account.ServerTimeUtc == DateTime.MinValue) + { throw new InvalidOperationException("Authenticated account metadata required."); + } CreateTime = account.CreateTimeUtc; LoginTime = account.ServerTimeUtc; + config.Set("NewlyCreated", account.NewlyCreated); var previous = Read("LastLoginTimeUtc"); LastLoginTime = ParseLastLoginTime(previous.Value, previous.Found.Value); DisplayName = Read("DisplayName").Value; - if (string.IsNullOrEmpty(DisplayName)) DisplayName = GetDefaultName(account.PlayerId); AvatarUrl = Read("AvatarUrl").Value ?? string.Empty; Language = Read("Language").Value; - if (string.IsNullOrEmpty(Language)) Language = GContext.container.Resolve().Lang; var continent = Read("ContinentCode").Value; ContinentCode = new[] { "AF", "AN", "AS", "EU", "NA", "OC", "SA" }.Contains(continent) ? continent : null; + if (string.IsNullOrEmpty(DisplayName)) + { + var name = await ChangeDisplayName(NewPlayerName); + LoginLifetime.ThrowIfCancellationRequested(); + if (!KVHandoffReady) + { + throw new InvalidOperationException("Stale KV profile."); + } + DisplayName = name; + } + if (string.IsNullOrEmpty(AvatarUrl)) + { + await UpdateAvatarUrl(NewPlayerAvatar); + } + await UpdateLanguage(GContext.container.Resolve().Lang); + LoginLifetime.ThrowIfCancellationRequested(); + } + + private async Task FailLoginAsync() + { + if (closing) + { + return; + } + if (closeTask != null) + { + await ReleaseFailedLoginAsync(); + return; + } + failedHandle = handle; + handle = null; + playerId = null; + internalId = 0; + published = false; + DisplayName = AvatarUrl = Language = ContinentCode = null; + ClearPlayInfos(); + if (customServerMgr is CustomServerMgr server) + { + server.KVUnauthorized -= OnUnauthorized; + server.DisableKVBusiness(); + } + closeTask = coordinator?.Revoke() ?? Task.CompletedTask; + await ReleaseFailedLoginAsync(); + } + + private async Task ReleaseFailedLoginAsync() + { + if (closeTask == null) + { + return true; + } + var status = await (coordinator?.ObserveQuitAsync() ?? Task.FromResult(PlayerKVShutdownStatus.Ready)); + if (closing || status != PlayerKVShutdownStatus.Ready || closeTask.Status != TaskStatus.RanToCompletion) + { + KVLastError = status == PlayerKVShutdownStatus.Failed || closeTask.IsFaulted ? + PlayerKVGameLoadError.PreviousCloseFailed : PlayerKVGameLoadError.PreviousClosePending; + return false; + } + if (failedHandle != null) + { + KVMgr.Unbind(SaveStore as KVPlayerSaveStore); + (SaveStore as KVPlayerSaveStore)?.ReleaseFailedBinding(failedHandle); + (GContext.container.Resolve() as DefaultSettingService)?.ReleaseFailedPromptOwner(failedHandle); + GContext.container.Resolve().ReleaseFailedPromptOwner(failedHandle); + } + promptsBound = false; + failedHandle = null; + closeTask = null; + coordinator = null; + epoch = 0; + return true; } internal static DateTime ParseLastLoginTime(string value, bool found) @@ -185,7 +427,31 @@ namespace game if (version == customServerMgr.SessionVersion) Logout(); } - public void Logout() => ObserveClose(CloseKVForValidationAsync()); + private void OnApplicationQuitting() + { + var original = SaveStore as KVPlayerSaveStore; + try + { + KVMgr.Stop(original); + if (original != null && original.IsCurrent) + { + _ = original.SyncDataAsync(); + } + } + catch (Exception ex) + { + Debug.LogError("KV quit save failed: " + ex.GetType().Name); + } + finally + { + Logout(); + } + } + + public virtual void Logout() + { + ObserveClose(CloseKVForValidationAsync()); + } async void ObserveClose(Task task) { try { await task; } @@ -193,14 +459,21 @@ namespace game } internal Task CloseKVForValidationAsync() { - if (closeTask != null) return closeTask; + if (closing) + { + return closeTask ?? Task.CompletedTask; + } closing = true; published = false; + KVMgr.Unbind(SaveStore as KVPlayerSaveStore); (SaveStore as KVPlayerSaveStore)?.Dispose(); - playerId = null; internalId = 0; handle = null; epoch = 0; + playerId = null; + internalId = 0; + handle = null; + epoch = 0; DisplayName = AvatarUrl = Language = ContinentCode = null; ClearPlayInfos(); - Application.quitting -= Logout; + Application.quitting -= OnApplicationQuitting; if (customServerMgr is CustomServerMgr server) { server.KVUnauthorized -= OnUnauthorized; @@ -216,74 +489,244 @@ namespace game coordinator?.ObserveQuitAsync() ?? Task.FromResult(PlayerKVShutdownStatus.Ready); Task IKVUserLifecycle.ObserveKVQuitAsync() => ObserveKVQuitAsync(); - void IKVUserLoadReceiver.ResetForKVLoad() - { - if ((!loading && !closing) || published || handle != null) - throw new InvalidOperationException("KV identity must be unpublished during load/reset."); - intents?.Discard(); intents = null; - EAccoutUrl = new Dictionary(); KVTapJoyBalance = 0; - } - void IKVUserLoadReceiver.ReplaceFromKVDecoded(PlayerKVLoginState state, long loadEpoch, IReadOnlyDictionary raw) - { - if (!loading || closing || published || handle != null || state == null || raw == null) - throw new InvalidOperationException("KV load receiver is not current."); - intents = new PlayerKVInitializationIntents(loadEpoch, state.Channel); - foreach (var pair in state.Normalizations) intents.Add(loadEpoch, pair.Key, pair.Value); - EAccoutUrl = state.AccountUrls.ToDictionary(p => p.Key, p => p.Value, StringComparer.Ordinal); - KVTapJoyBalance = state.TapJoyBalance; - } - void IKVUserLoadReceiver.DiscardKVIntents() => intents?.Discard(); - - async Task SaveProfile(string key, string value) + private async Task SaveProfile(string key, string value) { + var original = handle; var store = SaveStore; - if (!IsAuthorized || store == null) throw new InvalidOperationException("KV identity unavailable."); - var result = await store.WriteAndConfirmAsync(key, value, LoginLifetime); - if (!IsAuthorized || !ReferenceEquals(store, SaveStore) || !store.IsCurrent || !result.Confirmed) - throw new InvalidOperationException("KV profile save was not confirmed."); - } - - async Task RunSaveScheduleAsync(IPlayerSaveStore store) - { + if ((!IsLogin && !loading) || !KVHandoffReady || store == null) + { + return false; + } try { - while (IsAuthorized && store.IsCurrent) - { - await Task.Delay(TimeSpan.FromSeconds(40), LoginLifetime); - if (!IsAuthorized || !store.IsCurrent) return; - var result = await store.FlushAsync(LoginLifetime); - if (!result.Confirmed && !LoginLifetime.IsCancellationRequested) - Debug.LogWarning("KV scheduled save: " + result.Status); - } + var result = await store.SyncDataImmidiate(key, value); + return ReferenceEquals(original, handle) && KVHandoffReady && + ReferenceEquals(store, SaveStore) && store.IsCurrent && result; + } + catch (OperationCanceledException) + { + return false; } - catch (OperationCanceledException) { } - catch (Exception ex) { Debug.LogError("KV save scheduler failed: " + ex.GetType().Name); } } + public async Task ChangeDisplayName(string newName) { - await SaveProfile("DisplayName", newName); - DisplayName = newName; GContext.Publish(new ChangeAvatarEvent()); UpdateProfile(); return newName; + var originName = string.IsNullOrEmpty(DisplayName) ? NewPlayerName : DisplayName; + if (!await SaveProfile("DisplayName", newName)) + { + return originName; + } + DisplayName = newName; + GContext.Publish(new ChangeAvatarEvent()); + UpdateProfileName(); + return newName; } public async Task UpdateAvatarUrl(string url) { - await SaveProfile("AvatarUrl", url); - AvatarUrl = url; GContext.Publish(new ChangeAvatarEvent()); UpdateProfile(); return url; + var originUrl = AvatarUrl; + + Debug.Log("UpdateAvatarUrlAsync originUrl:" + originUrl + " url " + url); + + if (string.IsNullOrEmpty(url)) + { + return originUrl; + } + if (url == originUrl) + { + return originUrl; + } + + if (!await SaveProfile("AvatarUrl", url)) + { + return originUrl; + } + AvatarUrl = url; + GContext.Publish(new ChangeAvatarEvent()); + UpdateProfileAvatar(); + return url; } public async Task UpdateLanguage(string code) - { await SaveProfile("Language", code); Language = code; return code; } + { + if (Language == code) + { + return Language; + } + + if (await SaveProfile("Language", code.Replace('_', '-'))) + { + Language = code; + } + return Language; + } + public void GMMMT(int value) + { + mmTestValue = value; + SaveStore.Write("MMTest", $"MMFailParam#{mmTestValue}").RequireAccepted(); + SetMMTestValue(); + } + + private void SetMMTestValue() + { + string ab = GContext.container.Resolve().Init(mmTestValue); + GEvent.SetUserProp("MMTestValue", ab, true); + Debug.Log($"UserId:{UserId} MMTestValue :0b{Convert.ToString(mmTestValue, 2)} MMTestValueString:{ab}"); + } + + protected void AvatarToKV(TYSdkFacade.AccountInfo accountInfo) + { + if (accountInfo != null && + (accountInfo.channel == EAccoutType.hwFacebook || accountInfo.channel == EAccoutType.hwGoogle) && + !string.IsNullOrEmpty(accountInfo.avatar)) + { + if (EAccoutUrl == null) + { + EAccoutUrl = new Dictionary(); + } + EAccoutUrl[accountInfo.channel.ToString()] = accountInfo.avatar; + SaveStore.Write("EAccoutUrl", JsonConvert.SerializeObject(EAccoutUrl)).RequireAccepted(); + } + } + + private void InitTapJoy() + { +#if UNITY_ANDROID + var lastBalanceStr = Read("TapJoy_Diamond").Value ?? ""; + Debug.Log($"InitTapJoy -> {lastBalanceStr}"); + var lastBalance = int.TryParse(lastBalanceStr, out var temp) ? temp : 0; + + var tapjoyObject = GameObject.FindObjectOfType(); + if (tapjoyObject && tapjoyObject.gameObject && !tapjoyObject.GetComponent()) + { + var tapjoyHelper = tapjoyObject.gameObject.AddComponent(); + GameObject.DontDestroyOnLoad(tapjoyHelper); + tapjoyHelper.Init(lastBalance, OnEarnCurrencyName, OnBalance); + } + return; + void OnEarnCurrencyName(string currencyName, int amount) + { + Debug.Log($"OnEarnCurrencyName -> {currencyName} {amount}"); + // var amount = (balance - lastBalance); + var diamonds = new ItemData { id = 1005, count = amount }; + diamonds.curCount = (ulong)GContext.container.Resolve().GetItemCount(diamonds.id); + GContext.container.Resolve().AddItem(diamonds, null); + GContext.Publish(new ShowData(new List { diamonds }, RewardType.NormalOne)); + GContext.Publish(new ShowData()); +#if AGG + using (var e = GEvent.GameEvent("tapjoy")) + { + e.AddContent("item_id", diamonds.id) + .AddContent("item_count", diamonds.count); + } +#endif + + + } + void OnBalance(string currencyName, int balance) + { + Debug.Log($"OnBalance -> {currencyName} {balance}"); + // const string tapjoyKey = "TapJoy_Diamond"; + // var lastBalanceStr = PlayFabMgr.Instance.GetLocalData(tapjoyKey) ?? ""; + // var lastBalance = int.TryParse(lastBalanceStr, out var temp) ? temp : 0; + { + // PlayFabMgr.Instance.UpdateUserDataValue(tapjoyKey, balance.ToString()); + // if (balance > lastBalance) + // { + // var amount = (balance - lastBalance); + // var diamonds = new ItemData { id = 1005, count = amount }; + // diamonds.curCount = (ulong)GContext.container.Resolve().GetItemCount(diamonds.id); + // GContext.container.Resolve().AddItem(diamonds); + // GContext.Publish(new ShowData(new List { diamonds }, RewardType.NormalOne)); + // // GContext.Publish(new ShowData(diamonds)); + // GContext.Publish(new ShowData()); + // } + } + } +#endif + } + private async void OnYinDunLogin() + { + // 开发模式下,先不启用了 + if (config != null && (config.Get("DEBUG", "0") == "1" || config.Get("GM", "0") == "1")) + { + return; + } + var userService = GContext.container.Resolve(); + var yiDunManager = GContext.container.Resolve(); + var roleName = userService.DisplayName; + var roleId = userService.UserId; + var roleAccount = userService.CustomId; + var versionData = new + { + GameVersion = Application.version, + AssetVersion = config.Get(GConstant.K_AssetVersion, string.Empty), +#if UNITY_ANDROID + Channel = GConstant.Yidun_GooglePlayChannel +#elif UNITY_IOS + Channel = GConstant.Yidun_IOSChannel +#endif + }; + Debug.Log($"JsonUtility.ToJson(versionData) => {JsonConvert.SerializeObject(versionData)}"); + + var businessId = GConstant.Yidun_AndroidBusinessId; +#if UNITY_IOS + businessId = GConstant.Yidun_IOSBusinessId; +#endif + +#if (UNITY_ANDROID || UNITY_IOS || UNITY_IPHONE) && !UNITY_EDITOR + yiDunManager.SetRoleInfo(businessId, roleId, roleName, roleAccount, null, -1, JsonConvert.SerializeObject(versionData)); + yiDunManager.PostRiskCheck(); +#endif + } + public double CreateTotalSeconds() => (ZZTimeHelper.UtcNow() - CreateTime).TotalSeconds; // The non-AGG channel has no account-link operation; never manufacture a successful binding. - public Task<(int code, int userid)> LinkAccount(EAccoutType type) => Task.FromResult((1, 0)); - public Task GetLinkState(EAccoutType type) => Task.FromResult(false); + public virtual async Task<(int code, int userid)> LinkAccount(EAccoutType type) + { + await Awaiters.NextFrame; + return (1, 0); + } + public virtual async Task GetLinkState(EAccoutType type) + { + await Awaiters.NextFrame; + return false; + } public string GetDefaultName(string id) => "Angler#" + (string.IsNullOrEmpty(id) ? string.Empty : id.Substring(0, Math.Min(5, id.Length))); public void SetPlayerLv(string id, int level) => levels[id] = id == UserId ? GContext.container.Resolve().lv : level; public int GetPlayerLv(string id) => levels.TryGetValue(id, out var level) ? level : 1; - public Task<(string, int)> GetPlayLv(string id) + public async Task<(string, int)> GetPlayLv(string id) { var level = id == UserId && IsAuthorized ? (int)GContext.container.Resolve().lv : id != null && levels.TryGetValue(id, out var cachedLevel) ? cachedLevel : -1; - return level >= 0 ? Task.FromResult((id, level)) : - Task.FromException<(string, int)>(new InvalidOperationException("Public player level has not been loaded.")); + if (level >= 0) + { + return (id, level); + } + if (id != UserId && !string.IsNullOrEmpty(id) && !levels.ContainsKey(id)) + { + var json = await customServerMgr.FriendRequest("SearchFriend", new SearchFriendReq { PlayFabId = id }); + if (!string.IsNullOrEmpty(json)) + { + SearchFriendResp response = null; + try + { + response = Newtonsoft.Json.JsonConvert.DeserializeObject(json); + } + catch (Newtonsoft.Json.JsonException ex) + { + Debug.LogError("KV player level response failed: " + ex.GetType().Name); + } + if (response != null && response.Code > 0 && response.KvProfile != null) + { + level = response.KvProfile.Level ?? 1; + if (level >= 0) + { + levels[id] = level; + return (id, level); + } + } + } + } + throw new InvalidOperationException("Public player level has not been loaded."); } public PlayInfo GetPlayInfo(string id) { @@ -296,7 +739,7 @@ namespace game } return profile; } - async void SetPlayInfo(string id, PlayInfo profile) + private async void SetPlayInfo(string id, PlayInfo profile) { if (id == UserId) { @@ -306,27 +749,63 @@ namespace game return; } var json = await customServerMgr.FriendRequest("SearchFriend", new SearchFriendReq { PlayFabId = id }); - if (string.IsNullOrEmpty(json)) return; + if (string.IsNullOrEmpty(json)) + { + return; + } SearchFriendResp result; - try { result = Newtonsoft.Json.JsonConvert.DeserializeObject(json); } + try + { + result = Newtonsoft.Json.JsonConvert.DeserializeObject(json); + } catch (Newtonsoft.Json.JsonException ex) { Debug.LogError("KV player profile response failed: " + ex.GetType().Name); return; } - if (result != null && result.Code > 0 && result.Info != null) + if (result != null && result.Code > 0 && result.KvProfile != null) { - if (!string.IsNullOrEmpty(result.Info.DisplayName)) profile.name = result.Info.DisplayName; - profile.avatarUrl = result.Info.AvatarUrl; + if (!string.IsNullOrEmpty(result.KvProfile.DisplayName)) + { + profile.name = result.KvProfile.DisplayName; + } + profile.avatarUrl = result.KvProfile.AvatarUrl; GContext.Publish(new GetClubPlayInfoEvent { id = id, name = profile.name, avatarUrl = profile.avatarUrl }); } } public void SetPlayInfo(string id, string name, string avatarUrl) { - if (string.IsNullOrEmpty(id)) return; - profiles[id] = new PlayInfo { name = string.IsNullOrEmpty(name) ? GetDefaultName(id) : name, avatarUrl = avatarUrl }; + profiles[id] = new PlayInfo + { + name = string.IsNullOrEmpty(name) ? GetDefaultName(id) : name, + avatarUrl = avatarUrl + }; } public void ClearPlayInfos() { profiles.Clear(); levels.Clear(); } + private void UpdateProfileName() + { + if (!IsAuthorized) + { + return; + } + + PlayerProfile playerProfile = new PlayerProfile(); + playerProfile.DisplayName = DisplayName; + LoginRequest loginRequest = new LoginRequest() { playerId = ApiPlayerId, playerProfile = playerProfile }; + customServerMgr.AccountRequest("UpdateProfile", loginRequest); + } + private void UpdateProfileAvatar() + { + if (!IsAuthorized) + { + return; + } + + PlayerProfile playerProfile = new PlayerProfile(); + playerProfile.Avatar = AvatarUrl; + LoginRequest loginRequest = new LoginRequest() { playerId = ApiPlayerId, playerProfile = playerProfile }; + customServerMgr.AccountRequest("UpdateProfile", loginRequest); + } public void UpdateProfile() { if (IsAuthorized) customServerMgr.AccountRequest("UpdateProfile", new LoginRequest { playerId = ApiPlayerId, diff --git a/Client/Assets/Scripts/Services/PlayerData/IKVUserLoadReceiver.cs b/Client/Assets/Scripts/Services/PlayerData/IKVUserLoadReceiver.cs deleted file mode 100644 index b020b8ab4..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/IKVUserLoadReceiver.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; - -namespace game.PlayerDataStorage -{ - internal interface IKVUserLoadReceiver - { - void ResetForKVLoad(); - void ReplaceFromKVDecoded(PlayerKVLoginState state, long epoch, IReadOnlyDictionary raw); - void DiscardKVIntents(); - } -} diff --git a/Client/Assets/Scripts/Services/PlayerData/IPlayerSaveStore.cs b/Client/Assets/Scripts/Services/PlayerData/IPlayerSaveStore.cs index 7cecbabbf..705610852 100644 --- a/Client/Assets/Scripts/Services/PlayerData/IPlayerSaveStore.cs +++ b/Client/Assets/Scripts/Services/PlayerData/IPlayerSaveStore.cs @@ -10,9 +10,7 @@ namespace game.PlayerDataStorage bool IsCurrent { get; } PlayerSaveReadResult Read(string key); PlayerSaveWriteResult Write(string key, string value, bool remoteStore = true); - Task WriteAndConfirmAsync(string key, string value, CancellationToken token = default); - Task ConfirmAsync(PlayerSaveReceipt receipt, CancellationToken token = default); - Task FlushAsync(CancellationToken token = default); + Task SyncDataImmidiate(string key, string value); } public sealed class PlayerSaveReadResult @@ -50,13 +48,4 @@ namespace game.PlayerDataStorage } } - // Buffered and LocalOnly are deliberately different from cloud confirmation. - public enum PlayerSaveStatus { Confirmed, Buffered, LocalOnly, Rejected, Superseded, Unknown, Cancelled } - public sealed class PlayerSaveConfirmation - { - public PlayerSaveStatus Status { get; } - public bool Confirmed => Status == PlayerSaveStatus.Confirmed; - public string Error { get; } - internal PlayerSaveConfirmation(PlayerSaveStatus status, string error = null) { Status = status; Error = error; } - } } diff --git a/Client/Assets/Scripts/Services/PlayerData/Module02OriginalLoadTests.cs b/Client/Assets/Scripts/Services/PlayerData/Module02OriginalLoadTests.cs new file mode 100644 index 000000000..a3433ce26 --- /dev/null +++ b/Client/Assets/Scripts/Services/PlayerData/Module02OriginalLoadTests.cs @@ -0,0 +1,609 @@ +#if UNITY_EDITOR +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Reflection; +using System.Runtime.ExceptionServices; +using System.Threading; +using System.Threading.Tasks; +using asap.core; +using GameCore; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; + +namespace game.PlayerDataStorage +{ + // Editor-only probes of the existing business methods; no production decoding or reset graph. + internal static class Module02OriginalLoadTests + { + private const BindingFlags InstanceFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public; + private static bool running; + private static bool ContainsPayload(JToken actual, JToken expected) + { + if (expected is JObject obj) + { + return actual is JObject && obj.Properties().All(p => ContainsPayload(actual[p.Name], p.Value)); + } + + if (expected is JArray array) + { + return actual is JArray other && array.Count == other.Count && Enumerable.Range(0, array.Count).All(i => ContainsPayload(other[i], array[i])); + } + + return JToken.DeepEquals(actual, expected); + } + + internal static T Field(object target, string name) + { + return (T)target.GetType().GetField(name, InstanceFlags).GetValue(target); + } + + private static void Invoke(object target, string name, params object[] arguments) + { + try + { + target.GetType().GetMethod(name, InstanceFlags).Invoke(target, arguments); + } + catch (TargetInvocationException ex)when (ex.InnerException != null) + { + ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); + throw; + } + } + + internal static void LoadCore(PlayerData player, IDictionary modern) + { + typeof(PlayerData).GetField("NewPlayerDataDic", InstanceFlags).SetValue(player, new Dictionary(modern)); + Invoke(player, "SetPlayerData"); + } + + internal static void LoadCore(PlayerData player, object[] slots) + { + LoadCore(player, new Dictionary { ["newData"] = string.Join(",", slots.Select(value => Convert.ToString(value, CultureInfo.CurrentCulture))), ["vipL"] = "-1,1" }); + } + + internal static void LoadGuide(GuideDataCenter guide, IDictionary raw) + { + if (raw.TryGetValue("GuideSaveData", out var legacy)) + { + guide.GuideSaveDataDic = JsonConvert.DeserializeObject>(legacy); + } + + if (raw.TryGetValue("GuideSaveDataNew", out var modern)) + { + guide.SetData(modern); + } + } + + private sealed class ContextAccess : GContext + { + protected override Task SetupAsync() + { + throw new InvalidOperationException("Validation context cannot start gameplay."); + } + + internal static void Use(Container value) + { + container = value; + } + + internal static IEventAggregator Events { get => eventAggregator; set => eventAggregator = value; } + } + + private sealed class MemoryStore : IPlayerSaveStore + { + private readonly Dictionary data = new Dictionary(); + internal readonly List Writes = new List(); + public bool IsCurrent => true; + + public PlayerSaveReadResult Read(string key) + { + return new PlayerSaveReadResult(data.TryGetValue(key, out var value), value); + } + + public PlayerSaveWriteResult Write(string key, string value, bool remoteStore = true) + { + data[key] = value; + Writes.Add(key); + return new PlayerSaveWriteResult(new PlayerSaveReceipt(this, null)); + } + + public Task SyncDataImmidiate(string key, string value) + { + Write(key, value); + return Task.FromResult(true); + } + + + } + + private sealed class FaceObserver : IFaceUIService + { + internal readonly List Calls = new List(); + public void AddFaceCustomUIData(UIType type, bool first = false) + { + } + + public void ShowFaceUI(string value = "") + { + } + + public void AddGiftFaceUIForce(int id, UIType type) + { + Calls.Add("force:" + id + ":" + type); + } + + public void AddGiftFaceUIOnLogin(int id, UIType type, int priority) + { + } + + public void AddGiftFaceUI(int id, UIType type, int priority = 0) + { + Calls.Add("gift:" + id + ":" + type + ":" + priority); + } + + public int GetFaceUICount() => Calls.Count; + public void StopFaceUI() + { + } + + public void AddPostFaceUI(UIType type) + { + } + + public void ShowPostFaceUI() + { + } + + public int GetPostFaceUICount() => 0; + public void StopPostFaceUI() + { + } + } + + private sealed class Fixture : IDisposable + { + private readonly Container previous = GContext.container; + private readonly IEventAggregator previousEvents = ContextAccess.Events; + private readonly Container isolated = new Container(); + private readonly string previousPinataPath = UITypes.PinataPack_PonyPanel.Path; + private readonly string previousPinataName = UITypes.PinataPack_PonyPanel.Name; + private readonly Dictionary previousUITypes = new Dictionary(UITypes.UITypesDic); + private readonly object previousRedPoints = typeof(RedPointManager).GetField("instance", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null); + internal readonly cfg.Tables Tables; + internal readonly PlayerData Player; + internal readonly PlayerFishData Fish; + internal readonly FishingEventData Events; + internal readonly PlayerShopData Shop; + internal readonly GuideDataCenter Guide; + internal readonly BattlePassData Battle; + internal readonly MemoryStore Store = new MemoryStore(); + internal readonly FaceObserver Face = new FaceObserver(); + internal Fixture() + { + var directory = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, "../../cfgData")); + Tables = new cfg.Tables(name => SimpleJSON.JSON.Parse(System.IO.File.ReadAllText(System.IO.Path.Combine(directory, name + ".json")))); + ContextAccess.Use(isolated); + ContextAccess.Events = new EventAggregator(); + typeof(RedPointManager).GetField("instance", BindingFlags.Static | BindingFlags.NonPublic).SetValue(null, new RedPointManager()); + Register(Tables); + isolated.RegisterInstance(Face); + Player = Register(new PlayerData(Tables, null) { playerSaveStore = Store }); + Register(new SmallGameData(Tables, null, null)); + Fish = Register(new PlayerFishData(Tables, null)); + Events = Register(new FishingEventData(Tables)); + Shop = Register(new PlayerShopData { _tables = Tables, SaveStore = Store }); + Register(new BuffDataCenter(Tables)); + Register(new CampDataMM(Tables, null)); + Register(new AchievementDataManager(Tables)); + Register(new FishingBoxData()); + Guide = Register(new GuideDataCenter(Tables, Player)); + Battle = Register(new BattlePassData(Tables) { playerSaveStore = Store }); + Register(new SigninData(Tables)); + Register(new TriggerPackData(Tables)); + Register(new ClubService(false)); + Register(new FishingChallengeManager()); + Register(new DataCenter.OfferChainsChestManager()); + Register(new DataCenter.OfferDiscoPartyManager()); + Register(new DataCenter.EventPartnerGatherManager()); + Register(new EventCubeMeltManager()); + Register(new EventPackData()); + Register(new PiggyBankPackData()); + Register(new BargainPackData()); + isolated.RegisterInstance(new FootPrintService()); + Register(new EventShootingRangeData()); + Register(new EventPotionDataManager()); + Register(new EventPinballDataManager()); + Register(new EventScratchTicketDataManager()); + Register(new Script.RuntimeScript.DiggingGameManager()); + Register(new PlayerItemData(Tables)); + // Original constructor, after its existing dependencies are available. + Register(new EventPinataPackDataManager()); + } + + private T Register(T instance) + where T : class + { + isolated.RegisterInstance(instance); + return instance; + } + + internal T Get() + where T : class + { + return isolated.Resolve(); + } + + public void Dispose() + { + ContextAccess.Use(previous); + ContextAccess.Events = previousEvents; + typeof(RedPointManager).GetField("instance", BindingFlags.Static | BindingFlags.NonPublic).SetValue(null, previousRedPoints); + UITypes.PinataPack_PonyPanel.SetType(previousPinataPath); + UITypes.PinataPack_PonyPanel.SetName(previousPinataName); + UITypes.UITypesDic.Clear(); + foreach (var pair in previousUITypes) + { + UITypes.UITypesDic[pair.Key] = pair.Value; + } + + isolated.Dispose(); + } + } + + internal static string InspectRaw(Dictionary raw) + { + using (var fixture = new Fixture()) + { + fixture.Player.LoadPlayerData(raw); + return JsonConvert.SerializeObject(new { originalLoad = true, keys = raw.Count, level = (int)fixture.Player.lv, writes = fixture.Store.Writes, faceCalls = fixture.Face.Calls, formalRequests = 0 }); + } + } + + internal static Task RunAsync(string caseId) + { + if (running || EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || EditorApplication.isUpdating || GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0 || PlayerKVGameplayLoop.Enabled) + { + throw new InvalidOperationException("Original load validation requires an idle isolated Editor."); + } + + running = true; + var previousContainer = GContext.container; + var previousEvents = ContextAccess.Events; + var previousDiff = ZZTimeHelper.timeDiff; + var previousOffset = ZZTimeHelper.LocalTimeOffsetInSec; + var traces = new List(); + int assertions = 0; + string failure = null; + void Check(bool condition, string name) + { + assertions++; + if (!condition) + { + throw new InvalidOperationException(name); + } + } + + try + { + // Baseline executes the unchanged original method; target executes the KV private common entry. + // The third path deliberately reproduces the former pre-adjust load for a visible counterexample. + foreach (var seconds in new[] + { + -1, + 1 + } + + ) + { + foreach (var offset in new[] + { + -3600, + 3600 + } + + ) + { + var outputs = new List<(int eventId, DateTime energyTime, int limitedCount)>(); + foreach (var path in new[] + { + "original-after-adjust", + "kv-after-adjust", + "previous-before-adjust" + } + + ) + { + using (var fixture = new Fixture()) + { + var boundary = new DateTime(2026, 9, 23, 0, 0, 0, DateTimeKind.Utc); + var selected = fixture.Tables.TbFishingEvent.DataList.First(e => e.TimeDefinition is cfg.LimitedTime && fixture.Tables.TbEventPackManager.GetOrDefault(e.RedirectID)?.PackType == 3); + var time = (cfg.LimitedTime)selected.TimeDefinition; + var globalOffset = offset < 0 ? -9 : 9; + typeof(cfg.GlobalConfig).GetProperty("GlobalTimeOffset").SetValue(Field(fixture.Tables.TbGlobalConfig, "_data"), globalOffset); + typeof(cfg.LimitedTime).GetProperty("StartTime").SetValue(time, boundary.AddDays(-1).ToString("yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture)); + typeof(cfg.LimitedTime).GetProperty("EndTime").SetValue(time, boundary.ToString("yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture)); + var raw = new Dictionary + { + ["MMTest"] = "MMFailParam#0", + ["EventPackData"] = JsonConvert.SerializeObject(new { currentEventID = selected.ID, purchaseCount = 2, redirectID = selected.RedirectID }), + ["LimitedTimeEventDic"] = JsonConvert.SerializeObject(new Dictionary { [900001] = new { id = 900001, duration = 2, startTime = boundary.AddHours(-globalOffset).AddMinutes(-2).ToString("yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture) } }) + }; + ZZTimeHelper.LocalTimeOffsetInSec = offset; + var desired = boundary.AddSeconds(seconds); + ZZTimeHelper.AdjustTime((path == "previous-before-adjust" ? boundary.AddDays(2) : desired).AddSeconds(-offset)); + if (path == "kv-after-adjust") + { + var user = new KVUserService + { + SaveStore = fixture.Store + }; + Invoke(user, "InitializePlayerData", raw); + } + else + { + fixture.Player.LoadPlayerData(raw); + } + + var eventId = fixture.Get().CurrentEventID; + var energyTime = Field(fixture.Player, "_lastEnergyRecoveryTime"); + var limitedCount = ((System.Collections.IDictionary)Field(fixture.Events, "limitedTimeEventDic")).Count; + outputs.Add((eventId, energyTime, limitedCount)); + traces.Add(new { path, seconds, offset, globalOffset, desired, eventId, energyTime, limitedCount, faceCalls = fixture.Face.Calls.ToArray(), writes = fixture.Store.Writes.ToArray() }); + Check(fixture.Face.Calls.Count == 0, "M20 original commented UI remains inactive"); + } + } + + Check(outputs[0].eventId == outputs[1].eventId, "Original and KV activity boundary match"); + Check(outputs[0].limitedCount == outputs[1].limitedCount && outputs[0].limitedCount == (seconds < 0 ? 1 : 0), "LimitedTime expiry uses original global offset on both paths"); + Check(Math.Abs((outputs[0].energyTime - outputs[1].energyTime).TotalSeconds) < 1, "Original and KV energy clock match"); + Check(outputs[0].eventId == (seconds < 0 ? 0 : outputs[2].eventId), "M20 original expiry/reset semantics"); + Check(Math.Abs((outputs[2].energyTime - outputs[1].energyTime).TotalHours) > 24, "Old load-before-adjust clock counterexample is real"); + } + } + + // Existing refresh lifecycle is tested separately; login loading must not invoke it early. + foreach (var globalOffset in new[] + { + -9, + 9 + } + + ) + { + foreach (var seconds in new[] + { + -1, + 1 + } + + ) + { + using (var fixture = new Fixture()) + { + typeof(cfg.GlobalConfig).GetProperty("GlobalTimeOffset").SetValue(Field(fixture.Tables.TbGlobalConfig, "_data"), globalOffset); + var eventData = fixture.Tables.TbFishingEvent.DataList.First(e => fixture.Tables.TbBattlePassMain.GetOrDefault(e.RedirectID) != null); + fixture.Battle.BattlePassRecord.ID = eventData.ID; + using (var provider = new BattlePassDataProvider(fixture.Tables, fixture.Battle, fixture.Get())) + { + GContext.container.RegisterInstance(provider); + ZZTimeHelper.LocalTimeOffsetInSec = 0; + var desired = new DateTime(2026, 9, 27, 0, 0, 0, DateTimeKind.Utc).AddHours(globalOffset).AddSeconds(seconds); + ZZTimeHelper.AdjustTime(desired); + fixture.Battle.RefreshDaiyTask(); + fixture.Battle.RefreshWeeklyTask(); + var offsetNow = ZZTimeHelper.UtcNow().UtcNowOffset(); + Check(fixture.Battle.BattleTask.DailyTaskEndTime == ConvertTools.GetDateTimeYMD(offsetNow).AddDays(1), "BP original daily lifecycle boundary"); + Check(fixture.Battle.BattleTask.WeeklyTaskEndTime == ConvertTools.GetDateTimeSunDay(offsetNow).AddDays(1), "BP original weekly lifecycle boundary"); + Check(fixture.Store.Writes.Contains("BattlePassRecordTask"), "BP original lifecycle saves through existing store"); + traces.Add(new { path = "original-BP-refresh-lifecycle", globalOffset, seconds, desired, dailyEnd = fixture.Battle.BattleTask.DailyTaskEndTime, weeklyEnd = fixture.Battle.BattleTask.WeeklyTaskEndTime, writes = fixture.Store.Writes.ToArray() }); + } + } + } + } + + using (var fixture = new Fixture()) + { + var boundary = new DateTime(2026, 9, 23, 0, 0, 0, DateTimeKind.Utc); + fixture.Player.LoadPlayerData(new Dictionary()); + ZZTimeHelper.LocalTimeOffsetInSec = 0; + ZZTimeHelper.AdjustTime(boundary.AddSeconds(-1)); + var selected = fixture.Tables.TbFishingEvent.DataList.First(e => e.TimeDefinition is cfg.LimitedTime && fixture.Tables.TbEventPackManager.GetOrDefault(e.RedirectID)?.PackType == 3); + var limit = (cfg.LimitedTime)selected.TimeDefinition; + typeof(cfg.LimitedTime).GetProperty("StartTime").SetValue(limit, boundary.AddDays(-1).ToString("yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture)); + typeof(cfg.LimitedTime).GetProperty("EndTime").SetValue(limit, boundary.ToString("yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture)); + var bargain = fixture.Get(); + var pack = fixture.Tables.TbEventPackManager[selected.RedirectID]; + var packId = pack.VIPPackList[0][0]; + var saved = new GeneralEventPackData(eventID: selected.ID, redirectID: selected.RedirectID, vip: 0, purchaseCount: 0, isTriggered: true, savingProgress: int.MaxValue, discountLvl: fixture.Tables.TbSpecialPack[packId].IAPID.Count - 1, inflation: 1); + bargain.LoadData(saved); + Check(fixture.Face.Calls.Count == 1 && fixture.Face.Calls[0].StartsWith("force:" + selected.ID + ":"), "M22 original full active bargain registers original UI once"); + saved.isTriggered = false; + bargain.LoadData(saved); + Check(fixture.Face.Calls.Count == 1, "M22 untriggered bargain does not register UI"); + saved.isTriggered = true; + ZZTimeHelper.AdjustTime(boundary.AddSeconds(1)); + bargain.LoadData(saved); + Check(fixture.Face.Calls.Count == 1, "M22 expired bargain does not register UI"); + traces.Add(new { path = "original-bargain-side-effects", calls = fixture.Face.Calls.ToArray() }); + fixture.Face.Calls.Clear(); + var pinataEvent = fixture.Tables.TbFishingEvent.DataList.First(e => e.Type == 9 && e.SubType == 6 && e.TimeDefinition is cfg.LimitedTime && fixture.Tables.TbEventPinataPackMain.GetOrDefault(e.RedirectID) != null); + foreach (var ev in fixture.Tables.TbFishingEvent.DataList.Where(e => e.Type == 9 && e.SubType == 6)) + { + if (ev.TimeDefinition is cfg.LimitedTime other) + { + typeof(cfg.LimitedTime).GetProperty("StartTime").SetValue(other, boundary.AddDays(-2).ToString("s")); + typeof(cfg.LimitedTime).GetProperty("EndTime").SetValue(other, boundary.AddDays(-1).ToString("s")); + } + } + + var pinataTime = (cfg.LimitedTime)pinataEvent.TimeDefinition; + typeof(cfg.LimitedTime).GetProperty("StartTime").SetValue(pinataTime, boundary.AddDays(-1).ToString("s")); + typeof(cfg.LimitedTime).GetProperty("EndTime").SetValue(pinataTime, boundary.ToString("s")); + typeof(cfg.FishingEvent).GetProperty("ConditionList").SetValue(pinataEvent, new List { new cfg.EventCondition(cfg.ConditionType.AccountLevel, new List { "1" }, "") }); + ZZTimeHelper.AdjustTime(boundary.AddSeconds(-1)); + var pinata = fixture.Get(); + pinata.LoadData("{\"EventID\":0,\"PinataMainID\":0,\"PurchasedCount\":7}"); + var target = fixture.Get(); + Check(target.EventID == pinataEvent.ID && target.PurchasedCount == 0 && fixture.Face.Calls.Count == 1, "M29 original changed event refreshes purchase state and registers UI"); + pinata.LoadData(JsonConvert.SerializeObject(new { target.EventID, target.PinataMainID, PurchasedCount = 1 })); + Check(target.PurchasedCount == 1 && fixture.Face.Calls.Count == 1, "M29 same event preserves purchase count without repeated UI"); + ZZTimeHelper.AdjustTime(boundary.AddSeconds(1)); + pinata.GetFreshPinataPackData(); + Check(fixture.Face.Calls.Count == 1, "M29 expired event does not add UI"); + traces.Add(new { path = "original-pinata-side-effects", calls = fixture.Face.Calls.ToArray(), target.EventID, target.PinataMainID, target.PurchasedCount }); + } + + using (var fixture = new Fixture()) + { + var raw = PlayerKVEditorValidationHost.FullRaw(fixture.Tables, true); + fixture.Player.LoadPlayerData(raw); + Check((int)fixture.Player.lv == 3 && (ulong)fixture.Player.gold == 999 && (int)fixture.Player.Energy == 5, "Original newData wins over defaults"); + Check(fixture.Shop.Voucher == 6 && fixture.Shop.shopPackDailyBuyCount["x"] == 1, "Shop numeric dictionaries"); + Check(fixture.Events.TurntableCoupon == 7 && fixture.Events.WheelLevelCount[5] == 6, "Event original defaults and saved counts"); + Check(fixture.Guide.GuideSaveDataDic["A"].guideSubIndex == 3 && fixture.Guide.GuideSaveDataDic["A"].isFinish, "Guide original modern format"); + Check(fixture.Battle.BattlePassRecord.Level == 2 && fixture.Battle.BattleTask.dic_dailyTasks[9] == 10, "BP legacy values"); + var small = fixture.Get(); + Check(small.HeistGameCount == 12 && small.BombGameCount == 13 && small.FishHuntGameCount == 14, "Original small game slots"); + Check(Field>(fixture.Get(), "CampDataDic")["CampId"] == 205, "Original Camp dictionary"); + Check(Field>(fixture.Get(), "mapBuffDataList")[7].buffID == 3, "Original buff deserialization"); + Check(fixture.Get().GetString() == "1,2", "Original modern box replaces legacy"); + Check(fixture.Get().monthlySignEvent.index == 4 && fixture.Get().dailySignEvent.index == 2, "Original monthly sign history"); + Check(fixture.Get().triggerPackList[0].vipLevel == 4, "Original trigger pack history"); + foreach (var sample in new[] + { + ("FishingChallengeData", (object)fixture.Get().fishingChallengeData), + ("OfferChainsChestData", (object)fixture.Get().OfferChainsData), + ("OfferDiscoPartyManager", (object)fixture.Get().OfferDiscoPartyData), + ("EventPartnerGatherData", (object)fixture.Get().GatherData), + ("EventCubeMeltData", (object)fixture.Get().EventData), + ("epdk", (object)fixture.Get().PotionData), + ("estdk", (object)fixture.Get().ScratchTicketData) + } + + ) + { + var expected = JToken.Parse(raw[sample.Item1]); + if (sample.Item1 == "OfferDiscoPartyManager") + { + ((JObject)expected).Remove("ChestReward"); + ((JObject)expected).Remove("Finished"); + } + + Check(ContainsPayload(JToken.FromObject(sample.Item2), expected), "Original numeric/history payload: " + sample.Item1); + } + + var pinball = fixture.Get(); + Check(pinball.PinballData.Token == 11 && pinball.RewardList.SequenceEqual(fixture.Tables.TbEventPinballReward.DataList.Select(r => (float)r.SpinPoint)), "Original Pinball initializes reward configuration"); + Check(!Field(pinball, "m_IsSimulatorMode"), "Original Pinball exits simulator mode"); + Check(fixture.Events.ThanksGivingPackData.EventId == 1 && fixture.Events.ThanksGivingPackData.ChainProgress == 4 && fixture.Events.ChainPackWithProgressMigrationData.EventId == 5 && fixture.Events.ChainPackWithProgressMigrationData.ChainProgress == 8, "Two original progress keys remain independent"); + var achievement = fixture.Get(); + achievement.LoadAchievementDataToObject("{\"0\":\"7|18446744073709551615|9\"}"); + Check(Field>(achievement, "_achievementDatas")[(cfg.ConditionType)0].Target == ulong.MaxValue, "Original achievement preserves ulong maximum"); + Check(fixture.Get().IsOpenClubRed == false, "Club key existence rule"); + Check(fixture.Get().PurchaseCount == 2, "Unknown EventPack preserves parsed data"); + Check(fixture.Get().PurchaseCount == 11, "Bargain original data"); + Check(fixture.Get().PurchaseCount == 11, "Piggy original data"); + Check(fixture.Get().FootPrint == (EFootPrint)ulong.Parse(raw["FootPrint"]), "Original FootPrint enum conversion"); + var model = fixture.Get().DataModel; + fixture.Player.LoadPlayerData(new Dictionary()); + Check(ReferenceEquals(model, fixture.Get().DataModel), "Digging original existing model retained"); + Check(fixture.Shop.shopPackDailyBuyCount["x"] == 1 && fixture.Get().PurchaseCount == 11, "Retry missing keys retains original existing objects"); + traces.Add(new { path = "full-original-and-missing-key-retry", keys = raw.Keys.ToArray(), writes = fixture.Store.Writes.ToArray(), faceCalls = fixture.Face.Calls.ToArray() }); + } + + using (var fixture = new Fixture()) + { + var rod = fixture.Tables.TbGlobalConfig.InitRodID; + foreach (var count in new[] + { + 19, + 20 + } + + ) + { + var slots = new object[] + { + 9, + 23UL, + 0, + -4, + 5, + 6, + -999, + new DateTime(2026, 1, 1), + 0, + 8, + 7UL, + 0, + 0, + 0, + 0, + 0, + 2, + 3, + 4, + 99 + }.Take(count).ToArray(); + var raw = new Dictionary + { + ["Lv"] = "2", + ["Energy"] = "10", + ["EquipRodID"] = rod.ToString(), + ["NewPlayerDataDic"] = JsonConvert.SerializeObject(new Dictionary { ["LV"] = "4", ["newData"] = string.Join(",", slots), ["vipL"] = "-1,1" }) + }; + fixture.Player.LoadPlayerData(raw); + Check((int)fixture.Player.lv == 9 && fixture.Player.Energy == 0 && fixture.Player.equipRodID == rod, "19 and 20 slots original override/clamp/rod fallback"); + } + + fixture.Shop.CouponData.LoadData("2026,9,23,1,2,3,14"); + Check(fixture.Shop.CouponData.RedirectId == 0 && !fixture.Shop.CouponData.IsBought, "Seven-field coupon history"); + fixture.Shop.CouponData.LoadData("2026,9,23,1,2,3,14,15,1"); + Check(fixture.Shop.CouponData.RedirectId == 15 && fixture.Shop.CouponData.IsBought, "Nine-field coupon history"); + var compressed = fixture.Battle.BattlePassRecord.SerializeObject() + "#" + fixture.Battle.BattleTask.SerializeObject(); + fixture.Battle.InitData(new Dictionary { ["BattlePassRecordTask"] = compressed, ["BattlePassRecord"] = "bad JSON", ["BattleTask"] = "bad JSON" }); + Check(fixture.Battle.BattlePassRecord != null && fixture.Battle.BattleTask != null, "Compressed BP takes precedence without parsing conflicting legacy"); + var realFish = fixture.Tables.TbFishData.DataList.First(f => fixture.Tables.TbMapData.DataMap.ContainsKey(f.AreaID)); + fixture.Fish.InitData(new Dictionary { ["Map_5_" + realFish.AreaID] = JsonConvert.SerializeObject(new Dictionary { [realFish.ID] = "0|7|2|3|True" }), ["Map_" + realFish.AreaID] = "bad legacy JSON" }); + var parsedFish = Field>>(fixture.Fish, "mapFishData")[realFish.AreaID][realFish.ID]; + Check(parsedFish.TotalNum == 3 && parsedFish.NewFish, "Map_5 takes precedence over broken legacy map with original weight correction"); + fixture.Player.LoadPlayerData(new Dictionary { ["GuideSaveData"] = "bad JSON", ["GuideSaveDataNew"] = "K|bad|1", ["LimitedTimeEventDic"] = "bad JSON", ["epdk"] = "", ["epbdk"] = "bad JSON", ["estdk"] = "bad JSON", ["Lv"] = "17" }); + Check((int)fixture.Player.lv == 17 && fixture.Guide.GuideSaveDataDic["K"].guideSubIndex == 0, "Original local catches continue and Guide TryParse default"); + Exception thrown = null; + try + { + fixture.Player.LoadPlayerData(new Dictionary { ["IsFix"] = "invalid-bool" }); + } + catch (FormatException ex) + { + thrown = ex; + } + + Check(thrown != null && thrown.StackTrace.Contains("InitData"), "Original external parse exception is not Schema rejection"); + fixture.Player.LoadPlayerData(new Dictionary { ["Lv"] = "19" }); + Check((int)fixture.Player.lv == 19, "Original load can retry after failure without uniform reset"); + } + } + catch (Exception ex) + { + failure = ex.ToString(); + } + finally + { + ZZTimeHelper.timeDiff = previousDiff; + ZZTimeHelper.LocalTimeOffsetInSec = previousOffset; + ContextAccess.Use(previousContainer); + ContextAccess.Events = previousEvents; + running = false; + } + + var restored = ReferenceEquals(GContext.container, previousContainer) && ReferenceEquals(ContextAccess.Events, previousEvents) && ZZTimeHelper.timeDiff == previousDiff && ZZTimeHelper.LocalTimeOffsetInSec == previousOffset; + return Task.FromResult(JsonConvert.SerializeObject(new { success = failure == null && restored, caseId, assertions, traces, failure, restored, formalRequests = 0, baseline = "f40a816cc414fc4f30d67626d060d90fdc5eaca3 original business methods (source comparison required)", playerFabNetworkLoginExecuted = false })); + } + } +} +#endif + diff --git a/Client/Assets/Scripts/Services/PlayerData/IKVUserLoadReceiver.cs.meta b/Client/Assets/Scripts/Services/PlayerData/Module02OriginalLoadTests.cs.meta similarity index 83% rename from Client/Assets/Scripts/Services/PlayerData/IKVUserLoadReceiver.cs.meta rename to Client/Assets/Scripts/Services/PlayerData/Module02OriginalLoadTests.cs.meta index 2aee7536c..1d434452e 100644 --- a/Client/Assets/Scripts/Services/PlayerData/IKVUserLoadReceiver.cs.meta +++ b/Client/Assets/Scripts/Services/PlayerData/Module02OriginalLoadTests.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8cda3d2b981ada043af2162ca707d8bf +guid: 04d2914963285d343b5a0e9503b59390 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVClient.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVClient.cs index d5e8938d1..f23c3eb23 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVClient.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVClient.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Net; using System.Net.Http; @@ -98,7 +99,8 @@ namespace game.PlayerDataStorage if (mutation) return new PlayerKVResult(PlayerKVError.None, status); var text = await response.Content.ReadAsStringAsync(); token.ThrowIfCancellationRequested(); - return new PlayerKVResult(PlayerKVError.None, status, ParseData(text)); + var data = ParseData(text, out var updatedAtUtc); + return new PlayerKVResult(PlayerKVError.None, status, data, updatedAtUtc: updatedAtUtc); } } } @@ -125,18 +127,50 @@ namespace game.PlayerDataStorage } } - static Dictionary ParseData(string text) + private static Dictionary ParseData(string text, out Dictionary updatedAtUtc) { + updatedAtUtc = null; using (var reader = new JsonTextReader(new StringReader(text)) { DateParseHandling = DateParseHandling.None }) { var body = JObject.Load(reader, new JsonLoadSettings { DuplicatePropertyNameHandling = DuplicatePropertyNameHandling.Error }); - if (reader.Read() || !(body["data"] is JObject data)) throw new JsonReaderException("Invalid KV response."); + if (reader.Read() || !(body["data"] is JObject data)) + { + throw new JsonReaderException("Invalid KV response."); + } var result = new Dictionary(StringComparer.Ordinal); foreach (var property in data.Properties()) { - if (property.Value.Type != JTokenType.String) throw new JsonReaderException("KV value must be a string."); + if (property.Value.Type != JTokenType.String) + { + throw new JsonReaderException("KV value must be a string."); + } result.Add(property.Name, property.Value.Value()); } + var timestamps = body.Property("updatedAtUtc"); + if (timestamps != null) + { + if (!(timestamps.Value is JObject times) || times.Count != result.Count) + { + throw new JsonReaderException("Invalid KV timestamp metadata."); + } + updatedAtUtc = new Dictionary(StringComparer.Ordinal); + var formats = new[] { "yyyy-MM-dd'T'HH:mm:ss'Z'", "yyyy-MM-dd'T'HH:mm:ss.FFFFFFF'Z'" }; + foreach (var property in times.Properties()) + { + if (!result.ContainsKey(property.Name) || property.Value.Type != JTokenType.String) + { + throw new JsonReaderException("Invalid KV timestamp entry."); + } + var value = property.Value.Value(); + if ((value.Length != 20 && (value.Length < 22 || value.Length > 28)) || + !DateTime.TryParseExact(value, formats, CultureInfo.InvariantCulture, + DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal, out var timestamp)) + { + throw new JsonReaderException("KV timestamp must be UTC ISO 8601."); + } + updatedAtUtc.Add(property.Name, timestamp); + } + } return result; } } diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVControlledLoadCapability.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVControlledLoadCapability.cs index 0326815b3..f99e8f437 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVControlledLoadCapability.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVControlledLoadCapability.cs @@ -7,12 +7,9 @@ using game.Account; namespace game.PlayerDataStorage { - // The lease-only capability remains source-compatible with the independent 4B1 regression host. - // This separate capability supplies every dependency required by a complete controlled load. + // Prebuild distinct transports with one cookie jar, then transfer each owned handler once. internal sealed class PlayerKVGameLoadCapability { - internal PlayerKVIdentitySnapshot Identity { get; } - internal PlayerKVSchemaSnapshot Snapshot { get; } internal Uri Api { get; } internal string CacheRoot { get; } internal int LoginObserveMs { get; } @@ -20,47 +17,59 @@ namespace game.PlayerDataStorage internal bool RequireExistingArchive { get; } internal Func Delay { get; } internal PlayerKVControlledLoadCapability LeaseCapability { get; private set; } - readonly PlayerKVControlledLoadCapability auth,kv,lease; + private readonly Func auth; + private readonly Func kv; + private readonly Func lease; + private readonly bool prepareOriginalComparison; readonly object gate=new object(); CookieContainer cookies; HttpMessageHandler pendingKV,pendingLease; Exception cleanupFailure; readonly System.Collections.Generic.List failedHandlers=new System.Collections.Generic.List(); bool claimed; - private PlayerKVGameLoadCapability(PlayerKVIdentitySnapshot identity,PlayerKVSchemaSnapshot snapshot,Uri api,string cacheRoot, - int loginMs,int quitMs,Func delay, - PlayerKVControlledLoadCapability auth,PlayerKVControlledLoadCapability kv,PlayerKVControlledLoadCapability lease, - bool requireExistingArchive=false) + private PlayerKVGameLoadCapability(Uri api, string cacheRoot, + int loginMs, int quitMs, Func delay, + Func auth, Func kv, + Func lease, bool requireExistingArchive = false, bool prepareOriginalComparison = false) { - Identity=identity ?? throw new ArgumentNullException(nameof(identity)); Snapshot=snapshot ?? throw new ArgumentNullException(nameof(snapshot)); - if(api==null || !api.IsAbsoluteUri || (api.Scheme!="http" && api.Scheme!="https") || !string.IsNullOrEmpty(api.UserInfo) || + // Preserve the former wrappers' null-check order, diagnostic and configuration precedence. + this.auth = auth ?? throw new ArgumentNullException("leaseHandler"); + this.kv = kv ?? throw new ArgumentNullException("leaseHandler"); + this.lease = lease ?? throw new ArgumentNullException("leaseHandler"); + if (api == null || !api.IsAbsoluteUri || (api.Scheme != "http" && api.Scheme != "https") || !string.IsNullOrEmpty(api.UserInfo) || !string.IsNullOrEmpty(api.Query) || !string.IsNullOrEmpty(api.Fragment) || string.IsNullOrEmpty(cacheRoot) || - loginMs<1000 || loginMs>15000 || quitMs<1000 || quitMs>15000) throw new ArgumentException("Controlled load configuration invalid."); - Api=new Uri(api.AbsoluteUri.TrimEnd('/')+"/"); CacheRoot=cacheRoot; - LoginObserveMs=loginMs; QuitObserveMs=quitMs; Delay=delay ?? Task.Delay; this.auth=auth; this.kv=kv; this.lease=lease; - RequireExistingArchive=requireExistingArchive; + loginMs < 1000 || loginMs > 15000 || quitMs < 1000 || quitMs > 15000) + { + throw new ArgumentException("Controlled load configuration invalid."); + } + Api = new Uri(api.AbsoluteUri.TrimEnd('/') + "/"); + CacheRoot = cacheRoot; + LoginObserveMs = loginMs; + QuitObserveMs = quitMs; + Delay = delay ?? Task.Delay; + RequireExistingArchive = requireExistingArchive; + this.prepareOriginalComparison = prepareOriginalComparison; } - internal static PlayerKVGameLoadCapability CreateForGame(PlayerKVIdentitySnapshot identity,PlayerKVSchemaSnapshot snapshot, - Uri api,string cacheRoot,Func auth,Func kv, - Func lease) + internal static PlayerKVGameLoadCapability CreateForGame(Uri api, string cacheRoot, + Func auth, Func kv, + Func lease, bool prepareOriginalComparison = false) { - if(api==null || api.AbsoluteUri!="http://s101.local:18080/") - throw new ArgumentException("Formal KV endpoint mismatch.",nameof(api)); - var capability=new PlayerKVGameLoadCapability(identity,snapshot,api,cacheRoot,10000,5000,null, - PlayerKVControlledLoadCapability.CreateForGame(auth),PlayerKVControlledLoadCapability.CreateForGame(kv), - PlayerKVControlledLoadCapability.CreateForGame(lease),true); - capability.LeaseCapability=PlayerKVControlledLoadCapability.CreateForGame(capability.TakeLease); + if (api == null || api.AbsoluteUri != "http://s101.local:18080/") + { + throw new ArgumentException("Formal KV endpoint mismatch.", nameof(api)); + } + var capability = new PlayerKVGameLoadCapability(api, cacheRoot, 10000, 5000, null, auth, kv, lease, true, prepareOriginalComparison); + capability.LeaseCapability = PlayerKVControlledLoadCapability.CreateForGame(capability.TakeLease); return capability; } #if UNITY_EDITOR - internal static PlayerKVGameLoadCapability CreateForValidation(PlayerKVIdentitySnapshot identity,PlayerKVSchemaSnapshot snapshot, - Uri api,string cacheRoot,Func auth,Func kv, - Func lease,int loginMs=10000,int quitMs=5000,Func delay=null) + internal static PlayerKVGameLoadCapability CreateForValidation(Uri api, string cacheRoot, + Func auth, Func kv, + Func lease, int loginMs = 10000, int quitMs = 5000, + Func delay = null) { - var capability=new PlayerKVGameLoadCapability(identity,snapshot,api,cacheRoot,loginMs,quitMs,delay, - PlayerKVControlledLoadCapability.CreateForValidation(auth),PlayerKVControlledLoadCapability.CreateForValidation(kv), - PlayerKVControlledLoadCapability.CreateForValidation(lease)); - capability.LeaseCapability=PlayerKVControlledLoadCapability.CreateForValidation(capability.TakeLease); + var capability = new PlayerKVGameLoadCapability(api, cacheRoot, loginMs, quitMs, delay, auth, kv, lease); + capability.LeaseCapability = PlayerKVControlledLoadCapability.CreateForValidation(capability.TakeLease); return capability; } #endif @@ -68,26 +77,48 @@ namespace game.PlayerDataStorage { lock(gate) { if(claimed) throw new InvalidOperationException("Controlled capability already used."); claimed=true; } return new PlayerKVLoginContext(id,CacheRoot,epoch,current,Api, - ()=>new S101AccountSession(Api,CreateAuthentication),()=>new PlayerKVGameSessionBridge(TakeKV)); + ()=>new S101AccountSession(Api,CreateAuthentication),()=>new PlayerKVGameSessionBridge(TakeKV, prepareOriginalComparison)); } - HttpMessageHandler CreateAuthentication(CookieContainer jar) + private HttpMessageHandler CreateAuthentication(CookieContainer jar) { - lock(gate) + lock (gate) { - if(cookies!=null) throw new InvalidOperationException("Repeated authentication factory."); - cookies=jar; HttpMessageHandler authentication=null; + if (cookies != null) + { + throw new InvalidOperationException("Repeated authentication factory."); + } + cookies = jar; + HttpMessageHandler authentication = null; try { // Validate all three returned handler graphs before the first authentication send. - authentication=auth.CreateHandler(jar); pendingKV=kv.CreateHandler(jar); pendingLease=lease.CreateHandler(jar); - if(ShareHandlerGraph(authentication,pendingKV,pendingLease)) + authentication = PlayerKVControlledLoadCapability.CreateHandler(auth, jar, LeaseCapability.IsFormal); + pendingKV = PlayerKVControlledLoadCapability.CreateHandler(kv, jar, LeaseCapability.IsFormal); + pendingLease = PlayerKVControlledLoadCapability.CreateHandler(lease, jar, LeaseCapability.IsFormal); + if (ShareHandlerGraph(authentication, pendingKV, pendingLease)) + { throw new InvalidOperationException("Distinct transport ownership required."); + } return authentication; } catch { - try { authentication?.Dispose(); } catch(Exception ex) { cleanupFailure=ex; failedHandlers.Add(authentication); } - try { CloseUnused(); } catch { } + try + { + authentication?.Dispose(); + } + catch (Exception ex) + { + cleanupFailure = ex; + failedHandlers.Add(authentication); + } + try + { + CloseUnused(); + } + catch + { + } throw; } } diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVDecodedSave.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVDecodedSave.cs deleted file mode 100644 index a80978149..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVDecodedSave.cs +++ /dev/null @@ -1,969 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Globalization; -using System.Linq; - -namespace game.PlayerDataStorage -{ - internal enum PlayerKVSchemaVerdict { Valid, EmptyNew, EmptyExisting, MissingCore, Malformed, ConflictingRepresentations, UnsupportedSchema, Stale } - internal sealed class PlayerKVProgressPackPair - { - internal PlayerKVProgressPackState Current { get; } - internal PlayerKVProgressPackState Migration { get; } - internal PlayerKVProgressPackPair(PlayerKVProgressPackState current,PlayerKVProgressPackState migration) - { Current=current; Migration=migration; } - } - internal sealed class PlayerKVDecodedSave - { - readonly object[] modules; - internal string PlayerId { get; } - internal long Epoch { get; } - internal string ConfigurationVersion { get; } - internal IReadOnlyDictionary Raw { get; } - internal int ModuleCount => modules.Length; - internal int UnconsumedTopLevelCount { get; } - internal int UnconsumedModernCount { get; } - internal int UnconsumedCount => UnconsumedTopLevelCount+UnconsumedModernCount; - internal PlayerKVDecodedSave(string playerId,long epoch,string version,IReadOnlyDictionary raw,object[] modules,int unconsumedTop=0,int unconsumedModern=0) - { - if(modules==null || modules.Length!=31 || modules.Any(m=>m==null)) throw new ArgumentException("Complete decoded save required."); - PlayerId=playerId; Epoch=epoch; ConfigurationVersion=version; - Raw=new ReadOnlyDictionary(raw.ToDictionary(p=>p.Key,p=>p.Value,StringComparer.Ordinal)); - this.modules=(object[])modules.Clone(); - UnconsumedTopLevelCount=unconsumedTop; UnconsumedModernCount=unconsumedModern; - } - internal object Module(int id) { if(id<1 || id>31) throw new ArgumentOutOfRangeException(nameof(id)); return modules[id-1]; } - internal T Module(int id) where T:class => Module(id) as T ?? throw new InvalidOperationException("Module state mismatch."); - } - internal sealed class PlayerKVSchemaResult - { - internal PlayerKVSchemaVerdict Verdict { get; } - internal PlayerKVSchemaDiagnostics Diagnostics { get; } - internal PlayerKVDecodedSave Data { get; } - internal PlayerKVSchemaResult(PlayerKVSchemaVerdict verdict,PlayerKVSchemaDiagnostics diagnostics,PlayerKVDecodedSave data=null) - { Verdict=verdict; Diagnostics=diagnostics; Data=verdict==PlayerKVSchemaVerdict.Valid ? data : null; } - } - internal enum PlayerKVIdentityChannel { hwGoogle, hwFacebook, hwGuest, hwVkid, Apple, none } - internal sealed class PlayerKVIdentitySnapshot - { - internal string UserId { get; } - internal bool NewlyCreated { get; } - internal PlayerKVIdentityChannel Channel { get; } - internal IReadOnlyList Linked { get; } - internal PlayerKVIdentitySnapshot(string userId,bool newlyCreated,PlayerKVIdentityChannel channel,IEnumerable linked) - { - if(!Enum.IsDefined(typeof(PlayerKVIdentityChannel),channel) || linked==null) throw new ArgumentException("Identity snapshot required."); - var copy=linked.Distinct().ToList(); - if(copy.Any(c=>!Enum.IsDefined(typeof(PlayerKVIdentityChannel),c))) throw new ArgumentException("Unknown identity channel."); - UserId=userId; NewlyCreated=newlyCreated; Channel=channel; Linked=copy.AsReadOnly(); - } - } - internal sealed class PlayerKVLoginState - { - internal int MMTest { get; } - internal int TapJoyBalance { get; } - internal IReadOnlyDictionary AccountUrls { get; } - internal IReadOnlyDictionary Normalizations { get; } - internal IReadOnlyList Linked { get; } - internal PlayerKVIdentityChannel Channel { get; } - internal PlayerKVLoginState(int mm,int balance,IDictionary urls,IDictionary normalizations, - IEnumerable linked,PlayerKVIdentityChannel channel) - { - MMTest=mm; TapJoyBalance=balance; - AccountUrls=new ReadOnlyDictionary(new Dictionary(urls,StringComparer.Ordinal)); - Normalizations=new ReadOnlyDictionary(new Dictionary(normalizations,StringComparer.Ordinal)); - Linked=linked.Distinct().ToList().AsReadOnly(); Channel=channel; - } - } - internal sealed class PlayerKVPartnerBot - { - internal string Id { get; } - internal int ScorePlayer { get; } - internal int ScoreBot { get; } - internal int Grade { get; } - internal int TargetScore { get; } - internal DateTime WakeStartTime { get; } - internal int WakingSeconds { get; } - internal PlayerKVPartnerBot(string id,int player,int bot,int grade,int target,DateTime wake,int seconds) - { Id=id; ScorePlayer=player; ScoreBot=bot; Grade=grade; TargetScore=target; WakeStartTime=wake; WakingSeconds=seconds; } - } - internal sealed class PlayerKVPartnerState - { - internal bool Present { get; } - internal bool FirstOpen { get; } - internal int EventId { get; } - internal DateTime StartTime { get; } - internal DateTime EndTime { get; } - internal int CurrentPoints { get; } - internal int CurrentMiningProgress { get; } - internal int Token { get; } - internal int InvitedCount { get; } - internal int TicketCount { get; } - internal IReadOnlyList> CompletedNodesList { get; } - internal IReadOnlyList<(int myScore,int FriendScore)> BuilderPartnerScore { get; } - internal float BonusPercent { get; } - internal DateTime BonusExpireUtc { get; } - internal int FreeSpinNum { get; } - internal IReadOnlyDictionary Bots { get; } - internal bool IsRecvFinalReward { get; } - internal IReadOnlyList UIFinishedPartners { get; } - internal bool IsFinished { get; } - internal int SpinState { get; } - internal float InflationRate { get; } - internal bool IsEnableAutoMatch { get; } - internal DateTime LastAutoMatchTime { get; } - internal PlayerKVPartnerState(bool present,bool firstOpen,int eventId,DateTime start,DateTime end, - int points,int progress,int token,int invited,int tickets,IEnumerable> nodes, - IEnumerable<(int,int)> scores,float bonus,DateTime expires,int free,IDictionary bots, - bool reward,IEnumerable ui,bool finished,int spin,float inflation,bool autoMatch,DateTime lastMatch) - { - Present=present; FirstOpen=firstOpen; EventId=eventId; StartTime=start; EndTime=end; - CurrentPoints=points; CurrentMiningProgress=progress; Token=token; InvitedCount=invited; TicketCount=tickets; - CompletedNodesList=nodes.Select(n=>(IReadOnlyList)new List(n).AsReadOnly()).ToList().AsReadOnly(); - BuilderPartnerScore=new List<(int,int)>(scores).AsReadOnly(); BonusPercent=bonus; BonusExpireUtc=expires; - FreeSpinNum=free; Bots=new ReadOnlyDictionary(new Dictionary(bots)); - IsRecvFinalReward=reward; UIFinishedPartners=new List(ui).AsReadOnly(); IsFinished=finished; - SpinState=spin; InflationRate=inflation; IsEnableAutoMatch=autoMatch; LastAutoMatchTime=lastMatch; - } - internal static PlayerKVPartnerState Missing() => new PlayerKVPartnerState(false,false,0,default,default, - 0,0,0,0,0,Array.Empty(),Array.Empty<(int,int)>(),0,default,0,new Dictionary(), - false,Array.Empty(),false,0,0,false,default); - } - internal enum PlayerKVSchemaError { Malformed, MissingCore, ConflictingRepresentations, UnsupportedSchema } - - internal sealed class PlayerKVSchemaException : Exception - { - internal PlayerKVSchemaError Code { get; } - internal PlayerKVSchemaException(PlayerKVSchemaError code = PlayerKVSchemaError.Malformed) - : base("KV schema rejected.") { Code = code; } - } - - internal sealed class PlayerKVSchemaDetail - { - internal int Module { get; } - internal int Field { get; } - internal PlayerKVSchemaError Code { get; } - internal PlayerKVSchemaDetail(int module, int field, PlayerKVSchemaError code) - { Module = module; Field = field; Code = code; } - } - - // Values, save keys and exception messages are deliberately absent from diagnostic output. - internal sealed class PlayerKVSchemaDiagnostics - { - readonly List details = new List(); - readonly SortedDictionary> counts = - new SortedDictionary>(); - internal int TotalErrors { get; private set; } - internal int OmittedDetails => TotalErrors - details.Count; - internal IReadOnlyList Details => details.AsReadOnly(); - internal int Count(int module, PlayerKVSchemaError code) => - counts.TryGetValue(module, out var codes) && codes.TryGetValue(code, out var count) ? count : 0; - internal void Add(int module, int field, PlayerKVSchemaError code) - { - if (module < 1 || module > 31 || field < 0) throw new ArgumentOutOfRangeException(); - TotalErrors++; - if (!counts.TryGetValue(module, out var codes)) counts.Add(module, codes = new Dictionary()); - codes[code] = Count(module, code) + 1; - // Only retain 32 items, even when callers visit representations in different orders. - var item = new PlayerKVSchemaDetail(module, field, code); - int index = details.FindIndex(x => x.Module > module || (x.Module == module && x.Field > field)); - if (index < 0) index = details.Count; - if (index < 32) details.Insert(index, item); - if (details.Count > 32) details.RemoveAt(32); - } - internal T Capture(int module, int field, Func parse) - { - try { return parse(); } - catch (PlayerKVSchemaException ex) { Add(module, field, ex.Code); return default; } - } - } - - // Captured copies only: decoding never resolves Unity services or reads current culture/time. - internal sealed class PlayerKVSchemaSnapshot - { - readonly HashSet rods, maps; - readonly IReadOnlyDictionary packTypes; - readonly IReadOnlyDictionary events; - readonly IReadOnlyDictionary conditions; - readonly HashSet conditionValues; - readonly IReadOnlyDictionary fish; - readonly IReadOnlyDictionary cards; - internal string Version { get; } - internal CultureInfo Culture { get; } - internal DateTime NowUtc { get; } - internal DateTime NowGame { get; } - internal int InitWheelTicket { get; } - internal PlayerKVSchemaSnapshot(string version, IEnumerable rods, IEnumerable maps, - IDictionary conditions, CultureInfo culture, DateTime nowUtc, int initWheelTicket, - IDictionary packTypes = null, IDictionary events = null, int globalTimeOffset = 0, - IDictionary fish = null, IDictionary cards = null) - { - if (string.IsNullOrEmpty(version) || rods == null || maps == null || conditions == null || culture == null) - throw new ArgumentException("Schema snapshot required."); - Version = version; this.rods = new HashSet(rods); this.maps = new HashSet(maps); - this.packTypes = new ReadOnlyDictionary(new Dictionary(packTypes ?? new Dictionary())); - this.events = new ReadOnlyDictionary(new Dictionary(events ?? new Dictionary())); - this.conditions = new ReadOnlyDictionary(new Dictionary(conditions, StringComparer.Ordinal)); - conditionValues = new HashSet(conditions.Values); - Culture = CultureInfo.ReadOnly((CultureInfo)culture.Clone()); NowUtc = nowUtc; InitWheelTicket = initWheelTicket; - NowGame = nowUtc.AddHours(-(double)globalTimeOffset); - this.fish=new ReadOnlyDictionary(new Dictionary(fish ?? new Dictionary())); - this.cards=new ReadOnlyDictionary(new Dictionary(cards ?? new Dictionary())); - } - internal PlayerKVFishConfig Fish(int id) => fish.TryGetValue(id,out var value) ? value : null; - internal PlayerKVFishCardConfig Card(int id) => cards.TryGetValue(id,out var value) ? value : null; - internal bool HasRod(int id) => rods.Contains(id); - internal bool HasPack(int id) => packTypes.ContainsKey(id); - internal PlayerKVEventConfig Event(int id) => events.TryGetValue(id,out var value) ? value : null; - internal bool HasPackType(int id, int type) => packTypes.TryGetValue(id, out var actual) && actual == type; - internal bool HasMap(int id) => maps.Contains(id); - internal int Condition(string text) - { - if (conditions.TryGetValue(text, out var named)) return named; - if (int.TryParse(text, NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out var numeric) - && conditionValues.Contains(numeric)) return numeric; - throw new PlayerKVSchemaException(); - } - } - - internal sealed class PlayerKVCoreState - { - readonly object[] slots; - internal PlayerKVCoreState(object[] slots) { this.slots = (object[])slots.Clone(); } - internal int Integer(int slot) => (int)slots[slot]; - internal ulong Unsigned(int slot) => (ulong)slots[slot]; - internal DateTime EnergyTime => (DateTime)slots[7]; - internal bool Matches(int slot, object value) => Equals(slots[slot], value); - } - - internal sealed class PlayerKVAchievementValue - { - internal int Id { get; } - internal ulong Target { get; } - internal int Day { get; } - internal PlayerKVAchievementValue(int id, ulong target, int day) { Id = id; Target = target; Day = day; } - internal bool Same(PlayerKVAchievementValue other) => Id == other.Id && Target == other.Target && Day == other.Day; - } - - internal sealed class PlayerKVAchievementState - { - internal IReadOnlyDictionary Values { get; } - internal PlayerKVAchievementState(IDictionary values) - { Values = new ReadOnlyDictionary(new Dictionary(values)); } - } - - - internal sealed class PlayerKVPiggyBankState - { - internal bool IsPresent { get; } - internal int currentEventID { get; } - internal int purchaseCount { get; } - internal int VIPLvlWhenEventActivate { get; } - internal int savingProgress { get; } - internal int redirectID { get; } - internal bool doNeedTrigger { get; } - internal bool isTriggered { get; } - internal float inflation { get; } - internal PlayerKVPiggyBankState(bool present, int currentEventID, int purchaseCount, int VIPLvlWhenEventActivate, int savingProgress, int redirectID, bool doNeedTrigger, bool isTriggered, float inflation) - { - IsPresent = present; - this.currentEventID = currentEventID; - this.purchaseCount = purchaseCount; - this.VIPLvlWhenEventActivate = VIPLvlWhenEventActivate; - this.savingProgress = savingProgress; - this.redirectID = redirectID; - this.doNeedTrigger = doNeedTrigger; - this.isTriggered = isTriggered; - this.inflation = inflation; - } - internal static PlayerKVPiggyBankState Missing() => new PlayerKVPiggyBankState(false, 0, 0, 0, 0, 0, false, false, 0); - } - - internal sealed class PlayerKVBargainState - { - internal bool IsPresent { get; } - internal int currentEventID { get; } - internal int redirectID { get; } - internal int VIPLvlWhenEventActivate { get; } - internal int purchaseCount { get; } - internal int savingProgress { get; } - internal int discountLvl { get; } - internal int visualProgress { get; } - internal int visualDiscountLvl { get; } - internal int rodID { get; } - internal int lastPackIDBought { get; } - internal int packID { get; } - internal bool doNeedTrigger { get; } - internal bool isTriggered { get; } - internal float inflation { get; } - internal IReadOnlyList selections { get; } - internal PlayerKVBargainState(bool present, int currentEventID, int redirectID, int VIPLvlWhenEventActivate, int purchaseCount, int savingProgress, int discountLvl, int visualProgress, int visualDiscountLvl, int rodID, int lastPackIDBought, int packID, bool doNeedTrigger, bool isTriggered, float inflation, IEnumerable selections) - { - IsPresent = present; - this.currentEventID = currentEventID; - this.redirectID = redirectID; - this.VIPLvlWhenEventActivate = VIPLvlWhenEventActivate; - this.purchaseCount = purchaseCount; - this.savingProgress = savingProgress; - this.discountLvl = discountLvl; - this.visualProgress = visualProgress; - this.visualDiscountLvl = visualDiscountLvl; - this.rodID = rodID; - this.lastPackIDBought = lastPackIDBought; - this.packID = packID; - this.doNeedTrigger = doNeedTrigger; - this.isTriggered = isTriggered; - this.inflation = inflation; - this.selections = selections == null ? null : new List(selections).AsReadOnly(); - } - internal static PlayerKVBargainState Missing() => new PlayerKVBargainState(false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, false, 0, Array.Empty()); - } - - internal sealed class PlayerKVShootingRangeState - { - internal bool IsPresent { get; } - internal int EventId { get; } - internal int CycleId { get; } - internal int RedirectId { get; } - internal int AmmoCount { get; } - internal int CurrentStageIdx { get; } - internal int ChainProgress { get; } - internal long RewardFlag { get; } - internal long TargetFlag { get; } - internal bool HasBeenOpened { get; } - internal float Inflation { get; } - internal PlayerKVShootingRangeState(bool present, int EventId, int CycleId, int RedirectId, int AmmoCount, int CurrentStageIdx, int ChainProgress, long RewardFlag, long TargetFlag, bool HasBeenOpened, float Inflation) - { - IsPresent = present; - this.EventId = EventId; - this.CycleId = CycleId; - this.RedirectId = RedirectId; - this.AmmoCount = AmmoCount; - this.CurrentStageIdx = CurrentStageIdx; - this.ChainProgress = ChainProgress; - this.RewardFlag = RewardFlag; - this.TargetFlag = TargetFlag; - this.HasBeenOpened = HasBeenOpened; - this.Inflation = Inflation; - } - internal static PlayerKVShootingRangeState Missing() => new PlayerKVShootingRangeState(false, 0, 0, 0, 0, 0, 0, 0, 0, false, 0); - } - - - internal sealed class PlayerKVBuffValue - { - internal int SortID { get; } - internal int sourceID { get; } - internal int buffID { get; } - internal bool isEnd { get; } - internal DateTime buffEndTime { get; } - internal PlayerKVBuffValue(int SortID,int sourceID,int buffID,bool isEnd,DateTime buffEndTime) - { this.SortID=SortID; this.sourceID=sourceID; this.buffID=buffID; this.isEnd=isEnd; this.buffEndTime=buffEndTime; } - } - - internal sealed class PlayerKVTriggerValue - { - internal int ID { get; } - internal int index { get; } - internal int lastID { get; } - internal int vipLevel { get; } - internal int mapID { get; } - internal string time { get; } - internal PlayerKVTriggerValue(int ID,int index,int lastID,int vipLevel,int mapID,string time) - { this.ID=ID; this.index=index; this.lastID=lastID; this.vipLevel=vipLevel; this.mapID=mapID; this.time=time; } - } - - internal sealed class PlayerKVGiftVipValue - { - internal int oldVipLevel { get; } - internal int curVipLevel { get; } - internal int timer { get; } - internal PlayerKVGiftVipValue(int oldVipLevel,int curVipLevel,int timer) - { this.oldVipLevel=oldVipLevel; this.curVipLevel=curVipLevel; this.timer=timer; } - } - - internal sealed class PlayerKVFixedTimeValue - { - internal int id { get; } - internal string endTime { get; } - internal PlayerKVFixedTimeValue(int id,string endTime) - { this.id=id; this.endTime=endTime; } - } - - internal sealed class PlayerKVBuffState - { - internal IReadOnlyDictionary Map { get; } - internal IReadOnlyDictionary Global { get; } - internal IReadOnlyList Target { get; } - internal PlayerKVBuffValue Daily { get; } - internal PlayerKVBuffState(IDictionary map,IDictionary global, - IEnumerable target,PlayerKVBuffValue daily) - { - Map=new ReadOnlyDictionary(new Dictionary(map)); - Global=new ReadOnlyDictionary(new Dictionary(global)); - Target=new List(target).AsReadOnly(); Daily=daily; - } - } - internal sealed class PlayerKVTriggerState - { - internal IReadOnlyList Packs { get; } - internal IReadOnlyDictionary Gifts { get; } - internal IReadOnlyDictionary Fixed { get; } - internal PlayerKVTriggerState(IEnumerable packs,IDictionary gifts, - IDictionary fixedValues) - { - Packs=new List(packs).AsReadOnly(); - Gifts=new ReadOnlyDictionary(new Dictionary(gifts,StringComparer.Ordinal)); - Fixed=new ReadOnlyDictionary(new Dictionary(fixedValues)); - } - } - - - internal sealed class PlayerKVPlayerState - { - internal PlayerKVCoreState Core { get; } - internal IReadOnlyDictionary Modern { get; } - internal IReadOnlyDictionary VipScores { get; } - internal IReadOnlyList NewRods { get; } - internal int Season { get; } - internal bool Appraise { get; } - internal string Building { get; } - internal PlayerKVPlayerState(PlayerKVCoreState core,IDictionary modern,IDictionary scores, - IEnumerable rods,int season,bool appraise,string building) - { - Core=core; Modern=new ReadOnlyDictionary(new Dictionary(modern,StringComparer.Ordinal)); - VipScores=new ReadOnlyDictionary(new Dictionary(scores)); NewRods=new List(rods).AsReadOnly(); - Season=season; Appraise=appraise; Building=building; - } - } - internal sealed class PlayerKVPotionItem - { - internal string Name { get; } - internal int Index { get; } - internal bool IsOver { get; } - internal int DataType { get; } - internal IReadOnlyList Colors { get; } - internal IReadOnlyList Shelves { get; } - internal IReadOnlyList Grids { get; } - internal IReadOnlyList FromDisplay { get; } - internal PlayerKVPotionItem(string name,int index,bool over,int type,IEnumerable colors, - IEnumerable shelves,IEnumerable grids,IEnumerable fromDisplay) - { - Name=name; Index=index; IsOver=over; DataType=type; - Colors=new List(colors).AsReadOnly(); Shelves=new List(shelves).AsReadOnly(); - Grids=new List(grids).AsReadOnly(); FromDisplay=new List(fromDisplay).AsReadOnly(); - } - } - internal sealed class PlayerKVPotionState - { - internal bool IsPresent { get; } - internal int EventID { get; } - internal int PotionID { get; } - internal int StageID { get; } - internal int Stage1TotalLevel { get; } - internal int Stage2TotalLevel { get; } - internal int LevelID { get; } - internal int LevelIndex { get; } - internal int CorrectNum { get; } - internal int SubmitNum { get; } - internal int Token { get; } - internal int ConsumedToken { get; } - internal int Rule { get; } - internal int PreEventID { get; } - internal int PrePotionID { get; } - internal int PreStageID { get; } - internal int PreLevelID { get; } - internal int Round { get; } - internal int FirstPlayedEventId { get; } - internal bool IsOver { get; } - internal string Name { get; } - internal float InflationRate { get; } - internal PlayerKVPotionItem LevelTargetData { get; } - internal PlayerKVPotionItem LevelDisplayData { get; } - internal IReadOnlyList LevelProcessedList { get; } - internal PlayerKVPotionState(bool present,int EventID,int PotionID,int StageID,int Stage1TotalLevel,int Stage2TotalLevel,int LevelID,int LevelIndex,int CorrectNum,int SubmitNum,int Token,int ConsumedToken,int Rule,int PreEventID,int PrePotionID,int PreStageID,int PreLevelID,int Round,int FirstPlayedEventId,bool IsOver,string Name,float InflationRate,PlayerKVPotionItem LevelTargetData,PlayerKVPotionItem LevelDisplayData,List LevelProcessedList) - { - IsPresent=present; - this.EventID=EventID; - this.PotionID=PotionID; - this.StageID=StageID; - this.Stage1TotalLevel=Stage1TotalLevel; - this.Stage2TotalLevel=Stage2TotalLevel; - this.LevelID=LevelID; - this.LevelIndex=LevelIndex; - this.CorrectNum=CorrectNum; - this.SubmitNum=SubmitNum; - this.Token=Token; - this.ConsumedToken=ConsumedToken; - this.Rule=Rule; - this.PreEventID=PreEventID; - this.PrePotionID=PrePotionID; - this.PreStageID=PreStageID; - this.PreLevelID=PreLevelID; - this.Round=Round; - this.FirstPlayedEventId=FirstPlayedEventId; - this.IsOver=IsOver; - this.Name=Name; - this.InflationRate=InflationRate; - this.LevelTargetData=LevelTargetData; - this.LevelDisplayData=LevelDisplayData; - this.LevelProcessedList=new List(LevelProcessedList).AsReadOnly(); - } - internal static PlayerKVPotionState Missing() => new PlayerKVPotionState(false,default,default,default,default,default,default,default,default,default,default,default,default,default,default,default,default,default,default,default,default,default,default,default,new List()); - } - internal sealed class PlayerKVPassRecord - { - internal int ID { get; } - internal int Level { get; } - internal int Exp { get; } - internal int BuyVipToastIndex { get; } - internal int IsUnlockVip { get; } - internal IReadOnlyList Normal { get; } - internal IReadOnlyList Vip { get; } - internal IReadOnlyList LastDrops { get; } - internal float Inflation { get; } - internal PlayerKVPassRecord(int id,int level,int exp,int toast,int unlock,IEnumerable normal, - IEnumerable vip,IEnumerable lastDrops,float inflation) - { - ID=id; Level=level; Exp=exp; BuyVipToastIndex=toast; IsUnlockVip=unlock; - Normal=new List(normal).AsReadOnly(); Vip=new List(vip).AsReadOnly(); - LastDrops=new List(lastDrops).AsReadOnly(); Inflation=inflation; - } - internal bool CommonEquals(PlayerKVPassRecord other) => ID==other.ID && Level==other.Level && Exp==other.Exp && - BuyVipToastIndex==other.BuyVipToastIndex && IsUnlockVip==other.IsUnlockVip && Normal.SequenceEqual(other.Normal) && Vip.SequenceEqual(other.Vip); - internal static PlayerKVPassRecord Empty() => new PlayerKVPassRecord(0,1,0,0,0,Array.Empty(),Array.Empty(),Array.Empty(),0); - } - internal sealed class PlayerKVPassTask - { - internal IReadOnlyDictionary Daily { get; } - internal IReadOnlyDictionary Weekly { get; } - internal IReadOnlyList LoginDays { get; } - internal DateTime DailyEnd { get; } - internal DateTime WeeklyEnd { get; } - internal PlayerKVPassTask(IDictionary daily,IDictionary weekly,IEnumerable days,DateTime dailyEnd,DateTime weeklyEnd) - { - Daily=new ReadOnlyDictionary(new Dictionary(daily)); Weekly=new ReadOnlyDictionary(new Dictionary(weekly)); - LoginDays=new List(days).AsReadOnly(); DailyEnd=dailyEnd; WeeklyEnd=weeklyEnd; - } - internal bool Same(PlayerKVPassTask other) => Daily.Count==other.Daily.Count && Weekly.Count==other.Weekly.Count && - Daily.All(p=>other.Daily.TryGetValue(p.Key,out var value) && value==p.Value) && - Weekly.All(p=>other.Weekly.TryGetValue(p.Key,out var value) && value==p.Value) && - LoginDays.SequenceEqual(other.LoginDays) && DailyEnd==other.DailyEnd && WeeklyEnd==other.WeeklyEnd; - internal static PlayerKVPassTask Empty() => new PlayerKVPassTask(new Dictionary(),new Dictionary(),Array.Empty(),default,default); - } - internal sealed class PlayerKVBattlePassState - { - internal PlayerKVPassRecord Record { get; } - internal PlayerKVPassTask Task { get; } - internal PlayerKVBattlePassState(PlayerKVPassRecord record,PlayerKVPassTask task) { Record=record; Task=task; } - } - internal sealed class PlayerKVCollectValue - { - internal int ItemId { get; } - internal int Count { get; } - internal int MaxCount { get; } - internal int ItemTrueId { get; } - internal PlayerKVCollectValue(int itemId,int count,int maxCount,int trueId) - { ItemId=itemId; Count=count; MaxCount=maxCount; ItemTrueId=trueId; } - } - internal sealed class PlayerKVCubeState - { - internal bool IsPresent { get; } - internal int TicketCount { get; } - internal bool FirstOpen { get; } - internal bool IsFinished { get; } - internal int EventId { get; } - internal bool IsInGuide { get; } - internal DateTime StartTime { get; } - internal DateTime EndTime { get; } - internal int CurrentStagetId { get; } - internal IReadOnlyList CollectItems { get; } - internal IReadOnlyList BoardData { get; } - internal int Width { get; } - internal int Height { get; } - internal IReadOnlyList CollectRewardsId { get; } - internal bool IsFinalRewardGet { get; } - internal IReadOnlyList> PieceDatas { get; } - internal int Cycle { get; } - internal float InflationRate { get; } - internal PlayerKVCubeState(bool present,int ticketCount,bool firstOpen,bool finished,int eventId,bool guide, - DateTime start,DateTime end,int stage,IEnumerable items,IEnumerable board, - int width,int height,IEnumerable rewards,bool final,IEnumerable> pieces,int cycle,float inflation) - { - IsPresent=present; TicketCount=ticketCount; FirstOpen=firstOpen; IsFinished=finished; EventId=eventId; IsInGuide=guide; - StartTime=start; EndTime=end; CurrentStagetId=stage; CollectItems=new List(items).AsReadOnly(); - BoardData=new List(board).AsReadOnly(); Width=width; Height=height; CollectRewardsId=new List(rewards).AsReadOnly(); - IsFinalRewardGet=final; PieceDatas=pieces.Select(p=>(IReadOnlyList)new List(p).AsReadOnly()).ToList().AsReadOnly(); - Cycle=cycle; InflationRate=inflation; - } - internal static PlayerKVCubeState Missing() => new PlayerKVCubeState(false,0,false,false,0,false,default,default,0, - Array.Empty(),Array.Empty(),0,0,Array.Empty(),false,Array.Empty>(),0,0); - } - internal sealed class PlayerKVPinataState - { - internal int EventID { get; } - internal int PinataMainID { get; } - internal int PurchasedCount { get; } - internal PlayerKVPinataState(int eventId,int mainId,int count) { EventID=eventId; PinataMainID=mainId; PurchasedCount=count; } - } - internal sealed class PlayerKVEmptyModuleState - { - internal static readonly PlayerKVEmptyModuleState Instance=new PlayerKVEmptyModuleState(); - private PlayerKVEmptyModuleState() { } - } - internal sealed class PlayerKVStampValue - { - internal int EventScratchCardID { get; } - internal int Count { get; } - internal PlayerKVStampValue(int id,int count) { EventScratchCardID=id; Count=count; } - } - - internal sealed class PlayerKVChallengeState - { - internal bool IsPresent { get; } - /// Internal in-memory representation of a present JSON null; not serialized to the server. - internal bool IsExplicitNull { get; } - internal bool FirstOpen { get; } - internal int EventId { get; } - internal int RankTierLevel { get; } - internal int Finished { get; } - internal int RedirectID { get; } - internal int Score { get; } - internal int ProcessedScore { get; } - internal int step { get; } - internal int uiStep { get; } - internal int index { get; } - internal DateTime StartTime { get; } - internal DateTime EndTime { get; } - internal IReadOnlyList eliminateNumber { get; } - internal IReadOnlyList robotAccountList { get; } - internal float InflationRate { get; } - internal PlayerKVChallengeState(bool present,bool FirstOpen,int EventId,int RankTierLevel,int Finished,int RedirectID,int Score,int ProcessedScore,int step,int uiStep,int index,DateTime StartTime,DateTime EndTime,List eliminateNumber,List robotAccountList,float InflationRate,bool explicitNull=false) - { - if (explicitNull && !present) throw new ArgumentException("An explicit null must have a present key.", nameof(explicitNull)); - IsPresent=present; - IsExplicitNull=explicitNull; - this.FirstOpen=FirstOpen; - this.EventId=EventId; - this.RankTierLevel=RankTierLevel; - this.Finished=Finished; - this.RedirectID=RedirectID; - this.Score=Score; - this.ProcessedScore=ProcessedScore; - this.step=step; - this.uiStep=uiStep; - this.index=index; - this.StartTime=StartTime; - this.EndTime=EndTime; - this.eliminateNumber=new List(eliminateNumber).AsReadOnly(); - this.robotAccountList=new List(robotAccountList).AsReadOnly(); - this.InflationRate=InflationRate; - } - internal static PlayerKVChallengeState Missing() => new PlayerKVChallengeState(false,default,default,default,default,default,default,default,default,default,default,default,default,new List(),new List(),default); - /// Creates an internal empty-state marker, not a server serialization payload. - internal static PlayerKVChallengeState ExplicitNull() => new PlayerKVChallengeState(true,default,default,default,default,default,default,default,default,default,default,default,default,new List(),new List(),default,true); - } - - internal sealed class PlayerKVPinballState - { - internal bool IsPresent { get; } - internal int EventID { get; } - internal int PinballMainID { get; } - internal int SpinPoint { get; } - internal int Scores { get; } - internal int Multiple { get; } - internal int Token { get; } - internal int ConsumedToken { get; } - internal int RewardIndex { get; } - internal float Force { get; } - internal float LuckyValue { get; } - internal float InflationRate { get; } - internal PlayerKVPinballState(bool present,int EventID,int PinballMainID,int SpinPoint,int Scores,int Multiple,int Token,int ConsumedToken,int RewardIndex,float Force,float LuckyValue,float InflationRate) - { - IsPresent=present; - this.EventID=EventID; - this.PinballMainID=PinballMainID; - this.SpinPoint=SpinPoint; - this.Scores=Scores; - this.Multiple=Multiple; - this.Token=Token; - this.ConsumedToken=ConsumedToken; - this.RewardIndex=RewardIndex; - this.Force=Force; - this.LuckyValue=LuckyValue; - this.InflationRate=InflationRate; - } - internal static PlayerKVPinballState Missing() => new PlayerKVPinballState(false,default,default,default,default,default,default,default,default,default,default,default); - } - - internal sealed class PlayerKVScratchState - { - internal bool IsPresent { get; } - internal int EventID { get; } - internal int ScratchMainID { get; } - internal int ChainPackID { get; } - internal int Token { get; } - internal int ConsumedToken { get; } - internal int RewardTaskConsumedToken { get; } - internal int EventScratchRewardTaskID { get; } - internal int EventScratchCardID { get; } - internal int TotalConsumedToken { get; } - internal int ChainPackProgress { get; } - internal int magIndex { get; } - internal bool IsOver { get; } - internal float LuckyValue { get; } - internal float InflationRate { get; } - internal IReadOnlyList StampRewardList { get; } - internal IReadOnlyDictionary StampRewardDict { get; } - internal PlayerKVScratchState(bool present,int EventID,int ScratchMainID,int ChainPackID,int Token,int ConsumedToken,int RewardTaskConsumedToken,int EventScratchRewardTaskID,int EventScratchCardID,int TotalConsumedToken,int ChainPackProgress,int magIndex,bool IsOver,float LuckyValue,float InflationRate,List StampRewardList,Dictionary StampRewardDict) - { - IsPresent=present; - this.EventID=EventID; - this.ScratchMainID=ScratchMainID; - this.ChainPackID=ChainPackID; - this.Token=Token; - this.ConsumedToken=ConsumedToken; - this.RewardTaskConsumedToken=RewardTaskConsumedToken; - this.EventScratchRewardTaskID=EventScratchRewardTaskID; - this.EventScratchCardID=EventScratchCardID; - this.TotalConsumedToken=TotalConsumedToken; - this.ChainPackProgress=ChainPackProgress; - this.magIndex=magIndex; - this.IsOver=IsOver; - this.LuckyValue=LuckyValue; - this.InflationRate=InflationRate; - this.StampRewardList=new List(StampRewardList).AsReadOnly(); - this.StampRewardDict=new ReadOnlyDictionary(new Dictionary(StampRewardDict)); - } - internal static PlayerKVScratchState Missing() => new PlayerKVScratchState(false,default,default,default,default,default,default,default,default,default,default,default,default,default,default,new List(),new Dictionary()); - } - internal sealed class PlayerKVOfferItem - { - internal int Id { get; } - internal int Item { get; } - internal int Number { get; } - internal int Status { get; } - internal PlayerKVOfferItem(int id,int item,int number,int status) { Id=id; Item=item; Number=number; Status=status; } - } - internal sealed class PlayerKVOfferState - { - internal bool IsPresent { get; } - internal bool FirstOpen { get; } - internal int EventId { get; } - internal DateTime StartTime { get; } - internal DateTime EndTime { get; } - internal int ItemId { get; } - internal int LotteryNum { get; } - internal IReadOnlyList Items { get; } - internal IReadOnlyList RewardList { get; } - internal bool Finished { get; } - internal int ChestReward { get; } - internal PlayerKVOfferState(bool present,bool firstOpen,int eventId,DateTime startTime,DateTime endTime, - int itemId,int lotteryNum,IEnumerable items,IEnumerable rewardList,bool finished,int chestReward) - { - IsPresent=present; FirstOpen=firstOpen; EventId=eventId; StartTime=startTime; EndTime=endTime; - ItemId=itemId; LotteryNum=lotteryNum; Items=new List(items).AsReadOnly(); - RewardList=new List(rewardList).AsReadOnly(); Finished=finished; ChestReward=chestReward; - } - internal static PlayerKVOfferState Missing() => new PlayerKVOfferState(false,false,0,default,default,0,0, - Array.Empty(),Array.Empty(),false,0); - } - internal sealed class PlayerKVEventConfig - { - internal int RedirectId { get; } - internal string EndTime { get; } - internal PlayerKVEventConfig(int redirectId,string endTime) { RedirectId=redirectId; EndTime=endTime; } - } - internal sealed class PlayerKVEventPackState - { - internal int EventId { get; } - internal int PurchaseCount { get; } - internal int VipLevel { get; } - internal int RedirectId { get; } - internal PlayerKVEventPackState(int eventId,int purchaseCount,int vipLevel,int redirectId) - { EventId=eventId; PurchaseCount=purchaseCount; VipLevel=vipLevel; RedirectId=redirectId; } - } - internal sealed class PlayerKVCampState - { - internal bool IsFix { get; } - internal string Skyscraper { get; } - internal IReadOnlyDictionary Values { get; } - internal PlayerKVCampState(bool isFix,string skyscraper,IDictionary values) - { IsFix=isFix; Skyscraper=skyscraper; Values=new ReadOnlyDictionary(new Dictionary(values,StringComparer.Ordinal)); } - } - internal sealed class PlayerKVClubState - { - internal DateTime? SignTime { get; } - internal DateTime DonateTime { get; } - internal int DonateCount { get; } - internal DateTime RequestEnd { get; } - internal bool OpenRed { get; } - internal PlayerKVClubState(DateTime? signTime, DateTime donateTime, int donateCount, DateTime requestEnd, bool openRed) - { SignTime=signTime; DonateTime=donateTime; DonateCount=donateCount; RequestEnd=requestEnd; OpenRed=openRed; } - } - internal sealed class PlayerKVProgressPackState - { - internal bool IsPresent { get; } - internal int EventId { get; } - internal int RedirectId { get; } - internal int TokenProgress { get; } - internal int ChainProgress { get; } - internal PlayerKVProgressPackState(bool present, int eventId, int redirectId, int tokenProgress, int chainProgress) - { IsPresent=present; EventId=eventId; RedirectId=redirectId; TokenProgress=tokenProgress; ChainProgress=chainProgress; } - } - internal sealed class PlayerKVIntMapState - { - internal IReadOnlyDictionary Values { get; } - internal PlayerKVIntMapState(IDictionary values) - { Values = new ReadOnlyDictionary(new Dictionary(values)); } - } - internal sealed class PlayerKVGuideValue - { - internal int Index { get; } - internal bool Finished { get; } - internal string Group { get; } - internal PlayerKVGuideValue(int index, bool finished, string group) - { Index = index; Finished = finished; Group = group; } - internal bool Same(PlayerKVGuideValue other) => Index == other.Index && Finished == other.Finished && Group == other.Group; - } - internal sealed class PlayerKVGuideState - { - internal IReadOnlyDictionary Values { get; } - internal PlayerKVGuideState(IDictionary values) - { Values = new ReadOnlyDictionary(new Dictionary(values, StringComparer.Ordinal)); } - } - internal sealed class PlayerKVMonthlySignState - { - internal bool IsPresent { get; } - internal int Index { get; } - internal int DailyId { get; } - internal int DailyIndex { get; } - internal int LastId { get; } - internal string Time { get; } - internal PlayerKVMonthlySignState(bool present, int index, int dailyId, int dailyIndex, int lastId, string time) - { IsPresent = present; Index = index; DailyId = dailyId; DailyIndex = dailyIndex; LastId = lastId; Time = time; } - } - internal sealed class PlayerKVDailyValue - { - internal int Id { get; } internal int Index { get; } internal int LastId { get; } internal string Time { get; } - internal PlayerKVDailyValue(int id,int index,int lastId,string time) { Id=id; Index=index; LastId=lastId; Time=time; } - } - internal sealed class PlayerKVAdvertValue - { - internal int Id { get; } internal int Index { get; } internal int Day { get; } - internal string Time { get; } internal bool Open { get; } - internal PlayerKVAdvertValue(int id,int index,int day,string time,bool open) { Id=id; Index=index; Day=day; Time=time; Open=open; } - } - internal sealed class PlayerKVShopItemValue - { - internal int Id { get; } internal float Discount { get; } internal int Bought { get; } - internal PlayerKVShopItemValue(int id,float discount,int bought) { Id=id; Discount=discount; Bought=bought; } - } - internal sealed class PlayerKVCouponState - { - internal DateTime ActivateTime { get; } internal int EventId { get; } internal int RedirectId { get; } internal bool Bought { get; } - internal PlayerKVCouponState(DateTime time,int eventId,int redirectId,bool bought) { ActivateTime=time; EventId=eventId; RedirectId=redirectId; Bought=bought; } - } - internal sealed class PlayerKVShopState - { - internal IReadOnlyDictionary Daily { get; } - internal IReadOnlyDictionary All { get; } internal IReadOnlyDictionary Gift { get; } - internal IReadOnlyDictionary Advert { get; } - internal IReadOnlyDictionary Items { get; } - internal IReadOnlyList Buy { get; } - internal int Voucher { get; } internal int RefreshCount { get; } internal DateTime RefreshTime { get; } - internal PlayerKVDailyValue Chain { get; } internal PlayerKVDailyValue Turntable { get; } - internal PlayerKVAdvertValue Vip { get; } internal PlayerKVCouponState Coupon { get; } - internal PlayerKVShopState(IDictionary daily,IDictionary all,IDictionary gift, - IDictionary advert,IDictionary items,IEnumerable buy,int voucher,int refreshCount, - DateTime refreshTime,PlayerKVDailyValue chain,PlayerKVDailyValue turntable,PlayerKVAdvertValue vip,PlayerKVCouponState coupon) - { - Daily=new ReadOnlyDictionary(new Dictionary(daily,StringComparer.Ordinal)); - All=new ReadOnlyDictionary(new Dictionary(all)); Gift=new ReadOnlyDictionary(new Dictionary(gift)); - Advert=new ReadOnlyDictionary(new Dictionary(advert)); - Items=new ReadOnlyDictionary(new Dictionary(items)); - Buy=new List(buy).AsReadOnly(); Voucher=voucher; RefreshCount=refreshCount; RefreshTime=refreshTime; - Chain=chain; Turntable=turntable; Vip=vip; Coupon=coupon; - } - } - internal sealed class PlayerKVLimitedValue - { - internal int Id { get; } internal double Duration { get; } internal string StartTime { get; } - internal PlayerKVLimitedValue(int id,double duration,string time) { Id=id; Duration=duration; StartTime=time; } - } - internal sealed class PlayerKVEventBaseState - { - internal IReadOnlyDictionary Limited { get; } - internal IReadOnlyDictionary Fixed { get; } - internal IReadOnlyDictionary Target { get; } internal IReadOnlyDictionary Rank { get; } - internal IReadOnlyDictionary Wheel { get; } - internal int Coupon { get; } internal int Operate { get; } internal int AllOperate { get; } - internal int Free { get; } internal int PvpToken { get; } - internal PlayerKVEventBaseState(IDictionary limited,IDictionary fixedValues, - IDictionary target,IDictionary rank,IDictionary wheel,int coupon,int operate,int allOperate,int free,int pvpToken) - { - Limited=new ReadOnlyDictionary(new Dictionary(limited)); - Fixed=new ReadOnlyDictionary(new Dictionary(fixedValues)); - Target=new ReadOnlyDictionary(new Dictionary(target)); Rank=new ReadOnlyDictionary(new Dictionary(rank)); - Wheel=new ReadOnlyDictionary(new Dictionary(wheel)); Coupon=coupon; Operate=operate; AllOperate=allOperate; Free=free; PvpToken=pvpToken; - } - } - internal sealed class PlayerKVFishConfig - { - internal int Id { get; } internal int Area { get; } internal int Quality { get; } internal int Card { get; } - internal float Weight { get; } internal float Extra { get; } internal float Random { get; } - internal PlayerKVFishConfig(int id,int area,int quality,int card,float weight,float extra,float random) - { Id=id; Area=area; Quality=quality; Card=card; Weight=weight; Extra=extra; Random=random; } - } - internal sealed class PlayerKVFishCardConfig - { - internal int Id { get; } internal int MaxLevel { get; } - internal IReadOnlyList Required { get; } internal IReadOnlyList Weights { get; } - internal PlayerKVFishCardConfig(int id,int max,IEnumerable required,IEnumerable weights) - { Id=id; MaxLevel=max; Required=new List(required).AsReadOnly(); Weights=new List(weights).AsReadOnly(); } - } - internal sealed class PlayerKVFishValue - { - internal int Level { get; } internal float Weight { get; } internal int Cards { get; } - internal int Number { get; } internal bool New { get; } - internal IReadOnlyList Compatibility { get; } - internal PlayerKVFishValue(int level,float weight,int cards,int number,bool isNew,IEnumerable compatibility=null) - { Level=level; Weight=weight; Cards=cards; Number=number; New=isNew; Compatibility=new List(compatibility ?? Array.Empty()).AsReadOnly(); } - internal bool Same(PlayerKVFishValue other) => Level==other.Level && Weight==other.Weight && Cards==other.Cards && Number==other.Number && New==other.New; - } - internal sealed class PlayerKVRodAccessories - { - internal int Glove { get; } internal IReadOnlyDictionary RodSkin { get; } - internal IReadOnlyList Gloves { get; } internal IReadOnlyList Skins { get; } - internal IReadOnlyList NewGloves { get; } internal IReadOnlyList NewSkins { get; } - internal PlayerKVRodAccessories(int glove,IDictionary rodSkin,IEnumerable gloves,IEnumerable skins,IEnumerable newGloves,IEnumerable newSkins) - { Glove=glove; RodSkin=new ReadOnlyDictionary(new Dictionary(rodSkin)); Gloves=new List(gloves).AsReadOnly(); - Skins=new List(skins).AsReadOnly(); NewGloves=new List(newGloves).AsReadOnly(); NewSkins=new List(newSkins).AsReadOnly(); } - } - internal sealed class PlayerKVFishState - { - internal IReadOnlyDictionary Rods { get; } internal IReadOnlyDictionary RodLevels { get; } - internal IReadOnlyDictionary Swim { get; } internal IReadOnlyDictionary SwimCount { get; } - internal IReadOnlyDictionary Progress { get; } internal IReadOnlyDictionary Honor { get; } - internal IReadOnlyDictionary Luck { get; } internal PlayerKVRodAccessories Accessories { get; } - internal IReadOnlyDictionary> RawMaps { get; } - internal IReadOnlyDictionary> Maps { get; } - internal IReadOnlyDictionary Fish { get; } internal IReadOnlyDictionary Cards { get; } - static IReadOnlyDictionary Copy(IDictionary values) => new ReadOnlyDictionary(new Dictionary(values)); - static IReadOnlyDictionary> CopyMaps(IDictionary> maps) => - new ReadOnlyDictionary>(maps.ToDictionary(p=>p.Key,p=>(IReadOnlyDictionary)new ReadOnlyDictionary(new Dictionary(p.Value)))); - internal PlayerKVFishState(IDictionary rods,IDictionary rodLevels,IDictionary swim,IDictionary swimCount, - IDictionary progress,IDictionary honor,IDictionary luck,PlayerKVRodAccessories accessories, - IDictionary> rawMaps,IDictionary> maps, - IDictionary fish,IDictionary cards) - { Rods=Copy(rods); RodLevels=Copy(rodLevels); Swim=Copy(swim); SwimCount=Copy(swimCount); Progress=Copy(progress); Honor=Copy(honor); - Luck=new ReadOnlyDictionary(new Dictionary(luck,StringComparer.Ordinal)); Accessories=accessories; - RawMaps=CopyMaps(rawMaps); Maps=CopyMaps(maps); Fish=new ReadOnlyDictionary(new Dictionary(fish)); Cards=Copy(cards); } - } - internal sealed class PlayerKVFootPrintState - { - internal ulong Bits { get; } - internal PlayerKVFootPrintState(ulong bits) { Bits = bits; } - } -} diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVDecodedSave.cs.meta b/Client/Assets/Scripts/Services/PlayerData/PlayerKVDecodedSave.cs.meta deleted file mode 100644 index f58dacdb3..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVDecodedSave.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 35b5e1a67b2043b5aa3c34a67d2fe8f0 diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs index 1c054da25..5e2b4b2be 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVEditorValidationHost.cs @@ -6,1013 +6,4898 @@ using System.Linq; using System.Threading.Tasks; using Newtonsoft.Json; using UnityEditor; +using UniRx; namespace game.PlayerDataStorage { - // Fixed module cases plus the complete B2-20 transaction. Global state is restored after actual drainage. + // Fixed validation entry; business coverage uses original methods, resource tests remain in their own hosts. internal static class PlayerKVEditorValidationHost { + private static T UserField(KVUserService user, string name) + { + return (T)typeof(KVUserService).GetField(name, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(user); + } + + private static void SetUserField(KVUserService user, string name, object value) + { + typeof(KVUserService).GetField(name, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(user, value); + } + internal static Task RunAsync(string caseId) { - if (caseId != "M08-M23" && caseId != "M21-M22-M24" && caseId != "M09-M10-M12" && - caseId != "M14" && caseId != "M07" && caseId != "M20-M21-M22-M24-M28-M29" && caseId != "M16-M17" && - caseId != "M06-M13" && caseId != "M15-M26-M27" && caseId != "M30" && caseId != "M19" && caseId != "M11" && caseId != "M25" && - caseId != "M01-M02-M21-M22-M24" && caseId != "M04-M21-M22-M24" && caseId != "M05-M21-M22-M24" && caseId != "M03" && caseId != "M18" && caseId != "M31" && caseId != "B2-20") throw new ArgumentException("Unknown fixed validation case."); - if (EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || EditorApplication.isUpdating) - throw new InvalidOperationException("Editor is not idle."); - int assertions = 0; - if (caseId == "B2-20") return RunFullLoad(); - if (caseId == "M31") return RunLoginState(); - if (caseId == "M18") return RunPartner(); - if (caseId == "M03") return RunFish(); - if (caseId == "M21-M22-M24") return RunD3(); - if (caseId == "M09-M10-M12") return RunCollections(); - if (caseId == "M14") return RunClub(); - if (caseId == "M20-M21-M22-M24-M28-M29") return RunD3(true); - if (caseId == "M07") return RunCamp(); - if (caseId == "M16-M17") return RunOffers(); - if (caseId == "M06-M13") return RunBuffTrigger(); - if (caseId == "M15-M26-M27") return RunActivities(); - if (caseId == "M30") return RunDigging(); - if (caseId == "M19") return RunCube(); - if (caseId == "M11") return RunBattlePass(); - if (caseId == "M25") return RunPotion(); - if (caseId == "M05-M21-M22-M24") return RunD3(false,false,false,true); - if (caseId == "M04-M21-M22-M24") return RunD3(false,false,true); - if (caseId == "M01-M02-M21-M22-M24") return RunD3(false,true); - void Check(bool value) { assertions++; if (!value) throw new InvalidOperationException("KV module assertion failed."); } - var names = Enum.GetNames(typeof(cfg.ConditionType)).ToDictionary(n => n, - n => (int)Enum.Parse(typeof(cfg.ConditionType), n), StringComparer.Ordinal); - var snapshot = new PlayerKVSchemaSnapshot("synthetic-M08-M23", new[] { 101 }, new[] { 1 }, names, - CultureInfo.InvariantCulture, new DateTime(2026, 9, 23, 0, 0, 0, DateTimeKind.Utc), 17); - var achievements = new AchievementDataManager(null); - var foot = new FootPrintService(); + if (failedFormalMatchCleanup != null) + { + throw new InvalidOperationException("Previous formal matching cleanup is incomplete."); + } + if (caseId == "P15-FormalMatchState") + { + return RunFormalMatchmaking(true); + } + if (caseId == "P15-FormalMatchmaking") + { + return RunFormalMatchmaking(); + } + if (caseId == "P12C-StartupSubscriptions") + { + return RunFriends(true); + } + if (caseId == "P14-FormalRealtime") + { + return RunFormalReadAdapters(true); + } + if (caseId == "P12B-FormalReadAdapters") + { + return RunFormalReadAdapters(); + } + if (caseId == "P12A-OrdinaryCadence") + { + return RunOrdinarySave(false, true); + } + if (caseId == "P8D-Matchmaking") + { + return RunMatchmaking(); + } + if (caseId == "P8C-TitleNews-Cleanup") + { + return RunTitleNews(true); + } + if (caseId == "P8C-TitleNews") + { + return RunTitleNews(); + } + if (caseId == "P8B-Friends") + { + return RunFriends(); + } + if (caseId == "P8A-Leaderboard") + { + return RunLeaderboard(); + } + if (caseId == "P6B-OrdinarySave-Cleanup") + { + return RunOrdinarySave(true); + } + if (caseId == "P6B-OrdinarySave") + { + return RunOrdinarySave(); + } + if (caseId == "P6A-InitializationLastLogin") + { + return RunInitializationLastLogin(); + } + if (caseId == "M03B-LoginRetry") + { + return RunLoginRetry(); + } + if (caseId == "M03B-LoginRetry-Cleanup") + { + return CleanupLoginRetry(); + } + if (caseId == "M03C-CustomId") + { + return RunCustomId(); + } + if (caseId == "M03D-Destroy") + { + return RunDestroyBoundary(); + } + if (caseId == "M01-Immediate") + { + return RunImmediateConsumers(); + } + + return Module02OriginalLoadTests.RunAsync(caseId); + } + + private sealed class LeaderboardContext : System.Threading.SynchronizationContext + { + internal readonly List Errors = new List(); + private readonly System.Threading.SynchronizationContext original; + private TaskCompletionSource idle = new TaskCompletionSource(); + internal int Active + { + get; + private set; + } + internal int Started + { + get; + private set; + } + internal int Posted + { + get; + private set; + } + internal LeaderboardContext(System.Threading.SynchronizationContext original) + { + this.original = original ?? throw new InvalidOperationException("Editor context required."); + idle.SetResult(true); + } + public override void OperationStarted() + { + Started++; + if (Active++ == 0) + { + idle = new TaskCompletionSource(); + } + } + public override void OperationCompleted() + { + if (--Active == 0) + { + idle.TrySetResult(true); + } + } + public override void Post(System.Threading.SendOrPostCallback callback, object state) + { + Posted++; + original.Post(_ => + { + var previous = Current; + SetSynchronizationContext(this); + try + { + callback(state); + } + catch (Exception ex) + { + Errors.Add(ex); + } + finally + { + SetSynchronizationContext(previous); + } + }, null); + } + internal Task WaitForIdle() + { + return idle.Task; + } + } + + private static object failedFormalReadCleanup; + + private sealed class FormalReadHttp : System.Net.Http.DelegatingHandler + { + internal static readonly string[] Routes = { "account/Login", "playerdata/Get", "leaderboard/GetLeaderboard", "friend/GetFriendsList", "commondata/GetTitleNews", "friend/SearchFriend" }; + internal static readonly string[] Bodies = { "{\"playerId\":\"101\"}", "{}", "{\"statisticName\":\"LevelB\",\"startPosition\":0,\"maxResultsCount\":2}", "{}", "{}", "{\"PlayFabId\":\"102\"}" }; + private readonly object gate; + private readonly List admitted; + private readonly List statuses; + private readonly Dictionary responses; + private readonly HashSet failures; + private readonly System.Threading.CancellationToken lifetime; + + internal FormalReadHttp(System.Net.Http.HttpMessageHandler inner, object gate, List admitted, + List statuses, Dictionary responses, HashSet failures, + System.Threading.CancellationToken lifetime) : base(inner) + { + this.gate = gate; + this.admitted = admitted; + this.statuses = statuses; + this.responses = responses; + this.failures = failures; + this.lifetime = lifetime; + } + + protected override async Task SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken token) + { + try + { + var body = Newtonsoft.Json.Linq.JToken.Parse(await request.Content.ReadAsStringAsync()); + int index; + lock (gate) + { + index = admitted.Count; + if (failures.Count != 0 || index >= Routes.Length || statuses.Count != index || + request.Method != System.Net.Http.HttpMethod.Post || + request.RequestUri.AbsoluteUri != PlayerKVRuntimeSelection.FormalApiUrl + Routes[index] || + !(body is Newtonsoft.Json.Linq.JObject) || + !Newtonsoft.Json.Linq.JToken.DeepEquals(body, Newtonsoft.Json.Linq.JToken.Parse(Bodies[index]))) + { + throw new InvalidOperationException("Formal read request rejected."); + } + admitted.Add(Routes[index]); + } + using (var linked = System.Threading.CancellationTokenSource.CreateLinkedTokenSource(token, lifetime)) + { + var response = await base.SendAsync(request, linked.Token).ConfigureAwait(false); + try + { + var text = index >= 2 ? await response.Content.ReadAsStringAsync().ConfigureAwait(false) : null; + lock (gate) + { + statuses.Add((int)response.StatusCode); + if (response.StatusCode != System.Net.HttpStatusCode.OK) + { + failures.Add("HTTP" + (int)response.StatusCode); + } + if (text != null) + { + responses[Routes[index]] = text; + } + } + return response; + } + catch + { + response.Dispose(); + throw; + } + } + } + catch (Exception ex) + { + lock (gate) + { + failures.Add(ex.GetType().Name); + } + throw; + } + } + } + + private static async Task RunFormalReadAdapters(bool verifyRealtime = false) + { + var instanceField = typeof(KVMgr).GetField("instance", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); + void RequireIdle() + { + if (EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || EditorApplication.isUpdating || + asap.core.GContext.Ready || PlayerKVGameplayLoop.Enabled || instanceField.GetValue(null) != null || + UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0 || + PlayerKVShutdownRegistry.Process.Status != PlayerKVShutdownStatus.Ready) + { + throw new InvalidOperationException("Formal read validation requires an idle Editor."); + } + } + RequireIdle(); + if (running || failedFormalReadCleanup != null) + { + throw new InvalidOperationException("Previous validation has not closed."); + } + running = true; + var originalContainer = asap.core.GContext.container; + var originalEvents = ValidationContextAccess.Events; + var originalContext = System.Threading.SynchronizationContext.Current; + var gate = new object(); + var admitted = new List(); + var statuses = new List(); + var responses = new Dictionary(); + var transportFailures = new HashSet(); + var errors = new List(); + var coverage = new Dictionary(); + var lifetime = new System.Threading.CancellationTokenSource(TimeSpan.FromSeconds(120)); + PlayerKVLoginContext context = null; + PlayerKVAccountLease lease = null; + CustomServerMgr server = null; + KVUserService user = null; + SignalRService realtime = null; + var realtimeTasks = new List(); + string realtimeStep = "not-started"; + int realtimeReplies = 0; + string failure = null; + bool restored = false; + int assertions = 0, offlineAssertions = 0, pfTransport = 0; + EditorApplication.CallbackFunction observePlay = () => + { + if (EditorApplication.isPlayingOrWillChangePlaymode) + { + lifetime.Cancel(); + } + }; + EditorApplication.update += observePlay; + failedFormalReadCleanup = lifetime; + void Check(bool value) + { + assertions++; + if (!value) + { + throw new InvalidOperationException("Formal read assertion failed."); + } + } + string ErrorType(Exception error) + { + return (error is System.Reflection.TargetInvocationException reflection && reflection.InnerException != null ? reflection.InnerException : error).GetType().Name; + } + async Task ObserveRealtime(Task task, bool cleanup = false) + { + realtimeTasks.Add(task); + _ = task.ContinueWith(completed => + { + var observed = completed.Exception; + }, System.Threading.CancellationToken.None, + TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default); + var timeout = Task.Delay(cleanup ? 10000 : 30000, + cleanup ? System.Threading.CancellationToken.None : lifetime.Token); + if (await Task.WhenAny(task, timeout) != task) + { + throw new TimeoutException("Realtime observation timed out."); + } + await task; + } + System.Net.Http.HttpRequestMessage Request(int index, string route = null, string body = null) + { + return new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Post, route ?? PlayerKVRuntimeSelection.FormalApiUrl + FormalReadHttp.Routes[index]) + { + Content = new System.Net.Http.StringContent(body ?? FormalReadHttp.Bodies[index], System.Text.Encoding.UTF8, "application/json") + }; + } + async Task Offline(int scenario) + { + var calls = 0; + var paths = new List(); + var codes = new List(); + var rejected = new HashSet(); + using (var probe = new System.Net.Http.HttpMessageInvoker(new FormalReadHttp(new ValidationHttp(_ => + { + calls++; + return new System.Net.Http.HttpResponseMessage(scenario == 6 ? System.Net.HttpStatusCode.Unauthorized : System.Net.HttpStatusCode.OK) + { + Content = new System.Net.Http.StringContent("{}") + }; + }), new object(), paths, codes, new Dictionary(), rejected, lifetime.Token))) + { + if (scenario == 0) + { + for (int i = 0; i < 6; i++) + { + using (var request = Request(i)) + using (var response = await probe.SendAsync(request, lifetime.Token)) + { + Check(response.StatusCode == System.Net.HttpStatusCode.OK); + } + } + Check(calls == 6 && rejected.Count == 0); + return; + } + if (scenario == 4 || scenario == 6) + { + using (var first = Request(0)) + using (await probe.SendAsync(first, lifetime.Token)) + { + } + } + var blocked = false; + using (var wrong = scenario == 1 ? Request(0, "http://example.invalid/account/Login") : + scenario == 2 ? Request(0, PlayerKVRuntimeSelection.FormalApiUrl + "playerdata/Set") : + scenario == 3 ? Request(0, body: "{\"playerId\":101}") : + scenario == 5 || scenario == 6 ? Request(1) : Request(0)) + { + try + { + using (await probe.SendAsync(wrong, lifetime.Token)) + { + } + } + catch (InvalidOperationException) + { + blocked = true; + } + } + Check(blocked && rejected.Count > 0 && calls == (scenario == 4 || scenario == 6 ? 1 : 0)); + } + } + Newtonsoft.Json.Linq.JToken Field(Newtonsoft.Json.Linq.JToken item, string name) + { + return (item as Newtonsoft.Json.Linq.JObject)?.GetValue(name, StringComparison.OrdinalIgnoreCase); + } + System.Net.Http.HttpMessageHandler Transport(System.Net.CookieContainer cookies) + { + return new FormalReadHttp(new System.Net.Http.HttpClientHandler + { + CookieContainer = cookies, + UseCookies = true, + AllowAutoRedirect = false + }, gate, admitted, statuses, responses, transportFailures, lifetime.Token); + } + void ReadyForRead() + { + RequireIdle(); + lifetime.Token.ThrowIfCancellationRequested(); + Check(context.IsCurrent && lease.IsCurrent && transportFailures.Count == 0); + } try { - var e = new PlayerKVSchemaDiagnostics(); - var a = AchievementDataManager.DecodeForKVLoad(new Dictionary(), - new Dictionary { ["AD"] = "{\"0\":\"7|18446744073709551615|9\"}" }, snapshot, e); - Check(a != null && e.TotalErrors == 0); - achievements.ResetForKVLoad(); achievements.ReplaceFromKVDecoded(a); - var actual = achievements.FindForKVValidation((cfg.ConditionType)0); - Check(actual != null && actual.Id == 7 && actual.Target == ulong.MaxValue && actual.day == 9); - actual.Target = 0; - Check(achievements.FindForKVValidation((cfg.ConditionType)0).Target == ulong.MaxValue); - var bad = AchievementDataManager.DecodeForKVLoad(new Dictionary(), - new Dictionary { ["AD"] = "{\"0\":\"7|9\"}", ["ad"] = "0:7|1|9" }, snapshot, new PlayerKVSchemaDiagnostics()); - Check(bad == null && achievements.FindForKVValidation((cfg.ConditionType)0).Target == ulong.MaxValue); - var b = AchievementDataManager.DecodeForKVLoad(new Dictionary(), new Dictionary(), snapshot, new PlayerKVSchemaDiagnostics()); - achievements.ResetForKVLoad(); achievements.ReplaceFromKVDecoded(b); - Check(achievements.IsEmptyForKVValidation && achievements.FindForKVValidation((cfg.ConditionType)0) == null); - foreach (ulong bits in new[] { 0UL, 255UL, 1UL << 31, 1UL << 32, ulong.MaxValue }) + for (int i = 0; i < 7; i++) { - e = new PlayerKVSchemaDiagnostics(); - var state = FootPrintService.DecodeForKVLoad(new Dictionary - { ["FootPrint"] = bits.ToString(CultureInfo.InvariantCulture) }, e); - Check(state != null && e.TotalErrors == 0); - foot.ResetForKVLoad(); foot.ReplaceFromKVDecoded(state); - Check(foot.CompleteFootPrintForKVValidation == bits); - Check(unchecked((uint)(int)foot.FootPrint) == unchecked((uint)bits)); - var missing = FootPrintService.DecodeForKVLoad(new Dictionary(), new PlayerKVSchemaDiagnostics()); - foot.ResetForKVLoad(); foot.ReplaceFromKVDecoded(missing); - Check(foot.CompleteFootPrintForKVValidation == 0 && (int)foot.FootPrint == 0); + await Offline(i); + } + offlineAssertions = assertions; + RequireIdle(); + var api = new Uri(PlayerKVRuntimeSelection.FormalApiUrl); + var root = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, + "../../CodexOutput/upserver/B3BatchMigration/M2/P6-2026-10-09/unity-formal-read-cache", Guid.NewGuid().ToString("N"))); + context = new PlayerKVLoginContext("101", root, 1202, _ => !lifetime.IsCancellationRequested, api, + () => new game.Account.S101AccountSession(api, Transport), () => new PlayerKVGameSessionBridge(Transport)); + failedFormalReadCleanup = context; + var prepared = await context.PrepareAsync(lifetime.Token); + Check(prepared.Prepared && context.IsCurrent && context.AccountDescriptor?.NewlyCreated == false && prepared.Data.Count > 0); + Check(context.TryAcquireAccountLease(PlayerKVControlledLoadCapability.CreateForGame(Transport), out lease)); + var config = new RetryConfig("101"); + config.Set("EventApiURL", api.AbsoluteUri); + server = new CustomServerMgr(config, _ => new ValidationHttp(request => + { + pfTransport++; + throw new InvalidOperationException("PF transport forbidden."); + })); + server.BindKVForGame(lease); + server.EnableKVBusiness(lease.Epoch); + user = new KVUserService { customServerMgr = server }; + failedFormalReadCleanup = new object[] { context, server, user, lifetime }; + var isolated = new asap.core.Container(); + ValidationContextAccess.Use(isolated); + ValidationContextAccess.Events = new asap.core.EventAggregator(); + asap.core.ContainerExtensions.RegisterInstance(isolated, server); + var flags = System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic; + if (verifyRealtime) + { + ReadyForRead(); + realtime = new SignalRService(server, config); + failedFormalReadCleanup = new object[] { context, server, user, lifetime, realtime, realtimeTasks }; + var connectionField = typeof(SignalRService).GetField("_hubConnection", flags); + realtimeStep = "connect"; + await ObserveRealtime(realtime.Connect()); + Check(realtime.IsConnected); + var firstConnection = connectionField.GetValue(realtime); + ReadyForRead(); + realtimeStep = "duplicate-connect"; + await ObserveRealtime(realtime.Connect()); + Check(realtime.IsConnected && ReferenceEquals(firstConnection, connectionField.GetValue(realtime))); + ReadyForRead(); + realtimeStep = "first-test"; + var firstReply = realtime.Publish("Test", "kv-migration", "101-first"); + await ObserveRealtime(firstReply); + Check(firstReply.Result == "OK"); + realtimeReplies++; + ReadyForRead(); + realtimeStep = "disconnect"; + await ObserveRealtime(realtime.Disconnect()); + Check(!realtime.IsConnected); + ReadyForRead(); + realtimeStep = "reconnect"; + await ObserveRealtime(realtime.Connect()); + Check(realtime.IsConnected && !ReferenceEquals(firstConnection, connectionField.GetValue(realtime))); + ReadyForRead(); + realtimeStep = "second-test"; + var secondReply = realtime.Publish("Test", "kv-migration", "101-second"); + await ObserveRealtime(secondReply); + Check(secondReply.Result == "OK"); + realtimeReplies++; + ReadyForRead(); + realtimeStep = "release"; + await ObserveRealtime(realtime.ReleaseAsync()); + Check(!realtime.IsConnected); + ReadyForRead(); + await ObserveRealtime(realtime.Connect()); + Check(!realtime.IsConnected && connectionField.GetValue(realtime) == null); + ReadyForRead(); + var afterRelease = realtime.Publish("Test", "kv-migration", "101-after-release"); + await ObserveRealtime(afterRelease); + Check(afterRelease.Result == null); + ReadyForRead(); + await ObserveRealtime(realtime.ReleaseAsync()); + Check(admitted.Count == 2 && statuses.Count == 2 && statuses.All(value => value == 200) && + pfTransport == 0 && transportFailures.Count == 0 && !realtime.IsConnected); + realtimeStep = "completed"; + } + else + { + ReadyForRead(); + var board = await new GameCore.LeadboardData { userService = user, customServerMgr = server }.GetLeadboardData("LevelB", 2); + var boardRaw = Field(Newtonsoft.Json.Linq.JObject.Parse(responses[FormalReadHttp.Routes[2]]), "leaderboard") as Newtonsoft.Json.Linq.JArray; + Check(board?.Leaderboard != null && boardRaw != null && board.Leaderboard.Count == boardRaw.Count); + for (int i = 0; i < boardRaw.Count; i++) + { + var item = board.Leaderboard[i]; + var raw = boardRaw[i]; + var profile = Field(raw, "profile"); + Check(item.PlayFabId == (string)Field(raw, "playFabId") && item.Position == (int)Field(raw, "position") && item.StatValue == (int)Field(raw, "statValue")); + Check(item.Profile.DisplayName == (string)Field(profile, "displayName") && item.Profile.AvatarUrl == (string)Field(profile, "avatarUrl") && item.Profile.LastLogin == (DateTime?)Field(profile, "lastLogin")); + } + coverage["leaderboardCount"] = boardRaw.Count; + coverage["leaderboardNonempty"] = boardRaw.Count > 0; + ReadyForRead(); + var friends = new FriendService { customServerMgr = server, userService = user }; + var friendResult = await (Task)typeof(FriendService).GetMethod("GetKVFriendsListAsync", flags).Invoke(friends, null); + var friendRaw = Field(Newtonsoft.Json.Linq.JObject.Parse(responses[FormalReadHttp.Routes[3]]), "friends") as Newtonsoft.Json.Linq.JArray; + Check(friendResult?.Friends != null && friendRaw != null && friendResult.Friends.Count == friendRaw.Count); + for (int i = 0; i < friendRaw.Count; i++) + { + var raw = Newtonsoft.Json.Linq.JObject.Parse((string)friendRaw[i]); + var item = friendResult.Friends[i]; + var profile = Field(raw, "profile"); + Check(item.FriendPlayFabId == (string)Field(raw, "playFabId")); + if (profile == null || profile.Type == Newtonsoft.Json.Linq.JTokenType.Null) + { + Check(item.Profile == null); + } + else + { + Check(item.Profile != null && item.Profile.DisplayName == (string)Field(profile, "displayName") && item.Profile.AvatarUrl == (string)Field(profile, "avatarUrl") && item.Profile.LastLogin == (DateTime?)Field(profile, "lastLogin")); + var statistics = Field(profile, "statistics") as Newtonsoft.Json.Linq.JArray; + Check(statistics == null ? item.Profile.Statistics == null : item.Profile.Statistics?.Count == statistics.Count); + if (statistics != null) + { + for (int j = 0; j < statistics.Count; j++) + { + if (statistics[j].Type == Newtonsoft.Json.Linq.JTokenType.Null) + { + Check(item.Profile.Statistics[j] == null); + } + else + { + Check(item.Profile.Statistics[j].Name == (string)Field(statistics[j], "name") && item.Profile.Statistics[j].Value == (int)Field(statistics[j], "value")); + } + } + } + } + } + coverage["friendCount"] = friendRaw.Count; + coverage["friendNonempty"] = friendRaw.Count > 0; + ReadyForRead(); + var news = new TileNewsManager(); + var newsResult = await (Task)typeof(TileNewsManager).GetMethod("GetKVTitleNewsAsync", flags).Invoke(news, null); + var newsRaw = Field(Newtonsoft.Json.Linq.JObject.Parse(responses[FormalReadHttp.Routes[4]]), "news") as Newtonsoft.Json.Linq.JArray; + Check(newsResult?.News != null && newsRaw != null && newsResult.News.Count == newsRaw.Count); + for (int i = 0; i < newsRaw.Count; i++) + { + var item = newsResult.News[i]; + var raw = newsRaw[i]; + if (raw.Type == Newtonsoft.Json.Linq.JTokenType.Null) + { + Check(item == null); + } + else + { + Check(item.NewsId == (string)Field(raw, "newsId") && item.Title == (string)Field(raw, "title") && item.Body == (string)Field(raw, "body") && item.Timestamp == (DateTime)Field(raw, "timestamp")); + } + } + coverage["newsCount"] = newsRaw.Count; + coverage["newsNonempty"] = newsRaw.Count > 0; + ReadyForRead(); + var level = await user.GetPlayLv("102"); + var levelRaw = Newtonsoft.Json.Linq.JObject.Parse(responses[FormalReadHttp.Routes[5]]); + var publicProfile = Field(levelRaw, "kvProfile") as Newtonsoft.Json.Linq.JObject; + Check((int)Field(levelRaw, "code") > 0 && publicProfile != null); + var levelToken = Field(publicProfile, "level"); + var explicitLevel = levelToken != null && levelToken.Type != Newtonsoft.Json.Linq.JTokenType.Null; + Check(!explicitLevel || levelToken.Type == Newtonsoft.Json.Linq.JTokenType.Integer); + var expectedLevel = explicitLevel ? (int)levelToken : 1; + Check(level.Item1 == "102" && level.Item2 == expectedLevel && expectedLevel >= 0 && user.GetPlayerLv("102") == expectedLevel); + var cached = await user.GetPlayLv("102"); + Check(cached.Equals(level) && admitted.Count == 6 && statuses.Count == 6 && statuses.All(value => value == 200) && pfTransport == 0 && transportFailures.Count == 0); + coverage["publicLevelExplicit"] = explicitLevel; + coverage["publicLevelDefaultApplied"] = !explicitLevel; } - foreach (string value in new[] { "-1", "18446744073709551616", "null" }) - Check(FootPrintService.DecodeForKVLoad(new Dictionary { ["FootPrint"] = value }, new PlayerKVSchemaDiagnostics()) == null); - return Task.FromResult(JsonConvert.SerializeObject(new - { success = true, caseId, assertions, scope = "M08-M23-only", fullB220 = false, sharedContainerTouched = false })); } catch (Exception ex) { - return Task.FromResult(JsonConvert.SerializeObject(new - { success = false, caseId, assertions, errorType = ex.GetType().Name, scope = "M08-M23-only", fullB220 = false })); + failure = ErrorType(ex); } finally { - // No global replacement or background work exists in these synchronous pure cases. - achievements.ResetForKVLoad(); achievements.Dispose(); foot.ResetForKVLoad(); + async Task Cleanup(Func action) + { + try + { + await action(); + } + catch (Exception ex) + { + errors.Add(ErrorType(ex)); + } + } + if (realtime != null) + { + await Cleanup(() => ObserveRealtime(realtime.ReleaseAsync(), true)); + await Cleanup(async () => + { + var all = Task.WhenAll(realtimeTasks.ToArray()); + try + { + await ObserveRealtime(all, true); + } + catch + { + if (!all.IsCompleted) + { + throw; + } + } + }); + } + await Cleanup(() => + { + lifetime.Cancel(); + return Task.CompletedTask; + }); + await Cleanup(() => + { + server?.DisableKVBusiness(); + return Task.CompletedTask; + }); + await Cleanup(() => context?.CloseAsync() ?? Task.CompletedTask); + await Cleanup(() => server?.ClearKVForGame() ?? Task.CompletedTask); + await Cleanup(() => user?.CloseKVForValidationAsync() ?? Task.CompletedTask); + await Cleanup(() => + { + ValidationContextAccess.Use(originalContainer); + return Task.CompletedTask; + }); + await Cleanup(() => + { + ValidationContextAccess.Events = originalEvents; + return Task.CompletedTask; + }); + await Cleanup(() => + { + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + return Task.CompletedTask; + }); + await Cleanup(() => + { + EditorApplication.update -= observePlay; + return Task.CompletedTask; + }); + await Cleanup(() => + { + lifetime.Dispose(); + return Task.CompletedTask; + }); + restored = errors.Count == 0 && (context == null || !context.IsCurrent) && (lease == null || !lease.IsCurrent) && + ReferenceEquals(asap.core.GContext.container, originalContainer) && ReferenceEquals(ValidationContextAccess.Events, originalEvents) && + ReferenceEquals(System.Threading.SynchronizationContext.Current, originalContext) && instanceField.GetValue(null) == null; + restored = restored && (realtime == null || !realtime.IsConnected) && realtimeTasks.All(task => task.IsCompleted); + if (restored) + { + failedFormalReadCleanup = null; + } + running = false; + } + if (verifyRealtime) + { + return JsonConvert.SerializeObject(new { success = failure == null && restored, caseId = "P14-FormalRealtime", + assertions, offlineAssertions, routes = admitted, statuses, realtimeStep, realtimeReplies, pfTransport, + restored, failure, cleanupErrors = errors, transportFailures, formalRequests = admitted.Count, + businessWrites = 0, remainingRealtimeTasks = realtimeTasks.Count(task => !task.IsCompleted), + actualSignalRService = true, automaticReconnectVerified = false, naturalUIVerified = false }); + } + return JsonConvert.SerializeObject(new { success = failure == null && restored, caseId = "P12B-FormalReadAdapters", assertions, offlineAssertions, + routes = admitted, statuses, coverage, pfTransport, restored, failure, cleanupErrors = errors, transportFailures, + formalRequests = admitted.Count, businessWrites = 0, actualTaskAdapters = true, naturalUIVerified = false }); + } + + + private static object failedFormalMatchCleanup; + + private sealed class FormalMatchHttp : System.Net.Http.DelegatingHandler + { + private readonly Func admit; + private readonly Action receive; + + internal FormalMatchHttp(System.Net.Http.HttpMessageHandler inner, + Func admit, + Action receive) + { + InnerHandler = inner; + this.admit = admit; + this.receive = receive; + } + + protected override async Task SendAsync( + System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken token) + { + var body = await request.Content.ReadAsStringAsync(); + var admittedToken = admit(request, body); + using (var linked = System.Threading.CancellationTokenSource.CreateLinkedTokenSource(token, admittedToken)) + { + var response = await base.SendAsync(request, linked.Token); + try + { + var text = await response.Content.ReadAsStringAsync(); + receive(request.RequestUri.AbsolutePath.TrimStart('/'), (int)response.StatusCode, text); + return response; + } + catch + { + response.Dispose(); + throw; + } + } } } + private static async Task RunFormalMatchmaking(bool stateOnly = false) + { + var began = DateTime.UtcNow; + var mainDeadline = began.AddSeconds(100); + var finalDeadline = began.AddSeconds(170); + var instance = typeof(KVMgr).GetField("instance", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); + void Idle() + { + if (EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || EditorApplication.isUpdating || + asap.core.GContext.Ready || PlayerKVGameplayLoop.Enabled || instance.GetValue(null) != null || + UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0 || + PlayerKVShutdownRegistry.Process.Status != PlayerKVShutdownStatus.Ready) + { + throw new InvalidOperationException("Formal matchmaking requires an idle Editor."); + } + } + Idle(); + if (running || failedFormalReadCleanup != null || failedMatchmakingCleanup != null || failedFormalMatchCleanup != null) + { + throw new InvalidOperationException("Previous validation has not closed."); + } + running = true; + var originalContainer = asap.core.GContext.container; + var originalEvents = ValidationContextAccess.Events; + var originalContext = System.Threading.SynchronizationContext.Current; + var observed = new LeaderboardContext(originalContext); + var identity = new System.Threading.CancellationTokenSource(); + var main = new System.Threading.CancellationTokenSource(TimeSpan.FromSeconds(100)); + System.Threading.CancellationTokenSource cleanupToken = null; + var stateGate = new object(); + var phase = main.Token; + var phaseDeadline = mainDeadline; + var contexts = new PlayerKVLoginContext[2]; + var leases = new PlayerKVAccountLease[2]; + var servers = new CustomServerMgr[2]; + var containers = new asap.core.Container[2]; + var expected = new[] { new Queue<(string route, Newtonsoft.Json.Linq.JToken body)>(), new Queue<(string route, Newtonsoft.Json.Linq.JToken body)>() }; + var tickets = new Dictionary(); + var unknown = new int[2]; + var tasks = new List(); + var requests = new List(); + var statuses = new List(); + var errors = new List(); + var queue = "P15_" + Guid.NewGuid().ToString("N"); + var api = new Uri(PlayerKVRuntimeSelection.FormalApiUrl); + var flags = System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static; + var requestMethod = typeof(EventFishingDuelPanel).GetMethod("RequestKVMatch", flags); + var readMatch = (Func)Delegate.CreateDelegate( + typeof(Func), typeof(EventFishingDuelPanel).GetMethod("ReadKVMatch", flags)); + int assertions = 0, offlineAssertions = 0, pfTransport = 0, matchesRead = 0; + string failure = null; + bool restored = false; + EditorApplication.CallbackFunction watch = () => + { + if (EditorApplication.isPlayingOrWillChangePlaymode) + { + main.Cancel(); + } + }; + EditorApplication.update += watch; + failedFormalMatchCleanup = new object[] { contexts, leases, servers, containers, observed, tasks, identity, main, tickets, unknown, queue, stateGate, expected, requests, statuses, errors }; + void Check(bool value) + { + assertions++; + if (!value) + { + throw new InvalidOperationException("Formal matchmaking assertion failed."); + } + } + void Track(Task task) + { + tasks.Add(task); + _ = task.ContinueWith(done => + { + var seen = done.Exception; + }, System.Threading.CancellationToken.None, + TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default); + } + async Task Until(Task task, DateTime deadline) + { + Track(task); + var remaining = deadline - DateTime.UtcNow; + if (remaining <= TimeSpan.Zero || await Task.WhenAny(task, Task.Delay(remaining)) != task) + { + throw new TimeoutException("Formal matchmaking observation timed out."); + } + await task; + } + async Task Drain(DateTime deadline) + { + await Until(observed.WaitForIdle(), deadline); + var posted = new TaskCompletionSource(); + observed.Post(_ => posted.TrySetResult(true), null); + await Until(posted.Task, deadline); + } + void Permit(int who, string route, object body) + { + var value = Newtonsoft.Json.Linq.JToken.FromObject(body); + lock (stateGate) + { + expected[who].Enqueue((route, value)); + } + } + int Pending(int who) + { + lock (stateGate) + { + return expected[who].Count; + } + } + void ClearPermits(int who) + { + lock (stateGate) + { + expected[who].Clear(); + } + } + System.Threading.CancellationToken Admit(int who, System.Net.Http.HttpRequestMessage request, string body) + { + var value = Newtonsoft.Json.Linq.JToken.Parse(body); + lock (stateGate) + { + phase.ThrowIfCancellationRequested(); + if (expected[who].Count == 0) + { + throw new InvalidOperationException("Unplanned formal request."); + } + var next = expected[who].Dequeue(); + if (request.Method != System.Net.Http.HttpMethod.Post || request.RequestUri.AbsoluteUri != api.AbsoluteUri + next.route || + !Newtonsoft.Json.Linq.JToken.DeepEquals(next.body, value)) + { + throw new InvalidOperationException("Formal request does not match its permit."); + } + if (next.route == "matchmaking/CreateMatchmakingTicket") + { + unknown[who]++; + } + return phase; + } + } + void Receive(int who, string route, int status, string text) + { + string ticket = null; + if (route == "matchmaking/CreateMatchmakingTicket" && status == 200) + { + var value = Newtonsoft.Json.Linq.JObject.Parse(text); + if ((int?)value["code"] == 1) + { + ticket = (string)value["ticketId"]; + } + } + lock (stateGate) + { + requests.Add(new { account = 101 + who, route, status }); + statuses.Add(status); + if (!string.IsNullOrEmpty(ticket) && !tickets.ContainsKey(ticket)) + { + tickets.Add(ticket, (who, "unconfirmed")); + unknown[who]--; + } + } + } + (int owner, string status) Ticket(string id) + { + lock (stateGate) + { + return tickets[id]; + } + } + (object[] requests, KeyValuePair[] tickets, int unknown, int[] statuses) Snapshot() + { + lock (stateGate) + { + return (requests.ToArray(), tickets.ToArray(), unknown.Sum(), statuses.ToArray()); + } + } + System.Net.Http.HttpMessageHandler Transport(int who, System.Net.CookieContainer cookies) + { + return new FormalMatchHttp(new System.Net.Http.HttpClientHandler + { + CookieContainer = cookies, UseCookies = true, AllowAutoRedirect = false + }, (request, body) => Admit(who, request, body), (route, status, text) => Receive(who, route, status, text)); + } + async Task Call(int who, string action, object body, Func parse) + { + Idle(); + phase.ThrowIfCancellationRequested(); + Check(DateTime.UtcNow < phaseDeadline && observed.Active == 0 && contexts[who].IsCurrent && leases[who].IsCurrent && Pending(who) == 0); + ValidationContextAccess.Use(containers[who]); + Permit(who, "matchmaking/" + action, body); + var result = new MatchCallback(); + var started = observed.Started; + System.Threading.SynchronizationContext.SetSynchronizationContext(observed); + try + { + requestMethod.MakeGenericMethod(typeof(T)).Invoke(null, new object[] { action, body, parse, + new Action(value => + { + result.Success++; + result.Value = value; + }), + new Action(_ => + { + result.Failure++; + }) }); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + } + Check(observed.Started == started + 1); + await Drain(phaseDeadline); + Check(result.Success == 1 && result.Failure == 0 && observed.Errors.Count == 0 && Pending(who) == 0); + return result.Value; + } + object Attributes(int who) + { + return new + { + Tier = new[] { "1" }, Map = new[] { "p15-common-map" }, Group = new[] { "p15" }, + Details = JsonConvert.SerializeObject(new { ID = (101 + who).ToString(CultureInfo.InvariantCulture), Name = "KV migration test", Avatar = "", RandScore = 0, Mag = 1 }) + }; + } + async Task Create(int who) + { + var result = await Call(who, "CreateMatchmakingTicket", new { queueName = queue, giveUpAfterSeconds = 60, attributes = Attributes(who) }, + value => value.ToObject()); + Check(!string.IsNullOrEmpty(result.TicketId) && Snapshot().tickets.Any(item => item.Key == result.TicketId && item.Value.owner == who)); + return result.TicketId; + } + async Task ReadTicket(string ticket) + { + var owner = Ticket(ticket).owner; + var result = await Call(owner, "GetMatchmakingTicket", new { queueName = queue, ticketId = ticket }, + value => value.ToObject()); + lock (stateGate) + { + tickets[ticket] = (owner, result.Status); + } + return result; + } + async Task Cancel(string ticket) + { + await Call(Ticket(ticket).owner, "CancelMatchmakingTicket", new { queueName = queue, ticketId = ticket }, + value => value.ToObject()); + } + async Task Cleanup(Func action) + { + try + { + await action(); + } + catch (Exception error) + { + errors.Add(error.GetType().Name); + } + } + try + { + for (int scenario = 0; scenario < 5; scenario++) + { + ClearPermits(0); + Permit(0, "account/Login", new { playerId = "101" }); + int sent = 0; + using (var probe = new System.Net.Http.HttpMessageInvoker(new FormalMatchHttp(new ValidationHttp(_ => + { + sent++; + return ValidationJson(new { }); + }), (request, body) => Admit(0, request, body), (_, __, ___) => + { + }))) + { + var route = scenario == 0 ? "http://example.invalid/account/Login" : api.AbsoluteUri + (scenario == 1 ? "playerdata/Set" : "account/Login"); + var body = scenario == 2 ? "{\"playerId\":\"102\"}" : "{\"playerId\":\"101\"}"; + bool blocked = false; + using (var request = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Post, route) + { + Content = new System.Net.Http.StringContent(body) + }) + { + try + { + using (await probe.SendAsync(request, phase)) + { + } + } + catch (InvalidOperationException) + { + blocked = true; + } + } + if (scenario == 4) + { + using (var duplicate = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Post, route) + { + Content = new System.Net.Http.StringContent(body) + }) + { + try + { + using (await probe.SendAsync(duplicate, phase)) + { + } + } + catch (InvalidOperationException) + { + blocked = true; + } + } + } + Check(scenario < 3 ? blocked && sent == 0 : scenario == 3 ? !blocked && sent == 1 : blocked && sent == 1); + } + } + ClearPermits(0); + // Exercise the same receive/snapshot functions while a background response arrives. + Receive(0, "playerdata/Get", 200, "{}"); + var held = Snapshot(); + var late = Task.Run(() => + { + for (int i = 0; i < 200; i++) + { + Receive(1, "playerdata/Get", 200, "{}"); + } + }); + for (int i = 0; i < 200; i++) + { + var copy = Snapshot(); + Check(copy.requests.Length == copy.statuses.Length); + JsonConvert.SerializeObject(copy.requests); + } + await Until(late, phaseDeadline); + Check(held.requests.Length == 1 && Snapshot().requests.Length == 201); + Check(held.tickets.Length == 0 && held.unknown == 0); + // A permit captures the original phase token even after the phase changes. + Permit(0, "account/Login", new { playerId = "101" }); + using (var probe = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Post, api.AbsoluteUri + "account/Login")) + { + var captured = Admit(0, probe, "{\"playerId\":\"101\"}"); + using (var nextPhase = new System.Threading.CancellationTokenSource()) + { + lock (stateGate) + { + phase = nextPhase.Token; + } + nextPhase.Cancel(); + Check(captured == main.Token && !captured.IsCancellationRequested); + lock (stateGate) + { + phase = main.Token; + } + } + } + lock (stateGate) + { + requests.Clear(); + statuses.Clear(); + } + offlineAssertions = assertions; + if (!stateOnly) + { + ValidationContextAccess.Events = new asap.core.EventAggregator(); + for (int who = 0; who < 2; who++) + { + int owner = who; + string id = (101 + who).ToString(CultureInfo.InvariantCulture); + Permit(who, "account/Login", new { playerId = id }); + Permit(who, "playerdata/Get", new { }); + var root = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, + "../../CodexOutput/upserver/B3BatchMigration/M2/P6-2026-10-09/unity-formal-match-cache", Guid.NewGuid().ToString("N"))); + contexts[who] = new PlayerKVLoginContext(id, root, 1500 + who, _ => !identity.IsCancellationRequested, api, + () => new game.Account.S101AccountSession(api, cookies => Transport(owner, cookies)), + () => new PlayerKVGameSessionBridge(cookies => Transport(owner, cookies))); + var prepare = contexts[who].PrepareAsync(identity.Token); + await Until(prepare, phaseDeadline); + Check(prepare.Result.Prepared && contexts[who].IsCurrent && contexts[who].AccountDescriptor?.NewlyCreated == false && prepare.Result.Data.Count > 0 && Pending(who) == 0); + Check(contexts[who].TryAcquireAccountLease(PlayerKVControlledLoadCapability.CreateForGame(cookies => Transport(owner, cookies)), out leases[who])); + var config = new RetryConfig(id); + config.Set("EventApiURL", api.AbsoluteUri); + servers[who] = new CustomServerMgr(config, _ => new ValidationHttp(request => + { + pfTransport++; + throw new InvalidOperationException("PF transport forbidden."); + })); + servers[who].BindKVForGame(leases[who]); + servers[who].EnableKVBusiness(leases[who].Epoch); + containers[who] = new asap.core.Container(); + asap.core.ContainerExtensions.RegisterInstance(containers[who], servers[who]); + } + var a = await Create(0); + Check((await ReadTicket(a)).Status == "WaitingForMatch"); + await Cancel(a); + var canceled = await ReadTicket(a); + Check(canceled.Status == "Canceled" && canceled.CancellationReasonString == "Requested"); + var b = await Create(0); + var c = await Create(1); + var first = await ReadTicket(b); + var second = await ReadTicket(c); + Check(first.Status == "Matched" && second.Status == "Matched" && !string.IsNullOrEmpty(first.MatchId) && first.MatchId == second.MatchId); + for (int who = 0; who < 2; who++) + { + var match = await Call(who, "GetMatch", new { queueName = queue, matchId = first.MatchId }, readMatch); + Check(match.MatchId == first.MatchId && match.Members?.Count == 2); + Check(match.Members.Select(member => member.Entity.Id).OrderBy(value => value).SequenceEqual(new[] { "101", "102" })); + foreach (var member in match.Members) + { + int owner = member.Entity.Id == "101" ? 0 : 1; + Check(Newtonsoft.Json.Linq.JToken.DeepEquals(Newtonsoft.Json.Linq.JToken.FromObject(member.Attributes.DataObject), Newtonsoft.Json.Linq.JToken.FromObject(Attributes(owner)))); + } + matchesRead++; + } + var complete = Snapshot(); + Check(complete.requests.Length == 14 && complete.statuses.All(status => status == 200) && pfTransport == 0 && complete.unknown == 0); + } + } + catch (Exception error) + { + failure = error.GetType().Name; + } + finally + { + main.Cancel(); + var drainDeadline = DateTime.UtcNow.AddSeconds(20); + if (drainDeadline > finalDeadline) + { + drainDeadline = finalDeadline; + } + await Cleanup(() => Drain(drainDeadline)); + if (observed.Active == 0) + { + cleanupToken = new System.Threading.CancellationTokenSource(TimeSpan.FromSeconds(40)); + lock (stateGate) + { + phase = cleanupToken.Token; + } + phaseDeadline = DateTime.UtcNow.AddSeconds(40); + if (phaseDeadline > finalDeadline.AddSeconds(-10)) + { + phaseDeadline = finalDeadline.AddSeconds(-10); + } + for (int who = 0; who < 2; who++) + { + ClearPermits(who); + } + foreach (var ticket in Snapshot().tickets.Select(item => item.Key)) + { + if (Ticket(ticket).status == "Canceled" || Ticket(ticket).status == "Matched") + { + continue; + } + await Cleanup(async () => + { + var current = await ReadTicket(ticket); + if (current.Status == "WaitingForMatch") + { + await Cancel(ticket); + current = await ReadTicket(ticket); + } + Check(current.Status == "Canceled" || current.Status == "Matched"); + }); + if (observed.Active != 0 || DateTime.UtcNow >= phaseDeadline) + { + break; + } + } + } + cleanupToken?.Cancel(); + identity.Cancel(); + var closing = new List(); + for (int who = 0; who < 2; who++) + { + int owner = who; + var close = Cleanup(async () => + { + await Cleanup(() => + { + servers[owner]?.DisableKVBusiness(); + return Task.CompletedTask; + }); + await Cleanup(() => contexts[owner]?.CloseAsync() ?? Task.CompletedTask); + await Cleanup(() => servers[owner]?.ClearKVForGame() ?? Task.CompletedTask); + }); + Track(close); + closing.Add(close); + } + var end = DateTime.UtcNow.AddSeconds(10); + if (end > finalDeadline) + { + end = finalDeadline; + } + await Cleanup(() => Until(Task.WhenAll(closing), end)); + await Cleanup(() => Drain(end)); + if (observed.Active == 0 && tasks.All(task => task.IsCompleted)) + { + ValidationContextAccess.Use(originalContainer); + ValidationContextAccess.Events = originalEvents; + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + restored = errors.Count == 0 && observed.Errors.Count == 0 && contexts.All(value => value == null || !value.IsCurrent) && + leases.All(value => value == null || !value.IsCurrent) && instance.GetValue(null) == null; + } + EditorApplication.update -= watch; + if (restored) + { + failedFormalMatchCleanup = null; + identity.Dispose(); + main.Dispose(); + cleanupToken?.Dispose(); + } + running = false; + } + var final = Snapshot(); + var errorSnapshot = errors.ToArray(); + var taskSnapshot = tasks.ToArray(); + var callbackSnapshot = observed.Errors.Select(value => value.GetType().Name).ToArray(); + var waiting = final.tickets.Count(item => item.Value.status != "Canceled" && item.Value.status != "Matched"); + var serverCleanupComplete = final.unknown == 0 && waiting == 0; + return JsonConvert.SerializeObject(new + { + success = failure == null && errorSnapshot.Length == 0 && restored && serverCleanupComplete, + caseId = stateOnly ? "P15-FormalMatchState" : "P15-FormalMatchmaking", assertions, offlineAssertions, requests = final.requests, pfTransport, businessWrites = 0, stateOnly, + matchesRead, unknownCreations = final.unknown, waitingTickets = waiting, retainedTerminalTickets = final.tickets.Length - waiting, + retainedMatchRecords = final.tickets.Any(item => item.Value.status == "Matched") ? 1 : 0, serverCleanupComplete, + restored, failure, cleanupErrors = errorSnapshot, callbackErrors = callbackSnapshot, + remainingCallbacks = observed.Active, remainingTasks = taskSnapshot.Count(task => !task.IsCompleted), + isolatedQueue = queue, tickets = final.tickets.Select(item => new { id = item.Key, account = 101 + item.Value.owner, status = item.Value.status }).ToArray(), + controlledAttributes = true, naturalUIVerified = false, globalMapRuleVerified = false + }); + } + + private static object failedMatchmakingCleanup; + + private sealed class MatchCallback + { + internal int Success; + internal int Failure; + internal T Value; + } + + private static async Task RunMatchmaking() + { + const System.Reflection.BindingFlags flags = System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic; + var instanceField = typeof(KVMgr).GetField("instance", flags); + if (running || failedMatchmakingCleanup != null || EditorApplication.isPlayingOrWillChangePlaymode || + EditorApplication.isCompiling || EditorApplication.isUpdating || asap.core.GContext.Ready || + PlayerKVGameplayLoop.Enabled || instanceField.GetValue(null) != null || + UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0) + { + throw new InvalidOperationException("Matchmaking validation requires an idle isolated Editor."); + } + var originalContainer = asap.core.GContext.container; + var originalEvents = ValidationContextAccess.Events; + var originalContext = System.Threading.SynchronizationContext.Current; + var observed = new LeaderboardContext(originalContext); + var errors = new List(); + var expectedErrors = new HashSet(); + var releases = new List>(); + var holds = new Queue>(); + PlayerKVLoginContext context = null; + CustomServerMgr server = null; + KVUserService user = null; + string failure = null; + bool restored = false; + int assertions = 0, sends = 0, auth = 0, gets = 0, pfTransport = 0; + var requestMethod = typeof(EventFishingDuelPanel).GetMethod("RequestKVMatch", flags); + var readMatch = (Func) + Delegate.CreateDelegate(typeof(Func), + typeof(EventFishingDuelPanel).GetMethod("ReadKVMatch", flags)); + running = true; + void Check(bool condition, string detail) + { + assertions++; + if (!condition) + { + throw new InvalidOperationException("Matchmaking: " + detail); + } + } + MatchCallback Start(string action, object request, Func parse, + Exception successError = null, Exception failureError = null) + { + var record = new MatchCallback(); + Action success = value => + { + record.Success++; + record.Value = value; + if (successError != null) + { + throw successError; + } + }; + Action failed = error => + { + record.Failure++; + Check(!string.IsNullOrEmpty(error), "failure is explained"); + if (failureError != null) + { + throw failureError; + } + }; + var started = observed.Started; + System.Threading.SynchronizationContext.SetSynchronizationContext(observed); + try + { + requestMethod.MakeGenericMethod(typeof(T)).Invoke(null, new object[] { action, request, parse, success, failed }); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + } + Check(observed.Started == started + 1, "real callback transport async void entered once"); + return record; + } + async Task Drain() + { + await observed.WaitForIdle(); + // Queue after async-void exception posts, so their observer has also run before assertions/restoration. + var drained = new TaskCompletionSource(); + observed.Post(_ => drained.TrySetResult(true), null); + await drained.Task; + } + try + { + var api = new Uri(PlayerKVRuntimeSelection.FormalApiUrl); + var config = new RetryConfig("101"); + config.Set("EventApiURL", api.AbsoluteUri); + string body = "{\"code\":1,\"ticketId\":\"ticket-101\"}"; + var status = System.Net.HttpStatusCode.OK; + string lastRoute = null; + Newtonsoft.Json.Linq.JObject sent = null; + var root = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, + "../../CodexOutput/upserver/B3BatchMigration/M2/P6-2026-10-09/unity-matchmaking-cache", Guid.NewGuid().ToString("N"))); + context = new PlayerKVLoginContext("101", root, 804, _ => true, api, + () => new game.Account.S101AccountSession(api, cookies => new ValidationHttp(request => + { + Check(request.RequestUri == new Uri(api, "account/Login"), "fake authentication route"); + auth++; + cookies.Add(api, new System.Net.Cookie("sid", "synthetic")); + return ValidationJson(new { state = 0, internalId = 101, newCreate = false, + createTime = "2026-01-01T00:00:00Z", svrTime = "2026-10-09T00:00:00Z" }); + })), + () => new PlayerKVGameSessionBridge(_ => new ValidationHttp(request => + { + Check(request.RequestUri == new Uri(api, "playerdata/Get"), "fake own KV route"); + gets++; + return ValidationJson(new { data = new Dictionary() }); + }))); + Check((await context.PrepareAsync()).Prepared, "real context prepared"); + Check(context.TryAcquireAccountLease(PlayerKVControlledLoadCapability.CreateForGame(_ => new ValidationHttp(null, async request => + { + Check(request.Method == System.Net.Http.HttpMethod.Post && request.RequestUri.GetLeftPart(UriPartial.Authority) == "http://s101.local:18080", "fixed POST origin"); + lastRoute = request.RequestUri.AbsolutePath; + Check(new[] { "/matchmaking/CreateMatchmakingTicket", "/matchmaking/GetMatchmakingTicket", + "/matchmaking/CancelMatchmakingTicket", "/matchmaking/GetMatch" }.Contains(lastRoute), "only four published routes"); + sends++; + sent = Newtonsoft.Json.Linq.JObject.Parse(await request.Content.ReadAsStringAsync()); + if (holds.Count != 0) + { + return await holds.Dequeue().Task; + } + return new System.Net.Http.HttpResponseMessage(status) { Content = new System.Net.Http.StringContent(body) }; + })), out var lease), "real account lease"); + System.Threading.SynchronizationContext.SetSynchronizationContext(observed); + try + { + server = new CustomServerMgr(config, _ => new ValidationHttp(request => + { + pfTransport++; + throw new InvalidOperationException("PF transport forbidden"); + })); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + } + server.BindKVForGame(lease); + server.EnableKVBusiness(lease.Epoch); + user = new KVUserService { customServerMgr = server }; + var isolated = new asap.core.Container(); + ValidationContextAccess.Use(isolated); + ValidationContextAccess.Events = new asap.core.EventAggregator(); + asap.core.ContainerExtensions.RegisterInstance(isolated, user); + asap.core.ContainerExtensions.RegisterInstance(isolated, server); + var details = "{\"ID\":\"101\",\"Name\":\"name\",\"Avatar\":\"avatar\",\"RandScore\":1,\"Mag\":2}"; + var createRequest = new { queueName = "DuelPVP", giveUpAfterSeconds = 30, + attributes = new { Tier = new[] { "1" }, Map = new[] { "10", "11" }, Group = new[] { "0" }, Details = details } }; + var ticketRequest = new { queueName = "DuelPVP", ticketId = "ticket-101" }; + var matchRequest = new { queueName = "DuelPVP", matchId = "match-101-102" }; + Func createParse = value => value.ToObject(); + var created = Start("CreateMatchmakingTicket", createRequest, createParse); + await Drain(); + Check(created.Success == 1 && created.Failure == 0 && created.Value.TicketId == "ticket-101", "create callback exact ticket"); + Check(lastRoute.EndsWith("CreateMatchmakingTicket") && sent.Count == 3 && (string)sent["queueName"] == "DuelPVP" && + (int)sent["giveUpAfterSeconds"] == 30 && (string)sent["attributes"]["Details"] == details && + sent["attributes"]["Tier"] is Newtonsoft.Json.Linq.JArray && (string)sent["attributes"]["Map"][1] == "11" && + (string)sent["attributes"]["Group"][0] == "0", "original attributes and Details string"); + foreach (var ticketStatus in new[] { "WaitingForMatch", "Matched", "Canceled", "UnknownStatus" }) + { + body = JsonConvert.SerializeObject(new { code = 1, status = ticketStatus, matchId = "match-101-102", cancellationReasonString = "Requested" }); + var ticket = Start("GetMatchmakingTicket", ticketRequest, value => value.ToObject()); + await Drain(); + Check(ticket.Success == 1 && ticket.Failure == 0 && ticket.Value.Status == ticketStatus && + ticket.Value.MatchId == "match-101-102" && ticket.Value.CancellationReasonString == "Requested", "status/reason preserved, no new state rules"); + Check(sent.Count == 2 && (string)sent["ticketId"] == "ticket-101", "ticket request fields"); + } + body = "{\"code\":1}"; + var canceled = Start("CancelMatchmakingTicket", ticketRequest, value => value.ToObject()); + await Drain(); + Check(canceled.Success == 1 && canceled.Failure == 0 && lastRoute.EndsWith("CancelMatchmakingTicket"), "cancel callback and route"); + body = JsonConvert.SerializeObject(new { code = 1, matchId = "match-101-102", members = new[] + { + new { playerId = "101", attributes = new { Tier = new[] { "1" }, Map = new[] { "10", "11" }, Group = new[] { "0" }, Details = details } }, + new { playerId = "102", attributes = new { Tier = new[] { "1" }, Map = new[] { "11" }, Group = new[] { "0" }, Details = "{\"ID\":\"102\"}" } } + } }); + var validMatch = body; + var matched = Start("GetMatch", matchRequest, readMatch); + await Drain(); + Check(matched.Success == 1 && matched.Failure == 0 && matched.Value.Members.Count == 2 && + matched.Value.Members[0].Entity.Id == "101" && matched.Value.Members[1].Entity.Id == "102", "new UserID mapped without PF credentials"); + var attributes = (Newtonsoft.Json.Linq.JObject)matched.Value.Members[1].Attributes.DataObject; + Check(attributes["Details"].Type == Newtonsoft.Json.Linq.JTokenType.String && (string)attributes["Details"] == "{\"ID\":\"102\"}" && + (string)attributes["Map"][0] == "11" && attributes["map"] == null && (string)sent["matchId"] == "match-101-102", "exact member attributes and requested match"); + body = validMatch.Replace("[\"11\"]", "[\"99\"]"); + matched = Start("GetMatch", matchRequest, readMatch); + await Drain(); + Check((string)((Newtonsoft.Json.Linq.JObject)matched.Value.Members[1].Attributes.DataObject)["Map"][0] == "99", "disjoint maps not silently repaired by client mapping"); + foreach (var members in new[] { "", ",\"members\":null", ",\"members\":[]" }) + { + body = "{\"code\":1,\"matchId\":\"m\"" + members + "}"; + matched = Start("GetMatch", matchRequest, readMatch); + await Drain(); + Check(matched.Success == 1 && matched.Failure == 0 && (members.EndsWith("[]") ? matched.Value.Members.Count == 0 : matched.Value.Members == null), "missing/null/empty original members behavior"); + } + foreach (var invalid in new[] { "", "null", "[]", "{", "{\"code\":0}", "{}", "{\"code\":\"bad\"}", + "{\"code\":1,\"members\":{}}", "{\"code\":1,\"members\":[null]}", + "{\"code\":1,\"members\":[{\"playerId\":\"102\"}]}", "{\"code\":1,\"members\":[{\"attributes\":{}}]}" }) + { + body = invalid; + matched = Start("GetMatch", matchRequest, readMatch); + await Drain(); + Check(matched.Success == 0 && matched.Failure == 1, "invalid response yields exactly one failure"); + } + body = validMatch; + foreach (var http in new[] { System.Net.HttpStatusCode.InternalServerError, System.Net.HttpStatusCode.Conflict }) + { + status = http; + canceled = Start("CancelMatchmakingTicket", ticketRequest, value => value.ToObject()); + await Drain(); + Check(canceled.Success == 0 && canceled.Failure == 1, "HTTP failure/409 stays failure, no retry"); + } + status = System.Net.HttpStatusCode.OK; + var successError = new InvalidOperationException("Expected P8D success callback exception"); + expectedErrors.Add(successError); + matched = Start("GetMatch", matchRequest, readMatch, successError); + await Drain(); + Check(matched.Success == 1 && matched.Failure == 0 && observed.Errors.Contains(successError), "success callback error is not converted into second failure"); + body = "{\"code\":0}"; + var failureError = new InvalidOperationException("Expected P8D failure callback exception"); + expectedErrors.Add(failureError); + matched = Start("GetMatch", matchRequest, readMatch, null, failureError); + await Drain(); + Check(matched.Success == 0 && matched.Failure == 1 && observed.Errors.Contains(failureError), "failure callback error is not called twice"); + var held = new TaskCompletionSource(); + releases.Add(held); + holds.Enqueue(held); + var late = Start("GetMatch", matchRequest, readMatch); + Check(observed.Active == 1 && late.Success == 0 && late.Failure == 0, "delayed operation is active"); + status = System.Net.HttpStatusCode.Unauthorized; + matched = Start("GetMatch", matchRequest, readMatch); + Check(matched.Success == 0 && matched.Failure == 1, "401 yields original failure callback"); + held.SetResult(new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK) { Content = new System.Net.Http.StringContent(validMatch) }); + await Drain(); + Check(late.Success == 0 && late.Failure == 1, "late success after real lease revocation is rejected once"); + Check(pfTransport == 0 && auth == 1 && gets == 1 && !user.IsAuthorized, "fake requests only without published gameplay authorization"); + } + catch (Exception ex) + { + failure = ex.ToString(); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + foreach (var held in releases) + { + held.TrySetResult(ValidationJson(new { code = 0 })); + } + async Task Cleanup(Func action) + { + try + { + await action(); + } + catch (Exception ex) + { + errors.Add(ex.ToString()); + } + } + await Cleanup(Drain); + if (server != null) + { + await Cleanup(() => server.ClearKVForGame()); + } + if (context != null) + { + await Cleanup(() => context.CloseAsync()); + } + if (user != null) + { + await Cleanup(() => user.CloseKVForValidationAsync()); + } + await Cleanup(() => + { + ValidationContextAccess.Use(originalContainer); + ValidationContextAccess.Events = originalEvents; + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + return Task.CompletedTask; + }); + foreach (var error in observed.Errors) + { + if (!expectedErrors.Contains(error)) + { + errors.Add(error.ToString()); + } + } + restored = errors.Count == 0 && observed.Active == 0 && ReferenceEquals(asap.core.GContext.container, originalContainer) && + ReferenceEquals(ValidationContextAccess.Events, originalEvents) && ReferenceEquals(System.Threading.SynchronizationContext.Current, originalContext); + if (!restored) + { + failedMatchmakingCleanup = context ?? (object)observed; + } + running = false; + } + return JsonConvert.SerializeObject(new { success = failure == null && restored, caseId = "P8D-Matchmaking", assertions, + auth, gets, sends, pfTransport, restored, failure, errors, expectedCallbackErrors = observed.Errors.Count(expectedErrors.Contains), + temporaryContainerIsolation = true, formalRequests = 0, playing = EditorApplication.isPlaying, naturalPanelCovered = false }); + } + + private static object failedTitleNewsCleanup; + + private sealed class NewsRedPoint : IUIRedPoint + { + internal bool Value; + + public void SetRedPointState(bool state) + { + Value = state; + } + } + + private static async Task RunTitleNews(bool failEarly = false) + { + const string key = "TitleNewsEvent"; + const System.Reflection.BindingFlags flags = System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic; + var instanceField = typeof(KVMgr).GetField("instance", flags); + var redField = typeof(RedPointManager).GetField("instance", flags); + if (running || failedTitleNewsCleanup != null || EditorApplication.isPlayingOrWillChangePlaymode || + EditorApplication.isCompiling || EditorApplication.isUpdating || asap.core.GContext.Ready || + PlayerKVGameplayLoop.Enabled || instanceField.GetValue(null) != null || + UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0) + { + throw new InvalidOperationException("Title news validation requires an idle isolated Editor."); + } + var originalContainer = asap.core.GContext.container; + var originalEvents = ValidationContextAccess.Events; + var originalContext = System.Threading.SynchronizationContext.Current; + var originalRed = redField.GetValue(null); + var hadKey = UnityEngine.PlayerPrefs.HasKey(key); + var oldValue = UnityEngine.PlayerPrefs.GetString(key); + running = true; + var observed = new LeaderboardContext(originalContext); + var errors = new List(); + var releases = new List>(); + var holds = new Queue>(); + PlayerKVLoginContext context = null; + CustomServerMgr server = null; + KVUserService user = null; + Task continuation = null; + TaskCompletionSource orderedCompletion = null; + string failure = null; + bool restored = false; + bool earlyFailureObserved = false; + bool cleanupCanceled = false; + int assertions = 0, sends = 0, auth = 0, gets = 0, pfTransport = 0; + void Check(bool condition, string detail) + { + assertions++; + if (!condition) + { + throw new InvalidOperationException("Title news: " + detail); + } + } + void Publish(TitleNewsEvent evt, bool complete = true) + { + var active = observed.Active; + var started = observed.Started; + var posted = observed.Posted; + System.Threading.SynchronizationContext.SetSynchronizationContext(observed); + try + { + asap.core.GContext.Publish(evt); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + } + Check(observed.Started == started + 1, "actual async void entered"); + if (complete) + { + Check(observed.Active == active && observed.Posted == posted && observed.Errors.Count == 0, + "actual full consumer completed before inspecting globals"); + } + } + try + { + var api = new Uri(PlayerKVRuntimeSelection.FormalApiUrl); + var config = new RetryConfig("101"); + config.Set("EventApiURL", api.AbsoluteUri); + var timestamp = new DateTime(2026, 10, 9, 1, 2, 3, DateTimeKind.Utc); + var body = "{\"code\":1,\"news\":[{\"newsId\":\"first\",\"title\":\"title\",\"body\":\"body\",\"timestamp\":\"2026-10-09T01:02:03Z\"},{\"newsId\":\"later\",\"timestamp\":\"2026-10-10T00:00:00Z\"}]}"; + var validBody = body; + var status = System.Net.HttpStatusCode.OK; + var root = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, + "../../CodexOutput/upserver/B3BatchMigration/M2/P6-2026-10-09/unity-news-cache", Guid.NewGuid().ToString("N"))); + context = new PlayerKVLoginContext("101", root, 803, _ => true, api, + () => new game.Account.S101AccountSession(api, cookies => new ValidationHttp(request => + { + Check(request.RequestUri == new Uri(api, "account/Login"), "fake login route"); + auth++; + cookies.Add(api, new System.Net.Cookie("sid", "synthetic")); + return ValidationJson(new { state = 0, internalId = 101, newCreate = false, + createTime = "2026-01-01T00:00:00Z", svrTime = "2026-10-09T00:00:00Z" }); + })), + () => new PlayerKVGameSessionBridge(_ => new ValidationHttp(request => + { + Check(request.RequestUri == new Uri(api, "playerdata/Get"), "fake KV route"); + gets++; + return ValidationJson(new { data = new Dictionary() }); + }))); + Check((await context.PrepareAsync()).Prepared, "real prepared context"); + Check(context.TryAcquireAccountLease(PlayerKVControlledLoadCapability.CreateForGame(_ => new ValidationHttp(null, async request => + { + Check(request.Method == System.Net.Http.HttpMethod.Post && request.RequestUri == new Uri(api, "commondata/GetTitleNews"), "actual published route"); + Check(Newtonsoft.Json.Linq.JObject.Parse(await request.Content.ReadAsStringAsync()).Count == 0, "original empty request"); + sends++; + if (holds.Count > 0) + { + return await holds.Dequeue().Task; + } + return new System.Net.Http.HttpResponseMessage(status) { Content = new System.Net.Http.StringContent(body) }; + })), out var lease), "real lease"); + System.Threading.SynchronizationContext.SetSynchronizationContext(observed); + try + { + server = new CustomServerMgr(config, _ => new ValidationHttp(request => + { + pfTransport++; + throw new InvalidOperationException("PF transport forbidden"); + })); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + } + server.BindKVForGame(lease); + server.EnableKVBusiness(lease.Epoch); + user = new KVUserService { customServerMgr = server }; + void Created(DateTime value) + { + typeof(KVUserService).GetProperty("CreateTime").SetValue(user, value); + } + Created(context.AccountDescriptor.CreateTimeUtc); + var isolated = new asap.core.Container(); + ValidationContextAccess.Use(isolated); + ValidationContextAccess.Events = new asap.core.EventAggregator(); + asap.core.ContainerExtensions.RegisterInstance(isolated, user); + asap.core.ContainerExtensions.RegisterInstance(isolated, server); + var red = new NewsRedPoint(); + var redManager = new RedPointManager(); + redManager.AddRedPoint(RedPointName.Announcement, red); + redField.SetValue(null, redManager); + var manager = new TileNewsManager(); + var oldNews = new PlayFab.ClientModels.TitleNewsItem { NewsId = "old" }; + manager.News = oldNews; + UnityEngine.PlayerPrefs.SetString(key, "unread"); + var evt = new TitleNewsEvent(); + Publish(evt); + Check(ReferenceEquals(evt.titleNewsItem, oldNews), "event retains original old News"); + Check(ReferenceEquals(await evt.titleNewsItemAwait.Task, manager.News) && manager.News.NewsId == "first" && + manager.News.Title == "title" && manager.News.Body == "body" && manager.News.Timestamp == timestamp, + "original first selection and exact returned fields"); + Check(red.Value && UnityEngine.PlayerPrefs.GetString(key) == "unread", "unread old account red without marking read"); + UnityEngine.PlayerPrefs.SetString(key, timestamp.ToString()); + Publish(new TitleNewsEvent()); + Check(!red.Value, "original read timestamp comparison"); + UnityEngine.PlayerPrefs.SetString(key, "unread"); + foreach (var created in new[] { timestamp, timestamp.AddDays(1) }) + { + Created(created); + Publish(new TitleNewsEvent()); + Check(!red.Value, "equal or newer account does not receive red"); + } + Created(context.AccountDescriptor.CreateTimeUtc); + redManager.SetRedPointState(RedPointName.Announcement, true); + var prior = manager.News; + evt = new TitleNewsEvent { show = true }; + orderedCompletion = evt.titleNewsItemAwait; + bool atCompletion = false; + continuation = evt.titleNewsItemAwait.Task.ContinueWith(_ => + { + atCompletion = true; + Check(UnityEngine.PlayerPrefs.GetString(key) == "unread" && red.Value, "TCS completes before Prefs and red changes"); + }, System.Threading.CancellationToken.None, + TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.Default); + if (failEarly) + { + throw new InvalidOperationException("Expected P8C validation failure before publication."); + } + Publish(evt); + await continuation; + Check(atCompletion && ReferenceEquals(evt.titleNewsItem, prior) && !red.Value && + UnityEngine.PlayerPrefs.GetString(key) == timestamp.ToString(), "show marks original string after TCS and clears red"); + foreach (var invalid in new[] { "{\"code\":1,\"news\":[]}", "{\"code\":0,\"news\":[]}", + "{\"code\":1,\"news\":null}", "{", "", "{\"code\":1,\"news\":[null]}", + "{\"code\":1,\"news\":[{\"timestamp\":\"bad-time\"}]}" }) + { + body = invalid; + manager.News = oldNews; + redManager.SetRedPointState(RedPointName.Announcement, true); + UnityEngine.PlayerPrefs.SetString(key, "unchanged"); + evt = new TitleNewsEvent { show = true }; + Publish(evt); + Check(ReferenceEquals(evt.titleNewsItem, oldNews) && await evt.titleNewsItemAwait.Task == null && manager.News == null && + !red.Value && UnityEngine.PlayerPrefs.GetString(key) == "unchanged", "failure/empty follows original clear and no read write"); + } + body = validBody; + status = System.Net.HttpStatusCode.InternalServerError; + evt = new TitleNewsEvent { show = true }; + Publish(evt); + Check(await evt.titleNewsItemAwait.Task == null && manager.News == null && !red.Value && + UnityEngine.PlayerPrefs.GetString(key) == "unchanged", "HTTP500 original failure result"); + status = System.Net.HttpStatusCode.OK; + var held = new TaskCompletionSource(); + releases.Add(held); + holds.Enqueue(held); + var late = new TitleNewsEvent { show = true }; + Publish(late, false); + Check(observed.Active == 1 && !late.titleNewsItemAwait.Task.IsCompleted, "real delayed consumer remains active"); + status = System.Net.HttpStatusCode.Unauthorized; + evt = new TitleNewsEvent { show = true }; + Publish(evt); + Check(await evt.titleNewsItemAwait.Task == null, "401 failure consumed"); + held.SetResult(new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK) + { + Content = new System.Net.Http.StringContent(validBody) + }); + await observed.WaitForIdle(); + Check(await late.titleNewsItemAwait.Task == null && manager.News == null && !red.Value && + UnityEngine.PlayerPrefs.GetString(key) == "unchanged", "late 200 after revocation cannot publish news or read marker"); + Check(pfTransport == 0 && auth == 1 && gets == 1 && !user.IsAuthorized, "fake transports only, no published game authorization"); + } + catch (Exception ex) + { + failure = ex.ToString(); + earlyFailureObserved = failEarly && ex is InvalidOperationException && + ex.Message == "Expected P8C validation failure before publication."; + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + foreach (var held in releases) + { + held.TrySetResult(ValidationJson(new { code = 0 })); + } + async Task Cleanup(Func action) + { + try + { + await action(); + } + catch (Exception ex) + { + errors.Add(ex.ToString()); + } + } + await Cleanup(() => observed.WaitForIdle()); + if (observed.Active == 0 && orderedCompletion != null && !orderedCompletion.Task.IsCompleted) + { + cleanupCanceled = orderedCompletion.TrySetCanceled(); + } + if (continuation != null) + { + await Cleanup(async () => + { + try + { + await continuation; + } + catch (OperationCanceledException) when (cleanupCanceled && continuation.IsCanceled) + { + // Only our cleanup cancellation is expected; no successful news result is invented. + } + }); + } + if (server != null) + { + await Cleanup(() => server.ClearKVForGame()); + } + if (context != null) + { + await Cleanup(() => context.CloseAsync()); + } + if (user != null) + { + await Cleanup(() => user.CloseKVForValidationAsync()); + } + await Cleanup(() => + { + if (hadKey) + { + UnityEngine.PlayerPrefs.SetString(key, oldValue); + } + else + { + UnityEngine.PlayerPrefs.DeleteKey(key); + } + Check(UnityEngine.PlayerPrefs.HasKey(key) == hadKey && UnityEngine.PlayerPrefs.GetString(key) == oldValue, "actual Prefs restoration"); + return Task.CompletedTask; + }); + await Cleanup(() => + { + redField.SetValue(null, originalRed); + return Task.CompletedTask; + }); + await Cleanup(() => + { + ValidationContextAccess.Use(originalContainer); + ValidationContextAccess.Events = originalEvents; + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + return Task.CompletedTask; + }); + foreach (var error in observed.Errors) + { + errors.Add(error.ToString()); + } + restored = errors.Count == 0 && observed.Active == 0 && ReferenceEquals(redField.GetValue(null), originalRed) && + ReferenceEquals(asap.core.GContext.container, originalContainer) && ReferenceEquals(ValidationContextAccess.Events, originalEvents) && + ReferenceEquals(System.Threading.SynchronizationContext.Current, originalContext); + if (!restored) + { + failedTitleNewsCleanup = context ?? (object)observed; + } + running = false; + } + return JsonConvert.SerializeObject(new { success = (failEarly ? earlyFailureObserved && cleanupCanceled : failure == null) && restored, + caseId = failEarly ? "P8C-TitleNews-Cleanup" : "P8C-TitleNews", assertions, earlyFailureObserved, cleanupCanceled, + auth, gets, sends, pfTransport, restored, failure, errors, temporaryPrefsKey = key, + temporaryContainerIsolation = true, formalRequests = 0, playing = EditorApplication.isPlaying }); + } + + private static object failedLeaderboardCleanup; + + private static async Task RunLeaderboard() + { + var instanceField = typeof(KVMgr).GetField("instance", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); + if (running || failedLeaderboardCleanup != null || EditorApplication.isPlayingOrWillChangePlaymode || + EditorApplication.isCompiling || EditorApplication.isUpdating || asap.core.GContext.Ready || + PlayerKVGameplayLoop.Enabled || instanceField.GetValue(null) != null || + UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0) + { + throw new InvalidOperationException("Leaderboard validation requires an idle isolated Editor."); + } + running = true; + var previousContext = System.Threading.SynchronizationContext.Current; + var observed = new LeaderboardContext(previousContext); + PlayerKVLoginContext context = null; + CustomServerMgr server = null; + KVUserService user = null; + IDisposable subscription = null; + Task pending = null; + TaskCompletionSource held = null; + var errors = new List(); + string failure = null; + int assertions = 0, sends = 0, pfTransport = 0, events = 0, logins = 0, gets = 0; + bool restored = false; + void Check(bool condition, string detail) + { + assertions++; + if (!condition) + { + throw new InvalidOperationException("Leaderboard: " + detail); + } + } + try + { + var api = new Uri(PlayerKVRuntimeSelection.FormalApiUrl); + var config = new RetryConfig("101"); + config.Set("EventApiURL", api.AbsoluteUri); + var status = System.Net.HttpStatusCode.OK; + var body = "{\"code\":1,\"leaderboard\":[{\"playFabId\":\"102\",\"position\":4,\"statValue\":500002,\"profile\":{\"displayName\":null,\"avatarUrl\":\"avatar102\",\"lastLogin\":\"2026-10-09T01:02:03Z\"}},{\"playFabId\":\"101\",\"position\":2,\"statValue\":500002,\"profile\":{\"displayName\":\"first\",\"avatarUrl\":null,\"lastLogin\":null}}]}"; + var validBody = body; + Newtonsoft.Json.Linq.JObject sent = null; + var delayNext = false; + var root = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, + "../../CodexOutput/upserver/B3BatchMigration/M2/P6-2026-10-09/unity-leaderboard-cache", Guid.NewGuid().ToString("N"))); + context = new PlayerKVLoginContext("101", root, 801, _ => true, api, + () => new game.Account.S101AccountSession(api, cookies => new ValidationHttp(request => + { + Check(request.RequestUri == new Uri(api, "account/Login"), "fake login route"); + logins++; + cookies.Add(api, new System.Net.Cookie("sid", "synthetic")); + return ValidationJson(new { state = 0, internalId = 101, newCreate = false, + createTime = "2026-01-01T00:00:00Z", svrTime = "2026-10-09T00:00:00Z" }); + })), + () => new PlayerKVGameSessionBridge(_ => new ValidationHttp(request => + { + Check(request.RequestUri == new Uri(api, "playerdata/Get"), "fake KV route"); + gets++; + return ValidationJson(new { data = new Dictionary() }); + }))); + Check((await context.PrepareAsync()).Prepared, "real prepared context"); + Check(context.TryAcquireAccountLease(PlayerKVControlledLoadCapability.CreateForGame(_ => new ValidationHttp(null, async request => + { + Check(request.Method == System.Net.Http.HttpMethod.Post && request.RequestUri == new Uri(api, "leaderboard/GetLeaderboard"), "real route and method"); + sends++; + sent = Newtonsoft.Json.Linq.JObject.Parse(await request.Content.ReadAsStringAsync()); + if (delayNext) + { + delayNext = false; + return await held.Task; + } + return new System.Net.Http.HttpResponseMessage(status) { Content = new System.Net.Http.StringContent(body) }; + })), out var lease), "real account lease"); + System.Threading.SynchronizationContext.SetSynchronizationContext(observed); + try + { + server = new CustomServerMgr(config, _ => new ValidationHttp(request => + { + pfTransport++; + throw new InvalidOperationException("PF transport forbidden"); + })); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(previousContext); + } + server.BindKVForGame(lease); + server.EnableKVBusiness(lease.Epoch); + user = new KVUserService { customServerMgr = server }; + var board = new GameCore.LeadboardData { userService = user, customServerMgr = server }; + var result = await board.GetLeadboardData("LevelB"); + Check(result?.Leaderboard.Count == 2 && result.Leaderboard[0].PlayFabId == "102", "real UserID mapping"); + Check((string)sent["statisticName"] == "LevelB" && (int)sent["maxResultsCount"] == 50 && + (int)sent["startPosition"] == 0 && sent.Count == 3, "original default request"); + Check(result.Leaderboard[0].Profile.LastLogin == new DateTime(2026, 10, 9, 1, 2, 3, DateTimeKind.Utc) && + result.Leaderboard[1].Profile.LastLogin == null, "real DateTime and null"); + await board.GetLeadboardData("EULevelB", 17); + Check((string)sent["statisticName"] == "EULevelB" && (int)sent["maxResultsCount"] == 17, "original region/count"); + subscription = asap.core.GContext.OnEvent().Subscribe(evt => + { + events++; + Check(!evt.isLocal && board.LeadboardDataList.Count == 2 && board.LeadboardDataList[0].playFabId == "102", "event follows real list publication"); + }); + void Consume() + { + var started = observed.Started; + var posted = observed.Posted; + var previous = System.Threading.SynchronizationContext.Current; + System.Threading.SynchronizationContext.SetSynchronizationContext(observed); + try + { + board.GetLevelLeadboardData(); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(previous); + } + Check(observed.Started == started + 1 && observed.Active == 0 && observed.Posted == posted, + "real async void operation completed synchronously without pending continuation"); + } + Consume(); + var originalList = board.LeadboardDataList; + Check(events == 1 && originalList[0].position == 4 && originalList[0].rank == 5 && originalList[0].value == 500002 && + originalList[1].playFabId == "101" && originalList[1].position == 2, "original order and Position+1 without reranking"); + Check(originalList[0].displayName == user.GetDefaultName("102") && originalList[0].avatarUrl == "avatar102" && + originalList[0].LastLogin == result.Leaderboard[0].Profile.LastLogin, "real item/default name/time mapping"); + Check(user.GetPlayInfo("102").name == originalList[0].displayName && user.GetPlayInfo("101").name == "first", "original profile cache consumer"); + foreach (var invalid in new[] { "{\"code\":1,\"leaderboard\":[]}", "", "null", "{", "[]", "{}", + "{\"code\":0,\"leaderboard\":[]}", "{\"code\":1,\"leaderboard\":null}", + "{\"code\":1,\"leaderboard\":[null]}", "{\"code\":1,\"leaderboard\":[{\"profile\":null}]}", + "{\"code\":1,\"leaderboard\":[{\"profile\":{\"lastLogin\":\"bad-time\"}}]}" }) + { + body = invalid; + var empty = invalid == "{\"code\":1,\"leaderboard\":[]}"; + result = await board.GetLeadboardData("LevelB"); + Check(empty ? result?.Leaderboard.Count == 0 : result == null, "empty success differs from failure"); + Consume(); + Check(ReferenceEquals(originalList, board.LeadboardDataList) && events == 1, "empty/failure retains old list without event after real completion"); + } + body = validBody; + status = System.Net.HttpStatusCode.InternalServerError; + Check(await board.GetLeadboardData("LevelB") == null, "real HTTP500 remains failure"); + Consume(); + Check(ReferenceEquals(originalList, board.LeadboardDataList) && events == 1, "HTTP500 preserves original list"); + status = System.Net.HttpStatusCode.OK; + held = new TaskCompletionSource(); + delayNext = true; + pending = board.GetLeadboardData("LevelB"); + await RetryWait(() => !delayNext); + Check(!pending.IsCompleted, "real delayed response pending"); + status = System.Net.HttpStatusCode.Unauthorized; + Check(await board.GetLeadboardData("LevelB") == null, "401 is a failure"); + held.SetResult(new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK) { Content = new System.Net.Http.StringContent(validBody) }); + Check(await pending == null, "late old-owner success discarded"); + var sendsBefore = sends; + var rejected = false; + try + { + await board.GetLeadboardData("LevelB"); + } + catch (InvalidOperationException) + { + rejected = true; + } + Check(rejected && sendsBefore == sends, "revoked owner cannot send"); + Check(pfTransport == 0 && logins == 1 && gets == 1 && observed.Active == 0, "no PF transport/relogin or pending async void"); + } + catch (Exception ex) + { + failure = ex.ToString(); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(previousContext); + held?.TrySetResult(ValidationJson(new { })); + async Task Cleanup(Func action) + { + try + { + await action(); + } + catch (Exception ex) + { + errors.Add(ex.ToString()); + } + } + if (pending != null) + { + await Cleanup(async () => + { + await pending; + }); + } + await Cleanup(() => observed.WaitForIdle()); + await Cleanup(() => + { + subscription?.Dispose(); + return Task.CompletedTask; + }); + if (server != null) + { + await Cleanup(() => server.ClearKVForGame()); + } + if (context != null) + { + await Cleanup(() => context.CloseAsync()); + } + if (user != null) + { + await Cleanup(() => user.CloseKVForValidationAsync()); + } + foreach (var error in observed.Errors) + { + errors.Add(error.ToString()); + } + restored = errors.Count == 0 && observed.Active == 0 && ReferenceEquals(System.Threading.SynchronizationContext.Current, previousContext); + if (!restored) + { + failedLeaderboardCleanup = context ?? (object)observed; + } + running = false; + } + return JsonConvert.SerializeObject(new { success = failure == null && restored, caseId = "P8A-Leaderboard", assertions, + sends, logins, gets, pfTransport, events, restored, failure, errors, formalRequests = 0, + playing = EditorApplication.isPlaying, globalContainerChanged = false }); + } + + private static object failedFriendCleanup; + + private sealed class StartupMailHandler : BaseMailHandler + { + internal int Fetches + { + get; + private set; + } + + internal StartupMailHandler(MailCache cache, ICustomServerMgr server) : base(cache, server) + { + } + + public override Task FetchMail() + { + Fetches++; + return Task.FromResult(true); + } + } + + private static async Task RunFriends(bool verifyStartup = false) + { +#if AGG + const bool realChannelCounters = true; +#else + const bool realChannelCounters = false; +#endif + var instanceField = typeof(KVMgr).GetField("instance", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); + if (realChannelCounters || running || failedFriendCleanup != null || EditorApplication.isPlayingOrWillChangePlaymode || + EditorApplication.isCompiling || EditorApplication.isUpdating || asap.core.GContext.Ready || + PlayerKVGameplayLoop.Enabled || instanceField.GetValue(null) != null || + UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0) + { + throw new InvalidOperationException("Friends validation requires idle isolated Editor without live channel counters."); + } + running = true; + var originalContainer = asap.core.GContext.container; + var originalEvents = ValidationContextAccess.Events; + var originalContext = System.Threading.SynchronizationContext.Current; + var observed = new LeaderboardContext(originalContext); + var isolated = new asap.core.Container(); + CustomServerMgr server = null; + PlayerKVGameLoadCoordinator coordinator = null; + KVUserService user = null; + IDisposable listSubscription = null, profileSubscription = null; + var releases = new List>(); + var holds = new Queue>(); + Task<(string, int)> pendingLevel = null; + InGameMailService startupMail = null; + SignalRService startupRT = null; + DevIAPService startupIAP = null; + StartupMailHandler startupHandler = null; + UnityEngine.Application.LogCallback startupLog = null; + var startupPrefs = new Dictionary(); + int orderCallbacks = 0; + var errors = new List(); + string failure = null; + bool restored = false; + int assertions = 0, sends = 0, auth = 0, gets = 0, pfTransport = 0, listEvents = 0, profileEvents = 0; + void Check(bool condition, string detail) + { + assertions++; + if (!condition) + { + throw new InvalidOperationException("Friends: " + detail); + } + } + void Invoke(Action action, bool complete = true) + { + var started = observed.Started; + var posted = observed.Posted; + var previous = System.Threading.SynchronizationContext.Current; + System.Threading.SynchronizationContext.SetSynchronizationContext(observed); + try + { + action(); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(previous); + } + if (complete) + { + Check(observed.Started == started + 1 && observed.Active == 0 && observed.Posted == posted && observed.Errors.Count == 0, + "original async void truly completed synchronously"); + } + } + async Task LevelFails(string id) + { + var failed = false; + try + { + await user.GetPlayLv(id); + } + catch (InvalidOperationException) + { + failed = true; + } + Check(failed, "ordinary level remains a failed Task"); + } + try + { + var api = new Uri(PlayerKVRuntimeSelection.FormalApiUrl); + var config = new RetryConfig("101"); + config.Set("EventApiURL", api.AbsoluteUri); + var profileBody = "{\"code\":1,\"info\":{\"displayName\":\"legacy\",\"avatarUrl\":\"legacy\",\"level\":999},\"kvProfile\":{\"displayName\":\"KV name\",\"avatarUrl\":\"KV avatar\",\"level\":37}}"; + var friendBody = "{\"code\":1,\"friends\":[]}"; + var status = System.Net.HttpStatusCode.OK; + Newtonsoft.Json.Linq.JObject sent = null; + System.Threading.SynchronizationContext.SetSynchronizationContext(observed); + try + { + server = new CustomServerMgr(config, _ => new ValidationHttp(request => + { + pfTransport++; + throw new InvalidOperationException("PF transport forbidden"); + })); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + } + user = new KVUserService { customServerMgr = server }; + long boundEpoch = 0; + coordinator = new PlayerKVGameLoadCoordinator(() => true, lease => + { + server.BindKVForGame(lease); + boundEpoch = lease.Epoch; + }, server.ClearKVForGame); + var root = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, + "../../CodexOutput/upserver/B3BatchMigration/M2/P6-2026-10-09/unity-friends-cache", Guid.NewGuid().ToString("N"))); + var capability = PlayerKVGameLoadCapability.CreateForGame(api, root, + cookies => new ValidationHttp(request => + { + Check(request.RequestUri == new Uri(api, "account/Login"), "fake login route"); + auth++; + cookies.Add(api, new System.Net.Cookie("sid", "synthetic")); + return ValidationJson(new { state = 0, internalId = 101, newCreate = false, + createTime = "2026-01-01T00:00:00Z", svrTime = "2026-10-09T00:00:00Z" }); + }), + _ => new ValidationHttp(request => + { + Check(request.RequestUri == new Uri(api, "playerdata/Get"), "fake own archive read"); + gets++; + return ValidationJson(new { data = new Dictionary { ["Fixture"] = "1" } }); + }), + _ => new ValidationHttp(null, async request => + { + Check(request.Method == System.Net.Http.HttpMethod.Post && request.RequestUri.GetLeftPart(UriPartial.Authority) == "http://s101.local:18080", "fixed authenticated POST"); + var route = request.RequestUri.AbsolutePath; + Check(route == "/friend/GetFriendsList" || route == "/friend/SearchFriend", "only published friend routes"); + sends++; + sent = Newtonsoft.Json.Linq.JObject.Parse(await request.Content.ReadAsStringAsync()); + Check(route.EndsWith("SearchFriend") ? sent.Count == 1 && sent["PlayFabId"] != null : sent.Count == 0, + "old identity field or empty list request, no target KV shortcut"); + if (holds.Count != 0) + { + return await holds.Dequeue().Task; + } + return new System.Net.Http.HttpResponseMessage(status) + { + Content = new System.Net.Http.StringContent(route.EndsWith("SearchFriend") ? profileBody : friendBody) + }; + })); + var prepared = await coordinator.LoadForGameAsync("101", capability, user.LoginLifetime); + Check(prepared.State == PlayerKVGameLoadState.PreparedForGame && coordinator.TryGetCurrentGameHandle(prepared.Epoch, out _), "actual coordinator prepared original handle"); + coordinator.TryGetCurrentGameHandle(prepared.Epoch, out var handle); + SetUserField(user, "coordinator", coordinator); + SetUserField(user, "handle", handle); + SetUserField(user, "epoch", prepared.Epoch); + SetUserField(user, "playerId", "101"); + server.EnableKVBusiness(boundEpoch); + Check(user.UserId == "101" && !user.IsAuthorized, "real handoff identity, not published gameplay authorization"); + ValidationContextAccess.Use(isolated); + ValidationContextAccess.Events = new asap.core.EventAggregator(); + asap.core.ContainerExtensions.RegisterInstance(isolated, user); + profileSubscription = asap.core.GContext.OnEvent().Subscribe(_ => profileEvents++); + listSubscription = asap.core.GContext.OnEvent().Subscribe(_ => listEvents++); + + if (verifyStartup) + { + const System.Reflection.BindingFlags fields = System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic; + foreach (var key in new[] { "mail_cache__101", "mail_sync_Time_101" }) + { + startupPrefs[key] = (UnityEngine.PlayerPrefs.HasKey(key), UnityEngine.PlayerPrefs.GetString(key)); + } + var directory = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, "../../cfgData")); + var tables = new cfg.Tables(name => SimpleJSON.JSON.Parse(System.IO.File.ReadAllText(System.IO.Path.Combine(directory, name + ".json")))); + Check(tables.TbAutoDeliveryMail.DataList.Count > 0, "original mail Min input is populated"); + startupRT = new SignalRService(server, config); + asap.core.ContainerExtensions.RegisterInstance(isolated, startupRT); + Check(!startupRT.IsConnected && await startupRT.Publish("Test", "synthetic") == null && + await startupRT.Publish("Test", "synthetic", "synthetic") == null, "unconnected publish cannot send"); + startupMail = new InGameMailService(server, tables); + var cache = (MailCache)typeof(InGameMailService).GetField("_mailCache", fields).GetValue(startupMail); + startupHandler = new StartupMailHandler(cache, server); + typeof(InGameMailService).GetField("_handler", fields).SetValue(startupMail, startupHandler); + var cacheUser = typeof(MailCache).GetField("_userId", fields); + var handlers = (Dictionary>)typeof(SignalRService).GetField("handlers", fields).GetValue(startupRT); + startupMail.Init(); + Check((string)cacheUser.GetValue(cache) == "101" && startupHandler.Fetches == 0, "original identity cache and deferred mail branch"); + asap.core.GContext.Publish(new EvtAPISvrLoginSuccess()); + Check(startupHandler.Fetches == 1, "original login subscription calls Fetch boundary"); + Invoke(() => handlers[nameof(FetchMailEvt)]("{}")); + await P6AWait(observed.WaitForIdle()); + Check(startupHandler.Fetches == 2, "original RT subscription calls Fetch boundary"); + startupMail.Reset(); + Check(cacheUser.GetValue(cache) == null, "original Reset unloads mail cache"); + asap.core.GContext.Publish(new EvtAPISvrLoginSuccess()); + handlers[nameof(FetchMailEvt)]("{}"); + Check(startupHandler.Fetches == 2 && observed.Active == 0, "Reset removes both subscriptions"); + startupMail.Init(); + asap.core.GContext.Publish(new EvtAPISvrLoginSuccess()); + Invoke(() => handlers[nameof(FetchMailEvt)]("{}")); + await P6AWait(observed.WaitForIdle()); + Check(startupHandler.Fetches == 4 && (string)cacheUser.GetValue(cache) == "101", "Init after Reset has one subscription each"); + startupMail.Reset(); + asap.core.GContext.Publish(new EvtAPISvrLoginSuccess()); + handlers[nameof(FetchMailEvt)]("{}"); + Check(startupHandler.Fetches == 4, "second Reset removes subscribers"); + + startupLog = (message, stack, type) => + { + if (message.StartsWith("[AggIAPService] OnOrderCompleted", StringComparison.Ordinal)) + { + orderCallbacks++; + } + }; + UnityEngine.Application.logMessageReceived += startupLog; + startupIAP = new DevIAPService { rts = startupRT }; + startupIAP.Init(); + handlers[nameof(SC_OrderConfirmEvt)]("{}"); + Check(orderCallbacks == 1, "original Dev order subscription entered once"); + startupIAP.Init(); + handlers[nameof(SC_OrderConfirmEvt)]("{}"); + Check(orderCallbacks == 2, "original Init releases previous order subscription"); + startupIAP.Release(); + handlers[nameof(SC_OrderConfirmEvt)]("{}"); + Check(orderCallbacks == 2, "original Release removes order subscription"); + var loginField = typeof(SignalRService).GetField("loginSubscription", fields); + startupRT.WaitForAPISvrLogin(); + var loginSubscription = loginField.GetValue(startupRT); + startupRT.WaitForAPISvrLogin(); + Check(loginSubscription != null && ReferenceEquals(loginSubscription, loginField.GetValue(startupRT)), "RT does not subscribe twice"); + await startupRT.ReleaseAsync(); + await startupRT.ReleaseAsync(); + var sessionChanged = (Delegate)typeof(CustomServerMgr).GetField("SessionChanged", fields).GetValue(server); + Check(loginField.GetValue(startupRT) == null && handlers.Count == 0 && !startupRT.IsConnected && + (sessionChanged == null || sessionChanged.GetInvocationList().All(item => !ReferenceEquals(item.Target, startupRT))), "RT release clears registrations"); + var rejected = false; + try + { + startupRT.OnEvent(_ => + { + }); + } + catch (ObjectDisposedException) + { + rejected = true; + } + Check(rejected, "released RT rejects new subscription"); + Check(auth == 1 && gets == 1 && sends == 0 && pfTransport == 0 && observed.Active == 0 && observed.Errors.Count == 0, "only synthetic account preparation, no business transport"); + } + else + { + var profileCache = UserField>(user, "profiles"); + var levelCache = UserField>(user, "levels"); + var cacheEvents = profileEvents; + var cacheSends = sends; + var nullRejected = false; + try + { + user.SetPlayInfo(null, "Explicit name", "avatar"); + } + catch (ArgumentNullException) + { + nullRejected = true; + } + Check(nullRejected, "explicit null cache key keeps original dictionary failure"); + user.SetPlayInfo("", "Empty key", "empty-avatar"); + Check(profileCache.TryGetValue("", out var emptyProfile) && emptyProfile.name == "Empty key" && + emptyProfile.avatarUrl == "empty-avatar" && user.GetPlayInfo("") == null, "empty key write and empty lookup keep distinct original contracts"); + user.SetPlayInfo("101", "Before", "before-avatar"); + var oldProfile = user.GetPlayInfo("101"); + user.SetPlayInfo("101", "After", "after-avatar"); + Check(!ReferenceEquals(oldProfile, user.GetPlayInfo("101")) && oldProfile.name == "Before" && + user.GetPlayInfo("101").avatarUrl == "after-avatar", "explicit cache assignment replaces only the dictionary object"); + user.SetPlayInfo("101", "", null); + Check(user.GetPlayInfo("101").name == "Angler#101", "approved short UserID default name remains"); + user.SetPlayerLv("109", 7); + user.ClearPlayInfos(); + Check(profileCache.Count == 0 && levelCache.Count == 0 && profileEvents == cacheEvents && sends == cacheSends, + "pure cache writes and clear add no event or transport"); + Check((await user.GetPlayLv("109")).Item2 == 37 && (string)sent["PlayFabId"] == "109", "ordinary remote level uses kvProfile rather than legacy info"); + var before = sends; + Check((await user.GetPlayLv("109")).Item2 == 37 && user.GetPlayerLv("109") == 37 && sends == before, "successful level uses original cache"); + user.SetPlayerLv("109", -3); + await LevelFails("109"); + await LevelFails(null); + await LevelFails(""); + await LevelFails("101"); + Check(sends == before && user.GetPlayerLv("109") == -3, "negative cache/null/empty/unpublished self do not query"); + foreach (var sample in new[] + { + (Body: "{\"code\":1,\"kvProfile\":{}}", Level: (int?)1), + (Body: "{\"code\":1,\"kvProfile\":{\"level\":0}}", Level: (int?)0), + (Body: "{\"code\":1,\"kvProfile\":{\"level\":-5}}", Level: (int?)null), + (Body: "{\"code\":1,\"info\":{\"level\":99},\"kvProfile\":null}", Level: (int?)null), + (Body: "{\"code\":0,\"kvProfile\":{\"level\":99}}", Level: (int?)null), + (Body: "{\"code\":1,\"kvProfile\":{\"level\":\"bad\"}}", Level: (int?)null), + (Body: "{", Level: (int?)null), + (Body: "", Level: (int?)null) + }) + { + user.ClearPlayInfos(); + profileBody = sample.Body; + before = sends; + Check(user.GetPlayerLv("109") == 1 && sends == before, "synchronous display default does not query"); + if (sample.Level.HasValue) + { + Check((await user.GetPlayLv("109")).Item2 == sample.Level.Value, "entity-present missing-level default or actual level"); + } + else + { + await LevelFails("109"); + Check(user.GetPlayerLv("109") == 1, "failed level did not fill cache"); + } + Check(sends == before + 1, "one query without retry"); + } + foreach (var sample in new[] + { + (Body: "{\"code\":1,\"info\":{\"displayName\":\"legacy\",\"avatarUrl\":\"legacy\"},\"kvProfile\":{\"displayName\":\"KV name\",\"avatarUrl\":\"KV avatar\",\"level\":37}}", Success: true), + (Body: "{\"code\":1,\"kvProfile\":{\"displayName\":\"\",\"avatarUrl\":null}}", Success: true), + (Body: "{\"code\":1,\"info\":{\"displayName\":\"legacy\"},\"kvProfile\":null}", Success: false), + (Body: "{invalid", Success: false), + (Body: "", Success: false) + }) + { + user.ClearPlayInfos(); + profileBody = sample.Body; + before = profileEvents; + PlayInfo profile = null; + Invoke(() => profile = user.GetPlayInfo("110")); + Check(profileEvents == before + (sample.Success ? 1 : 0) && ReferenceEquals(profile, user.GetPlayInfo("110")), "root profile success/failure and original object identity"); + Check(profile.name == (sample.Body.Contains("KV name") ? "KV name" : "Angler#110"), "KV name or original placeholder, never legacy fallback"); + Check(user.GetPlayerLv("110") == 1, "profile fill never populates levels"); + } + string Item(string id, object profile) => JsonConvert.SerializeObject(new { PlayFabId = id, DisplayName = "legacy", Level = 999, Profile = profile }); + object Profile(string name, object stats, string last = null) => new { DisplayName = name, AvatarUrl = "avatar", Statistics = stats, LastLogin = last }; + var low = new object[] { null, new { Name = "Else", Value = 9999999 }, new { Name = "LevelB", Value = 900001 } }; + friendBody = JsonConvert.SerializeObject(new { code = 1, friends = new[] + { + Item("101", Profile("self", low)), + Item("102", Profile(null, low, "2026-10-09T01:02:03Z")), + Item("103", Profile("high", new[] { new { Name = "LevelB", Value = 1900001 } })), + Item("104", null), + Item("105", Profile("null stats", null)), + Item("106", Profile("empty stats", Array.Empty())), + Item("107", Profile("missing LevelB", new[] { new { Name = "Else", Value = 6 } })), + Item("108", Profile("negative", new[] { new { Name = "LevelB", Value = -5 } })) + }}); + var friends = new FriendService { userService = user, customServerMgr = server }; + Invoke(friends.GetFriendList); + Check(friends.FriendList.Count == 5 && friends.FriendList[0].playFabId == "103" && friends.FriendList[1].playFabId == "102" && + friends.FriendList[4].value == -5, "original self/profile/stat filtering and LevelB sort"); + Check(friends.FriendList.Select((item, index) => item.position == index && item.rank == index + 1).All(value => value) && + !friends.IsFriendListRefreshing && listEvents == 1, "real list ranks/refresh/event"); + Check(friends.FriendList[1].displayName == "Angler#102" && friends.FriendList[1].LastLogin == new DateTime(2026, 10, 9, 1, 2, 3, DateTimeKind.Utc) && + friends.FriendList[0].LastLogin == null && user.GetPlayInfo("102").name == "Angler#102", "real item time/default name/profile cache"); + var oldList = friends.FriendList; + foreach (var invalid in new[] { "", "null", "{", "{\"code\":0,\"friends\":[]}", "{\"code\":1,\"friends\":null}", + "{\"code\":1,\"friends\":[null]}", "{\"code\":1,\"friends\":[\"\"]}", + JsonConvert.SerializeObject(new { code = 1, friends = new[] { Item("102", Profile("bad", low, "bad-time")) } }) }) + { + friendBody = invalid; + Invoke(friends.GetFriendList); + Check(ReferenceEquals(oldList, friends.FriendList) && listEvents == 1, "bad payload retains original list after actual completion"); + } + friendBody = "{\"code\":1,\"friends\":[]}"; + status = System.Net.HttpStatusCode.InternalServerError; + Invoke(friends.GetFriendList); + Check(ReferenceEquals(oldList, friends.FriendList) && listEvents == 1, "real HTTP500 preserves list"); + user.ClearPlayInfos(); + await LevelFails("109"); + Check(user.GetPlayerLv("109") == 1, "real level HTTP500 does not fake default success"); + status = System.Net.HttpStatusCode.OK; + Invoke(friends.GetFriendList); + Check(friends.FriendList.Count == 0 && !ReferenceEquals(oldList, friends.FriendList) && listEvents == 2, "successful empty clears list and publishes unlike leaderboard"); + + profileBody = "{\"code\":1,\"kvProfile\":{\"displayName\":\"late\",\"level\":37}}"; + for (var i = 0; i < 2; i++) + { + var release = new TaskCompletionSource(); + releases.Add(release); + holds.Enqueue(release); + } + PlayInfo delayedProfile = null; + before = profileEvents; + Invoke(() => delayedProfile = user.GetPlayInfo("1099"), false); + Invoke(() => pendingLevel = user.GetPlayLv("1098"), false); + Check(holds.Count == 0 && observed.Active == 1 && !pendingLevel.IsCompleted, "real profile and level operations held on fixed owner"); + status = System.Net.HttpStatusCode.Unauthorized; + await LevelFails("1097"); + foreach (var release in releases) + { + release.SetResult(new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK) { Content = new System.Net.Http.StringContent(profileBody) }); + } + var levelRejected = false; + try + { + await pendingLevel; + } + catch (InvalidOperationException) + { + levelRejected = true; + } + await P6AWait(observed.WaitForIdle()); + Check(levelRejected && delayedProfile.name == "Angler#1099" && profileEvents == before && user.GetPlayerLv("1098") == 1, + "late old-owner responses cannot fill caches or publish"); + Check(auth == 1 && gets == 1 && pfTransport == 0 && observed.Errors.Count == 0, "no relogin/PF transport/unobserved async error"); + } + } + catch (Exception ex) + { + failure = verifyStartup ? ex.GetType().Name : ex.ToString(); + } + finally + { + foreach (var release in releases) + { + release.TrySetResult(ValidationJson(new { })); + } + async Task Cleanup(Func action) + { + try + { + await action(); + } + catch (Exception ex) + { + errors.Add(verifyStartup ? ex.GetType().Name : ex.ToString()); + } + } + if (verifyStartup) + { + await Cleanup(() => + { + startupMail?.Reset(); + return Task.CompletedTask; + }); + await Cleanup(() => + { + startupIAP?.Release(); + return Task.CompletedTask; + }); + await Cleanup(() => startupRT?.ReleaseAsync() ?? Task.CompletedTask); + await Cleanup(() => + { + if (startupLog != null) + { + UnityEngine.Application.logMessageReceived -= startupLog; + } + return Task.CompletedTask; + }); + await Cleanup(() => + { + foreach (var pair in startupPrefs) + { + Check(UnityEngine.PlayerPrefs.HasKey(pair.Key) == pair.Value.Exists && + UnityEngine.PlayerPrefs.GetString(pair.Key) == pair.Value.Value, "original mail Prefs untouched"); + } + return Task.CompletedTask; + }); + } + if (pendingLevel != null) + { + await Cleanup(async () => + { + try + { + await pendingLevel; + } + catch (InvalidOperationException) + { + // Rejection is expected after revocation and asserted by the scenario. + } + }); + } + await Cleanup(() => observed.WaitForIdle()); + await Cleanup(() => + { + listSubscription?.Dispose(); + return Task.CompletedTask; + }); + await Cleanup(() => + { + profileSubscription?.Dispose(); + return Task.CompletedTask; + }); + if (server != null) + { + await Cleanup(() => server.ClearKVForGame()); + } + if (coordinator != null) + { + await Cleanup(() => coordinator.Revoke()); + } + if (user != null) + { + await Cleanup(() => user.CloseKVForValidationAsync()); + } + await Cleanup(() => + { + ValidationContextAccess.Use(originalContainer); + ValidationContextAccess.Events = originalEvents; + System.Threading.SynchronizationContext.SetSynchronizationContext(originalContext); + return Task.CompletedTask; + }); + foreach (var error in observed.Errors) + { + errors.Add(error.ToString()); + } + restored = errors.Count == 0 && observed.Active == 0 && ReferenceEquals(asap.core.GContext.container, originalContainer) && + ReferenceEquals(ValidationContextAccess.Events, originalEvents) && ReferenceEquals(System.Threading.SynchronizationContext.Current, originalContext); + if (!restored) + { + failedFriendCleanup = coordinator ?? (object)observed; + } + running = false; + } + if (verifyStartup) + { + return JsonConvert.SerializeObject(new { success = failure == null && restored, caseId = "P12C-StartupSubscriptions", assertions, + auth, gets, sends, pfTransport, restored, failure, errors, fetchBoundaryCalls = startupHandler?.Fetches ?? 0, orderCallbacks, + formalRequests = 0, actualSubscriptionMethods = true, mailFetchStubbed = true, hubConnected = false, naturalUIVerified = false }); + } + return JsonConvert.SerializeObject(new { success = failure == null && restored, caseId = "P8B-Friends", assertions, + auth, gets, sends, pfTransport, listEvents, profileEvents, restored, failure, errors, + temporaryContainerIsolation = true, publishedGameAuthorization = false, formalRequests = 0, playing = EditorApplication.isPlaying }); + } + + private static async Task RunOrdinarySave(bool failEarly = false, bool verifyCadence = false) + { + const System.Reflection.BindingFlags fields = System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance; + var instanceField = typeof(KVMgr).GetField("instance", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); + if (running || EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || + EditorApplication.isUpdating || asap.core.GContext.Ready || PlayerKVGameplayLoop.Enabled || + instanceField.GetValue(null) != null || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0) + { + throw new InvalidOperationException("Ordinary save validation requires an idle isolated Editor."); + } + running = true; + var bridge = default(PlayerKVGameSessionBridge); + var session = default(game.Account.S101AccountSession); + var shell = default(UnityEngine.GameObject); + var store = default(KVPlayerSaveStore); + var release = new TaskCompletionSource(); + var entered = new TaskCompletionSource(); + var remote = new Dictionary(); + var bodies = new List>(); + var receipts = new List(); + var cadenceGate = new object(); + var requestTimes = new List(); + var cadenceSamples = new List(); + string cadenceFile = null; + int assertions = 0; + string failure = null; + bool restored = false; + double intervalSeconds = 0; + var cleanupErrors = new List(); + var loopContext = new P6BLoopContext(System.Threading.SynchronizationContext.Current); + bool earlyFailureObserved = false; + var timer = System.Diagnostics.Stopwatch.StartNew(); + void Check(bool condition, string detail) + { + assertions++; + if (!condition) + { + throw new InvalidOperationException("Ordinary save: " + detail); + } + } + void Call(KVMgr manager, string name, params object[] args) + { + var previous = System.Threading.SynchronizationContext.Current; + System.Threading.SynchronizationContext.SetSynchronizationContext(loopContext); + try + { + typeof(KVMgr).GetMethod(name, fields).Invoke(manager, args); + } + finally + { + System.Threading.SynchronizationContext.SetSynchronizationContext(previous); + } + } + try + { + // The user can be constructed before the root component or before any store is available. + var early = new KVUserService(); + typeof(KVUserService).GetMethod("OnApplicationQuitting", fields).Invoke(early, null); + Check(early.LoginLifetime.IsCancellationRequested, "early user still logs out without a component/store"); + var api = new Uri("http://synthetic.invalid/"); + session = new game.Account.S101AccountSession(api, jar => new ValidationHttp(_ => + { + jar.Add(api, new System.Net.Cookie("sid", "ordinary")); + return ValidationJson(new { state = 0, internalId = 17, newCreate = false, + createTime = "2026-01-01T00:00:00Z", svrTime = "2026-10-09T00:00:00Z" }); + })); + Check((await session.LoginAsync("101")).Success, "synthetic login"); + bridge = new PlayerKVGameSessionBridge(_ => new ValidationHttp(null, async request => + { + if (request.RequestUri.AbsolutePath.EndsWith("/Get", StringComparison.Ordinal)) + { + return ValidationJson(new { data = remote }); + } + var requestTime = verifyCadence ? System.Diagnostics.Stopwatch.GetTimestamp() : 0; + var body = Newtonsoft.Json.Linq.JObject.Parse(await request.Content.ReadAsStringAsync())["data"].ToObject>(); + if (verifyCadence) + { + lock (cadenceGate) + { + bodies.Add(body); + requestTimes.Add(requestTime); + } + } + else + { + bodies.Add(body); + } + if (!verifyCadence && bodies.Count == 1) + { + entered.TrySetResult(true); + await release.Task; + } + foreach (var pair in body) + { + remote[pair.Key] = pair.Value; + } + return ValidationJson(new { }); + })); + var root = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, + "../../CodexOutput/upserver/B3BatchMigration/M2/P6-2026-10-09/unity-ordinary-cache", Guid.NewGuid().ToString("N"))); + var opened = await bridge.OpenAsync(session, root, "101", api, 1, _ => true, default); + Check(opened.Success, "original handle"); + store = new KVPlayerSaveStore(); + store.Bind(opened.Handle, default); + shell = new UnityEngine.GameObject("P6B ordinary lifecycle fixture"); + shell.SetActive(false); + shell.hideFlags = UnityEngine.HideFlags.HideAndDontSave; + var manager = shell.AddComponent(); + var phaseTimestamp = verifyCadence ? System.Diagnostics.Stopwatch.GetTimestamp() : 0; + Call(manager, "Awake"); // Fixed callback in idle Editor, not a claim of Play Mode frames. + if (failEarly) + { + throw new InvalidOperationException("P6B expected early fixture failure"); + } + var loop = typeof(KVMgr).GetField("tokenSource", fields).GetValue(manager); + Check(bodies.Count == 0, "unbound first tick has no send"); + KVMgr.Bind(store); + Check(ReferenceEquals(loop, typeof(KVMgr).GetField("tokenSource", fields).GetValue(manager)) && bodies.Count == 0, + "bind does not restart phase or send"); + if (verifyCadence) + { + var owner = (PlayerKVSessionOwner)typeof(PlayerKVGameSessionHandle).GetProperty("Owner", fields).GetValue(opened.Handle); + var state = (PlayerKVSyncState)typeof(PlayerKVSessionOwner).GetField("state", fields).GetValue(owner); + var coordinator = typeof(PlayerKVSessionOwner).GetField("coordinator", fields).GetValue(owner); + var ticketGate = typeof(PlayerKVSyncCoordinator).GetField("ticketGate", fields).GetValue(coordinator); + var tickets = (System.Collections.IDictionary)typeof(PlayerKVSyncCoordinator).GetField("tickets", fields).GetValue(coordinator); + var admission = typeof(PlayerKVSessionOwner).GetField("admission", fields).GetValue(owner); + var activeOperations = typeof(PlayerKVSessionOwner).GetField("activeOperations", fields); + int TicketCount() + { + lock (ticketGate) + { + return tickets.Count; + } + } + int LeaseCount() + { + lock (admission) + { + return (int)activeOperations.GetValue(owner); + } + } + int SendCount() + { + lock (cadenceGate) + { + return bodies.Count; + } + } + void RequireIdleEditor() + { + if (EditorApplication.isPlayingOrWillChangePlaymode) + { + throw new InvalidOperationException("Cadence validation interrupted by Play mode."); + } + } + var localWrite = store.Write("ticks", "local", false); + Check(localWrite.Accepted && localWrite.Receipt.Ticket == null && state.Inspect().LocalUpdateTicks.ContainsKey("ticks"), + "cadence local-only timestamp is accepted without a remote ticket"); + var initialTickets = TicketCount(); + var initialStarted = loopContext.Started; + var previousRequest = phaseTimestamp; + cadenceFile = System.IO.Path.Combine(root, "cadence-samples.json"); + for (int cycle = 1; cycle <= 2; cycle++) + { + RequireIdleEditor(); + var sentBefore = SendCount(); + var expected = cycle.ToString(CultureInfo.InvariantCulture); + var written = store.Write("P12A-Cadence", expected); + Check(written.Accepted && written.Receipt.Ticket is PlayerKVSyncTicket, "cadence original remote ticket " + cycle); + Check(SendCount() == sentBefore, "ordinary acceptance never forces a send " + cycle); + var waiting = System.Diagnostics.Stopwatch.StartNew(); + while (SendCount() == sentBefore) + { + RequireIdleEditor(); + if (waiting.Elapsed.TotalSeconds >= 45) + { + throw new TimeoutException("Cadence original timer did not send within 45 seconds."); + } + await Task.Delay(100); + } + var observation = opened.Handle.WaitForTicketAsync((PlayerKVSyncTicket)written.Receipt.Ticket); + await P6AWait(observation); + Check(observation.Result.Status == PlayerKVTicketStatus.Confirmed, "cadence actual ticket confirmed " + cycle); + waiting.Restart(); + while (state.Inspect().ActiveBatch != null || LeaseCount() != 0) + { + RequireIdleEditor(); + if (waiting.Elapsed.TotalSeconds >= 5) + { + throw new TimeoutException("Cadence send did not release its actual operation lease."); + } + await Task.Delay(10); + } + RequireIdleEditor(); + Dictionary sentBody; + long sentAt; + int sends; + lock (cadenceGate) + { + sends = bodies.Count; + sentBody = new Dictionary(bodies[sentBefore]); + sentAt = requestTimes[sentBefore]; + Check(requestTimes.Count == sends, "cadence request/body samples paired"); + } + var seconds = (sentAt - previousRequest) / (double)System.Diagnostics.Stopwatch.Frequency; + previousRequest = sentAt; + Check(seconds >= 39, "cadence real entry interval " + cycle + ": " + seconds); + Check(sends == sentBefore + 1 && sentBody.Count == 1 && sentBody.TryGetValue("P12A-Cadence", out var sentValue) && sentValue == expected, + "cadence exactly one original single-key payload " + cycle); + Check(remote["P12A-Cadence"] == expected && store.Read("P12A-Cadence").ValueOrThrow() == expected && !remote.ContainsKey("ticks"), + "cadence actual remote/local payload and local-only separation " + cycle); + var snapshot = state.Inspect(); + var queued = snapshot.OrdinaryBuffers.Sum(bucket => bucket.Count); + Check(snapshot.OrdinaryBuffers.Count == 5 && queued == 0 && snapshot.PreparedOrdinaryBatches.Count == 0 && + snapshot.OrdinaryUnknownBatches.Count == 0 && snapshot.UnknownBatch == null && snapshot.ActiveBatch == null && + snapshot.LegacyPending.Count == 0 && snapshot.ExplicitDeletes.Count == 0, + "cadence confirmed queues empty " + cycle); + Check(ReferenceEquals(loop, typeof(KVMgr).GetField("tokenSource", fields).GetValue(manager)), "cadence original timer identity retained " + cycle); + Check(loopContext.Started == initialStarted + cycle, "cadence only one ObserveSync started per original tick " + cycle); + var ticketCount = TicketCount(); + var leaseCount = LeaseCount(); + Check(ticketCount == initialTickets + cycle && leaseCount == 0, "cadence tickets retained and leases released " + cycle); + var storageBytes = System.IO.Directory.EnumerateFiles(root, "*.json", System.IO.SearchOption.AllDirectories) + .Where(path => !string.Equals(path, cadenceFile, StringComparison.OrdinalIgnoreCase)) + .Sum(path => new System.IO.FileInfo(path).Length); + cadenceSamples.Add(new + { + cycle, seconds, sends, requestTimestamp = sentAt, ticketCount, leaseCount, queued, + prepared = snapshot.PreparedOrdinaryBatches.Count, unknown = snapshot.OrdinaryUnknownBatches.Count, + revision = snapshot.Revision, startedDelta = loopContext.Started - initialStarted, + managedBytes = GC.GetTotalMemory(false), storageBytes + }); + System.IO.File.WriteAllText(cadenceFile, JsonConvert.SerializeObject(cadenceSamples, Formatting.Indented)); + } + } + else + { + for (int i = 0; i < 21; i++) + { + var write = store.Write("k" + i, "v" + i); + Check(write.Accepted, "local acceptance " + i); + receipts.Add((PlayerKVSyncTicket)write.Receipt.Ticket); + } + Call(manager, "OnApplicationPause", true); + await P6AWait(entered.Task); + Check(bodies.Count == 1 && bodies[0].Count == 10, "pause captures one head without waiting HTTP"); + Call(manager, "OnApplicationPause", false); + var owner = (PlayerKVSessionOwner)typeof(PlayerKVGameSessionHandle).GetProperty("Owner", fields).GetValue(opened.Handle); + var state = (PlayerKVSyncState)typeof(PlayerKVSessionOwner).GetField("state", fields).GetValue(owner); + Check(state.Inspect().PreparedOrdinaryBatches.Count == 1 && bodies.Count == 1, + "resume immediately captures next head while prior HTTP remains pending"); + timer.Restart(); + while (state.Inspect().PreparedOrdinaryBatches.Count < 2 && timer.Elapsed.TotalSeconds < 45) + { + await Task.Delay(100); + } + intervalSeconds = timer.Elapsed.TotalSeconds; + Check(intervalSeconds >= 39 && state.Inspect().PreparedOrdinaryBatches.Count == 2 && bodies.Count == 1, + "real forty-second loop captures third head without awaiting HTTP"); + Call(manager, "OnApplicationPause", true); + var closedLoop = typeof(KVMgr).GetField("tokenSource", fields).GetValue(manager); + Check(closedLoop == null && state.Inspect().PreparedOrdinaryBatches.Count == 2, "pause stops and empty head never rotates"); + release.TrySetResult(true); + foreach (var ticket in receipts) + { + var observation = opened.Handle.WaitForTicketAsync(ticket); + await P6AWait(observation); + Check(observation.Result.Status == PlayerKVTicketStatus.Confirmed, "actual original ticket confirms"); + } + Check(bodies.Select(body => body.Count).SequenceEqual(new[] { 10, 10, 1 }) && remote.Count == 21, + "three captured bodies delivered once in order"); + var localWrite = store.Write("ticks", "local", false); + Check(localWrite.Receipt.Ticket == null && state.Inspect().LocalUpdateTicks.ContainsKey("ticks"), "high-layer real timestamp and local-only receipt"); + } + var before = bodies.Count; + Call(manager, "OnApplicationQuit"); + Check(bodies.Count == before, "component quit only stops; user callback owns final attempt"); + await bridge.CloseAsync(); + Call(manager, "OnDestroy"); + Check(instanceField.GetValue(null) == null && bodies.Count == before, "destroy after revoke cannot send or revive identity"); + } + catch (Exception ex) + { + failure = ex.ToString(); + earlyFailureObserved = failEarly && ex.Message == "P6B expected early fixture failure"; + } + finally + { + // Independent cleanup steps retain the first failure and still execute later releases. + void Cleanup(Action action) + { + try + { + action(); + } + catch (Exception ex) + { + cleanupErrors.Add(ex.ToString()); + } + } + release.TrySetResult(true); + Cleanup(() => + { + if (shell != null) + { + Call(shell.GetComponent(), "OnApplicationQuit"); + } + }); + try + { + if (bridge != null) + { + await bridge.CloseAsync(); + } + } + catch (Exception ex) + { + cleanupErrors.Add(ex.ToString()); + } + Cleanup(() => KVMgr.Unbind(store)); + Cleanup(() => store?.Dispose()); + Cleanup(() => + { + if (shell != null) + { + Call(shell.GetComponent(), "OnDestroy"); + } + }); + Cleanup(() => + { + if (shell != null) + { + UnityEngine.Object.DestroyImmediate(shell); + } + }); + Cleanup(() => session?.Dispose()); + try + { + // Observe the real async-void lifecycle operations, including their uncancellable Delay. + var idle = loopContext.Idle; + if (await Task.WhenAny(idle, Task.Delay(45000)) != idle) + { + throw new TimeoutException("P6B original lifecycle Delay did not retire."); + } + await idle; + } + catch (Exception ex) + { + cleanupErrors.Add(ex.ToString()); + } + finally + { + running = false; + restored = instanceField.GetValue(null) == null && shell == null && loopContext.Active == 0 && cleanupErrors.Count == 0; + } + } + if (verifyCadence) + { + return JsonConvert.SerializeObject(new { success = failure == null && restored, caseId = "P12A-OrdinaryCadence", + assertions, cadenceSamples, cadenceFile, sends = bodies.Count, restored, failure, cleanupErrors, + remainingOperations = loopContext.Active, lifecycleOperations = loopContext.Started, formalRequests = 0, + editorLifecycleDriven = true, runtimeFramesVerified = false, realTimerCycles = cadenceSamples.Count }); + } + return JsonConvert.SerializeObject(new { success = (failure == null || earlyFailureObserved) && restored, + caseId = failEarly ? "P6B-OrdinarySave-Cleanup" : "P6B-OrdinarySave", assertions, intervalSeconds, + sends = bodies.Count, restored, failure, earlyFailureObserved, cleanupErrors, remainingOperations = loopContext.Active, + lifecycleOperations = loopContext.Started, formalRequests = 0, editorLifecycleDriven = true, runtimeFramesVerified = false }); + } + + private sealed class P6BLoopContext : System.Threading.SynchronizationContext + { + private readonly System.Threading.SynchronizationContext original; + private TaskCompletionSource idle = new TaskCompletionSource(); + internal int Active + { + get; + private set; + } + internal int Started + { + get; + private set; + } + internal Task Idle + { + get + { + return Active == 0 ? Task.CompletedTask : idle.Task; + } + } + internal P6BLoopContext(System.Threading.SynchronizationContext original) + { + this.original = original; + } + public override void OperationStarted() + { + if (Active++ == 0) + { + idle = new TaskCompletionSource(); + } + Started++; + original.OperationStarted(); + } + public override void OperationCompleted() + { + original.OperationCompleted(); + if (--Active == 0) + { + idle.TrySetResult(true); + } + } + public override void Post(System.Threading.SendOrPostCallback callback, object state) + { + original.Post(value => + { + var previous = Current; + SetSynchronizationContext(this); + try + { + callback(value); + } + finally + { + SetSynchronizationContext(previous); + } + }, state); + } + } + + private static async Task P6AWait(Task task) + { + if (await Task.WhenAny(task, Task.Delay(5000)) != task) + { + throw new TimeoutException("P6A observation exceeded five seconds."); + } + await task; + } + + private sealed class P6ATicks : TimeManager.ITimeTickService, IDisposable + { + private readonly Subject seconds = new Subject(); + private readonly Subject minutes = new Subject(); + public IObservable SecondTick + { + get + { + return seconds; + } + } + public IObservable MinuteTick + { + get + { + return minutes; + } + } + public void Start() + { + } + public void Stop() + { + } + internal void Minute() + { + minutes.OnNext(1); + } + public void Dispose() + { + seconds.Dispose(); + minutes.Dispose(); + } + } + + private sealed class P6AFaultStore : IPlayerSaveStore + { + private readonly bool synchronous; + internal P6AFaultStore(bool synchronous) + { + this.synchronous = synchronous; + } + public bool IsCurrent + { + get + { + return true; + } + } + public Task SyncDataImmidiate(string key, string value) + { + var error = new InvalidOperationException("P6A synthetic store fault"); + if (synchronous) + { + throw error; + } + return Task.FromException(error); + } + public PlayerSaveReadResult Read(string key) + { + throw new NotSupportedException(); + } + public PlayerSaveWriteResult Write(string key, string value, bool remoteStore = true) + { + throw new NotSupportedException(); + } + } - static bool Same(PlayerKVPlayerState a,PlayerKVPlayerState b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.Core,b.Core) && SameDictionary(a.Modern,b.Modern,(x,y)=>Same(x,y)) && SameDictionary(a.VipScores,b.VipScores,(x,y)=>Same(x,y)) && SameList(a.NewRods,b.NewRods,(x,y)=>Same(x,y)) && Same(a.Season,b.Season) && Same(a.Appraise,b.Appraise) && Same(a.Building,b.Building)); - static bool Same(PlayerKVShopState a,PlayerKVShopState b) => ReferenceEquals(a,b) || (a!=null && b!=null && SameDictionary(a.Daily,b.Daily,(x,y)=>Same(x,y)) && SameDictionary(a.All,b.All,(x,y)=>Same(x,y)) && SameDictionary(a.Gift,b.Gift,(x,y)=>Same(x,y)) && SameDictionary(a.Advert,b.Advert,(x,y)=>Same(x,y)) && SameDictionary(a.Items,b.Items,(x,y)=>Same(x,y)) && SameList(a.Buy,b.Buy,(x,y)=>Same(x,y)) && Same(a.Voucher,b.Voucher) && Same(a.RefreshCount,b.RefreshCount) && Same(a.RefreshTime,b.RefreshTime) && Same(a.Chain,b.Chain) && Same(a.Turntable,b.Turntable) && Same(a.Vip,b.Vip) && Same(a.Coupon,b.Coupon)); - static bool Same(PlayerKVEventBaseState a,PlayerKVEventBaseState b) => ReferenceEquals(a,b) || (a!=null && b!=null && SameDictionary(a.Limited,b.Limited,(x,y)=>Same(x,y)) && SameDictionary(a.Fixed,b.Fixed,(x,y)=>Same(x,y)) && SameDictionary(a.Target,b.Target,(x,y)=>Same(x,y)) && SameDictionary(a.Rank,b.Rank,(x,y)=>Same(x,y)) && SameDictionary(a.Wheel,b.Wheel,(x,y)=>Same(x,y)) && Same(a.Coupon,b.Coupon) && Same(a.Operate,b.Operate) && Same(a.AllOperate,b.AllOperate) && Same(a.Free,b.Free) && Same(a.PvpToken,b.PvpToken)); - static bool Same(PlayerKVCampState a,PlayerKVCampState b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.IsFix,b.IsFix) && Same(a.Skyscraper,b.Skyscraper) && SameDictionary(a.Values,b.Values,(x,y)=>Same(x,y))); - static bool Same(PlayerKVClubState a,PlayerKVClubState b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.SignTime,b.SignTime) && Same(a.DonateTime,b.DonateTime) && Same(a.DonateCount,b.DonateCount) && Same(a.RequestEnd,b.RequestEnd) && Same(a.OpenRed,b.OpenRed)); - static bool Same(PlayerKVEventPackState a,PlayerKVEventPackState b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.EventId,b.EventId) && Same(a.PurchaseCount,b.PurchaseCount) && Same(a.VipLevel,b.VipLevel) && Same(a.RedirectId,b.RedirectId)); - static bool Same(PlayerKVPiggyBankState a,PlayerKVPiggyBankState b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.IsPresent,b.IsPresent) && Same(a.currentEventID,b.currentEventID) && Same(a.purchaseCount,b.purchaseCount) && Same(a.VIPLvlWhenEventActivate,b.VIPLvlWhenEventActivate) && Same(a.savingProgress,b.savingProgress) && Same(a.redirectID,b.redirectID) && Same(a.doNeedTrigger,b.doNeedTrigger) && Same(a.isTriggered,b.isTriggered) && Same(a.inflation,b.inflation)); - static bool Same(PlayerKVBargainState a,PlayerKVBargainState b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.IsPresent,b.IsPresent) && Same(a.currentEventID,b.currentEventID) && Same(a.redirectID,b.redirectID) && Same(a.VIPLvlWhenEventActivate,b.VIPLvlWhenEventActivate) && Same(a.purchaseCount,b.purchaseCount) && Same(a.savingProgress,b.savingProgress) && Same(a.discountLvl,b.discountLvl) && Same(a.visualProgress,b.visualProgress) && Same(a.visualDiscountLvl,b.visualDiscountLvl) && Same(a.rodID,b.rodID) && Same(a.lastPackIDBought,b.lastPackIDBought) && Same(a.packID,b.packID) && Same(a.doNeedTrigger,b.doNeedTrigger) && Same(a.isTriggered,b.isTriggered) && Same(a.inflation,b.inflation) && (a.selections==null ? b.selections==null : b.selections!=null && SameList(a.selections,b.selections,(x,y)=>Same(x,y)))); - static bool Same(PlayerKVShootingRangeState a,PlayerKVShootingRangeState b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.IsPresent,b.IsPresent) && Same(a.EventId,b.EventId) && Same(a.CycleId,b.CycleId) && Same(a.RedirectId,b.RedirectId) && Same(a.AmmoCount,b.AmmoCount) && Same(a.CurrentStageIdx,b.CurrentStageIdx) && Same(a.ChainProgress,b.ChainProgress) && Same(a.RewardFlag,b.RewardFlag) && Same(a.TargetFlag,b.TargetFlag) && Same(a.HasBeenOpened,b.HasBeenOpened) && Same(a.Inflation,b.Inflation)); - static bool Same(PlayerKVProgressPackState a,PlayerKVProgressPackState b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.IsPresent,b.IsPresent) && Same(a.EventId,b.EventId) && Same(a.RedirectId,b.RedirectId) && Same(a.TokenProgress,b.TokenProgress) && Same(a.ChainProgress,b.ChainProgress)); - static bool Same(PlayerKVShopItemValue a,PlayerKVShopItemValue b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.Id,b.Id) && Same(a.Discount,b.Discount) && Same(a.Bought,b.Bought)); - static bool Same(PlayerKVDailyValue a,PlayerKVDailyValue b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.Id,b.Id) && Same(a.Index,b.Index) && Same(a.LastId,b.LastId) && Same(a.Time,b.Time)); - static bool Same(PlayerKVAdvertValue a,PlayerKVAdvertValue b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.Id,b.Id) && Same(a.Index,b.Index) && Same(a.Day,b.Day) && Same(a.Time,b.Time) && Same(a.Open,b.Open)); - static bool Same(PlayerKVCouponState a,PlayerKVCouponState b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.ActivateTime,b.ActivateTime) && Same(a.EventId,b.EventId) && Same(a.RedirectId,b.RedirectId) && Same(a.Bought,b.Bought)); - static bool Same(PlayerKVLimitedValue a,PlayerKVLimitedValue b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.Id,b.Id) && Same(a.Duration,b.Duration) && Same(a.StartTime,b.StartTime)); - static bool Same(PlayerKVFixedTimeValue a,PlayerKVFixedTimeValue b) => ReferenceEquals(a,b) || (a!=null && b!=null && Same(a.id,b.id) && Same(a.endTime,b.endTime)); - static bool Same(T a,T b) => EqualityComparer.Default.Equals(a,b); - static bool SameList(IReadOnlyList a,IReadOnlyList b,Func same) => - a.Count==b.Count && Enumerable.Range(0,a.Count).All(i=>same(a[i],b[i])); - static bool SameDictionary(IReadOnlyDictionary a,IReadOnlyDictionary b,Func same) => - a.Count==b.Count && a.All(p=>b.TryGetValue(p.Key,out var value) && same(p.Value,value)); - static bool Same(PlayerKVCoreState a,PlayerKVCoreState b) => Enumerable.Range(0,16).All(i=> - i==1 || i==10 ? a.Unsigned(i)==b.Unsigned(i) : i==7 ? a.EnergyTime==b.EnergyTime : a.Integer(i)==b.Integer(i)); - static bool ContainsPayload(Newtonsoft.Json.Linq.JToken actual,Newtonsoft.Json.Linq.JToken expected) + private static List P6AInspectStart(Action check) { - if(expected is Newtonsoft.Json.Linq.JObject obj) - return actual is Newtonsoft.Json.Linq.JObject && obj.Properties().All(p=>ContainsPayload(actual[p.Name],p.Value)); - if(expected is Newtonsoft.Json.Linq.JArray arr) - return actual is Newtonsoft.Json.Linq.JArray other && arr.Count==other.Count && Enumerable.Range(0,arr.Count).All(i=>ContainsPayload(other[i],arr[i])); - return Newtonsoft.Json.Linq.JToken.DeepEquals(actual,expected); + var start = typeof(FishingStage).GetMethod("StartAsync", RetryInstance); + var attribute = (System.Runtime.CompilerServices.AsyncStateMachineAttribute)Attribute.GetCustomAttribute(start, typeof(System.Runtime.CompilerServices.AsyncStateMachineAttribute)); + check(attribute != null, "actual StartAsync state machine exists"); + var move = attribute.StateMachineType.GetMethod("MoveNext", RetryInstance); + var bytes = move.GetMethodBody().GetILAsByteArray(); + var codes = typeof(System.Reflection.Emit.OpCodes).GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static) + .Where(field => field.FieldType == typeof(System.Reflection.Emit.OpCode)) + .Select(field => (System.Reflection.Emit.OpCode)field.GetValue(null)).ToDictionary(code => unchecked((ushort)code.Value)); + var calls = new List(); + var evidence = new List(); + bool helperDiscarded = false; + for (int cursor = 0; cursor < bytes.Length;) + { + int offset = cursor; + ushort value = bytes[cursor++]; + if (value == 0xfe) + { + value = (ushort)(0xfe00 | bytes[cursor++]); + } + var code = codes[value]; + int width; + switch (code.OperandType) + { + case System.Reflection.Emit.OperandType.InlineNone: + width = 0; + break; + case System.Reflection.Emit.OperandType.ShortInlineBrTarget: + case System.Reflection.Emit.OperandType.ShortInlineI: + case System.Reflection.Emit.OperandType.ShortInlineVar: + width = 1; + break; + case System.Reflection.Emit.OperandType.InlineVar: + width = 2; + break; + case System.Reflection.Emit.OperandType.InlineI8: + case System.Reflection.Emit.OperandType.InlineR: + width = 8; + break; + case System.Reflection.Emit.OperandType.InlineSwitch: + width = 4 + 4 * BitConverter.ToInt32(bytes, cursor); + break; + default: + width = 4; + break; + } + if (code == System.Reflection.Emit.OpCodes.Call || code == System.Reflection.Emit.OpCodes.Callvirt) + { + var method = move.Module.ResolveMethod(BitConverter.ToInt32(bytes, cursor), attribute.StateMachineType.GetGenericArguments(), Type.EmptyTypes); + calls.Add(method); + evidence.Add(offset.ToString("X4") + " " + method.DeclaringType.FullName + "." + method); + if (method.DeclaringType == typeof(FishingStage) && method.Name == "ObserveLastLoginSaveAsync") + { + var after = cursor + width; + while (after < bytes.Length && bytes[after] == System.Reflection.Emit.OpCodes.Nop.Value) + { + after++; + } + helperDiscarded = after < bytes.Length && bytes[after] == System.Reflection.Emit.OpCodes.Pop.Value; + } + } + cursor += width; + } + int Position(string name) + { + check(calls.Count(method => method.DeclaringType == typeof(FishingStage) && method.Name == name) == 1, "unique actual " + name); + return calls.FindIndex(method => method.DeclaringType == typeof(FishingStage) && method.Name == name); + } + var data = Position("InitData"); + var manager = Position("InitManager"); + var helper = Position("ObserveLastLoginSaveAsync"); + check(data < manager && manager < helper && helperDiscarded, "original initialization order and helper Task pop"); + check(calls.Skip(helper + 1).Any(method => method.Name == "RegisterInstance") && calls.Skip(helper + 1).Any(method => method.Name == "Subscribe") && calls.Skip(helper + 1).Any(method => method.Name == "LoadAtlas"), "original registration subscription and atlas remain after helper"); + check(!calls.Any(method => method.Name == "SavePlayerData" || method.Name == "FlushAsync" || method.Name == "WriteAndConfirmAsync"), "no additional full save or confirmation call in actual MoveNext"); + return evidence; } - sealed class ValidationConfig : asap.core.IConfig + + private static async Task RunInitializationLastLogin() { - readonly Dictionary values=new Dictionary(); - public void Set(string key,object value) => values[key]=value; - public T Get(string key,T fallback) => values.TryGetValue(key,out var value) ? (T)Convert.ChangeType(value,typeof(T),CultureInfo.InvariantCulture) : fallback; - public string this[string key] => Get(key,(string)null); - public float GetFloat(string key,float fallback) => Get(key,fallback); + if (running || EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || EditorApplication.isUpdating || asap.core.GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0 || PlayerKVGameplayLoop.Enabled) + { + throw new InvalidOperationException("P6A requires an idle isolated Editor."); + } + running = true; + var originalContainer = asap.core.GContext.container; + var originalEvents = ValidationContextAccess.Events; + var isolated = new asap.core.Container(); + var resources = new List(); + var tasks = new List(); + var releases = new List>(); + var logs = new List(); + var errors = new List(); + var cases = new List(); + var il = new List(); + KVUserService user = null; + PlayerKVGameSessionBridge bridge = null; + int assertions = 0, sends = 0, expectedErrors = 0; + bool restored = false; + string failure = null; + void Check(bool condition, string message) + { + assertions++; + if (!condition) + { + throw new InvalidOperationException("P6A " + message); + } + } + void Log(string message, string stack, UnityEngine.LogType type) + { + if (type == UnityEngine.LogType.Error || type == UnityEngine.LogType.Exception || type == UnityEngine.LogType.Assert) + { + logs.Add(message); + } + } + UnityEngine.Application.logMessageReceived += Log; + try + { + ValidationContextAccess.Use(isolated); + ValidationContextAccess.Events = new asap.core.EventAggregator(); + var directory = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, "../../cfgData")); + var tables = new cfg.Tables(name => SimpleJSON.JSON.Parse(System.IO.File.ReadAllText(System.IO.Path.Combine(directory, name + ".json")))); + asap.core.ContainerExtensions.RegisterInstance(isolated, tables); + user = new KVUserService(); + var ticks = new P6ATicks(); + resources.Add(ticks); + int daily = 0; + resources.Add(asap.core.GContext.OnEvent().Subscribe(_ => daily++)); + using (var first = new TimeManager.TimeRefreshManager(ticks, user)) + { + Check(first.GetLastLoginTime() == null && daily == 1, "missing old login publishes once"); + } + cases.Add("missing-login"); + var oldProperty = typeof(KVUserService).GetProperty("LastLoginTime"); + var today = ZZTimeHelper.UtcNow().UtcNowOffset(); + oldProperty.SetValue(user, today); + using (var same = new TimeManager.TimeRefreshManager(ticks, user)) + { + Check(daily == 1 && same.GetLastLoginTime() == today, "same day preserves old time without refresh"); + } + oldProperty.SetValue(user, today.AddDays(-1)); + using (var previous = new TimeManager.TimeRefreshManager(ticks, user)) + { + Check(daily == 2 && user.LastLoginTime == today.AddDays(-1), "previous day consumes without replacing old time"); + } + cases.Add("same-and-previous-day"); + var logStart = logs.Count; + using (var bad = asap.core.GContext.OnEvent().Subscribe(_ => throw new InvalidOperationException("P6A daily subscriber fault"))) + using (var manager = new TimeManager.TimeRefreshManager(ticks, user)) + { + Check(logs.Skip(logStart).Count(message => message.StartsWith("[TimeRefreshManager] Error during cross day refresh: P6A daily subscriber fault")) == 1, "daily failure caught and construction continues"); + expectedErrors++; + bad.Dispose(); + var sessionStart = typeof(TimeManager.TimeRefreshManager).GetField("_sessionStartTime", RetryInstance); + sessionStart.SetValue(manager, today.AddDays(-1)); + var before = daily; + ticks.Minute(); + Check(daily == before + 1, "minute subscription established after caught failure"); + manager.Dispose(); + sessionStart.SetValue(manager, today.AddDays(-1)); + ticks.Minute(); + Check(daily == before + 1, "disposed manager no longer consumes ticks"); + } + cases.Add("caught-daily-error-and-dispose"); + var method = typeof(FishingStage).GetMethod("ObserveLastLoginSaveAsync", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic, null, new[] { typeof(IPlayerSaveStore), typeof(string) }, null); + Check(method != null && method.ReturnType == typeof(Task), "actual private helper signature"); + Task Observe(IPlayerSaveStore target, string value) + { + var task = (Task)method.Invoke(null, new object[] { target, value }); + tasks.Add(task); + return task; + } + foreach (var synchronous in new[] { true, false }) + { + logStart = logs.Count; + await P6AWait(Observe(new P6AFaultStore(synchronous), "unused")); + Check(logs.Skip(logStart).Count(message => message.StartsWith("[FishingStage] LastLogin save failed:")) == 1, "one observed helper fault without faulting caller"); + expectedErrors++; + } + cases.Add("synchronous-and-task-faults"); + var api = new Uri("http://synthetic.invalid/"); + var session = new game.Account.S101AccountSession(api, jar => new ValidationHttp(_ => + { + jar.Add(api, new System.Net.Cookie("sid", "p6a")); + return ValidationJson(new { state = 0, internalId = 17, newCreate = false, createTime = "2026-01-01T00:00:00Z", svrTime = "2026-10-09T00:00:00Z" }); + })); + resources.Add(session); + var login = session.LoginAsync("101"); + tasks.Add(login); + await P6AWait(login); + Check(login.Result.Success, "synthetic session authenticated"); + var oldValue = "2026-10-08T00:00:00.0000000Z"; + typeof(KVUserService).GetProperty("LoginTime").SetValue(user, session.ServerTimeUtc); + var captured = user.LoginTime.ToUniversalTime().ToString("O", CultureInfo.InvariantCulture); + var remote = new Dictionary { ["LastLoginTimeUtc"] = oldValue }; + Dictionary sent = null; + TaskCompletionSource entered = null, release = null; + bool fail = false; + bridge = new PlayerKVGameSessionBridge(_ => + { + var ownerRemote = remote; + return new ValidationHttp(null, async request => + { + if (request.RequestUri.AbsolutePath.EndsWith("/Get", StringComparison.Ordinal)) + { + return ValidationJson(new { data = ownerRemote }); + } + sends++; + Dictionary body; + using (var reader = new Newtonsoft.Json.JsonTextReader(new System.IO.StringReader(await request.Content.ReadAsStringAsync()))) + { + reader.DateParseHandling = DateParseHandling.None; + body = Newtonsoft.Json.Linq.JObject.Load(reader)["data"].ToObject>(); + } + sent = body; + var requestRelease = release; + var requestFail = fail; + entered.TrySetResult(true); + await requestRelease.Task; + if (!requestFail) + { + foreach (var pair in body) + { + ownerRemote[pair.Key] = pair.Value; + } + } + var response = ValidationJson(new { }); + response.StatusCode = requestFail ? System.Net.HttpStatusCode.InternalServerError : System.Net.HttpStatusCode.OK; + return response; + }); + }); + var root = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, "../../CodexOutput/upserver/B3BatchMigration/M2/P6-2026-10-09/unity-cache", Guid.NewGuid().ToString("N"))); + async Task Open(string identity, long epoch) + { + var opening = bridge.OpenAsync(session, root, identity, api, epoch, _ => true, default); + tasks.Add(opening); + await P6AWait(opening); + Check(opening.Result.Success, "real owner opened " + identity); + var result = new KVPlayerSaveStore(); + result.Bind(opening.Result.Handle, default); + resources.Add(result); + return result; + } + void Gate() + { + entered = new TaskCompletionSource(); + release = new TaskCompletionSource(); + releases.Add(release); + } + var store = await Open("101", 1); + Check(store.Write("P6A-Unrelated", "pending").Accepted, "unrelated ordinary write accepted"); + Gate(); + var save = Observe(store, captured); + await P6AWait(entered.Task); + bool callerContinued = true; + Check(callerContinued && !save.IsCompleted && sends == 1, "delayed real helper returns pending Task to caller"); + Check(sent.Count == 1 && sent["LastLoginTimeUtc"] == captured && !remote.ContainsKey("P6A-Unrelated"), "one captured key excludes unrelated pending"); + Check(store.Read("LastLoginTimeUtc").Value == oldValue && user.LastLoginTime == today.AddDays(-1), "old visible times retained before response"); + release.TrySetResult(true); + await P6AWait(save); + Check(remote["LastLoginTimeUtc"] == captured && store.Read("LastLoginTimeUtc").Value == oldValue && !remote.ContainsKey("P6A-Unrelated"), "confirmed single write preserves local old value and unrelated pending"); + var firstClose = bridge.CloseAsync(); + tasks.Add(firstClose); + await P6AWait(firstClose); + store = await Open("101", 2); + Check(store.Read("LastLoginTimeUtc").Value == captured, "new owner Get sees saved timestamp"); + cases.Add("single-key-delayed-success-and-reopen"); + fail = true; + Gate(); + logStart = logs.Count; + save = Observe(store, "2026-10-10T00:00:00.0000000Z"); + await P6AWait(entered.Task); + release.TrySetResult(true); + await P6AWait(save); + Check(logs.Skip(logStart).Count(message => message == "[KVMgr::SyncDataImmidiate] Save failed.") == 1 && sends == 2 && remote["LastLoginTimeUtc"] == captured, "500 logged once without retry or false success"); + expectedErrors++; + cases.Add("http-500"); + fail = false; + Gate(); + save = Observe(store, captured); + await P6AWait(entered.Task); + var oldStore = store; + logStart = logs.Count; + var close = bridge.CloseAsync(); + tasks.Add(close); + var replacementContainer = new asap.core.Container(); + ValidationContextAccess.Use(replacementContainer); + release.TrySetResult(true); + await P6AWait(save); + await P6AWait(close); + var closeErrors = logs.Skip(logStart).ToArray(); + Check(closeErrors.All(message => message == "[KVMgr::SyncDataImmidiate] Save failed.") && closeErrors.Length <= 1, "revoked in-flight helper uses existing failure semantics"); + expectedErrors += closeErrors.Length; + remote = new Dictionary { ["LastLoginTimeUtc"] = "other-owner" }; + var otherLogin = session.LoginAsync("102"); + tasks.Add(otherLogin); + await P6AWait(otherLogin); + Check(otherLogin.Result.Success && session.PlayerId == "102", "replacement account authenticated with separate cookie jar"); + store = await Open("102", 3); + asap.core.ContainerExtensions.RegisterInstance(replacementContainer, store); + var sendBefore = sends; + await P6AWait(Observe(oldStore, "must-not-reach-new-owner")); + Check(sends == sendBefore && remote["LastLoginTimeUtc"] == "other-owner" && store.Read("LastLoginTimeUtc").Value == "other-owner", "stale captured store never resolves replacement account"); + cases.Add("revoked-owner-isolation"); + il = P6AInspectStart(Check); + cases.Add("actual-start-movenext-il"); + Check(logs.Count == expectedErrors, "all error logs accounted for per case"); + } + catch (Exception exception) + { + failure = exception.ToString(); + } + finally + { + foreach (var release in releases) + { + release.TrySetResult(true); + } + foreach (var task in tasks) + { + try + { + await P6AWait(task); + } + catch (Exception exception) + { + errors.Add("task cleanup: " + exception); + } + } + try + { + if (bridge != null) + { + var finalClose = bridge.CloseAsync(); + tasks.Add(finalClose); + await P6AWait(finalClose); + } + } + catch (Exception exception) + { + errors.Add("owner cleanup: " + exception); + } + foreach (var resource in resources.AsEnumerable().Reverse()) + { + try + { + resource.Dispose(); + } + catch (Exception exception) + { + errors.Add("resource cleanup: " + exception); + } + } + try + { + user?.Logout(); + } + catch (Exception exception) + { + errors.Add("user cleanup: " + exception); + } + finally + { + ValidationContextAccess.Use(originalContainer); + ValidationContextAccess.Events = originalEvents; + restored = ReferenceEquals(asap.core.GContext.container, originalContainer) && ReferenceEquals(ValidationContextAccess.Events, originalEvents); + UnityEngine.Application.logMessageReceived -= Log; + running = false; + } + } + return JsonConvert.SerializeObject(new { success = failure == null && errors.Count == 0 && restored && logs.Count == expectedErrors, caseId = "P6A-InitializationLastLogin", assertions, cases, sends, expectedErrors, logs, il, restored, failure, errors, cleanupPending = tasks.Any(task => !task.IsCompleted), fullFishingStageExecuted = false, runtimeFramesVerified = false, formalRequests = 0 }); } - sealed class ValidationEvents : asap.core.IEventAggregator + + private const System.Reflection.BindingFlags RetryInstance = System.Reflection.BindingFlags.Instance | + System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public; + private const System.Reflection.BindingFlags RetryStatic = System.Reflection.BindingFlags.Static | + System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public; + private static RetryRun failedRetryCleanup; + + private static async Task RetryWait(Func ready) { - readonly asap.core.EventAggregator inner=new asap.core.EventAggregator(); - internal int Published,Subscriptions; - public IObservable GetEvent(string key) { Subscriptions++; return inner.GetEvent(key); } - public void Publish(T value,string key) { Published++; throw new InvalidOperationException("Gameplay event during controlled load."); } + var deadline = DateTime.UtcNow.AddSeconds(8); + while (!ready()) + { + if (DateTime.UtcNow >= deadline) + { + throw new TimeoutException("Login UI observation timed out."); + } + await Task.Delay(10); + } } + + private static async Task RetryComplete(Task work) + { + if (await Task.WhenAny(work, Task.Delay(8000)) != work) + { + throw new TimeoutException("Login UI task did not close."); + } + await work; + } + + // Retains the original snapshots if a UI task cannot be closed; Editor validation only. + private sealed class RetryRun + { + private readonly System.Reflection.PropertyInfo selectionProperty = typeof(SubBoostrap).GetProperty("RuntimeSelection", RetryStatic); + private readonly System.Reflection.FieldInfo tableField = typeof(GameCore.LocalizationMgr).GetField("table", RetryStatic); + private readonly System.Reflection.FieldInfo syncField = typeof(UnityAsyncAwaitUtil.SyncContextUtil).GetField("k__BackingField", RetryStatic); + private readonly System.Reflection.FieldInfo threadField = typeof(UnityAsyncAwaitUtil.SyncContextUtil).GetField("k__BackingField", RetryStatic); + private readonly System.Reflection.FieldInfo runnerField = typeof(UnityAsyncAwaitUtil.AsyncCoroutineRunner).GetField("_instance", RetryStatic); + private readonly object previousSelection; + private readonly object previousTable; + private readonly List previousLanguages; + private readonly bool hadId; + private readonly string previousId; + private readonly object previousSync; + private readonly object previousThread; + private readonly object previousRunner; + private readonly System.Threading.SynchronizationContext context; + private readonly int thread; + private UnityAsyncAwaitUtil.AsyncCoroutineRunner ownedRunner; + private bool subscribed; + internal RetryCase Pending { get; set; } + internal List Errors { get; } = new List(); + internal int StoppedRunners { get; private set; } + internal bool Restored { get; private set; } + + internal RetryRun() + { + context = System.Threading.SynchronizationContext.Current; + thread = System.Threading.Thread.CurrentThread.ManagedThreadId; + previousRunner = runnerField.GetValue(null); + if (context == null || context.GetType().FullName != "UnityEngine.UnitySynchronizationContext" || + previousRunner != null || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0) + { + throw new InvalidOperationException("Login UI validation requires the Unity context and no existing coroutine runner."); + } + previousSelection = SubBoostrap.RuntimeSelection; + previousTable = tableField.GetValue(null); + previousLanguages = GameCore.LocalizationMgr.enumLanguage; + hadId = UnityEngine.PlayerPrefs.HasKey("CustomID"); + previousId = UnityEngine.PlayerPrefs.GetString("CustomID", string.Empty); + previousSync = syncField.GetValue(null); + previousThread = threadField.GetValue(null); + } + + internal void Install() + { + UnityEngine.Application.logMessageReceived += Log; + subscribed = true; + syncField.SetValue(null, context); + threadField.SetValue(null, thread); + selectionProperty.SetValue(null, PlayerKVRuntimeSelection.Capture("kv", PlayerKVRuntimeSelection.FormalApiUrl, false)); + var path = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, "../../cfgData/tbtext.json")); + tableField.SetValue(null, new cfg.TbText(SimpleJSON.JSON.Parse(System.IO.File.ReadAllText(path)))); + GameCore.LocalizationMgr.enumLanguage = Enumerable.Repeat("en", Math.Max(1, GameCore.LocalizationMgr.LanguageIndex + 1)).ToList(); + } + + private void Log(string message, string stack, UnityEngine.LogType type) + { + if (type == UnityEngine.LogType.Error || type == UnityEngine.LogType.Exception) + { + Errors.Add(message + stack); + } + } + + private void CheckContext() + { + if (!ReferenceEquals(System.Threading.SynchronizationContext.Current, context) || + System.Threading.Thread.CurrentThread.ManagedThreadId != thread) + { + throw new InvalidOperationException("Login UI validation left its original Unity context."); + } + } + + internal void SetBackend(bool kv) + { + CheckContext(); + selectionProperty.SetValue(null, PlayerKVRuntimeSelection.Capture(kv ? "kv" : "playfab", PlayerKVRuntimeSelection.FormalApiUrl, false)); + } + + internal void OpenRunner() + { + CheckContext(); + if (runnerField.GetValue(null) != null || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0) + { + throw new InvalidOperationException("An existing coroutine runner is protected."); + } + ownedRunner = UnityAsyncAwaitUtil.AsyncCoroutineRunner.Instance; + ownedRunner.gameObject.hideFlags = UnityEngine.HideFlags.HideAndDontSave; + } + + internal void StopRunner() + { + CheckContext(); + if (!ReferenceEquals(runnerField.GetValue(null), ownedRunner)) + { + throw new InvalidOperationException("Login UI coroutine runner ownership changed."); + } + if (ownedRunner != null) + { + ownedRunner.StopAllCoroutines(); + UnityEngine.Object.DestroyImmediate(ownedRunner.gameObject); + runnerField.SetValue(null, previousRunner); + ownedRunner = null; + StoppedRunners++; + } + if (UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0) + { + throw new InvalidOperationException("Login UI coroutine runner was not removed."); + } + } + + internal bool Restore() + { + StopRunner(); + selectionProperty.SetValue(null, previousSelection); + tableField.SetValue(null, previousTable); + GameCore.LocalizationMgr.enumLanguage = previousLanguages; + if (hadId) + { + UnityEngine.PlayerPrefs.SetString("CustomID", previousId); + } + else + { + UnityEngine.PlayerPrefs.DeleteKey("CustomID"); + } + syncField.SetValue(null, previousSync); + threadField.SetValue(null, previousThread); + Restored = ReferenceEquals(SubBoostrap.RuntimeSelection, previousSelection) && ReferenceEquals(tableField.GetValue(null), previousTable) && + ReferenceEquals(GameCore.LocalizationMgr.enumLanguage, previousLanguages) && UnityEngine.PlayerPrefs.HasKey("CustomID") == hadId && + UnityEngine.PlayerPrefs.GetString("CustomID", string.Empty) == previousId && ReferenceEquals(syncField.GetValue(null), previousSync) && + Equals(threadField.GetValue(null), previousThread) && ReferenceEquals(runnerField.GetValue(null), previousRunner) && Pending == null; + if (Restored && subscribed) + { + UnityEngine.Application.logMessageReceived -= Log; + subscribed = false; + } + return Restored; + } + } + + private sealed class RetryConfig : asap.core.IConfig + { + private readonly Dictionary values = new Dictionary(); + internal RetryConfig(string id) + { + Set("CustomID", id); + } + public void Set(string key, object value) + { + values[key] = value; + } + public T Get(string key, T fallback) + { + return values.TryGetValue(key, out var value) ? (T)value : fallback; + } + public string this[string key] + { + get + { + return Get(key, string.Empty); + } + } + public float GetFloat(string key, float fallback) + { + return Get(key, fallback); + } + } + + // UI responses only; the overridden Login never creates an HTTP handler or calls base.Login. + private sealed class RetryUser : KVUserService, IKVUserLifecycle + { + private readonly Queue steps; + private bool ready; + internal List TokenCalls { get; } = new List(); + internal List Ids { get; } = new List(); + internal int Logouts { get; private set; } + internal bool HoldLogin + { + get; + set; + } + internal RetryUser(ELoginStep[] steps) + { + this.steps = new Queue(steps); + } + public override Task Login(Action progress, bool tyrLoginByToken = true) + { + LoginLifetime.ThrowIfCancellationRequested(); + TokenCalls.Add(tyrLoginByToken); + Ids.Add(CustomId); + var step = steps.Dequeue(); + ready = step == ELoginStep.Done; + progress?.Invoke(2); + if (HoldLogin) + { + return HoldLoginAsync(step); + } + return Task.FromResult(step); + } + private async Task HoldLoginAsync(ELoginStep step) + { + await Task.Delay(System.Threading.Timeout.Infinite, LoginLifetime); + return step; + } + public override void Logout() + { + Logouts++; + base.Logout(); + } + bool IKVUserLifecycle.KVHandoffReady => ready && !LoginLifetime.IsCancellationRequested; + PlayerKVGameLoadError IKVUserLifecycle.KVLastError => PlayerKVGameLoadError.Prepare; + Task IKVUserLifecycle.CloseKVForValidationAsync() + { + return CloseKVForValidationAsync(); + } + Task IKVUserLifecycle.ObserveKVQuitAsync() + { + return ObserveKVQuitAsync(); + } + } + + private sealed class RetryRT : IRTService + { + internal int Waits { get; private set; } + public bool IsConnected => false; + public void WaitForAPISvrLogin() + { + Waits++; + } + public Task Connect() + { + throw new InvalidOperationException("UI probe cannot connect."); + } + public Task Disconnect() + { + throw new InvalidOperationException("UI probe cannot disconnect."); + } + public IDisposable OnEvent(Action handler) + { + throw new InvalidOperationException("UI probe cannot subscribe to RT."); + } + public Task Publish(string method, string value) + { + throw new InvalidOperationException("UI probe cannot publish."); + } + public Task Publish(string method, string value, string other) + { + throw new InvalidOperationException("UI probe cannot publish."); + } + public void Release() + { + } + public Task ReleaseAsync() + { + return Task.CompletedTask; + } + } + + private sealed class RetrySuccessServices : IInGameMailService, IIAPService + { + internal readonly List Calls = new List(); + + void IInGameMailService.Init() + { + Calls.Add("mail"); + } + + void IIAPService.Init() + { + Calls.Add("iap"); + } + + public bool IsUnlock + { + get + { + throw new InvalidOperationException("Unexpected mail access in login UI validation."); + } + set + { + throw new InvalidOperationException("Unexpected mail access in login UI validation."); + } + } + + public void Reset() + { + throw new InvalidOperationException("Unexpected mail reset in login UI validation."); + } + + public Task FetchMail() + { + throw new InvalidOperationException("Unexpected mail fetch in login UI validation."); + } + + public IList GetAllMail() + { + throw new InvalidOperationException("Unexpected mail read in login UI validation."); + } + + public Task MarkRead(GameMail mail) + { + throw new InvalidOperationException("Unexpected mail write in login UI validation."); + } + + public Task MarkRead(GameMail[] mails = null) + { + throw new InvalidOperationException("Unexpected mail write in login UI validation."); + } + + public Task DelMail(GameMail mail) + { + throw new InvalidOperationException("Unexpected mail deletion in login UI validation."); + } + + public Task DelMail(GameMail[] mails = null) + { + throw new InvalidOperationException("Unexpected mail deletion in login UI validation."); + } + + public Task TakeReward(GameMail mail) + { + throw new InvalidOperationException("Unexpected reward in login UI validation."); + } + + public Task TakeReward(GameMail[] mails = null) + { + throw new InvalidOperationException("Unexpected reward in login UI validation."); + } + + public Task> GetSKUs() + { + throw new InvalidOperationException("Unexpected SKU request in login UI validation."); + } + + public Task Pay(Action callback, string data, tysdk.SKUDetail sku, + int count, float usdPrice, Newtonsoft.Json.Linq.JObject extra) + { + throw new InvalidOperationException("Unexpected payment in login UI validation."); + } + + public Task> GetOrderUnreceived() + { + throw new InvalidOperationException("Unexpected order request in login UI validation."); + } + + public Task ConfirmOrders(List ids) + { + throw new InvalidOperationException("Unexpected order confirmation in login UI validation."); + } + + public void Release() + { + throw new InvalidOperationException("Unexpected IAP release in login UI validation."); + } + } + + private sealed class RetryCase + { + private readonly List objects = new List(); + private SimpleDialog dialog; + private UnityEngine.GameObject input; + private UnityEngine.UI.InputField inputField; + private UnityEngine.UI.Button inputOk; + private System.Threading.CancellationTokenSource lifetime; + internal PFLoginAct Act { get; private set; } + internal RetryUser User { get; private set; } + internal RetryRT RT { get; private set; } + internal Task Work { get; private set; } + internal RetrySuccessServices SuccessServices { get; private set; } + internal int RemainingObjects => objects.Count(value => value != null); + internal bool InputOpen => input.activeSelf; + private UnityEngine.GameObject Object(string name) + { + var value = new UnityEngine.GameObject("M03B-" + name, typeof(UnityEngine.RectTransform)); + value.hideFlags = UnityEngine.HideFlags.HideAndDontSave; + value.SetActive(false); + objects.Add(value); + return value; + } + private static void Field(object target, string name, object value) + { + target.GetType().GetField(name, RetryInstance).SetValue(target, value); + } + internal void Setup(string id, ELoginStep[] steps) + { + User = new RetryUser(steps); + RT = new RetryRT(); + Act = Object("act").AddComponent(); + Act.userService = User; + Act.config = new RetryConfig(id); + Act.rtService = RT; + SuccessServices = new RetrySuccessServices(); + Act.MailService = SuccessServices; + Act.iapService = SuccessServices; + // Stage remains null: the real Unload returns without changing an Editor scene. + dialog = Object("dialog").AddComponent(); + var ok = Object("ok").AddComponent(); + var close = Object("close").AddComponent(); + Field(dialog, "btn_ok", ok); + Field(dialog, "btn_close", close); + input = Object("input"); + inputField = input.AddComponent(); + inputOk = Object("input-ok").AddComponent(); + Field(Act, "dialog", dialog); + Field(Act, "customInput", input); + Field(Act, "customIdInput", inputField); + Field(Act, "inputOkBtn", inputOk); + Field(Act, "loadingInfos", new[] { "synthetic loading" }); + lifetime = System.Threading.CancellationTokenSource.CreateLinkedTokenSource(User.LoginLifetime); + Field(Act, "loginLifetime", lifetime); + Field(Act, "loginToken", lifetime.Token); + } + internal void Start() + { + Work = (Task)typeof(PFLoginAct).GetMethod("LoginAsync", RetryInstance).Invoke(Act, null); + } + internal void StartThroughDoLogin() + { + typeof(PFLoginAct).GetMethod("DoLogin", RetryInstance).Invoke(Act, null); + Work = (Task)typeof(PFLoginAct).GetField("loginWork", RetryInstance).GetValue(Act); + if (Work == null) + { + throw new InvalidOperationException("Actual DoLogin did not retain its LoginAsync task."); + } + } + internal void DestroyLoginAct() + { + typeof(PFLoginAct).GetMethod("OnDestroy", RetryInstance).Invoke(Act, null); + lifetime = null; + } + internal Action Callback(bool close) + { + return dialog.gameObject.activeSelf ? + (Action)typeof(SimpleDialog).GetField(close ? "onClose" : "onOk", RetryInstance).GetValue(dialog) : null; + } + internal void Click(bool close) + { + // Idle Editor lifecycle is fixture-driven; invoke the actual component methods. + typeof(SimpleDialog).GetMethod("OnDisable", RetryInstance).Invoke(dialog, null); + typeof(SimpleDialog).GetMethod("OnEnable", RetryInstance).Invoke(dialog, null); + var button = (UnityEngine.UI.Button)typeof(SimpleDialog).GetField(close ? "btn_close" : "btn_ok", RetryInstance).GetValue(dialog); + button.onClick.Invoke(); + } + internal void Input(string id) + { + inputField.text = id; + inputOk.onClick.Invoke(); + } + internal async Task Close(RetryRun run) + { + User?.Logout(); + lifetime?.Cancel(); + if (Act != null) + { + typeof(PFLoginAct).GetMethod("StopLoadingInfo", RetryInstance).Invoke(Act, null); + } + if (Work != null) + { + try + { + await RetryComplete(Work); + } + catch (Exception) when (Work.IsCompleted) + { + // The case evaluates its task; cleanup only observes a closed failure/cancellation. + } + } + // The original runtime frame does not advance in this idle Editor. + // Stop only this fixture's coroutine source, never complete the awaiter by hand. + run.StopRunner(); + foreach (var value in objects) + { + UnityEngine.Object.DestroyImmediate(value); + } + lifetime?.Dispose(); + if (RemainingObjects != 0) + { + throw new InvalidOperationException("Login UI objects were not removed."); + } + } + } + + private static async Task RunLoginRetry() + { + if (running || failedRetryCleanup != null || EditorApplication.isPlayingOrWillChangePlaymode || + EditorApplication.isCompiling || EditorApplication.isUpdating || PlayerKVGameplayLoop.Enabled || + asap.core.GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0 || + PlayFabMgr.HasLiveInstanceForKVLoad || typeof(LoadingScreen).GetField("_instance", RetryStatic).GetValue(null) != null) + { + throw new InvalidOperationException("Login UI validation requires an idle Editor with no live loading screen."); + } + var run = new RetryRun(); + failedRetryCleanup = run; + running = true; + var cases = new List(); + string failure = null; + var assertions = 0; + var restored = false; + void Check(bool value, string label) + { + assertions++; + if (!value) + { + throw new InvalidOperationException("Login UI: " + label); + } + } + async Task Case(string name, string id, ELoginStep[] steps, Func body) + { + var probe = new RetryCase(); + run.Pending = probe; + try + { + run.OpenRunner(); + probe.Setup(id, steps); + probe.Start(); + await body(probe); + Check(probe.Work.Status == TaskStatus.RanToCompletion + ? probe.SuccessServices.Calls.SequenceEqual(new[] { "mail", "iap" }) + : probe.SuccessServices.Calls.Count == 0, + "only successful login initializes mail then IAP exactly once"); + cases.Add(new { name, calls = probe.User.TokenCalls.ToArray(), ids = probe.User.Ids.ToArray(), logoutsBeforeDestroy = probe.User.Logouts }); + } + finally + { + await probe.Close(run); + run.Pending = null; + } + } + try + { + run.Install(); + await Case("first-done", "101", new[] { ELoginStep.Done }, async probe => + { + await RetryComplete(probe.Work); + Check(probe.User.TokenCalls.Count == 1 && probe.User.Logouts == 0 && probe.Callback(false) == null, + "first success completes without failure UI or logout"); + }); + foreach (var close in new[] { false, true }) + { + await Case(close ? "retry-close" : "retry-ok", "101", new[] { ELoginStep.Api, ELoginStep.Done }, async probe => + { + await RetryWait(() => probe.Callback(close) != null); + Check(probe.User.TokenCalls.Count == 1 && probe.User.Logouts == 0 && !probe.Work.IsCompleted, + "failure reaches the original dialog without ending the service"); + var old = probe.Callback(close); + probe.Click(close); + old(); + await RetryComplete(probe.Work); + Check(probe.User.TokenCalls.Count == 2 && probe.User.TokenCalls.All(value => value) && probe.User.Logouts == 0, + "both original buttons retry with true once and complete login"); + }); + } + await Case("retry-repeated", "101", new[] { ELoginStep.Api, ELoginStep.Api, ELoginStep.Done }, async probe => + { + await RetryWait(() => probe.Callback(false) != null); + var old = probe.Callback(false); + probe.Click(false); + await RetryWait(() => probe.Callback(true) != null && !ReferenceEquals(probe.Callback(true), old)); + Check(probe.User.TokenCalls.Count == 2 && probe.User.Logouts == 0, "another failure reopens the same original retry loop"); + probe.Click(true); + await RetryComplete(probe.Work); + Check(probe.User.TokenCalls.Count == 3 && probe.User.TokenCalls.All(value => value) && probe.RT.Waits == 1, + "repeated failures retain the original option and single RT preparation"); + }); + await Case("cancel-dialog-old-click", "101", new[] { ELoginStep.Api }, async probe => + { + await RetryWait(() => probe.Callback(false) != null); + var old = probe.Callback(false); + probe.User.Logout(); + try + { + await RetryComplete(probe.Work); + throw new InvalidOperationException("Cancelled retry completed successfully."); + } + catch (OperationCanceledException) + { + Check(probe.Work.IsCanceled, "actual retry task is cancelled"); + } + old(); + Check(probe.User.TokenCalls.Count == 1 && probe.User.Logouts == 1, "old dialog callback cannot re-enter login after logout"); + }); + await Case("input-and-retry-input", "{{input}}", new[] { ELoginStep.Api, ELoginStep.Done }, async probe => + { + await RetryWait(() => probe.InputOpen); + probe.Input("101"); + await RetryWait(() => probe.Callback(false) != null); + Check(probe.User.CustomId == "101" && UnityEngine.PlayerPrefs.GetString("CustomID") == "101", "original input stores first identity"); + probe.Click(false); + await RetryWait(() => probe.InputOpen); + probe.Input("102"); + await RetryComplete(probe.Work); + Check(probe.User.Ids.SequenceEqual(new[] { "101", "102" }) && probe.User.TokenCalls.All(value => value) && probe.User.Logouts == 0 && + UnityEngine.PlayerPrefs.GetString("CustomID") == "102", "original retry input uses the new ID without restarting"); + }); + await Case("cancel-input-old-click", "{{input}}", new[] { ELoginStep.Done }, async probe => + { + await RetryWait(() => probe.InputOpen); + var unchangedId = probe.User.CustomId; + var unchangedPref = UnityEngine.PlayerPrefs.GetString("CustomID", string.Empty); + probe.User.Logout(); + try + { + await RetryComplete(probe.Work); + throw new InvalidOperationException("Cancelled input completed successfully."); + } + catch (OperationCanceledException) + { + Check(probe.Work.IsCanceled, "actual input task is cancelled"); + } + probe.Input("101"); + Check(probe.User.TokenCalls.Count == 0 && probe.User.CustomId == unchangedId && + UnityEngine.PlayerPrefs.GetString("CustomID", string.Empty) == unchangedPref, "old input click cannot alter identity or enter login"); + }); + } + catch (Exception ex) + { + failure = ex.ToString(); + } + finally + { + if (run.Pending == null) + { + try + { + restored = run.Restore(); + if (restored) + { + failedRetryCleanup = null; + running = false; + } + } + catch (Exception ex) + { + failure = failure ?? ex.ToString(); + } + } + } + return JsonConvert.SerializeObject(new { success = failure == null && run.Errors.Count == 0 && restored && cases.Count == 7, + caseId = "M03B-LoginRetry", assertions, cases, stoppedOwnedRunners = run.StoppedRunners, + remainingOwnedObjects = run.Pending?.RemainingObjects ?? 0, restored, failure, errors = run.Errors, + runtimeFramesVerified = false, cleanupMode = "owned-runner-stopped", editorLifecycleDriven = true, + formalRequests = 0, realKVLoginExecuted = false, cleanupPending = failedRetryCleanup != null }); + } + + private static async Task CleanupLoginRetry() + { + var run = failedRetryCleanup; + if (run == null || EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || EditorApplication.isUpdating) + { + throw new InvalidOperationException("No pending login UI owner can be cleaned in this Editor state."); + } + string failure = null; + try + { + if (run.Pending != null) + { + await run.Pending.Close(run); + run.Pending = null; + } + if (run.Restore()) + { + failedRetryCleanup = null; + running = false; + } + } + catch (Exception ex) + { + failure = ex.ToString(); + } + return JsonConvert.SerializeObject(new { success = run.Restored, caseId = "M03B-LoginRetry-Cleanup", cleanupOnly = true, + restored = run.Restored, failure, errors = run.Errors, cleanupPending = failedRetryCleanup != null, + remainingOwnedObjects = run.Pending?.RemainingObjects ?? 0, runtimeFramesVerified = false, formalRequests = 0 }); + } + private static async Task RunCustomId() + { + if (running || failedRetryCleanup != null || EditorApplication.isPlayingOrWillChangePlaymode || + EditorApplication.isCompiling || EditorApplication.isUpdating || PlayerKVGameplayLoop.Enabled || + asap.core.GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0 || + PlayFabMgr.HasLiveInstanceForKVLoad || typeof(LoadingScreen).GetField("_instance", RetryStatic).GetValue(null) != null) + { + throw new InvalidOperationException("Custom ID validation requires an idle Editor."); + } + var run = new RetryRun(); + failedRetryCleanup = run; + running = true; + var cases = new List(); + var assertions = 0; + string failure = null; + var restored = false; + void Check(bool value, string label) + { + assertions++; + if (!value) + { + throw new InvalidOperationException("Custom ID: " + label); + } + } + try + { + run.Install(); + foreach (var input in new[] + { + new { kv = true, config = "101", expected = "101" }, + new { kv = false, config = "101", expected = "102" }, + new { kv = false, config = string.Empty, expected = string.Empty } + }) + { + var probe = new RetryCase(); + run.Pending = probe; + try + { + run.SetBackend(input.kv); + run.OpenRunner(); + probe.Setup(input.config, new[] { ELoginStep.Api }); + probe.User.CustomId = "102"; + probe.Start(); + await RetryWait(() => probe.Callback(false) != null); + Check(probe.User.Ids.SequenceEqual(new[] { input.expected }) && probe.User.CustomId == input.expected, + "actual Login receives the original backend-specific identity"); + Check(probe.User.TokenCalls.SequenceEqual(new[] { true }) && probe.User.Logouts == 0 && !probe.Work.IsCompleted, + "one real UI Login call reaches the original retry dialog"); + probe.User.Logout(); + var cancelled = false; + try + { + await RetryComplete(probe.Work); + } + catch (OperationCanceledException) + { + cancelled = probe.Work.IsCanceled; + } + Check(cancelled, "actual Login task is cancelled before fixture cleanup"); + Check(probe.SuccessServices.Calls.Count == 0, "cancelled identity probe does not initialize mail or IAP"); + cases.Add(new { backend = input.kv ? "kv" : "playfab", input.config, + ids = probe.User.Ids.ToArray(), calls = probe.User.TokenCalls.ToArray(), cancelled }); + } + finally + { + await probe.Close(run); + run.Pending = null; + } + } + } + catch (Exception ex) + { + failure = ex.ToString(); + } + finally + { + if (run.Pending == null) + { + try + { + restored = run.Restore(); + if (restored) + { + failedRetryCleanup = null; + running = false; + } + } + catch (Exception ex) + { + failure = failure ?? ex.ToString(); + } + } + } + return JsonConvert.SerializeObject(new { success = failure == null && run.Errors.Count == 0 && restored && cases.Count == 3, + caseId = "M03C-CustomId", assertions, cases, stoppedOwnedRunners = run.StoppedRunners, + remainingOwnedObjects = run.Pending?.RemainingObjects ?? 0, restored, failure, errors = run.Errors, + runtimeFramesVerified = false, cleanupMode = "owned-runner-stopped", editorLifecycleDriven = true, + formalRequests = 0, realKVLoginExecuted = false, cleanupPending = failedRetryCleanup != null }); + } + + private static async Task RunDestroyBoundary() + { + if (running || failedRetryCleanup != null || EditorApplication.isPlayingOrWillChangePlaymode || + EditorApplication.isCompiling || EditorApplication.isUpdating || PlayerKVGameplayLoop.Enabled || + asap.core.GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0 || + PlayFabMgr.HasLiveInstanceForKVLoad || typeof(LoadingScreen).GetField("_instance", RetryStatic).GetValue(null) != null) + { + throw new InvalidOperationException("Login destruction validation requires an idle Editor."); + } + var run = new RetryRun(); + failedRetryCleanup = run; + running = true; + var cases = new List(); + var assertions = 0; + string failure = null; + var restored = false; + void Check(bool value, string label) + { + assertions++; + if (!value) + { + throw new InvalidOperationException("Login destruction: " + label); + } + } + try + { + run.Install(); + var names = new[] { "done-kept", "retry-cancelled", "input-cancelled", "ready-but-pending", "pf-kept", "not-started-kept" }; + for (var kind = 0; kind < names.Length; kind++) + { + var probe = new RetryCase(); + run.Pending = probe; + try + { + run.SetBackend(kind != 4); + run.OpenRunner(); + probe.Setup(kind == 2 ? "{{input}}" : "101", + new[] { kind == 0 || kind == 3 || kind == 5 ? ELoginStep.Done : ELoginStep.Api }); + probe.User.CustomId = "102"; + probe.User.HoldLogin = kind == 3; + Action oldCallback = null; + if (kind == 5) + { + await probe.User.Login(null); + Check(probe.Work == null && typeof(PFLoginAct).GetField("loginWork", RetryInstance).GetValue(probe.Act) == null, + "unstarted Act has no account work"); + } + else + { + probe.StartThroughDoLogin(); + Check(ReferenceEquals(probe.Work, typeof(PFLoginAct).GetField("loginWork", RetryInstance).GetValue(probe.Act)), + "actual DoLogin awaits the retained LoginAsync task"); + if (kind == 0) + { + await RetryComplete(probe.Work); + Check(probe.Work.Status == TaskStatus.RanToCompletion, "actual login completed before destruction"); + } + else if (kind == 1 || kind == 4) + { + await RetryWait(() => probe.Callback(false) != null); + oldCallback = probe.Callback(false); + Check(!probe.Work.IsCompleted && probe.User.TokenCalls.SequenceEqual(new[] { true }), "actual retry is waiting"); + } + else if (kind == 2) + { + await RetryWait(() => probe.InputOpen); + Check(!probe.Work.IsCompleted && probe.User.TokenCalls.Count == 0, "actual input is waiting before Login"); + } + else + { + await RetryWait(() => probe.User.TokenCalls.Count == 1); + Check(!probe.Work.IsCompleted && ((IKVUserLifecycle)probe.User).KVHandoffReady, + "ready alone cannot finish the actual login work"); + } + } + var beforeTask = probe.Work?.Status.ToString() ?? "not-started"; + Check(kind == 0 + ? probe.SuccessServices.Calls.SequenceEqual(new[] { "mail", "iap" }) + : probe.SuccessServices.Calls.Count == 0, + "only completed login initializes mail then IAP exactly once"); + var beforeServices = probe.SuccessServices.Calls.ToArray(); + var beforeCalls = probe.User.TokenCalls.Count; + var beforeId = probe.User.CustomId; + var readyBefore = ((IKVUserLifecycle)probe.User).KVHandoffReady; + Check(!probe.User.LoginLifetime.IsCancellationRequested && probe.User.Logouts == 0, "no fixture Logout before destruction"); + probe.DestroyLoginAct(); + var actToken = (System.Threading.CancellationToken)typeof(PFLoginAct).GetField("loginToken", RetryInstance).GetValue(probe.Act); + var revoke = kind == 1 || kind == 2 || kind == 3; + Check(actToken.IsCancellationRequested, "actual OnDestroy cancels its child token"); + Check(probe.User.Logouts == (revoke ? 1 : 0) && probe.User.LoginLifetime.IsCancellationRequested == revoke, + "only unfinished KV work revokes its parent lifetime"); + if (probe.Work != null && kind != 0) + { + var cancelled = false; + try + { + await RetryComplete(probe.Work); + } + catch (OperationCanceledException) + { + cancelled = probe.Work.IsCanceled; + } + Check(cancelled, "actual work ends cancelled before fixture cleanup"); + } + else + { + Check(probe.Work == null || probe.Work.Status == TaskStatus.RanToCompletion, "successful or unstarted work remains intact"); + } + oldCallback?.Invoke(); + if (kind == 2) + { + probe.Input("101"); + } + Check(probe.User.TokenCalls.Count == beforeCalls && probe.User.CustomId == beforeId, "old UI callback cannot login or change identity"); + Check(((IKVUserLifecycle)probe.User).KVHandoffReady == (!revoke && readyBefore), "completed valid handoff is retained"); + Check(probe.SuccessServices.Calls.SequenceEqual(beforeServices), "destruction and old callbacks do not initialize services"); + cases.Add(new { name = names[kind], taskBefore = beforeTask, taskAfter = probe.Work?.Status.ToString() ?? "not-started", + actCancelled = actToken.IsCancellationRequested, parentCancelled = probe.User.LoginLifetime.IsCancellationRequested, + logouts = probe.User.Logouts, callsBefore = beforeCalls, callsAfter = probe.User.TokenCalls.Count, + readyBefore, readyAfter = ((IKVUserLifecycle)probe.User).KVHandoffReady }); + } + finally + { + await probe.Close(run); + run.Pending = null; + } + } + } + catch (Exception ex) + { + failure = ex.ToString(); + } + finally + { + if (run.Pending == null) + { + try + { + restored = run.Restore(); + if (restored) + { + failedRetryCleanup = null; + running = false; + } + } + catch (Exception ex) + { + failure = failure ?? ex.ToString(); + } + } + } + return JsonConvert.SerializeObject(new { success = failure == null && run.Errors.Count == 0 && restored && cases.Count == 6, + caseId = "M03D-Destroy", assertions, cases, stoppedOwnedRunners = run.StoppedRunners, + remainingOwnedObjects = run.Pending?.RemainingObjects ?? 0, restored, failure, errors = run.Errors, + runtimeFramesVerified = false, cleanupMode = "owned-runner-stopped", editorLifecycleDriven = true, + formalRequests = 0, realKVLoginExecuted = false, cleanupPending = failedRetryCleanup != null }); + } + + private static async Task RunImmediateConsumers() + { + if (running || EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || EditorApplication.isUpdating || asap.core.GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0 || PlayerKVGameplayLoop.Enabled) + { + throw new InvalidOperationException("Immediate validation requires an idle isolated Editor."); + } + + running = true; + var originalContainer = asap.core.GContext.container; + var originalEvents = ValidationContextAccess.Events; + var isolated = new asap.core.Container(); + var bridge = default(PlayerKVGameSessionBridge); + var session = default(game.Account.S101AccountSession); + var shell = default(UnityEngine.GameObject); + var store = default(KVPlayerSaveStore); + var subscriptions = new List(); + var release = default(TaskCompletionSource); + var errors = new List(); + var messages = new List(); + int assertions = 0, sends = 0, consumeEvents = 0; + string failure = null; + bool restored = false; + void Check(bool condition) + { + assertions++; + if (!condition) + { + throw new InvalidOperationException("Immediate consumer assertion " + assertions); + } + } + + void Set(object target, string name, object value) + { + target.GetType().GetField(name, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(target, value); + } + + void Log(string message, string stack, UnityEngine.LogType type) + { + messages.Add(message); + if (type == UnityEngine.LogType.Exception) + { + errors.Add(message + stack); + } + } + + UnityEngine.Application.logMessageReceived += Log; + try + { + var directory = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, "../../cfgData")); + var tables = new cfg.Tables(name => SimpleJSON.JSON.Parse(System.IO.File.ReadAllText(System.IO.Path.Combine(directory, name + ".json")))); + var api = new Uri("http://synthetic.invalid/"); + session = new game.Account.S101AccountSession(api, jar => new ValidationHttp(_ => + { + jar.Add(api, new System.Net.Cookie("sid", "module01")); + return ValidationJson(new { state = 0, internalId = 17, newCreate = false, createTime = "2026-01-01T00:00:00Z", svrTime = "2026-10-09T00:00:00Z" }); + })); + Check((await session.LoginAsync("101")).Success); + var remote = new Dictionary(); + Dictionary sent = null; + var entered = default(TaskCompletionSource); + bool fail = false; + bridge = new PlayerKVGameSessionBridge(_ => new ValidationHttp(null, async request => + { + if (request.RequestUri.AbsolutePath.EndsWith("/Get", StringComparison.Ordinal)) + { + return ValidationJson(new { data = remote }); + } + + sends++; + sent = Newtonsoft.Json.Linq.JObject.Parse(await request.Content.ReadAsStringAsync())["data"].ToObject>(); + entered.TrySetResult(true); + await release.Task; + var response = ValidationJson(new { }); + response.StatusCode = fail ? System.Net.HttpStatusCode.InternalServerError : System.Net.HttpStatusCode.OK; + return response; + })); + var root = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, "../../CodexOutput/upserver/B3BatchMigration/M2/M01-2026-10-09/unity-cache", Guid.NewGuid().ToString("N"))); + var opened = await bridge.OpenAsync(session, root, "101", api, 1, _ => true, default); + Check(opened.Success); + store = new KVPlayerSaveStore(); + store.Bind(opened.Handle, default); + ValidationContextAccess.Use(isolated); + ValidationContextAccess.Events = new asap.core.EventAggregator(); + asap.core.ContainerExtensions.RegisterInstance(isolated, tables); + var player = new GameCore.PlayerData(tables, null) + { + playerSaveStore = store + }; + var small = new GameCore.SmallGameData(tables, null, null); + var fish = new GameCore.PlayerFishData(tables, null); + var achievements = new AchievementDataManager(tables); + var box = new FishingBoxData(); + var eventData = new GameCore.FishingEventData(tables); + asap.core.ContainerExtensions.RegisterInstance(isolated, player); + asap.core.ContainerExtensions.RegisterInstance(isolated, small); + asap.core.ContainerExtensions.RegisterInstance(isolated, fish); + asap.core.ContainerExtensions.RegisterInstance(isolated, achievements); + asap.core.ContainerExtensions.RegisterInstance(isolated, box); + asap.core.ContainerExtensions.RegisterInstance(isolated, eventData); + eventData.InitData(new Dictionary()); + typeof(GameCore.PlayerData).GetProperty("benefitsEnergyLimit").SetValue(player, 10000); + Set(player, "vipScoreDic", new Dictionary { [0] = 1 }); + subscriptions.Add(asap.core.GContext.OnEvent().Subscribe(_ => consumeEvents++)); + shell = new UnityEngine.GameObject("M01 immediate consumers"); + shell.SetActive(false); + shell.hideFlags = UnityEngine.HideFlags.HideAndDontSave; + var fishing = shell.AddComponent(); + var panel = shell.AddComponent(); + Set(fishing, "saveStore", store); + Set(fishing, "_tables", tables); + Set(fishing, "fishingData", new FishingData { fishItem = tables.TbItem.DataList.First(item => item.SubType != 21 && item.SubType != 22) }); + Set(panel, "saveStore", store); + Set(panel, "_fishingEventData", eventData); + panel.wheelLevel = tables.TbWheelLevel.DataList.First(); + foreach (var shouldFail in new[] + { + false, + true + } + + ) + { + fail = shouldFail; + foreach (var isFishing in new[] + { + true, + false + } + + ) + { + player.SetEnergy(100, false); + player.magnification = 0; + Set(panel, "isDataSynced", false); + var beforeEnergy = (int)player.Energy; + var beforeEvents = consumeEvents; + var beforeSends = sends; + var logStart = messages.Count; + entered = new TaskCompletionSource(); + release = new TaskCompletionSource(); + var target = isFishing ? (object)fishing : panel; + var method = isFishing ? "ConsumeBaitOnPlayfab" : "ConsumeOnPlayfab"; + target.GetType().GetMethod(method, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(target, null); + Check(await Task.WhenAny(entered.Task, Task.Delay(5000)) == entered.Task); + var key = isFishing ? "NewPlayerDataDic" : "TurntableRoll"; + Check(sent.Count == 1 && sent.ContainsKey(key)); + var localBeforeCompletion = store.Read(key); + if (isFishing) + { + Check((int)player.Energy == beforeEnergy - tables.TbEnergyDef.DataList[0].Mag && consumeEvents == beforeEvents + 1); + Check(Newtonsoft.Json.Linq.JObject.Parse(sent[key])["energy"].ToString() == ((int)player.Energy).ToString()); + } + else + { + Check(!(bool)typeof(FishingTurntablePanel).GetField("isDataSynced", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(panel)); + Check(sent[key] == (eventData.TurntableCoupon - panel.wheelLevel.CostNumber).ToString()); + } + + release.SetResult(true); + var prefix = isFishing ? "[FishBehaviourB::ConsumeBaitOnPlayfab] " : "[FishingTurntablePanel::ConsumeOnPlayfab] "; + var deadline = DateTime.UtcNow.AddSeconds(5); + while (!messages.Skip(logStart).Contains(prefix + (!fail).ToString()) && errors.Count == 0 && DateTime.UtcNow < deadline) + { + await Task.Delay(10); + } + + Check(messages.Skip(logStart).Contains(prefix + (!fail).ToString()) && errors.Count == 0); + var localAfter = store.Read(key); + Check(localBeforeCompletion.Found == localAfter.Found && localBeforeCompletion.Value == localAfter.Value && sends == beforeSends + 1); + if (!isFishing) + { + Check((bool)typeof(FishingTurntablePanel).GetField("isDataSynced", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(panel)); + } + } + } + } + catch (Exception ex) + { + failure = ex.ToString(); + } + finally + { + release?.TrySetResult(true); + if (bridge != null) + { + await bridge.CloseAsync(); + } + + store?.Dispose(); + session?.Dispose(); + foreach (var subscription in subscriptions) + { + subscription.Dispose(); + } + + if (shell != null) + { + UnityEngine.Object.DestroyImmediate(shell); + } + + ValidationContextAccess.Use(originalContainer); + ValidationContextAccess.Events = originalEvents; + restored = ReferenceEquals(asap.core.GContext.container, originalContainer) && ReferenceEquals(ValidationContextAccess.Events, originalEvents); + UnityEngine.Application.logMessageReceived -= Log; + running = false; + } + + return JsonConvert.SerializeObject(new { success = failure == null && errors.Count == 0 && restored, caseId = "M01-Immediate", assertions, sends, consumeEvents, restored, failure, errors, formalRequests = 0 }); + } + sealed class ValidationHttp : System.Net.Http.HttpMessageHandler { - readonly Func send; - internal ValidationHttp(Func send) { this.send=send; } - protected override Task SendAsync(System.Net.Http.HttpRequestMessage request,System.Threading.CancellationToken token) => Task.FromResult(send(request)); + private readonly Func send; + private readonly Func> sendAsync; + internal ValidationHttp(Func send, + Func> sendAsync = null) + { + this.send = send; + this.sendAsync = sendAsync; + } + protected override Task SendAsync(System.Net.Http.HttpRequestMessage request,System.Threading.CancellationToken token) => + sendAsync != null ? sendAsync(request) : Task.FromResult(send(request)); } static System.Net.Http.HttpResponseMessage ValidationJson(object value) => new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK) { Content=new System.Net.Http.StringContent(JsonConvert.SerializeObject(value),System.Text.Encoding.UTF8,"application/json") }; - static Dictionary FullRaw(cfg.Tables tables,bool optional) + internal static Dictionary FullRaw(cfg.Tables tables, bool optional) { - var now=new DateTime(2026,9,23,0,0,0,DateTimeKind.Utc); - string day=now.ToString("O",CultureInfo.InvariantCulture),end=now.AddDays(1).ToString("O",CultureInfo.InvariantCulture); - var modern=new Dictionary{["newData"]=string.Join(",",new[]{"3","999","4","5","6","7",tables.TbRodData.DataList[0].ID.ToString(CultureInfo.InvariantCulture),day,"-1","8","77","9","0","0","10","11","12","13","14"})}; - var raw=new Dictionary(); - void Put(string key,object value) { raw[key]=JsonConvert.SerializeObject(value); } - if(optional) + var now = new DateTime(2026, 9, 23, 0, 0, 0, DateTimeKind.Utc); + string day = now.ToString("O", CultureInfo.InvariantCulture), end = now.AddDays(1).ToString("O", CultureInfo.InvariantCulture); + var modern = new Dictionary { - modern["vipL"]="1,2"; modern["ld"]="1.25|2.5|3"; modern["bd"]="1,2"; modern["ct"]="1:2"; modern["rt"]="3:4"; - int condition=(int)Enum.GetValues(typeof(cfg.ConditionType)).GetValue(0); modern["ad"]=condition+":1|2|3"; - Put("NewRodList",new[]{7,8}); raw["SeasonId"]="9"; raw["IsOpenAppraise"]="1"; raw["InfiniteBuildingData"]="synthetic"; - foreach(var key in new[]{"RodData","RodLevelData","FishSwimToMap","FishSwimToMapCount","MapProgress","HonorLevelData"}) raw[key]="{\"-1\":7}"; - var fish=tables.TbFishData.DataList.First(f=>tables.TbMapData.DataMap.ContainsKey(f.AreaID)); - Put("Map_5_"+fish.AreaID,new Dictionary{[fish.ID]="0|-1|2|3|True"}); - Put("InitRodAccessoriesData",new{GloveID=1,RodToSkin=new Dictionary{[2]=3},GloveIds=new[]{4},SkinIds=new[]{5},GloveNewIds=new[]{6},SkinNewIds=new[]{7}}); - raw["ShopPackBuyCount"]="{\"x\":1}"; raw["ShopAllPackBuyCount"]="{\"2\":3}"; raw["ShopGiftBuyCount"]="{\"4\":5}"; raw["Voucher"]="6"; - var daily=new{ID=1,index=2,lastID=3,time="raw"}; Put("ChainPackDataNew",daily); Put("TurntableAdData",daily); - Put("VIPAdPackData",new{ID=7,index=8,day=9,cdTime="raw",isOpen=true}); Put("BuyData",new[]{1.5,2.5}); raw["AdvertAllCount"]="{\"-2\":10}"; - raw["DiamondShopRefreshCount"]="11"; raw["DiamondShopRefreshTime"]=day; - Put("DiamondShopItemRecords",new Dictionary{[12]=new{ItemID=13,Discount=.5,hasBought=1}}); raw["BlackFridayCouponDate"]="2026,9,23,1,2,3,14,15,1"; - Put("LimitedTimeEventDic",new Dictionary{[1]=new{id=2,duration=9999999d,startTime=day}}); - Put("FixedTimeEventDic",new Dictionary{[3]=new{id=4,endTime=end}}); raw["WheelLevelCount"]="{\"5\":6}"; - foreach(var key in new[]{"TurntableRoll","WheelOperateCount","AllWheelOperateCount","WheelLevelFreeCount","PVPToken"}) raw[key]="7"; - var buff=new{SortID=1,sourceID=2,buffID=3,isEnd=false,buffEndTime=end}; - Put("BuffDataList",new Dictionary{[7]=buff}); Put("TargetBuffDataList",new[]{buff}); Put("FishDailyBuff",buff); Put("GlobalBuffDataList",new Dictionary{[7]=buff}); - raw["IsFix"]="true";raw["IsOpenSkyscraper"]="1";raw["CampDataDic"]="{\"CampId\":205}";raw["GuideSaveDataNew"]="A|3|1;B|4|0"; - Put("BattlePassRecord",new{ID=1,Level=2,Exp=3,BuyVipToastIndex=4,IsUnlockVip=1,NormalRewardGet=new[]{5,6},VipRewardGet=new[]{7,8},LastDropIDs=new[]{9},InflationRate=2.5f}); - Put("BattleTask",new{dic_dailyTasks=new Dictionary{[9]=10},dic_weeklyTasks=new Dictionary{[11]=12},loginDays=new[]{13,14},DailyTaskEndTime=now,WeeklyTaskEndTime=now.AddDays(1)}); - Put("MonthlySignEvent",new{index=4,dailySignEvent=daily}); - Put("TriggerPackDataList",new[]{new{ID=1,index=2,lastID=3,vipLevel=4,mapID=5,time="raw"}}); - Put("GiftVIPDData",new Dictionary{["A"]=new{oldVipLevel=1,curVipLevel=2,timer=3}}); Put("FixedTimeShopDic",new Dictionary{[7]=new{id=8,endTime=end}}); - raw["ClubSignin"]=day;raw["IsOpenClubRed"]="1";Put("LureDonateData",new{DonateCountTime=day,ClubLureDonateCount=7,ClubLureRequestCDEnd=end}); - Put("FishingChallengeData",new{FirstOpen=true,EventId=11,RankTierLevel=11,Finished=11,RedirectID=11,Score=11,ProcessedScore=11,step=11,uiStep=11,index=11,StartTime=day,EndTime=end,eliminateNumber=new[]{7,9},robotAccountList=new[]{7,9},InflationRate=1.5f}); - var offer=new{FirstOpen=true,EventId=7,StartTime=day,EndTime=end,ItemId=-1,LotteryNum=5,Items=new[]{new{Id=1,Item=2,Number=3,Status=2}},RewardList=new[]{8,9},Finished=true,ChestReward=10}; - Put("OfferChainsChestData",offer);Put("OfferDiscoPartyManager",offer); - Put("EventPartnerGatherData",new{FirstOpen=false,EventId=18,StartTime=day,EndTime=end,CurrentPoints=1,CurrentMiningProgress=2,Token=3,InvitedCount=4,TicketCount=5, - CompletedNodesList=new[]{new[]{6,7}},BuilderPartnerScore=new[]{new{Item1=8,Item2=9}},PartnerBonus=new{Item1=1.25f,Item2=end},FreeSpinNum=10, - Bots=new Dictionary{[11]=new{Id="synthetic-bot",ScorePlayer=12,ScoreBot=13,Grade=14,TargetScore=15,WakeStartTime=day,WakingSeconds=16}}, - IsRecvFinalReward=true,UIFinishedPartners=new[]{true,false},IsFinished=true,SpinState=2,InflationRate=2.5f,IsEnableAutoMatch=true,LastAutoMatchTime=day}); - Put("EventCubeMeltData",new{TicketCount=1,FirstOpen=true,IsFinished=true,EventId=2,IsInGuide=true,StartTime=day,EndTime=end,CurrentStagetId=3, - CollectItems=new[]{new{ItemId=4,Count=5,MaxCount=6,ItemTrueId=7}},BoardData=new[]{8,9},BoardViewSize=new{x=10,y=11},CollectRewardsId=new[]{12,13},IsFinalRewardGet=true,PieceDatas=new[]{new[]{14,15},new[]{16,17}},Cycle=18,InflationRate=1.5f}); - Put("EventPackData",new{currentEventID=-1,purchaseCount=2,VIPLvlWhenEventActivate=3,redirectID=4}); - Put("PiggyBankPackData",new{currentEventID=11,purchaseCount=11,VIPLvlWhenEventActivate=11,savingProgress=11,redirectID=0,doNeedTrigger=true,isTriggered=true,inflation=1.5f}); - Put("GeneralEventPackData",new{currentEventID=11,redirectID=tables.TbEventPackManager.DataList.First(p=>p.PackType==3).ID,VIPLvlWhenEventActivate=11,purchaseCount=11,savingProgress=11,discountLvl=11,visualProgress=11,visualDiscountLvl=11,rodID=11,lastPackIDBought=11,packID=11,doNeedTrigger=true,isTriggered=true,inflation=1.5f,selections=new[]{7,9}}); - raw["FootPrint"]="18446744073709551615"; - Put("EventShootingRangeData",new{EventId=11,CycleId=11,RedirectId=11,AmmoCount=11,CurrentStageIdx=11,ChainProgress=11,RewardFlag=long.MaxValue,TargetFlag=long.MinValue,HasBeenOpened=true,Inflation=1.5f}); - var item=new{name="synthetic",index=3,isOver=true,DataType=2,ColorTypeList=new[]{7,9},ShelfTypeList=new[]{0,1},GridStateList=new[]{0,5},FromDisplayAreaIndexList=new[]{1,2}}; - Put("epdk",new{EventID=11,PotionID=11,StageID=11,Stage1TotalLevel=11,Stage2TotalLevel=11,LevelID=11,LevelIndex=11,CorrectNum=11,SubmitNum=11,Token=11,ConsumedToken=11,Rule=11,PreEventID=11,PrePotionID=11,PreStageID=11,PreLevelID=11,Round=11,FirstPlayedEventId=11,IsOver=true,Name="synthetic",InflationRate=1.5f,LevelTargetData=item,LevelDisplayData=item,LevelProcessedList=new[]{item}}); - Put("epbdk",new{EventID=11,PinballMainID=11,SpinPoint=11,Scores=11,Multiple=11,Token=11,ConsumedToken=11,RewardIndex=11,Force=1.5f,LuckyValue=1.5f,InflationRate=1.5f}); - Put("estdk",new{EventID=11,ScratchMainID=11,ChainPackID=11,Token=11,ConsumedToken=11,RewardTaskConsumedToken=11,EventScratchRewardTaskID=11,EventScratchCardID=11,TotalConsumedToken=11,ChainPackProgress=11,magIndex=11,IsOver=true,LuckyValue=1.5f,InflationRate=1.5f,StampRewardList=new[]{7,9},StampRewardDict=new Dictionary{[7]=new{EventScratchCardID=8,Count=9}}}); - raw["ThanksGivingPackData"]="1,2,3,4";raw["ThanksGivingPackMigrationData"]="5,6,7,8";Put("EventPinataPackData",new{EventID=7,PinataMainID=8,PurchasedCount=9}); - raw["EAccoutUrl"]="{\"synthetic\":\"avatar\"}";raw["hwGoogle"]="1";raw["Apple"]="1";raw["TapJoy_Diamond"]="12"; + ["newData"] = string.Join(",", new[] { "3", "999", "4", "5", "6", "7", tables.TbRodData.DataList[0].ID.ToString(CultureInfo.InvariantCulture), day, "-1", "8", "77", "9", "0", "0", "10", "11", "12", "13", "14" }) + }; + var raw = new Dictionary(); + void Put(string key, object value) + { + raw[key] = JsonConvert.SerializeObject(value); } - Put("NewPlayerDataDic",modern); return raw; - } - static async Task RunFullLoad() - { - if(running || asap.core.GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length!=0 || PlayFabMgr.HasLiveInstanceForKVLoad) - throw new InvalidOperationException("Game context is active."); - running=true; int assertions=0,auth=0,gets=0,borrowed=0,forbidden=0; bool success=false,restored=false; string errorType=null; - var originalContainer=asap.core.GContext.container; var originalEvents=ValidationContextAccess.Events; - var isolated=new asap.core.Container(); var events=new ValidationEvents(); UnityEngine.GameObject shell=null; - AggUserService user=null; PlayerKVGameLoadTransaction transaction=null; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Full load assertion failed."); } - try + + if (optional) { - var directory=System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath,"../../cfgData")); - var tables=new cfg.Tables(name=>SimpleJSON.JSON.Parse(System.IO.File.ReadAllText(System.IO.Path.Combine(directory,name+".json")))); - var snapshot=new PlayerKVSchemaSnapshot("local-full-4B2",tables.TbRodData.DataMap.Keys,tables.TbMapData.DataMap.Keys, - Enum.GetNames(typeof(cfg.ConditionType)).ToDictionary(n=>n,n=>(int)Enum.Parse(typeof(cfg.ConditionType),n)),CultureInfo.InvariantCulture, - new DateTime(2026,9,23,0,0,0,DateTimeKind.Utc),tables.TbGlobalConfig.InitWheelTicket, - tables.TbEventPackManager.DataMap.ToDictionary(p=>p.Key,p=>p.Value.PackType), - tables.TbFishingEvent.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVEventConfig(p.Value.RedirectID,(p.Value.TimeDefinition as cfg.LimitedTime)?.EndTime)),tables.TbGlobalConfig.GlobalTimeOffset, - tables.TbFishData.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVFishConfig(p.Key,p.Value.AreaID,p.Value.Quality,p.Value.FishCardID,p.Value.BaseWeight,p.Value.PointExtraParam,p.Value.WeightRandom)), - tables.TbFishCard.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVFishCardConfig(p.Key,p.Value.MaxLevel,p.Value.CardsRequiredList,p.Value.WeightMagList))); - ValidationContextAccess.Use(isolated); ValidationContextAccess.Events=events; - Check(asap.core.ContainerExtensions.RegisterInstance(isolated,tables)); - shell=new UnityEngine.GameObject("KV controlled inactive fixture"); shell.SetActive(false); shell.hideFlags=UnityEngine.HideFlags.HideAndDontSave; - var pf=shell.AddComponent(); Check(pf.IsUnstartedForKVLoad && !PlayFabMgr.HasLiveInstanceForKVLoad); - var api=new Uri("http://synthetic.invalid/"); var config=new ValidationConfig(); config.Set(GConstant.K_Event_API_URL,api.AbsoluteUri); - var server=new CustomServerMgr(config,_=>new ValidationHttp(_=>{forbidden++;throw new InvalidOperationException("PF API transport forbidden.");})); - user=new AggUserService(PlayerKVControlledLoadCapability.CreateForValidation(_=>throw new InvalidOperationException())){CustomId="101",config=config,customServerMgr=server}; - var player=new GameCore.PlayerData(tables,null); var small=new GameCore.SmallGameData(tables,null,null); var fish=new GameCore.PlayerFishData(tables,null); - var shop=new GameCore.PlayerShopData(); var eventBase=new GameCore.FishingEventData(tables); var buffs=new BuffDataCenter(tables); var camp=new CampDataMM(tables,null); - var achievements=new AchievementDataManager(tables); var box=new FishingBoxData(); var guide=new GameCore.GuideDataCenter(null,null); var battle=new BattlePassData(tables); - var sign=new GameCore.SigninData(tables); var trigger=new GameCore.TriggerPackData(tables); var club=new ClubService(false); var challenge=new FishingChallengeManager(); - var chains=new DataCenter.OfferChainsChestManager(); var disco=new DataCenter.OfferDiscoPartyManager(); var partner=new DataCenter.EventPartnerGatherManager(); var cube=new EventCubeMeltManager(); - var eventPack=new EventPackData(); var piggy=new PiggyBankPackData(); var bargain=new BargainPackData(); var foot=new FootPrintService(); var shooting=new EventShootingRangeData(); - var potion=new EventPotionDataManager(); var pinball=new EventPinballDataManager(); var scratch=new EventScratchTicketDataManager(); - var progress=eventBase.ThanksGivingPackData; var migration=eventBase.ChainPackWithProgressMigrationData; - var pinataTarget=new EventPinataPackData(); Check(asap.core.ContainerExtensions.RegisterInstance(isolated,pinataTarget)); - var pinata=EventPinataPackDataManager.CreateForKVLoad(); var digging=new Script.RuntimeScript.DiggingGameManager(); - var modules=new List(); - void Add(int id,Action reset,Action replace) where T:class => modules.Add(new PlayerKVLoadModule(id,reset,d=>replace(d.Module(id)))); - Add(1,player.ResetForKVLoad,player.ReplaceFromKVDecoded); Add(2,small.ResetForKVLoad,small.ReplaceFromKVDecoded); - Add(3,fish.ResetForKVLoad,fish.ReplaceFromKVDecoded); Add(4,shop.ResetForKVLoad,shop.ReplaceFromKVDecoded); - Add(5,eventBase.ResetForKVLoad,eventBase.ReplaceFromKVDecoded); Add(6,buffs.ResetForKVLoad,buffs.ReplaceFromKVDecoded); - Add(7,camp.ResetForKVLoad,camp.ReplaceFromKVDecoded); Add(8,achievements.ResetForKVLoad,achievements.ReplaceFromKVDecoded); - Add(9,box.ResetForKVLoad,box.ReplaceFromKVDecoded); Add(10,guide.ResetForKVLoad,guide.ReplaceFromKVDecoded); - Add(11,battle.ResetForKVLoad,battle.ReplaceFromKVDecoded); Add(12,sign.ResetForKVLoad,sign.ReplaceFromKVDecoded); - Add(13,trigger.ResetForKVLoad,trigger.ReplaceFromKVDecoded); Add(14,club.ResetForKVLoad,club.ReplaceFromKVDecoded); - Add(15,challenge.ResetForKVLoad,challenge.ReplaceFromKVDecoded); Add(16,chains.ResetForKVLoad,chains.ReplaceFromKVDecoded); - Add(17,disco.ResetForKVLoad,disco.ReplaceFromKVDecoded); Add(18,partner.ResetForKVLoad,partner.ReplaceFromKVDecoded); - Add(19,cube.ResetForKVLoad,cube.ReplaceFromKVDecoded); Add(20,eventPack.ResetForKVLoad,eventPack.ReplaceFromKVDecoded); - Add(21,piggy.ResetForKVLoad,piggy.ReplaceFromKVDecoded); Add(22,bargain.ResetForKVLoad,bargain.ReplaceFromKVDecoded); - Add(23,foot.ResetForKVLoad,foot.ReplaceFromKVDecoded); Add(24,shooting.ResetForKVLoad,shooting.ReplaceFromKVDecoded); - Add(25,potion.ResetForKVLoad,potion.ReplaceFromKVDecoded); Add(26,pinball.ResetForKVLoad,pinball.ReplaceFromKVDecoded); - Add(27,scratch.ResetForKVLoad,scratch.ReplaceFromKVDecoded); - Add(28,()=>{progress.ResetForKVLoad();migration.ResetForKVLoad();},p=>{progress.ReplaceFromKVDecoded(p.Current);migration.ReplaceFromKVDecoded(p.Migration);}); - Add(29,pinata.ResetForKVLoad,pinata.ReplaceFromKVDecoded); Add(30,digging.ResetForKVLoad,digging.ReplaceFromKVDecoded); - modules.Add(new PlayerKVLoadModule(31,user.ResetForKVLoad,d=>user.ReplaceFromKVDecoded(d.Module(31),d.Epoch,d.Raw))); - transaction=new PlayerKVGameLoadTransaction(modules,System.Threading.Thread.CurrentThread.ManagedThreadId,()=>user.KVIntents?.Discard()); - user.ConfigureKVForValidation(transaction,pf,server,()=>!asap.core.GContext.Ready && digging.CanResetForKVLoad); - var rawA=FullRaw(tables,true); var rawB=FullRaw(tables,false); - void CheckSavedPayload(string key,object actual,params string[] ignored) + modern["vipL"] = "1,2"; + modern["ld"] = "1.25|2.5|3"; + modern["bd"] = "1,2"; + modern["ct"] = "1:2"; + modern["rt"] = "3:4"; + int condition = (int)Enum.GetValues(typeof(cfg.ConditionType)).GetValue(0); + modern["ad"] = condition + ":1|2|3"; + Put("NewRodList", new[] { 7, 8 }); + raw["SeasonId"] = "9"; + raw["IsOpenAppraise"] = "1"; + raw["InfiniteBuildingData"] = "synthetic"; + foreach (var key in new[] { - var expected=Newtonsoft.Json.Linq.JToken.Parse(rawA[key]); - foreach(var name in ignored) ((Newtonsoft.Json.Linq.JObject)expected).Remove(name); - Check(ContainsPayload(Newtonsoft.Json.Linq.JToken.Parse(JsonConvert.SerializeObject(actual)),expected)); + "RodData", + "RodLevelData", + "FishSwimToMap", + "FishSwimToMapCount", + "MapProgress", + "HonorLevelData" } - void CheckSnapshots(Dictionary raw) + + ) + raw[key] = "{\"-1\":7}"; + var fish = tables.TbFishData.DataList.First(f => tables.TbMapData.DataMap.ContainsKey(f.AreaID)); + Put("Map_5_" + fish.AreaID, new Dictionary { [fish.ID] = "0|-1|2|3|True" }); + Put("InitRodAccessoriesData", new { GloveID = 1, RodToSkin = new Dictionary { [2] = 3 }, GloveIds = new[] { 4 }, SkinIds = new[] { 5 }, GloveNewIds = new[] { 6 }, SkinNewIds = new[] { 7 } }); + raw["ShopPackBuyCount"] = "{\"x\":1}"; + raw["ShopAllPackBuyCount"] = "{\"2\":3}"; + raw["ShopGiftBuyCount"] = "{\"4\":5}"; + raw["Voucher"] = "6"; + var daily = new { - var errors=new PlayerKVSchemaDiagnostics();var modern=PlayerKVSaveSchema.DecodeModern(raw,errors); - Check(Same(player.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodePlayer(raw,modern,snapshot,errors))); - Check(Same(shop.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodeShop(raw,snapshot,errors))); - Check(Same(eventBase.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodeEventBase(raw,modern,snapshot,errors))); - Check(Same(camp.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodeCamp(raw,errors))); - Check(Same(club.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodeClub(raw,snapshot,errors))); - Check(Same(eventPack.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodeEventPack(raw,snapshot,errors))); - Check(Same(piggy.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodePiggyBank(raw,snapshot,errors))); - Check(Same(bargain.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodeBargain(raw,snapshot,errors))); - Check(Same(shooting.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodeShootingRange(raw,snapshot,errors))); - Check(Same(progress.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodeProgressPack(raw,false,errors))); - Check(Same(migration.SnapshotForKVValidation(),PlayerKVSaveSchema.DecodeProgressPack(raw,true,errors))); - Check(errors.TotalErrors==0); - } - PlayerKVGameLoadCapability Capability(Dictionary raw,bool newPF) - { - System.Net.CookieContainer jar=null; - return PlayerKVGameLoadCapability.CreateForValidation(new PlayerKVIdentitySnapshot("FF",newPF,newPF ? PlayerKVIdentityChannel.hwVkid : PlayerKVIdentityChannel.none,Array.Empty()),snapshot,api, - System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath,"../../CodexOutput/upserver/KVGameLoadTests/unity-cache",Guid.NewGuid().ToString("N"))), - cookies=> {jar=cookies;return new ValidationHttp(r=>{if(r.RequestUri.AbsolutePath!="/account/Login"){forbidden++;throw new InvalidOperationException();} auth++;jar.Add(api,new System.Net.Cookie("sid","synthetic"));return ValidationJson(new{state=0,internalId=17,newCreate=false,createTime="2026-01-01T00:00:00Z",svrTime="2026-01-02T00:00:00Z"});});}, - cookies=>{Check(ReferenceEquals(cookies,jar));return new ValidationHttp(r=>{if(r.RequestUri.AbsolutePath!="/playerdata/Get"){forbidden++;throw new InvalidOperationException();}gets++;return ValidationJson(new{data=raw});});}, - cookies=>{Check(ReferenceEquals(cookies,jar));return new ValidationHttp(r=>{borrowed++;return new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized){Content=new System.Net.Http.StringContent("{}")} ;});}); - } - var a=await user.LoadKVForValidationAsync(Capability(rawA,true)); - Check(a.State==PlayerKVGameLoadState.LoadedForValidation && a.ModuleCount==31 && a.IntentCount==2); - Check(user.KVLoadedForValidation && !user.IsLogin && !user.IsAuthorized && user.InternalId==0 && user.KVReceiverCountForValidation==0 && user.KVNotificationCount==1); - CheckSnapshots(rawA); - CheckSavedPayload("BattlePassRecord",battle.BattlePassRecord); CheckSavedPayload("BattleTask",battle.BattleTask); - CheckSavedPayload("MonthlySignEvent",sign.monthlySignEvent); CheckSavedPayload("FishingChallengeData",challenge.fishingChallengeData); - CheckSavedPayload("OfferChainsChestData",chains.OfferChainsData); CheckSavedPayload("OfferDiscoPartyManager",disco.OfferDiscoPartyData,"Finished","ChestReward"); - CheckSavedPayload("EventPartnerGatherData",partner.GatherData); CheckSavedPayload("EventCubeMeltData",cube.EventData); - CheckSavedPayload("epdk",potion.PotionData); CheckSavedPayload("epbdk",pinball.PinballData); CheckSavedPayload("estdk",scratch.ScratchTicketData); - CheckSavedPayload("TriggerPackDataList",trigger.triggerPackList); CheckSavedPayload("GiftVIPDData",trigger.giftVIPDData); - CheckSavedPayload("InitRodAccessoriesData",fish.rodAccessoriesData); - var selectedFish=tables.TbFishData.DataList.First(f=>tables.TbMapData.DataMap.ContainsKey(f.AreaID)); - var fishValue=fish.FishForKVValidation(selectedFish.AreaID,selectedFish.ID); - Check(fishValue.Level==0 && fishValue.MaxG==-1 && fishValue.TotalCard==2 && fishValue.TotalNum==3 && fishValue.NewFish && fish.IndexesMatchForKVValidation(selectedFish.AreaID,selectedFish.ID,selectedFish.FishCardID)); - Check(fish.DictionariesMatchForKVValidation(PlayerKVSaveSchema.DecodeFish(rawA,PlayerKVSaveSchema.DecodeModern(rawA,new PlayerKVSchemaDiagnostics()),snapshot,new PlayerKVSchemaDiagnostics()))); - Check(fish.LuckDataDic["InitFishLuck"]==1.25f && fish.LuckDataDic["InitBotLuck"]==2.5f && fish.LuckDataDic["BotCount"]==3 && fish.InitBotLuck==0 && fish.InitFishLuck==0 && fish.BotCount==0); - Check(box.FishingBoxOpenNum[1]==2 && user.KVTapJoyBalance==12 && user.MMTestForKVValidation==15 && user.EAccoutUrl["synthetic"]=="avatar" && - user.KVLinkedAccounts.OrderBy(c=>c).SequenceEqual(new[]{PlayerKVIdentityChannel.hwGoogle,PlayerKVIdentityChannel.Apple,PlayerKVIdentityChannel.hwVkid}.OrderBy(c=>c))); - for(int kind=0;kind<4;kind++) {var buff=buffs.BuffForKVValidation(kind,kind==1 ? 0 : 7);Check(buff.SortID==1 && buff.sourceID==2 && buff.buffID==3 && !buff.isEnd && buff.buffEndTime==snapshot.NowUtc.AddDays(1) && !buff.isNew && buff.addDown==0);} - Check(small.BombGameCount==13 && small.FishHuntGameCount==14 && small.IsOpponentEmptyForKVValidation); - var achievement=achievements.FindForKVValidation((cfg.ConditionType)Enum.GetValues(typeof(cfg.ConditionType)).GetValue(0)); - Check(achievement.Id==1 && achievement.Target==2 && achievement.day==3); - Check(guide.GuideSaveDataDic["A"].groupName=="A" && guide.GuideSaveDataDic["A"].guideSubIndex==3 && guide.GuideSaveDataDic["A"].isFinish && !guide.GuideSaveDataDic["B"].isFinish && guide.GuideSaveDataDic["B"].guideSubIndex==4); - Check(trigger.FixedForKVValidation(7).id==8 && trigger.FixedForKVValidation(7).endTime==snapshot.NowUtc.AddDays(1).ToString("O",CultureInfo.InvariantCulture)); - Check(pinataTarget.EventID==7 && pinataTarget.PinataMainID==8 && pinataTarget.PurchasedCount==9); - Check(player.SnapshotForKVValidation().Season==9 && small.HeistGameCount==12 && !fish.EmptyForKVValidation && shop.SnapshotForKVValidation().Voucher==6); - Check(eventBase.SnapshotForKVValidation().PvpToken==7 && !buffs.IsEmptyForKVValidation && camp.SnapshotForKVValidation().IsFix && !achievements.IsEmptyForKVValidation); - Check(box.FishingBoxOpenNum.Count==1 && guide.GuideSaveDataDic.Count==2 && battle.BattlePassRecord.ID==1 && sign.monthlySignEvent.index==4 && !trigger.IsEmptyForKVValidation); - Check(club.SnapshotForKVValidation().DonateCount==7 && challenge.fishingChallengeData!=null && chains.OfferChainsData!=null && disco.OfferDiscoPartyData!=null && partner.GatherData!=null && cube.EventData!=null); - Check(eventPack.SnapshotForKVValidation().PurchaseCount==2 && piggy.KVLoadPresent && bargain.KVLoadPresent && foot.CompleteFootPrintForKVValidation==ulong.MaxValue && shooting.KVLoadPresent); - Check(potion.PotionData!=null && pinball.PinballData!=null && scratch.ScratchTicketData!=null && progress.SnapshotForKVValidation().IsPresent && migration.SnapshotForKVValidation().IsPresent && pinataTarget.PurchasedCount==9 && digging.DataModel!=null); - var oldPartner=partner.PartnerInfoManager; var oldRobot=partner.RobotInvitationSystem; var oldModel=digging.DataModel; var intents=user.KVIntents; - user.CustomId="102"; var b=await user.LoadKVForValidationAsync(Capability(rawB,false)); - Check(b.State==PlayerKVGameLoadState.LoadedForValidation && b.ModuleCount==31 && b.IntentCount==1 && b.Epoch>a.Epoch); - CheckSnapshots(rawB); - Check(player.SnapshotForKVValidation().Season==0 && !player.SnapshotForKVValidation().Appraise && player.SnapshotForKVValidation().NewRods.Count==0 && player.SnapshotForKVValidation().VipScores.Count==0 && player.IsDerivedEmptyForKVValidation && small.IsOpponentEmptyForKVValidation); - Check(fish.EmptyForKVValidation && shop.SnapshotForKVValidation().Daily.Count==0 && shop.SnapshotForKVValidation().Items.Count==0 && shop.SnapshotForKVValidation().Voucher==0); - Check(eventBase.SnapshotForKVValidation().Limited.Count==0 && eventBase.SnapshotForKVValidation().Fixed.Count==0 && eventBase.SnapshotForKVValidation().Target.Count==0 && eventBase.SnapshotForKVValidation().Rank.Count==0 && eventBase.SnapshotForKVValidation().Wheel.Count==0 && eventBase.IsInactiveForKVValidation); - Check(buffs.IsEmptyForKVValidation && !camp.SnapshotForKVValidation().IsFix && camp.SnapshotForKVValidation().Values.Count==0 && achievements.IsEmptyForKVValidation && box.FishingBoxOpenNum.Count==0 && guide.GuideSaveDataDic.Count==0); - Check(battle.BattlePassRecord.ID==0 && battle.BattlePassRecord.NormalRewardGet.Count==0 && battle.BattleTask.dic_dailyTasks.Count==0 && sign.monthlySignEvent==null && trigger.IsEmptyForKVValidation); - var br=battle.BattlePassRecord; var bt=battle.BattleTask; - Check(br.Level==1 && br.Exp==0 && br.BuyVipToastIndex==0 && br.IsUnlockVip==0 && br.InflationRate==0 && br.VipRewardGet.Count==0 && br.LastDropIDs.Count==0 && - bt.dic_weeklyTasks.Count==0 && bt.loginDays.Count==0 && bt.DailyTaskEndTime==default && bt.WeeklyTaskEndTime==default); - Check(club.SnapshotForKVValidation().SignTime==null && club.SnapshotForKVValidation().DonateCount==0 && club.SnapshotForKVValidation().OpenRed); - Check(challenge.fishingChallengeData==null && challenge.IsInactiveForKVValidation && chains.OfferChainsData==null && chains.IsInactiveForKVValidation && disco.OfferDiscoPartyData==null && disco.FreeTime==1 && disco.IsInactiveForKVValidation); - Check(partner.GatherData==null && partner.RuntimeEmptyForKVValidation && !ReferenceEquals(oldPartner,partner.PartnerInfoManager) && !ReferenceEquals(oldRobot,partner.RobotInvitationSystem)); - Check(cube.EventData==null && cube.IsInactiveForKVValidation && eventPack.SnapshotForKVValidation().PurchaseCount==0 && !piggy.KVLoadPresent && !bargain.KVLoadPresent && !shooting.KVLoadPresent && foot.CompleteFootPrintForKVValidation==0); - Check(potion.PotionData==null && potion.IsInactiveForKVValidation && pinball.PinballData==null && pinball.IsInactiveForKVValidation && scratch.ScratchTicketData==null && scratch.IsInactiveForKVValidation); - Check(!progress.SnapshotForKVValidation().IsPresent && !migration.SnapshotForKVValidation().IsPresent && pinataTarget.EventID==0 && pinataTarget.PinataMainID==0 && pinataTarget.PurchasedCount==0 && !ReferenceEquals(oldModel,digging.DataModel)); - Check(user.KVTapJoyBalance==0 && user.MMTestForKVValidation==0 && user.EAccoutUrl.Count==0 && user.KVLinkedAccounts.Count==0 && intents.Discarded && user.KVReceiverCountForValidation==0 && user.KVNotificationCount==2); - Check(auth==2 && gets==2 && forbidden==0 && events.Published==0 && events.Subscriptions==0 && pf.IsUnstartedForKVLoad); - var unauthorized=await server.SendKVForValidationAsync("__kv_validation/unauthorized"); - await user.CloseKVForValidationAsync(); Check(!unauthorized.IsCurrent && !user.KVLoadedForValidation && user.InternalId==0 && borrowed==1 && user.KVIntents==null); - success=true; - } - catch(Exception ex) { errorType=ex.GetType().Name; } - finally - { - try { if(user!=null) await user.CloseKVForValidationAsync(); if(transaction!=null) Check(transaction.Clear()); } - finally - { - isolated.Dispose(); if(shell!=null) UnityEngine.Object.DestroyImmediate(shell); - ValidationContextAccess.Use(originalContainer); ValidationContextAccess.Events=originalEvents; running=false; - restored=ReferenceEquals(originalContainer,asap.core.GContext.container) && ReferenceEquals(originalEvents,ValidationContextAccess.Events); - } - } - return JsonConvert.SerializeObject(new{success=success && restored,caseId="B2-20",assertions,errorType,restored,auth,gets,borrowed,forbidden,eventPublishes=events.Published,eventSubscriptions=events.Subscriptions, - realModules=31,sameObjects=true,fullB220=success && restored,scope="31-real-modules-two-epochs-controlled-transaction"}); - } - static Task RunLoginState() - { - int assertions=0; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Login state assertion failed."); } - var capability=PlayerKVControlledLoadCapability.CreateForValidation(_=>throw new InvalidOperationException("No transport in module test.")); - var user=new AggUserService(capability); - try - { - var identity=new PlayerKVIdentitySnapshot("FF",true,PlayerKVIdentityChannel.hwVkid,new[]{PlayerKVIdentityChannel.hwFacebook}); - var raw=new Dictionary{["EAccoutUrl"]="{\"synthetic\":\"avatar\"}",["hwGoogle"]="1",["Apple"]="1",["TapJoy_Diamond"]="12"}; - var a=PlayerKVSaveSchema.DecodeLogin(raw,identity,new PlayerKVSchemaDiagnostics()); - user.ResetForKVLoad(); user.ReplaceFromKVDecoded(a,1,raw); - Check(user.MMTestForKVValidation==15 && user.KVTapJoyBalance==12 && user.EAccoutUrl["synthetic"]=="avatar"); - Check(user.KVLinkedAccounts.Count==4 && user.KVLinkedAccounts.Contains(PlayerKVIdentityChannel.hwFacebook) && user.KVLinkedAccounts.Contains(PlayerKVIdentityChannel.hwVkid)); - Check(user.KVIntents.Count==2 && user.KVLoadingCopy["MMTest"]=="MMFailParam#15" && user.KVLoadingCopy["hwVkid"]=="1" && !raw.ContainsKey("hwVkid")); - Check(!user.IsLogin && !user.IsAuthorized && user.InternalId==0 && user.ApiPlayerId==null); - var intents=user.KVIntents; var oldLinks=user.KVLinkedAccounts; - user.EAccoutUrl.Clear(); raw.Clear(); - Check(a.AccountUrls.Count==1 && a.Linked.Count==4 && a.Normalizations.Count==2); - var b=PlayerKVSaveSchema.DecodeLogin(new Dictionary(),new PlayerKVIdentitySnapshot(null,false,PlayerKVIdentityChannel.none,Array.Empty()),new PlayerKVSchemaDiagnostics()); - user.ResetForKVLoad(); user.ReplaceFromKVDecoded(b,2,new Dictionary()); - Check(intents.Discarded && intents.DiscardedCount==2 && intents.Count==0); - Check(user.MMTestForKVValidation==0 && user.KVTapJoyBalance==0 && user.EAccoutUrl.Count==0 && user.KVLinkedAccounts.Count==0 && oldLinks.Count==4); - Check(user.KVLoadingCopy.Count==1 && user.KVIntents.Count==1 && user.KVIntents.Epoch==2); - user.ResetForKVLoad(); - Check(user.KVIntents==null && user.KVLoadingCopy==null && user.EAccoutUrl.Count==0 && user.KVLinkedAccounts.Count==0 && user.InternalId==0); - return Task.FromResult(JsonConvert.SerializeObject(new{success=true,caseId="M31",assertions,fullB220=false,sharedContainerTouched=false})); - } - catch(Exception ex) { return Task.FromResult(JsonConvert.SerializeObject(new{success=false,caseId="M31",assertions,errorType=ex.GetType().Name,fullB220=false})); } - finally { user.ResetForKVLoad(); } - } - static Task RunPartner() - { - if(running || asap.core.GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length!=0) - throw new InvalidOperationException("Game context is active."); - running=true; - var originalContainer=asap.core.GContext.container; - var originalAggregator=ValidationContextAccess.Events; - var containerA=new asap.core.Container(); var containerB=new asap.core.Container(); - bool success=false,restored=false; int assertions=0; string errorType=null; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Partner assertion failed."); } - try - { - var directory=System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath,"../../cfgData")); - cfg.Tables Tables(bool change) => new cfg.Tables(name=> - { - var json=SimpleJSON.JSON.Parse(System.IO.File.ReadAllText(System.IO.Path.Combine(directory,name+".json"))); - if(change && name=="tbeventpartnerconfig") json[0]["InvitationCount"][1]=json[0]["InvitationCount"][1].AsInt+1; - return json; - }); - var tablesA=Tables(false); var tablesB=Tables(true); - int capacityA=tablesA.TbEventPartnerConfig.InvitationCount[1],capacityB=tablesB.TbEventPartnerConfig.InvitationCount[1]; - Check(capacityB==capacityA+1); - Check(asap.core.ContainerExtensions.RegisterInstance(containerA,tablesA)); - Check(asap.core.ContainerExtensions.RegisterInstance(containerB,tablesB)); - ValidationContextAccess.Use(containerA); ValidationContextAccess.Events=new asap.core.EventAggregator(); - // Empty containers do not have factories for live identity/friend services. - Check(asap.core.ContainerExtensions.Resolve(containerA)==null && asap.core.ContainerExtensions.Resolve(containerA)==null); - var module=new DataCenter.EventPartnerGatherManager(); - var oldPartner=module.PartnerInfoManager; var oldRobot=module.RobotInvitationSystem; - Check(oldPartner.BuildPartners.Length==capacityA && EventPartnerGather.PartnerInfoManager.BuilderCapacity==capacityA); - var now=new DateTime(2026,9,23,0,0,0,DateTimeKind.Utc); - var sample=new DataCenter.EventPartnerGatherData - { - FirstOpen=false,EventId=18,StartTime=now,EndTime=now.AddDays(1),CurrentPoints=1,CurrentMiningProgress=2, - Token=3,InvitedCount=4,TicketCount=5,CompletedNodesList=new List>{new List{6,7},new List()}, - BuilderPartnerScore=new List<(int,int)>{(8,9)},PartnerBonus=(1.25f,now.AddHours(1)),FreeSpinNum=10, - Bots=new Dictionary{[11]=new EventPartnerData.EventBuildBotInfo - { Id="synthetic-bot",ScorePlayer=12,ScoreBot=13,Grade=14,TargetScore=15,WakeStartTime=now.AddHours(2),WakingSeconds=16 }}, - IsRecvFinalReward=true,UIFinishedPartners=new List{true,false},IsFinished=true,SpinState=DataCenter.ESpinState.Morespin, - InflationRate=2.5f,IsEnableAutoMatch=true,LastAutoMatchTime=now.AddHours(3) + ID = 1, + index = 2, + lastID = 3, + time = "raw" }; - var text=JsonConvert.SerializeObject(sample); - var snapshot=new PlayerKVSchemaSnapshot("local-M18",Array.Empty(),Array.Empty(),new Dictionary(),CultureInfo.InvariantCulture,now,0); - var state=DataCenter.EventPartnerGatherManager.DecodeForKVLoad(new Dictionary{["EventPartnerGatherData"]=text},snapshot,new PlayerKVSchemaDiagnostics()); - Check(state!=null); module.ResetForKVLoad(); module.ReplaceFromKVDecoded(state); - Check(JsonConvert.SerializeObject(module.GatherData)==text && module.GatherData.Bots[11].ActionQueue==null); - Check(module.RuntimeEmptyForKVValidation && !ReferenceEquals(oldPartner,module.PartnerInfoManager) && !ReferenceEquals(oldRobot,module.RobotInvitationSystem)); - module.GatherData.CompletedNodesList[0].Clear(); module.GatherData.BuilderPartnerScore.Clear(); - module.GatherData.Bots[11].ScoreBot=999; module.GatherData.UIFinishedPartners.Clear(); - Check(state.CompletedNodesList[0].Count==2 && state.BuilderPartnerScore.Count==1 && state.Bots[11].ScoreBot==13 && state.UIFinishedPartners.Count==2); - module.ReplaceFromKVDecoded(state); Check(JsonConvert.SerializeObject(module.GatherData)==text); - var partnerA=module.PartnerInfoManager; var robotA=module.RobotInvitationSystem; - partnerA.Cache.RefusedPartnerIds=new List{"synthetic-old"}; - ValidationContextAccess.Use(containerB); ValidationContextAccess.Events=new asap.core.EventAggregator(); - Check(asap.core.ContainerExtensions.Resolve(containerB)==null && asap.core.ContainerExtensions.Resolve(containerB)==null); - var moduleB=new DataCenter.EventPartnerGatherManager(); - Check(partnerA.BuildPartners.Length==capacityA && oldPartner.BuildPartners.Length==capacityA && moduleB.PartnerInfoManager.BuildPartners.Length==capacityB && EventPartnerGather.PartnerInfoManager.BuilderCapacity==capacityB); - Check(oldPartner.ActiveFriendCountThreshold==tablesA.TbEventPartnerConfig.FriendRecommendParam1[0]); - var missing=DataCenter.EventPartnerGatherManager.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics()); - module.ResetForKVLoad(); module.ReplaceFromKVDecoded(missing); - Check(module.GatherData==null && module.RuntimeEmptyForKVValidation); - Check(!ReferenceEquals(partnerA,module.PartnerInfoManager) && !ReferenceEquals(robotA,module.RobotInvitationSystem)); - Check(module.PartnerInfoManager.BuildPartners.Length==capacityB && module.PartnerInfoManager.BuildPartners.All(p=>p==null) && - module.PartnerInfoManager.Cache.ActionQ==null && module.PartnerInfoManager.Cache.RefusedPartnerIds==null && module.PartnerInfoManager.EventBuildInfo==null); - Check(partnerA.Cache.RefusedPartnerIds.Count==1); - module.ReplaceFromKVDecoded(state); Check(JsonConvert.SerializeObject(module.GatherData)==text); - module.ResetForKVLoad(); moduleB.ResetForKVLoad(); - success=true; - } - catch(Exception ex) { errorType=ex.GetType().Name; } - finally - { - try { containerA.Dispose(); containerB.Dispose(); } - finally + Put("ChainPackDataNew", daily); + Put("TurntableAdData", daily); + Put("VIPAdPackData", new { ID = 7, index = 8, day = 9, cdTime = "raw", isOpen = true }); + Put("BuyData", new[] { 1.5, 2.5 }); + raw["AdvertAllCount"] = "{\"-2\":10}"; + raw["DiamondShopRefreshCount"] = "11"; + raw["DiamondShopRefreshTime"] = day; + Put("DiamondShopItemRecords", new Dictionary { [12] = new { ItemID = 13, Discount = .5, hasBought = 1 } }); + raw["BlackFridayCouponDate"] = "2026,9,23,1,2,3,14,15,1"; + Put("LimitedTimeEventDic", new Dictionary { [1] = new { id = 2, duration = 9999999d, startTime = day } }); + Put("FixedTimeEventDic", new Dictionary { [3] = new { id = 4, endTime = end } }); + raw["WheelLevelCount"] = "{\"5\":6}"; + foreach (var key in new[] { - ValidationContextAccess.Use(originalContainer); ValidationContextAccess.Events=originalAggregator; running=false; - restored=ReferenceEquals(asap.core.GContext.container,originalContainer) && ReferenceEquals(ValidationContextAccess.Events,originalAggregator); + "TurntableRoll", + "WheelOperateCount", + "AllWheelOperateCount", + "WheelLevelFreeCount", + "PVPToken" } - } - return Task.FromResult(JsonConvert.SerializeObject(new { success=success && restored,caseId="M18",assertions,errorType,restored,scope="M18-D4-only",fullB220=false })); - } - static Task RunFish() - { - int assertions=0; - int roundingCase=-1,actualRoundBits=0,expectedRoundBits=0; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Fish assertion failed."); } - var module=new GameCore.PlayerFishData(null,null); - try - { - var directory=System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath,"../../cfgData")); - var tables=new cfg.Tables(name=>SimpleJSON.JSON.Parse(System.IO.File.ReadAllText(System.IO.Path.Combine(directory,name+".json")))); - var snapshot=new PlayerKVSchemaSnapshot("local-M03",tables.TbRodData.DataMap.Keys,tables.TbMapData.DataMap.Keys, - new Dictionary(),CultureInfo.InvariantCulture,new DateTime(2026,9,23,0,0,0,DateTimeKind.Utc),tables.TbGlobalConfig.InitWheelTicket, - fish:tables.TbFishData.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVFishConfig(p.Key,p.Value.AreaID,p.Value.Quality,p.Value.FishCardID,p.Value.BaseWeight,p.Value.PointExtraParam,p.Value.WeightRandom)), - cards:tables.TbFishCard.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVFishCardConfig(p.Key,p.Value.MaxLevel,p.Value.CardsRequiredList,p.Value.WeightMagList))); - var config=tables.TbFishData.DataList.First(f=>f.Quality<=5 && snapshot.HasMap(f.AreaID) && snapshot.Card(f.FishCardID)!=null && - snapshot.Card(f.FishCardID).MaxLevel>=1 && snapshot.Card(f.FishCardID).Weights.Count>=1 && snapshot.Card(f.FishCardID).Required.Count>=1); - var raw=new Dictionary { ["Map_5_"+config.AreaID]=JsonConvert.SerializeObject(new Dictionary{[config.ID]="1|99999|0|7|True"}), - ["InitRodAccessoriesData"]="{\"GloveID\":1,\"RodToSkin\":{\"2\":3},\"GloveIds\":[4],\"SkinIds\":[5],\"GloveNewIds\":[6],\"SkinNewIds\":[7]}" }; - foreach(var key in new[] { "RodData","RodLevelData","FishSwimToMap","FishSwimToMapCount","MapProgress","HonorLevelData" }) raw[key]="{\"-1\":7}"; - var state=GameCore.PlayerFishData.DecodeForKVLoad(raw,new Dictionary{["ld"]="1.25|2.5|3"},snapshot,new PlayerKVSchemaDiagnostics()); - Check(state!=null); module.ResetForKVLoad(); module.ReplaceFromKVDecoded(state); - var actual=module.FishForKVValidation(config.AreaID,config.ID); - float limit=config.BaseWeight*config.PointExtraParam*(1+config.WeightRandom); - limit*=1+tables.TbFishCard[config.FishCardID].WeightMagList[0]; limit=UnityEngine.Mathf.Round(limit*100)/100; - Check(actual.Level==1 && actual.MaxG==Math.Min(99999,limit) && actual.TotalCard==Math.Max(0,tables.TbFishCard[config.FishCardID].CardsRequiredList[0]) && actual.TotalNum==7 && actual.NewFish); - Check(module.IndexesMatchForKVValidation(config.AreaID,config.ID,config.FishCardID) && module.DictionariesMatchForKVValidation(state)); - Check(module.InitFishLuck==0 && module.InitBotLuck==0 && module.BotCount==0 && module.LuckDataDic["BotCount"]==3); - var acc=module.rodAccessoriesData; - Check(acc.GloveID==1 && acc.RodToSkin[2]==3 && acc.GloveIds[0]==4 && acc.SkinIds[0]==5 && acc.GloveNewIds[0]==6 && acc.SkinNewIds[0]==7); - actual.TotalNum=999; module.LuckDataDic.Clear(); acc.RodToSkin.Clear(); acc.GloveIds.Clear(); acc.SkinIds.Clear(); acc.GloveNewIds.Clear(); acc.SkinNewIds.Clear(); - Check(state.Fish[config.ID].Number==7 && state.Luck.Count==3 && state.Accessories.RodSkin.Count==1 && state.Accessories.Gloves.Count==1 && - state.Accessories.Skins.Count==1 && state.Accessories.NewGloves.Count==1 && state.Accessories.NewSkins.Count==1); - module.ReplaceFromKVDecoded(state); - Check(!ReferenceEquals(actual,module.FishForKVValidation(config.AreaID,config.ID)) && module.FishForKVValidation(config.AreaID,config.ID).TotalNum==7); - module.IsOpenMap=true; module.IsOpenRod=true; module.IsOpenPiercing=true; module.MapTipforUnlocked=8; module.RodSelectedInPack=9; - module.InitBotLuck=2; module.InitFishLuck=3; module.BotCount=4; - module.ResetForKVLoad(); module.ReplaceFromKVDecoded(GameCore.PlayerFishData.DecodeForKVLoad(new Dictionary(),new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics())); - Check(module.EmptyForKVValidation); - foreach(float n in new[] { 0f,.005f,.015f,.025f,-.005f,-.015f,-.025f,.0049999994f,.0050000004f,123.456f,-123.456f,1000000f,1e20f,1e30f }) + + ) + raw[key] = "7"; + var buff = new { - roundingCase++; - actualRoundBits=BitConverter.ToInt32(BitConverter.GetBytes(PlayerKVSaveSchema.RoundFishWeight(n)),0); - expectedRoundBits=BitConverter.ToInt32(BitConverter.GetBytes(UnityEngine.Mathf.Round(n*100)/100),0); - Check(actualRoundBits==expectedRoundBits); - } - var synthetic=new PlayerKVSchemaSnapshot("M03-min",Array.Empty(),new[]{1},new Dictionary(),CultureInfo.InvariantCulture,snapshot.NowUtc,0, - fish:new Dictionary{[1]=new PlayerKVFishConfig(1,1,5,1,2,1,0)},cards:new Dictionary{[1]=new PlayerKVFishCardConfig(1,1,new[]{10},new[]{0f})}); - var small=GameCore.PlayerFishData.DecodeForKVLoad(new Dictionary{["Map_5_1"]="{\"1\":\"1|0.125|0|1|false\"}"},new Dictionary(),synthetic,new PlayerKVSchemaDiagnostics()); - module.ResetForKVLoad(); module.ReplaceFromKVDecoded(small); - Check(module.FishForKVValidation(1,1).MaxG==.125f && module.IndexesMatchForKVValidation(1,1,1)); - return Task.FromResult(JsonConvert.SerializeObject(new {success=true,caseId="M03",assertions,fullB220=false,sharedContainerTouched=false})); - } - catch(Exception ex) { return Task.FromResult(JsonConvert.SerializeObject(new {success=false,caseId="M03",assertions,errorType=ex.GetType().Name,roundingCase,actualRoundBits,expectedRoundBits,fullB220=false})); } - finally { module.ResetForKVLoad(); } - } - static Task RunPotion() - { - int assertions=0; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Potion assertion failed."); } - var manager=new EventPotionDataManager(); - try - { - var item=new { name="synthetic",index=3,isOver=true,DataType=2,ColorTypeList=new[] { 7,9 },ShelfTypeList=new[] { 0,1 },GridStateList=new[] { 0,5 },FromDisplayAreaIndexList=new[] { 1,2 } }; - var state=EventPotionDataManager.DecodeForKVLoad(new Dictionary { ["epdk"]=JsonConvert.SerializeObject(new { EventID=11,PotionID=11,StageID=11,Stage1TotalLevel=11,Stage2TotalLevel=11,LevelID=11,LevelIndex=11,CorrectNum=11,SubmitNum=11,Token=11,ConsumedToken=11,Rule=11,PreEventID=11,PrePotionID=11,PreStageID=11,PreLevelID=11,Round=11,FirstPlayedEventId=11,IsOver=true,Name="synthetic",InflationRate=1.5f,LevelTargetData=item,LevelDisplayData=item,LevelProcessedList=new[] { item } }) },new PlayerKVSchemaDiagnostics()); - Check(state!=null && state.IsPresent); - manager.ResetForKVLoad(); manager.ReplaceFromKVDecoded(state); - var actual=manager.PotionData; - Check(actual.EventID==state.EventID); - Check(actual.PotionID==state.PotionID); - Check(actual.StageID==state.StageID); - Check(actual.Stage1TotalLevel==state.Stage1TotalLevel); - Check(actual.Stage2TotalLevel==state.Stage2TotalLevel); - Check(actual.LevelID==state.LevelID); - Check(actual.LevelIndex==state.LevelIndex); - Check(actual.CorrectNum==state.CorrectNum); - Check(actual.SubmitNum==state.SubmitNum); - Check(actual.Token==state.Token); - Check(actual.ConsumedToken==state.ConsumedToken); - Check(actual.Rule==state.Rule); - Check(actual.PreEventID==state.PreEventID); - Check(actual.PrePotionID==state.PrePotionID); - Check(actual.PreStageID==state.PreStageID); - Check(actual.PreLevelID==state.PreLevelID); - Check(actual.Round==state.Round); - Check(actual.FirstPlayedEventId==state.FirstPlayedEventId); - Check(actual.IsOver==state.IsOver); - Check(actual.Name==state.Name); - Check(actual.InflationRate==state.InflationRate); - foreach(var entry in new[] { actual.LevelTargetData,actual.LevelDisplayData,actual.LevelProcessedList[0] }) - { - Check(entry.name=="synthetic" && entry.index==3 && entry.isOver && (int)entry.DataType==2 && - entry.ColorTypeList.SequenceEqual(new[] { 7,9 }) && entry.ShelfTypeList.Select(n=>(int)n).SequenceEqual(new[] { 0,1 }) && - entry.GridStateList.Select(n=>(int)n).SequenceEqual(new[] { 0,5 }) && entry.FromDisplayAreaIndexList.SequenceEqual(new[] { 1,2 })); - entry.ColorTypeList.Clear(); entry.ShelfTypeList.Clear(); entry.GridStateList.Clear(); entry.FromDisplayAreaIndexList.Clear(); - } - Check(state.LevelTargetData.Colors.Count==2 && state.LevelDisplayData.Shelves.Count==2 && state.LevelProcessedList[0].Grids.Count==2); - manager.ReplaceFromKVDecoded(state); - Check(!ReferenceEquals(actual,manager.PotionData) && manager.PotionData.LevelTargetData.ColorTypeList.Count==2 && - !ReferenceEquals(manager.PotionData.LevelTargetData,manager.PotionData.LevelDisplayData)); - manager.ScrollerDataList.Add(actual.LevelTargetData); - manager.ResetForKVLoad(); manager.ReplaceFromKVDecoded(EventPotionDataManager.DecodeForKVLoad(new Dictionary(),new PlayerKVSchemaDiagnostics())); - Check(manager.PotionData==null && manager.IsInactiveForKVValidation); - return Task.FromResult(JsonConvert.SerializeObject(new { success=true,caseId="M25",assertions,fullB220=false,sharedContainerTouched=false })); - } - catch(Exception ex) { return Task.FromResult(JsonConvert.SerializeObject(new { success=false,caseId="M25",assertions,errorType=ex.GetType().Name,fullB220=false })); } - finally { manager.ResetForKVLoad(); } - } - static Task RunBattlePass() - { - int assertions=0; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Battle pass assertion failed."); } - var manager=new BattlePassData(null); - var snapshot=new PlayerKVSchemaSnapshot("M11",Array.Empty(),Array.Empty(),new Dictionary(), - CultureInfo.InvariantCulture,new DateTime(2026,9,23),0); - try - { - var raw=new Dictionary { - ["BattlePassRecord"]=JsonConvert.SerializeObject(new { ID=1,Level=2,Exp=3,BuyVipToastIndex=4,IsUnlockVip=1, - NormalRewardGet=new[] { 5,6 },VipRewardGet=new[] { 7,8 },LastDropIDs=new[] { 99 },InflationRate=2.5f }), - ["BattleTask"]=JsonConvert.SerializeObject(new { dic_dailyTasks=new Dictionary { [9]=10 }, - dic_weeklyTasks=new Dictionary { [11]=12 },loginDays=new[] { 13,14 },DailyTaskEndTime=new DateTime(15),WeeklyTaskEndTime=new DateTime(16) }) + SortID = 1, + sourceID = 2, + buffID = 3, + isEnd = false, + buffEndTime = end }; - var a=BattlePassData.DecodeForKVLoad(raw,snapshot,new PlayerKVSchemaDiagnostics()); - manager.ResetForKVLoad(); manager.ReplaceFromKVDecoded(a); - var r=manager.BattlePassRecord; var t=manager.BattleTask; - Check(r.ID==1 && r.Level==2 && r.Exp==3 && r.BuyVipToastIndex==4 && r.IsUnlockVip==1 && - r.NormalRewardGet.SequenceEqual(new[] { 5,6 }) && r.VipRewardGet.SequenceEqual(new[] { 7,8 }) && - r.LastDropIDs.SequenceEqual(new[] { 99 }) && r.InflationRate==2.5f); - Check(t.dic_dailyTasks[9]==10 && t.dic_weeklyTasks[11]==12 && t.loginDays.SequenceEqual(new[] { 13,14 }) && - t.DailyTaskEndTime.Ticks==15 && t.WeeklyTaskEndTime.Ticks==16); - r.NormalRewardGet.Clear(); r.VipRewardGet.Clear(); r.LastDropIDs.Clear(); t.dic_dailyTasks.Clear(); t.dic_weeklyTasks.Clear(); t.loginDays.Clear(); - Check(a.Record.Normal.Count==2 && a.Record.Vip.Count==2 && a.Record.LastDrops.Count==1 && a.Task.Daily.Count==1 && a.Task.Weekly.Count==1 && a.Task.LoginDays.Count==2); - manager.ResetForKVLoad(); manager.ReplaceFromKVDecoded(BattlePassData.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics())); - r=manager.BattlePassRecord; t=manager.BattleTask; - Check(r.ID==0 && r.Level==1 && r.Exp==0 && r.BuyVipToastIndex==0 && r.IsUnlockVip==0 && r.InflationRate==0 && - r.NormalRewardGet.Count==0 && r.VipRewardGet.Count==0 && r.LastDropIDs.Count==0); - Check(t.dic_dailyTasks.Count==0 && t.dic_weeklyTasks.Count==0 && t.loginDays.Count==0 && t.DailyTaskEndTime==default && t.WeeklyTaskEndTime==default); - return Task.FromResult(JsonConvert.SerializeObject(new { success=true,caseId="M11",assertions,fullB220=false,sharedContainerTouched=false })); - } - catch(Exception ex) { return Task.FromResult(JsonConvert.SerializeObject(new { success=false,caseId="M11",assertions,errorType=ex.GetType().Name,fullB220=false })); } - finally { manager.ResetForKVLoad(); } - } - static Task RunCube() - { - int assertions=0; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Cube assertion failed."); } - var manager=new EventCubeMeltManager(); - var snapshot=new PlayerKVSchemaSnapshot("M19",Array.Empty(),Array.Empty(),new Dictionary(), - CultureInfo.InvariantCulture,new DateTime(2026,9,23),0); - try - { - const string json="{\"TicketCount\":1,\"FirstOpen\":true,\"IsFinished\":true,\"EventId\":2,\"IsInGuide\":true,\"StartTime\":\"2026-09-22T00:00:00.0000000Z\",\"EndTime\":\"2026-09-24T00:00:00.0000000Z\",\"CurrentStagetId\":3,\"CollectItems\":[{\"ItemId\":4,\"Count\":5,\"MaxCount\":6,\"ItemTrueId\":7}],\"BoardData\":[8,9],\"BoardViewSize\":{\"x\":10,\"y\":11},\"CollectRewardsId\":[12,13],\"IsFinalRewardGet\":true,\"PieceDatas\":[[14,15],[16,17]],\"Cycle\":18,\"InflationRate\":1.5}"; - var a=EventCubeMeltManager.DecodeForKVLoad(new Dictionary { ["EventCubeMeltData"]=json },snapshot,new PlayerKVSchemaDiagnostics()); - manager.ResetForKVLoad(); manager.ReplaceFromKVDecoded(a); - var actual=manager.EventData; - Check(actual.TicketCount==1 && actual.FirstOpen && actual.IsFinished && actual.EventId==2 && actual.IsInGuide && - actual.StartTime==a.StartTime && actual.EndTime==a.EndTime && actual.CurrentStagetId==3); - Check(actual.CollectItems[0].ItemId==4 && actual.CollectItems[0].Count==5 && actual.CollectItems[0].MaxCount==6 && - actual.CollectItems[0].ItemTrueId==7 && actual.BoardData.SequenceEqual(new[] { 8,9 })); - Check(actual.BoardViewSize.x==10 && actual.BoardViewSize.y==11 && actual.CollectRewardsId.SequenceEqual(new[] { 12,13 }) && - actual.IsFinalRewardGet && actual.Cycle==18 && actual.InflationRate==1.5f); - Check(actual.PieceDatas[0].SequenceEqual(new[] { 14,15 }) && actual.PieceDatas[1].SequenceEqual(new[] { 16,17 })); - actual.PieceDatas[0].Clear(); actual.BoardData.Clear(); actual.CollectItems[0].Count=99; actual.CollectRewardsId.Clear(); - Check(a.PieceDatas[0].Count==2 && a.BoardData.Count==2 && a.CollectItems[0].Count==5 && a.CollectRewardsId.Count==2); - manager.ReplaceFromKVDecoded(a); - Check(!ReferenceEquals(actual,manager.EventData) && manager.EventData.PieceDatas[0].Count==2 && manager.EventData.CollectItems[0].Count==5); - manager.PrevPieceDatas=new List> { new List { 99 } }; manager.CurrentPieceDatas=new List> { new List { 88 } }; - manager.ResetForKVLoad(); manager.ReplaceFromKVDecoded(EventCubeMeltManager.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics())); - Check(manager.EventData==null && manager.IsInactiveForKVValidation); - return Task.FromResult(JsonConvert.SerializeObject(new { success=true,caseId="M19",assertions,fullB220=false,sharedContainerTouched=false })); - } - catch(Exception ex) { return Task.FromResult(JsonConvert.SerializeObject(new { success=false,caseId="M19",assertions,errorType=ex.GetType().Name,fullB220=false })); } - finally { manager.ResetForKVLoad(); } - } - static Task RunDigging() - { - int assertions=0; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Digging assertion failed."); } - var manager=new Script.RuntimeScript.DiggingGameManager(); - try - { - var state=Script.RuntimeScript.DiggingGameManager.DecodeForKVLoad(); - manager.ResetForKVLoad(); manager.ReplaceFromKVDecoded(state); - var a=manager.DataModel; - a.InflationRate=7; a.NewAddDigCount=9; - manager.ResetForKVLoad(); manager.ReplaceFromKVDecoded(state); - Check(manager.DataModel!=null && !ReferenceEquals(a,manager.DataModel) && manager.DataModel.InflationRate==0 && manager.DataModel.NewAddDigCount==0); - Check(manager.CanResetForKVLoad && manager.BroadLogic==null && manager.GameState==Script.RuntimeScript.SandDigGameState.Normal); - var active=manager.DataModel; active.AllClamps.Add(1); - Check(!manager.CanResetForKVLoad); - bool rejected=false; - try { manager.ResetForKVLoad(); } catch(InvalidOperationException) { rejected=true; } - Check(rejected && ReferenceEquals(manager.DataModel,active) && active.AllClamps.Count==1); - active.AllClamps.Clear(); - return Task.FromResult(JsonConvert.SerializeObject(new { success=true,caseId="M30",assertions,fullB220=false,sharedContainerTouched=false })); - } - catch(Exception ex) { return Task.FromResult(JsonConvert.SerializeObject(new { success=false,caseId="M30",assertions,errorType=ex.GetType().Name,fullB220=false })); } - finally { if(manager.CanResetForKVLoad) manager.ResetForKVLoad(); } - } - static Task RunActivities() - { - int assertions=0; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Activity assertion failed."); } - var snapshot=new PlayerKVSchemaSnapshot("M15-M26-M27",Array.Empty(),Array.Empty(),new Dictionary(), - CultureInfo.InvariantCulture,new DateTime(2026,9,23),0); - var challenge=new FishingChallengeManager(); var pinball=new EventPinballDataManager(); var scratch=new EventScratchTicketDataManager(); - try - { - var nullErrors = new PlayerKVSchemaDiagnostics(); - var nullState = FishingChallengeManager.DecodeForKVLoad(new Dictionary { ["FishingChallengeData"] = " \r\n\tnull " }, snapshot, nullErrors); - Check(nullState != null && nullState.IsPresent && nullState.IsExplicitNull && nullErrors.TotalErrors == 0); - challenge.ReplaceFromKVDecoded(nullState); - Check(challenge.fishingChallengeData == null && challenge.IsInactiveForKVValidation); - Check(challenge.ChallengeState() == 0 && !challenge.ShouldOpen()); - Check(JsonConvert.SerializeObject(challenge.fishingChallengeData) == "null"); - + Put("BuffDataList", new Dictionary { [7] = buff }); + Put("TargetBuffDataList", new[] { buff }); + Put("FishDailyBuff", buff); + Put("GlobalBuffDataList", new Dictionary { [7] = buff }); + raw["IsFix"] = "true"; + raw["IsOpenSkyscraper"] = "1"; + raw["CampDataDic"] = "{\"CampId\":205}"; + raw["GuideSaveDataNew"] = "A|3|1;B|4|0"; + Put("BattlePassRecord", new { ID = 1, Level = 2, Exp = 3, BuyVipToastIndex = 4, IsUnlockVip = 1, NormalRewardGet = new[] { 5, 6 }, VipRewardGet = new[] { 7, 8 }, LastDropIDs = new[] { 9 }, InflationRate = 2.5f }); + Put("BattleTask", new { dic_dailyTasks = new Dictionary { [9] = 10 }, dic_weeklyTasks = new Dictionary { [11] = 12 }, loginDays = new[] { 13, 14 }, DailyTaskEndTime = now, WeeklyTaskEndTime = now.AddDays(1) }); + Put("MonthlySignEvent", new { index = 4, dailySignEvent = daily }); + Put("TriggerPackDataList", new[] { new { ID = 1, index = 2, lastID = 3, vipLevel = 4, mapID = 5, time = "raw" } }); + Put("GiftVIPDData", new Dictionary { ["A"] = new { oldVipLevel = 1, curVipLevel = 2, timer = 3 } }); + Put("FixedTimeShopDic", new Dictionary { [7] = new { id = 8, endTime = end } }); + raw["ClubSignin"] = day; + raw["IsOpenClubRed"] = "1"; + Put("LureDonateData", new { DonateCountTime = day, ClubLureDonateCount = 7, ClubLureRequestCDEnd = end }); + Put("FishingChallengeData", new { FirstOpen = true, EventId = 11, RankTierLevel = 11, Finished = 11, RedirectID = 11, Score = 11, ProcessedScore = 11, step = 11, uiStep = 11, index = 11, StartTime = day, EndTime = end, eliminateNumber = new[] { 7, 9 }, robotAccountList = new[] { 7, 9 }, InflationRate = 1.5f }); + var offer = new { - var raw=new Dictionary { ["FishingChallengeData"]=JsonConvert.SerializeObject(new { FirstOpen=true,EventId=11,RankTierLevel=11,Finished=11,RedirectID=11,Score=11,ProcessedScore=11,step=11,uiStep=11,index=11,StartTime="2026-09-23T00:00:00.0000000Z",EndTime="2026-09-23T00:00:00.0000000Z",eliminateNumber=new[] { 7,9 },robotAccountList=new[] { 7,9 },InflationRate=1.5f }) }; - var state=FishingChallengeManager.DecodeForKVLoad(raw,snapshot,new PlayerKVSchemaDiagnostics()); - Check(state!=null && state.IsPresent); - challenge.ResetForKVLoad(); challenge.ReplaceFromKVDecoded(state); - var actual=challenge.fishingChallengeData; - Check(actual.FirstOpen==state.FirstOpen); - Check(actual.EventId==state.EventId); - Check(actual.RankTierLevel==state.RankTierLevel); - Check(actual.Finished==state.Finished); - Check(actual.RedirectID==state.RedirectID); - Check(actual.Score==state.Score); - Check(actual.ProcessedScore==state.ProcessedScore); - Check(actual.step==state.step); - Check(actual.uiStep==state.uiStep); - Check(actual.index==state.index); - Check(actual.StartTime==state.StartTime); - Check(actual.EndTime==state.EndTime); - Check(actual.eliminateNumber.SequenceEqual(state.eliminateNumber)); - Check(actual.robotAccountList.SequenceEqual(state.robotAccountList)); - Check(actual.InflationRate==state.InflationRate); - challenge.ReplaceFromKVDecoded(state); - Check(!ReferenceEquals(actual,challenge.fishingChallengeData)); - actual.eliminateNumber.Clear(); - Check(state.eliminateNumber.Count==2 && challenge.fishingChallengeData.eliminateNumber.Count==2); - actual.robotAccountList.Clear(); - Check(state.robotAccountList.Count==2 && challenge.fishingChallengeData.robotAccountList.Count==2); - challenge.ResetForKVLoad(); challenge.ReplaceFromKVDecoded(nullState); - Check(challenge.fishingChallengeData == null && challenge.IsInactiveForKVValidation); - Check(challenge.ChallengeState() == 0 && !challenge.ShouldOpen()); - Check(JsonConvert.SerializeObject(challenge.fishingChallengeData) == "null"); - challenge.ReplaceFromKVDecoded(state); - Check(challenge.fishingChallengeData != null && !state.IsExplicitNull); - challenge.ResetForKVLoad(); challenge.ReplaceFromKVDecoded(FishingChallengeManager.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics())); - Check(challenge.fishingChallengeData==null && challenge.IsInactiveForKVValidation); - } - - { - var raw=new Dictionary { ["epbdk"]=JsonConvert.SerializeObject(new { EventID=11,PinballMainID=11,SpinPoint=11,Scores=11,Multiple=11,Token=11,ConsumedToken=11,RewardIndex=11,Force=1.5f,LuckyValue=1.5f,InflationRate=1.5f }) }; - var state=EventPinballDataManager.DecodeForKVLoad(raw,snapshot,new PlayerKVSchemaDiagnostics()); - Check(state!=null && state.IsPresent); - pinball.ResetForKVLoad(); pinball.ReplaceFromKVDecoded(state); - var actual=pinball.PinballData; - Check(actual.EventID==state.EventID); - Check(actual.PinballMainID==state.PinballMainID); - Check(actual.SpinPoint==state.SpinPoint); - Check(actual.Scores==state.Scores); - Check(actual.Multiple==state.Multiple); - Check(actual.Token==state.Token); - Check(actual.ConsumedToken==state.ConsumedToken); - Check(actual.RewardIndex==state.RewardIndex); - Check(actual.Force==state.Force); - Check(actual.LuckyValue==state.LuckyValue); - Check(actual.InflationRate==state.InflationRate); - pinball.ReplaceFromKVDecoded(state); - Check(!ReferenceEquals(actual,pinball.PinballData)); - pinball.ResetForKVLoad(); pinball.ReplaceFromKVDecoded(EventPinballDataManager.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics())); - Check(pinball.PinballData==null && pinball.IsInactiveForKVValidation); - } - - { - var raw=new Dictionary { ["estdk"]=JsonConvert.SerializeObject(new { EventID=11,ScratchMainID=11,ChainPackID=11,Token=11,ConsumedToken=11,RewardTaskConsumedToken=11,EventScratchRewardTaskID=11,EventScratchCardID=11,TotalConsumedToken=11,ChainPackProgress=11,magIndex=11,IsOver=true,LuckyValue=1.5f,InflationRate=1.5f,StampRewardList=new[] { 7,9 },StampRewardDict=new Dictionary { [7]=new { EventScratchCardID=8,Count=9 } } }) }; - var state=EventScratchTicketDataManager.DecodeForKVLoad(raw,snapshot,new PlayerKVSchemaDiagnostics()); - Check(state!=null && state.IsPresent); - scratch.ResetForKVLoad(); scratch.ReplaceFromKVDecoded(state); - var actual=scratch.ScratchTicketData; - Check(actual.EventID==state.EventID); - Check(actual.ScratchMainID==state.ScratchMainID); - Check(actual.ChainPackID==state.ChainPackID); - Check(actual.Token==state.Token); - Check(actual.ConsumedToken==state.ConsumedToken); - Check(actual.RewardTaskConsumedToken==state.RewardTaskConsumedToken); - Check(actual.EventScratchRewardTaskID==state.EventScratchRewardTaskID); - Check(actual.EventScratchCardID==state.EventScratchCardID); - Check(actual.TotalConsumedToken==state.TotalConsumedToken); - Check(actual.ChainPackProgress==state.ChainPackProgress); - Check(actual.magIndex==state.magIndex); - Check(actual.IsOver==state.IsOver); - Check(actual.LuckyValue==state.LuckyValue); - Check(actual.InflationRate==state.InflationRate); - Check(actual.StampRewardList.SequenceEqual(state.StampRewardList)); - Check(actual.StampRewardDict[7].EventScratchCardID==state.StampRewardDict[7].EventScratchCardID && actual.StampRewardDict[7].Count==state.StampRewardDict[7].Count); - scratch.ReplaceFromKVDecoded(state); - Check(!ReferenceEquals(actual,scratch.ScratchTicketData)); - actual.StampRewardList.Clear(); - Check(state.StampRewardList.Count==2 && scratch.ScratchTicketData.StampRewardList.Count==2); - actual.StampRewardDict[7].Count=99; - Check(state.StampRewardDict[7].Count==9 && scratch.ScratchTicketData.StampRewardDict[7].Count==9); - scratch.ResetForKVLoad(); scratch.ReplaceFromKVDecoded(EventScratchTicketDataManager.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics())); - Check(scratch.ScratchTicketData==null && scratch.IsInactiveForKVValidation); - } - - return Task.FromResult(JsonConvert.SerializeObject(new { success=true,caseId="M15-M26-M27",assertions,fullB220=false,sharedContainerTouched=false })); - } - catch(Exception ex) { return Task.FromResult(JsonConvert.SerializeObject(new { success=false,caseId="M15-M26-M27",assertions,errorType=ex.GetType().Name,fullB220=false })); } - finally { challenge.ResetForKVLoad(); pinball.ResetForKVLoad(); scratch.ResetForKVLoad(); } - } - static Task RunBuffTrigger() - { - int assertions=0; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Buff/trigger assertion failed."); } - var buffs=new BuffDataCenter(null); var triggers=new GameCore.TriggerPackData(null); - var snapshot=new PlayerKVSchemaSnapshot("M06-M13",Array.Empty(),Array.Empty(),new Dictionary(), - CultureInfo.InvariantCulture,new DateTime(2026,9,23),0); - try - { - const string value="{\"SortID\":1,\"sourceID\":2,\"buffID\":3,\"isEnd\":false,\"buffEndTime\":\"2026-09-24T00:00:00.0000000Z\"}"; - var state=BuffDataCenter.DecodeForKVLoad(new Dictionary { - ["BuffDataList"]="{\"7\":"+value+"}",["TargetBuffDataList"]="["+value+"]", - ["FishDailyBuff"]=value,["GlobalBuffDataList"]="{\"7\":"+value+"}" - },snapshot,new PlayerKVSchemaDiagnostics()); - buffs.ResetForKVLoad(); buffs.ReplaceFromKVDecoded(state); - for(int kind=0;kind<4;kind++) - { - var actual=buffs.BuffForKVValidation(kind,kind==1 ? 0 : 7); - Check(actual.SortID==1 && actual.sourceID==2 && actual.buffID==3 && !actual.isEnd && - actual.buffEndTime==state.Daily.buffEndTime && !actual.isNew && actual.addDown==0); - actual.buffID=99; actual.isNew=true; actual.addDown=9; - } - Check(state.Map[7].buffID==3 && state.Target[0].buffID==3 && state.Daily.buffID==3 && state.Global[7].buffID==3); - buffs.showFishBuffIds.Add(new FishBuffTimeData { buffID=99 }); - buffs.ResetForKVLoad(); buffs.ReplaceFromKVDecoded(BuffDataCenter.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics())); - Check(buffs.IsEmptyForKVValidation); - var raw=new Dictionary { - ["TriggerPackDataList"]="[{\"ID\":1,\"index\":2,\"lastID\":3,\"vipLevel\":4,\"mapID\":5,\"time\":\"2026-09-24\"}]", - ["GiftVIPDData"]="{\"A\":{\"oldVipLevel\":1,\"curVipLevel\":2,\"timer\":3}}", - ["FixedTimeShopDic"]="{\"7\":{\"id\":8,\"endTime\":\"2026-09-24\"}}" + FirstOpen = true, + EventId = 7, + StartTime = day, + EndTime = end, + ItemId = -1, + LotteryNum = 5, + Items = new[] + { + new + { + Id = 1, + Item = 2, + Number = 3, + Status = 2 + } + }, + RewardList = new[] + { + 8, + 9 + }, + Finished = true, + ChestReward = 10 }; - var packs=GameCore.TriggerPackData.DecodeForKVLoad(raw,new PlayerKVSchemaDiagnostics()); - triggers.ResetForKVLoad(); triggers.ReplaceFromKVDecoded(packs); - var pack=triggers.triggerPackList[0]; var gift=triggers.giftVIPDData["A"]; var fixedTime=triggers.FixedForKVValidation(7); - Check(pack.ID==1 && pack.index==2 && pack.lastID==3 && pack.vipLevel==4 && pack.mapID==5 && pack.time=="2026-09-24"); - Check(gift.oldVipLevel==1 && gift.curVipLevel==2 && gift.timer==3 && fixedTime.id==8 && fixedTime.endTime=="2026-09-24"); - pack.ID=99; gift.timer=99; fixedTime.id=99; - Check(packs.Packs[0].ID==1 && packs.Gifts["A"].timer==3 && packs.Fixed[7].id==8); - triggers.ResetForKVLoad(); triggers.ReplaceFromKVDecoded(GameCore.TriggerPackData.DecodeForKVLoad(new Dictionary(),new PlayerKVSchemaDiagnostics())); - Check(triggers.IsEmptyForKVValidation); - return Task.FromResult(JsonConvert.SerializeObject(new { success=true,caseId="M06-M13",assertions,fullB220=false,sharedContainerTouched=false })); - } - catch(Exception ex) { return Task.FromResult(JsonConvert.SerializeObject(new { success=false,caseId="M06-M13",assertions,errorType=ex.GetType().Name,fullB220=false })); } - finally { buffs.ResetForKVLoad(); triggers.ResetForKVLoad(); } - } - static Task RunOffers() - { - int assertions=0; - void Check(bool value) { assertions++; if(!value) throw new InvalidOperationException("Offer assertion failed."); } - var chains=new DataCenter.OfferChainsChestManager(); - var disco=new DataCenter.OfferDiscoPartyManager(); - var snapshot=new PlayerKVSchemaSnapshot("M16-M17",Array.Empty(),Array.Empty(),new Dictionary(), - CultureInfo.InvariantCulture,new DateTime(2026,9,23),0); - try - { - var text=JsonConvert.SerializeObject(new { FirstOpen=true,EventId=7,StartTime="2026-09-22T00:00:00.0000000Z",EndTime="2026-09-24T00:00:00.0000000Z", - ItemId=-1,LotteryNum=5,Items=new[] { new { Id=1,Item=2,Number=3,Status=2 } },RewardList=new[] { 8,9 },Finished=true,ChestReward=10 }); - + Put("OfferChainsChestData", offer); + Put("OfferDiscoPartyManager", offer); + Put("EventPartnerGatherData", new { FirstOpen = false, EventId = 18, StartTime = day, EndTime = end, CurrentPoints = 1, CurrentMiningProgress = 2, Token = 3, InvitedCount = 4, TicketCount = 5, CompletedNodesList = new[] { new[] { 6, 7 } }, BuilderPartnerScore = new[] { new { Item1 = 8, Item2 = 9 } }, PartnerBonus = new { Item1 = 1.25f, Item2 = end }, FreeSpinNum = 10, Bots = new Dictionary { [11] = new { Id = "synthetic-bot", ScorePlayer = 12, ScoreBot = 13, Grade = 14, TargetScore = 15, WakeStartTime = day, WakingSeconds = 16 } }, IsRecvFinalReward = true, UIFinishedPartners = new[] { true, false }, IsFinished = true, SpinState = 2, InflationRate = 2.5f, IsEnableAutoMatch = true, LastAutoMatchTime = day }); + Put("EventCubeMeltData", new { TicketCount = 1, FirstOpen = true, IsFinished = true, EventId = 2, IsInGuide = true, StartTime = day, EndTime = end, CurrentStagetId = 3, CollectItems = new[] { new { ItemId = 4, Count = 5, MaxCount = 6, ItemTrueId = 7 } }, BoardData = new[] { 8, 9 }, BoardViewSize = new { x = 10, y = 11 }, CollectRewardsId = new[] { 12, 13 }, IsFinalRewardGet = true, PieceDatas = new[] { new[] { 14, 15 }, new[] { 16, 17 } }, Cycle = 18, InflationRate = 1.5f }); + Put("EventPackData", new { currentEventID = -1, purchaseCount = 2, VIPLvlWhenEventActivate = 3, redirectID = 4 }); + Put("PiggyBankPackData", new { currentEventID = 11, purchaseCount = 11, VIPLvlWhenEventActivate = 11, savingProgress = 11, redirectID = 0, doNeedTrigger = true, isTriggered = true, inflation = 1.5f }); + Put("GeneralEventPackData", new { currentEventID = 11, redirectID = tables.TbEventPackManager.DataList.First(p => p.PackType == 3).ID, VIPLvlWhenEventActivate = 11, purchaseCount = 11, savingProgress = 11, discountLvl = 11, visualProgress = 11, visualDiscountLvl = 11, rodID = 11, lastPackIDBought = 11, packID = 11, doNeedTrigger = true, isTriggered = true, inflation = 1.5f, selections = new[] { 7, 9 } }); + raw["FootPrint"] = "18446744073709551615"; + Put("EventShootingRangeData", new { EventId = 11, CycleId = 11, RedirectId = 11, AmmoCount = 11, CurrentStageIdx = 11, ChainProgress = 11, RewardFlag = long.MaxValue, TargetFlag = long.MinValue, HasBeenOpened = true, Inflation = 1.5f }); + var item = new { - var state=DataCenter.OfferChainsChestManager.DecodeForKVLoad(new Dictionary { ["OfferChainsChestData"]=text },snapshot,new PlayerKVSchemaDiagnostics()); - chains.ResetForKVLoad(); chains.ReplaceFromKVDecoded(state); - var actual=chains.OfferChainsData; - Check(actual.FirstOpen && actual.EventId==7 && actual.StartTime==state.StartTime && actual.EndTime==state.EndTime && - actual.ItemId == -1 && actual.LotteryNum==5); - Check(actual.Items.Count==1 && actual.Items[0].Id==1 && actual.Items[0].Item==2 && actual.Items[0].Number==3 && - (int)actual.Items[0].Status==2 && actual.RewardList.SequenceEqual(new[] { 8,9 })); - Check(actual.Finished && actual.ChestReward==10); - actual.Items[0].Number=99; actual.RewardList.Clear(); - Check(state.Items[0].Number==3 && state.RewardList.Count==2); - chains.ReplaceFromKVDecoded(state); - Check(!ReferenceEquals(actual,chains.OfferChainsData) && !ReferenceEquals(actual.Items[0],chains.OfferChainsData.Items[0]) && - chains.OfferChainsData.Items[0].Number==3); - chains.ValidIds.Add(7); - var missing=DataCenter.OfferChainsChestManager.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics()); - chains.ResetForKVLoad(); chains.ReplaceFromKVDecoded(missing); - Check(chains.OfferChainsData==null && chains.ValidIds.Count==0 && chains.IsInactiveForKVValidation); - Check(chains.OfferChainsChestMain==null && chains.OfferChainsChestRewards==null); - } - - { - var state=DataCenter.OfferDiscoPartyManager.DecodeForKVLoad(new Dictionary { ["OfferDiscoPartyManager"]=text },snapshot,new PlayerKVSchemaDiagnostics()); - disco.ResetForKVLoad(); disco.ReplaceFromKVDecoded(state); - var actual=disco.OfferDiscoPartyData; - Check(actual.FirstOpen && actual.EventId==7 && actual.StartTime==state.StartTime && actual.EndTime==state.EndTime && - actual.ItemId == -1 && actual.LotteryNum==5); - Check(actual.Items.Count==1 && actual.Items[0].Id==1 && actual.Items[0].Item==2 && actual.Items[0].Number==3 && - (int)actual.Items[0].Status==2 && actual.RewardList.SequenceEqual(new[] { 8,9 })); - - actual.Items[0].Number=99; actual.RewardList.Clear(); - Check(state.Items[0].Number==3 && state.RewardList.Count==2); - disco.ReplaceFromKVDecoded(state); - Check(!ReferenceEquals(actual,disco.OfferDiscoPartyData) && !ReferenceEquals(actual.Items[0],disco.OfferDiscoPartyData.Items[0]) && - disco.OfferDiscoPartyData.Items[0].Number==3); - disco.ValidIds.Add(7); disco.FreeTime=99; - var missing=DataCenter.OfferDiscoPartyManager.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics()); - disco.ResetForKVLoad(); disco.ReplaceFromKVDecoded(missing); - Check(disco.OfferDiscoPartyData==null && disco.ValidIds.Count==0 && disco.IsInactiveForKVValidation); - Check(disco.OfferDiscoParty==null && disco.OfferDiscoPartyRewards==null && disco.FreeTime==1); - } - - return Task.FromResult(JsonConvert.SerializeObject(new { success=true,caseId="M16-M17",assertions,fullB220=false,sharedContainerTouched=false })); + name = "synthetic", + index = 3, + isOver = true, + DataType = 2, + ColorTypeList = new[] + { + 7, + 9 + }, + ShelfTypeList = new[] + { + 0, + 1 + }, + GridStateList = new[] + { + 0, + 5 + }, + FromDisplayAreaIndexList = new[] + { + 1, + 2 + } + }; + Put("epdk", new { EventID = 11, PotionID = 11, StageID = 11, Stage1TotalLevel = 11, Stage2TotalLevel = 11, LevelID = 11, LevelIndex = 11, CorrectNum = 11, SubmitNum = 11, Token = 11, ConsumedToken = 11, Rule = 11, PreEventID = 11, PrePotionID = 11, PreStageID = 11, PreLevelID = 11, Round = 11, FirstPlayedEventId = 11, IsOver = true, Name = "synthetic", InflationRate = 1.5f, LevelTargetData = item, LevelDisplayData = item, LevelProcessedList = new[] { item } }); + Put("epbdk", new { EventID = 11, PinballMainID = 11, SpinPoint = 11, Scores = 11, Multiple = 11, Token = 11, ConsumedToken = 11, RewardIndex = 11, Force = 1.5f, LuckyValue = 1.5f, InflationRate = 1.5f }); + Put("estdk", new { EventID = 11, ScratchMainID = 11, ChainPackID = 11, Token = 11, ConsumedToken = 11, RewardTaskConsumedToken = 11, EventScratchRewardTaskID = 11, EventScratchCardID = 11, TotalConsumedToken = 11, ChainPackProgress = 11, magIndex = 11, IsOver = true, LuckyValue = 1.5f, InflationRate = 1.5f, StampRewardList = new[] { 7, 9 }, StampRewardDict = new Dictionary { [7] = new { EventScratchCardID = 8, Count = 9 } } }); + raw["ThanksGivingPackData"] = "1,2,3,4"; + raw["ThanksGivingPackMigrationData"] = "5,6,7,8"; + Put("EventPinataPackData", new { EventID = 7, PinataMainID = 8, PurchasedCount = 9 }); + raw["EAccoutUrl"] = "{\"synthetic\":\"avatar\"}"; + raw["hwGoogle"] = "1"; + raw["Apple"] = "1"; + raw["TapJoy_Diamond"] = "12"; } - catch(Exception ex) { return Task.FromResult(JsonConvert.SerializeObject(new { success=false,caseId="M16-M17",assertions,errorType=ex.GetType().Name,fullB220=false })); } - finally { chains.ResetForKVLoad(); disco.ResetForKVLoad(); } + + Put("NewPlayerDataDic", modern); + return raw; } - static Task RunCamp() - { - int assertions=0; - void Check(bool value) { assertions++; if (!value) throw new InvalidOperationException("Camp assertion failed."); } - var camp=new CampDataMM(null,null); - try - { - var a=CampDataMM.DecodeForKVLoad(new Dictionary { ["IsFix"]="true",["IsOpenSkyscraper"]="1",["CampDataDic"]="{\"CampId\":205}" },new PlayerKVSchemaDiagnostics()); - camp.ResetForKVLoad(); camp.ReplaceFromKVDecoded(a); - var actual=camp.SnapshotForKVValidation(); - Check(actual.IsFix && actual.Skyscraper=="1" && actual.Values["CampId"]==205); - camp.Id=205; camp.PreID=204; camp.SetCampAreaIndex("3"); camp.SetCampAreaStep("4"); camp.IsUpdataArea=true; - var b=CampDataMM.DecodeForKVLoad(new Dictionary(),new PlayerKVSchemaDiagnostics()); - camp.ResetForKVLoad(); camp.ReplaceFromKVDecoded(b); - actual=camp.SnapshotForKVValidation(); - Check(!actual.IsFix && actual.Skyscraper=="0" && actual.Values.Count==0); - Check(camp.Id==101 && camp.PreID==0 && camp.AreaIndex==0 && camp.AreaStep==0 && camp.AreaId==0 && camp.AreaStepCount==0 && camp.TimelineId==0); - Check(camp.AreaIcon==null && camp.constructionArea==null && camp.StepInfo==null && camp.AreaStepList==null && !camp.IsUpdataArea); - Check(a.Values.Count==1); - return Task.FromResult(JsonConvert.SerializeObject(new { success=true,caseId="M07",assertions,fullB220=false,sharedContainerTouched=false })); - } - catch(Exception ex) { return Task.FromResult(JsonConvert.SerializeObject(new { success=false,caseId="M07",assertions,errorType=ex.GetType().Name,fullB220=false })); } - finally { camp.ResetForKVLoad(); } - } - static Task RunClub() - { - int assertions = 0; - void Check(bool condition) { assertions++; if (!condition) throw new InvalidOperationException("Club assertion failed."); } - var club = new ClubService(false); - var snapshot = new PlayerKVSchemaSnapshot("M14",Array.Empty(),Array.Empty(),new Dictionary(), - CultureInfo.InvariantCulture,new DateTime(2026,9,23,0,0,0,DateTimeKind.Utc),0); - try - { - club.OpenPanelType = 17; club.IsOpenClubJoined = true; club.internalIdToPlayerId[1] = "synthetic"; - var unrelated = club.internalIdToPlayerId; - var a = ClubService.DecodeForKVLoad(new Dictionary { - ["ClubSignin"] = "2026-09-23T00:00:00.0000000Z", - ["LureDonateData"] = "{\"DonateCountTime\":\"2026-09-22T00:00:00.0000000Z\",\"ClubLureDonateCount\":7,\"ClubLureRequestCDEnd\":\"2026-09-24T00:00:00.0000000Z\"}", - ["IsOpenClubRed"] = "1" - },snapshot,new PlayerKVSchemaDiagnostics()); - club.ResetForKVLoad(); club.ReplaceFromKVDecoded(a); - var actual = club.SnapshotForKVValidation(); - Check(actual.SignTime == a.SignTime && actual.DonateTime == a.DonateTime && actual.DonateCount == 7 && - actual.RequestEnd == a.RequestEnd && !actual.OpenRed); - var missing = ClubService.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics()); - club.ResetForKVLoad(); club.ReplaceFromKVDecoded(missing); - actual = club.SnapshotForKVValidation(); - Check(actual.SignTime == null && actual.DonateTime == default && actual.RequestEnd == default && - actual.DonateCount == 0 && actual.OpenRed); - Check(ReferenceEquals(unrelated,club.internalIdToPlayerId) && unrelated.Count == 1 && club.OpenPanelType == 17 && club.IsOpenClubJoined); - return Task.FromResult(JsonConvert.SerializeObject(new { success=true,caseId="M14",assertions,fullB220=false,sharedContainerTouched=false })); - } - catch (Exception ex) - { return Task.FromResult(JsonConvert.SerializeObject(new { success=false,caseId="M14",assertions,errorType=ex.GetType().Name,fullB220=false })); } - finally { club.ResetForKVLoad(); } - } - static Task RunCollections() - { - int assertions = 0; - void Check(bool condition) { assertions++; if (!condition) throw new InvalidOperationException("Collection assertion failed."); } - var box = new FishingBoxData(); - var guide = new GameCore.GuideDataCenter(null,null); - var signin = new GameCore.SigninData(null); - try - { - var source = new Dictionary { [1] = 7 }; - var boxes = new PlayerKVIntMapState(source); - source.Clear(); - box.ResetForKVLoad(); box.ReplaceFromKVDecoded(boxes); - Check(box.FishingBoxOpenNum.Count == 1 && box.FishingBoxOpenNum[1] == 7); - box.FishingBoxOpenNum[1] = 8; box.FishingNewBoxs[2] = 9; - Check(boxes.Values[1] == 7); - var previousBoxes = box.FishingNewBoxs; - var previousCounts = box.FishingBoxOpenNum; - var missingBoxes = FishingBoxData.DecodeForKVLoad(new Dictionary(),new Dictionary(),new PlayerKVSchemaDiagnostics()); - box.ResetForKVLoad(); box.ReplaceFromKVDecoded(missingBoxes); - Check(box.FishingNewBoxs.Count == 0 && box.FishingBoxOpenNum.Count == 0); - Check(!ReferenceEquals(previousBoxes,box.FishingNewBoxs) && !ReferenceEquals(previousCounts,box.FishingBoxOpenNum)); - var guides = GameCore.GuideDataCenter.DecodeForKVLoad(new Dictionary { ["GuideSaveDataNew"] = "A|3|1;B|4|0" },new PlayerKVSchemaDiagnostics()); - guide.ResetForKVLoad(); guide.ReplaceFromKVDecoded(guides); - Check(guide.GuideSaveDataDic.Count == 2 && guide.GuideSaveDataDic["A"].guideSubIndex == 3 && - guide.GuideSaveDataDic["A"].isFinish && guide.GuideSaveDataDic["A"].groupName == "A"); - guide.GuideSaveDataDic["A"].guideSubIndex = 99; - Check(guides.Values["A"].Index == 3); - guide.curSaveData = guide.GuideSaveDataDic["A"]; - guide.popupPanelNode = "synthetic"; guide.CurPanelName = "synthetic"; - guide.curDefine = new GuidanceDefine(); - guide.curGroupDefine = new GuidanceGroupDefine(); - var definitions = new GuidanceGroupDefine[0]; - guide.guidanceGroupDefines = definitions; - var missingGuides = GameCore.GuideDataCenter.DecodeForKVLoad(new Dictionary(),new PlayerKVSchemaDiagnostics()); - guide.ResetForKVLoad(); guide.ReplaceFromKVDecoded(missingGuides); - Check(guide.GuideSaveDataDic.Count == 0 && guide.curSaveData == null && guide.curDefine == null && - guide.curGroupDefine == null && guide.popupPanelNode == null && guide.CurPanelName == null); - Check(ReferenceEquals(guide.guidanceGroupDefines,definitions)); - var sign = GameCore.SigninData.DecodeForKVLoad(new Dictionary { - ["MonthlySignEvent"] = "{\"index\":5,\"dailySignEvent\":{\"ID\":7,\"index\":2,\"lastID\":-1,\"time\":\"2026-09-23\"}}" - },new PlayerKVSchemaDiagnostics()); - signin.ResetForKVLoad(); signin.ReplaceFromKVDecoded(sign); - var actual = signin.monthlySignEvent; - Check(actual.index == 5 && actual.dailySignEvent.ID == 7 && actual.dailySignEvent.index == 2 && - actual.dailySignEvent.lastID == -1 && actual.dailySignEvent.time == "2026-09-23"); - actual.dailySignEvent.ID = 99; - Check(sign.DailyId == 7); - signin.ReplaceFromKVDecoded(sign); - Check(!ReferenceEquals(actual,signin.monthlySignEvent) && - !ReferenceEquals(actual.dailySignEvent,signin.monthlySignEvent.dailySignEvent) && signin.monthlySignEvent.dailySignEvent.ID == 7); - var missingSign = GameCore.SigninData.DecodeForKVLoad(new Dictionary(),new PlayerKVSchemaDiagnostics()); - signin.ResetForKVLoad(); signin.ReplaceFromKVDecoded(missingSign); - Check(signin.monthlySignEvent == null); - return Task.FromResult(JsonConvert.SerializeObject(new { success=true,caseId="M09-M10-M12",assertions,fullB220=false,sharedContainerTouched=false })); - } - catch (Exception ex) - { return Task.FromResult(JsonConvert.SerializeObject(new { success=false,caseId="M09-M10-M12",assertions,errorType=ex.GetType().Name,fullB220=false })); } - finally { box.ResetForKVLoad(); guide.ResetForKVLoad(); guide.Dispose(); signin.ResetForKVLoad(); } - } - // A static access shim only; never added as a component or instantiated. sealed class ValidationContextAccess : asap.core.GContext { @@ -1021,430 +4906,6 @@ namespace game.PlayerDataStorage internal static asap.core.IEventAggregator Events { get => eventAggregator; set => eventAggregator = value; } } static bool running; - static Task RunD3(bool includeProgress = false,bool includeCore = false,bool includeShop = false,bool includeEventBase = false) - { - if (running || asap.core.GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0) - throw new InvalidOperationException("Game context is active."); - running = true; - var originalContainer = asap.core.GContext.container; - var originalAggregator = ValidationContextAccess.Events; - var isolated = new asap.core.Container(); - PiggyBankPackData piggy = null; - BargainPackData bargain = null; - EventShootingRangeData shooting = null; - ThanksGivingPackData progress = null; - ChainPackWithProgressMigrationData migration = null; - EventPackData eventPack = null; - EventPinataPackDataManager pinata = null; - GameCore.FishingEventData eventBase = null; - GameCore.PlayerShopData shop = null; - GameCore.PlayerData player = null; - GameCore.SmallGameData small = null; - int assertions = 0; - bool success = false, restored = false; - string errorType = null; - void Check(bool condition) { assertions++; if (!condition) throw new InvalidOperationException("D3 assertion failed."); } - try - { - // Read local tables into a private graph. No active account, network, runtime init or table writes. - var directory = System.IO.Path.GetFullPath(System.IO.Path.Combine(UnityEngine.Application.dataPath, "../../cfgData")); - var tables = new cfg.Tables(name => SimpleJSON.JSON.Parse(System.IO.File.ReadAllText(System.IO.Path.Combine(directory, name + ".json")))); - var packTypes = tables.TbEventPackManager.DataMap.ToDictionary(p => p.Key, p => p.Value.PackType); - int bargainId = packTypes.First(p => p.Value == 3).Key; - var snapshot = new PlayerKVSchemaSnapshot("local-D3", Array.Empty(), Array.Empty(), - new Dictionary(), CultureInfo.InvariantCulture, new DateTime(2026,9,23,0,0,0,DateTimeKind.Utc),0,packTypes); - Check(snapshot.HasPack(4055001)); - ValidationContextAccess.Use(isolated); - ValidationContextAccess.Events = new asap.core.EventAggregator(); - Check(asap.core.ContainerExtensions.RegisterInstance(isolated, tables)); - Check(ReferenceEquals(asap.core.ContainerExtensions.Resolve(isolated), tables)); - piggy = new PiggyBankPackData(); bargain = new BargainPackData(); shooting = new EventShootingRangeData(); - if(includeEventBase) - { - eventBase=new GameCore.FishingEventData(tables); - var progressReference=eventBase.ThanksGivingPackData; - var eventSnapshot=new PlayerKVSchemaSnapshot("local-M05",Array.Empty(),Array.Empty(),new Dictionary(),CultureInfo.InvariantCulture,snapshot.NowUtc,tables.TbGlobalConfig.InitWheelTicket,globalTimeOffset:tables.TbGlobalConfig.GlobalTimeOffset); - var raw=new Dictionary { - ["LimitedTimeEventDic"]="{\"1\":{\"id\":2,\"duration\":60.123456789,\"startTime\":\"2026-09-23T00:00:00.0000000Z\"},\"3\":{\"id\":4,\"duration\":60,\"startTime\":\"2026-09-22T00:00:00.0000000Z\"}}", - ["FixedTimeEventDic"]="{\"5\":{\"id\":6,\"endTime\":\"raw\"}}", - ["ETDropAfterDropDic"]="{\"1\":2,\"3\":4}",["RankTargetCount"]="{\"5\":6,\"7\":8}", - ["WheelLevelCount"]="{\"9\":10}",["TurntableRoll"]="11",["WheelOperateCount"]="12",["AllWheelOperateCount"]="13",["WheelLevelFreeCount"]="14",["PVPToken"]="15" - }; - var state=GameCore.FishingEventData.DecodeForKVLoad(raw,new Dictionary{["ct"]="1:2",["rt"]="5:6"},eventSnapshot,new PlayerKVSchemaDiagnostics()); - Check(state!=null); eventBase.ResetForKVLoad(); eventBase.ReplaceFromKVDecoded(state); - var actual=eventBase.SnapshotForKVValidation(); - Check(actual.Limited.Count==1 && actual.Limited[1].Id==2 && actual.Limited[1].Duration==60.123456789 && actual.Fixed[5].id==6 && actual.Fixed[5].endTime=="raw"); - Check(actual.Target.Count==1 && actual.Target[1]==2 && actual.Rank.Count==1 && actual.Rank[5]==6 && actual.Wheel[9]==10); - Check(actual.Coupon==11 && actual.Operate==12 && actual.AllOperate==13 && actual.Free==14 && actual.PvpToken==15 && eventBase.IsInactiveForKVValidation); - eventBase.MutateCollectionsForKVValidation(); - Check(state.Limited[1].Duration==60.123456789 && state.Fixed[5].id==6 && state.Target.Count==1 && state.Rank.Count==1 && state.Wheel.Count==1); - eventBase.ResetForKVLoad(); eventBase.ReplaceFromKVDecoded(GameCore.FishingEventData.DecodeForKVLoad(new Dictionary(),new Dictionary(),eventSnapshot,new PlayerKVSchemaDiagnostics())); - actual=eventBase.SnapshotForKVValidation(); - Check(actual.Limited.Count==0 && actual.Fixed.Count==0 && actual.Target.Count==0 && actual.Rank.Count==0 && actual.Wheel.Count==0); - Check(actual.Coupon==tables.TbGlobalConfig.InitWheelTicket && actual.Operate==0 && actual.AllOperate==0 && actual.Free==0 && actual.PvpToken==0 && eventBase.IsInactiveForKVValidation); - Check(ReferenceEquals(progressReference,eventBase.ThanksGivingPackData)); - } - if(includeShop) - { - shop=new GameCore.PlayerShopData(); - var couponReference=shop.CouponData; - var daily="{\"ID\":1,\"index\":2,\"lastID\":3,\"time\":\"raw\"}"; - var raw=new Dictionary { - ["ShopPackBuyCount"]="{\"x\":1}",["ShopAllPackBuyCount"]="{\"2\":3}",["ShopGiftBuyCount"]="{\"4\":5}", - ["Voucher"]="6",["ChainPackDataNew"]=daily,["TurntableAdData"]=daily, - ["VIPAdPackData"]="{\"ID\":7,\"index\":8,\"day\":9,\"cdTime\":\"raw\",\"isOpen\":true}", - ["BuyData"]="[1.5,2.5]",["AdvertAllCount"]="{\"-2\":10}",["DiamondShopRefreshCount"]="11", - ["DiamondShopRefreshTime"]="2026-09-23T00:00:00.0000000Z", - ["DiamondShopItemRecords"]="{\"12\":{\"ItemID\":13,\"Discount\":0.5,\"hasBought\":1}}", - ["BlackFridayCouponDate"]="2026,9,23,1,2,3,14,15,1" - }; - var state=GameCore.PlayerShopData.DecodeForKVLoad(raw,snapshot,new PlayerKVSchemaDiagnostics()); - Check(state!=null); shop.ResetForKVLoad(); shop.ReplaceFromKVDecoded(state); - var actual=shop.SnapshotForKVValidation(); - Check(actual.Daily["x"]==1 && actual.All[2]==3 && actual.Gift[4]==5 && actual.Voucher==6); - Check(actual.Chain.Id==1 && actual.Chain.Index==2 && actual.Chain.LastId==3 && actual.Chain.Time=="raw" && actual.Turntable.LastId==3); - Check(actual.Vip.Id==7 && actual.Vip.Index==8 && actual.Vip.Day==9 && actual.Vip.Time=="raw" && actual.Vip.Open); - Check(actual.Advert[-2]==10 && actual.Buy.SequenceEqual(new[] {1.5f,2.5f}) && actual.RefreshCount==11 && actual.RefreshTime==snapshot.NowUtc); - Check(actual.Items[12].Id==13 && actual.Items[12].Discount==.5f && actual.Items[12].Bought==1); - Check(ReferenceEquals(couponReference,shop.CouponData) && actual.Coupon.ActivateTime==new DateTime(2026,9,23,1,2,3) && actual.Coupon.EventId==14 && actual.Coupon.RedirectId==15 && actual.Coupon.Bought); - shop.shopPackDailyBuyCount.Clear(); shop.shopAllPackBuyCount.Clear(); shop.shopGiftBuyCount.Clear(); - shop.ChainPackData.index=99; shop.TurntableAdData.index=99; shop.VIPAdPackData.index=99; shop.MutateCollectionsForKVValidation(); - Check(state.Daily.Count==1 && state.All.Count==1 && state.Gift.Count==1 && state.Advert.Count==1 && state.Buy.Count==2 && state.Items[12].Discount==.5f && state.Chain.Index==2 && state.Turntable.Index==2 && state.Vip.Index==8); - shop.ResetForKVLoad(); shop.ReplaceFromKVDecoded(GameCore.PlayerShopData.DecodeForKVLoad(new Dictionary(),snapshot,new PlayerKVSchemaDiagnostics())); - actual=shop.SnapshotForKVValidation(); - Check(actual.Daily.Count==0 && actual.All.Count==0 && actual.Gift.Count==0 && actual.Buy.Count==0 && actual.Items.Count==0 && actual.Advert.Count==0); - Check(actual.Voucher==0 && actual.RefreshCount==0 && actual.RefreshTime==default && actual.Chain==null && actual.Turntable==null && actual.Vip==null); - Check(ReferenceEquals(couponReference,shop.CouponData) && actual.Coupon.ActivateTime==default && actual.Coupon.EventId==0 && actual.Coupon.RedirectId==0 && !actual.Coupon.Bought); - } - if(includeCore) - { - int rod=tables.TbRodData.DataList[0].ID; - var coreSnapshot=new PlayerKVSchemaSnapshot("local-M01-M02",tables.TbRodData.DataMap.Keys,tables.TbMapData.DataMap.Keys, - new Dictionary(),CultureInfo.InvariantCulture,snapshot.NowUtc,0); - var slots=new[] { "3","18446744073709551615","4","5","6","7",rod.ToString(CultureInfo.InvariantCulture), - "2026-09-23T00:00:00.0000000Z","-1","8","18446744073709551614","9","0","0","10","11","12","13","14" }; - var modern=new Dictionary { ["newData"]=string.Join(",",slots),["vipL"]="-1,5|0,6|1,7" }; - var raw=new Dictionary { ["NewRodList"]="[7,8]",["SeasonId"]="9",["IsOpenAppraise"]="1",["InfiniteBuildingData"]="raw" }; - var state=GameCore.PlayerData.DecodeForKVLoad(raw,modern,coreSnapshot,new PlayerKVSchemaDiagnostics()); - Check(state!=null); - player=new GameCore.PlayerData(tables,null); small=new GameCore.SmallGameData(tables,null,null); - player.ResetForKVLoad(); small.ResetForKVLoad(); - player.ReplaceFromKVDecoded(state); small.ReplaceFromKVDecoded(state.Core); - var actual=player.SnapshotForKVValidation(); - for(int i=0;i<16;i++) - { - object value=i==1 || i==10 ? (object)state.Core.Unsigned(i) : i==7 ? (object)state.Core.EnergyTime : state.Core.Integer(i); - Check(actual.Core.Matches(i,value)); - } - Check(actual.NewRods.SequenceEqual(new[] { 7,8 }) && actual.Season==9 && actual.Appraise && actual.Building=="raw" && - actual.VipScores[-1]==5 && actual.VipScores[0]==6 && actual.VipScores[1]==7); - Check(small.HeistGameCount==12 && small.BombGameCount==13 && small.FishHuntGameCount==14); - player.newRodList.Clear(); Check(state.NewRods.Count==2); - small.opponentItemDatas.Add(null); small.opponentFriendItemDatas.Add(null); small.opponentNotFriendItemDatas.Add(null); - small.opponentFriend.Add(null); small.powerData["synthetic"]=1; small.RobotMapId=99; small.nextRobotMapId=98; - modern.Remove("vipL"); - var b=GameCore.PlayerData.DecodeForKVLoad(new Dictionary(),modern,coreSnapshot,new PlayerKVSchemaDiagnostics()); - player.ResetForKVLoad(); small.ResetForKVLoad(); player.ReplaceFromKVDecoded(b); small.ReplaceFromKVDecoded(b.Core); - actual=player.SnapshotForKVValidation(); - Check(actual.NewRods.Count==0 && actual.VipScores.Count==0 && actual.Season==0 && !actual.Appraise && actual.Building=="0"); - Check(player.InfiniteBuildingLevel=="0"); // Actual leaderboard consumer after missing-key Replace. - foreach(var building in new[]{"", "23,7"}) - { - var existing=new Dictionary{{"InfiniteBuildingData",building}}; - var saved=GameCore.PlayerData.DecodeForKVLoad(existing,modern,coreSnapshot,new PlayerKVSchemaDiagnostics()); - player.ResetForKVLoad(); player.ReplaceFromKVDecoded(saved); - Check(player.InfiniteBuildingData==building && player.InfiniteBuildingLevel==building.Split(',')[0]); - } - var nullErrors=new PlayerKVSchemaDiagnostics(); - Check(GameCore.PlayerData.DecodeForKVLoad(new Dictionary{{"InfiniteBuildingData",null}},modern,coreSnapshot,nullErrors)==null && nullErrors.TotalErrors>0); - Check(small.IsOpponentEmptyForKVValidation && player.IsDerivedEmptyForKVValidation); - player.ResetForKVLoad(); small.ResetForKVLoad(); actual=player.SnapshotForKVValidation(); - for(int i=0;i<16;i++) - { - object value=i==1 || i==10 ? (object)0UL : i==7 ? (object)DateTime.MinValue : 0; - Check(actual.Core.Matches(i,value)); - } - Check(small.HeistGameCount==0 && small.BombGameCount==0 && small.FishHuntGameCount==0 && player.PlayerDataDic.Count==0 && player.InfiniteBuildingData==null); - } - { - var raw = new Dictionary { ["PiggyBankPackData"] = JsonConvert.SerializeObject(new { currentEventID = 11, purchaseCount = 11, VIPLvlWhenEventActivate = 11, savingProgress = 11, redirectID = 0, doNeedTrigger = true, isTriggered = true, inflation = 1.5f }) }; - var errors = new PlayerKVSchemaDiagnostics(); - var a = PiggyBankPackData.DecodeForKVLoad(raw, snapshot, errors); - Check(a != null && a.IsPresent && errors.TotalErrors == 0); - piggy.ResetForKVLoad(); piggy.ReplaceFromKVDecoded(a); - var actual = piggy.SnapshotForKVValidation(); - Check(piggy.KVLoadPresent && actual.IsPresent); - Check(actual.currentEventID == a.currentEventID); - Check(actual.purchaseCount == a.purchaseCount); - Check(actual.VIPLvlWhenEventActivate == a.VIPLvlWhenEventActivate); - Check(actual.savingProgress == a.savingProgress); - Check(actual.redirectID == a.redirectID); - Check(actual.doNeedTrigger == a.doNeedTrigger); - Check(actual.isTriggered == a.isTriggered); - Check(actual.inflation == a.inflation); - var missing = PiggyBankPackData.DecodeForKVLoad(new Dictionary(), snapshot, new PlayerKVSchemaDiagnostics()); - piggy.ResetForKVLoad(); piggy.ReplaceFromKVDecoded(missing); - actual = piggy.SnapshotForKVValidation(); - Check(!piggy.KVLoadPresent && !actual.IsPresent); - Check(actual.currentEventID == 0); - Check(actual.purchaseCount == 0); - Check(actual.VIPLvlWhenEventActivate == 0); - Check(actual.savingProgress == 0); - Check(actual.redirectID == 0); - Check(actual.doNeedTrigger == false); - Check(actual.isTriggered == false); - Check(actual.inflation == 0); - piggy.ReplaceFromKVDecoded(a); - actual = piggy.SnapshotForKVValidation(); - Check(piggy.KVLoadPresent && actual.IsPresent); - Check(actual.currentEventID == a.currentEventID); - Check(actual.purchaseCount == a.purchaseCount); - Check(actual.VIPLvlWhenEventActivate == a.VIPLvlWhenEventActivate); - Check(actual.savingProgress == a.savingProgress); - Check(actual.redirectID == a.redirectID); - Check(actual.doNeedTrigger == a.doNeedTrigger); - Check(actual.isTriggered == a.isTriggered); - Check(actual.inflation == a.inflation); - raw["PiggyBankPackData"] = "null"; - Check(PiggyBankPackData.DecodeForKVLoad(raw,snapshot,new PlayerKVSchemaDiagnostics()) == null); - Check(piggy.KVLoadPresent); // Rejected decode cannot mutate the live object. - piggy.ResetForKVLoad(); - Check(!piggy.KVLoadPresent); - } - { - var raw = new Dictionary { ["GeneralEventPackData"] = JsonConvert.SerializeObject(new { currentEventID = 11, redirectID = bargainId, VIPLvlWhenEventActivate = 11, purchaseCount = 11, savingProgress = 11, discountLvl = 11, visualProgress = 11, visualDiscountLvl = 11, rodID = 11, lastPackIDBought = 11, packID = 11, doNeedTrigger = true, isTriggered = true, inflation = 1.5f, selections = new[] { 7, 9 } }) }; - var errors = new PlayerKVSchemaDiagnostics(); - var a = BargainPackData.DecodeForKVLoad(raw, snapshot, errors); - Check(a != null && a.IsPresent && errors.TotalErrors == 0); - bargain.ResetForKVLoad(); bargain.ReplaceFromKVDecoded(a); - var actual = bargain.SnapshotForKVValidation(); - Check(bargain.KVLoadPresent && actual.IsPresent); - Check(actual.currentEventID == a.currentEventID); - Check(actual.redirectID == a.redirectID); - Check(actual.VIPLvlWhenEventActivate == a.VIPLvlWhenEventActivate); - Check(actual.purchaseCount == a.purchaseCount); - Check(actual.savingProgress == a.savingProgress); - Check(actual.discountLvl == a.discountLvl); - Check(actual.visualProgress == a.visualProgress); - Check(actual.visualDiscountLvl == a.visualDiscountLvl); - Check(actual.rodID == a.rodID); - Check(actual.lastPackIDBought == a.lastPackIDBought); - Check(actual.packID == a.packID); - Check(actual.doNeedTrigger == a.doNeedTrigger); - Check(actual.isTriggered == a.isTriggered); - Check(actual.inflation == a.inflation); - Check(actual.selections.SequenceEqual(a.selections)); - var missing = BargainPackData.DecodeForKVLoad(new Dictionary(), snapshot, new PlayerKVSchemaDiagnostics()); - bargain.ResetForKVLoad(); bargain.ReplaceFromKVDecoded(missing); - actual = bargain.SnapshotForKVValidation(); - Check(!bargain.KVLoadPresent && !actual.IsPresent); - Check(actual.currentEventID == 0); - Check(actual.redirectID == 0); - Check(actual.VIPLvlWhenEventActivate == 0); - Check(actual.purchaseCount == 0); - Check(actual.savingProgress == 0); - Check(actual.discountLvl == 0); - Check(actual.visualProgress == 0); - Check(actual.visualDiscountLvl == 0); - Check(actual.rodID == 0); - Check(actual.lastPackIDBought == 0); - Check(actual.packID == 0); - Check(actual.doNeedTrigger == false); - Check(actual.isTriggered == false); - Check(actual.inflation == 0); - Check(actual.selections.Count == 0); - bargain.ReplaceFromKVDecoded(a); - actual = bargain.SnapshotForKVValidation(); - Check(bargain.KVLoadPresent && actual.IsPresent); - Check(actual.currentEventID == a.currentEventID); - Check(actual.redirectID == a.redirectID); - Check(actual.VIPLvlWhenEventActivate == a.VIPLvlWhenEventActivate); - Check(actual.purchaseCount == a.purchaseCount); - Check(actual.savingProgress == a.savingProgress); - Check(actual.discountLvl == a.discountLvl); - Check(actual.visualProgress == a.visualProgress); - Check(actual.visualDiscountLvl == a.visualDiscountLvl); - Check(actual.rodID == a.rodID); - Check(actual.lastPackIDBought == a.lastPackIDBought); - Check(actual.packID == a.packID); - Check(actual.doNeedTrigger == a.doNeedTrigger); - Check(actual.isTriggered == a.isTriggered); - Check(actual.inflation == a.inflation); - Check(actual.selections.SequenceEqual(a.selections)); - var listObject = Newtonsoft.Json.Linq.JObject.Parse(raw["GeneralEventPackData"]); - PlayerKVBargainState nullSnapshot = null; - foreach (var selection in new Newtonsoft.Json.Linq.JToken[] { Newtonsoft.Json.Linq.JValue.CreateNull(), - new Newtonsoft.Json.Linq.JArray(), new Newtonsoft.Json.Linq.JArray(7,9) }) - { - listObject["selections"] = selection; - raw["GeneralEventPackData"] = listObject.ToString(Newtonsoft.Json.Formatting.None); - errors = new PlayerKVSchemaDiagnostics(); - var decoded = BargainPackData.DecodeForKVLoad(raw, snapshot, errors); - Check(decoded != null && decoded.IsPresent && errors.TotalErrors == 0); - bargain.ReplaceFromKVDecoded(decoded); - var captured = bargain.SnapshotForKVValidation(); - Check(bargain.KVLoadPresent && Same(decoded, captured)); - // Fixed field read of the value SaveData serializes; never call the network save. - var live = (GeneralEventPackData)typeof(BargainPackData).GetField("_data", - System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(bargain); - var serialized = Newtonsoft.Json.Linq.JObject.Parse(JsonConvert.SerializeObject(live)); - Check(Newtonsoft.Json.Linq.JToken.DeepEquals(serialized["selections"], selection)); - if (selection.Type == Newtonsoft.Json.Linq.JTokenType.Null) - { - Check(live.selections == null && captured.selections == null); - nullSnapshot = captured; - var different = (Newtonsoft.Json.Linq.JObject)listObject.DeepClone(); - different["purchaseCount"] = decoded.purchaseCount + 1; - var differentState = BargainPackData.DecodeForKVLoad(new Dictionary { - ["GeneralEventPackData"] = different.ToString(Newtonsoft.Json.Formatting.None) }, snapshot, new PlayerKVSchemaDiagnostics()); - Check(differentState != null && !Same(captured, differentState)); - } - else - { - Check(captured.selections != null && !Same(nullSnapshot, captured) && !Same(captured, nullSnapshot)); - Check(!ReferenceEquals(live.selections, decoded.selections) && !ReferenceEquals(live.selections, captured.selections)); - Check(!ReferenceEquals(captured.selections, bargain.SnapshotForKVValidation().selections)); - if (live.selections.Count > 0) - { - live.selections[0] = 99; - Check(decoded.selections[0] == 7 && captured.selections[0] == 7); - bargain.ReplaceFromKVDecoded(decoded); - Check(Same(decoded, bargain.SnapshotForKVValidation())); - } - } - } - Check(bargain.SelectionsAreIndependentForKVValidation()); - Check(nullSnapshot != null && nullSnapshot.selections == null); - bargain.ReplaceFromKVDecoded(a); - raw["GeneralEventPackData"] = "null"; - Check(BargainPackData.DecodeForKVLoad(raw,snapshot,new PlayerKVSchemaDiagnostics()) == null); - Check(bargain.KVLoadPresent); // Rejected decode cannot mutate the live object. - bargain.ResetForKVLoad(); - Check(!bargain.KVLoadPresent); - } - { - var raw = new Dictionary { ["EventShootingRangeData"] = JsonConvert.SerializeObject(new { EventId = 11, CycleId = 11, RedirectId = 11, AmmoCount = 11, CurrentStageIdx = 11, ChainProgress = 11, RewardFlag = long.MaxValue, TargetFlag = long.MinValue, HasBeenOpened = true, Inflation = 1.5f }) }; - var errors = new PlayerKVSchemaDiagnostics(); - var a = EventShootingRangeData.DecodeForKVLoad(raw, snapshot, errors); - Check(a != null && a.IsPresent && errors.TotalErrors == 0); - shooting.ResetForKVLoad(); shooting.ReplaceFromKVDecoded(a); - var actual = shooting.SnapshotForKVValidation(); - Check(shooting.KVLoadPresent && actual.IsPresent); - Check(actual.EventId == a.EventId); - Check(actual.CycleId == a.CycleId); - Check(actual.RedirectId == a.RedirectId); - Check(actual.AmmoCount == a.AmmoCount); - Check(actual.CurrentStageIdx == a.CurrentStageIdx); - Check(actual.ChainProgress == a.ChainProgress); - Check(actual.RewardFlag == a.RewardFlag); - Check(actual.TargetFlag == a.TargetFlag); - Check(actual.HasBeenOpened == a.HasBeenOpened); - Check(actual.Inflation == a.Inflation); - var missing = EventShootingRangeData.DecodeForKVLoad(new Dictionary(), snapshot, new PlayerKVSchemaDiagnostics()); - shooting.ResetForKVLoad(); shooting.ReplaceFromKVDecoded(missing); - actual = shooting.SnapshotForKVValidation(); - Check(!shooting.KVLoadPresent && !actual.IsPresent); - Check(actual.EventId == 0); - Check(actual.CycleId == 0); - Check(actual.RedirectId == 0); - Check(actual.AmmoCount == 0); - Check(actual.CurrentStageIdx == 0); - Check(actual.ChainProgress == 0); - Check(actual.RewardFlag == 0); - Check(actual.TargetFlag == 0); - Check(actual.HasBeenOpened == false); - Check(actual.Inflation == 0); - shooting.ReplaceFromKVDecoded(a); - actual = shooting.SnapshotForKVValidation(); - Check(shooting.KVLoadPresent && actual.IsPresent); - Check(actual.EventId == a.EventId); - Check(actual.CycleId == a.CycleId); - Check(actual.RedirectId == a.RedirectId); - Check(actual.AmmoCount == a.AmmoCount); - Check(actual.CurrentStageIdx == a.CurrentStageIdx); - Check(actual.ChainProgress == a.ChainProgress); - Check(actual.RewardFlag == a.RewardFlag); - Check(actual.TargetFlag == a.TargetFlag); - Check(actual.HasBeenOpened == a.HasBeenOpened); - Check(actual.Inflation == a.Inflation); - raw["EventShootingRangeData"] = "null"; - Check(EventShootingRangeData.DecodeForKVLoad(raw,snapshot,new PlayerKVSchemaDiagnostics()) == null); - Check(shooting.KVLoadPresent); // Rejected decode cannot mutate the live object. - shooting.ResetForKVLoad(); - Check(!shooting.KVLoadPresent); - } - // Present zero values remain distinguishable from Missing (with required redirect config). - piggy.ReplaceFromKVDecoded(new PlayerKVPiggyBankState(true,0,0,0,0,4055001,false,false,0)); - bargain.ReplaceFromKVDecoded(new PlayerKVBargainState(true,0,bargainId,0,0,0,0,0,0,0,0,0,false,false,0,new int[0])); - shooting.ReplaceFromKVDecoded(new PlayerKVShootingRangeState(true,0,0,0,0,0,0,0,0,false,0)); - Check(piggy.KVLoadPresent && bargain.KVLoadPresent && shooting.KVLoadPresent); - Check(bargain.SelectionsAreIndependentForKVValidation()); - if (includeProgress) - { - var pinataTarget=new EventPinataPackData(); - Check(asap.core.ContainerExtensions.RegisterInstance(isolated,pinataTarget)); - pinata=EventPinataPackDataManager.CreateForKVLoad(); - var pinataState=EventPinataPackDataManager.DecodeForKVLoad(new Dictionary { - ["EventPinataPackData"]="{\"EventID\":1,\"PinataMainID\":2,\"PurchasedCount\":3}" - },new PlayerKVSchemaDiagnostics()); - pinata.ResetForKVLoad(); pinata.ReplaceFromKVDecoded(pinataState); - Check(ReferenceEquals(pinataTarget,asap.core.ContainerExtensions.Resolve(isolated)) && - pinataTarget.EventID==1 && pinataTarget.PinataMainID==2 && pinataTarget.PurchasedCount==3); - pinata.ResetForKVLoad(); pinata.ReplaceFromKVDecoded(EventPinataPackDataManager.DecodeForKVLoad(new Dictionary(),new PlayerKVSchemaDiagnostics())); - Check(ReferenceEquals(pinataTarget,asap.core.ContainerExtensions.Resolve(isolated)) && - pinataTarget.EventID==0 && pinataTarget.PinataMainID==0 && pinataTarget.PurchasedCount==0); - eventPack=new EventPackData(); - var eventSnapshot=new PlayerKVSchemaSnapshot("local-M20",Array.Empty(),Array.Empty(),new Dictionary(), - CultureInfo.InvariantCulture,snapshot.NowUtc,0,packTypes, - tables.TbFishingEvent.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVEventConfig(p.Value.RedirectID,(p.Value.TimeDefinition as cfg.LimitedTime)?.EndTime))); - var pack=EventPackData.DecodeForKVLoad(new Dictionary { ["EventPackData"]="{\"currentEventID\":0,\"purchaseCount\":7,\"VIPLvlWhenEventActivate\":8,\"redirectID\":9}" }, - eventSnapshot,new PlayerKVSchemaDiagnostics()); - eventPack.ResetForKVLoad(); eventPack.ReplaceFromKVDecoded(pack); - var packActual=eventPack.SnapshotForKVValidation(); - Check(packActual.EventId==0 && packActual.PurchaseCount==7 && packActual.VipLevel==8 && packActual.RedirectId==9); - eventPack.ResetForKVLoad(); eventPack.ReplaceFromKVDecoded(EventPackData.DecodeForKVLoad(new Dictionary(),eventSnapshot,new PlayerKVSchemaDiagnostics())); - packActual=eventPack.SnapshotForKVValidation(); - Check(packActual.EventId==0 && packActual.PurchaseCount==0 && packActual.VipLevel==0 && packActual.RedirectId==0); - progress = new ThanksGivingPackData(); migration = new ChainPackWithProgressMigrationData(); - var raw = new Dictionary { ["ThanksGivingPackData"] = "1,2,3,4", ["ThanksGivingPackMigrationData"] = "5,6,7,8" }; - var a = ThanksGivingPackData.DecodeForKVLoad(raw,new PlayerKVSchemaDiagnostics()); - var b = ChainPackWithProgressMigrationData.DecodeForKVLoad(raw,new PlayerKVSchemaDiagnostics()); - progress.ResetForKVLoad(); migration.ResetForKVLoad(); - progress.ReplaceFromKVDecoded(a); migration.ReplaceFromKVDecoded(b); - var actual = progress.SnapshotForKVValidation(); var actualMigration = migration.SnapshotForKVValidation(); - Check(actual.IsPresent && actual.EventId == 1 && actual.RedirectId == 2 && actual.TokenProgress == 3 && actual.ChainProgress == 4); - Check(actualMigration.IsPresent && actualMigration.EventId == 5 && actualMigration.RedirectId == 6 && - actualMigration.TokenProgress == 7 && actualMigration.ChainProgress == 8); - migration.ReplaceFromKVDecoded(a); progress.ChainProgress = 99; - Check(migration.ChainProgress == 4 && a.ChainProgress == 4); - var missing = ThanksGivingPackData.DecodeForKVLoad(new Dictionary(),new PlayerKVSchemaDiagnostics()); - var missingMigration = ChainPackWithProgressMigrationData.DecodeForKVLoad(new Dictionary(),new PlayerKVSchemaDiagnostics()); - progress.ResetForKVLoad(); migration.ResetForKVLoad(); - progress.ReplaceFromKVDecoded(missing); migration.ReplaceFromKVDecoded(missingMigration); - Check(!progress.SnapshotForKVValidation().IsPresent && !migration.SnapshotForKVValidation().IsPresent); - } - success = true; - } - catch (Exception ex) { errorType = ex.GetType().Name; } - finally - { - try { piggy?.ResetForKVLoad(); bargain?.ResetForKVLoad(); shooting?.ResetForKVLoad(); progress?.ResetForKVLoad(); migration?.ResetForKVLoad(); eventPack?.ResetForKVLoad(); pinata?.ResetForKVLoad(); player?.ResetForKVLoad(); small?.ResetForKVLoad(); shop?.ResetForKVLoad(); eventBase?.ResetForKVLoad(); } - catch (Exception ex) { success = false; errorType = ex.GetType().Name; } - try { isolated.Dispose(); } - catch (Exception ex) { success = false; errorType = ex.GetType().Name; } - finally - { - // Synchronous test only: no workers, leases or pending operations can outlive this scope. - ValidationContextAccess.Use(originalContainer); - ValidationContextAccess.Events = originalAggregator; - restored = ReferenceEquals(asap.core.GContext.container,originalContainer) && ReferenceEquals(ValidationContextAccess.Events,originalAggregator); - running = false; - } - } - return Task.FromResult(JsonConvert.SerializeObject(new - { success = success && restored, caseId = includeEventBase ? "M05-M21-M22-M24" : includeShop ? "M04-M21-M22-M24" : includeCore ? "M01-M02-M21-M22-M24" : includeProgress ? "M20-M21-M22-M24-M28-M29" : "M21-M22-M24", assertions, restored, errorType, - scope = includeEventBase ? "M05-D3-only" : includeShop ? "M04-D3-only" : includeCore ? "M01-M02-D3-only" : includeProgress ? "M20-D3-M28-M29-only" : "D3-only", fullB220 = false, formalRequests = 0 })); - } } } #endif diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadCoordinator.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadCoordinator.cs index dd1d8b7cc..b1dde570a 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadCoordinator.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadCoordinator.cs @@ -1,12 +1,34 @@ using System; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace game.PlayerDataStorage { internal enum PlayerKVGameLoadError - { None, BackendNotEnabled, BackendUnsupported, Input, Prepare, Schema, Apply, Stale, SideEffect, GateBusy, PreviousClosePending, PreviousCloseFailed, ClosePending, CloseFailed } - internal enum PlayerKVGameLoadState { Rejected, LoadedForValidation, GameLoaded } + { + None, + BackendNotEnabled, + BackendUnsupported, + Input, + Prepare, + Schema, + Apply, + Stale, + SideEffect, + GateBusy, + PreviousClosePending, + PreviousCloseFailed, + ClosePending, + CloseFailed + } + + internal enum PlayerKVGameLoadState + { + Rejected, + PreparedForGame + } + // Preserve stage evidence without retaining a successful Prepare payload on a later load failure. internal sealed class PlayerKVPrepareEvidence { @@ -20,232 +42,415 @@ namespace game.PlayerDataStorage internal int? HttpStatusCode { get; } internal string ExceptionType { get; } internal string CleanupExceptionType { get; } + internal PlayerKVPrepareEvidence(PlayerKVLoginPrepareResult value) - { Error=value.Error; OriginalError=value.OriginalError; AccountError=value.AccountError; OpenError=value.OpenError; - OwnerError=value.OwnerError; KVError=value.KVError; SyncStatus=value.SyncStatus; HttpStatusCode=value.HttpStatusCode; - ExceptionType=value.ExceptionType; CleanupExceptionType=value.CleanupExceptionType; } + { + Error = value.Error; + OriginalError = value.OriginalError; + AccountError = value.AccountError; + OpenError = value.OpenError; + OwnerError = value.OwnerError; + KVError = value.KVError; + SyncStatus = value.SyncStatus; + HttpStatusCode = value.HttpStatusCode; + ExceptionType = value.ExceptionType; + CleanupExceptionType = value.CleanupExceptionType; + } } + internal sealed class PlayerKVGameLoadResult { - internal PlayerKVGameLoadState State { get; } - internal PlayerKVGameLoadError Error { get; } - internal PlayerKVGameLoadError OriginalError { get; } - internal bool CleanupFailed => Error==PlayerKVGameLoadError.CloseFailed; - internal PlayerKVSchemaVerdict? SchemaVerdict { get; } - internal PlayerKVPrepareEvidence Prepare { get; } - internal long Epoch { get; } - internal PlayerKVAccountDescriptor Account { get; } - internal int ModuleCount { get; } - internal int IntentCount { get; } - internal PlayerKVGameLoadResult(PlayerKVGameLoadError error,long epoch,PlayerKVGameLoadError? original=null, - PlayerKVSchemaVerdict? verdict=null,PlayerKVLoginPrepareResult prepare=null,int modules=0,int intents=0,bool forGame=false,PlayerKVAccountDescriptor account=null) - { Error=error; OriginalError=original ?? error; SchemaVerdict=verdict; Prepare=prepare==null ? null : new PlayerKVPrepareEvidence(prepare); Epoch=epoch; ModuleCount=modules; IntentCount=intents; - Account=error==PlayerKVGameLoadError.None && forGame ? account : null; - State=error!=PlayerKVGameLoadError.None ? PlayerKVGameLoadState.Rejected : forGame ? PlayerKVGameLoadState.GameLoaded : PlayerKVGameLoadState.LoadedForValidation; } + internal PlayerKVGameLoadState State + { + get; + } + internal PlayerKVGameLoadError Error + { + get; + } + internal PlayerKVGameLoadError OriginalError + { + get; + } + internal bool CleanupFailed => Error == PlayerKVGameLoadError.CloseFailed; + internal PlayerKVPrepareEvidence Prepare + { + get; + } + internal long Epoch + { + get; + } + internal PlayerKVAccountDescriptor Account + { + get; + } + internal IReadOnlyDictionary Data + { + get; + } + + internal PlayerKVGameLoadResult(PlayerKVGameLoadError error, long epoch, PlayerKVGameLoadError? original = null, PlayerKVLoginPrepareResult prepare = null, PlayerKVAccountDescriptor account = null, IReadOnlyDictionary data = null) + { + Error = error; + OriginalError = original ?? error; + Prepare = prepare == null ? null : new PlayerKVPrepareEvidence(prepare); + Epoch = epoch; + Account = error == PlayerKVGameLoadError.None ? account : null; + Data = error == PlayerKVGameLoadError.None ? data : null; + State = error == PlayerKVGameLoadError.None ? PlayerKVGameLoadState.PreparedForGame : PlayerKVGameLoadState.Rejected; + } } + internal sealed class PlayerKVGameLoadCoordinator { - readonly SemaphoreSlim loginGate=new SemaphoreSlim(1,1); - readonly object closeGate=new object(); - readonly PlayerKVGameLoadTransaction transaction; - readonly Func unstarted; - readonly Action notify; - readonly Func intentCount; - readonly Action bind; - readonly Func unbind; - readonly PlayerKVShutdownRegistry registry; - readonly int mainThread; - readonly SynchronizationContext mainContext; - PlayerKVLoginContext context; - PlayerKVGameLoadGuard guard; - PlayerKVGameLoadCapability capability; - Task closing; - CancellationTokenRegistration lifetimeRegistration; - Action clearAfterApply; - long epoch; - bool loaded; - PlayerKVGameSessionHandle gameHandle; - internal bool LoadedForValidation => loaded && context!=null && context.IsCurrent && guard!=null && guard.IsCurrent && guard.Violations==0; + private readonly SemaphoreSlim loginGate = new SemaphoreSlim(1, 1); + private readonly object closeGate = new object (); + private readonly Func unstarted; + private readonly Action bind; + private readonly Func unbind; + private readonly PlayerKVShutdownRegistry registry; + private readonly int mainThread; + private readonly SynchronizationContext mainContext; + private PlayerKVLoginContext context; + private PlayerKVGameLoadGuard guard; + private PlayerKVGameLoadCapability capability; + private Task closing; + private CancellationTokenRegistration lifetimeRegistration; + private long epoch; + private PlayerKVGameSessionHandle gameHandle; internal int QuitObserveMs => capability?.QuitObserveMs ?? 5000; - internal PlayerKVGameLoadCoordinator(PlayerKVGameLoadTransaction transaction,Func unstarted,Action notify,Func intentCount, - Action bind,Func unbind,PlayerKVShutdownRegistry registry=null) + + internal PlayerKVGameLoadCoordinator(Func unstarted, Action bind, Func unbind, PlayerKVShutdownRegistry registry = null) { - this.transaction=transaction ?? throw new ArgumentNullException(nameof(transaction)); - this.unstarted=unstarted ?? throw new ArgumentNullException(nameof(unstarted)); this.notify=notify ?? throw new ArgumentNullException(nameof(notify)); - this.intentCount=intentCount ?? throw new ArgumentNullException(nameof(intentCount)); this.bind=bind ?? throw new ArgumentNullException(nameof(bind)); - this.unbind=unbind ?? throw new ArgumentNullException(nameof(unbind)); this.registry=registry ?? PlayerKVShutdownRegistry.Process; - mainThread=Thread.CurrentThread.ManagedThreadId; mainContext=SynchronizationContext.Current; + this.unstarted = unstarted ?? throw new ArgumentNullException(nameof(unstarted)); + this.bind = bind ?? throw new ArgumentNullException(nameof(bind)); + this.unbind = unbind ?? throw new ArgumentNullException(nameof(unbind)); + this.registry = registry ?? PlayerKVShutdownRegistry.Process; + mainThread = Thread.CurrentThread.ManagedThreadId; + mainContext = SynchronizationContext.Current; } - internal Task LoadAsync(string id,PlayerKVGameLoadCapability next,CancellationToken token=default,Func identityCurrent=null) - => LoadCoreAsync(id,next,token,identityCurrent,false); - internal Task LoadForGameAsync(string id,PlayerKVGameLoadCapability next,CancellationToken token=default,Func identityCurrent=null) - => LoadCoreAsync(id,next,token,identityCurrent,true); - internal bool TryGetCurrentGameHandle(long expectedEpoch,out PlayerKVGameSessionHandle handle) + + internal Task LoadForGameAsync(string id, PlayerKVGameLoadCapability next, + CancellationToken token = default, Func identityCurrent = null) { - handle=null; - PlayerKVLoginContext owner; PlayerKVGameSessionHandle published; - lock(closeGate) + return LoadCoreAsync(id, next, token, identityCurrent); + } + internal bool TryGetCurrentGameHandle(long expectedEpoch, out PlayerKVGameSessionHandle handle) + { + handle = null; + PlayerKVLoginContext owner; + PlayerKVGameSessionHandle published; + lock (closeGate) { - if(closing!=null || epoch!=expectedEpoch || gameHandle==null) return false; - owner=context; published=gameHandle; + if (closing != null || epoch != expectedEpoch || gameHandle == null) + { + return false; + } + + owner = context; + published = gameHandle; } + // Never call the external identity predicate while holding a publication monitor. - if(!owner.TryAcquireGameHandle(expectedEpoch,out var original) || !ReferenceEquals(original,published)) return false; - lock(closeGate) + if (!owner.TryAcquireGameHandle(expectedEpoch, out var original) || !ReferenceEquals(original, published)) { - if(closing!=null || epoch!=expectedEpoch || !ReferenceEquals(context,owner) || !ReferenceEquals(gameHandle,published)) return false; - handle=published; + return false; + } + + lock (closeGate) + { + if (closing != null || epoch != expectedEpoch || !ReferenceEquals(context, owner) || !ReferenceEquals(gameHandle, published)) + { + return false; + } + + handle = published; return true; } } - async Task LoadCoreAsync(string id,PlayerKVGameLoadCapability next,CancellationToken token,Func identityCurrent,bool forGame) + + async Task LoadCoreAsync(string id, PlayerKVGameLoadCapability next, CancellationToken token, Func identityCurrent) { - if(next==null || Thread.CurrentThread.ManagedThreadId!=mainThread || string.IsNullOrEmpty(id)) + if (next == null || Thread.CurrentThread.ManagedThreadId != mainThread || string.IsNullOrEmpty(id)) + { return Result(PlayerKVGameLoadError.Input); - if(!await EnterGate(next,token)) return Result(token.IsCancellationRequested ? PlayerKVGameLoadError.Stale : PlayerKVGameLoadError.GateBusy); - PlayerKVLoginPrepareResult prepared=null; PlayerKVSchemaVerdict? verdict=null; - long attempt=0; + } + + if (!await EnterGate(next, token)) + { + return Result(token.IsCancellationRequested ? PlayerKVGameLoadError.Stale : PlayerKVGameLoadError.GateBusy); + } + + PlayerKVLoginPrepareResult prepared = null; + long attempt = 0; try { // An earlier successful validation must also be explicitly revoked before replacing its account. - if(context!=null) _=Revoke(); - var previous=await registry.ObserveAsync(next.LoginObserveMs,token,next.Delay); - if(previous!=PlayerKVShutdownStatus.Ready) return Result(previous==PlayerKVShutdownStatus.Failed ? PlayerKVGameLoadError.PreviousCloseFailed : - previous==PlayerKVShutdownStatus.Cancelled ? PlayerKVGameLoadError.Stale : PlayerKVGameLoadError.PreviousClosePending); - if(token.IsCancellationRequested || !unstarted() || transaction.Poisoned) return Result(PlayerKVGameLoadError.Input); - if(!PlayerKVGameLoadGuard.TryEnter(out var enteredGuard)) return Result(PlayerKVGameLoadError.GateBusy); + if (context != null) + { + _ = Revoke(); + } + + var previous = await registry.ObserveAsync(next.LoginObserveMs, token, next.Delay); + if (previous != PlayerKVShutdownStatus.Ready) + { + return Result(previous == PlayerKVShutdownStatus.Failed ? PlayerKVGameLoadError.PreviousCloseFailed : previous == PlayerKVShutdownStatus.Cancelled ? PlayerKVGameLoadError.Stale : PlayerKVGameLoadError.PreviousClosePending); + } + + if (token.IsCancellationRequested || !unstarted()) + { + return Result(PlayerKVGameLoadError.Input); + } + + if (!PlayerKVGameLoadGuard.TryEnter(out var enteredGuard)) + { + return Result(PlayerKVGameLoadError.GateBusy); + } + lifetimeRegistration.Dispose(); - lock(closeGate) + lock (closeGate) { - guard=enteredGuard; capability=next; closing=null; loaded=false; gameHandle=null; - attempt=Interlocked.Increment(ref epoch); - context=next.CreateContext(id,attempt,e=>Interlocked.Read(ref epoch)==e && !token.IsCancellationRequested && (identityCurrent==null || identityCurrent())); + guard = enteredGuard; + capability = next; + closing = null; + gameHandle = null; + attempt = Interlocked.Increment(ref epoch); + context = next.CreateContext(id, attempt, e => Interlocked.Read(ref epoch) == e && !token.IsCancellationRequested && (identityCurrent == null || identityCurrent())); } - var owner=context; - lifetimeRegistration=token.Register(()=> { _=Revoke(attempt); }); - var work=context.PrepareAsync(token); - var cancelled=new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - using(token.Register(()=>cancelled.TrySetResult(true))) + + var owner = context; + lifetimeRegistration = token.Register(() => { - if(await Task.WhenAny(work,cancelled.Task)!=work) - return await Reject(PlayerKVGameLoadError.Stale,attempt,next,prepared,verdict); - prepared=await work; - } - if(!prepared.Prepared) return await Reject(prepared.CleanupFailed ? PlayerKVGameLoadError.CloseFailed : PlayerKVGameLoadError.Prepare,attempt,next,prepared,verdict); - if(!context.IsCurrent || epoch!=attempt) return await Reject(PlayerKVGameLoadError.Stale,attempt,next,prepared,verdict); - if(next.RequireExistingArchive && (context.AccountDescriptor?.NewlyCreated!=false || prepared.Data==null || prepared.Data.Count==0)) - return await Reject(PlayerKVGameLoadError.Schema,attempt,next,prepared,verdict); - var decoded=PlayerKVSaveSchema.Decode(prepared,context.AccountDescriptor,id,attempt,context.IsCurrent,next.Snapshot,next.Snapshot.Version,next.Identity); - verdict=decoded.Verdict; - if(decoded.Data==null) return await Reject(PlayerKVGameLoadError.Schema,attempt,next,prepared,verdict); - if(!context.TryAcquireAccountLease(next.LeaseCapability,out var lease)) return await Reject(PlayerKVGameLoadError.Stale,attempt,next,prepared,verdict); - bind(lease); - PlayerKVApplyError applied; - try { applied=transaction.Apply(decoded.Data,()=>context.IsCurrent && epoch==attempt && unstarted(),()=>guard.IsCurrent && guard.Violations==0,notify); } - finally { var pending=clearAfterApply; clearAfterApply=null; pending?.Invoke(); } - if(applied!=PlayerKVApplyError.None) return await Reject(applied==PlayerKVApplyError.Stale ? PlayerKVGameLoadError.Stale : - applied==PlayerKVApplyError.SideEffect ? PlayerKVGameLoadError.SideEffect : PlayerKVGameLoadError.Apply,attempt,next,prepared,verdict); - if(token.IsCancellationRequested || !owner.IsCurrent || enteredGuard.Violations!=0) return await Reject(PlayerKVGameLoadError.Stale,attempt,next,prepared,verdict); - var intents=intentCount(); - PlayerKVGameSessionHandle original=null; - if(forGame && !owner.TryAcquireGameHandle(attempt,out original)) return await Reject(PlayerKVGameLoadError.Stale,attempt,next,prepared,verdict); - bool published=false; - lock(closeGate) + _ = Revoke(attempt); + }); + var work = context.PrepareAsync(token); + var cancelled = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + using (token.Register(() => cancelled.TrySetResult(true))) { - if(closing==null && epoch==attempt && !token.IsCancellationRequested && ReferenceEquals(context,owner) && enteredGuard.IsCurrent && enteredGuard.Violations==0) + if (await Task.WhenAny(work, cancelled.Task) != work) { - if(forGame) + return await Reject(PlayerKVGameLoadError.Stale, attempt, next, prepared); + } + + prepared = await work; + } + + if (!prepared.Prepared) + { + return await Reject(prepared.CleanupFailed ? PlayerKVGameLoadError.CloseFailed : PlayerKVGameLoadError.Prepare, attempt, next, prepared); + } + + if (!context.IsCurrent || epoch != attempt) + { + return await Reject(PlayerKVGameLoadError.Stale, attempt, next, prepared); + } + + if (next.RequireExistingArchive && (context.AccountDescriptor?.NewlyCreated != false || prepared.Data == null || prepared.Data.Count == 0)) + { + return await Reject(PlayerKVGameLoadError.Schema, attempt, next, prepared); + } + + if (!context.TryAcquireAccountLease(next.LeaseCapability, out var lease)) + { + return await Reject(PlayerKVGameLoadError.Stale, attempt, next, prepared); + } + + bind(lease); + if (token.IsCancellationRequested || !owner.IsCurrent || enteredGuard.Violations != 0) + { + return await Reject(PlayerKVGameLoadError.Stale, attempt, next, prepared); + } + + var account = owner.AccountDescriptor; + if (account == null) + { + return await Reject(PlayerKVGameLoadError.Stale, attempt, next, prepared); + } + + PlayerKVGameSessionHandle original = null; + if (!owner.TryAcquireGameHandle(attempt, out original)) + { + return await Reject(PlayerKVGameLoadError.Stale, attempt, next, prepared); + } + + bool published = false; + lock (closeGate) + { + if (closing == null && epoch == attempt && !token.IsCancellationRequested && ReferenceEquals(context, owner) && enteredGuard.IsCurrent && enteredGuard.Violations == 0) + { + enteredGuard.Dispose(); + // Dispose serializes with Reject; its final count cannot change afterwards. + if (enteredGuard.Violations == 0) { - enteredGuard.Dispose(); - // Dispose serializes with Reject; its final count cannot change afterwards. - if(enteredGuard.Violations==0) { gameHandle=original; published=true; } + gameHandle = original; + published = true; } - else { loaded=true; published=true; } } } - if(!published) return await Reject(PlayerKVGameLoadError.Stale,attempt,next,prepared,verdict); - return new PlayerKVGameLoadResult(PlayerKVGameLoadError.None,attempt,verdict:verdict,modules:31,intents:intents,forGame:forGame,account:context.AccountDescriptor); + + if (!published) + { + return await Reject(PlayerKVGameLoadError.Stale, attempt, next, prepared); + } + + return new PlayerKVGameLoadResult(PlayerKVGameLoadError.None, attempt, account: account, data: prepared.Data); } - catch { return await Reject(PlayerKVGameLoadError.Apply,attempt,next,prepared,verdict); } - finally { loginGate.Release(); } - } - async Task EnterGate(PlayerKVGameLoadCapability next,CancellationToken token) - { - using(var cancellation=CancellationTokenSource.CreateLinkedTokenSource(token)) + catch { - var wait=loginGate.WaitAsync(cancellation.Token); var deadline=next.Delay(next.LoginObserveMs,cancellation.Token); - bool acquired=false,accepted=false; + return await Reject(PlayerKVGameLoadError.Apply, attempt, next, prepared); + } + finally + { + loginGate.Release(); + } + } + + async Task EnterGate(PlayerKVGameLoadCapability next, CancellationToken token) + { + using (var cancellation = CancellationTokenSource.CreateLinkedTokenSource(token)) + { + var wait = loginGate.WaitAsync(cancellation.Token); + var deadline = next.Delay(next.LoginObserveMs, cancellation.Token); + bool acquired = false, accepted = false; try { - if(await Task.WhenAny(wait,deadline)==wait) { await wait; acquired=true; accepted=!token.IsCancellationRequested && !deadline.IsCompleted; return accepted; } + if (await Task.WhenAny(wait, deadline) == wait) + { + await wait; + acquired = true; + accepted = !token.IsCancellationRequested && !deadline.IsCompleted; + return accepted; + } + cancellation.Cancel(); - try { await wait; acquired=true; } catch(OperationCanceledException) { } + try + { + await wait; + acquired = true; + } + catch (OperationCanceledException) + { + } + + return false; + } + catch (OperationCanceledException) + { return false; } - catch(OperationCanceledException) { return false; } finally { cancellation.Cancel(); // A lock won at the timeout/cancel boundary belongs to this attempt and must be returned. - if(acquired && !accepted) loginGate.Release(); + if (acquired && !accepted) + { + loginGate.Release(); + } } } } - internal Task Revoke(long? expectedEpoch=null) + + internal Task Revoke(long? expectedEpoch = null) { - lock(closeGate) + lock (closeGate) { - if(expectedEpoch.HasValue && expectedEpoch.Value!=Interlocked.Read(ref epoch)) return Task.CompletedTask; - if(closing!=null) return closing; - loaded=false; gameHandle=null; Interlocked.Increment(ref epoch); - if(context==null && guard==null) return Task.CompletedTask; - var completion=new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - closing=completion.Task; - var owner=context; var leaseGuard=guard; var source=capability; - // Context cancellation is synchronous and occurs even if the main-thread reset is queued. - var drain=owner?.CloseAsync() ?? Task.CompletedTask; - var cleared=new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + if (expectedEpoch.HasValue && expectedEpoch.Value != Interlocked.Read(ref epoch)) + { + return Task.CompletedTask; + } + + if (closing != null) + { + return closing; + } + + gameHandle = null; + Interlocked.Increment(ref epoch); + if (context == null && guard == null) + { + return Task.CompletedTask; + } + + var completion = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + closing = completion.Task; + var owner = context; + var leaseGuard = guard; + var source = capability; + // Context cancellation is synchronous and occurs even if the main-thread unbind is queued. + var drain = owner?.CloseAsync() ?? Task.CompletedTask; + var cleared = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); void Clear() { try { - var detached=unbind(); - if(!transaction.Clear()) throw new InvalidOperationException("Controlled container is poisoned."); - CompleteClear(detached,cleared); + var detached = unbind(); + CompleteClear(detached, cleared); + } + catch (Exception ex) + { + cleared.TrySetException(ex); } - catch(Exception ex) { cleared.TrySetException(ex); } } - if(Thread.CurrentThread.ManagedThreadId==mainThread && transaction.IsApplying) clearAfterApply=Clear; - else if(Thread.CurrentThread.ManagedThreadId==mainThread) Clear(); - else if(mainContext!=null) mainContext.Post(_=>Clear(),null); - else cleared.TrySetException(new InvalidOperationException("Main-thread cleanup unavailable.")); - _=FinishClose(drain,cleared.Task,leaseGuard,source,completion); - registry.Register(drain,owner); - registry.Register(cleared.Task,owner); - registry.Register(closing,owner); + + if (Thread.CurrentThread.ManagedThreadId == mainThread) + { + Clear(); + } + else if (mainContext != null) + { + mainContext.Post(_ => Clear(), null); + } + else + { + cleared.TrySetException(new InvalidOperationException("Main-thread cleanup unavailable.")); + } + + _ = FinishClose(drain, cleared.Task, leaseGuard, source, completion); + registry.Register(drain, owner); + registry.Register(cleared.Task, owner); + registry.Register(closing, owner); return closing; } } - static async void CompleteClear(Task detached,TaskCompletionSource cleared) - { try { await detached; cleared.TrySetResult(true); } catch(Exception ex) { cleared.TrySetException(ex); } } - static async Task FinishClose(Task drain,Task clear,PlayerKVGameLoadGuard leaseGuard,PlayerKVGameLoadCapability source,TaskCompletionSource completion) + + static async void CompleteClear(Task detached, TaskCompletionSource cleared) { try { - await Task.WhenAll(drain,clear).ConfigureAwait(false); source?.CloseUnused(); leaseGuard?.Dispose(); completion.TrySetResult(true); + await detached; + cleared.TrySetResult(true); + } + catch (Exception ex) + { + cleared.TrySetException(ex); } - catch(Exception ex) { completion.TrySetException(ex); } } - async Task Reject(PlayerKVGameLoadError original,long attempt,PlayerKVGameLoadCapability source, - PlayerKVLoginPrepareResult prepare,PlayerKVSchemaVerdict? verdict) + + static async Task FinishClose(Task drain, Task clear, PlayerKVGameLoadGuard leaseGuard, PlayerKVGameLoadCapability source, TaskCompletionSource completion) { - var close=Revoke(); - var status=await registry.ObserveAsync(source.LoginObserveMs,CancellationToken.None,source.Delay); - var error=status==PlayerKVShutdownStatus.Failed || close.IsFaulted ? PlayerKVGameLoadError.CloseFailed : - !close.IsCompleted ? PlayerKVGameLoadError.ClosePending : original; - return new PlayerKVGameLoadResult(error,attempt,original:prepare?.CleanupFailed==true ? PlayerKVGameLoadError.Prepare : original,verdict:verdict,prepare:prepare); + try + { + await Task.WhenAll(drain, clear).ConfigureAwait(false); + source?.CloseUnused(); + leaseGuard?.Dispose(); + completion.TrySetResult(true); + } + catch (Exception ex) + { + completion.TrySetException(ex); + } } - PlayerKVGameLoadResult Result(PlayerKVGameLoadError error) => new PlayerKVGameLoadResult(error,Interlocked.Read(ref epoch)); - internal Task ObserveQuitAsync() => registry.ObserveAsync(QuitObserveMs,delay:capability?.Delay); + + async Task Reject(PlayerKVGameLoadError original, long attempt, PlayerKVGameLoadCapability source, PlayerKVLoginPrepareResult prepare) + { + var close = Revoke(); + var status = await registry.ObserveAsync(source.LoginObserveMs, CancellationToken.None, source.Delay); + var error = status == PlayerKVShutdownStatus.Failed || close.IsFaulted ? PlayerKVGameLoadError.CloseFailed : !close.IsCompleted ? PlayerKVGameLoadError.ClosePending : original; + return new PlayerKVGameLoadResult(error, attempt, original: prepare?.CleanupFailed == true ? PlayerKVGameLoadError.Prepare : original, prepare: prepare); + } + + PlayerKVGameLoadResult Result(PlayerKVGameLoadError error) => new PlayerKVGameLoadResult(error, Interlocked.Read(ref epoch)); + internal Task ObserveQuitAsync() => registry.ObserveAsync(QuitObserveMs, delay: capability?.Delay); } } diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadTransaction.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadTransaction.cs deleted file mode 100644 index 184eb1a1e..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadTransaction.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; - -namespace game.PlayerDataStorage -{ - internal interface IPlayerKVLoadModule - { - int Id { get; } - void Reset(); - void Replace(PlayerKVDecodedSave decoded); - } - internal sealed class PlayerKVLoadModule : IPlayerKVLoadModule - { - readonly Action reset; - readonly Action replace; - public int Id { get; } - internal PlayerKVLoadModule(int id,Action reset,Action replace) - { Id=id; this.reset=reset ?? throw new ArgumentNullException(nameof(reset)); this.replace=replace ?? throw new ArgumentNullException(nameof(replace)); } - public void Reset() => reset(); - public void Replace(PlayerKVDecodedSave decoded) => replace(decoded); - } - internal enum PlayerKVApplyError { None, Input, Stale, Apply, SideEffect, Poisoned } - internal sealed class PlayerKVGameLoadTransaction - { - readonly IPlayerKVLoadModule[] modules; - readonly int mainThread; - readonly Action discard; - bool applying; - internal bool IsApplying => applying; - internal bool Poisoned { get; private set; } - internal int AppliedModules { get; private set; } - internal PlayerKVGameLoadTransaction(IEnumerable modules,int mainThread,Action discard) - { - this.modules=modules?.ToArray() ?? throw new ArgumentNullException(nameof(modules)); - if(this.modules.Length!=31 || !this.modules.Select(m=>m?.Id ?? 0).SequenceEqual(Enumerable.Range(1,31))) - throw new ArgumentException("Exactly 31 ordered modules required."); - this.mainThread=mainThread; this.discard=discard ?? throw new ArgumentNullException(nameof(discard)); - } - // Synchronous main-thread region: no callback may yield between Reset and publication. - internal PlayerKVApplyError Apply(PlayerKVDecodedSave decoded,Func current,Func clean,Action notify) - { - if(Poisoned) return PlayerKVApplyError.Poisoned; - if(applying || Thread.CurrentThread.ManagedThreadId!=mainThread || decoded==null || current==null || clean==null || notify==null) - return PlayerKVApplyError.Input; - applying=true; AppliedModules=0; - PlayerKVApplyError error=PlayerKVApplyError.Apply; - try - { - if(!current()) error=PlayerKVApplyError.Stale; - else if(!clean()) error=PlayerKVApplyError.SideEffect; - else if(!ResetAll()) error=PlayerKVApplyError.Poisoned; - else - { - foreach(var module in modules) - { - if(!current()) { error=PlayerKVApplyError.Stale; break; } - if(!clean()) { error=PlayerKVApplyError.SideEffect; break; } - module.Replace(decoded); AppliedModules++; - } - if(AppliedModules==31) - { - // The last module can revoke the epoch or trip a guard; never publish in that gap. - if(!current()) error=PlayerKVApplyError.Stale; - else if(!clean()) error=PlayerKVApplyError.SideEffect; - else - { - notify(); - error=!current() ? PlayerKVApplyError.Stale : !clean() ? PlayerKVApplyError.SideEffect : PlayerKVApplyError.None; - } - } - } - } - catch { error=PlayerKVApplyError.Apply; } - finally { applying=false; } - if(error!=PlayerKVApplyError.None) - { - if(!ResetAll()) error=PlayerKVApplyError.Poisoned; - try { discard(); } catch { Poisoned=true; error=PlayerKVApplyError.Poisoned; } - AppliedModules=0; - } - return error; - } - internal bool Clear() - { - if(applying || Thread.CurrentThread.ManagedThreadId!=mainThread) throw new InvalidOperationException("Main thread required."); - bool cleared=ResetAll(); - try { discard(); } catch { Poisoned=true; cleared=false; } - AppliedModules=0; return cleared; - } - bool ResetAll() - { - bool ok=true; - foreach(var module in modules) try { module.Reset(); } catch { ok=false; } - if(!ok) Poisoned=true; - return ok; - } - } -} diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadTransaction.cs.meta b/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadTransaction.cs.meta deleted file mode 100644 index dc84ce479..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadTransaction.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: c1ea0dd4977649169863e3c917802188 diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameSessionBridge.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameSessionBridge.cs index 6f03586af..05a4deacc 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameSessionBridge.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameSessionBridge.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Threading; @@ -87,8 +88,13 @@ namespace game.PlayerDataStorage public PlayerKVGameSessionBridge() : this(jar => new HttpClientHandler { CookieContainer = jar, UseCookies = true, AllowAutoRedirect = false }) { } - internal PlayerKVGameSessionBridge(Func handlerFactory) - { this.handlerFactory = handlerFactory ?? throw new ArgumentNullException(nameof(handlerFactory)); } + private readonly bool prepareOriginalComparison; + + internal PlayerKVGameSessionBridge(Func handlerFactory, bool prepareOriginalComparison = false) + { + this.handlerFactory = handlerFactory ?? throw new ArgumentNullException(nameof(handlerFactory)); + this.prepareOriginalComparison = prepareOriginalComparison; + } public Task OpenAsync(S101AccountSession session, string cacheRoot, string playerId, Uri api, long epoch, Func isCurrent, CancellationToken lifetimeToken = default) @@ -145,7 +151,7 @@ namespace game.PlayerDataStorage active = slot; } slot.Creation = PlayerKVSessionOwner.CreateAsync(session, cacheRoot, playerId, api, - epoch, slot.IsCurrent, slot.Lifetime.Token, handlerFactory); + epoch, slot.IsCurrent, slot.Lifetime.Token, handlerFactory, prepareOriginalComparison: prepareOriginalComparison); var opened = await slot.Creation.ConfigureAwait(false); if (!opened.Success) { @@ -261,9 +267,49 @@ namespace game.PlayerDataStorage ? new PlayerKVLocalReadResult(PlayerKVLocalReadError.StaleOrClosing, OwnerInstanceId, PlayerId, Epoch) : Owner.ReadLocalSnapshot(); - public PlayerKVEditResult Update(string key, string value, bool remoteStore = true) => - slot.Revoked ? BlockedEdit() : Owner.Update(key, value, remoteStore); + public PlayerKVEditResult Update(string key, string value, bool remoteStore = true) + { + return Update(key, value, remoteStore, null); + } + + internal PlayerKVStateResult CompareDatas(long nowTicks) + { + return slot.Revoked ? new PlayerKVStateResult(PlayerKVChangeError.Blocked) : Owner.CompareDatas(nowTicks); + } + + internal PlayerKVEditResult Update(string key, string value, bool remoteStore, long? updateTicks) + { + return slot.Revoked ? BlockedEdit() : Owner.Update(key, value, remoteStore, updateTicks); + } + + internal Task SyncDataAsync(CancellationToken waitToken = default) + { + if (slot.Revoked) + { + return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Cancelled, Owner.Status)); + } + return Owner.SyncDataAsync(waitToken); + } + public PlayerKVEditResult Delete(string key) => slot.Revoked ? BlockedEdit() : Owner.Delete(key); + public Task SyncDataImmidiate(string key, string value) + { + if (slot.Revoked) + { + return Task.FromResult(false); + } + return Owner.SyncDataImmidiate(key, value); + } + + internal Task SyncDataImmidiate(IReadOnlyDictionary values) + { + if (slot.Revoked) + { + return Task.FromResult(false); + } + return Owner.SyncDataImmidiate(values); + } + public Task FlushAsync(CancellationToken waitToken = default) => slot.Revoked ? Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Cancelled, Owner.Status)) : Owner.FlushAsync(waitToken); @@ -273,4 +319,4 @@ namespace game.PlayerDataStorage static PlayerKVEditResult BlockedEdit() => new PlayerKVEditResult(new PlayerKVStateResult(PlayerKVChangeError.Blocked)); } -} \ No newline at end of file +} diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameplayBindings.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameplayBindings.cs deleted file mode 100644 index 1683eea70..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameplayBindings.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if !SERVICE_HOST -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using asap.core; - -namespace game.PlayerDataStorage -{ - // Bind the existing game container. Missing registrations fail closed; no parallel fixture objects. - internal static class PlayerKVGameplayBindings - { - static T Require() where T:class => GContext.container.Resolve() ?? - throw new InvalidOperationException("KV game module is not registered: "+typeof(T).FullName); - internal static PlayerKVSchemaSnapshot Snapshot(DateTime nowUtc,string version="kv-loop") - { - var tables=Require(); - return new PlayerKVSchemaSnapshot(version,tables.TbRodData.DataMap.Keys,tables.TbMapData.DataMap.Keys, - Enum.GetNames(typeof(cfg.ConditionType)).ToDictionary(n=>n,n=>(int)Enum.Parse(typeof(cfg.ConditionType),n)),CultureInfo.InvariantCulture, - nowUtc,tables.TbGlobalConfig.InitWheelTicket, - tables.TbEventPackManager.DataMap.ToDictionary(p=>p.Key,p=>p.Value.PackType), - tables.TbFishingEvent.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVEventConfig(p.Value.RedirectID,(p.Value.TimeDefinition as cfg.LimitedTime)?.EndTime)),tables.TbGlobalConfig.GlobalTimeOffset, - tables.TbFishData.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVFishConfig(p.Key,p.Value.AreaID,p.Value.Quality,p.Value.FishCardID,p.Value.BaseWeight,p.Value.PointExtraParam,p.Value.WeightRandom)), - tables.TbFishCard.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVFishCardConfig(p.Key,p.Value.MaxLevel,p.Value.CardsRequiredList,p.Value.WeightMagList))); - } - internal static PlayerKVGameLoadTransaction Bind(IKVUserLoadReceiver user) - { - var player=Require(); var small=Require(); var fish=Require(); - var shop=Require(); var eventBase=Require(); var buffs=Require(); var camp=Require(); - var achievements=Require(); var box=Require(); var guide=Require(); var battle=Require(); - var sign=Require(); var trigger=Require(); var club=Require(); var challenge=Require(); - var chains=Require(); var disco=Require(); var partner=Require(); var cube=Require(); - var eventPack=Require(); var piggy=Require(); var bargain=Require(); var foot=Require() as FootPrintService ?? throw new InvalidOperationException("M23 FootPrint binding mismatch."); var shooting=Require(); - var potion=Require(); var pinball=Require(); var scratch=Require(); - var progress=eventBase.ThanksGivingPackData; var migration=eventBase.ChainPackWithProgressMigrationData; - var pinata=Require(); var digging=Require(); - var modules=new List(); - void Add(int id,Action reset,Action replace) where T:class => modules.Add(new PlayerKVLoadModule(id,reset,d=>replace(d.Module(id)))); - Add(1,player.ResetForKVLoad,player.ReplaceFromKVDecoded); Add(2,small.ResetForKVLoad,small.ReplaceFromKVDecoded); - Add(3,fish.ResetForKVLoad,fish.ReplaceFromKVDecoded); Add(4,shop.ResetForKVLoad,shop.ReplaceFromKVDecoded); - Add(5,eventBase.ResetForKVLoad,eventBase.ReplaceFromKVDecoded); Add(6,buffs.ResetForKVLoad,buffs.ReplaceFromKVDecoded); - Add(7,camp.ResetForKVLoad,camp.ReplaceFromKVDecoded); Add(8,achievements.ResetForKVLoad,achievements.ReplaceFromKVDecoded); - Add(9,box.ResetForKVLoad,box.ReplaceFromKVDecoded); Add(10,guide.ResetForKVLoad,guide.ReplaceFromKVDecoded); - Add(11,battle.ResetForKVLoad,battle.ReplaceFromKVDecoded); Add(12,sign.ResetForKVLoad,sign.ReplaceFromKVDecoded); - Add(13,trigger.ResetForKVLoad,trigger.ReplaceFromKVDecoded); Add(14,club.ResetForKVLoad,club.ReplaceFromKVDecoded); - Add(15,challenge.ResetForKVLoad,challenge.ReplaceFromKVDecoded); Add(16,chains.ResetForKVLoad,chains.ReplaceFromKVDecoded); - Add(17,disco.ResetForKVLoad,disco.ReplaceFromKVDecoded); Add(18,partner.ResetForKVLoad,partner.ReplaceFromKVDecoded); - Add(19,cube.ResetForKVLoad,cube.ReplaceFromKVDecoded); Add(20,eventPack.ResetForKVLoad,eventPack.ReplaceFromKVDecoded); - Add(21,piggy.ResetForKVLoad,piggy.ReplaceFromKVDecoded); Add(22,bargain.ResetForKVLoad,bargain.ReplaceFromKVDecoded); - Add(23,foot.ResetForKVLoad,foot.ReplaceFromKVDecoded); Add(24,shooting.ResetForKVLoad,shooting.ReplaceFromKVDecoded); - Add(25,potion.ResetForKVLoad,potion.ReplaceFromKVDecoded); Add(26,pinball.ResetForKVLoad,pinball.ReplaceFromKVDecoded); - Add(27,scratch.ResetForKVLoad,scratch.ReplaceFromKVDecoded); - Add(28,()=>{progress.ResetForKVLoad();migration.ResetForKVLoad();},p=>{progress.ReplaceFromKVDecoded(p.Current);migration.ReplaceFromKVDecoded(p.Migration);}); - Add(29,pinata.ResetForKVLoad,pinata.ReplaceFromKVDecoded); Add(30,digging.ResetForKVLoad,digging.ReplaceFromKVDecoded); - modules.Add(new PlayerKVLoadModule(31,user.ResetForKVLoad,d=>user.ReplaceFromKVDecoded(d.Module(31),d.Epoch,d.Raw))); - return new PlayerKVGameLoadTransaction(modules,System.Threading.Thread.CurrentThread.ManagedThreadId,user.DiscardKVIntents); - } - } -} -#endif diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameplayBindings.cs.meta b/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameplayBindings.cs.meta deleted file mode 100644 index 968890e5c..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVGameplayBindings.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 7803da4435ea45c28007ff0198c676fb diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVInitializationIntents.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVInitializationIntents.cs deleted file mode 100644 index 107d7763f..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVInitializationIntents.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; - -namespace game.PlayerDataStorage -{ - // Only two approved in-memory normalizations. Never a persistence receipt or retry queue. - internal sealed class PlayerKVInitializationIntents - { - readonly Dictionary values=new Dictionary(StringComparer.Ordinal); - readonly string channel; - internal long Epoch { get; } - internal bool Discarded { get; private set; } - internal int DiscardedCount { get; private set; } - internal int Count => values.Count; - internal IReadOnlyDictionary Snapshot => new ReadOnlyDictionary(new Dictionary(values)); - internal PlayerKVInitializationIntents(long epoch,PlayerKVIdentityChannel channel) - { - if(!Enum.IsDefined(typeof(PlayerKVIdentityChannel),channel)) throw new ArgumentException("Unknown intent channel."); - Epoch=epoch; this.channel=channel==PlayerKVIdentityChannel.hwGuest || channel==PlayerKVIdentityChannel.none ? null : channel.ToString(); - } - internal void Add(long epoch,string key,string value) - { - if(Discarded || epoch!=Epoch || key==null || (key!="MMTest" && key!=channel) || value==null) - throw new InvalidOperationException("Initialization intent rejected."); - values[key]=value; - } - internal void Discard() { if(Discarded) return; DiscardedCount=values.Count; values.Clear(); Discarded=true; } - } -} diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVInitializationIntents.cs.meta b/Client/Assets/Scripts/Services/PlayerData/PlayerKVInitializationIntents.cs.meta deleted file mode 100644 index 526b5a9a1..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVInitializationIntents.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 6215961788794950aff0709dbb499793 diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVLoginContext.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVLoginContext.cs index 1f122c713..d9a009af9 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVLoginContext.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVLoginContext.cs @@ -58,7 +58,7 @@ namespace game.PlayerDataStorage internal PlayerKVAccountDescriptor AccountDescriptor => Volatile.Read(ref prepared) != 0 && IsCurrent ? accountDescriptor : null; - // Only the coordinator may publish this original handle after Apply and Guard release. + // Only the coordinator may publish this original handle after preparation and Guard release. internal bool TryAcquireGameHandle(long expectedEpoch, out PlayerKVGameSessionHandle gameHandle) { gameHandle = null; @@ -351,7 +351,13 @@ namespace game.PlayerDataStorage internal HttpMessageHandler CreateHandler(CookieContainer cookies) { - var handler = leaseHandler(cookies) ?? throw new InvalidOperationException("Transport handler required."); + return CreateHandler(leaseHandler, cookies, formal); + } + + internal static HttpMessageHandler CreateHandler(Func factory, + CookieContainer cookies, bool formal) + { + var handler = factory(cookies) ?? throw new InvalidOperationException("Transport handler required."); var seen = new HashSet(); var node = handler; while (node != null) @@ -359,7 +365,9 @@ namespace game.PlayerDataStorage // Disposing a cyclic DelegatingHandler graph recursively would overflow the stack. // It never becomes a lease; the rejecting factory retains responsibility for that graph. if (!seen.Add(node)) + { throw new InvalidOperationException("Cyclic transport is not a validation handler."); + } if (!formal && (node is HttpClientHandler || node.GetType().FullName == "System.Net.Http.SocketsHttpHandler")) { diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVModels.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVModels.cs index 954aa6f87..5ef8741ab 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVModels.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVModels.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -15,16 +16,23 @@ namespace game.PlayerDataStorage public int? StatusCode { get; } // Only a successful Get has Data. Failure must never look like an empty save. public IReadOnlyDictionary Data { get; } + // Null means the response did not supply timestamp metadata; never substitute read time. + public IReadOnlyDictionary UpdatedAtUtc + { + get; + } // A failed write that entered the transport may already have reached the server. // This is conservative, including HTTP failures. Do not blindly replay the write. public bool MayHaveCommitted { get; } internal PlayerKVResult(PlayerKVError error, int? statusCode = null, - Dictionary data = null, bool mayHaveCommitted = false) + Dictionary data = null, bool mayHaveCommitted = false, + Dictionary updatedAtUtc = null) { Error = error; StatusCode = statusCode; Data = data == null ? null : new ReadOnlyDictionary(data); + UpdatedAtUtc = updatedAtUtc == null ? null : new ReadOnlyDictionary(updatedAtUtc); MayHaveCommitted = mayHaveCommitted; } } diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVRuntimeSelection.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVRuntimeSelection.cs index 35ce31c93..b0aa43102 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVRuntimeSelection.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVRuntimeSelection.cs @@ -26,8 +26,6 @@ namespace game.PlayerDataStorage return new PlayerKVRuntimeSelection(false, null); if (backend != "kv") throw new ArgumentException("Unsupported save backend.", nameof(backend)); - if (agg) - throw new InvalidOperationException("KV login is not enabled for AGG channels."); if (!string.Equals(api, FormalApiUrl, StringComparison.Ordinal)) throw new ArgumentException("KV API address does not match the reviewed endpoint.", nameof(api)); return new PlayerKVRuntimeSelection(true, new Uri(FormalApiUrl)); diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveRouteEditorValidationHost.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveRouteEditorValidationHost.cs deleted file mode 100644 index 35164673a..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveRouteEditorValidationHost.cs +++ /dev/null @@ -1,126 +0,0 @@ -#if UNITY_EDITOR && !SERVICE_HOST -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Net.Http; -using System.Threading; -using System.Threading.Tasks; -using game.Account; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace game.PlayerDataStorage -{ - internal static class PlayerKVSaveRouteEditorValidationHost - { - static int running; - // Retain a failed cleanup's owner for diagnosis; never silently restart over it. - static object failedLifetime; - internal static async Task RunAsync(string caseId) - { - if (caseId != "fixed-route") throw new ArgumentException("Unknown fixed validation case."); - if (Interlocked.CompareExchange(ref running, 1, 0) != 0 || failedLifetime != null) - throw new InvalidOperationException("Validation already running or cleanup failed."); - var run = new Run(); - try { return await run.Execute(); } - finally - { - try { await run.Close(); } - catch { failedLifetime = run; throw; } - finally { Interlocked.Exchange(ref running, 0); } - } - } - - sealed class Run - { - readonly Uri api = new Uri("http://kv-route.invalid/"); - readonly List sessions = new List(); - readonly Dictionary> remote = new Dictionary> - { ["101"] = new Dictionary { ["k"] = "A", ["empty"] = "" }, ["102"] = new Dictionary { ["k"] = "B" } }; - readonly string cache = Path.GetFullPath(Path.Combine(UnityEngine.Application.dataPath, - "../../CodexOutput/upserver/KVSaveRouteTests/unity-runs", DateTime.UtcNow.ToString("yyyyMMddHHmmss") + "_" + Guid.NewGuid().ToString("N"))); - PlayerKVGameSessionBridge bridge; - PlayerKVGameLoadGuard guard; - int assertions, auth, gets, writes; - long epoch = 1; - void Check(bool value) { assertions++; if (!value) throw new InvalidOperationException("Fixed route assertion " + assertions); } - static HttpResponseMessage Json(object value) => new HttpResponseMessage(HttpStatusCode.OK) - { Content = new StringContent(JsonConvert.SerializeObject(value)) }; - sealed class SyntheticHandler : HttpMessageHandler - { - readonly Func> send; - internal SyntheticHandler(Func> send) { this.send = send; } - protected override Task SendAsync(HttpRequestMessage request, CancellationToken token) => send(request); - } - HttpMessageHandler KV(CookieContainer jar) - { - var id = jar.GetCookies(api)["sid"].Value; - return new SyntheticHandler(async request => - { - Check(request.RequestUri.Host == "kv-route.invalid" && request.RequestUri.Port == 80); - var path = request.RequestUri.AbsolutePath; - Check(path == "/playerdata/Get" || path == "/playerdata/Set"); - var body = JObject.Parse(await request.Content.ReadAsStringAsync()); - if (path == "/playerdata/Get") { gets++; return Json(new { data = remote[id] }); } - writes++; - foreach (var p in ((JObject)body["data"]).Properties()) remote[id][p.Name] = (string)p.Value; - return Json(new { }); - }); - } - async Task Open(string id) - { - var session = new S101AccountSession(api, jar => new SyntheticHandler(request => - { - Check(request.RequestUri.Host == "kv-route.invalid" && request.RequestUri.AbsolutePath == "/account/Login"); - auth++; jar.Add(api, new Cookie("sid", id)); - return Task.FromResult(Json(new { state = 0, internalId = int.Parse(id), newCreate = false, - createTime = "2026-01-01T00:00:00Z", svrTime = "2026-01-01T00:00:00Z" })); - })); - sessions.Add(session); - Check((await session.LoginAsync(id)).Success); - var opened = await bridge.OpenAsync(session, cache, id, api, epoch, e => e == epoch); - Check(opened.Success); return opened.Handle; - } - internal async Task Execute() - { - // Never disturb a guard held by another validation or a controlled login. - Check(PlayerKVGameLoadGuard.TryEnter(out guard)); guard.Dispose(); guard = null; - Directory.CreateDirectory(cache); bridge = new PlayerKVGameSessionBridge(KV); - var a = await Open("101"); - var present = KVMgr.ReadKV(a, "k"); Check(present.Success && present.Found == true && present.Value == "A"); - Check(KVMgr.ReadKV(a, "missing").Found == false); - Check(KVMgr.ReadKV(a, "empty").Found == true && KVMgr.ReadKV(a, "empty").Value == ""); - Check(KVMgr.ReadKV(a, null).Found == null); - var edit = KVMgr.WriteKV(a, "k", "remote"); Check(edit.Accepted && edit.Ticket != null && writes == 0); - var local = KVMgr.WriteKV(a, "k", "local", false); Check(local.Accepted && local.Ticket == null); - Check(KVMgr.ReadKV(a, "k").Value == "local"); - var flush = await KVMgr.FlushKVAsync(a); Check(flush.Confirmed == 1 && remote["101"]["k"] == "remote"); - Check((await KVMgr.WaitForKVTicketAsync(a, edit.Ticket)).Status == PlayerKVTicketStatus.Confirmed); - await bridge.CloseAsync(); epoch++; - var b = await Open("102"); var writesBefore = writes; - Check(KVMgr.ReadKV(a, "k").Error == PlayerKVKeyReadError.StaleOrClosing); - Check(!KVMgr.WriteKV(a, "k", "late").Accepted); - Check((await KVMgr.FlushKVAsync(a)).Blocked == 1); - Check((await KVMgr.WaitForKVTicketAsync(b, edit.Ticket)).Status == PlayerKVTicketStatus.Blocked); - Check(KVMgr.ReadKV(b, "k").Value == "B" && writes == writesBefore); - Check(PlayerKVGameLoadGuard.TryEnter(out guard)); - Check(KVMgr.ReadKV(null, null).Error == PlayerKVKeyReadError.LoadGuardActive); - Check(KVMgr.WriteKV(null, null, null).StateResult.Error == PlayerKVChangeError.Blocked); - Check((await KVMgr.FlushKVAsync(b)).TransportError == PlayerKVError.Cancelled); - Check((await KVMgr.WaitForKVTicketAsync(b, null)).TransportError == PlayerKVError.Cancelled); - Check(guard.Violations == 4 && guard.Count(PlayerKVGuardPoint.ReadLocal) == 1 && guard.Count(PlayerKVGuardPoint.Update) == 1 && guard.Count(PlayerKVGuardPoint.Sync) == 2); - Check(auth == 2 && gets == 2 && writes == 1); - await Close(); - return JsonConvert.SerializeObject(new { success = true, assertions, auth, gets, writes, formalRequests = 0, restored = true, cache }); - } - internal async Task Close() - { - if (bridge != null) await bridge.CloseAsync(); - foreach (var session in sessions) session.Dispose(); sessions.Clear(); - guard?.Dispose(); guard = null; - } - } - } -} -#endif diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveRouteEditorValidationHost.cs.meta b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveRouteEditorValidationHost.cs.meta deleted file mode 100644 index cfa3852f6..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveRouteEditorValidationHost.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 860b04f8a2a64eb8acf77e96695f6c54 diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveSchema.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveSchema.cs deleted file mode 100644 index 31750be99..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveSchema.cs +++ /dev/null @@ -1,1168 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace game.PlayerDataStorage -{ - // Pure decoding; Valid is only issued after the complete 31-module graph is checked. - internal static class PlayerKVSaveSchema - { - static readonly CultureInfo Invariant = CultureInfo.InvariantCulture; - static readonly string[] CoreKeys = { "Lv", "Gold", "vipAllScore", "Energy", "Diamond", "Magnification", - "EquipRodID", "LastEnergyRecoveryTime", "RewardNewMap", "EnergyRM", "GoldRM", "DiamondTrue", - "CurrentMapId", "LastMapId", "FishingFrequency", "AllFishingFrequency", "HeistGameCount", "BombGameCount", "FishHuntGameCount" }; - static readonly string[] Aliases = { "lv", "gold", "vipS", "energy", "pearl", "mag", "rodID", "EnergyTime", - "rewardNewMap", "energyRM", "goldRM", "diamond", "cMapID", "lMapID", "FF", "AFF", "HGC", "BGC", "FHGC" }; - - internal static PlayerKVSchemaResult Decode(PlayerKVLoginPrepareResult prepared,PlayerKVAccountDescriptor account, - string expectedId,long epoch,bool current,PlayerKVSchemaSnapshot snapshot,string expectedVersion,PlayerKVIdentitySnapshot identity) - { - var errors=new PlayerKVSchemaDiagnostics(); - PlayerKVSchemaResult Fail(PlayerKVSchemaVerdict verdict) => new PlayerKVSchemaResult(verdict,errors); - if(!current || prepared==null || !prepared.Prepared || account==null || prepared.PlayerId!=expectedId || - account.PlayerId!=expectedId || prepared.Epoch!=epoch || account.Epoch!=epoch) return Fail(PlayerKVSchemaVerdict.Stale); - var raw=prepared.Data; - if(raw.Count==0) return Fail(account.NewlyCreated ? PlayerKVSchemaVerdict.EmptyNew : PlayerKVSchemaVerdict.EmptyExisting); - if(snapshot==null || snapshot.Version!=expectedVersion || identity==null) return Fail(PlayerKVSchemaVerdict.UnsupportedSchema); - var modern=DecodeModern(raw,errors); - if(modern==null) return Fail(PlayerKVSchemaVerdict.Malformed); - var player=DecodePlayer(raw,modern,snapshot,errors); - var modules=new object[] - { - player,player?.Core,DecodeFish(raw,modern,snapshot,errors),DecodeShop(raw,snapshot,errors), - DecodeEventBase(raw,modern,snapshot,errors),DecodeBuffs(raw,snapshot,errors),DecodeCamp(raw,errors), - DecodeAchievements(raw,modern,snapshot,errors),DecodeFishingBox(raw,modern,errors),DecodeGuides(raw,errors), - DecodeBattlePass(raw,snapshot,errors),DecodeMonthlySign(raw,errors),DecodeTriggers(raw,errors),DecodeClub(raw,snapshot,errors), - DecodeChallenge(raw,snapshot,errors),DecodeOffer(raw,false,snapshot,errors),DecodeOffer(raw,true,snapshot,errors), - DecodePartner(raw,snapshot,errors),DecodeCube(raw,snapshot,errors),DecodeEventPack(raw,snapshot,errors), - DecodePiggyBank(raw,snapshot,errors),DecodeBargain(raw,snapshot,errors),DecodeFootPrint(raw,errors),DecodeShootingRange(raw,snapshot,errors), - DecodePotion(raw,errors),DecodePinball(raw,snapshot,errors),DecodeScratch(raw,snapshot,errors), - new PlayerKVProgressPackPair(DecodeProgressPack(raw,false,errors),DecodeProgressPack(raw,true,errors)), - DecodePinata(raw,errors),PlayerKVEmptyModuleState.Instance,DecodeLogin(raw,identity,errors) - }; - if(errors.TotalErrors>0) - { - // Core classification has precedence; remaining failures are deterministic by module/field order. - if(errors.Count(1,PlayerKVSchemaError.MissingCore)>0) return Fail(PlayerKVSchemaVerdict.MissingCore); - if(errors.Count(1,PlayerKVSchemaError.ConflictingRepresentations)>0) return Fail(PlayerKVSchemaVerdict.ConflictingRepresentations); - var code=errors.Details[0].Code; - return Fail(code==PlayerKVSchemaError.UnsupportedSchema ? PlayerKVSchemaVerdict.UnsupportedSchema : - code==PlayerKVSchemaError.ConflictingRepresentations ? PlayerKVSchemaVerdict.ConflictingRepresentations : PlayerKVSchemaVerdict.Malformed); - } - var topKeys=new HashSet(CoreKeys,StringComparer.Ordinal); - topKeys.UnionWith(("NewPlayerDataDic NewRodList SeasonId IsOpenAppraise InfiniteBuildingData RodData RodLevelData FishSwimToMap FishSwimToMapCount MapProgress HonorLevelData InitRodAccessoriesData LuckDataDic "+ - "ShopPackBuyCount ShopAllPackBuyCount ShopGiftBuyCount Voucher ChainPackDataNew VIPAdPackData TurntableAdData BuyData AdvertAllCount DiamondShopRefreshCount DiamondShopRefreshTime DiamondShopItemRecords BlackFridayCouponDate "+ - "LimitedTimeEventDic FixedTimeEventDic ETDropAfterDropDic RankTargetCount WheelLevelCount TurntableRoll WheelOperateCount AllWheelOperateCount WheelLevelFreeCount PVPToken "+ - "BuffDataList TargetBuffDataList FishDailyBuff GlobalBuffDataList IsFix IsOpenSkyscraper CampDataDic AchievementData FishingBoxData GuideSaveData GuideSaveDataNew BattlePassRecord BattleTask BattlePassRecordTask MonthlySignEvent "+ - "TriggerPackDataList GiftVIPDData FixedTimeShopDic ClubSignin LureDonateData IsOpenClubRed FishingChallengeData OfferChainsChestData OfferDiscoPartyManager EventPartnerGatherData EventCubeMeltData EventPackData PiggyBankPackData GeneralEventPackData FootPrint EventShootingRangeData epdk epbdk estdk ThanksGivingPackData ThanksGivingPackMigrationData EventPinataPackData MMTest EAccoutUrl TapJoy_Diamond hwGoogle hwFacebook Apple").Split(' ')); - if(identity.Channel!=PlayerKVIdentityChannel.none && identity.Channel!=PlayerKVIdentityChannel.hwGuest) topKeys.Add(identity.Channel.ToString()); - var modernKeys=new HashSet(Aliases,StringComparer.Ordinal); - modernKeys.UnionWith(new[]{"newData","vipL","LDD","ld","AD","ad","bd","ct","rt"}); - int unconsumedTop=raw.Keys.Count(k=>!topKeys.Contains(k) && !System.Text.RegularExpressions.Regex.IsMatch(k,"^Map_(5_)?([0-9]+)$")); - int unconsumedModern=modern.Keys.Count(k=>!modernKeys.Contains(k)); - return new PlayerKVSchemaResult(PlayerKVSchemaVerdict.Valid,errors,new PlayerKVDecodedSave(expectedId,epoch,snapshot.Version,raw,modules,unconsumedTop,unconsumedModern)); - } - - internal static PlayerKVLoginState DecodeLogin(IReadOnlyDictionary raw,PlayerKVIdentitySnapshot identity, - PlayerKVSchemaDiagnostics errors) - { - if(identity==null) throw new ArgumentNullException(nameof(identity)); - int before=errors.TotalErrors; - var normalized=new Dictionary(StringComparer.Ordinal); - int mm=errors.Capture(31,0,()=> - { - int value=0; bool normalize=true; - if(raw.TryGetValue("MMTest",out var text)) - { - if(text==null) throw new PlayerKVSchemaException(); - if(text=="MMFailParam" || text.StartsWith("MMFailParam#",StringComparison.Ordinal)) - { - var parts=text.Split('#'); if(parts.Length!=2) throw new PlayerKVSchemaException(); - value=Int32(parts[1]); normalize=false; - } - } - else if(identity.NewlyCreated) - { - if(string.IsNullOrEmpty(identity.UserId) || identity.UserId.Length>16 || identity.UserId.Any(c=>!Uri.IsHexDigit(c)) || - !ulong.TryParse(identity.UserId,NumberStyles.AllowHexSpecifier,Invariant,out var id)) throw new PlayerKVSchemaException(); - value=(int)(id%16); - } - if(normalize) normalized["MMTest"]="MMFailParam#"+value.ToString(Invariant); - return value; - }); - var linked=new HashSet(identity.Linked); - var channels=new HashSet{PlayerKVIdentityChannel.hwGoogle,PlayerKVIdentityChannel.hwFacebook,PlayerKVIdentityChannel.Apple}; - bool hasChannel=identity.Channel!=PlayerKVIdentityChannel.hwGuest && identity.Channel!=PlayerKVIdentityChannel.none; - if(hasChannel) channels.Add(identity.Channel); - int field=1; - foreach(var channel in channels.OrderBy(c=>(int)c)) - { - string key=channel.ToString(); - if(raw.TryGetValue(key,out var text)) - { - int flag=errors.Capture(31,field,()=> { if(text!="0" && text!="1") throw new PlayerKVSchemaException(); return text=="1" ? 1 : 0; }); - if(flag==1) linked.Add(channel); - } - field++; - } - if(hasChannel && !raw.ContainsKey(identity.Channel.ToString())) - { normalized[identity.Channel.ToString()]="1"; linked.Add(identity.Channel); } - var urls=raw.TryGetValue("EAccoutUrl",out var urlsText) ? errors.Capture(31,6,()=>StringMap(urlsText)) : new Dictionary(); - int balance=raw.TryGetValue("TapJoy_Diamond",out var balanceText) ? errors.Capture(31,7,()=>Int32(balanceText)) : 0; - return errors.TotalErrors==before ? new PlayerKVLoginState(mm,balance,urls,normalized,linked,identity.Channel) : null; - } - internal static int Int32(string value) - { - if (!int.TryParse(value, NumberStyles.AllowLeadingSign, Invariant, out var n)) throw new PlayerKVSchemaException(); - return n; - } - internal static ulong UInt64(string value) - { - if (!ulong.TryParse(value, NumberStyles.None, Invariant, out var n)) throw new PlayerKVSchemaException(); - return n; - } - internal static float Single(string value) - { - if (!float.TryParse(value, NumberStyles.Float, Invariant, out var n) || float.IsNaN(n) || float.IsInfinity(n)) - throw new PlayerKVSchemaException(); - return n; - } - internal static DateTime Date(string value, PlayerKVSchemaSnapshot snapshot) - { - if (System.DateTime.TryParseExact(value, "O", Invariant, DateTimeStyles.RoundtripKind, out var roundtrip)) return roundtrip; - const DateTimeStyles styles = DateTimeStyles.RoundtripKind | DateTimeStyles.NoCurrentDateDefault; - bool local = System.DateTime.TryParse(value, snapshot.Culture, styles, out var a); - bool invariant = System.DateTime.TryParse(value, Invariant, styles, out var b); - if (local && invariant && a != b) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - if (local) return a; - if (invariant) return b; - throw new PlayerKVSchemaException(); - } - internal static JToken Json(string value) - { - if (value == null) throw new PlayerKVSchemaException(); - StrictJsonSyntax.Validate(value); - try - { - // Json.NET's default parser accepts comments, constructors and non-finite literals. - // Reject those before materializing tokens; never deserialize a runtime game class here. - using (var check = new JsonTextReader(new StringReader(value)) { DateParseHandling = DateParseHandling.None }) - while (check.Read()) - { - if (check.TokenType == JsonToken.Comment || check.TokenType == JsonToken.StartConstructor || check.TokenType == JsonToken.Undefined) - throw new PlayerKVSchemaException(); - if (check.TokenType == JsonToken.Float && check.Value is double d && (double.IsNaN(d) || double.IsInfinity(d))) - throw new PlayerKVSchemaException(); - } - using (var reader = new JsonTextReader(new StringReader(value)) { DateParseHandling = DateParseHandling.None }) - { - var result = JToken.Load(reader, new JsonLoadSettings { DuplicatePropertyNameHandling = DuplicatePropertyNameHandling.Error }); - if (reader.Read() || result.Type == JTokenType.Null) throw new PlayerKVSchemaException(); - return result; - } - } - catch (JsonException) { throw new PlayerKVSchemaException(); } - } - internal static JObject Object(JToken token) - { if (!(token is JObject obj)) throw new PlayerKVSchemaException(); return obj; } - internal static string String(JToken token) - { if (token == null || token.Type != JTokenType.String) throw new PlayerKVSchemaException(); return (string)token; } - internal static int Integer(JToken token) - { if (token == null || token.Type != JTokenType.Integer) throw new PlayerKVSchemaException(); return Int32(token.ToString(Formatting.None)); } - internal static ulong Unsigned(JToken token) - { if (token == null || token.Type != JTokenType.Integer) throw new PlayerKVSchemaException(); return UInt64(token.ToString(Formatting.None)); } - internal static long Signed64(JToken token) - { - if (token == null || token.Type != JTokenType.Integer || - !long.TryParse(token.ToString(Formatting.None), NumberStyles.AllowLeadingSign, Invariant, out var value)) - throw new PlayerKVSchemaException(); - return value; - } - internal static bool Boolean(JToken token) - { if (token == null || token.Type != JTokenType.Boolean) throw new PlayerKVSchemaException(); return (bool)token; } - internal static float Finite(JToken token) - { - if (token == null || (token.Type != JTokenType.Integer && token.Type != JTokenType.Float)) throw new PlayerKVSchemaException(); - return Single(token.ToString(Formatting.None)); - } - internal static List IntegerList(JToken token) - { - if (!(token is JArray array)) throw new PlayerKVSchemaException(); - return array.Select(Integer).ToList(); - } - internal static PlayerKVPiggyBankState DecodePiggyBank(IReadOnlyDictionary raw, - PlayerKVSchemaSnapshot snapshot, PlayerKVSchemaDiagnostics errors) - { - if (!raw.TryGetValue("PiggyBankPackData", out var text)) return PlayerKVPiggyBankState.Missing(); - return errors.Capture(21, 0, () => - { - var obj = Object(Json(text)); - var currentEventID = Integer(obj["currentEventID"]); - var purchaseCount = Integer(obj["purchaseCount"]); - var VIPLvlWhenEventActivate = Integer(obj["VIPLvlWhenEventActivate"]); - var savingProgress = Integer(obj["savingProgress"]); - var redirectID = Integer(obj["redirectID"]); - var doNeedTrigger = Boolean(obj["doNeedTrigger"]); - var isTriggered = Boolean(obj["isTriggered"]); - var inflation = Finite(obj["inflation"]); - if (redirectID == 0) redirectID = 4055001; - if (!snapshot.HasPack(redirectID)) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - return new PlayerKVPiggyBankState(true, currentEventID, purchaseCount, VIPLvlWhenEventActivate, savingProgress, redirectID, doNeedTrigger, isTriggered, inflation); - }); - } - internal static PlayerKVBargainState DecodeBargain(IReadOnlyDictionary raw, - PlayerKVSchemaSnapshot snapshot, PlayerKVSchemaDiagnostics errors) - { - if (!raw.TryGetValue("GeneralEventPackData", out var text)) return PlayerKVBargainState.Missing(); - return errors.Capture(22, 0, () => - { - var obj = Object(Json(text)); - var currentEventID = Integer(obj["currentEventID"]); - var redirectID = Integer(obj["redirectID"]); - var VIPLvlWhenEventActivate = Integer(obj["VIPLvlWhenEventActivate"]); - var purchaseCount = Integer(obj["purchaseCount"]); - var savingProgress = Integer(obj["savingProgress"]); - var discountLvl = Integer(obj["discountLvl"]); - var visualProgress = Integer(obj["visualProgress"]); - var visualDiscountLvl = Integer(obj["visualDiscountLvl"]); - var rodID = Integer(obj["rodID"]); - var lastPackIDBought = Integer(obj["lastPackIDBought"]); - var packID = Integer(obj["packID"]); - var doNeedTrigger = Boolean(obj["doNeedTrigger"]); - var isTriggered = Boolean(obj["isTriggered"]); - var inflation = Finite(obj["inflation"]); - var selectionToken = obj["selections"]; - var selections = selectionToken != null && selectionToken.Type == JTokenType.Null ? null : IntegerList(selectionToken); - if (!snapshot.HasPackType(redirectID, 3)) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - return new PlayerKVBargainState(true, currentEventID, redirectID, VIPLvlWhenEventActivate, purchaseCount, savingProgress, discountLvl, visualProgress, visualDiscountLvl, rodID, lastPackIDBought, packID, doNeedTrigger, isTriggered, inflation, selections); - }); - } - internal static PlayerKVShootingRangeState DecodeShootingRange(IReadOnlyDictionary raw, - PlayerKVSchemaSnapshot snapshot, PlayerKVSchemaDiagnostics errors) - { - if (!raw.TryGetValue("EventShootingRangeData", out var text)) return PlayerKVShootingRangeState.Missing(); - return errors.Capture(24, 0, () => - { - var obj = Object(Json(text)); - var EventId = Integer(obj["EventId"]); - var CycleId = Integer(obj["CycleId"]); - var RedirectId = Integer(obj["RedirectId"]); - var AmmoCount = Integer(obj["AmmoCount"]); - var CurrentStageIdx = Integer(obj["CurrentStageIdx"]); - var ChainProgress = Integer(obj["ChainProgress"]); - var RewardFlag = Signed64(obj["RewardFlag"]); - var TargetFlag = Signed64(obj["TargetFlag"]); - var HasBeenOpened = Boolean(obj["HasBeenOpened"]); - var Inflation = Finite(obj["Inflation"]); - return new PlayerKVShootingRangeState(true, EventId, CycleId, RedirectId, AmmoCount, CurrentStageIdx, ChainProgress, RewardFlag, TargetFlag, HasBeenOpened, Inflation); - }); - } - internal static Dictionary StringMap(string text) - { - var result = new Dictionary(StringComparer.Ordinal); - foreach (var p in Object(Json(text)).Properties()) result.Add(p.Name, String(p.Value)); - return result; - } - internal static Dictionary DecodeModern(IReadOnlyDictionary raw, PlayerKVSchemaDiagnostics errors) - { - if (!raw.TryGetValue("NewPlayerDataDic", out var text)) return new Dictionary(StringComparer.Ordinal); - return errors.Capture(1, 0, () => StringMap(text)); - } - static object CoreValue(int slot, string value, PlayerKVSchemaSnapshot snapshot) - { - if (slot == 1 || slot == 10) return UInt64(value); - if (slot == 7) return Date(value, snapshot); - int n = Int32(value); - if (slot == 6) { if (!snapshot.HasRod(n)) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); } - else if (slot == 12 || slot == 13) { if (n != 0 && !snapshot.HasMap(n)) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); } - else if (slot != 8 && n < (slot == 0 ? 1 : 0)) throw new PlayerKVSchemaException(); - return n; - } - internal static PlayerKVCoreState DecodeCore(IReadOnlyDictionary raw, - IReadOnlyDictionary modern, PlayerKVSchemaSnapshot snapshot, PlayerKVSchemaDiagnostics errors) - { - if (modern == null) return null; // Outer representation already rejected; no legacy fallback. - int before = errors.TotalErrors; - object[] selected = null; - if (modern.TryGetValue("newData", out var compact)) - { - var parts = compact?.Split(','); - if (parts == null || parts.Length != 19) { errors.Add(1, 1, PlayerKVSchemaError.Malformed); return null; } - selected = new object[19]; - for (int i = 0; i < 19; i++) - { - try { selected[i] = CoreValue(i, parts[i], snapshot); } - catch (PlayerKVSchemaException ex) { errors.Add(i >= 16 ? 2 : 1, i + 2, ex.Code); } - } - } - bool completeLegacy = CoreKeys.All(raw.ContainsKey); - if (selected == null && !completeLegacy) errors.Add(1, 1, PlayerKVSchemaError.MissingCore); - var legacy = new object[19]; - for (int i = 0; i < 19; i++) - { - try - { - if (raw.TryGetValue(CoreKeys[i], out var old)) - { - legacy[i] = CoreValue(i, old, snapshot); - if (selected != null && selected[i] != null && !Equals(selected[i], legacy[i])) - errors.Add(i >= 16 ? 2 : 1, 32 + i, PlayerKVSchemaError.ConflictingRepresentations); - } - } - catch (PlayerKVSchemaException ex) { errors.Add(i >= 16 ? 2 : 1, 32 + i, ex.Code); } - try - { - if (modern.TryGetValue(Aliases[i], out var alias)) - { - var value = CoreValue(i, alias, snapshot); - var canonical = selected != null ? selected[i] : legacy[i]; - if (canonical != null && !Equals(canonical, value)) - errors.Add(i >= 16 ? 2 : 1, 64 + i, PlayerKVSchemaError.ConflictingRepresentations); - } - } - catch (PlayerKVSchemaException ex) { errors.Add(i >= 16 ? 2 : 1, 64 + i, ex.Code); } - } - return errors.TotalErrors == before ? new PlayerKVCoreState(selected ?? legacy) : null; - } - - static PlayerKVAchievementValue AchievementSlots(string text) - { - var parts = text?.Split('|'); - if (parts == null || parts.Length != 3) throw new PlayerKVSchemaException(); - return new PlayerKVAchievementValue(Int32(parts[0]), UInt64(parts[1]), Int32(parts[2])); - } - static void AddAchievement(Dictionary result, int key, PlayerKVAchievementValue value) - { if (result.ContainsKey(key)) throw new PlayerKVSchemaException(); result.Add(key, value); } - static Dictionary Achievements(string text, int format, PlayerKVSchemaSnapshot snapshot) - { - var result = new Dictionary(); - if (format == 2) - { - if (text == "") return result; - if (text == null) throw new PlayerKVSchemaException(); - foreach (var record in text.Split(';')) - { - var parts = record.Split(':'); - if (parts.Length != 2) throw new PlayerKVSchemaException(); - AddAchievement(result, snapshot.Condition(parts[0]), AchievementSlots(parts[1])); - } - } - else foreach (var p in Object(Json(text)).Properties()) - { - PlayerKVAchievementValue value; - if (format == 1) value = AchievementSlots(String(p.Value)); - else - { - var obj = Object(p.Value); - value = new PlayerKVAchievementValue(Integer(obj["Id"]), Unsigned(obj["Target"]), Integer(obj["day"])); - } - AddAchievement(result, snapshot.Condition(p.Name), value); - } - return result; - } - internal static PlayerKVAchievementState DecodeAchievements(IReadOnlyDictionary raw, - IReadOnlyDictionary modern, PlayerKVSchemaSnapshot snapshot, PlayerKVSchemaDiagnostics errors) - { - if (modern == null) return null; - int before = errors.TotalErrors; - var representations = new List>(); - string[] keys = { "AchievementData", "AD", "ad" }; - for (int format = 0; format < 3; format++) - { - var source = format == 0 ? raw : modern; - if (!source.TryGetValue(keys[format], out var text)) continue; - int captured = format; - var state = errors.Capture(8, format, () => Achievements(text, captured, snapshot)); - if (state != null) representations.Add(state); - } - for (int a = 0; a < representations.Count; a++) - for (int b = a + 1; b < representations.Count; b++) - foreach (var item in representations[a].OrderBy(x => x.Key)) - if (representations[b].TryGetValue(item.Key, out var other) && !item.Value.Same(other)) - errors.Add(8, 3, PlayerKVSchemaError.ConflictingRepresentations); - if (errors.TotalErrors != before) return null; - return new PlayerKVAchievementState(representations.Count == 0 - ? new Dictionary() : representations[representations.Count - 1]); - } - internal static Dictionary IntegerDictionary(JToken token,Func decode) - { - var result=new Dictionary(); - foreach(var p in Object(token).Properties()) - { - int key=Int32(p.Name); - if(result.ContainsKey(key)) throw new PlayerKVSchemaException(); - result.Add(key,decode(p.Value)); - } - return result; - } - internal static List ArrayValues(JToken token,Func decode) - { - if(!(token is JArray array)) throw new PlayerKVSchemaException(); - return array.Select(decode).ToList(); - } - static PlayerKVBuffValue Buff(JToken token,PlayerKVSchemaSnapshot snapshot) - { - var obj=Object(token); - // isNew/addDown are explicitly NonSerialized runtime fields, not saved fields. - return new PlayerKVBuffValue(Integer(obj["SortID"]),Integer(obj["sourceID"]),Integer(obj["buffID"]), - Boolean(obj["isEnd"]),Date(String(obj["buffEndTime"]),snapshot)); - } - internal static PlayerKVBuffState DecodeBuffs(IReadOnlyDictionary raw,PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - int before=errors.TotalErrors; - var map=new Dictionary(); var global=new Dictionary(); - var target=new List(); PlayerKVBuffValue daily=null; - if(raw.TryGetValue("BuffDataList",out var text)) map=errors.Capture(6,0,()=>IntegerDictionary(Json(text),t=>Buff(t,snapshot))); - if(raw.TryGetValue("TargetBuffDataList",out var targetText)) target=errors.Capture(6,1,()=>ArrayValues(Json(targetText),t=>Buff(t,snapshot))); - if(raw.TryGetValue("FishDailyBuff",out var dailyText)) daily=errors.Capture(6,2,()=>Buff(Json(dailyText),snapshot)); - if(raw.TryGetValue("GlobalBuffDataList",out var globalText)) global=errors.Capture(6,3,()=>IntegerDictionary(Json(globalText),t=>Buff(t,snapshot))); - return errors.TotalErrors==before ? new PlayerKVBuffState(map,global,target,daily) : null; - } - static PlayerKVTriggerValue Trigger(JToken token) - { - var obj=Object(token); - return new PlayerKVTriggerValue(Integer(obj["ID"]),Integer(obj["index"]),Integer(obj["lastID"]), - Integer(obj["vipLevel"]),Integer(obj["mapID"]),String(obj["time"])); - } - static PlayerKVGiftVipValue GiftVip(JToken token) - { - var obj=Object(token); - return new PlayerKVGiftVipValue(Integer(obj["oldVipLevel"]),Integer(obj["curVipLevel"]),Integer(obj["timer"])); - } - internal static PlayerKVFixedTimeValue FixedTime(JToken token) - { var obj=Object(token); return new PlayerKVFixedTimeValue(Integer(obj["id"]),String(obj["endTime"])); } - internal static PlayerKVTriggerState DecodeTriggers(IReadOnlyDictionary raw,PlayerKVSchemaDiagnostics errors) - { - int before=errors.TotalErrors; - var packs=new List(); var gifts=new Dictionary(StringComparer.Ordinal); - var fixedValues=new Dictionary(); - if(raw.TryGetValue("TriggerPackDataList",out var text)) packs=errors.Capture(13,0,()=>ArrayValues(Json(text),Trigger)); - if(raw.TryGetValue("GiftVIPDData",out var giftText)) gifts=errors.Capture(13,1,()=>Object(Json(giftText)).Properties().ToDictionary(p=>p.Name,p=>GiftVip(p.Value),StringComparer.Ordinal)); - if(raw.TryGetValue("FixedTimeShopDic",out var fixedText)) fixedValues=errors.Capture(13,2,()=>IntegerDictionary(Json(fixedText),FixedTime)); - return errors.TotalErrors==before ? new PlayerKVTriggerState(packs,gifts,fixedValues) : null; - } - - static PlayerKVDailyValue Daily(JToken token) - { var o=Object(token); return new PlayerKVDailyValue(Integer(o["ID"]),Integer(o["index"]),Integer(o["lastID"]),String(o["time"])); } - static PlayerKVAdvertValue Advert(JToken token) - { var o=Object(token); return new PlayerKVAdvertValue(Integer(o["ID"]),Integer(o["index"]),Integer(o["day"]),o["cdTime"]?.Type == JTokenType.Null ? null : String(o["cdTime"]),Boolean(o["isOpen"])); } - static PlayerKVShopItemValue ShopItem(JToken token) - { var o=Object(token); return new PlayerKVShopItemValue(Integer(o["ItemID"]),Finite(o["Discount"]),Integer(o["hasBought"])); } - static PlayerKVCouponState Coupon(string text) - { - if(text==null) throw new PlayerKVSchemaException(); - var fields=text.Split(','); if(fields.Length!=7 && fields.Length!=9) throw new PlayerKVSchemaException(); - var n=fields.Select(Int32).ToArray(); - if(n.Length==9 && n[8]!=0 && n[8]!=1) throw new PlayerKVSchemaException(); - DateTime date; - try { date=new DateTime(n[0],n[1],n[2],n[3],n[4],n[5]); } - catch(ArgumentOutOfRangeException) { throw new PlayerKVSchemaException(); } - return new PlayerKVCouponState(date,n[6],n.Length==9 ? n[7] : 0,n.Length==9 && n[8]==1); - } - internal static PlayerKVShopState DecodeShop(IReadOnlyDictionary raw,PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - int before=errors.TotalErrors; - T Read(string key,int field,Func decode,T missing) => raw.TryGetValue(key,out var text) ? errors.Capture(4,field,()=>decode(text)) : missing; - var daily=Read("ShopPackBuyCount",0,t=>Object(Json(t)).Properties().ToDictionary(p=>p.Name,p=>Integer(p.Value),StringComparer.Ordinal),new Dictionary()); - var all=Read("ShopAllPackBuyCount",1,t=>IntegerMap(Json(t)),new Dictionary()); - var gift=Read("ShopGiftBuyCount",2,t=>IntegerMap(Json(t)),new Dictionary()); - int voucher=Read("Voucher",3,Int32,0); - var chain=Read("ChainPackDataNew",4,t=>Daily(Json(t)),(PlayerKVDailyValue)null); - var vip=Read("VIPAdPackData",5,t=>Advert(Json(t)),(PlayerKVAdvertValue)null); - var turntable=Read("TurntableAdData",6,t=>Daily(Json(t)),(PlayerKVDailyValue)null); - var buy=Read("BuyData",7,t=>ArrayValues(Json(t),Finite),new List()); - var advert=Read("AdvertAllCount",8,t=>IntegerMap(Json(t)),new Dictionary()); - int count=Read("DiamondShopRefreshCount",9,Int32,0); - var time=Read("DiamondShopRefreshTime",10,t=>Date(t,snapshot),default(DateTime)); - var items=Read("DiamondShopItemRecords",11,t=>IntegerDictionary(Json(t),ShopItem),new Dictionary()); - var coupon=Read("BlackFridayCouponDate",12,Coupon,new PlayerKVCouponState(default,0,0,false)); - return errors.TotalErrors==before ? new PlayerKVShopState(daily,all,gift,advert,items,buy,voucher,count,time,chain,turntable,vip,coupon) : null; - } - - static PlayerKVLimitedValue Limited(JToken token) - { - var o=Object(token); var t=o["duration"]; - if(t==null || (t.Type!=JTokenType.Float && t.Type!=JTokenType.Integer) || - !double.TryParse(t.ToString(Formatting.None),NumberStyles.Float,Invariant,out var d) || double.IsNaN(d) || double.IsInfinity(d)) throw new PlayerKVSchemaException(); - return new PlayerKVLimitedValue(Integer(o["id"]),d,String(o["startTime"])); - } - static Dictionary PreferIntMap(IReadOnlyDictionary raw,string oldKey, - IReadOnlyDictionary modern,string newKey,PlayerKVSchemaDiagnostics errors,int module,int field) - { - Dictionary old=null,current=null; - if(raw.TryGetValue(oldKey,out var text)) old=errors.Capture(module,field,()=>IntegerMap(Json(text))); - if(modern.TryGetValue(newKey,out var compact)) current=errors.Capture(module,field+1,()=>ColonIntegers(compact)); - if(old!=null && current!=null && old.Any(p=>current.TryGetValue(p.Key,out var n) && n!=p.Value)) errors.Add(module,field,PlayerKVSchemaError.ConflictingRepresentations); - return current ?? old ?? new Dictionary(); - } - internal static PlayerKVEventBaseState DecodeEventBase(IReadOnlyDictionary raw,IReadOnlyDictionary modern, - PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - int before=errors.TotalErrors; - T Read(string key,int field,Func decode,T missing) => raw.TryGetValue(key,out var text) ? errors.Capture(5,field,()=>decode(text)) : missing; - var limited=Read("LimitedTimeEventDic",0,t=> - { - var all=IntegerDictionary(Json(t),Limited); - // Validate even expired entries, then filter solely against the epoch's captured clock. - return all.Where(p=>(snapshot.NowGame-Date(p.Value.StartTime,snapshot)).TotalMinutesp.Key,p=>p.Value); - },new Dictionary()); - var fixedValues=Read("FixedTimeEventDic",1,t=>IntegerDictionary(Json(t),FixedTime),new Dictionary()); - var target=PreferIntMap(raw,"ETDropAfterDropDic",modern,"ct",errors,5,2); - var rank=PreferIntMap(raw,"RankTargetCount",modern,"rt",errors,5,4); - var wheel=Read("WheelLevelCount",6,t=>IntegerMap(Json(t)),new Dictionary()); - int coupon=Read("TurntableRoll",7,Int32,snapshot.InitWheelTicket),operate=Read("WheelOperateCount",8,Int32,0), - allOperate=Read("AllWheelOperateCount",9,Int32,0),free=Read("WheelLevelFreeCount",10,Int32,0),pvp=Read("PVPToken",11,Int32,0); - return errors.TotalErrors==before ? new PlayerKVEventBaseState(limited,fixedValues,target,rank,wheel,coupon,operate,allOperate,free,pvp) : null; - } - - static PlayerKVFishValue FishValue(JToken token,bool compact) - { - if(!compact) - { - var o=Object(token); - return new PlayerKVFishValue(Integer(o["Level"]),Finite(o["MaxG"]),Integer(o["TotalCard"]),Integer(o["TotalNum"]),Boolean(o["NewFish"])); - } - var f=String(token).Split('|'); - if(f.Length!=5 && f.Length!=9) throw new PlayerKVSchemaException(); - int c=f.Length==5 ? 2 : 5; - if(!bool.TryParse(f[c+2],out var isNew)) throw new PlayerKVSchemaException(); - return new PlayerKVFishValue(Int32(f[0]),Single(f[1]),Int32(f[c]),Int32(f[c+1]),isNew, - f.Length==9 ? new[] { f[2],f[3],f[4],f[8] } : Array.Empty()); - } - static PlayerKVRodAccessories Accessories(string text) - { - var o=Object(Json(text)); - return new PlayerKVRodAccessories(Integer(o["GloveID"]),IntegerMap(o["RodToSkin"]),IntegerList(o["GloveIds"]), - IntegerList(o["SkinIds"]),IntegerList(o["GloveNewIds"]),IntegerList(o["SkinNewIds"])); - } - static Dictionary Luck(string text,bool compact) - { - if(text==null) throw new PlayerKVSchemaException(); - Dictionary result; - if(compact) - { - var f=text.Split('|'); if(f.Length!=3) throw new PlayerKVSchemaException(); - result=new Dictionary(StringComparer.Ordinal) { ["InitFishLuck"]=Single(f[0]),["InitBotLuck"]=Single(f[1]),["BotCount"]=Single(f[2]) }; - } - else result=Object(Json(text)).Properties().ToDictionary(p=>p.Name,p=>Finite(p.Value),StringComparer.Ordinal); - if(result.TryGetValue("BotCount",out var count) && ((double)countint.MaxValue || Math.Truncate((double)count)!=count)) - throw new PlayerKVSchemaException(); - return result; - } - static float ConfigFinite(float value) - { if(float.IsNaN(value) || float.IsInfinity(value)) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); return value; } - internal static float RoundFishWeight(float value) - { - float scaled=ConfigFinite(value*100f); - return (float)Math.Round((double)scaled,MidpointRounding.ToEven)/100f; - } - static PlayerKVFishValue DeriveFish(int id,int map,PlayerKVFishValue raw,PlayerKVSchemaSnapshot snapshot,out int cardId) - { - var fish=snapshot.Fish(id); - if(fish==null || fish.Id!=id || fish.Area!=map) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - cardId=fish.Card; var card=snapshot.Card(cardId); - int level=raw.Level,count=raw.Cards; float weight=raw.Weight; - if(fish.Quality<=5) - { - float limit=ConfigFinite(ConfigFinite(fish.Weight)*ConfigFinite(fish.Extra)); - limit=ConfigFinite(limit*ConfigFinite(1f+ConfigFinite(fish.Random))); - if(level>0) - { - if(card==null || card.Id!=cardId || level>card.Weights.Count) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - limit=ConfigFinite(limit*ConfigFinite(1f+ConfigFinite(card.Weights[level-1]))); - } - limit=RoundFishWeight(limit); - if(weight>limit) weight=limit; - } - if(level>0) - { - if(card==null || card.Id!=cardId || card.MaxLevel<1) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - level=Math.Min(level,card.MaxLevel); - if(level>card.Required.Count) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - count=Math.Max(count,card.Required[level-1]); - } - return new PlayerKVFishValue(level,weight,count,raw.Number,raw.New,raw.Compatibility); - } - internal static PlayerKVFishState DecodeFish(IReadOnlyDictionary raw,IReadOnlyDictionary modern, - PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - int before=errors.TotalErrors; - Dictionary Read(string key,int field) => raw.TryGetValue(key,out var text) ? errors.Capture(3,field,()=>IntegerMap(Json(text))) : new Dictionary(); - var rods=Read("RodData",0); var levels=Read("RodLevelData",1); var swim=Read("FishSwimToMap",2); - var swimCount=Read("FishSwimToMapCount",3); var progress=Read("MapProgress",4); var honor=Read("HonorLevelData",5); - PlayerKVRodAccessories accessories=null; - if(raw.TryGetValue("InitRodAccessoriesData",out var acc)) accessories=errors.Capture(3,6,()=>Accessories(acc)); - var lucks=new List>(); - if(raw.TryGetValue("LuckDataDic",out var top)) lucks.Add(errors.Capture(3,7,()=>Luck(top,false))); - if(modern.TryGetValue("LDD",out var oldLuck)) lucks.Add(errors.Capture(3,8,()=>Luck(oldLuck,false))); - if(modern.TryGetValue("ld",out var newLuck)) lucks.Add(errors.Capture(3,9,()=>Luck(newLuck,true))); - for(int i=0;ilucks[j].TryGetValue(p.Key,out var v) && v!=p.Value)) - errors.Add(3,7,PlayerKVSchemaError.ConflictingRepresentations); - var luck=lucks.LastOrDefault() ?? new Dictionary(StringComparer.Ordinal); - var legacy=new Dictionary>(); var current=new Dictionary>(); - int field=100; - foreach(var pair in raw.OrderBy(p=>p.Key,StringComparer.Ordinal)) - { - var match=System.Text.RegularExpressions.Regex.Match(pair.Key,"^Map_(5_)?([0-9]+)$"); - if(!match.Success) continue; - errors.Capture(3,field++,() => - { - string suffix=match.Groups[2].Value; int map=Int32(suffix); - if(map<=0 || suffix!=map.ToString(Invariant)) throw new PlayerKVSchemaException(); - if(!snapshot.HasMap(map)) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - bool compact=match.Groups[1].Success; - var target=compact ? current : legacy; - target.Add(map,IntegerDictionary(Json(pair.Value),t=>FishValue(t,compact))); - return true; - }); - } - foreach(var map in legacy) - if(current.TryGetValue(map.Key,out var other) && map.Value.Any(p=>other.TryGetValue(p.Key,out var v) && !p.Value.Same(v))) - errors.Add(3,10,PlayerKVSchemaError.ConflictingRepresentations); - var selected=legacy.ToDictionary(p=>p.Key,p=>p.Value); - foreach(var map in current) selected[map.Key]=map.Value; - var maps=new Dictionary>(); var fishIndex=new Dictionary(); var cards=new Dictionary(); - // Conflicting raw representations cannot become valid after normalization. - if(errors.TotalErrors==before) - errors.Capture(3,11,() => - { - foreach(var map in selected.OrderBy(p=>p.Key)) - { - var values=new Dictionary(); - foreach(var p in map.Value.OrderBy(p=>p.Key)) - { - var value=DeriveFish(p.Key,map.Key,p.Value,snapshot,out var card); - if(fishIndex.ContainsKey(p.Key) || (cards.TryGetValue(card,out var n) && n!=value.Cards)) - throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - values.Add(p.Key,value); fishIndex.Add(p.Key,value); cards[card]=value.Cards; - } - maps.Add(map.Key,values); - } - return true; - }); - return errors.TotalErrors==before ? new PlayerKVFishState(rods,levels,swim,swimCount,progress,honor,luck,accessories,selected,maps,fishIndex,cards) : null; - } - - internal static PlayerKVPlayerState DecodePlayer(IReadOnlyDictionary raw, - IReadOnlyDictionary modern,PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - int before=errors.TotalErrors; - var core=DecodeCore(raw,modern,snapshot,errors); - var scores=new Dictionary(); var rods=new List(); int season=0; - string building="0"; bool appraise=raw.TryGetValue("IsOpenAppraise",out var appraiseText); - if(appraise && appraiseText==null) errors.Add(1,100,PlayerKVSchemaError.Malformed); - if(raw.TryGetValue("NewRodList",out var rodText)) rods=errors.Capture(1,101,()=>IntegerList(Json(rodText))); - if(raw.TryGetValue("SeasonId",out var seasonText)) season=errors.Capture(1,102,()=>Int32(seasonText)); - if(raw.TryGetValue("InfiniteBuildingData",out var buildingText)) - { - if(buildingText==null) errors.Add(1,103,PlayerKVSchemaError.Malformed); - else building=buildingText; - } - if(modern!=null && modern.TryGetValue("vipL",out var vipText)) - scores=errors.Capture(1,104,() => - { - if(vipText==null) throw new PlayerKVSchemaException(); - var result=new Dictionary(); - if(vipText.Length==0) return result; - foreach(var item in vipText.Split('|')) - { - var fields=item.Split(','); - if(fields.Length!=2) throw new PlayerKVSchemaException(); - int key=Int32(fields[0]); - if(result.ContainsKey(key)) throw new PlayerKVSchemaException(); - result.Add(key,Int32(fields[1])); - } - return result; - }); - return core!=null && modern!=null && errors.TotalErrors==before - ? new PlayerKVPlayerState(core,modern.ToDictionary(p=>p.Key,p=>p.Value,StringComparer.Ordinal),scores,rods,season,appraise,building) : null; - } - static PlayerKVPotionItem PotionItem(JToken token) - { - var obj=Object(token); - int type=Integer(obj["DataType"]); - var shelves=IntegerList(obj["ShelfTypeList"]); var grids=IntegerList(obj["GridStateList"]); - if(type<0 || type>2 || shelves.Any(n=>n<0 || n>1) || grids.Any(n=>n<0 || n>5)) throw new PlayerKVSchemaException(); - return new PlayerKVPotionItem(String(obj["name"]),Integer(obj["index"]),Boolean(obj["isOver"]),type, - IntegerList(obj["ColorTypeList"]),shelves,grids,IntegerList(obj["FromDisplayAreaIndexList"])); - } - internal static PlayerKVPotionState DecodePotion(IReadOnlyDictionary raw,PlayerKVSchemaDiagnostics errors) - { - if(!raw.TryGetValue("epdk",out var text)) return PlayerKVPotionState.Missing(); - return errors.Capture(25,0,() => - { - var obj=Object(Json(text)); - return new PlayerKVPotionState(true, - Integer(obj["EventID"]), - Integer(obj["PotionID"]), - Integer(obj["StageID"]), - Integer(obj["Stage1TotalLevel"]), - Integer(obj["Stage2TotalLevel"]), - Integer(obj["LevelID"]), - Integer(obj["LevelIndex"]), - Integer(obj["CorrectNum"]), - Integer(obj["SubmitNum"]), - Integer(obj["Token"]), - Integer(obj["ConsumedToken"]), - Integer(obj["Rule"]), - Integer(obj["PreEventID"]), - Integer(obj["PrePotionID"]), - Integer(obj["PreStageID"]), - Integer(obj["PreLevelID"]), - Integer(obj["Round"]), - Integer(obj["FirstPlayedEventId"]), - Boolean(obj["IsOver"]), - String(obj["Name"]), - Finite(obj["InflationRate"]), - PotionItem(obj["LevelTargetData"]), - PotionItem(obj["LevelDisplayData"]), - ArrayValues(obj["LevelProcessedList"],PotionItem)); - }); - } - static List CsvIntegers(string text) => text.Length==0 ? new List() : text.Split(',').Select(Int32).ToList(); - static Dictionary ColonIntegers(string text) - { - if(text==null) throw new PlayerKVSchemaException(); - var result=new Dictionary(); - if(text.Length==0) return result; - foreach(var part in text.Split(',')) - { - var fields=part.Split(':'); if(fields.Length!=2) throw new PlayerKVSchemaException(); - int key=Int32(fields[0]); if(result.ContainsKey(key)) throw new PlayerKVSchemaException(); - result.Add(key,Int32(fields[1])); - } - return result; - } - static DateTime Ticks(string text) - { - if(!long.TryParse(text,NumberStyles.AllowLeadingSign,Invariant,out var value) || value<0 || value>System.DateTime.MaxValue.Ticks) - throw new PlayerKVSchemaException(); - return new DateTime(value); - } - static PlayerKVBattlePassState CompactBattlePass(string text) - { - var pair=text?.Split('#'); - if(pair==null || pair.Length!=2) throw new PlayerKVSchemaException(); - var record=pair[0].Split('|'); var task=pair[1].Split('|'); - if(record.Length!=7 || task.Length!=5) throw new PlayerKVSchemaException(); - return new PlayerKVBattlePassState(new PlayerKVPassRecord(Int32(record[0]),Int32(record[1]),Int32(record[2]), - Int32(record[3]),Int32(record[4]),CsvIntegers(record[5]),CsvIntegers(record[6]),Array.Empty(),0), - new PlayerKVPassTask(ColonIntegers(task[0]),ColonIntegers(task[1]),CsvIntegers(task[2]),Ticks(task[3]),Ticks(task[4]))); - } - static PlayerKVPassRecord OldPassRecord(string text) - { - var obj=Object(Json(text)); - return new PlayerKVPassRecord(Integer(obj["ID"]),Integer(obj["Level"]),Integer(obj["Exp"]),Integer(obj["BuyVipToastIndex"]), - Integer(obj["IsUnlockVip"]),IntegerList(obj["NormalRewardGet"]),IntegerList(obj["VipRewardGet"]), - IntegerList(obj["LastDropIDs"]),Finite(obj["InflationRate"])); - } - static PlayerKVPassTask OldPassTask(string text,PlayerKVSchemaSnapshot snapshot) - { - var obj=Object(Json(text)); - return new PlayerKVPassTask(IntegerMap(obj["dic_dailyTasks"]),IntegerMap(obj["dic_weeklyTasks"]),IntegerList(obj["loginDays"]), - Date(String(obj["DailyTaskEndTime"]),snapshot),Date(String(obj["WeeklyTaskEndTime"]),snapshot)); - } - internal static PlayerKVBattlePassState DecodeBattlePass(IReadOnlyDictionary raw,PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - int before=errors.TotalErrors; PlayerKVPassRecord oldRecord=null; PlayerKVPassTask oldTask=null; PlayerKVBattlePassState current=null; - if(raw.TryGetValue("BattlePassRecord",out var record)) oldRecord=errors.Capture(11,0,()=>OldPassRecord(record)); - if(raw.TryGetValue("BattleTask",out var task)) oldTask=errors.Capture(11,1,()=>OldPassTask(task,snapshot)); - if(raw.TryGetValue("BattlePassRecordTask",out var compact)) current=errors.Capture(11,2,()=>CompactBattlePass(compact)); - if(current!=null && oldRecord!=null && !oldRecord.CommonEquals(current.Record)) errors.Add(11,3,PlayerKVSchemaError.ConflictingRepresentations); - if(current!=null && oldTask!=null && !oldTask.Same(current.Task)) errors.Add(11,4,PlayerKVSchemaError.ConflictingRepresentations); - return errors.TotalErrors==before ? current ?? new PlayerKVBattlePassState(oldRecord ?? PlayerKVPassRecord.Empty(),oldTask ?? PlayerKVPassTask.Empty()) : null; - } - internal static PlayerKVCubeState DecodeCube(IReadOnlyDictionary raw,PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - if(!raw.TryGetValue("EventCubeMeltData",out var text)) return PlayerKVCubeState.Missing(); - return errors.Capture(19,0,() => - { - var obj=Object(Json(text)); var size=Object(obj["BoardViewSize"]); - var items=ArrayValues(obj["CollectItems"],t => { var item=Object(t); return new PlayerKVCollectValue( - Integer(item["ItemId"]),Integer(item["Count"]),Integer(item["MaxCount"]),Integer(item["ItemTrueId"])); }); - var pieces=ArrayValues(obj["PieceDatas"],IntegerList); - return new PlayerKVCubeState(true,Integer(obj["TicketCount"]),Boolean(obj["FirstOpen"]),Boolean(obj["IsFinished"]), - Integer(obj["EventId"]),Boolean(obj["IsInGuide"]),Date(String(obj["StartTime"]),snapshot),Date(String(obj["EndTime"]),snapshot), - Integer(obj["CurrentStagetId"]),items,IntegerList(obj["BoardData"]),Integer(size["x"]),Integer(size["y"]), - IntegerList(obj["CollectRewardsId"]),Boolean(obj["IsFinalRewardGet"]),pieces,Integer(obj["Cycle"]),Finite(obj["InflationRate"])); - }); - } - internal static PlayerKVPinataState DecodePinata(IReadOnlyDictionary raw,PlayerKVSchemaDiagnostics errors) - { - if(!raw.TryGetValue("EventPinataPackData",out var text)) return new PlayerKVPinataState(0,0,0); - return errors.Capture(29,0,() => - { - var obj=Object(Json(text)); - return new PlayerKVPinataState(Integer(obj["EventID"]),Integer(obj["PinataMainID"]),Integer(obj["PurchasedCount"])); - }); - } - internal static PlayerKVChallengeState DecodeChallenge(IReadOnlyDictionary raw, - PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - if(!raw.TryGetValue("FishingChallengeData",out var text)) return PlayerKVChallengeState.Missing(); - return errors.Capture(15,0,() => - { - // Json rejects root null before returning; recognize this one empty state before Object(Json(...)). - if (text != null && text.Trim(' ', '\t', '\r', '\n') == "null") - { - StrictJsonSyntax.Validate(text); - return PlayerKVChallengeState.ExplicitNull(); - } - var obj=Object(Json(text)); - return new PlayerKVChallengeState(true, - Boolean(obj["FirstOpen"]), - Integer(obj["EventId"]), - Integer(obj["RankTierLevel"]), - Integer(obj["Finished"]), - Integer(obj["RedirectID"]), - Integer(obj["Score"]), - Integer(obj["ProcessedScore"]), - Integer(obj["step"]), - Integer(obj["uiStep"]), - Integer(obj["index"]), - Date(String(obj["StartTime"]),snapshot), - Date(String(obj["EndTime"]),snapshot), - IntegerList(obj["eliminateNumber"]), - IntegerList(obj["robotAccountList"]), - Finite(obj["InflationRate"])); - }); - } - internal static PlayerKVPinballState DecodePinball(IReadOnlyDictionary raw, - PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - if(!raw.TryGetValue("epbdk",out var text)) return PlayerKVPinballState.Missing(); - return errors.Capture(26,0,() => - { - var obj=Object(Json(text)); - return new PlayerKVPinballState(true, - Integer(obj["EventID"]), - Integer(obj["PinballMainID"]), - Integer(obj["SpinPoint"]), - Integer(obj["Scores"]), - Integer(obj["Multiple"]), - Integer(obj["Token"]), - Integer(obj["ConsumedToken"]), - Integer(obj["RewardIndex"]), - Finite(obj["Force"]), - Finite(obj["LuckyValue"]), - Finite(obj["InflationRate"])); - }); - } - internal static PlayerKVScratchState DecodeScratch(IReadOnlyDictionary raw, - PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - if(!raw.TryGetValue("estdk",out var text)) return PlayerKVScratchState.Missing(); - return errors.Capture(27,0,() => - { - var obj=Object(Json(text)); - return new PlayerKVScratchState(true, - Integer(obj["EventID"]), - Integer(obj["ScratchMainID"]), - Integer(obj["ChainPackID"]), - Integer(obj["Token"]), - Integer(obj["ConsumedToken"]), - Integer(obj["RewardTaskConsumedToken"]), - Integer(obj["EventScratchRewardTaskID"]), - Integer(obj["EventScratchCardID"]), - Integer(obj["TotalConsumedToken"]), - Integer(obj["ChainPackProgress"]), - Integer(obj["magIndex"]), - Boolean(obj["IsOver"]), - Finite(obj["LuckyValue"]), - Finite(obj["InflationRate"]), - IntegerList(obj["StampRewardList"]), - IntegerDictionary(obj["StampRewardDict"],t=> { var item=Object(t); return new PlayerKVStampValue(Integer(item["EventScratchCardID"]),Integer(item["Count"])); })); - }); - } - internal static PlayerKVPartnerState DecodePartner(IReadOnlyDictionary raw, - PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - if(!raw.TryGetValue("EventPartnerGatherData",out var text)) return PlayerKVPartnerState.Missing(); - return errors.Capture(18,0,()=> - { - var obj=Object(Json(text)); - int spin=Integer(obj["SpinState"]); - if(spin<0 || spin>2) throw new PlayerKVSchemaException(); - var bonus=Object(obj["PartnerBonus"]); - return new PlayerKVPartnerState(true,Boolean(obj["FirstOpen"]),Integer(obj["EventId"]), - Date(String(obj["StartTime"]),snapshot),Date(String(obj["EndTime"]),snapshot), - Integer(obj["CurrentPoints"]),Integer(obj["CurrentMiningProgress"]),Integer(obj["Token"]), - Integer(obj["InvitedCount"]),Integer(obj["TicketCount"]),ArrayValues(obj["CompletedNodesList"],IntegerList), - ArrayValues(obj["BuilderPartnerScore"],t=> { var score=Object(t); return (Integer(score["Item1"]),Integer(score["Item2"])); }), - Finite(bonus["Item1"]),Date(String(bonus["Item2"]),snapshot),Integer(obj["FreeSpinNum"]), - IntegerDictionary(obj["Bots"],t=> { var bot=Object(t); return new PlayerKVPartnerBot(String(bot["Id"]), - Integer(bot["ScorePlayer"]),Integer(bot["ScoreBot"]),Integer(bot["Grade"]),Integer(bot["TargetScore"]), - Date(String(bot["WakeStartTime"]),snapshot),Integer(bot["WakingSeconds"])); }), - Boolean(obj["IsRecvFinalReward"]),ArrayValues(obj["UIFinishedPartners"],Boolean),Boolean(obj["IsFinished"]), - spin,Finite(obj["InflationRate"]),Boolean(obj["IsEnableAutoMatch"]),Date(String(obj["LastAutoMatchTime"]),snapshot)); - }); - } - internal static PlayerKVOfferState DecodeOffer(IReadOnlyDictionary raw,bool disco, - PlayerKVSchemaSnapshot snapshot,PlayerKVSchemaDiagnostics errors) - { - if (!raw.TryGetValue(disco ? "OfferDiscoPartyManager" : "OfferChainsChestData",out var text)) return PlayerKVOfferState.Missing(); - return errors.Capture(disco ? 17 : 16,0,() => - { - var obj=Object(Json(text)); - if (!(obj["Items"] is JArray array)) throw new PlayerKVSchemaException(); - var items=new List(); - foreach(var token in array) - { - var item=Object(token); - int status=Integer(item["Status"]); - if (disco && (status<0 || status>2)) throw new PlayerKVSchemaException(); - items.Add(new PlayerKVOfferItem(Integer(item["Id"]),Integer(item["Item"]),Integer(item["Number"]),status)); - } - return new PlayerKVOfferState(true,Boolean(obj["FirstOpen"]),Integer(obj["EventId"]), - Date(String(obj["StartTime"]),snapshot),Date(String(obj["EndTime"]),snapshot), - Integer(obj["ItemId"]),Integer(obj["LotteryNum"]),items,IntegerList(obj["RewardList"]), - !disco && Boolean(obj["Finished"]),disco ? 0 : Integer(obj["ChestReward"])); - }); - } - internal static PlayerKVEventPackState DecodeEventPack(IReadOnlyDictionary raw, - PlayerKVSchemaSnapshot snapshot, PlayerKVSchemaDiagnostics errors) - { - if (!raw.TryGetValue("EventPackData",out var text)) return new PlayerKVEventPackState(0,0,0,0); - return errors.Capture(20,0,() => - { - var obj=Object(Json(text)); - int eventId=Integer(obj["currentEventID"]), count=Integer(obj["purchaseCount"]), - vip=Integer(obj["VIPLvlWhenEventActivate"]), redirect=Integer(obj["redirectID"]); - var config=snapshot.Event(eventId); - if (config != null) - { - // The legacy loader evaluates EndTime before any pack-table dereference. - if (config.EndTime == null) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - if (Date(config.EndTime,snapshot) > snapshot.NowUtc) - { - if (!snapshot.HasPackType(config.RedirectId,1)) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - if (redirect == 0) redirect=4054001; - if (!snapshot.HasPack(redirect)) throw new PlayerKVSchemaException(PlayerKVSchemaError.UnsupportedSchema); - } - } - return new PlayerKVEventPackState(eventId,count,vip,redirect); - }); - } - internal static PlayerKVCampState DecodeCamp(IReadOnlyDictionary raw,PlayerKVSchemaDiagnostics errors) - { - int before=errors.TotalErrors; - bool fix=false; - string skyscraper="0"; - var data=new Dictionary(StringComparer.Ordinal); - if (raw.TryGetValue("IsFix",out var fixText)) - fix=errors.Capture(7,0,() => { if (!bool.TryParse(fixText,out var value)) throw new PlayerKVSchemaException(); return value; }); - if (raw.TryGetValue("IsOpenSkyscraper",out var skyText)) - { - if (skyText != "0" && skyText != "1") errors.Add(7,1,PlayerKVSchemaError.Malformed); - else skyscraper=skyText; - } - if (raw.TryGetValue("CampDataDic",out var dataText)) - data=errors.Capture(7,2,() => Object(Json(dataText)).Properties().ToDictionary(p=>p.Name,p=>Integer(p.Value),StringComparer.Ordinal)); - return errors.TotalErrors == before ? new PlayerKVCampState(fix,skyscraper,data) : null; - } - internal static PlayerKVClubState DecodeClub(IReadOnlyDictionary raw, - PlayerKVSchemaSnapshot snapshot, PlayerKVSchemaDiagnostics errors) - { - int before = errors.TotalErrors; - DateTime? sign = null; - DateTime donateTime = default, requestEnd = default; - int count = 0; - if (raw.TryGetValue("ClubSignin",out var signText)) - sign = errors.Capture(14,0,() => signText == "" ? (DateTime?)null : Date(signText,snapshot)); - if (raw.TryGetValue("LureDonateData",out var donateText)) - errors.Capture(14,1,() => - { - var obj = Object(Json(donateText)); - donateTime = Date(String(obj["DonateCountTime"]),snapshot); - count = Integer(obj["ClubLureDonateCount"]); - requestEnd = Date(String(obj["ClubLureRequestCDEnd"]),snapshot); - return true; - }); - bool openRed = !raw.TryGetValue("IsOpenClubRed",out var redText); - if (!openRed && redText == null) errors.Add(14,2,PlayerKVSchemaError.Malformed); - return errors.TotalErrors == before ? new PlayerKVClubState(sign,donateTime,count,requestEnd,openRed) : null; - } - internal static PlayerKVProgressPackState DecodeProgressPack(IReadOnlyDictionary raw, - bool migration, PlayerKVSchemaDiagnostics errors) - { - if (!raw.TryGetValue(migration ? "ThanksGivingPackMigrationData" : "ThanksGivingPackData",out var text)) - return new PlayerKVProgressPackState(false,0,0,0,0); - return errors.Capture(28,migration ? 1 : 0,() => - { - var parts = text?.Split(','); - if (parts == null || parts.Length != 4) throw new PlayerKVSchemaException(); - return new PlayerKVProgressPackState(true,Int32(parts[0]),Int32(parts[1]),Int32(parts[2]),Int32(parts[3])); - }); - } - internal static Dictionary IntegerMap(JToken token) - { - var result = new Dictionary(); - foreach (var p in Object(token).Properties()) - { - int key = Int32(p.Name); - if (result.ContainsKey(key)) throw new PlayerKVSchemaException(); - result.Add(key, Integer(p.Value)); - } - return result; - } - static Dictionary IntegerPairs(string text) - { - if (text == null) throw new PlayerKVSchemaException(); - var result = new Dictionary(); - if (text.Length == 0) return result; - foreach (var item in text.Split(';')) - { - var fields = item.Split(','); - if (fields.Length != 2) throw new PlayerKVSchemaException(); - int key = Int32(fields[0]); - if (result.ContainsKey(key)) throw new PlayerKVSchemaException(); - result.Add(key, Int32(fields[1])); - } - return result; - } - internal static PlayerKVIntMapState DecodeFishingBox(IReadOnlyDictionary raw, - IReadOnlyDictionary modern, PlayerKVSchemaDiagnostics errors) - { - if (modern == null) return null; - int before = errors.TotalErrors; - Dictionary old = null, current = null; - if (raw.TryGetValue("FishingBoxData",out var legacy)) - old = errors.Capture(9,0,()=>IntegerMap(Object(Json(legacy))["FishingBoxOpenNum"])); - if (modern.TryGetValue("bd",out var compact)) - current = errors.Capture(9,1,()=>IntegerPairs(compact)); - if (old != null && current != null) - foreach (var item in old.OrderBy(p=>p.Key)) - if (current.TryGetValue(item.Key,out var value) && value != item.Value) - errors.Add(9,2,PlayerKVSchemaError.ConflictingRepresentations); - return errors.TotalErrors == before ? new PlayerKVIntMapState(current ?? old ?? new Dictionary()) : null; - } - static Dictionary GuideRecords(string text, bool compact) - { - var result = new Dictionary(StringComparer.Ordinal); - if (compact) - { - if (text == null) throw new PlayerKVSchemaException(); - if (text.Length == 0) return result; - foreach (var item in text.Split(';')) - { - var parts = item.Split('|'); - if (parts.Length != 3 || (parts[2] != "0" && parts[2] != "1") || result.ContainsKey(parts[0])) - throw new PlayerKVSchemaException(); - result.Add(parts[0], new PlayerKVGuideValue(Int32(parts[1]), parts[2] == "1", parts[0])); - } - } - else - foreach (var p in Object(Json(text)).Properties()) - { - var value = Object(p.Value); - result.Add(p.Name, new PlayerKVGuideValue(Integer(value["guideSubIndex"]),Boolean(value["isFinish"]),String(value["groupName"]))); - } - return result; - } - internal static PlayerKVGuideState DecodeGuides(IReadOnlyDictionary raw, PlayerKVSchemaDiagnostics errors) - { - int before = errors.TotalErrors; - Dictionary old = null, current = null; - if (raw.TryGetValue("GuideSaveData",out var legacy)) old = errors.Capture(10,0,()=>GuideRecords(legacy,false)); - if (raw.TryGetValue("GuideSaveDataNew",out var compact)) current = errors.Capture(10,1,()=>GuideRecords(compact,true)); - if (old != null && current != null) - foreach (var item in old.OrderBy(p=>p.Key,StringComparer.Ordinal)) - if (current.TryGetValue(item.Key,out var value) && !value.Same(item.Value)) - errors.Add(10,2,PlayerKVSchemaError.ConflictingRepresentations); - return errors.TotalErrors == before ? new PlayerKVGuideState(current ?? old ?? new Dictionary()) : null; - } - internal static PlayerKVMonthlySignState DecodeMonthlySign(IReadOnlyDictionary raw, PlayerKVSchemaDiagnostics errors) - { - if (!raw.TryGetValue("MonthlySignEvent",out var text)) return new PlayerKVMonthlySignState(false,0,0,0,0,null); - return errors.Capture(12,0,() => - { - var obj = Object(Json(text)); - var daily = Object(obj["dailySignEvent"]); - return new PlayerKVMonthlySignState(true,Integer(obj["index"]),Integer(daily["ID"]), - Integer(daily["index"]),Integer(daily["lastID"]),String(daily["time"])); - }); - } - internal static PlayerKVFootPrintState DecodeFootPrint(IReadOnlyDictionary raw, PlayerKVSchemaDiagnostics errors) => - errors.Capture(23, 0, () => new PlayerKVFootPrintState(raw.TryGetValue("FootPrint", out var text) ? UInt64(text) : 0)); - } - - // Validate RFC JSON syntax before Json.NET, which also accepts single quotes, unquoted names and trailing commas. - internal sealed class StrictJsonSyntax - { - readonly string text; - int position; - StrictJsonSyntax(string text) { this.text = text; } - internal static void Validate(string text) - { - var parser = new StrictJsonSyntax(text); parser.Value(0); parser.Space(); - if (parser.position != text.Length) throw new PlayerKVSchemaException(); - } - char Peek => position < text.Length ? text[position] : '\0'; - static bool Digit(char c) => c >= '0' && c <= '9'; - void Space() { while (Peek == ' ' || Peek == '\t' || Peek == '\r' || Peek == '\n') position++; } - void Require(char c) { if (Peek != c) throw new PlayerKVSchemaException(); position++; } - void Value(int depth) - { - if (depth > 64) throw new PlayerKVSchemaException(); - Space(); - if (Peek == '{' || Peek == '[') - { - bool obj = Peek == '{'; position++; Space(); char end = obj ? '}' : ']'; - if (Peek == end) { position++; return; } - while (true) - { - if (obj) { Quoted(); Space(); Require(':'); } - Value(depth + 1); Space(); - if (Peek == end) { position++; return; } - Require(','); Space(); - } - } - else if (Peek == '"') Quoted(); - else if (Peek == 't') Literal("true"); - else if (Peek == 'f') Literal("false"); - else if (Peek == 'n') Literal("null"); - else - { - if (Peek == '-') position++; - if (Peek == '0') position++; - else { if (Peek < '1' || Peek > '9') throw new PlayerKVSchemaException(); while (Digit(Peek)) position++; } - if (Peek == '.') { position++; Digits(); } - if (Peek == 'e' || Peek == 'E') { position++; if (Peek == '+' || Peek == '-') position++; Digits(); } - } - } - void Digits() { if (!Digit(Peek)) throw new PlayerKVSchemaException(); while (Digit(Peek)) position++; } - void Literal(string value) - { - foreach (char c in value) Require(c); - } - void Quoted() - { - Require('"'); - while (true) - { - char c = Peek; - if (c == '"') { position++; return; } - if (c < ' ') throw new PlayerKVSchemaException(); - position++; - if (c != '\\') continue; - c = Peek; position++; - if (c == 'u') - { - for (int i = 0; i < 4; i++) - { - char h = Peek; - if (!Digit(h) && !(h >= 'a' && h <= 'f') && !(h >= 'A' && h <= 'F')) throw new PlayerKVSchemaException(); - position++; - } - } - else if (c != '"' && c != '\\' && c != '/' && c != 'b' && c != 'f' && c != 'n' && c != 'r' && c != 't') - throw new PlayerKVSchemaException(); - } - } - } -} diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveSchema.cs.meta b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveSchema.cs.meta deleted file mode 100644 index bacabfec0..000000000 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveSchema.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 3c49515cb90840a189772d23ad69fd2b diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSessionOwner.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSessionOwner.cs index 9309192f1..ff89a9879 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSessionOwner.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSessionOwner.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Globalization; using System.IO; using System.Net; @@ -76,7 +77,7 @@ namespace game.PlayerDataStorage internal static async Task CreateAsync(S101AccountSession session, string cacheRoot, string expectedPlayerId, Uri expectedApiBaseUri, long epoch, Func isCurrent, CancellationToken lifetimeToken, Func handlerFactory, - TimeSpan? transportTimeout = null) + TimeSpan? transportTimeout = null, bool prepareOriginalComparison = false) { if (session == null || expectedApiBaseUri == null || isCurrent == null || handlerFactory == null || epoch < 0 || !long.TryParse(expectedPlayerId, NumberStyles.None, CultureInfo.InvariantCulture, out var numericId) || numericId <= 0) @@ -112,7 +113,7 @@ namespace game.PlayerDataStorage using (var lease = owner.TryEnter()) { if (lease == null) return await owner.FailCreate(PlayerKVSessionOpenError.Cancelled); - read = await owner.coordinator.InitializeAsync(); + read = await owner.coordinator.InitializeAsync(prepareOriginalComparison); } if (!read.Success) return await owner.FailCreate(read.Error == PlayerKVError.Unauthorized @@ -166,9 +167,49 @@ namespace game.PlayerDataStorage PlayerKVLocalReadResult ReadFailure(PlayerKVLocalReadError error) => new PlayerKVLocalReadResult(error, ownerId, PlayerId, Epoch); public PlayerKVEditResult Update(string key, string value, bool remoteStore = true) + { + return Update(key, value, remoteStore, null); + } + + internal PlayerKVStateResult CompareDatas(long nowTicks) { using (var lease = TryEnter()) - return lease == null ? ClosedEdit() : coordinator.Update(key, value, remoteStore); + { + return lease == null ? new PlayerKVStateResult(PlayerKVChangeError.Blocked) : coordinator.CompareDatas(nowTicks); + } + } + + internal PlayerKVEditResult Update(string key, string value, bool remoteStore, long? updateTicks) + { + using (var lease = TryEnter()) + { + return lease == null ? ClosedEdit() : coordinator.Update(key, value, remoteStore, updateTicks); + } + } + + public Task SyncDataAsync(CancellationToken waitToken = default) + { + var lease = TryEnter(); + if (lease == null) + { + return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Cancelled, state.Status)); + } + return WaitForFlushAsync(RunOrdinarySyncAsync(lease), waitToken); + } + + private async Task RunOrdinarySyncAsync(OperationLease lease) + { + using (lease) + { + try + { + return await coordinator.SyncDataAsync(); + } + catch (Exception) + { + return new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Protocol, state.Status); + } + } } public PlayerKVEditResult Delete(string key) @@ -177,6 +218,30 @@ namespace game.PlayerDataStorage return lease == null ? ClosedEdit() : coordinator.Delete(key); } + public async Task SyncDataImmidiate(string key, string value) + { + using (var lease = TryEnter()) + { + if (lease == null) + { + return false; + } + return await coordinator.SyncDataImmidiate(key, value); + } + } + + internal async Task SyncDataImmidiate(IReadOnlyDictionary values) + { + using (var lease = TryEnter()) + { + if (lease == null) + { + return false; + } + return await coordinator.SyncDataImmidiate(values); + } + } + public Task FlushAsync(CancellationToken waitToken = default) { var lease = TryEnter(); @@ -308,7 +373,10 @@ namespace game.PlayerDataStorage bool IsCapturedOwnerCurrent() { - if (lifetime.IsCancellationRequested || !isCurrent(Epoch)) return false; + if (lifetime.IsCancellationRequested || !isCurrent(Epoch) || state.AuthenticationInvalid) + { + return false; + } return session.IsAuthenticated && ReferenceEquals(session.Cookies, cookies) && session.PlayerId == PlayerId && NormalizeApi(session.ApiBaseUri) == ApiBaseUri; } diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncCoordinator.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncCoordinator.cs index e9b0e25b3..30d099284 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncCoordinator.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncCoordinator.cs @@ -42,11 +42,16 @@ namespace game.PlayerDataStorage public int Superseded { get; } public int Blocked { get; } public int Unknown { get; } + public int Buffered + { + get; + } public PlayerKVError TransportError { get; } public PlayerKVSyncStatus CacheStatus { get; } internal PlayerKVFlushResult(int confirmed, int superseded, int blocked, int unknown, - PlayerKVError transportError, PlayerKVSyncStatus cacheStatus) + PlayerKVError transportError, PlayerKVSyncStatus cacheStatus, int buffered = 0) { + Buffered = buffered; Confirmed = confirmed; Superseded = superseded; Blocked = blocked; Unknown = unknown; TransportError = transportError; CacheStatus = cacheStatus; } @@ -74,7 +79,9 @@ namespace game.PlayerDataStorage readonly long epoch; readonly Func isOwnerCurrent; readonly CancellationToken ownerToken; - bool disposed; + private bool disposed; + private bool ordinaryDraining; + private TaskCompletionSource<(PlayerKVError Error, Dictionary Results)> ordinaryDrainCompletion; internal PlayerKVSyncCoordinator(PlayerKVSyncState state, PlayerKVClient client, System.Net.Http.HttpClient http, string ownerId, long epoch, Func isOwnerCurrent, @@ -84,17 +91,21 @@ namespace game.PlayerDataStorage this.epoch = epoch; this.isOwnerCurrent = isOwnerCurrent; this.ownerToken = ownerToken; } - internal async Task InitializeAsync() + internal async Task InitializeAsync(bool prepareOriginalComparison = false) { await dispatch.WaitAsync(ownerToken); try { if (!Current()) return CancelledResult(); + if (state.HasPendingComparison) + { + return new PlayerKVResult(PlayerKVError.Protocol); + } var result = await client.GetAsync(null, ownerToken); if (!Current()) return CancelledResult(); if (result.Success) { - var reconciled = state.Reconcile(result.Data); + var reconciled = state.Reconcile(result.Data, result.UpdatedAtUtc, prepareOriginalComparison); return reconciled.Success ? result : new PlayerKVResult(PlayerKVError.Protocol); } state.RecordReadFailure(result.Error == PlayerKVError.Unauthorized); @@ -103,127 +114,489 @@ namespace game.PlayerDataStorage finally { dispatch.Release(); } } - internal PlayerKVEditResult Update(string key, string value, bool remoteStore) + internal PlayerKVStateResult CompareDatas(long nowTicks) { - var result = state.Update(key, value, remoteStore); - if (!result.Success || !remoteStore) return new PlayerKVEditResult(result); - var ticket = new PlayerKVSyncTicket(ownerId, epoch, key, result.AttemptSequence); lock (ticketGate) { - SupersedeUnsentForKey(key, result.AttemptSequence); - tickets.Add(ticket.Sequence, new TicketRecord(ticket)); + if (!Current()) + { + return new PlayerKVStateResult(PlayerKVChangeError.Blocked); + } + var previous = Unsent(state.Inspect()).Select(item => item.Sequence).ToArray(); + var result = state.CompareDatas(nowTicks); + if (result.Success) + { + CompleteRemovedSources(previous); + } + return result; + } + } + + internal PlayerKVEditResult Update(string key, string value, bool remoteStore, long? updateTicks = null) + { + lock (ticketGate) + { + var previous = Unsent(state.Inspect()).Select(item => item.Sequence).ToArray(); + var result = state.Update(key, value, remoteStore, updateTicks); + if (!result.Success) + { + return new PlayerKVEditResult(result); + } + CompleteRemovedSources(previous); + if (!remoteStore || !Unsent(state.Inspect()).Any(item => item.Sequence == result.AttemptSequence)) + { + return new PlayerKVEditResult(result); + } + var ticket = new PlayerKVSyncTicket(ownerId, epoch, key, result.AttemptSequence); + tickets.Add(ticket.Sequence, new TicketRecord(ticket)); + return new PlayerKVEditResult(result, ticket); } - return new PlayerKVEditResult(result, ticket); } internal PlayerKVEditResult Delete(string key) { - var result = state.Delete(key); - if (!result.Success) return new PlayerKVEditResult(result); - var ticket = new PlayerKVSyncTicket(ownerId, epoch, key, result.AttemptSequence); lock (ticketGate) { - SupersedeUnsentForKey(key, result.AttemptSequence); + var previous = Unsent(state.Inspect()).Select(item => item.Sequence).ToArray(); + var result = state.Delete(key); + if (!result.Success) + { + return new PlayerKVEditResult(result); + } + CompleteRemovedSources(previous); + var ticket = new PlayerKVSyncTicket(ownerId, epoch, key, result.AttemptSequence); tickets.Add(ticket.Sequence, new TicketRecord(ticket)); + return new PlayerKVEditResult(result, ticket); + } + } + + private static IEnumerable Unsent(PlayerKVDiagnosticSnapshot value) + { + return value.OrdinaryBuffers.SelectMany(bucket => bucket.Values) + .Concat(value.LegacyPending.Values).Concat(value.ExplicitDeletes.Values); + } + + private void CompleteRemovedSources(IEnumerable previous) + { + var remaining = new HashSet(Unsent(state.Inspect()).Select(item => item.Sequence)); + foreach (var sequence in previous) + { + if (!remaining.Contains(sequence) && tickets.TryGetValue(sequence, out var record) && + !record.Dispatched && !record.Completion.Task.IsCompleted) + { + Complete(record, PlayerKVTicketStatus.Superseded, PlayerKVError.None); + } + } + } + + internal Task SyncDataImmidiate(string key, string value) + { + if (!KVSnapshot.ValidKey(key) || value == null) + { + return Task.FromResult(false); + } + return SyncDataImmidiate(new Dictionary { [key] = value }); + } + + internal async Task SyncDataImmidiate(IReadOnlyDictionary values) + { + if (values == null || values.Count == 0) + { + return false; + } + var data = values.ToDictionary(pair => pair.Key, pair => pair.Value, StringComparer.Ordinal); + IReadOnlyList operations; + lock (ticketGate) + { + var previous = Unsent(state.Inspect()).Select(item => item.Sequence).ToArray(); + if (!Current() || !state.PrepareImmediate(data, out operations).Success) + { + return false; + } + CompleteRemovedSources(previous); + } + var acquired = false; + var dispatched = false; + try + { + await dispatch.WaitAsync(ownerToken); + acquired = true; + if (!Current() || state.Status != PlayerKVSyncStatus.Ready) + { + return false; + } + dispatched = true; + var result = await client.SetAsync(data, ownerToken); + if (!Current()) + { + return false; + } + if (result.Success) + { + return state.CompleteImmediate(operations).Success; + } + if (result.Error == PlayerKVError.Unauthorized) + { + state.RecordReadFailure(true); + } + return false; + } + catch (Exception) + { + return false; + } + finally + { + if (!dispatched) + { + state.CancelUndispatchedImmediate(operations); + } + if (acquired) + { + dispatch.Release(); + } } - return new PlayerKVEditResult(result, ticket); } internal long CaptureWatermark(out long[] targetSequences) { - var next = state.Inspect().NextSequence; - var watermark = next <= 1 ? 0 : next - 1; lock (ticketGate) { - targetSequences = tickets.Values.Where(record => record.Ticket.Sequence <= watermark && !record.ClaimedByFlush) - .Select(record => { record.ClaimedByFlush = true; return record.Ticket.Sequence; }).ToArray(); + var snapshot = state.Inspect(); + var watermark = snapshot.NextSequence <= 1 ? 0 : snapshot.NextSequence - 1; + var target = new HashSet(Outstanding(snapshot).Where(item => item.Sequence <= watermark).Select(item => item.Sequence)); + foreach (var record in tickets.Values) + { + if (record.Ticket.Sequence <= watermark && !record.ClaimedByFlush) + { + record.ClaimedByFlush = true; + target.Add(record.Ticket.Sequence); + } + } + targetSequences = target.ToArray(); + return watermark; } - return watermark; } - internal async Task FlushThroughAsync(long watermark, long[] targetSequences) + private static IEnumerable Outstanding(PlayerKVDiagnosticSnapshot snapshot) { - PlayerKVError finalError = PlayerKVError.None; - var targetSet = new HashSet(targetSequences ?? Array.Empty()); - var recoveredConfirmed = 0; - var recoveredBlocked = 0; - var recoveredUnknown = 0; + return Unsent(snapshot).Concat(snapshot.PreparedOrdinaryBatches.SelectMany(batch => batch.Items)) + .Concat(snapshot.OrdinaryUnknownBatches.SelectMany(batch => batch.Items)) + .Concat(snapshot.ActiveBatch == null ? Enumerable.Empty() : snapshot.ActiveBatch.Items) + .Concat(snapshot.UnknownBatch == null ? Enumerable.Empty() : snapshot.UnknownBatch.Items); + } + + // This explicit channel only sends imported legacy intents and explicit deletes, never ordinary buckets. + internal async Task FlushThroughAsync(long watermark, long[] targetSequences, + bool legacyOnly = false, int maximumBatches = int.MaxValue) + { + var error = PlayerKVError.None; + var observed = new Dictionary(); var acquired = false; try { await dispatch.WaitAsync(ownerToken); acquired = true; - while (Current()) + var sent = 0; + while (Current() && sent < maximumBatches) { - MarkSuperseded(watermark); - var begin = state.BeginBatch(watermark, out var batch); + PlayerKVStateResult begin; + PlayerKVBatch batch; + lock (ticketGate) + { + begin = state.BeginBatch(watermark, legacyOnly, out batch); + if (begin.Success && batch != null) + { + MarkDispatched(batch); + } + } if (!begin.Success) { - recoveredBlocked += state.Inspect().Pending.Values.Count(item => - item.Sequence <= watermark && !targetSet.Contains(item.Sequence)); - MarkEligibleBlocked(watermark, PlayerKVError.None); + MarkExplicitBlocked(watermark, legacyOnly, PlayerKVError.None, observed); break; } - if (batch == null) break; - MarkDispatched(batch); - PlayerKVResult result; - if (batch.IsDelete) - result = await client.DeleteAsync(batch.Items.Select(item => item.Key), ownerToken); - else - result = await client.SetAsync(batch.Items.ToDictionary(item => item.Key, item => item.Target.Value, - StringComparer.Ordinal), ownerToken); - + if (batch == null) + { + break; + } + sent++; + var result = await SendAsync(batch); if (!Current() && result.Success) + { result = new PlayerKVResult(PlayerKVError.Cancelled, mayHaveCommitted: true); - + } if (result.Success) { var confirmed = state.ConfirmBatch(batch.Id); + var outcome = confirmed.Success ? PlayerKVTicketStatus.Confirmed : PlayerKVTicketStatus.Unknown; + RecordBatch(batch, outcome, PlayerKVError.None, observed); if (!confirmed.Success) { - CompleteBatch(batch, PlayerKVTicketStatus.Unknown, PlayerKVError.None); - recoveredUnknown += batch.Items.Count(item => !targetSet.Contains(item.Sequence)); - finalError = PlayerKVError.None; break; } - CompleteBatch(batch, PlayerKVTicketStatus.Confirmed, PlayerKVError.None); - recoveredConfirmed += batch.Items.Count(item => !targetSet.Contains(item.Sequence)); continue; } - - finalError = result.Error; - var failed = state.FailBatch(batch.Id, result.MayHaveCommitted, - result.Error == PlayerKVError.Unauthorized); - var status = result.MayHaveCommitted ? PlayerKVTicketStatus.Unknown : + error = result.Error; + state.FailBatch(batch.Id, result.MayHaveCommitted, result.Error == PlayerKVError.Unauthorized); + var failedStatus = result.MayHaveCommitted ? PlayerKVTicketStatus.Unknown : ownerToken.IsCancellationRequested ? PlayerKVTicketStatus.Cancelled : PlayerKVTicketStatus.Blocked; - CompleteBatch(batch, status, result.Error); - if (status == PlayerKVTicketStatus.Unknown) - recoveredUnknown += batch.Items.Count(item => !targetSet.Contains(item.Sequence)); - else - recoveredBlocked += batch.Items.Count(item => !targetSet.Contains(item.Sequence)); - if (!failed.Success && status != PlayerKVTicketStatus.Unknown) - MarkEligibleBlocked(watermark, result.Error); + RecordBatch(batch, failedStatus, result.Error, observed); break; } if (!Current()) { - if (finalError == PlayerKVError.None) finalError = PlayerKVError.Cancelled; - MarkEligibleOnClose(watermark); + error = PlayerKVError.Cancelled; + CloseTickets(); } } catch (OperationCanceledException) { - finalError = PlayerKVError.Cancelled; - MarkEligibleOnClose(watermark); + error = PlayerKVError.Cancelled; + CloseTickets(); } catch (Exception) { - finalError = PlayerKVError.Protocol; - MarkEligibleBlocked(watermark, finalError); + error = PlayerKVError.Protocol; + MarkExplicitBlocked(watermark, legacyOnly, error, observed); + } + finally + { + if (acquired) + { + dispatch.Release(); + } + } + return Summary(targetSequences ?? Array.Empty(), error, observed); + } + + internal Task SyncDataAsync() + { + TaskCompletionSource<(PlayerKVError Error, Dictionary Results)> completion; + bool start; + long[] targets; + lock (ticketGate) + { + var snapshot = state.Inspect(); + if (!Current()) + { + return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Cancelled, state.Status)); + } + if (snapshot.LegacyPending.Count != 0) + { + var watermark = snapshot.NextSequence - 1; + return FlushThroughAsync(watermark, snapshot.LegacyPending.Values.Select(item => item.Sequence).ToArray(), true, 1); + } + var captured = state.CaptureOrdinaryBatch(out var batch); + if (!captured.Success) + { + foreach (var item in snapshot.OrdinaryBuffers[0].Values) + { + if (tickets.TryGetValue(item.Sequence, out var record)) + { + Complete(record, PlayerKVTicketStatus.Blocked, PlayerKVError.None); + } + } + return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.None, state.Status)); + } + snapshot = state.Inspect(); + if (batch == null && ordinaryDraining) + { + // The existing caller owns the queued work; an empty tick has no new result to observe. + return Task.FromResult(Summary(Array.Empty(), PlayerKVError.None)); + } + targets = batch != null ? batch.Items.Select(item => item.Sequence).ToArray() : + snapshot.PreparedOrdinaryBatches.SelectMany(item => item.Items).Select(item => item.Sequence).ToArray(); + if (snapshot.PreparedOrdinaryBatches.Count == 0) + { + return Task.FromResult(Summary(targets, PlayerKVError.None)); + } + start = !ordinaryDraining; + if (start) + { + ordinaryDraining = true; + ordinaryDrainCompletion = new TaskCompletionSource<(PlayerKVError Error, Dictionary Results)>(TaskCreationOptions.RunContinuationsAsynchronously); + } + completion = ordinaryDrainCompletion; + } + if (start) + { + // The returned task waits for this actual worker, so the owner's lease covers its finally. + _ = DrainOrdinaryAsync(completion); + } + return ObserveOrdinaryAsync(completion.Task, targets); + } + + private async Task ObserveOrdinaryAsync(Task<(PlayerKVError Error, Dictionary Results)> worker, long[] targets) + { + var completed = await worker; + var error = targets.Where(completed.Results.ContainsKey).Select(sequence => completed.Results[sequence].TransportError) + .FirstOrDefault(value => value != PlayerKVError.None); + if (error == PlayerKVError.None && targets.Any(sequence => !completed.Results.ContainsKey(sequence))) + { + error = completed.Error; + } + return Summary(targets, error, completed.Results.ToDictionary(pair => pair.Key, pair => pair.Value.Status)); + } + + private async Task DrainOrdinaryAsync(TaskCompletionSource<(PlayerKVError Error, Dictionary Results)> completion) + { + var error = PlayerKVError.None; + var observed = new Dictionary(); + void RecordOrdinaryBatch(PlayerKVBatch batch, PlayerKVTicketStatus status, PlayerKVError transportError) + { + CompleteBatch(batch, status, transportError); + foreach (var item in batch.Items) + { + observed[item.Sequence] = new PlayerKVTicketResult(status, transportError, state.Status); + } + } + PlayerKVBatch active = null; + var acquired = false; + var dispatched = false; + try + { + while (Current()) + { + await dispatch.WaitAsync(ownerToken); + acquired = true; + PlayerKVStateResult begin; + lock (ticketGate) + { + begin = state.BeginOrdinaryBatch(out active); + if (!begin.Success || active == null) + { + // Enqueue and the end-of-drain decision share this lock; no Task.IsCompleted race. + ordinaryDraining = false; + if (!begin.Success) + { + foreach (var item in state.Inspect().PreparedOrdinaryBatches.SelectMany(batch => batch.Items)) + { + if (tickets.TryGetValue(item.Sequence, out var record)) + { + Complete(record, PlayerKVTicketStatus.Blocked, PlayerKVError.None); + } + } + } + break; + } + MarkDispatched(active); + } + dispatched = true; + var result = await SendAsync(active); + if (!Current() && result.Success) + { + result = new PlayerKVResult(PlayerKVError.Cancelled, mayHaveCommitted: true); + } + if (result.Success) + { + var confirmed = state.ConfirmBatch(active.Id); + RecordOrdinaryBatch(active, confirmed.Success ? PlayerKVTicketStatus.Confirmed : PlayerKVTicketStatus.Unknown, PlayerKVError.None); + if (!confirmed.Success) + { + break; + } + } + else + { + error = result.Error; + var failed = state.FailBatch(active.Id, result.MayHaveCommitted, result.Error == PlayerKVError.Unauthorized); + RecordOrdinaryBatch(active, result.MayHaveCommitted ? PlayerKVTicketStatus.Unknown : + ownerToken.IsCancellationRequested ? PlayerKVTicketStatus.Cancelled : PlayerKVTicketStatus.Blocked, result.Error); + if (!failed.Success || state.Status != PlayerKVSyncStatus.Ready) + { + break; + } + } + active = null; + dispatched = false; + dispatch.Release(); + acquired = false; + } + } + catch (OperationCanceledException) + { + error = PlayerKVError.Cancelled; + if (active != null) + { + state.FailBatch(active.Id, dispatched); + RecordOrdinaryBatch(active, dispatched ? PlayerKVTicketStatus.Unknown : PlayerKVTicketStatus.Cancelled, error); + } + } + catch (Exception) + { + error = PlayerKVError.Protocol; + if (active != null) + { + state.FailBatch(active.Id, dispatched); + RecordOrdinaryBatch(active, dispatched ? PlayerKVTicketStatus.Unknown : PlayerKVTicketStatus.Blocked, error); + } + } + finally + { + if (acquired) + { + dispatch.Release(); + } + lock (ticketGate) + { + if (ReferenceEquals(ordinaryDrainCompletion, completion)) + { + ordinaryDraining = false; + ordinaryDrainCompletion = null; + } + try + { + if (!Current()) + { + CloseTickets(); + } + } + catch (Exception) + { + error = PlayerKVError.Protocol; + } + } + completion.TrySetResult((error, observed)); + } + } + + private Task SendAsync(PlayerKVBatch batch) + { + if (batch.IsDelete) + { + return client.DeleteAsync(batch.Items.Select(item => item.Key), ownerToken); + } + return client.SetAsync(batch.Items.ToDictionary(item => item.Key, item => item.Target.Value, StringComparer.Ordinal), ownerToken); + } + + private void RecordBatch(PlayerKVBatch batch, PlayerKVTicketStatus status, PlayerKVError error, + Dictionary observed) + { + CompleteBatch(batch, status, error); + foreach (var item in batch.Items) + { + observed[item.Sequence] = status; + } + } + + private void MarkExplicitBlocked(long watermark, bool legacyOnly, PlayerKVError error, + Dictionary observed) + { + lock (ticketGate) + { + var snapshot = state.Inspect(); + var source = legacyOnly ? snapshot.LegacyPending.Values : snapshot.LegacyPending.Values.Concat(snapshot.ExplicitDeletes.Values); + foreach (var item in source.Where(item => item.Sequence <= watermark)) + { + var outcome = PlayerKVTicketStatus.Blocked; + if (tickets.TryGetValue(item.Sequence, out var record)) + { + outcome = record.Dispatched ? PlayerKVTicketStatus.Unknown : PlayerKVTicketStatus.Blocked; + Complete(record, outcome, error); + } + observed[item.Sequence] = outcome; + } } - finally { if (acquired) dispatch.Release(); } - return Summary(targetSequences ?? Array.Empty(), finalError, - recoveredConfirmed, recoveredBlocked, recoveredUnknown); } internal async Task WaitForTicketAsync(PlayerKVSyncTicket ticket, CancellationToken token) @@ -269,60 +642,55 @@ namespace game.PlayerDataStorage if (tickets.TryGetValue(item.Sequence, out var record)) Complete(record, status, error); } - void SupersedeUnsentForKey(string key, long newerSequence) - { - foreach (var record in tickets.Values) - if (record.Ticket.Key == key && record.Ticket.Sequence < newerSequence && !record.Dispatched && !record.Completion.Task.IsCompleted) - Complete(record, PlayerKVTicketStatus.Superseded, PlayerKVError.None); - } - - void MarkSuperseded(long watermark) - { - var snapshot = state.Inspect(); - lock (ticketGate) - foreach (var record in tickets.Values) - if (record.Ticket.Sequence <= watermark && !record.Dispatched && !record.Completion.Task.IsCompleted && - snapshot.Pending.TryGetValue(record.Ticket.Key, out var latest) && latest.Sequence > record.Ticket.Sequence) - Complete(record, PlayerKVTicketStatus.Superseded, PlayerKVError.None); - } - - void MarkEligibleBlocked(long watermark, PlayerKVError error) - { - lock (ticketGate) - foreach (var record in tickets.Values) - if (record.Ticket.Sequence <= watermark && !record.Completion.Task.IsCompleted) - Complete(record, record.Dispatched ? PlayerKVTicketStatus.Unknown : PlayerKVTicketStatus.Blocked, error); - } - - void MarkEligibleOnClose(long watermark) - { - lock (ticketGate) - foreach (var record in tickets.Values) - if (record.Ticket.Sequence <= watermark && !record.Completion.Task.IsCompleted) - Complete(record, record.Dispatched ? PlayerKVTicketStatus.Unknown : PlayerKVTicketStatus.Cancelled, - PlayerKVError.Cancelled); - } - void Complete(TicketRecord record, PlayerKVTicketStatus status, PlayerKVError error) => record.Completion.TrySetResult(new PlayerKVTicketResult(status, error, state.Status)); - PlayerKVFlushResult Summary(IEnumerable targetSequences, PlayerKVError error, - int recoveredConfirmed, int recoveredBlocked, int recoveredUnknown) + private PlayerKVFlushResult Summary(IEnumerable targetSequences, PlayerKVError error, + Dictionary observed = null) { - var counts = new Dictionary(); lock (ticketGate) - foreach (var sequence in targetSequences) + { + var counts = new Dictionary(); + var snapshot = state.Inspect(); + var unknown = new HashSet(snapshot.OrdinaryUnknownBatches.SelectMany(batch => batch.Items).Select(item => item.Sequence)); + if (snapshot.UnknownBatch != null) { - if (!tickets.TryGetValue(sequence, out var record)) continue; - var status = record.Completion.Task.IsCompleted - ? record.Completion.Task.GetAwaiter().GetResult().Status : PlayerKVTicketStatus.Pending; - counts[status] = counts.TryGetValue(status, out var count) ? count + 1 : 1; + unknown.UnionWith(snapshot.UnknownBatch.Items.Select(item => item.Sequence)); } - Func countOf = status => counts.TryGetValue(status, out var count) ? count : 0; - return new PlayerKVFlushResult(countOf(PlayerKVTicketStatus.Confirmed) + recoveredConfirmed, - countOf(PlayerKVTicketStatus.Superseded), - countOf(PlayerKVTicketStatus.Blocked) + countOf(PlayerKVTicketStatus.Cancelled) + recoveredBlocked, - countOf(PlayerKVTicketStatus.Unknown) + recoveredUnknown, error, state.Status); + var outstanding = new HashSet(Outstanding(snapshot).Select(item => item.Sequence)); + foreach (var sequence in targetSequences.Distinct()) + { + PlayerKVTicketStatus outcome; + if (tickets.TryGetValue(sequence, out var record) && record.Completion.Task.IsCompleted) + { + outcome = record.Completion.Task.GetAwaiter().GetResult().Status; + } + else if (observed != null && observed.TryGetValue(sequence, out var actual)) + { + outcome = actual; + } + else if (unknown.Contains(sequence)) + { + outcome = PlayerKVTicketStatus.Unknown; + } + else if (outstanding.Contains(sequence) || tickets.ContainsKey(sequence)) + { + outcome = PlayerKVTicketStatus.Pending; + } + else + { + continue; + } + counts[outcome] = counts.TryGetValue(outcome, out var count) ? count + 1 : 1; + } + int Count(PlayerKVTicketStatus status) + { + return counts.TryGetValue(status, out var count) ? count : 0; + } + return new PlayerKVFlushResult(Count(PlayerKVTicketStatus.Confirmed), Count(PlayerKVTicketStatus.Superseded), + Count(PlayerKVTicketStatus.Blocked) + Count(PlayerKVTicketStatus.Cancelled), Count(PlayerKVTicketStatus.Unknown), + error, state.Status, Count(PlayerKVTicketStatus.Pending)); + } } bool Current() => !ownerToken.IsCancellationRequested && isOwnerCurrent(); diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncModels.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncModels.cs index 2b7eed7d4..55c7a90f0 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncModels.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncModels.cs @@ -65,8 +65,16 @@ namespace game.PlayerDataStorage public string Id { get; } public IReadOnlyList Items { get; } public bool IsDelete => !Items[0].Target.Exists; - internal PlayerKVBatch(string id, IEnumerable items) - { Id = id; Items = Array.AsReadOnly(items.ToArray()); } + public bool IsOrdinary + { + get; + } + internal PlayerKVBatch(string id, IEnumerable items, bool ordinary = false) + { + Id = id; + Items = Array.AsReadOnly(items.ToArray()); + IsOrdinary = ordinary; + } } public sealed class PlayerKVDiagnosticSnapshot @@ -81,6 +89,34 @@ namespace game.PlayerDataStorage public IReadOnlyDictionary ConflictObservations { get; } public PlayerKVBatch ActiveBatch { get; } public PlayerKVBatch UnknownBatch { get; } + public IReadOnlyDictionary LocalData + { + get; + } + public IReadOnlyDictionary LocalUpdateTicks + { + get; + } + public IReadOnlyList> OrdinaryBuffers + { + get; + } + public IReadOnlyList PreparedOrdinaryBatches + { + get; + } + public IReadOnlyList OrdinaryUnknownBatches + { + get; + } + public IReadOnlyDictionary LegacyPending + { + get; + } + public IReadOnlyDictionary ExplicitDeletes + { + get; + } internal PlayerKVDiagnosticSnapshot(KVSnapshot source) { Revision = source.Revision; NextSequence = source.NextSequence; HasBaseline = source.HasBaseline; @@ -88,6 +124,13 @@ namespace game.PlayerDataStorage Baseline = ReadOnly(source.Baseline); LocalOnly = ReadOnly(source.LocalOnly); Pending = ReadOnly(source.Pending); ConflictObservations = ReadOnly(source.Conflicts); ActiveBatch = source.Active; UnknownBatch = source.Unknown; + LocalData = ReadOnly(source.LocalData); + LocalUpdateTicks = ReadOnly(source.LocalUpdateTicks); + OrdinaryBuffers = Array.AsReadOnly(source.OrdinaryBuffers.Select(bucket => ReadOnly(bucket)).ToArray()); + PreparedOrdinaryBatches = Array.AsReadOnly(source.PreparedOrdinaryBatches.ToArray()); + OrdinaryUnknownBatches = Array.AsReadOnly(source.OrdinaryUnknownBatches.ToArray()); + LegacyPending = ReadOnly(source.LegacyPending); + ExplicitDeletes = ReadOnly(source.ExplicitDeletes); } static IReadOnlyDictionary ReadOnly(Dictionary source) => new ReadOnlyDictionary(new Dictionary(source, StringComparer.Ordinal)); @@ -118,38 +161,111 @@ namespace game.PlayerDataStorage internal long Revision, NextSequence = 1; internal bool HasBaseline, AuthenticationInvalid; internal Dictionary Baseline = new Dictionary(StringComparer.Ordinal); - internal Dictionary LocalOnly = new Dictionary(StringComparer.Ordinal); - internal Dictionary Pending = new Dictionary(StringComparer.Ordinal); + internal Dictionary LocalData = new Dictionary(StringComparer.Ordinal); + internal Dictionary LocalUpdateTicks = new Dictionary(StringComparer.Ordinal); + // A local origin has no second copy of its value. Ordinary origins can outlive a sent batch. + internal Dictionary LocalOrigins = + new Dictionary(StringComparer.Ordinal); + internal HashSet ImmediatePreservedKeys = new HashSet(StringComparer.Ordinal); + // Only v1/v2 conversion can populate this lower layer; the first successful Get removes it. + internal Dictionary LegacyLocalOnlyUnderImmediate = new Dictionary(StringComparer.Ordinal); + internal List> OrdinaryBuffers = Enumerable.Range(0, 5) + .Select(_ => new Dictionary(StringComparer.Ordinal)).ToList(); + internal List PreparedOrdinaryBatches = new List(); + internal List OrdinaryUnknownBatches = new List(); + internal Dictionary LegacyPending = new Dictionary(StringComparer.Ordinal); + internal Dictionary ExplicitDeletes = new Dictionary(StringComparer.Ordinal); internal Dictionary Conflicts = new Dictionary(StringComparer.Ordinal); + internal Dictionary RemoteOnlyWrites = new Dictionary(); internal PlayerKVBatch Active, Unknown; - internal KVSnapshot Clone() => new KVSnapshot { - Revision = Revision, NextSequence = NextSequence, HasBaseline = HasBaseline, AuthenticationInvalid = AuthenticationInvalid, - Baseline = new Dictionary(Baseline, StringComparer.Ordinal), LocalOnly = new Dictionary(LocalOnly, StringComparer.Ordinal), - Pending = new Dictionary(Pending, StringComparer.Ordinal), Conflicts = new Dictionary(Conflicts, StringComparer.Ordinal), - Active = Active, Unknown = Unknown - }; + + // Compatibility diagnostics only. A key projection loses cross-bucket sequence history. + internal Dictionary Pending => Unsent().GroupBy(item => item.Key, StringComparer.Ordinal) + .ToDictionary(group => group.Key, group => group.OrderBy(item => item.Sequence).Last(), StringComparer.Ordinal); + internal Dictionary LocalOnly => LocalOrigins.Where(pair => pair.Value.LocalOnly && LocalData.ContainsKey(pair.Key)) + .ToDictionary(pair => pair.Key, pair => LocalData[pair.Key], StringComparer.Ordinal); + internal IEnumerable Unsent() + { + return OrdinaryBuffers.SelectMany(bucket => bucket.Values).Concat(LegacyPending.Values).Concat(ExplicitDeletes.Values); + } + internal IEnumerable OrdinaryOutstanding() + { + return OrdinaryBuffers.SelectMany(bucket => bucket.Values) + .Concat(PreparedOrdinaryBatches.SelectMany(batch => batch.Items)) + .Concat(Active != null && Active.IsOrdinary ? Active.Items : Enumerable.Empty()); + } + internal KVSnapshot Clone() + { + return new KVSnapshot + { + Revision = Revision, NextSequence = NextSequence, HasBaseline = HasBaseline, AuthenticationInvalid = AuthenticationInvalid, + Baseline = new Dictionary(Baseline, StringComparer.Ordinal), + LocalData = new Dictionary(LocalData, StringComparer.Ordinal), + LocalUpdateTicks = new Dictionary(LocalUpdateTicks, StringComparer.Ordinal), + LocalOrigins = new Dictionary(LocalOrigins, StringComparer.Ordinal), + ImmediatePreservedKeys = new HashSet(ImmediatePreservedKeys, StringComparer.Ordinal), + LegacyLocalOnlyUnderImmediate = new Dictionary(LegacyLocalOnlyUnderImmediate, StringComparer.Ordinal), + OrdinaryBuffers = OrdinaryBuffers.Select(bucket => new Dictionary(bucket, StringComparer.Ordinal)).ToList(), + PreparedOrdinaryBatches = new List(PreparedOrdinaryBatches), + OrdinaryUnknownBatches = new List(OrdinaryUnknownBatches), + LegacyPending = new Dictionary(LegacyPending, StringComparer.Ordinal), + ExplicitDeletes = new Dictionary(ExplicitDeletes, StringComparer.Ordinal), + Conflicts = new Dictionary(Conflicts, StringComparer.Ordinal), + Active = Active, Unknown = Unknown, + RemoteOnlyWrites = new Dictionary(RemoteOnlyWrites) + }; + } internal static bool ValidKey(string key) => !string.IsNullOrEmpty(key) && key.Length <= 128; internal string Encode(KVIdentity identity) { - var pending = new JArray(Pending.Values.OrderBy(p => p.Sequence).Select(ChangeJson)); var conflicts = new JObject(); - foreach (var pair in Conflicts) conflicts.Add(pair.Key, ValueJson(pair.Value)); - return new JObject { - ["formatVersion"] = 1, ["apiBaseUri"] = identity.Api, ["playerId"] = identity.PlayerId, + foreach (var pair in Conflicts) + { + conflicts.Add(pair.Key, ValueJson(pair.Value)); + } + var origins = new JObject(); + foreach (var pair in LocalOrigins) + { + origins.Add(pair.Key, new JObject { ["localOnly"] = pair.Value.LocalOnly, ["sequence"] = pair.Value.Sequence }); + } + return new JObject + { + ["formatVersion"] = 3, ["apiBaseUri"] = identity.Api, ["playerId"] = identity.PlayerId, ["revision"] = Revision, ["nextSequence"] = NextSequence, ["hasBaseline"] = HasBaseline, ["authenticationInvalid"] = AuthenticationInvalid, ["baseline"] = JObject.FromObject(Baseline), - ["localOnly"] = JObject.FromObject(LocalOnly), ["pending"] = pending, ["conflictObservations"] = conflicts, - ["activeBatch"] = BatchJson(Active), ["unknownBatch"] = BatchJson(Unknown) + ["localData"] = JObject.FromObject(LocalData), ["localUpdateTicks"] = JObject.FromObject(LocalUpdateTicks), + ["localOrigins"] = origins, ["immediatePreservedKeys"] = new JArray(ImmediatePreservedKeys), + ["legacyLocalOnlyUnderImmediate"] = JObject.FromObject(LegacyLocalOnlyUnderImmediate), + ["ordinaryBuffers"] = new JArray(OrdinaryBuffers.Select(bucket => (JToken)ChangesJson(bucket.Values))), + ["preparedOrdinaryBatches"] = new JArray(PreparedOrdinaryBatches.Select(BatchJson)), + ["ordinaryUnknownBatches"] = new JArray(OrdinaryUnknownBatches.Select(BatchJson)), + ["legacyPending"] = ChangesJson(LegacyPending.Values), ["explicitDeletes"] = ChangesJson(ExplicitDeletes.Values), + ["conflictObservations"] = conflicts, ["activeBatch"] = BatchJson(Active), ["unknownBatch"] = BatchJson(Unknown), + ["remoteOnlyWrites"] = ChangesJson(RemoteOnlyWrites.Values) }.ToString(Formatting.None); } - static JObject ValueJson(PlayerKVValue value) => new JObject { ["exists"] = value.Exists, ["value"] = value.Value }; - static JObject ChangeJson(PlayerKVChange item) => new JObject { - ["key"] = item.Key, ["sequence"] = item.Sequence, ["base"] = ValueJson(item.BaseValue), ["target"] = ValueJson(item.Target) - }; - static JToken BatchJson(PlayerKVBatch batch) => batch == null ? JValue.CreateNull() : (JToken)new JObject { - ["id"] = batch.Id, ["items"] = new JArray(batch.Items.Select(ChangeJson)) - }; + private static JArray ChangesJson(IEnumerable values) + { + return new JArray(values.OrderBy(item => item.Sequence).Select(ChangeJson)); + } + private static JObject ValueJson(PlayerKVValue value) + { + return new JObject { ["exists"] = value.Exists, ["value"] = value.Value }; + } + private static JObject ChangeJson(PlayerKVChange item) + { + return new JObject { ["key"] = item.Key, ["sequence"] = item.Sequence, + ["base"] = ValueJson(item.BaseValue), ["target"] = ValueJson(item.Target) }; + } + private static JToken BatchJson(PlayerKVBatch batch) + { + if (batch == null) + { + return JValue.CreateNull(); + } + return new JObject { ["id"] = batch.Id, ["ordinary"] = batch.IsOrdinary, ["items"] = ChangesJson(batch.Items) }; + } internal static KVSnapshot Decode(string text, KVIdentity identity) { @@ -157,48 +273,268 @@ namespace game.PlayerDataStorage using (var reader = new JsonTextReader(new StringReader(text)) { DateParseHandling = DateParseHandling.None }) { root = JObject.Load(reader, new JsonLoadSettings { DuplicatePropertyNameHandling = DuplicatePropertyNameHandling.Error }); - if (reader.Read()) throw Invalid(); + if (reader.Read()) + { + throw Invalid(); + } } - if (Integer(root, "formatVersion") != 1 || String(root, "apiBaseUri") != identity.Api || String(root, "playerId") != identity.PlayerId) throw Invalid(); - var result = new KVSnapshot { + var version = Integer(root, "formatVersion"); + if (version < 1 || version > 3 || String(root, "apiBaseUri") != identity.Api || String(root, "playerId") != identity.PlayerId) + { + throw Invalid(); + } + var result = new KVSnapshot + { Revision = Integer(root, "revision"), NextSequence = Integer(root, "nextSequence"), HasBaseline = Boolean(root, "hasBaseline"), AuthenticationInvalid = Boolean(root, "authenticationInvalid"), - Baseline = Strings(Field(root, "baseline", JTokenType.Object)), LocalOnly = Strings(Field(root, "localOnly", JTokenType.Object)), - Active = Batch(root, "activeBatch"), Unknown = Batch(root, "unknownBatch") + Baseline = Strings(Field(root, "baseline", JTokenType.Object)), + Active = Batch(root, "activeBatch", version == 3), Unknown = Batch(root, "unknownBatch", version == 3) }; - foreach (var item in Field(root, "pending", JTokenType.Array)) - { - var change = Change(item); - if (result.Pending.ContainsKey(change.Key)) throw Invalid(); - result.Pending.Add(change.Key, change); - } foreach (var property in ((JObject)Field(root, "conflictObservations", JTokenType.Object)).Properties()) { - if (!ValidKey(property.Name)) throw Invalid(); + if (!ValidKey(property.Name)) + { + throw Invalid(); + } result.Conflicts.Add(property.Name, Value(property.Value)); } + if (version >= 2) + { + foreach (var item in Field(root, "remoteOnlyWrites", JTokenType.Array)) + { + var change = Change(item); + if (!change.Target.Exists || result.RemoteOnlyWrites.ContainsKey(change.Sequence)) + { + throw Invalid(); + } + result.RemoteOnlyWrites.Add(change.Sequence, change); + } + } + if (version < 3) + { + DecodeLegacy(root, version, result); + } + else + { + result.LocalData = Strings(Field(root, "localData", JTokenType.Object)); + result.LegacyLocalOnlyUnderImmediate = Strings(Field(root, "legacyLocalOnlyUnderImmediate", JTokenType.Object)); + foreach (var property in ((JObject)Field(root, "localUpdateTicks", JTokenType.Object)).Properties()) + { + if (!ValidKey(property.Name) || property.Value.Type != JTokenType.Integer) + { + throw Invalid(); + } + result.LocalUpdateTicks.Add(property.Name, (long)property.Value); + } + foreach (var property in ((JObject)Field(root, "localOrigins", JTokenType.Object)).Properties()) + { + if (!ValidKey(property.Name)) + { + throw Invalid(); + } + result.LocalOrigins.Add(property.Name, (Boolean(property.Value, "localOnly"), Integer(property.Value, "sequence"))); + } + foreach (var key in Field(root, "immediatePreservedKeys", JTokenType.Array)) + { + if (key.Type != JTokenType.String || !ValidKey((string)key) || !result.ImmediatePreservedKeys.Add((string)key)) + { + throw Invalid(); + } + } + result.OrdinaryBuffers = Field(root, "ordinaryBuffers", JTokenType.Array).Select(Changes).ToList(); + result.LegacyPending = Changes(Field(root, "legacyPending", JTokenType.Array)); + result.ExplicitDeletes = Changes(Field(root, "explicitDeletes", JTokenType.Array)); + result.PreparedOrdinaryBatches = ReadBatches(root, "preparedOrdinaryBatches"); + result.OrdinaryUnknownBatches = ReadBatches(root, "ordinaryUnknownBatches"); + } result.Validate(); return result; } + private static Dictionary Changes(JToken array) + { + if (array.Type != JTokenType.Array) + { + throw Invalid(); + } + var values = new Dictionary(StringComparer.Ordinal); + foreach (var token in array) + { + var item = Change(token); + if (values.ContainsKey(item.Key)) + { + throw Invalid(); + } + values.Add(item.Key, item); + } + return values; + } + private static List ReadBatches(JToken root, string name) + { + var result = new List(); + foreach (var item in Field(root, name, JTokenType.Array)) + { + var wrapper = new JObject { ["batch"] = item.DeepClone() }; + var batch = Batch(wrapper, "batch", true); + if (batch == null || !batch.IsOrdinary || batch.IsDelete) + { + throw Invalid(); + } + result.Add(batch); + } + return result; + } + + private static void DecodeLegacy(JObject root, long version, KVSnapshot result) + { + var pending = Changes(Field(root, "pending", JTokenType.Array)); + var localOnly = Strings(Field(root, "localOnly", JTokenType.Object)); + var overrides = new Dictionary(StringComparer.Ordinal); + if (version == 2) + { + foreach (var property in ((JObject)Field(root, "remoteLocalOverrides", JTokenType.Object)).Properties()) + { + if (!ValidKey(property.Name)) + { + throw Invalid(); + } + overrides.Add(property.Name, Value(property.Value)); + } + } + // Validate the old shape before converting; new format rules must not accept a corrupt old file. + if (result.Revision < 1 || result.NextSequence < 1 || (result.Active != null && result.Unknown != null) || + (!result.HasBaseline && (result.Baseline.Count != 0 || localOnly.Count != 0 || pending.Count != 0 || + result.Active != null || result.Unknown != null || overrides.Count != 0 || result.RemoteOnlyWrites.Count != 0))) + { + throw Invalid(); + } + var sequences = new HashSet(); + foreach (var item in pending.Values.Concat(result.RemoteOnlyWrites.Values)) + { + if (item.Sequence < 1 || item.Sequence >= result.NextSequence || !sequences.Add(item.Sequence)) + { + throw Invalid(); + } + } + if (result.Conflicts.Keys.Any(key => !pending.ContainsKey(key))) + { + throw Invalid(); + } + var oldBatch = result.Active ?? result.Unknown; + if (oldBatch != null) + { + foreach (var item in oldBatch.Items) + { + var hasPending = pending.TryGetValue(item.Key, out var latest); + var hasSource = result.RemoteOnlyWrites.Values.Any(source => source.Key == item.Key && source.Sequence > item.Sequence); + var same = hasPending && latest.Sequence == item.Sequence && latest.BaseValue.Equals(item.BaseValue) && latest.Target.Equals(item.Target); + if (item.Sequence < 1 || item.Sequence >= result.NextSequence || (sequences.Contains(item.Sequence) && !same) || + (!hasPending && !hasSource) || (hasPending && (latest.Sequence < item.Sequence || !latest.BaseValue.Equals(item.BaseValue) || + (latest.Sequence == item.Sequence && !same)))) + { + throw Invalid(); + } + sequences.Add(item.Sequence); + } + } + result.LegacyPending = pending; + result.LocalData = new Dictionary(result.Baseline, StringComparer.Ordinal); + foreach (var item in pending.Values) + { + ApplyValue(result.LocalData, item.Key, item.Target); + result.LocalOrigins[item.Key] = (false, item.Sequence); + } + foreach (var pair in localOnly) + { + result.LocalData[pair.Key] = pair.Value; + // Old local-only writes had no stored sequence; zero is permitted only for this converted origin. + result.LocalOrigins[pair.Key] = (true, 0); + } + foreach (var pair in overrides) + { + ApplyValue(result.LocalData, pair.Key, pair.Value); + result.ImmediatePreservedKeys.Add(pair.Key); + if (localOnly.TryGetValue(pair.Key, out var lower)) + { + result.LegacyLocalOnlyUnderImmediate[pair.Key] = lower; + } + } + } + private static void ApplyValue(Dictionary values, string key, PlayerKVValue value) + { + if (value.Exists) + { + values[key] = value.Value; + } + else + { + values.Remove(key); + } + } + internal void Validate() { - if (Revision < 1 || NextSequence < 1 || (Active != null && Unknown != null) || - (!HasBaseline && (Baseline.Count != 0 || LocalOnly.Count != 0 || Pending.Count != 0 || Active != null || Unknown != null))) throw Invalid(); - var sequences = new Dictionary(); - foreach (var item in Pending.Values) + if (Revision < 1 || NextSequence < 1 || OrdinaryBuffers.Count != 5 || + (Active != null && Unknown != null) || (Unknown != null && Unknown.IsOrdinary) || + OrdinaryBuffers.Any(bucket => bucket.Count > 10 || bucket.Values.Any(item => !item.Target.Exists)) || + ExplicitDeletes.Values.Any(item => item.Target.Exists) || + (!HasBaseline && (Baseline.Count != 0 || LocalData.Count != 0 || Unsent().Any() || Active != null || Unknown != null || + PreparedOrdinaryBatches.Count != 0 || OrdinaryUnknownBatches.Count != 0 || RemoteOnlyWrites.Count != 0 || + LocalOrigins.Count != 0 || LocalUpdateTicks.Count != 0 || ImmediatePreservedKeys.Count != 0 || LegacyLocalOnlyUnderImmediate.Count != 0))) { - if (item.Sequence < 1 || item.Sequence >= NextSequence || sequences.ContainsKey(item.Sequence)) throw Invalid(); - sequences.Add(item.Sequence, item.Key); + throw Invalid(); } - foreach (var key in Conflicts.Keys) if (!Pending.ContainsKey(key)) throw Invalid(); - var batch = Active ?? Unknown; - if (batch == null) return; - foreach (var item in batch.Items) + var sequences = new Dictionary(); + void Add(PlayerKVChange item, bool sourceReference = false) { - if (item.Sequence < 1 || item.Sequence >= NextSequence || !Pending.TryGetValue(item.Key, out var latest) || latest.Sequence < item.Sequence || - (sequences.TryGetValue(item.Sequence, out var key) && key != item.Key) || - !latest.BaseValue.Equals(item.BaseValue) || - (latest.Sequence == item.Sequence && !latest.Target.Equals(item.Target))) throw Invalid(); + if (!ValidKey(item.Key) || item.Sequence < 1 || item.Sequence >= NextSequence) + { + throw Invalid(); + } + if (sequences.TryGetValue(item.Sequence, out var prior)) + { + if (!sourceReference || prior.Key != item.Key || !prior.BaseValue.Equals(item.BaseValue) || !prior.Target.Equals(item.Target)) + { + throw Invalid(); + } + } + else + { + sequences.Add(item.Sequence, item); + } + } + foreach (var item in Unsent().Concat(RemoteOnlyWrites.Values)) + { + Add(item); + } + var ids = new HashSet(StringComparer.Ordinal); + foreach (var batch in PreparedOrdinaryBatches.Concat(OrdinaryUnknownBatches).Concat(new[] { Active, Unknown }).Where(batch => batch != null)) + { + if (!Guid.TryParseExact(batch.Id, "N", out _) || !ids.Add(batch.Id) || batch.Items.Count < 1 || batch.Items.Count > 10 || + batch.Items.Select(item => item.Key).Distinct(StringComparer.Ordinal).Count() != batch.Items.Count || + batch.Items.Any(item => item.Target.Exists != batch.Items[0].Target.Exists) || (batch.IsOrdinary && batch.IsDelete) || + !batch.Items.Select(item => item.Sequence).SequenceEqual(batch.Items.Select(item => item.Sequence).OrderBy(value => value))) + { + throw Invalid(); + } + foreach (var item in batch.Items) + { + var reference = !batch.IsOrdinary && (LegacyPending.Values.Concat(ExplicitDeletes.Values) + .Any(source => source.Sequence == item.Sequence)); + Add(item, reference); + } + } + if (RemoteOnlyWrites.Any(pair => pair.Key != pair.Value.Sequence || !pair.Value.Target.Exists) || + PreparedOrdinaryBatches.Concat(OrdinaryUnknownBatches).Any(batch => !batch.IsOrdinary) || + LocalOrigins.Any(pair => !ValidKey(pair.Key) || pair.Value.Sequence < 0 || pair.Value.Sequence >= NextSequence || + (!pair.Value.LocalOnly && pair.Value.Sequence == 0)) || + LocalUpdateTicks.Any(pair => !ValidKey(pair.Key) || pair.Value < 0 || pair.Value > DateTime.MaxValue.Ticks) || + ImmediatePreservedKeys.Any(key => !ValidKey(key)) || + LegacyLocalOnlyUnderImmediate.Any(pair => !ImmediatePreservedKeys.Contains(pair.Key) || + !LocalOrigins.TryGetValue(pair.Key, out var origin) || !origin.LocalOnly) || + Conflicts.Keys.Any(key => !Unsent().Any(item => item.Key == key) && !PreparedOrdinaryBatches.Any(batch => batch.Items.Any(item => item.Key == key)) && + Unknown == null && OrdinaryUnknownBatches.Count == 0)) + { + throw Invalid(); } } static Dictionary Strings(JToken value) @@ -223,7 +559,7 @@ namespace game.PlayerDataStorage var value = Field(item, "value", exists ? JTokenType.String : JTokenType.Null); return exists ? PlayerKVValue.Present((string)value) : PlayerKVValue.Missing; } - static PlayerKVBatch Batch(JToken parent, string name) + static PlayerKVBatch Batch(JToken parent, string name, bool withKind = false) { var node = parent[name]; if (node == null) throw Invalid(); @@ -234,7 +570,7 @@ namespace game.PlayerDataStorage if (items.Length == 0 || items.Length > 10 || items.Select(i => i.Key).Distinct(StringComparer.Ordinal).Count() != items.Length || items.Select(i => i.Sequence).Distinct().Count() != items.Length || items.Any(i => i.Target.Exists != items[0].Target.Exists) || !items.Select(i => i.Sequence).SequenceEqual(items.Select(i => i.Sequence).OrderBy(s => s))) throw Invalid(); - return new PlayerKVBatch(id, items); + return new PlayerKVBatch(id, items, withKind && Boolean(node, "ordinary")); } static JToken Field(JToken parent, string name, JTokenType type) { diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncState.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncState.cs index 91013f662..3586dbc00 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncState.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncState.cs @@ -13,10 +13,38 @@ namespace game.PlayerDataStorage /// public sealed class PlayerKVSyncState : IDisposable { - readonly object gate = new object(); - readonly PlayerKVCacheStore store; - KVSnapshot snapshot; - PlayerKVSyncStatus status; + private readonly object gate = new object(); + private readonly PlayerKVCacheStore store; + private KVSnapshot snapshot; + private PlayerKVSyncStatus status; + private readonly HashSet recoveredImmediate; + private bool recoverImmediateView = true; + private bool recoveredOrdinaryUnknown; + private KVSnapshot comparisonLocal; + private Dictionary comparisonRemote; + private Dictionary comparisonTimes; + private Dictionary comparisonView; + private HashSet comparisonImmediateKeys; + internal bool HasPendingComparison + { + get + { + lock (gate) + { + return comparisonLocal != null; + } + } + } + internal bool AuthenticationInvalid + { + get + { + lock (gate) + { + return snapshot.AuthenticationInvalid; + } + } + } public PlayerKVSyncStatus Status { get { lock (gate) return status; } } public string ApiBaseUri { get; } public string PlayerId { get; } @@ -24,12 +52,26 @@ namespace game.PlayerDataStorage PlayerKVSyncState(KVIdentity identity, PlayerKVCacheStore store, KVSnapshot snapshot) { ApiBaseUri = identity.Api; PlayerId = identity.PlayerId; this.store = store; this.snapshot = snapshot; + recoveredImmediate = new HashSet(snapshot.RemoteOnlyWrites.Keys); // Authentication belongs to the old owner. A new owner must obtain a fresh // successful Get before Ready; this never clears a persisted unknown batch. snapshot.AuthenticationInvalid = false; // A recovered active batch might have reached the server. Never acknowledge it by guessing. - if (snapshot.Active != null) { snapshot.Unknown = snapshot.Active; snapshot.Active = null; } - status = snapshot.Unknown != null ? PlayerKVSyncStatus.UnknownOutcome : PlayerKVSyncStatus.NotLoaded; + if (snapshot.Active != null) + { + if (snapshot.Active.IsOrdinary) + { + snapshot.OrdinaryUnknownBatches.Add(snapshot.Active); + } + else + { + snapshot.Unknown = snapshot.Active; + } + snapshot.Active = null; + } + recoveredOrdinaryUnknown = snapshot.OrdinaryUnknownBatches.Count != 0; + status = snapshot.Unknown != null || recoveredOrdinaryUnknown + ? PlayerKVSyncStatus.UnknownOutcome : PlayerKVSyncStatus.NotLoaded; } public static PlayerKVOpenResult Open(string root, Uri api, string playerId) => Open(root, api, playerId, null); @@ -50,39 +92,307 @@ namespace game.PlayerDataStorage lock (gate) { if (status != PlayerKVSyncStatus.Ready) throw new InvalidOperationException("KV data is not ready."); - var result = new Dictionary(snapshot.Baseline, StringComparer.Ordinal); - foreach (var item in snapshot.Pending.Values) Apply(result, item.Key, item.Target); - foreach (var pair in snapshot.LocalOnly) result[pair.Key] = pair.Value; - return new ReadOnlyDictionary(result); + return new ReadOnlyDictionary(ReadView()); } } // The caller must supply a successful complete Get. Failed reads must use RecordReadFailure. public PlayerKVStateResult Reconcile(IReadOnlyDictionary remote) + { + return Reconcile(remote, null, false); + } + + internal PlayerKVStateResult Reconcile(IReadOnlyDictionary remote, + IReadOnlyDictionary updatedAtUtc, bool prepareOriginalComparison) { lock (gate) { - if (Terminal || snapshot.Active != null || snapshot.AuthenticationInvalid) return Blocked(); - if (remote == null || remote.Any(p => !KVSnapshot.ValidKey(p.Key) || p.Value == null)) return Invalid(); + if (Terminal || snapshot.Active != null || snapshot.AuthenticationInvalid || comparisonLocal != null) + { + return Blocked(); + } + if (remote == null || remote.Any(pair => !KVSnapshot.ValidKey(pair.Key) || pair.Value == null)) + { + return Invalid(); + } + if (prepareOriginalComparison && (!recoverImmediateView || updatedAtUtc == null || + updatedAtUtc.Count != remote.Count || remote.Keys.Any(key => !updatedAtUtc.ContainsKey(key)) || + updatedAtUtc.Values.Any(time => time.Kind != DateTimeKind.Utc))) + { + return Invalid(); + } + var original = snapshot; var copy = snapshot.Clone(); copy.Conflicts.Clear(); - if (copy.Unknown != null) + if (copy.Unknown != null || (recoveredOrdinaryUnknown && !prepareOriginalComparison)) { - foreach (var item in copy.Pending.Values) copy.Conflicts[item.Key] = PlayerKVValue.At(remote, item.Key); + foreach (var item in copy.Unsent()) + { + copy.Conflicts[item.Key] = PlayerKVValue.At(remote, item.Key); + } return Commit(copy, PlayerKVSyncStatus.UnknownOutcome); } - foreach (var item in copy.Pending.Values.ToArray()) + var recoveringKeys = recoverImmediateView + ? new HashSet(copy.ImmediatePreservedKeys, StringComparer.Ordinal) + : new HashSet(StringComparer.Ordinal); + if (recoverImmediateView) + { + foreach (var sequence in recoveredImmediate) + { + var source = copy.RemoteOnlyWrites[sequence]; + Rebase(copy, source.Key, PlayerKVValue.At(remote, source.Key)); + if (!prepareOriginalComparison) + { + copy.RemoteOnlyWrites.Remove(sequence); + } + } + if (!prepareOriginalComparison) + { + copy.ImmediatePreservedKeys.Clear(); + } + } + foreach (var source in Sources(copy)) + { + if (prepareOriginalComparison && copy.OrdinaryBuffers.Contains(source)) + { + continue; + } + foreach (var item in source.Values.ToArray()) + { + var observed = PlayerKVValue.At(remote, item.Key); + if (observed.Equals(item.Target)) + { + source.Remove(item.Key); + } + else if (!observed.Equals(item.BaseValue)) + { + copy.Conflicts[item.Key] = observed; + } + } + } + foreach (var item in copy.PreparedOrdinaryBatches.SelectMany(batch => batch.Items)) { var observed = PlayerKVValue.At(remote, item.Key); - if (observed.Equals(item.Target)) copy.Pending.Remove(item.Key); - else if (!observed.Equals(item.BaseValue)) copy.Conflicts[item.Key] = observed; + if (!observed.Equals(item.Target) && !observed.Equals(item.BaseValue)) + { + copy.Conflicts[item.Key] = observed; + } } - copy.Baseline = remote.ToDictionary(p => p.Key, p => p.Value, StringComparer.Ordinal); + var visible = new Dictionary(remote, StringComparer.Ordinal); + foreach (var pair in copy.LocalOrigins.ToArray()) + { + if (pair.Value.LocalOnly) + { + if (recoverImmediateView && copy.LegacyLocalOnlyUnderImmediate.TryGetValue(pair.Key, out var lower)) + { + visible[pair.Key] = lower; + } + else + { + Apply(visible, pair.Key, PlayerKVValue.At(copy.LocalData, pair.Key)); + } + } + else + { + var source = copy.Unsent().Concat(copy.PreparedOrdinaryBatches.SelectMany(batch => batch.Items)) + .Concat(copy.OrdinaryUnknownBatches.SelectMany(batch => batch.Items)) + .FirstOrDefault(item => item.Sequence == pair.Value.Sequence); + if (!recoverImmediateView) + { + Apply(visible, pair.Key, PlayerKVValue.At(copy.LocalData, pair.Key)); + } + else if (source != null) + { + Apply(visible, pair.Key, recoveringKeys.Contains(pair.Key) + ? source.Target : PlayerKVValue.At(copy.LocalData, pair.Key)); + } + else + { + copy.LocalOrigins.Remove(pair.Key); + } + } + } + // An immediate write preserves its view until a new owner performs its initial Get. + foreach (var key in copy.ImmediatePreservedKeys) + { + if (prepareOriginalComparison && recoveringKeys.Contains(key)) + { + continue; + } + Apply(visible, key, PlayerKVValue.At(copy.LocalData, key)); + } + if (recoverImmediateView && !prepareOriginalComparison) + { + copy.LegacyLocalOnlyUnderImmediate.Clear(); + } + if (!prepareOriginalComparison) + { + copy.LocalData = visible; + } + copy.Baseline = remote.ToDictionary(pair => pair.Key, pair => pair.Value, StringComparer.Ordinal); copy.HasBaseline = true; - return Commit(copy, copy.Conflicts.Count == 0 ? PlayerKVSyncStatus.Ready : PlayerKVSyncStatus.Conflict); + var reconciled = Commit(copy, copy.Conflicts.Count == 0 ? PlayerKVSyncStatus.Ready : PlayerKVSyncStatus.Conflict); + if (reconciled.Success) + { + recoverImmediateView = false; + if (prepareOriginalComparison) + { + comparisonLocal = original; + comparisonRemote = remote.ToDictionary(pair => pair.Key, pair => pair.Value, StringComparer.Ordinal); + comparisonTimes = updatedAtUtc.ToDictionary(pair => pair.Key, pair => pair.Value, StringComparer.Ordinal); + comparisonView = visible; + comparisonImmediateKeys = new HashSet(StringComparer.Ordinal); + } + else + { + recoveredImmediate.Clear(); + } + } + return reconciled; } } + private Dictionary ReadView() + { + if (comparisonLocal == null) + { + return LocalView(snapshot); + } + var view = new Dictionary(comparisonView, StringComparer.Ordinal); + foreach (var pair in snapshot.LocalOrigins) + { + if (pair.Value.Sequence >= comparisonLocal.NextSequence) + { + Apply(view, pair.Key, PlayerKVValue.At(snapshot.LocalData, pair.Key)); + } + } + return view; + } + + internal PlayerKVStateResult CompareDatas(long nowTicks) + { + lock (gate) + { + if (status != PlayerKVSyncStatus.Ready || snapshot.AuthenticationInvalid || snapshot.Active != null || + snapshot.Unknown != null || comparisonLocal == null) + { + return Blocked(); + } + if ((comparisonLocal.OrdinaryUnknownBatches.Count != 0 && !recoveredOrdinaryUnknown) || + snapshot.OrdinaryUnknownBatches.Any(batch => !comparisonLocal.OrdinaryUnknownBatches.Any(initial => initial.Id == batch.Id))) + { + return Blocked(); + } + if (nowTicks < 0 || nowTicks > DateTime.MaxValue.Ticks) + { + return Invalid(); + } + var copy = snapshot.Clone(); + // A new login uses the original time comparison, not the old request's outcome. + // Retire only its initial ordinary evidence in the same commit as that comparison. + foreach (var batch in comparisonLocal.OrdinaryUnknownBatches) + { + copy.OrdinaryUnknownBatches.RemoveAll(current => current.Id == batch.Id); + foreach (var item in batch.Items) + { + if (copy.LocalOrigins.TryGetValue(item.Key, out var origin) && origin.Sequence == item.Sequence) + { + copy.LocalOrigins.Remove(item.Key); + } + } + } + var protectedKeys = new HashSet(StringComparer.Ordinal); + foreach (var source in new[] { comparisonLocal, snapshot }) + { + protectedKeys.UnionWith(source.PreparedOrdinaryBatches.SelectMany(batch => batch.Items).Select(item => item.Key)); + protectedKeys.UnionWith(source.LegacyPending.Keys); + protectedKeys.UnionWith(source.ExplicitDeletes.Keys); + protectedKeys.UnionWith(source.ImmediatePreservedKeys); + protectedKeys.UnionWith(source.RemoteOnlyWrites.Values.Select(item => item.Key)); + } + protectedKeys.UnionWith(snapshot.LocalOrigins.Where(pair => pair.Value.Sequence >= comparisonLocal.NextSequence).Select(pair => pair.Key)); + var visible = ReadView(); + foreach (var key in protectedKeys) + { + Apply(copy.LocalData, key, PlayerKVValue.At(visible, key)); + } + foreach (var key in comparisonLocal.LocalData.Keys.Concat(comparisonRemote.Keys).Distinct(StringComparer.Ordinal)) + { + if (protectedKeys.Contains(key)) + { + continue; + } + var localExists = comparisonLocal.HasBaseline && comparisonLocal.LocalData.TryGetValue(key, out _); + comparisonLocal.LocalData.TryGetValue(key, out var localValue); + var remoteExists = comparisonRemote.TryGetValue(key, out var remoteValue); + var localTime = comparisonLocal.LocalUpdateTicks.TryGetValue(key, out var ticks) ? ticks : 0; + var remoteTime = remoteExists ? comparisonTimes[key].Ticks : 0; + if (!localExists || (remoteExists && remoteTime - localTime > TimeSpan.TicksPerSecond * 60)) + { + copy.LocalData[key] = remoteValue; + copy.LocalUpdateTicks[key] = remoteTime; + foreach (var bucket in copy.OrdinaryBuffers) + { + if (bucket.TryGetValue(key, out var current) && comparisonLocal.OrdinaryBuffers.Any(old => + old.TryGetValue(key, out var item) && item.Sequence == current.Sequence)) + { + bucket.Remove(key); + if (copy.LocalOrigins.TryGetValue(key, out var origin) && origin.Sequence == current.Sequence) + { + copy.LocalOrigins.Remove(key); + } + } + } + } + else if (!remoteExists || localTime - remoteTime > TimeSpan.TicksPerSecond * 60) + { + if (copy.NextSequence == long.MaxValue) + { + return Invalid(); + } + ApplyUpdate(copy, key, localValue, true, nowTicks); + } + else + { + copy.LocalData[key] = localValue; + copy.LocalUpdateTicks[key] = localTime; + } + } + foreach (var sequence in comparisonLocal.RemoteOnlyWrites.Keys) + { + copy.RemoteOnlyWrites.Remove(sequence); + } + foreach (var key in comparisonLocal.LegacyLocalOnlyUnderImmediate.Keys) + { + copy.LegacyLocalOnlyUnderImmediate.Remove(key); + } + foreach (var key in comparisonLocal.ImmediatePreservedKeys) + { + if (!comparisonImmediateKeys.Contains(key)) + { + copy.ImmediatePreservedKeys.Remove(key); + } + } + var result = Commit(copy, PlayerKVSyncStatus.Ready); + if (result.Success) + { + recoveredOrdinaryUnknown = false; + ClearComparison(); + recoveredImmediate.Clear(); + } + return result; + } + } + + private void ClearComparison() + { + comparisonLocal = null; + comparisonRemote = null; + comparisonTimes = null; + comparisonView = null; + comparisonImmediateKeys = null; + } + public PlayerKVStateResult RecordReadFailure(bool unauthorized = false) { lock (gate) @@ -98,42 +408,177 @@ namespace game.PlayerDataStorage } } - public PlayerKVStateResult Update(string key, string value, bool remoteStore = true) => - Edit(key, value == null ? null : PlayerKVValue.Present(value), remoteStore); - public PlayerKVStateResult Delete(string key) => Edit(key, PlayerKVValue.Missing, true); + public PlayerKVStateResult Update(string key, string value, bool remoteStore = true) + { + return Update(key, value, remoteStore, null); + } - PlayerKVStateResult Edit(string key, PlayerKVValue target, bool remote) + internal PlayerKVStateResult Update(string key, string value, bool remoteStore, long? updateTicks) { lock (gate) { - if (status != PlayerKVSyncStatus.Ready || snapshot.AuthenticationInvalid) return Blocked(); - if (!KVSnapshot.ValidKey(key) || target == null || snapshot.NextSequence == long.MaxValue) return Invalid(); - var copy = snapshot.Clone(); - var sequence = copy.NextSequence++; - if (remote) + if (status != PlayerKVSyncStatus.Ready || snapshot.AuthenticationInvalid) { - var baseline = copy.Pending.TryGetValue(key, out var previous) ? previous.BaseValue : PlayerKVValue.At(copy.Baseline, key); - copy.Pending[key] = new PlayerKVChange(key, sequence, baseline, target); - copy.LocalOnly.Remove(key); + return Blocked(); } - else copy.LocalOnly[key] = target.Value; + if (!KVSnapshot.ValidKey(key) || value == null || snapshot.NextSequence == long.MaxValue || + (updateTicks.HasValue && (updateTicks.Value < 0 || updateTicks.Value > DateTime.MaxValue.Ticks))) + { + return Invalid(); + } + var copy = snapshot.Clone(); + var sequence = ApplyUpdate(copy, key, value, remoteStore, updateTicks); return Commit(copy, PlayerKVSyncStatus.Ready, sequence); } } - public PlayerKVStateResult BeginBatch(long throughSequence, out PlayerKVBatch batch) + private static long ApplyUpdate(KVSnapshot copy, string key, string value, bool remoteStore, long? updateTicks) + { + var sequence = copy.NextSequence++; + copy.LocalData[key] = value; + copy.ImmediatePreservedKeys.Remove(key); + copy.LegacyLocalOnlyUnderImmediate.Remove(key); + if (updateTicks.HasValue) + { + copy.LocalUpdateTicks[key] = updateTicks.Value; + } + else + { + copy.LocalUpdateTicks.Remove(key); + } + var acceptedRemote = false; + if (remoteStore) + { + foreach (var bucket in copy.OrdinaryBuffers) + { + if (!bucket.ContainsKey(key) && bucket.Count >= 10) + { + continue; + } + var baseline = bucket.TryGetValue(key, out var previous) + ? previous.BaseValue : PlayerKVValue.At(copy.Baseline, key); + bucket[key] = new PlayerKVChange(key, sequence, baseline, PlayerKVValue.Present(value)); + copy.LegacyPending.Remove(key); + copy.ExplicitDeletes.Remove(key); + acceptedRemote = true; + break; + } + } + copy.LocalOrigins[key] = (!acceptedRemote, sequence); + return sequence; + } + + public PlayerKVStateResult Delete(string key) + { + lock (gate) + { + if (status != PlayerKVSyncStatus.Ready || snapshot.AuthenticationInvalid) + { + return Blocked(); + } + if (!KVSnapshot.ValidKey(key) || snapshot.NextSequence == long.MaxValue) + { + return Invalid(); + } + var copy = snapshot.Clone(); + var sequence = copy.NextSequence++; + var prior = copy.ExplicitDeletes.TryGetValue(key, out var previous) ? previous.BaseValue : PlayerKVValue.At(copy.Baseline, key); + RemoveSources(copy, key); + copy.ExplicitDeletes[key] = new PlayerKVChange(key, sequence, prior, PlayerKVValue.Missing); + copy.LocalData.Remove(key); + copy.LocalUpdateTicks.Remove(key); + copy.LocalOrigins[key] = (false, sequence); + copy.ImmediatePreservedKeys.Remove(key); + copy.LegacyLocalOnlyUnderImmediate.Remove(key); + return Commit(copy, PlayerKVSyncStatus.Ready, sequence); + } + } + + internal PlayerKVStateResult CaptureOrdinaryBatch(out PlayerKVBatch batch) { lock (gate) { batch = null; - if (status != PlayerKVSyncStatus.Ready || snapshot.Active != null || snapshot.Unknown != null || snapshot.AuthenticationInvalid) return Blocked(); - if (throughSequence < 0) return Invalid(); - var ordered = snapshot.Pending.Values.Where(p => p.Sequence <= throughSequence).OrderBy(p => p.Sequence).ToArray(); - if (ordered.Length == 0) return new PlayerKVStateResult(PlayerKVChangeError.None, revision: snapshot.Revision); + if (status != PlayerKVSyncStatus.Ready || snapshot.AuthenticationInvalid) + { + return Blocked(); + } + if (snapshot.OrdinaryBuffers[0].Count == 0) + { + return new PlayerKVStateResult(PlayerKVChangeError.None, revision: snapshot.Revision); + } var copy = snapshot.Clone(); - copy.Active = new PlayerKVBatch(Guid.NewGuid().ToString("N"), ordered.TakeWhile(p => p.Target.Exists == ordered[0].Target.Exists).Take(10)); + var first = copy.OrdinaryBuffers[0]; + var captured = new PlayerKVBatch(Guid.NewGuid().ToString("N"), first.Values.OrderBy(item => item.Sequence), true); + copy.PreparedOrdinaryBatches.Add(captured); + copy.OrdinaryBuffers.RemoveAt(0); + copy.OrdinaryBuffers.Add(new Dictionary(StringComparer.Ordinal)); var result = Commit(copy, PlayerKVSyncStatus.Ready); - if (result.Success) batch = snapshot.Active; // Never expose a batch until its write-ahead record is durable. + if (result.Success) + { + batch = captured; + } + return result; + } + } + + internal PlayerKVStateResult BeginOrdinaryBatch(out PlayerKVBatch batch) + { + lock (gate) + { + batch = null; + if (status != PlayerKVSyncStatus.Ready || snapshot.Active != null || snapshot.Unknown != null || snapshot.AuthenticationInvalid) + { + return Blocked(); + } + if (snapshot.PreparedOrdinaryBatches.Count == 0) + { + return new PlayerKVStateResult(PlayerKVChangeError.None, revision: snapshot.Revision); + } + var copy = snapshot.Clone(); + copy.Active = copy.PreparedOrdinaryBatches[0]; + copy.PreparedOrdinaryBatches.RemoveAt(0); + var result = Commit(copy, PlayerKVSyncStatus.Ready); + if (result.Success) + { + batch = snapshot.Active; + } + return result; + } + } + + // Explicit requests retain their original source until the outcome is known. Ordinary buckets are never selected here. + public PlayerKVStateResult BeginBatch(long throughSequence, out PlayerKVBatch batch) + { + return BeginBatch(throughSequence, false, out batch); + } + + internal PlayerKVStateResult BeginBatch(long throughSequence, bool legacyOnly, out PlayerKVBatch batch) + { + lock (gate) + { + batch = null; + if (status != PlayerKVSyncStatus.Ready || snapshot.Active != null || snapshot.Unknown != null || snapshot.AuthenticationInvalid) + { + return Blocked(); + } + if (throughSequence < 0) + { + return Invalid(); + } + var source = legacyOnly ? snapshot.LegacyPending.Values : snapshot.LegacyPending.Values.Concat(snapshot.ExplicitDeletes.Values); + var ordered = source.Where(item => item.Sequence <= throughSequence).OrderBy(item => item.Sequence).ToArray(); + if (ordered.Length == 0) + { + return new PlayerKVStateResult(PlayerKVChangeError.None, revision: snapshot.Revision); + } + var copy = snapshot.Clone(); + copy.Active = new PlayerKVBatch(Guid.NewGuid().ToString("N"), ordered.TakeWhile(item => item.Target.Exists == ordered[0].Target.Exists).Take(10)); + var result = Commit(copy, PlayerKVSyncStatus.Ready); + if (result.Success) + { + batch = snapshot.Active; + } return result; } } @@ -142,35 +587,204 @@ namespace game.PlayerDataStorage { lock (gate) { - if (status != PlayerKVSyncStatus.Ready || snapshot.Active == null || snapshot.Active.Id != batchId) return Blocked(); + if (status != PlayerKVSyncStatus.Ready || snapshot.Active == null || snapshot.Active.Id != batchId) + { + return Blocked(); + } var copy = snapshot.Clone(); foreach (var item in copy.Active.Items) { Apply(copy.Baseline, item.Key, item.Target); - var current = copy.Pending[item.Key]; - if (current.Sequence == item.Sequence) copy.Pending.Remove(item.Key); - else copy.Pending[item.Key] = current.WithBase(item.Target); + if (!copy.Active.IsOrdinary) + { + foreach (var source in new[] { copy.LegacyPending, copy.ExplicitDeletes }) + { + if (source.TryGetValue(item.Key, out var current) && current.Sequence == item.Sequence) + { + source.Remove(item.Key); + } + } + } + Rebase(copy, item.Key, item.Target); } copy.Active = null; return Commit(copy, PlayerKVSyncStatus.Ready); } } - // mayHaveCommitted=false is only valid with positive evidence of no dispatch. + // A definitely undispatched ordinary batch retires, as the original SDK call did; explicit source references stay. public PlayerKVStateResult FailBatch(string batchId, bool mayHaveCommitted, bool unauthorized = false) { lock (gate) { - if (Terminal || snapshot.Active == null || snapshot.Active.Id != batchId) return Blocked(); + if (Terminal || snapshot.Active == null || snapshot.Active.Id != batchId) + { + return Blocked(); + } var copy = snapshot.Clone(); + var ordinary = copy.Active.IsOrdinary; copy.AuthenticationInvalid |= unauthorized; - if (mayHaveCommitted) copy.Unknown = copy.Active; + if (mayHaveCommitted) + { + if (ordinary) + { + copy.OrdinaryUnknownBatches.Add(copy.Active); + } + else + { + copy.Unknown = copy.Active; + } + } copy.Active = null; - return Commit(copy, mayHaveCommitted ? PlayerKVSyncStatus.UnknownOutcome : - copy.AuthenticationInvalid ? PlayerKVSyncStatus.Unauthorized : PlayerKVSyncStatus.ReadFailed); + var next = copy.AuthenticationInvalid ? PlayerKVSyncStatus.Unauthorized : ordinary ? PlayerKVSyncStatus.Ready : PlayerKVSyncStatus.ReadFailed; + if (copy.Unknown != null) + { + next = PlayerKVSyncStatus.UnknownOutcome; + } + return Commit(copy, next); } } + private static IEnumerable> Sources(KVSnapshot value) + { + return value.OrdinaryBuffers.Concat(new[] { value.LegacyPending, value.ExplicitDeletes }); + } + private static void RemoveSources(KVSnapshot value, string key) + { + foreach (var source in Sources(value)) + { + source.Remove(key); + } + } + private static void Rebase(KVSnapshot value, string key, PlayerKVValue baseline) + { + foreach (var source in Sources(value)) + { + if (source.TryGetValue(key, out var pending)) + { + source[key] = pending.WithBase(baseline); + } + } + } + + internal PlayerKVStateResult PrepareImmediate(string key, string value, out PlayerKVChange operation) + { + operation = null; + if (!KVSnapshot.ValidKey(key) || value == null) + { + // Preserve the single-key state admission order and validation result. + lock (gate) + { + return status != PlayerKVSyncStatus.Ready || snapshot.AuthenticationInvalid ? Blocked() : Invalid(); + } + } + var result = PrepareImmediate(new Dictionary { [key] = value }, out var operations); + if (result.Success) + { + operation = operations[0]; + } + return result; + } + + internal PlayerKVStateResult PrepareImmediate(IReadOnlyDictionary data, + out IReadOnlyList operations) + { + lock (gate) + { + operations = null; + if (status != PlayerKVSyncStatus.Ready || snapshot.AuthenticationInvalid) + { + return Blocked(); + } + if (data == null || data.Count == 0 || data.Count > long.MaxValue - snapshot.NextSequence || + data.Any(pair => !KVSnapshot.ValidKey(pair.Key) || pair.Value == null)) + { + return Invalid(); + } + var copy = snapshot.Clone(); + var prepared = new List(); + foreach (var pair in data) + { + copy.ImmediatePreservedKeys.Add(pair.Key); + var operation = new PlayerKVChange(pair.Key, copy.NextSequence++, + PlayerKVValue.At(copy.Baseline, pair.Key), PlayerKVValue.Present(pair.Value)); + copy.RemoteOnlyWrites.Add(operation.Sequence, operation); + RemoveSources(copy, pair.Key); + prepared.Add(operation); + } + var result = Commit(copy, PlayerKVSyncStatus.Ready, prepared[0].Sequence); + if (result.Success) + { + operations = prepared.AsReadOnly(); + if (comparisonLocal != null) + { + comparisonImmediateKeys.UnionWith(data.Keys); + } + } + return result; + } + } + + internal PlayerKVStateResult CompleteImmediate(PlayerKVChange operation) + { + return CompleteImmediate(new[] { operation }); + } + + internal PlayerKVStateResult CompleteImmediate(IReadOnlyList operations) + { + lock (gate) + { + if (status != PlayerKVSyncStatus.Ready || snapshot.AuthenticationInvalid || snapshot.Active != null || + snapshot.Unknown != null || operations.Any(operation => !snapshot.RemoteOnlyWrites.ContainsKey(operation.Sequence))) + { + return Blocked(); + } + var copy = snapshot.Clone(); + foreach (var operation in operations) + { + Apply(copy.Baseline, operation.Key, operation.Target); + Rebase(copy, operation.Key, operation.Target); + copy.RemoteOnlyWrites.Remove(operation.Sequence); + copy.ImmediatePreservedKeys.Add(operation.Key); + } + return Commit(copy, PlayerKVSyncStatus.Ready); + } + } + + internal void CancelUndispatchedImmediate(PlayerKVChange operation) + { + CancelUndispatchedImmediate(new[] { operation }); + } + + internal void CancelUndispatchedImmediate(IReadOnlyList operations) + { + lock (gate) + { + if (Terminal) + { + return; + } + var protectedBatches = snapshot.OrdinaryUnknownBatches.Concat(new[] { snapshot.Active, snapshot.Unknown }).Where(batch => batch != null); + var removable = operations.Where(operation => snapshot.RemoteOnlyWrites.ContainsKey(operation.Sequence) && + !protectedBatches.Any(batch => batch.Items.Any(item => item.Key == operation.Key && item.Sequence < operation.Sequence))).ToArray(); + if (removable.Length == 0) + { + return; + } + var copy = snapshot.Clone(); + foreach (var operation in removable) + { + copy.RemoteOnlyWrites.Remove(operation.Sequence); + } + Commit(copy, status); + } + } + + private static Dictionary LocalView(KVSnapshot source) + { + return new Dictionary(source.LocalData, StringComparer.Ordinal); + } + bool Terminal => status == PlayerKVSyncStatus.Closed || status == PlayerKVSyncStatus.StorageError; PlayerKVStateResult Commit(KVSnapshot copy, PlayerKVSyncStatus nextStatus, long sequence = 0) { @@ -196,6 +810,7 @@ namespace game.PlayerDataStorage { if (status == PlayerKVSyncStatus.Closed) return; status = PlayerKVSyncStatus.Closed; + ClearComparison(); store.Dispose(); } } diff --git a/Client/Assets/Scripts/Services/PlayerData/PlayerSaveStores.cs b/Client/Assets/Scripts/Services/PlayerData/PlayerSaveStores.cs index 7d1672a31..672adf0a5 100644 --- a/Client/Assets/Scripts/Services/PlayerData/PlayerSaveStores.cs +++ b/Client/Assets/Scripts/Services/PlayerData/PlayerSaveStores.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -8,11 +8,10 @@ namespace game.PlayerDataStorage { public sealed class KVPlayerSaveStore : IPlayerSaveStore, IDisposable { - PlayerKVGameSessionHandle handle; - CancellationToken lifetime; - bool bound, disposed; - readonly object receiptsGate = new object(); - readonly Dictionary pendingReceipts = new Dictionary(StringComparer.Ordinal); + private PlayerKVGameSessionHandle handle; + private CancellationToken lifetime; + private bool bound, disposed; + private readonly object receiptsGate = new object(); public bool IsCurrent => bound && !disposed && !lifetime.IsCancellationRequested && handle.Status != PlayerKVSyncStatus.Closed; internal void Bind(PlayerKVGameSessionHandle original, CancellationToken loginLifetime) @@ -27,6 +26,23 @@ namespace game.PlayerDataStorage bound = true; } + internal void ReleaseFailedBinding(PlayerKVGameSessionHandle original) + { + lock (receiptsGate) + { + if (!bound) + { + return; + } + if (disposed || !ReferenceEquals(handle, original) || original.Status != PlayerKVSyncStatus.Closed) + { + throw new InvalidOperationException("Failed save binding has not closed."); + } + handle = null; + bound = false; + } + } + public PlayerSaveReadResult Read(string key) { if (!IsCurrent) return new PlayerSaveReadResult("StaleOrNotReady"); @@ -45,94 +61,92 @@ namespace game.PlayerDataStorage return rejected; } var result = KVMgr.WriteKV(handle, key, value, remoteStore); - if (result.Accepted && result.Ticket != null) pendingReceipts[key] = result.Ticket; var write = result.Accepted ? new PlayerSaveWriteResult(new PlayerSaveReceipt(this, result.Ticket)) : new PlayerSaveWriteResult(result.StateResult.Error.ToString()); return write; } } - public async Task WriteAndConfirmAsync(string key, string value, CancellationToken token = default) + public async Task SyncDataImmidiate(string key, string value) { - if (token.IsCancellationRequested) return Cancelled(); - var write = Write(key, value); - if (!write.Accepted) return new PlayerSaveConfirmation(PlayerSaveStatus.Rejected, write.Error); - return await ConfirmAsync(write.Receipt, token); - } - - public async Task ConfirmAsync(PlayerSaveReceipt receipt, CancellationToken token = default) - { - if (!IsCurrent || token.IsCancellationRequested) return Cancelled(); - if (receipt == null || !ReferenceEquals(receipt.Store, this)) - return new PlayerSaveConfirmation(PlayerSaveStatus.Rejected, "ForeignReceipt"); - if (receipt.Ticket == null) return new PlayerSaveConfirmation(PlayerSaveStatus.LocalOnly); - using (var wait = CancellationTokenSource.CreateLinkedTokenSource(lifetime, token)) + PlayerKVGameSessionHandle original; + CancellationToken originalLifetime; + Task save; + lock (receiptsGate) { - try + if (!IsCurrent) { - await KVMgr.FlushKVAsync(handle, wait.Token); - var ticket = await KVMgr.WaitForKVTicketAsync(handle, (PlayerKVSyncTicket)receipt.Ticket, wait.Token); - if (!IsCurrent || wait.IsCancellationRequested) return Cancelled(); - if (ticket.Status == PlayerKVTicketStatus.Confirmed) - { - ForgetConfirmed((PlayerKVSyncTicket)receipt.Ticket); - return new PlayerSaveConfirmation(PlayerSaveStatus.Confirmed); - } - return new PlayerSaveConfirmation(ticket.Status == PlayerKVTicketStatus.Unknown ? PlayerSaveStatus.Unknown : - ticket.Status == PlayerKVTicketStatus.Superseded ? PlayerSaveStatus.Superseded : - ticket.Status == PlayerKVTicketStatus.Cancelled ? PlayerSaveStatus.Cancelled : PlayerSaveStatus.Rejected, - ticket.TransportError.ToString()); + return false; } - catch (OperationCanceledException) { return Cancelled(); } + // Preserve the former current-store dictionary lookup's null-key behavior. + if (key == null) + { + throw new ArgumentNullException(nameof(key)); + } + original = handle; + originalLifetime = lifetime; + save = KVMgr.SyncDataImmidiate(original, key, value); + } + var success = await save; + lock (receiptsGate) + { + return success && IsCurrent && !originalLifetime.IsCancellationRequested && ReferenceEquals(handle, original); } } - public async Task FlushAsync(CancellationToken token = default) + internal async Task SyncDataImmidiate(IReadOnlyDictionary values) { - if (!IsCurrent || token.IsCancellationRequested) return Cancelled(); - PlayerKVSyncTicket[] captured; - lock (receiptsGate) captured = pendingReceipts.Values.ToArray(); - using (var wait = CancellationTokenSource.CreateLinkedTokenSource(lifetime, token)) + PlayerKVGameSessionHandle original; + CancellationToken originalLifetime; + Task save; + lock (receiptsGate) { - try + if (!IsCurrent || values == null || values.Count == 0) { - var result = await KVMgr.FlushKVAsync(handle, wait.Token); - if (!IsCurrent || wait.IsCancellationRequested) return Cancelled(); - var status = result.Unknown > 0 || result.CacheStatus == PlayerKVSyncStatus.UnknownOutcome ? - PlayerSaveStatus.Unknown : result.Blocked > 0 || result.TransportError != PlayerKVError.None || - result.CacheStatus != PlayerKVSyncStatus.Ready ? PlayerSaveStatus.Rejected : PlayerSaveStatus.Confirmed; - if (status != PlayerSaveStatus.Confirmed) return new PlayerSaveConfirmation(status, result.TransportError.ToString()); - // Multiple writes before this flush are covered by the captured final receipt. - // A replacement during the await belongs to a later flush and cannot confirm it. - foreach (var receipt in captured) - { - var ticket = await KVMgr.WaitForKVTicketAsync(handle, receipt, wait.Token); - if (!IsCurrent || wait.IsCancellationRequested) return Cancelled(); - if (ticket.Status != PlayerKVTicketStatus.Confirmed) - return new PlayerSaveConfirmation(ticket.Status == PlayerKVTicketStatus.Superseded ? PlayerSaveStatus.Superseded : - ticket.Status == PlayerKVTicketStatus.Unknown ? PlayerSaveStatus.Unknown : - ticket.Status == PlayerKVTicketStatus.Cancelled ? PlayerSaveStatus.Cancelled : PlayerSaveStatus.Rejected, - ticket.TransportError.ToString()); - ForgetConfirmed(receipt); - } - return new PlayerSaveConfirmation(PlayerSaveStatus.Confirmed); + return false; } - catch (OperationCanceledException) { return Cancelled(); } + var data = values.ToDictionary(pair => pair.Key, pair => pair.Value, StringComparer.Ordinal); + original = handle; + originalLifetime = lifetime; + save = KVMgr.SyncDataImmidiate(original, data); + } + var success = await save; + lock (receiptsGate) + { + return success && IsCurrent && !originalLifetime.IsCancellationRequested && ReferenceEquals(handle, original); } } - static PlayerSaveConfirmation Cancelled() => new PlayerSaveConfirmation(PlayerSaveStatus.Cancelled); - void ForgetConfirmed(PlayerKVSyncTicket receipt) + internal Task SyncDataAsync() { lock (receiptsGate) - if (pendingReceipts.TryGetValue(receipt.Key, out var latest) && ReferenceEquals(latest, receipt)) - pendingReceipts.Remove(receipt.Key); + { + var original = handle; + if (!IsCurrent) + { + return Task.FromResult(new PlayerKVFlushResult(0, 0, 1, 0, PlayerKVError.Cancelled, + original == null ? PlayerKVSyncStatus.NotLoaded : original.Status)); + } + return KVMgr.SyncKVAsync(original); + } + } + + public void Dispose() + { + lock (receiptsGate) + { + disposed = true; + } } - public void Dispose() { disposed = true; lock (receiptsGate) { pendingReceipts.Clear(); } } } public sealed class PlayFabPlayerSaveStore : IPlayerSaveStore { + public Task SyncDataImmidiate(string key, string value) + { + return manager.SyncDataImmidiate(key, value); + } + readonly PlayFabMgr manager; readonly CancellationToken lifetime; public PlayFabPlayerSaveStore(IUserService user) : this(PlayFabMgr.Instance, user.LoginLifetime) { } @@ -162,38 +176,5 @@ namespace game.PlayerDataStorage catch (Exception ex) { return new PlayerSaveWriteResult(ex.GetType().Name); } } - public async Task WriteAndConfirmAsync(string key, string value, CancellationToken token = default) - { - if (!IsCurrent || token.IsCancellationRequested) return new PlayerSaveConfirmation(PlayerSaveStatus.Cancelled); - using (var wait = CancellationTokenSource.CreateLinkedTokenSource(lifetime, token)) - { - var cancelled = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - using (wait.Token.Register(() => cancelled.TrySetResult(false))) - { - try - { - var save = manager.SyncDataImmidiate(key, value); - var finished = await Task.WhenAny(save, cancelled.Task); - if (!IsCurrent || wait.IsCancellationRequested) return new PlayerSaveConfirmation(PlayerSaveStatus.Cancelled); - return new PlayerSaveConfirmation(await finished ? PlayerSaveStatus.Confirmed : PlayerSaveStatus.Rejected); - } - catch (Exception ex) { return new PlayerSaveConfirmation(PlayerSaveStatus.Rejected, ex.GetType().Name); } - } - } - } - - public Task ConfirmAsync(PlayerSaveReceipt receipt, CancellationToken token = default) => - Task.FromResult(new PlayerSaveConfirmation(!IsCurrent || token.IsCancellationRequested ? PlayerSaveStatus.Cancelled : - receipt == null || !ReferenceEquals(receipt.Store, this) ? PlayerSaveStatus.Rejected : - receipt.Ticket == null ? PlayerSaveStatus.LocalOnly : PlayerSaveStatus.Buffered)); - - public Task FlushAsync(CancellationToken token = default) - { - if (!IsCurrent || token.IsCancellationRequested) - return Task.FromResult(new PlayerSaveConfirmation(PlayerSaveStatus.Cancelled)); - // The original manager owns its timer and callback-based buffered dispatch. - manager.FlushBufferedData(); - return Task.FromResult(new PlayerSaveConfirmation(PlayerSaveStatus.Buffered)); - } } } diff --git a/Client/Assets/Scripts/Services/SettingService.cs b/Client/Assets/Scripts/Services/SettingService.cs index 1e2506be7..5377d2609 100644 --- a/Client/Assets/Scripts/Services/SettingService.cs +++ b/Client/Assets/Scripts/Services/SettingService.cs @@ -68,19 +68,34 @@ namespace game } internal bool HasFormalPromptOwner(PlayerKVGameSessionHandle owner) => requiresFormalKV && ReferenceEquals(promptOwner, owner); + + internal void ReleaseFailedPromptOwner(PlayerKVGameSessionHandle owner) + { + if (promptOwner == null) + { + return; + } + if (!ReferenceEquals(promptOwner, owner) || owner.Status != PlayerKVSyncStatus.Closed) + { + throw PromptFailure("ShowNotice: failed owner has not closed."); + } + promptOwner = null; + LastPromptEdit = null; + _showNotice = null; + } internal void RequirePromptOwner() { if (promptOwner != null) ReadPrompt(); else if (requiresFormalKV) throw PromptFailure("ShowNotice: formal owner not handed off."); } - PlayerKVKeyReadResult ReadPrompt() + private PlayerKVKeyReadResult ReadPrompt() { - if (LastPromptEdit != null && !LastPromptEdit.Accepted) - throw PromptFailure($"ShowNotice owner={promptOwner.OwnerInstanceId}: {LastPromptEdit.StateResult.Error}; uncertain={LastPromptEdit.StateResult.LocalCommitMayHaveSucceeded}"); var read = KVMgr.ReadKV(promptOwner, "ShowNotice"); if (!read.Success) + { throw PromptFailure($"ShowNotice owner={promptOwner.OwnerInstanceId}: {read.Error}"); + } return read; } @@ -162,11 +177,14 @@ namespace game { get { - if (requiresFormalKV && promptOwner == null) RequirePromptOwner(); + if (requiresFormalKV && promptOwner == null) + { + RequirePromptOwner(); + } if (promptOwner != null) { var read = ReadPrompt(); - _showNotice = read.Found == true && read.Value == "1"; + _showNotice ??= read.Found == true && read.Value == "1"; return _showNotice.Value; } _showNotice ??= PlayFabMgr.Instance.GetLocalData("ShowNotice") == "1"; @@ -174,19 +192,23 @@ namespace game } set { - if (requiresFormalKV && promptOwner == null) RequirePromptOwner(); + if (requiresFormalKV && promptOwner == null) + { + RequirePromptOwner(); + } if (promptOwner != null) { - var read = ReadPrompt(); - var serialized = value ? "1" : "0"; - if (read.Found != true || read.Value != serialized) + ReadPrompt(); + if (value != _showNotice) { - LastPromptEdit = KVMgr.WriteKV(promptOwner, "ShowNotice", serialized); + _showNotice = value; + LastPromptEdit = KVMgr.WriteKV(promptOwner, "ShowNotice", value ? "1" : "0"); if (!LastPromptEdit.Accepted) + { throw PromptFailure($"ShowNotice owner={promptOwner.OwnerInstanceId}: {LastPromptEdit.StateResult.Error}; uncertain={LastPromptEdit.StateResult.LocalCommitMayHaveSucceeded}"); + } } RequirePromptOwner(); - _showNotice = value; return; } if (value != _showNotice) diff --git a/Client/Assets/Scripts/Services/TileNewsManager.cs b/Client/Assets/Scripts/Services/TileNewsManager.cs index 16b24d976..4e199a3ea 100644 --- a/Client/Assets/Scripts/Services/TileNewsManager.cs +++ b/Client/Assets/Scripts/Services/TileNewsManager.cs @@ -25,7 +25,9 @@ namespace game { titleNewsEvent.titleNewsItem = News; bool isRod = false; - GetTitleNewsResult result = await PlayFabClientAsyncAPI.GetTitleNewsAsync(new PlayFab.ClientModels.GetTitleNewsRequest()); + GetTitleNewsResult result = GContext.container.Resolve() is KVUserService + ? await GetKVTitleNewsAsync() + : await PlayFabClientAsyncAPI.GetTitleNewsAsync(new PlayFab.ClientModels.GetTitleNewsRequest()); if (result != null && result.News != null && result.News.Count > 0) { News = result.News[0]; @@ -57,5 +59,34 @@ namespace game RedPointManager.Instance.SetRedPointState(RedPointName.Announcement, isRod); } + private async Task GetKVTitleNewsAsync() + { + string body = await GContext.container.Resolve().CommonDataRequest("GetTitleNews", new { }); + if (string.IsNullOrEmpty(body)) + { + return null; + } + try + { + var response = Newtonsoft.Json.JsonConvert.DeserializeObject(body); + if (response == null || response.Code != 1 || response.News == null || + (response.News.Count > 0 && response.News[0] == null)) + { + return null; + } + return new GetTitleNewsResult { News = response.News }; + } + catch (Newtonsoft.Json.JsonException ex) + { + Debug.LogWarning("KV title news response: " + ex.GetType().Name); + return null; + } + } + + private sealed class KvTitleNewsResponse + { + public int Code; + public System.Collections.Generic.List News; + } } } diff --git a/Client/Assets/Scripts/Services/UserService.KVFishingReward.cs b/Client/Assets/Scripts/Services/UserService.KVFishingReward.cs index 4c229cbc7..e3b60e6e7 100644 --- a/Client/Assets/Scripts/Services/UserService.KVFishingReward.cs +++ b/Client/Assets/Scripts/Services/UserService.KVFishingReward.cs @@ -1,4 +1,4 @@ -#if UNITY_EDITOR && !SERVICE_HOST +#if UNITY_EDITOR using System; using System.Collections.Generic; using System.Globalization; @@ -152,9 +152,6 @@ namespace game.PlayerDataStorage CheckRewardEnvironment(p.Data,false); if(p.Activities!=ActivityStamp(GContext.container.Resolve())) throw Stop("Activity changed during fishing reward."); } - internal static bool RewardRunCurrent => RewardCurrent(rewardAction); - internal static bool RewardCanAdvance => !Enabled || (FishingCurrent(fishingAction) && - (rewardAction==null || (!rewardAction.Cancelled && !rewardAction.Sealed))); internal static bool BeginRewardDrawing(object controller) { if(Permit?.AllowsReward!=true || !FishingCurrent(fishingAction) || !fishingAction.Confirmed || !fishingAction.Continued) @@ -187,7 +184,6 @@ namespace game.PlayerDataStorage } internal static bool RewardCurrent(FishingRewardAction a) => a!=null && ReferenceEquals(a,rewardAction) && !a.Cancelled && FishingCurrent(a.Consumption); - internal static bool RewardPanelCurrent(FishingRewardAction a,object panel) => RewardCurrent(a) && ReferenceEquals(a.Panel,panel); sealed class RewardSegment : IDisposable { readonly FishingRewardAction action; @@ -222,17 +218,6 @@ namespace game.PlayerDataStorage else if(key!="NewPlayerDataDic" && key!=a.Plan.MapKey && !rewardTaskKeys.Contains(key)) throw Stop("Unexpected fishing reward key: "+key); } - internal static void CheckCaughtFishSave(int fish,int count) - { - var a=rewardAction; - if(!RewardCurrent(a) || a.SegmentName!="reward" || a.Plan.Fish!=fish || - count!=checked(a.BeforeFishCount+GContext.container.Resolve().GetMagnification())) - throw Stop("Caught fish final save must contain exactly this catch's increment."); - } - internal static void CheckRewardMainSave() - { - if(!RewardCurrent(rewardAction) || rewardAction.SegmentName!="reward") throw Stop("Final reward save outside reward segment."); - } internal static void RecordRewardGuideNotification() { var a=rewardAction; @@ -253,9 +238,6 @@ namespace game.PlayerDataStorage using(var timeout=new CancellationTokenSource(TimeSpan.FromSeconds(30))) { var owner=a.Consumption.Owner; - var flush=await KVMgr.FlushKVAsync(owner,timeout.Token); - if(!RewardCurrent(a) || flush.Unknown>0 || flush.Blocked>0 || flush.TransportError!=PlayerKVError.None) - throw Stop("Reward flush: "+flush.TransportError); foreach(var r in a.Records) { var t=r.Edit.Ticket;if(t==null)continue; diff --git a/Client/Assets/Scripts/Services/UserService.KVFishingRewardValidation.cs b/Client/Assets/Scripts/Services/UserService.KVFishingRewardValidation.cs index 640e1a9b5..f3b5c0c51 100644 --- a/Client/Assets/Scripts/Services/UserService.KVFishingRewardValidation.cs +++ b/Client/Assets/Scripts/Services/UserService.KVFishingRewardValidation.cs @@ -1,4 +1,4 @@ -#if UNITY_EDITOR && !SERVICE_HOST +#if UNITY_EDITOR using System; using System.Collections.Generic; using System.IO; @@ -17,515 +17,1142 @@ namespace game.PlayerDataStorage { internal static partial class PlayerKVGameplayLoop { + // Fixed original data-method fragments; does not execute the reward panel or formulas. + internal static async Task VerifyOriginalFishingRewardForEditorAsync() + { + if (UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || GContext.Ready || Resources.FindObjectsOfTypeAll().Length != 0 || PlayFabMgr.HasLiveInstanceForKVLoad || Enabled || handle != null || File.Exists(Path.Combine(Root, "permit.json")) || validationCleanupFailure != null) + { + throw new InvalidOperationException("Idle editor without a real permit required."); + } + if (Interlocked.CompareExchange(ref validationRunning, 1, 0) != 0) + { + throw new InvalidOperationException("Validation running."); + } + var oldContainer = GContext.container; + var oldEvents = FishingContextAccess.Events; + var oldLanguages = LocalizationMgr.enumLanguage; + var textTable = typeof(LocalizationMgr).GetField("table", BindingFlags.Static | BindingFlags.NonPublic); + var oldTextTable = textTable.GetValue(null); + var folder = Path.Combine(Root, "reward-original-fixed-runs", DateTime.UtcNow.ToString("yyyyMMddTHHmmss") + "_" + Guid.NewGuid().ToString("N")); + var passed = new List(); + int checks = 0; + void Check(bool value, string message) + { + checks++; + if (!value) + { + throw new InvalidOperationException("Original reward data: " + message); + } + } + try + { + foreach (var scenario in new[] { "fish-non-record", "fish-new-record", "fish-new-fish", "main-cash-0", "main-cash-122" }) + { + var errors = new List(); + var fixture = new EquipmentFixture(Path.Combine(folder, scenario)); + KVPlayerSaveStore store = null; + Container container = null; + PlayerData player = null; + AchievementDataManager achievements = null; + RewardSubscribers subscribers = null; + IDisposable subscription = null; + var unexpectedLogs = new List(); + void Clean(Action action) + { + try + { + action(); + } + catch (Exception error) + { + errors.Add(error); + validationCleanupFailure = fixture; + } + } + void Log(string message, string stack, LogType type) + { + if (type == LogType.Error || type == LogType.Exception || type == LogType.Assert) + { + unexpectedLogs.Add(message + "\n" + stack); + } + } + Application.logMessageReceived += Log; + try + { + var initialMap = new Dictionary { { 10241, "2|20|30|40|False" } }; + if (scenario != "fish-new-fish") + { + initialMap[10211] = "0|10|20|20|False"; + } + string initialMapJson = JsonConvert.SerializeObject(initialMap); + fixture.Remote["Map_5_102"] = initialMapJson; + var owner = await fixture.Open(); + store = new KVPlayerSaveStore(); + store.Bind(owner, CancellationToken.None); + var tables = new cfg.Tables(n => SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath, "../../cfgData", n + ".json"))))); + container = new Container(); + FishingContextAccess.Use(container); + FishingContextAccess.Events = new EventAggregator(); + container.RegisterInstance(tables); + container.RegisterInstance(store); + player = new PlayerData(tables, null); + var fish = new PlayerFishData(tables, null); + var small = new SmallGameData(tables, null, null); + achievements = new AchievementDataManager(tables); + var events = new FishingEventData(tables); + container.RegisterInstance(player); + container.RegisterInstance(fish); + container.RegisterInstance(small); + container.RegisterInstance(achievements); + container.RegisterInstance(new FishingBoxData()); + container.RegisterInstance(events); + player.playerSaveStore = store; + fish.playerSaveStore = store; + small.playerSaveStore = store; + events.playerSaveStore = store; + achievements.Init(); + LocalizationMgr.enumLanguage = tables.TbLanguageConfig.DataList.Select(x => x.ID).ToList(); + textTable.SetValue(null, null); + Module02OriginalLoadTests.LoadCore(player, new object[] { 60, 100UL, 0, 393, 5, 4, 30003, new DateTime(2026, 1, 1), 0, 112, 7UL, 2, 102, 102, 13, 102, 0, 0, 0 }); + var seen = new List(); + subscription = GContext.OnEvent().Subscribe(e => seen.Add(e.type)); + if (scenario.StartsWith("fish-", StringComparison.Ordinal)) + { + var data = initialMap.ToDictionary(pair => pair.Key, pair => FishWeightData.Deserialize(pair.Value)); + var fields = BindingFlags.Instance | BindingFlags.NonPublic; + typeof(PlayerFishData).GetField("fishData", fields).SetValue(fish, data); + typeof(PlayerFishData).GetField("mapFishData", fields).SetValue(fish, new Dictionary> { { 102, data } }); + fish.SetGetFishCount(10211); + fish.SetWeight(10211, scenario == "fish-new-record" ? 12 : 5); + var actual = data[10211]; + Check(actual.TotalNum == (scenario == "fish-new-fish" ? 10 : 30), "original in-memory catch count"); + Check(actual.MaxG == (scenario == "fish-new-record" ? 12 : scenario == "fish-new-fish" ? 5 : 10), "original maximum weight rule"); + Check(actual.TotalCard == (scenario == "fish-new-fish" ? 0 : 20) && actual.Level == 0 && data[10241].Serialize() == "2|20|30|40|False", "original other fish and card data"); + Check(seen.SequenceEqual(new[] { cfg.ConditionType.GetFishWeight, cfg.ConditionType.GetFishID }), "two original fish events without final-save replay"); + string expectedMap = store.Read("Map_5_102").ValueOrThrow(); + Check(fixture.Sets == 0 && fixture.Remote["Map_5_102"] == initialMapJson, "fish data waits for ordinary save"); + Check(scenario == "fish-non-record" ? expectedMap == initialMapJson : expectedMap != initialMapJson, "original non-record does not force a map write"); + var flushed = await KVMgr.SyncKVAsync(owner); + Check(flushed.TransportError == PlayerKVError.None && flushed.Blocked == 0 && flushed.Unknown == 0 && fixture.Sets == (scenario == "fish-non-record" ? 0 : 1), "original map ordinary save result"); + Check(fixture.Remote["Map_5_102"] == expectedMap && fixture.Remote["NewPlayerDataDic"] == "original-save", "exact original map payload without invented main write"); + var savedMap = JsonConvert.DeserializeObject>(expectedMap); + var savedFish = FishWeightData.Deserialize(savedMap[10211]); + Check(savedFish.TotalNum == (scenario == "fish-non-record" ? 20 : scenario == "fish-new-fish" ? 10 : 30), "persisted count follows original save timing"); + Check(savedMap[10241] == "2|20|30|40|False" && savedFish.TotalCard == actual.TotalCard && savedFish.Level == actual.Level && savedFish.NewFish == actual.NewFish, "saved fish fields and neighbor preserved"); + var reloaded = new PlayerFishData(tables, null); + reloaded.InitData(new Dictionary { { "Map_5_102", expectedMap } }); + var reloadedMap = Module02OriginalLoadTests.Field>>(reloaded, "mapFishData"); + var config = tables.TbFishData[10211]; + float cap = Mathf.Round(config.BaseWeight * config.PointExtraParam * (1 + config.WeightRandom) * 100) / 100; + float expectedWeight = config.Quality <= 5 ? Mathf.Min(savedFish.MaxG, cap) : savedFish.MaxG; + Check(reloadedMap[102][10211].TotalNum == savedFish.TotalNum && reloadedMap[102][10211].MaxG == expectedWeight && reloadedMap[102][10211].TotalCard == savedFish.TotalCard && reloadedMap[102][10211].NewFish == savedFish.NewFish, "original fish parser and original maximum-weight correction"); + } + else + { + int cash = scenario == "main-cash-122" ? 122 : 0; + subscribers = new RewardSubscribers(); + subscribers.Bind(tables, events, container, store); + GContext.Publish(new ConditionTypeEvent(cfg.ConditionType.PerfectStrikeCount, 1)); + player.SaveFishingFrequency(); + string expectedMain = store.Read("NewPlayerDataDic").ValueOrThrow(); + string expectedAchievements = achievements.AchievementDataToJson(); + GContext.Publish(new ConditionTypeEvent(cfg.ConditionType.CashFromFishing, cash)); + GContext.Publish(new ConditionTypeEvent(cfg.ConditionType.MaxCashFromFishing, cash / 10)); + if (cash > 0) + { + player.AddGold((ulong)cash); + expectedMain = store.Read("NewPlayerDataDic").ValueOrThrow(); + expectedAchievements = achievements.AchievementDataToJson(); + } + foreach (var condition in new[] { cfg.ConditionType.GetFishWeight, cfg.ConditionType.GetFishID, cfg.ConditionType.GetBoosFish, cfg.ConditionType.GetBiggerThanHugeFishCount }) + { + GContext.Publish(new ConditionTypeEvent(condition, 2)); + } + Check(store.Read("NewPlayerDataDic").ValueOrThrow() == expectedMain, "later original events do not invent a final main save"); + var modern = JsonConvert.DeserializeObject>(expectedMain); + var core = modern["newData"].Split(','); + Check(core[1] == (100 + cash).ToString() && core[14] == "14" && core[15] == "112", "original cash and frequency snapshot"); + Check(core[3] == "393" && core[9] == "112" && seen.Count(x => x == cfg.ConditionType.GetFishCount) == 1, "reward fragment never consumes energy twice"); + Check(modern["ad"] == expectedAchievements && achievements.GetAchievementDatas(cfg.ConditionType.GetFishCount) == 1, "achievement snapshot follows last original save"); + Check(modern["ld"].Split('|').Length == 3, "original luck serialization preserved"); + Check(subscribers.Battle.Data.BattleTask.dic_dailyTasks.Any(pair => tables.TbBattlePassTask.GetOrDefault(pair.Key).Type == cfg.ConditionType.PerfectStrikeCount && pair.Value == 1), "actual battle task subscription"); + Check(subscribers.Lucky.DicTasks.All(pair => pair.Value == 0) && subscribers.Magic.DicTasks.All(pair => pair.Value == 0) && subscribers.Mini.Data.Exp == 0, "unrelated actual task configuration stays unchanged"); + foreach (var condition in rewardConditions.Where(x => x != cfg.ConditionType.ConsumeEnergy)) + { + Check(seen.Count(x => x == condition) == 1, "original fragment event once: " + condition); + } + string expectedTask = store.Read("BattlePassRecordTask").ValueOrThrow(); + Check(!string.IsNullOrEmpty(expectedTask) && new[] { "MiniBPKeyNew", "EventLuckGameRecord", "EventLuckMagicPlayfabData" }.All(key => store.Read(key).Success && store.Read(key).Found == false), "only applicable original task writes exist"); + Check(fixture.Sets == 0 && fixture.Remote["NewPlayerDataDic"] == "original-save", "original reward data uses ordinary save timing"); + var flushed = await KVMgr.SyncKVAsync(owner); + Check(flushed.TransportError == PlayerKVError.None && flushed.Blocked == 0 && flushed.Unknown == 0 && fixture.Sets == 1, "ordinary reward data save succeeds once"); + Check(fixture.Remote["NewPlayerDataDic"] == expectedMain && fixture.Remote["BattlePassRecordTask"] == expectedTask && fixture.Remote["Map_5_102"] == initialMapJson, "exact actual main and task payloads without forced fish write"); + var reloaded = new PlayerData(tables, null); + Module02OriginalLoadTests.LoadCore(reloaded, JsonConvert.DeserializeObject>(fixture.Remote["NewPlayerDataDic"])); + Check(reloaded.Energy == player.Energy && (ulong)reloaded.gold == (ulong)player.gold && reloaded.equipRodID == player.equipRodID, "original main parser reads last original save"); + } + Check(fixture.Auth == 1 && !Enabled && !Ready && handle == null, "isolated data methods never enable temporary gameplay"); + } + catch (Exception error) + { + errors.Add(error); + } + finally + { + Clean(() => subscription?.Dispose()); + Clean(() => subscribers?.Dispose()); + Clean(() => achievements?.Dispose()); + Clean(() => player?.StopRecoveryEnergy()); + Clean(() => store?.Dispose()); + try + { + await fixture.Close(); + } + catch (Exception error) + { + errors.Add(error); + validationCleanupFailure = fixture; + } + Clean(() => container?.Dispose()); + Clean(() => FishingContextAccess.Use(oldContainer)); + Clean(() => FishingContextAccess.Events = oldEvents); + Clean(() => LocalizationMgr.enumLanguage = oldLanguages); + Clean(() => textTable.SetValue(null, oldTextTable)); + Clean(() => Check(ReferenceEquals(GContext.container, oldContainer) && ReferenceEquals(FishingContextAccess.Events, oldEvents) && ReferenceEquals(LocalizationMgr.enumLanguage, oldLanguages) && ReferenceEquals(textTable.GetValue(null), oldTextTable), "original fixture globals restored")); + Application.logMessageReceived -= Log; + if (unexpectedLogs.Count != 0) + { + errors.Add(new InvalidOperationException(string.Join("\n", unexpectedLogs))); + } + } + if (errors.Count != 0) + { + Directory.CreateDirectory(folder); + File.WriteAllText(Path.Combine(folder, "failure.json"), JsonConvert.SerializeObject(new { scenario, errors = errors.Select(x => x.ToString()), formalRequests = 0 })); + throw new AggregateException(errors); + } + passed.Add(scenario); + } + } + finally + { + Interlocked.Exchange(ref validationRunning, 0); + } + string result = JsonConvert.SerializeObject(new { success = true, groups = passed.Count, assertions = checks, passed, coverage = "original-data-fragments-only", formalRequests = 0, synthetic = true, restored = true, folder }); + Directory.CreateDirectory(folder); + File.WriteAllText(Path.Combine(folder, "result.json"), result); + return result; + } + + internal static async Task VerifyFishingRewardForEditorAsync() { - if(UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || GContext.Ready || - Resources.FindObjectsOfTypeAll().Length!=0 || PlayFabMgr.HasLiveInstanceForKVLoad || Enabled || handle!=null || - File.Exists(Path.Combine(Root,"permit.json")) || validationCleanupFailure!=null) + if (UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || GContext.Ready || Resources.FindObjectsOfTypeAll().Length != 0 || PlayFabMgr.HasLiveInstanceForKVLoad || Enabled || handle != null || File.Exists(Path.Combine(Root, "permit.json")) || validationCleanupFailure != null) + { throw new InvalidOperationException("Idle editor without a real permit required."); - if(Interlocked.CompareExchange(ref validationRunning,1,0)!=0) throw new InvalidOperationException("Validation running."); - var saved=(Enabled,Ready,Error,Permit,RunPath,handle,onFault,onClose,collecting,mainThread,failed,mainContext,fishingAction,rewardPlan,rewardAction); - var oldContainer=GContext.container;var oldEvents=FishingContextAccess.Events; - var folder=Path.Combine(Root,"reward-fixed-runs",DateTime.UtcNow.ToString("yyyyMMddTHHmmss")+"_"+Guid.NewGuid().ToString("N")); - EquipmentFixture fixture=null;Task pending=null;Container container=null;PlayerData player=null; - RewardSubscribers subscribers=null; - var oldLanguages=LocalizationMgr.enumLanguage; - var textTable=typeof(LocalizationMgr).GetField("table",BindingFlags.Static|BindingFlags.NonPublic); - var oldTextTable=textTable.GetValue(null); - GameObject pfShell=null;var pfField=typeof(PlayFabMgr).GetField("_instance",BindingFlags.Static|BindingFlags.NonPublic);var oldPF=pfField.GetValue(null); - int checks=0,groups=0;var passed=new List();string result=null; - var ioDiagnostics=new System.Collections.Concurrent.ConcurrentQueue(); - EventHandler observeIO=(_,e)=> - {if(e.Exception is IOException || e.Exception is UnauthorizedAccessException)ioDiagnostics.Enqueue(e.Exception.ToString());}; - AppDomain.CurrentDomain.FirstChanceException+=observeIO; - void Check(bool yes,string reason) {checks++;if(!yes)throw new InvalidOperationException("Reward validation: "+reason);} + } + + if (Interlocked.CompareExchange(ref validationRunning, 1, 0) != 0) + { + throw new InvalidOperationException("Validation running."); + } + + var saved = (Enabled, Ready, Error, Permit, RunPath, handle, onFault, collecting, mainThread, failed, mainContext, fishingAction, rewardPlan, rewardAction); + var oldContainer = GContext.container; + var oldEvents = FishingContextAccess.Events; + var folder = Path.Combine(Root, "reward-fixed-runs", DateTime.UtcNow.ToString("yyyyMMddTHHmmss") + "_" + Guid.NewGuid().ToString("N")); + EquipmentFixture fixture = null; + Task pending = null; + Container container = null; + PlayerData player = null; + var oldLanguages = LocalizationMgr.enumLanguage; + var textTable = typeof(LocalizationMgr).GetField("table", BindingFlags.Static | BindingFlags.NonPublic); + var oldTextTable = textTable.GetValue(null); + KVPlayerSaveStore guideStore = null; + int checks = 0, groups = 0; + var passed = new List(); + string result = null; + var ioDiagnostics = new System.Collections.Concurrent.ConcurrentQueue(); + EventHandler observeIO = (_, e) => + { + if (e.Exception is IOException || e.Exception is UnauthorizedAccessException) + { + ioDiagnostics.Enqueue(e.Exception.ToString()); + } + }; + AppDomain.CurrentDomain.FirstChanceException += observeIO; + void Check(bool yes, string reason) + { + checks++; + if (!yes) + { + throw new InvalidOperationException("Reward validation: " + reason); + } + } + async Task Start(string name) { - subscribers?.Dispose();subscribers=null; - player?.StopRecoveryEnergy();player=null; - if(fixture!=null)await fixture.Close();if(pending!=null){try{await pending;}catch{}pending=null;} - pfField.SetValue(null,oldPF);if(pfShell!=null)UnityEngine.Object.DestroyImmediate(pfShell);pfShell=null; - FishingContextAccess.Use(oldContainer);FishingContextAccess.Events=oldEvents;container?.Dispose();container=null; - fixture=new EquipmentFixture(Path.Combine(folder,(++groups).ToString())); - fixture.Remote["Map_5_102"]="{\"10211\":\"0|10|20|20|False\",\"10241\":\"2|20|30|40|False\"}"; - var owner=await fixture.Open(); - Enabled=true;Ready=false;Error=null;failed=0;handle=null;collecting=null; - Permit=new PlayerKVLoopPermit{Version=3,Operation="fishing-reward-once",PlayerId="101", - AllowedKeys=new[]{"NewPlayerDataDic","Map_5_102","BattlePassRecordTask","late"}}; - RunPath=folder;mainThread=Thread.CurrentThread.ManagedThreadId;mainContext=SynchronizationContext.Current; - Attach(_=>fixture.Faults++,fixture.Close);Publish(owner); - fishingAction=new FishingAction(new object(),owner){Consuming=true,Confirmed=true,Continued=true}; - rewardPlan=new FishingRewardPlan{Fish=10211,Area=102}; - rewardAction=new FishingRewardAction(fishingAction,new object(),rewardPlan); + player?.StopRecoveryEnergy(); + player = null; + Exception guideDisposeError = null; + try + { + guideStore?.Dispose(); + } + catch (Exception error) + { + guideDisposeError = error; + } + finally + { + guideStore = null; + } + if (fixture != null) + { + await fixture.Close(); + } + + if (pending != null) + { + try + { + await pending; + } + catch + { + } + + pending = null; + } + + FishingContextAccess.Use(oldContainer); + FishingContextAccess.Events = oldEvents; + container?.Dispose(); + container = null; + if (guideDisposeError != null) + { + throw guideDisposeError; + } + fixture = new EquipmentFixture(Path.Combine(folder, (++groups).ToString())); + fixture.Remote["Map_5_102"] = "{\"10211\":\"0|10|20|20|False\",\"10241\":\"2|20|30|40|False\"}"; + var owner = await fixture.Open(); + Enabled = true; + Ready = false; + Error = null; + failed = 0; + handle = null; + collecting = null; + Permit = new PlayerKVLoopPermit + { + Version = 3, + Operation = "fishing-reward-once", + PlayerId = "101", + AllowedKeys = new[] + { + "NewPlayerDataDic", + "Map_5_102", + "BattlePassRecordTask", + "late" + } + }; + RunPath = folder; + mainThread = Thread.CurrentThread.ManagedThreadId; + mainContext = SynchronizationContext.Current; + Attach(_ => fixture.Faults++); + Publish(owner); + fishingAction = new FishingAction(new object (), owner) + { + Consuming = true, + Confirmed = true, + Continued = true + }; + rewardPlan = new FishingRewardPlan + { + Fish = 10211, + Area = 102 + }; + rewardAction = new FishingRewardAction(fishingAction, new object (), rewardPlan); passed.Add(name); } - PlayerKVEditResult Batch(bool localFinal=false) + + PlayerKVEditResult Batch(bool localFinal = false) { - using(BeginRewardSegment("strike")) Write("BattlePassRecordTask","strike",true); - rewardAction.Ending=true;using(BeginRewardSegment("ending")){} - rewardAction.Applying=true; - PlayerKVEditResult primary; - using(BeginRewardSegment("reward")) + using (BeginRewardSegment("strike")) + Write("BattlePassRecordTask", "strike", true); + rewardAction.Ending = true; + using (BeginRewardSegment("ending")) { - Write("BattlePassRecordTask","reward-task",true); - Write("Map_5_102","fish",!localFinal); - Write("NewPlayerDataDic","intermediate",false); - primary=Write("NewPlayerDataDic","reward-main",true); } - rewardAction.GuideNotifications=1; + + rewardAction.Applying = true; + PlayerKVEditResult primary; + using (BeginRewardSegment("reward")) + { + Write("BattlePassRecordTask", "reward-task", true); + Write("Map_5_102", "fish", !localFinal); + Write("NewPlayerDataDic", "intermediate", false); + primary = Write("NewPlayerDataDic", "reward-main", true); + } + + rewardAction.GuideNotifications = 1; return primary; } - async Task Reject(Task task,string label) + + async Task Reject(Task task, string label) { - bool rejected=false;try{await task;}catch(InvalidOperationException){rejected=true;} - Check(rejected && !Ready && fixture.Faults==1,label); + bool rejected = false; + try + { + await task; + } + catch (InvalidOperationException) + { + rejected = true; + } + + Check(rejected && !Ready && fixture.Faults == 1, label); } - void RejectSync(Action body,string label) - {bool rejected=false;try{body();}catch(InvalidOperationException){rejected=true;}Check(rejected,label);} + + void RejectSync(Action body, string label) + { + bool rejected = false; + try + { + body(); + } + catch (InvalidOperationException) + { + rejected = true; + } + + Check(rejected, label); + } + try { Directory.CreateDirectory(folder); // Exercise the real async Init path, using isolated services and the actual loaded guide asset. - var potionSource=JObject.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath, - "../../CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T082052Z/101.json"))))["data"].ToObject>(); - var guideAssetHandle=UnityEngine.AddressableAssets.Addressables.LoadAssetAsync("GuidanceConfig"); - var guideAsset=(GuidanceDefineSetting)guideAssetHandle.WaitForCompletion(); - var savedGuideGroups=guideAsset.guidanceGroupDefines; - var awaitAssembly=typeof(IEnumeratorAwaitExtensions).Assembly; - var syncType=awaitAssembly.GetType("UnityAsyncAwaitUtil.SyncContextUtil",true); - var syncField=syncType.GetField("k__BackingField",BindingFlags.Static|BindingFlags.NonPublic); - var threadField=syncType.GetField("k__BackingField",BindingFlags.Static|BindingFlags.NonPublic); - var runnerField=awaitAssembly.GetType("UnityAsyncAwaitUtil.AsyncCoroutineRunner",true).GetField("_instance",BindingFlags.Static|BindingFlags.NonPublic); - var savedSync=syncField.GetValue(null);var savedThread=threadField.GetValue(null);var savedRunner=runnerField.GetValue(null); - syncField.SetValue(null,SynchronizationContext.Current);threadField.SetValue(null,Thread.CurrentThread.ManagedThreadId); + var potionSource = JObject.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath, "../../CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T082052Z/101.json"))))["data"].ToObject>(); + var guideAssetHandle = UnityEngine.AddressableAssets.Addressables.LoadAssetAsync("GuidanceConfig"); + var guideAsset = (GuidanceDefineSetting)guideAssetHandle.WaitForCompletion(); + var savedGuideGroups = guideAsset.guidanceGroupDefines; + var awaitAssembly = typeof(IEnumeratorAwaitExtensions).Assembly; + var syncType = awaitAssembly.GetType("UnityAsyncAwaitUtil.SyncContextUtil", true); + var syncField = syncType.GetField("k__BackingField", BindingFlags.Static | BindingFlags.NonPublic); + var threadField = syncType.GetField("k__BackingField", BindingFlags.Static | BindingFlags.NonPublic); + var runnerField = awaitAssembly.GetType("UnityAsyncAwaitUtil.AsyncCoroutineRunner", true).GetField("_instance", BindingFlags.Static | BindingFlags.NonPublic); + var savedSync = syncField.GetValue(null); + var savedThread = threadField.GetValue(null); + var savedRunner = runnerField.GetValue(null); + syncField.SetValue(null, SynchronizationContext.Current); + threadField.SetValue(null, Thread.CurrentThread.ManagedThreadId); try { - foreach(var scenario in new[]{"unavailable-real-101","available","query-failure","node-panel-mismatch", - "other-group","finished","index-zero","missing-save","out-of-range","preserve-other-pointer"}) + foreach (var scenario in new[] { - await Start("potion-actual-init-"+scenario); - rewardPlan=null;rewardAction=null; - Permit.AllowedKeys=Permit.AllowedKeys.Concat(new[]{"GuideSaveDataNew"}).ToArray(); - var tables=new cfg.Tables(n=>SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath,"../../cfgData",n+".json"))))); - container=new Container();FishingContextAccess.Use(container);FishingContextAccess.Events=new EventAggregator(); - player=new PlayerData(tables,null);player.lv=62; - container.RegisterInstance(tables);container.RegisterInstance(player); - var eventData=new FishingEventData(tables); - if(scenario!="query-failure")container.RegisterInstance(eventData); - if(scenario=="available") + "unavailable-real-101", + "available", + "query-failure", + "node-panel-mismatch", + "other-group", + "finished", + "index-zero", + "missing-save", + "out-of-range", + "preserve-other-pointer" + } + + ) + { + await Start("potion-actual-init-" + scenario); + rewardPlan = null; + rewardAction = null; + Permit.AllowedKeys = Permit.AllowedKeys.Concat(new[] { "GuideSaveDataNew" }).ToArray(); + var tables = new cfg.Tables(n => SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath, "../../cfgData", n + ".json"))))); + container = new Container(); + FishingContextAccess.Use(container); + FishingContextAccess.Events = new EventAggregator(); + player = new PlayerData(tables, null); + player.lv = 62; + container.RegisterInstance(tables); + container.RegisterInstance(player); + var eventData = new FishingEventData(tables); + if (scenario != "query-failure") { - var ev=tables.TbFishingEvent.DataList.First(e=>e.Type==4 && e.SubType==5); - typeof(cfg.FishingEvent).GetProperty("TimeDefinition").SetValue(ev,new cfg.LimitedTime( - ZZTimeHelper.UtcNow().AddHours(-1).ToString("yyyy/MM/dd HH:mm:ss",System.Globalization.CultureInfo.InvariantCulture), - ZZTimeHelper.UtcNow().AddHours(1).ToString("yyyy/MM/dd HH:mm:ss",System.Globalization.CultureInfo.InvariantCulture))); - typeof(cfg.FishingEvent).GetProperty("ConditionList").SetValue(ev,new List{ - new cfg.EventCondition(cfg.ConditionType.AccountLevel,new List{"1"},"")}); - Check(eventData.GetEvent(4,5)==ev.ID,"isolated actual query sees available potion event"); + container.RegisterInstance(eventData); } - else if(scenario!="query-failure")Check(eventData.GetEvent(4,5)==-1,"isolated actual query sees no potion event"); - var guideState=new GuideDataCenter(tables,player);container.RegisterInstance(guideState); - var diagnostics=new PlayerKVSchemaDiagnostics();guideState.ReplaceFromKVDecoded(GuideDataCenter.DecodeForKVLoad(potionSource,diagnostics)); - Check(diagnostics.TotalErrors==0,"real 101 guide source decoded"); - var potionGroup=JsonUtility.FromJson(JsonUtility.ToJson(savedGuideGroups.First(g=>g.groupName==GroupName.EventPotion01))); - guideAsset.guidanceGroupDefines=savedGuideGroups.Select(g=>g.groupName==GroupName.EventPotion01?potionGroup:g).ToArray(); - var key=GroupName.EventPotion01.ToString();var entry=guideState.GuideSaveDataDic[key]; - Check(entry.guideSubIndex==4 && !entry.isFinish,"real historical potion progress is unfinished at four"); - if(scenario=="node-panel-mismatch")potionGroup.guidanceDefines[entry.guideSubIndex].panelName="DifferentPanel"; - if(scenario=="other-group") + + if (scenario == "available") { - guideState.GuideSaveDataDic.Remove(key);key=GroupName.EventPotion02.ToString(); - entry.groupName=key;guideState.GuideSaveDataDic[key]=entry; - guideAsset.guidanceGroupDefines=guideAsset.guidanceGroupDefines.Where(g=>g.groupName!=GroupName.EventPotion02).ToArray(); - potionGroup.groupName=GroupName.EventPotion02; + var ev = tables.TbFishingEvent.DataList.First(e => e.Type == 4 && e.SubType == 5); + typeof(cfg.FishingEvent).GetProperty("TimeDefinition").SetValue(ev, new cfg.LimitedTime(ZZTimeHelper.UtcNow().AddHours(-1).ToString("yyyy/MM/dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture), ZZTimeHelper.UtcNow().AddHours(1).ToString("yyyy/MM/dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture))); + typeof(cfg.FishingEvent).GetProperty("ConditionList").SetValue(ev, new List { new cfg.EventCondition(cfg.ConditionType.AccountLevel, new List { "1" }, "") }); + Check(eventData.GetEvent(4, 5) == ev.ID, "isolated actual query sees available potion event"); } - if(scenario=="finished")entry.isFinish=true; - if(scenario=="index-zero")entry.guideSubIndex=0; - if(scenario=="missing-save")guideState.GuideSaveDataDic.Remove(key); - if(scenario=="out-of-range")entry.guideSubIndex=potionGroup.guidanceDefines.Length; - var otherGroup=savedGuideGroups.First(g=>g.groupName==GroupName.Fish_01); - if(scenario=="preserve-other-pointer") + else if (scenario != "query-failure") { - guideState.curGroupDefine=otherGroup;guideState.curDefine=otherGroup.guidanceDefines[0]; - guideState.curSaveData=guideState.GuideSaveDataDic[otherGroup.groupName.ToString()]; + Check(eventData.GetEvent(4, 5) == -1, "isolated actual query sees no potion event"); } - var before=JsonConvert.SerializeObject(guideState.GuideSaveDataDic); - pfShell=new GameObject("KV inactive guide Init fixture");pfShell.SetActive(false);pfShell.hideFlags=HideFlags.HideAndDontSave; - var pf=pfShell.AddComponent(); - Check(pf.IsUnstartedForKVLoad,"guide fixture never starts PF lifecycle");pfField.SetValue(null,pf); - var store=new PlayFabPlayerSaveStore(pf,CancellationToken.None); + + var guideState = new GuideDataCenter(tables, player); + container.RegisterInstance(guideState); + Module02OriginalLoadTests.LoadGuide(guideState, potionSource); + Check(guideState.GuideSaveDataDic.Count > 0, "real 101 guide source loaded through original parser"); + var potionGroup = JsonUtility.FromJson(JsonUtility.ToJson(savedGuideGroups.First(g => g.groupName == GroupName.EventPotion01))); + Check(potionGroup.guidanceDefines[4].isKey && potionGroup.guidanceDefines[4].JumpIndex == 4, "original recovery asset boundary: " + scenario); + guideAsset.guidanceGroupDefines = savedGuideGroups.Select(g => g.groupName == GroupName.EventPotion01 ? potionGroup : g).ToArray(); + var key = GroupName.EventPotion01.ToString(); + var entry = guideState.GuideSaveDataDic[key]; + Check(entry.guideSubIndex == 4 && !entry.isFinish, "real historical potion progress is unfinished at four"); + if (scenario == "node-panel-mismatch") + { + potionGroup.guidanceDefines[entry.guideSubIndex].panelName = "DifferentPanel"; + } + + if (scenario == "other-group") + { + guideState.GuideSaveDataDic.Remove(key); + key = GroupName.EventPotion02.ToString(); + entry.groupName = key; + guideState.GuideSaveDataDic[key] = entry; + guideAsset.guidanceGroupDefines = guideAsset.guidanceGroupDefines.Where(g => g.groupName != GroupName.EventPotion02).ToArray(); + potionGroup.groupName = GroupName.EventPotion02; + } + + if (scenario == "finished") + { + entry.isFinish = true; + } + + if (scenario == "index-zero") + { + entry.guideSubIndex = 0; + } + + if (scenario == "missing-save") + { + guideState.GuideSaveDataDic.Remove(key); + } + + if (scenario == "out-of-range") + { + entry.guideSubIndex = potionGroup.guidanceDefines.Length; + } + + var otherGroup = savedGuideGroups.First(g => g.groupName == GroupName.Fish_01); + if (scenario == "preserve-other-pointer") + { + guideState.curGroupDefine = otherGroup; + guideState.curDefine = otherGroup.guidanceDefines[0]; + guideState.curSaveData = guideState.GuideSaveDataDic[otherGroup.groupName.ToString()]; + } + + guideStore = new KVPlayerSaveStore(); + guideStore.Bind(handle, CancellationToken.None); + var store = guideStore; container.RegisterInstance(store); - player.playerSaveStore=store;eventData.playerSaveStore=store;guideState.playerSaveStore=store; - var initErrors=new List();var initWarnings=new List();int completeEvents=0; - Application.LogCallback onLog=(message,stack,type)=>{if(type==LogType.Exception || type==LogType.Error)initErrors.Add(message);if(type==LogType.Warning)initWarnings.Add(message);}; - Application.logMessageReceived+=onLog; - var completion=GContext.OnEvent().Subscribe(e=>{if(e.type==cfg.ConditionType.CompleteGuide)completeEvents++;}); - bool initStarted=false; + player.playerSaveStore = store; + eventData.playerSaveStore = store; + guideState.playerSaveStore = store; + var initErrors = new List(); + var initWarnings = new List(); + int completeEvents = 0; + Application.LogCallback onLog = (message, stack, type) => + { + if (type == LogType.Exception || type == LogType.Error) + { + initErrors.Add(message); + } + + if (type == LogType.Warning) + { + initWarnings.Add(message); + } + }; + Application.logMessageReceived += onLog; + var completion = GContext.OnEvent().Subscribe(e => + { + if (e.type == cfg.ConditionType.CompleteGuide) + { + completeEvents++; + } + }); + bool initStarted = false; try { // Asset is preloaded above: Init has no outstanding asset operation when teardown begins. - initStarted=true;guideState.Init(); - var deadline=System.Diagnostics.Stopwatch.StartNew(); - while(guideState.guidanceGroupDefines==null && deadline.ElapsedMilliseconds<10000)await Task.Delay(10); + initStarted = true; + guideState.Init(); + var deadline = System.Diagnostics.Stopwatch.StartNew(); + while (guideState.guidanceGroupDefines == null && deadline.ElapsedMilliseconds < 10000) + await Task.Delay(10); await Task.Delay(1); - Check(guideState.guidanceGroupDefines!=null && initErrors.Count==0,"actual Init completed without asynchronous errors: "+scenario+"; "+string.Join(" | ",initErrors)); - if(scenario=="unavailable-real-101") + Check(guideState.guidanceGroupDefines != null && initErrors.Count == 0, "actual Init completed without asynchronous errors: " + scenario + "; " + string.Join(" | ", initErrors)); + if (scenario == "unavailable-real-101" || scenario == "available" || scenario == "query-failure" || + scenario == "node-panel-mismatch" || scenario == "other-group" || scenario == "preserve-other-pointer") { - Check(guideState.curDefine==null && guideState.curGroupDefine==null && guideState.curSaveData==null, - "unavailable historical potion guide is not activated by actual Init"); - Check(before==JsonConvert.SerializeObject(guideState.GuideSaveDataDic),"deferred actual Init preserves every guide entry"); - guideState.AddIndex(true);GContext.Publish(new GuideNextEvent()); - Check(before==JsonConvert.SerializeObject(guideState.GuideSaveDataDic) && completeEvents==0, - "real AddIndex and GuideNext cannot finish deferred potion progress"); - Check(!handle.ReadLocalSnapshot().Data.ContainsKey("GuideSaveDataNew") && fixture.Sets==0, - "deferral and callbacks introduce no guide write or remote request"); + Check(ReferenceEquals(guideState.curGroupDefine, potionGroup) && + ReferenceEquals(guideState.curDefine, potionGroup.guidanceDefines[4]) && + ReferenceEquals(guideState.curSaveData, entry) && entry.guideSubIndex == 4 && !entry.isFinish, + "original Init resumes saved key independently of availability or old pointer: " + scenario); + Check(handle.ReadLocalSnapshot().Data.TryGetValue("GuideSaveDataNew", out var savedGuide) && + savedGuide.Split(';').Contains(key + "|4|0"), "original Init accepts resumed guide ordinary write: " + scenario); + Check(fixture.Sets == 0 && completeEvents == 0, "original recovery neither forces HTTP nor completes guide: " + scenario); } - else if(scenario=="preserve-other-pointer") - Check(ReferenceEquals(guideState.curGroupDefine,otherGroup) && ReferenceEquals(guideState.curDefine,otherGroup.guidanceDefines[0]),"deferral does not clear another active guide"); - else if(scenario=="available" || scenario=="query-failure" || scenario=="node-panel-mismatch" || scenario=="other-group") - Check(ReferenceEquals(guideState.curGroupDefine,potionGroup) && guideState.curDefine!=null,"non-deferred input retains original recovery: "+scenario); else - Check(guideState.curGroupDefine==null && guideState.curDefine==null,"original non-resuming boundary retained: "+scenario); - if(scenario!="missing-save")Check(ReferenceEquals(guideState.GuideSaveDataDic[key],entry),"saved progress object retained: "+scenario); - if(scenario=="query-failure")Check(initWarnings.Any(w=>w.Contains("Potion guide availability")),"query failure is reported and not treated as unavailable"); + { + Check(guideState.curGroupDefine == null && guideState.curDefine == null, "original non-resuming boundary retained: " + scenario); + } + + if (scenario != "missing-save") + { + Check(ReferenceEquals(guideState.GuideSaveDataDic[key], entry), "saved progress object retained: " + scenario); + } + + if (scenario == "query-failure") + { + Check(!initWarnings.Any(w => w.Contains("Potion guide availability")), "original Init does not query potion availability"); + } } finally { - completion.Dispose();Application.logMessageReceived-=onLog;guideState.Dispose(); - guideAsset.guidanceGroupDefines=savedGuideGroups; - if(initStarted)UnityEngine.AddressableAssets.Addressables.Release(guideAsset); + completion.Dispose(); + Application.logMessageReceived -= onLog; + guideState.Dispose(); + guideAsset.guidanceGroupDefines = savedGuideGroups; + if (initStarted) + { + UnityEngine.AddressableAssets.Addressables.Release(guideAsset); + } } } } finally { - guideAsset.guidanceGroupDefines=savedGuideGroups; + guideAsset.guidanceGroupDefines = savedGuideGroups; UnityEngine.AddressableAssets.Addressables.Release(guideAssetHandle); - var runner=runnerField.GetValue(null) as MonoBehaviour; - if(runner!=null && !ReferenceEquals(runner,savedRunner))UnityEngine.Object.DestroyImmediate(runner.gameObject); - runnerField.SetValue(null,savedRunner);syncField.SetValue(null,savedSync);threadField.SetValue(null,savedThread); + var runner = runnerField.GetValue(null) as MonoBehaviour; + if (runner != null && !ReferenceEquals(runner, savedRunner)) + { + UnityEngine.Object.DestroyImmediate(runner.gameObject); + } + + runnerField.SetValue(null, savedRunner); + syncField.SetValue(null, savedSync); + threadField.SetValue(null, savedThread); } - await Start("original-tickets-cross-segment-supersession");var primary=Batch(); - Check(collecting==null && rewardAction.Segment==null && rewardAction.Records.Count==5,"three scopes disposed and all original writes captured"); - await ConfirmRewardAsync(rewardAction,primary);int shows=0;PresentReward(rewardAction,()=>shows++);PresentReward(rewardAction,()=>shows++); - Check(shows==1 && fixture.Remote["Map_5_102"]=="fish" && fixture.Remote["BattlePassRecordTask"]=="reward-task","final values and one presentation"); - - await Start("pending-cannot-present");primary=Batch();fixture.HoldSet=true; - pending=ConfirmRewardAsync(rewardAction,primary);await fixture.SetEntered.Task; - Check(!rewardAction.Confirmed && !rewardAction.Presented,"pending is not success"); - fixture.ReleaseSet.TrySetResult(true);await pending;pending=null;Check(rewardAction.Confirmed,"response confirms original action"); - - await Start("localOnly-map-final-rejected");await Reject(ConfirmRewardAsync(rewardAction,Batch(true)),"local map not remote confirmed"); + + await Start("original-tickets-cross-segment-supersession"); + var primary = Batch(); + Check(collecting == null && rewardAction.Segment == null && rewardAction.Records.Count == 5, "three scopes disposed and all original writes captured"); + _ = KVMgr.SyncKVAsync(rewardAction.Consumption.Owner); // One simulated ordinary timer tick. + await ConfirmRewardAsync(rewardAction, primary); + int shows = 0; + PresentReward(rewardAction, () => shows++); + PresentReward(rewardAction, () => shows++); + Check(shows == 1 && fixture.Remote["Map_5_102"] == "fish" && fixture.Remote["BattlePassRecordTask"] == "reward-task", "final values and one presentation"); + await Start("pending-cannot-present"); + primary = Batch(); + fixture.HoldSet = true; + _ = KVMgr.SyncKVAsync(rewardAction.Consumption.Owner); // One simulated ordinary timer tick. + pending = ConfirmRewardAsync(rewardAction, primary); + await fixture.SetEntered.Task; + Check(!rewardAction.Confirmed && !rewardAction.Presented, "pending is not success"); + fixture.ReleaseSet.TrySetResult(true); + await pending; + pending = null; + Check(rewardAction.Confirmed, "response confirms original action"); + await Start("localOnly-map-final-rejected"); + await Reject(ConfirmRewardAsync(rewardAction, Batch(true)), "local map not remote confirmed"); await Start("outside-segment-before-final-save-rejected"); - using(BeginRewardSegment("strike"))Write("BattlePassRecordTask","strike",true); - RejectSync(()=>Write("NewPlayerDataDic","external",true),"external changed write denied before later reward can hide it"); - Check(fixture.Sets==0 && ReadRejected(),"stopped facade and no outgoing request"); - - await Start("same-value-external-supersession-still-rejected");primary=Batch(); - Write("NewPlayerDataDic","reward-main",true); - await Reject(ConfirmRewardAsync(rewardAction,primary),"same-value external ticket is not the original final ticket"); + using (BeginRewardSegment("strike")) + Write("BattlePassRecordTask", "strike", true); + RejectSync(() => Write("NewPlayerDataDic", "external", true), "external changed write denied before later reward can hide it"); + Check(fixture.Sets == 0 && ReadRejected(), "stopped facade and no outgoing request"); + await Start("same-value-external-supersession-still-rejected"); + primary = Batch(); + Write("NewPlayerDataDic", "reward-main", true); + _ = KVMgr.SyncKVAsync(rewardAction.Consumption.Owner); // One simulated ordinary timer tick. + await Reject(ConfirmRewardAsync(rewardAction, primary), "same-value external ticket is not the original final ticket"); await Start("unexpected-backed-up-key-before-admission"); - using(BeginRewardSegment("strike"))RejectSync(()=>Write("late","unrelated",true),"backed-up but unrelated reward key rejected"); - Check(rewardAction.Records.Count==0 && fixture.Sets==0,"no unrelated admission"); - - await Start("lost-response-no-reward-replay");primary=Batch();fixture.LoseResponse=true; - await Reject(ConfirmRewardAsync(rewardAction,primary),"unknown result stops reward");Check(fixture.Sets==1 && !rewardAction.Presented,"single request only"); - await Start("unauthorized-no-reauthentication");primary=Batch();fixture.Unauthorized=true; - await Reject(ConfirmRewardAsync(rewardAction,primary),"401 stops reward");Check(fixture.Auth==1 && fixture.Sets==1,"no relogin or replay"); - await Start("partial-commit-is-not-success");primary=Batch();fixture.PartialCommit=true;fixture.LoseResponse=true; - await Reject(ConfirmRewardAsync(rewardAction,primary),"partial result remains failure");Check(fixture.Sets==1 && !rewardAction.Confirmed,"no refund or second write"); - await Start("cancel-after-consume-before-reward-confirmed");primary=Batch();fixture.HoldSet=true; - pending=ConfirmRewardAsync(rewardAction,primary);await fixture.SetEntered.Task; - CancelFishing(fishingAction,"actual consumed action cancellation");fixture.ReleaseSet.TrySetResult(true); - await Reject(pending,"C1 Continued cannot exempt pending reward");pending=null;Check(rewardAction.Cancelled && !rewardAction.Presented,"old callbacks revoked"); - await Start("confirmed-normal-cancel-no-second-exit");primary=Batch();await ConfirmRewardAsync(rewardAction,primary); - CancelReward(rewardAction.Controller,"normal disable");CancelFishing(fishingAction,"normal actor destroy"); - Check(rewardAction.Cancelled && fishingAction.Cancelled && fixture.Faults==0 && Ready,"confirmed normal disable never faults"); + using (BeginRewardSegment("strike")) + RejectSync(() => Write("late", "unrelated", true), "backed-up but unrelated reward key rejected"); + Check(rewardAction.Records.Count == 0 && fixture.Sets == 0, "no unrelated admission"); + await Start("lost-response-no-reward-replay"); + primary = Batch(); + fixture.LoseResponse = true; + _ = KVMgr.SyncKVAsync(rewardAction.Consumption.Owner); // One simulated ordinary timer tick. + await Reject(ConfirmRewardAsync(rewardAction, primary), "unknown result stops reward"); + Check(fixture.Sets == 1 && !rewardAction.Presented, "single request only"); + await Start("unauthorized-no-reauthentication"); + primary = Batch(); + fixture.Unauthorized = true; + _ = KVMgr.SyncKVAsync(rewardAction.Consumption.Owner); // One simulated ordinary timer tick. + await Reject(ConfirmRewardAsync(rewardAction, primary), "401 stops reward"); + Check(fixture.Auth == 1 && fixture.Sets == 1, "no relogin or replay"); + await Start("partial-commit-is-not-success"); + primary = Batch(); + fixture.PartialCommit = true; + fixture.LoseResponse = true; + _ = KVMgr.SyncKVAsync(rewardAction.Consumption.Owner); // One simulated ordinary timer tick. + await Reject(ConfirmRewardAsync(rewardAction, primary), "partial result remains failure"); + Check(fixture.Sets == 1 && !rewardAction.Confirmed, "no refund or second write"); + await Start("cancel-after-consume-before-reward-confirmed"); + primary = Batch(); + fixture.HoldSet = true; + _ = KVMgr.SyncKVAsync(rewardAction.Consumption.Owner); // One simulated ordinary timer tick. + pending = ConfirmRewardAsync(rewardAction, primary); + await fixture.SetEntered.Task; + CancelFishing(fishingAction, "actual consumed action cancellation"); + fixture.ReleaseSet.TrySetResult(true); + await Reject(pending, "C1 Continued cannot exempt pending reward"); + pending = null; + Check(rewardAction.Cancelled && !rewardAction.Presented, "old callbacks revoked"); + await Start("confirmed-normal-cancel-no-second-exit"); + primary = Batch(); + _ = KVMgr.SyncKVAsync(rewardAction.Consumption.Owner); // One simulated ordinary timer tick. + await ConfirmRewardAsync(rewardAction, primary); + CancelReward(rewardAction.Controller, "normal disable"); + CancelFishing(fishingAction, "normal actor destroy"); + Check(rewardAction.Cancelled && fishingAction.Cancelled && fixture.Faults == 0 && Ready, "confirmed normal disable never faults"); await Start("battle-controller-disable-still-cancels"); - CancelReward(rewardAction.Controller,"controller disabled"); - Check(rewardAction.Cancelled && !Ready && fixture.Faults==1,"battle controller disable still cancels"); - await Start("ending-teardown-pre-confirm-not-cancel");primary=Batch(); - CancelReward(rewardAction.Controller,"controller disabled");CancelReward(rewardAction.Controller,"controller destroyed"); - Check(!rewardAction.Cancelled && Ready && fixture.Faults==0,"ending teardown window is not a cancellation"); - await ConfirmRewardAsync(rewardAction,primary);shows=0;PresentReward(rewardAction,()=>shows++); - Check(shows==1 && rewardAction.Confirmed && rewardAction.Presented,"reward completes and presents after teardown window"); + CancelReward(rewardAction.Controller, "controller disabled"); + Check(rewardAction.Cancelled && !Ready && fixture.Faults == 1, "battle controller disable still cancels"); + await Start("ending-teardown-pre-confirm-not-cancel"); + primary = Batch(); + CancelReward(rewardAction.Controller, "controller disabled"); + CancelReward(rewardAction.Controller, "controller destroyed"); + Check(!rewardAction.Cancelled && Ready && fixture.Faults == 0, "ending teardown window is not a cancellation"); + _ = KVMgr.SyncKVAsync(rewardAction.Consumption.Owner); // One simulated ordinary timer tick. + await ConfirmRewardAsync(rewardAction, primary); + shows = 0; + PresentReward(rewardAction, () => shows++); + Check(shows == 1 && rewardAction.Confirmed && rewardAction.Presented, "reward completes and presents after teardown window"); await Start("repeated-segment-and-sealed-action-rejected"); - using(BeginRewardSegment("strike")){} - RejectSync(()=>BeginRewardSegment("strike"),"strike cannot repeat"); - + using (BeginRewardSegment("strike")) + { + } + + RejectSync(() => BeginRewardSegment("strike"), "strike cannot repeat"); await Start("reward-storage-error-before-send"); - var file=Directory.GetFiles(Path.Combine(folder,groups.ToString()),"state.json",SearchOption.AllDirectories).Single(); - using(var locked=new FileStream(file,FileMode.Open,FileAccess.Read,FileShare.None)) - using(BeginRewardSegment("strike"))RejectSync(()=>Write("NewPlayerDataDic","locked",true),"real state-file storage failure"); - Check(fixture.Sets==0 && !Ready,"storage fault before network"); - - foreach(var scenario in new[]{"non-record","new-record","new-fish"}) - { - await Start("real-fish-final-save-"+scenario); - var tables=new cfg.Tables(n=>SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath,"../../cfgData",n+".json"))))); - container=new Container();FishingContextAccess.Use(container);FishingContextAccess.Events=new EventAggregator();container.RegisterInstance(tables); - player=new PlayerData(tables,null);var fish=new PlayerFishData(tables,null);container.RegisterInstance(player);container.RegisterInstance(fish); - var core=new PlayerKVCoreState(new object[]{60,100UL,0,393,5,4,30003,new DateTime(2026,1,1),0,112,7UL,2,102,102,13,102,0,0,0}); - player.ReplaceFromKVDecoded(new PlayerKVPlayerState(core,new Dictionary(),new Dictionary{{-1,1}},new List(),0,false,"0")); - var data=new Dictionary{{10241,FishWeightData.Deserialize("2|20|30|40|False")}}; - if(scenario!="new-fish")data[10211]=FishWeightData.Deserialize("0|10|20|20|False"); - var fields=BindingFlags.Instance|BindingFlags.NonPublic; - typeof(PlayerFishData).GetField("fishData",fields).SetValue(fish,data); - typeof(PlayerFishData).GetField("mapFishData",fields).SetValue(fish,new Dictionary>{{102,data}}); - pfShell=new GameObject("KV reward unstarted PF fixture");pfShell.SetActive(false);pfShell.hideFlags=HideFlags.HideAndDontSave; - var pf=pfShell.AddComponent();Check(pf.IsUnstartedForKVLoad,"PF lifecycle never starts");pfField.SetValue(null,pf); - var store=new PlayFabPlayerSaveStore(pf,CancellationToken.None); - container.RegisterInstance(store); - player.playerSaveStore=store;fish.playerSaveStore=store; - rewardAction.BeforeFishCount=scenario=="new-fish"?0:20; - using(BeginRewardSegment("strike")){}rewardAction.Ending=true;using(BeginRewardSegment("ending")){} - rewardAction.Applying=true; - var events=new List();using(GContext.OnEvent().Subscribe(e=>events.Add(e.type))) - using(BeginRewardSegment("reward")) - { - fish.SetGetFishCount(10211);fish.SetWeight(10211,scenario=="new-record"?12:5); - fish.SaveCaughtFishForKVLoop(10211); - primary=Write("NewPlayerDataDic","fixture-main",true); - } - rewardAction.GuideNotifications=1;await ConfirmRewardAsync(rewardAction,primary); - var savedMap=JsonConvert.DeserializeObject>(fixture.Remote["Map_5_102"]); - var value=FishWeightData.Deserialize(savedMap[10211]); - Check(value.TotalNum==(scenario=="new-fish"?10:30),"original count increment exactly once"); - Check(value.MaxG==(scenario=="new-record"?12:scenario=="new-fish"?5:10),"original maximum weight rule"); - Check(savedMap[10241]=="2|20|30|40|False" && value.TotalCard==(scenario=="new-fish"?0:20) && value.Level==0,"other fish and card data unchanged"); - Check(events.Count==2 && events.Contains(cfg.ConditionType.GetFishWeight) && events.Contains(cfg.ConditionType.GetFishID),"final save never republishes fish events"); - var fishSchema=new PlayerKVSchemaSnapshot("reward-fish",tables.TbRodData.DataMap.Keys,tables.TbMapData.DataMap.Keys,new Dictionary(),System.Globalization.CultureInfo.CurrentCulture,new DateTime(2026,9,24),0, - fish:tables.TbFishData.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVFishConfig(p.Key,p.Value.AreaID,p.Value.Quality,p.Value.FishCardID,p.Value.BaseWeight,p.Value.PointExtraParam,p.Value.WeightRandom)), - cards:tables.TbFishCard.DataMap.ToDictionary(p=>p.Key,p=>new PlayerKVFishCardConfig(p.Key,p.Value.MaxLevel,p.Value.CardsRequiredList,p.Value.WeightMagList))); - var fishErrors=new PlayerKVSchemaDiagnostics(); - var decodedFish=PlayerKVSaveSchema.DecodeFish(new Dictionary{{"Map_5_102",fixture.Remote["Map_5_102"]}},new Dictionary(),fishSchema,fishErrors); - Check(decodedFish!=null && fishErrors.TotalErrors==0 && decodedFish.Maps[102][10211].Number==value.TotalNum && decodedFish.RawMaps[102][10211].Weight==value.MaxG,"real Map schema reads the saved catch"); - } - foreach(var cash in new[]{0,122}) - { - await Start("actual-main-reward-and-subscribers-cash-"+cash); - var tables=new cfg.Tables(n=>SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath,"../../cfgData",n+".json"))))); - container=new Container();FishingContextAccess.Use(container);FishingContextAccess.Events=new EventAggregator();container.RegisterInstance(tables); - LocalizationMgr.enumLanguage=tables.TbLanguageConfig.DataList.Select(x=>x.ID).ToList();textTable.SetValue(null,null); - player=new PlayerData(tables,null);var fish=new PlayerFishData(tables,null);var small=new SmallGameData(tables,null,null); - var achievements=new AchievementDataManager(tables);var box=new FishingBoxData();var events=new FishingEventData(tables); - container.RegisterInstance(player);container.RegisterInstance(fish);container.RegisterInstance(small);container.RegisterInstance(achievements);container.RegisterInstance(box);container.RegisterInstance(events); - fish.ResetForKVLoad();small.ResetForKVLoad();achievements.ResetForKVLoad();box.ResetForKVLoad();achievements.Init(); - var core=new PlayerKVCoreState(new object[]{60,100UL,0,393,5,4,30003,new DateTime(2026,1,1),0,112,7UL,2,102,102,13,102,0,0,0}); - player.ReplaceFromKVDecoded(new PlayerKVPlayerState(core,new Dictionary(),new Dictionary{{-1,1}},new List(),0,false,"0")); - subscribers=new RewardSubscribers();subscribers.Bind(tables,events,container); - Permit.AllowedKeys=Permit.AllowedKeys.Concat(rewardTaskKeys).Distinct().ToArray(); - int countEvents=0;var seen=new List(); - using(GContext.OnEvent().Subscribe(e=>{seen.Add(e.type);if(e.type==cfg.ConditionType.GetFishCount)countEvents++;})) - { - using(BeginRewardSegment("strike"))GContext.Publish(new ConditionTypeEvent(cfg.ConditionType.PerfectStrikeCount,1)); - rewardAction.Ending=true;using(BeginRewardSegment("ending")){} - rewardAction.Applying=true; - using(BeginRewardSegment("reward")) - { - // Actual unchanged data methods; visual/formula extraction is tested separately. - player.SaveFishingFrequency(); - GContext.Publish(new ConditionTypeEvent(cfg.ConditionType.CashFromFishing,cash)); - GContext.Publish(new ConditionTypeEvent(cfg.ConditionType.MaxCashFromFishing,cash/10)); - if(cash>0)player.AddGold((ulong)cash); - foreach(var condition in new[]{cfg.ConditionType.GetFishWeight,cfg.ConditionType.GetFishID,cfg.ConditionType.GetBoosFish,cfg.ConditionType.GetBiggerThanHugeFishCount}) - GContext.Publish(new ConditionTypeEvent(condition,2)); - Write("Map_5_102",Read("Map_5_102"),true); - primary=player.SaveFishingRewardForKVLoop(); - } - } - rewardAction.GuideNotifications=1;await ConfirmRewardAsync(rewardAction,primary); - var modern=JsonConvert.DeserializeObject>(fixture.Remote["NewPlayerDataDic"]); - var coreValues=modern["newData"].Split(','); - Check(coreValues[1]==(100+cash).ToString() && coreValues[14]=="14" && coreValues[15]=="112","cash and one catch with original x10 total frequency"); - Check(coreValues[3]=="393" && coreValues[9]=="112" && countEvents==1,"reward never consumes again or repeats count event"); - Check(modern["ad"]==achievements.AchievementDataToJson() && achievements.GetAchievementDatas(cfg.ConditionType.GetFishCount)==1,"last primary serializes real achievement subscriber"); - Check(modern.ContainsKey("ld") && modern["ld"].Split('|').Length==3,"original luck serialization preserved"); - Check(subscribers.Battle.Data.BattleTask.dic_dailyTasks.Any(k=>tables.TbBattlePassTask.GetOrDefault(k.Key).Type==cfg.ConditionType.PerfectStrikeCount && k.Value==1),"S1 real battle task writes"); - Check(subscribers.Lucky.DicTasks.All(k=>k.Value==0) && subscribers.Magic.DicTasks.All(k=>k.Value==0) && subscribers.Mini.Data.Exp==0,"actual lucky/magic/mini ignore reward conditions absent from their real config"); - foreach(var condition in rewardConditions.Where(x=>x!=cfg.ConditionType.ConsumeEnergy)) - Check(seen.Count(x=>x==condition)==1,"reward condition once: "+condition); - Check(fixture.Remote.ContainsKey("BattlePassRecordTask") && !fixture.Remote.ContainsKey("MiniBPKeyNew") && !fixture.Remote.ContainsKey("EventLuckGameRecord") && !fixture.Remote.ContainsKey("EventLuckMagicPlayfabData"),"only applicable original task saves confirmed; no invented task updates"); - var schema=new PlayerKVSchemaSnapshot("reward-main",tables.TbRodData.DataMap.Keys,tables.TbMapData.DataMap.Keys,new Dictionary(),System.Globalization.CultureInfo.CurrentCulture,new DateTime(2026,9,24),0); - var errors=new PlayerKVSchemaDiagnostics();Check(PlayerKVSaveSchema.DecodeCore(new Dictionary(),modern,schema,errors)!=null && errors.TotalErrors==0,"main schema reads final original serializer"); - } + var file = Directory.GetFiles(Path.Combine(folder, groups.ToString()), "state.json", SearchOption.AllDirectories).Single(); + using (var locked = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.None)) + using (BeginRewardSegment("strike")) + RejectSync(() => Write("NewPlayerDataDic", "locked", true), "real state-file storage failure"); + Check(fixture.Sets == 0 && !Ready, "storage fault before network"); await Start("actual-reentry-and-old-permit-gates"); - Check(!BeginRewardDrawing(rewardAction.Controller),"duplicate drawing never reaches original battle"); - rewardAction.Ending=true;Check(!BeginRewardEnding(rewardAction.Controller,true),"duplicate fish end never opens another panel"); - rewardAction.Applying=true;Check(BindRewardPanel(new object())==null,"second panel never reapplies rewards"); - Permit.Version=2;Permit.Operation="fishing-consume-once";RejectSync(()=>BeginRewardDrawing(new object()),"v2 cannot draw"); - await Start("v1-cannot-draw");Permit.Version=1;Permit.Operation=null;RejectSync(()=>BeginRewardDrawing(new object()),"v1 cannot draw"); + Check(!BeginRewardDrawing(rewardAction.Controller), "duplicate drawing never reaches original battle"); + rewardAction.Ending = true; + Check(!BeginRewardEnding(rewardAction.Controller, true), "duplicate fish end never opens another panel"); + rewardAction.Applying = true; + Check(BindRewardPanel(new object ()) == null, "second panel never reapplies rewards"); + Permit.Version = 2; + Permit.Operation = "fishing-consume-once"; + RejectSync(() => BeginRewardDrawing(new object ()), "v2 cannot draw"); + await Start("v1-cannot-draw"); + Permit.Version = 1; + Permit.Operation = null; + RejectSync(() => BeginRewardDrawing(new object ()), "v1 cannot draw"); await Start("natural-failure-stops-without-reward"); - RejectSync(()=>BeginRewardEnding(rewardAction.Controller,false),"natural failure not converted to catch"); - Check(fixture.Sets==0 && rewardAction.Records.Count==0 && !rewardAction.Applying,"failure has no reward or refund"); - foreach(bool complete in new[]{false,true}) - { - await Start(complete?"actual-panel-disable-confirmed":"actual-panel-disable-pending"); - primary=Batch();if(complete)await ConfirmRewardAsync(rewardAction,primary); - var shell=new GameObject("KV inactive reward panel lifecycle fixture");shell.SetActive(false);shell.hideFlags=HideFlags.HideAndDontSave; - try - { - var panel=shell.AddComponent();rewardAction.Panel=panel; - typeof(FishingRewardPanel).GetMethod("OnDisable",BindingFlags.Instance|BindingFlags.NonPublic).Invoke(panel,null); - Check(rewardAction.Cancelled && fixture.Faults==(complete?0:1),"actual panel OnDisable revokes pending only"); - Check(!RewardPanelCurrent(rewardAction,panel),"old panel continuation is revoked"); - } - finally{UnityEngine.Object.DestroyImmediate(shell);} - } + RejectSync(() => BeginRewardEnding(rewardAction.Controller, false), "natural failure not converted to catch"); + Check(fixture.Sets == 0 && rewardAction.Records.Count == 0 && !rewardAction.Applying, "failure has no reward or refund"); await Start("real-backup-no-special-fish-guide-preflight"); - container=new Container();FishingContextAccess.Use(container);FishingContextAccess.Events=new EventAggregator(); - var guide=new GuideDataCenter(null,null);container.RegisterInstance(guide); - var backup=JsonConvert.DeserializeObject>(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath,"../../CodexOutput/upserver/KVGameplayLoopTests/backups/20260924T084836Z/102.json")))); - var raw=JsonConvert.DeserializeObject>(backup["data"].ToString()); - var guideErrors=new PlayerKVSchemaDiagnostics();guide.ReplaceFromKVDecoded(GuideDataCenter.DecodeForKVLoad(raw,guideErrors)); - guide.guidanceGroupDefines=UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/ABPackage/pkgPrepare/Export/GuidanceConfig.asset").guidanceGroupDefines; - Check(guideErrors.TotalErrors==0,"real guide backup decodes"); - var gateTables=new cfg.Tables(n=>SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath,"../../cfgData",n+".json"))))); + container = new Container(); + FishingContextAccess.Use(container); + FishingContextAccess.Events = new EventAggregator(); + var guide = new GuideDataCenter(null, null); + container.RegisterInstance(guide); + var backup = JsonConvert.DeserializeObject>(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath, "../../CodexOutput/upserver/KVGameplayLoopTests/backups/20260924T084836Z/102.json")))); + var raw = JsonConvert.DeserializeObject>(backup["data"].ToString()); + Module02OriginalLoadTests.LoadGuide(guide, raw); + guide.guidanceGroupDefines = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/ABPackage/pkgPrepare/Export/GuidanceConfig.asset").guidanceGroupDefines; + Check(guide.GuideSaveDataDic.Count > 0, "real guide backup loads through original parser"); + var gateTables = new cfg.Tables(n => SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath, "../../cfgData", n + ".json"))))); container.RegisterInstance(gateTables); - rewardPlan.Data=new FishingData{curFishData=gateTables.TbFishData.GetOrDefault(10211)}; - var guideBefore=JsonConvert.SerializeObject(guide.GuideSaveDataDic); + rewardPlan.Data = new FishingData + { + curFishData = gateTables.TbFishData.GetOrDefault(10211) + }; + var guideBefore = JsonConvert.SerializeObject(guide.GuideSaveDataDic); CheckRewardGuide(); - Check(Ready && fixture.Sets==0 && guideBefore==JsonConvert.SerializeObject(guide.GuideSaveDataDic),"ordinary fish admitted without guide writes or consumption"); - var originalGroups=guide.guidanceGroupDefines; - foreach(var kind in new[]{"ordinary-incomplete","active-node","active-group","last-node","extra-node","missing-node","trigger","parameter","unknown-group","positive-skill","last-skill","escape-skill","active-skill","active-dash","active-dirty"}) + Check(Ready && fixture.Sets == 0 && guideBefore == JsonConvert.SerializeObject(guide.GuideSaveDataDic), "ordinary fish admitted without guide writes or consumption"); + var originalGroups = guide.guidanceGroupDefines; + foreach (var kind in new[] + { + "ordinary-incomplete", + "active-node", + "active-group", + "last-node", + "extra-node", + "missing-node", + "trigger", + "parameter", + "unknown-group", + "positive-skill", + "last-skill", + "escape-skill", + "active-skill", + "active-dash", + "active-dirty" + } + + ) { // Read-only fault probes share an isolated fixture; no real run is reset. - var guideCopy=JsonUtility.FromJson(JsonUtility.ToJson(originalGroups.First(g=>g.groupName.ToString()=="FishSkill01"))); - var baseFish=gateTables.TbFishData.GetOrDefault(10211); - var fishJson=SimpleJSON.JSON.Parse(baseFish.json.ToString()); - var testFish=new cfg.FishData(fishJson); - var testData=new FishingData{curFishData=testFish}; - guide.guidanceGroupDefines=originalGroups.Select(g=>g.groupName==guideCopy.groupName?guideCopy:g).ToArray(); - guide.curDefine=null;guide.curGroupDefine=null; - guide.GuideSaveDataDic["Fish_01"].isFinish=true; - switch(kind) + var guideCopy = JsonUtility.FromJson(JsonUtility.ToJson(originalGroups.First(g => g.groupName.ToString() == "FishSkill01"))); + var baseFish = gateTables.TbFishData.GetOrDefault(10211); + var fishJson = SimpleJSON.JSON.Parse(baseFish.json.ToString()); + var testFish = new cfg.FishData(fishJson); + var testData = new FishingData { - case "ordinary-incomplete":guide.GuideSaveDataDic["Fish_01"].isFinish=false;break; - case "active-node":guide.curDefine=guideCopy.guidanceDefines[0];break; - case "active-group":guide.curGroupDefine=guideCopy;break; - case "last-node":guideCopy.guidanceDefines.Last().panelName="FishingRewardPanel";break; - case "extra-node":guideCopy.guidanceDefines=guideCopy.guidanceDefines.Concat(new[]{new GuidanceDefine{panelName="FishingPanel_Advanced"}}).ToArray();break; - case "missing-node":guideCopy.guidanceDefines=Array.Empty();break; - case "trigger":guideCopy.TriggerConditionsType=GuideTriggerConditions.Next;break; - case "parameter":guideCopy.TriggerConditionsParameter="changed";break; - case "unknown-group":guideCopy.groupName=(GroupName)999999;break; - case "positive-skill":case "last-skill":case "escape-skill": - var skillJson=SimpleJSON.JSON.Parse(baseFish.FishEscape.json.ToString());skillJson["SpSkillID"]=123456789; - if(kind=="escape-skill")fishJson["FishEscape"]=skillJson; - else {var list=new SimpleJSON.JSONArray();if(kind=="last-skill")list.Add(SimpleJSON.JSON.Parse(baseFish.FishEscape.json.ToString()));list.Add(skillJson);fishJson["FishSKillList"]=list;} - testData.curFishData=new cfg.FishData(fishJson);break; - case "active-skill":testData.fishSpSkillData=new CorruptSpSkillData();break; - case "active-dash":testData.superDashSpSkillData=new SuperDashSpSkillData();break; - case "active-dirty":testData.dirtyStuckSpSkillData=new DirtyStuckSpSkillData();break; + curFishData = testFish + }; + guide.guidanceGroupDefines = originalGroups.Select(g => g.groupName == guideCopy.groupName ? guideCopy : g).ToArray(); + guide.curDefine = null; + guide.curGroupDefine = null; + guide.GuideSaveDataDic["Fish_01"].isFinish = true; + switch (kind) + { + case "ordinary-incomplete": + guide.GuideSaveDataDic["Fish_01"].isFinish = false; + break; + case "active-node": + guide.curDefine = guideCopy.guidanceDefines[0]; + break; + case "active-group": + guide.curGroupDefine = guideCopy; + break; + case "last-node": + guideCopy.guidanceDefines.Last().panelName = "FishingRewardPanel"; + break; + case "extra-node": + guideCopy.guidanceDefines = guideCopy.guidanceDefines.Concat(new[] { new GuidanceDefine { panelName = "FishingPanel_Advanced" } }).ToArray(); + break; + case "missing-node": + guideCopy.guidanceDefines = Array.Empty(); + break; + case "trigger": + guideCopy.TriggerConditionsType = GuideTriggerConditions.Next; + break; + case "parameter": + guideCopy.TriggerConditionsParameter = "changed"; + break; + case "unknown-group": + guideCopy.groupName = (GroupName)999999; + break; + case "positive-skill": + case "last-skill": + case "escape-skill": + var skillJson = SimpleJSON.JSON.Parse(baseFish.FishEscape.json.ToString()); + skillJson["SpSkillID"] = 123456789; + if (kind == "escape-skill") + { + fishJson["FishEscape"] = skillJson; + } + else + { + var list = new SimpleJSON.JSONArray(); + if (kind == "last-skill") + { + list.Add(SimpleJSON.JSON.Parse(baseFish.FishEscape.json.ToString())); + } + + list.Add(skillJson); + fishJson["FishSKillList"] = list; + } + + testData.curFishData = new cfg.FishData(fishJson); + break; + case "active-skill": + testData.fishSpSkillData = new CorruptSpSkillData(); + break; + case "active-dash": + testData.superDashSpSkillData = new SuperDashSpSkillData(); + break; + case "active-dirty": + testData.dirtyStuckSpSkillData = new DirtyStuckSpSkillData(); + break; } + // Stop() is idempotent; all cases are read-only gate probes, not fresh consumption attempts. - RejectSync(()=>CheckRewardGuide(testData),"guide/skill drift denied: "+kind); - Check(fixture.Sets==0,"gate drift never writes: "+kind); + RejectSync(() => CheckRewardGuide(testData), "guide/skill drift denied: " + kind); + Check(fixture.Sets == 0, "gate drift never writes: " + kind); } - guide.guidanceGroupDefines=originalGroups;guide.curDefine=null;guide.curGroupDefine=null;guide.GuideSaveDataDic["Fish_01"].isFinish=true; - - foreach(var scenario in new[]{"ordinary","zero-cruise","cruise","invalid-cruise","free","retry","fixed","duel","special-item","missing-map","wrong-area","event-field","event-count","trigger-pack","activity-drift","guide-before-S1","guide-before-S2","guide-before-S3"}) + + guide.guidanceGroupDefines = originalGroups; + guide.curDefine = null; + guide.curGroupDefine = null; + guide.GuideSaveDataDic["Fish_01"].isFinish = true; + foreach (var scenario in new[] { - await Start("actual-full-reward-preflight-"+scenario); - var tables=new cfg.Tables(n=>SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath,"../../cfgData",n+".json"))))); - container=new Container();FishingContextAccess.Use(container);FishingContextAccess.Events=new EventAggregator();container.RegisterInstance(tables); - player=new PlayerData(tables,null);var fish=new PlayerFishData(tables,null);fish.ResetForKVLoad(); - var events=new FishingEventData(tables);var guideState=new GuideDataCenter(tables,player); - var diag=new PlayerKVSchemaDiagnostics();guideState.ReplaceFromKVDecoded(GuideDataCenter.DecodeForKVLoad(raw,diag));guideState.guidanceGroupDefines=originalGroups; - guideState.guidanceDefineSetting=UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/ABPackage/pkgPrepare/Export/GuidanceConfig.asset"); - var scopes=new Activity.ActivityScopeManager();var manager=new Activity.ActivityManager(tables,scopes); - container.RegisterInstance(player);container.RegisterInstance(fish);container.RegisterInstance(events);container.RegisterInstance(guideState); - container.RegisterInstance(new CollectingData());container.RegisterInstance(new PiggyBankPackData());container.RegisterInstance(new BargainPackData());container.RegisterInstance(new FishingChallengeManager()); - container.RegisterInstance(scopes);container.RegisterInstance(manager); - player.ReplaceFromKVDecoded(new PlayerKVPlayerState(new PlayerKVCoreState(new object[]{60,100UL,0,393,5,4,30003,new DateTime(2026,1,1),0,112,7UL,2,102,102,13,102,0,0,0}),new Dictionary(),new Dictionary{{-1,1}},new List(),0,false,"0")); - player.IsOpenMagnification=true;fish.IsOpenPiercing=true; - var data=new FishingData{curFishData=tables.TbFishData.GetOrDefault(10211),fishItem=tables.TbItem.DataList.First(x=>x.RedirectID==10211 && x.SubType==1),RodId=30003,MapId=102}; - rewardPlan=null;rewardAction=null; - switch(scenario) + "ordinary", + "zero-cruise", + "cruise", + "invalid-cruise", + "free", + "retry", + "fixed", + "duel", + "special-item", + "missing-map", + "wrong-area", + "event-field", + "event-count", + "trigger-pack", + "activity-drift", + "guide-before-S1", + "guide-before-S2", + "guide-before-S3" + } + + ) + { + await Start("actual-full-reward-preflight-" + scenario); + var tables = new cfg.Tables(n => SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath, "../../cfgData", n + ".json"))))); + container = new Container(); + FishingContextAccess.Use(container); + FishingContextAccess.Events = new EventAggregator(); + container.RegisterInstance(tables); + player = new PlayerData(tables, null); + var fish = new PlayerFishData(tables, null); + var events = new FishingEventData(tables); + var guideState = new GuideDataCenter(tables, player); + Module02OriginalLoadTests.LoadGuide(guideState, raw); + guideState.guidanceGroupDefines = originalGroups; + guideState.guidanceDefineSetting = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/ABPackage/pkgPrepare/Export/GuidanceConfig.asset"); + var scopes = new Activity.ActivityScopeManager(); + var manager = new Activity.ActivityManager(tables, scopes); + container.RegisterInstance(player); + container.RegisterInstance(new SmallGameData(tables, null, null)); + container.RegisterInstance(fish); + container.RegisterInstance(events); + container.RegisterInstance(guideState); + container.RegisterInstance(new CollectingData()); + container.RegisterInstance(new PiggyBankPackData()); + container.RegisterInstance(new BargainPackData()); + container.RegisterInstance(new FishingChallengeManager()); + container.RegisterInstance(scopes); + container.RegisterInstance(manager); + Module02OriginalLoadTests.LoadCore(player, new object[] { 60, 100UL, 0, 393, 5, 4, 30003, new DateTime(2026, 1, 1), 0, 112, 7UL, 2, 102, 102, 13, 102, 0, 0, 0 }); + player.IsOpenMagnification = true; + fish.IsOpenPiercing = true; + var data = new FishingData { - case "zero-cruise":case "cruise":case "invalid-cruise": - typeof(PlayerFishData).GetField("fishSwimToMap",BindingFlags.Instance|BindingFlags.NonPublic).SetValue(fish,new Dictionary{{102,scenario=="zero-cruise"?0:scenario=="cruise"?10211:-2}});break; - case "free":data.IsFree=true;break;case "retry":data.IsRetry=true;break;case "duel":data.IsDuel=true;break; - case "fixed":data.fixedFishList=tables.TbFixedFishList.DataList.First();break; - case "special-item":data.fishItem=tables.TbItem.DataList.First(x=>x.SubType==11);break; - case "missing-map":Permit.AllowedKeys=new[]{"NewPlayerDataDic"};break; - case "wrong-area":var fj=SimpleJSON.JSON.Parse(data.curFishData.json.ToString());fj["AreaID"]=999999;data.curFishData=new cfg.FishData(fj);break; - case "event-field":var ev=tables.TbFishingEvent.DataList.First(x=>x.ID==10100000);typeof(cfg.FishingEvent).GetProperty("PopupPriority").SetValue(ev,ev.PopupPriority+1);break; - case "event-count":tables.TbFishingEvent.DataList.Remove(tables.TbFishingEvent.DataList.First(x=>x.ID==10100000));break; - case "trigger-pack":typeof(cfg.TriggerPackManager).GetProperty("Condition").SetValue(tables.TbTriggerPackManager.DataList.First(),cfg.ConditionType.GetFishCount);break; + curFishData = tables.TbFishData.GetOrDefault(10211), + fishItem = tables.TbItem.DataList.First(x => x.RedirectID == 10211 && x.SubType == 1), + RodId = 30003, + MapId = 102 + }; + rewardPlan = null; + rewardAction = null; + switch (scenario) + { + case "zero-cruise": + case "cruise": + case "invalid-cruise": + typeof(PlayerFishData).GetField("fishSwimToMap", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(fish, new Dictionary { { 102, scenario == "zero-cruise" ? 0 : scenario == "cruise" ? 10211 : -2 } }); + break; + case "free": + data.IsFree = true; + break; + case "retry": + data.IsRetry = true; + break; + case "duel": + data.IsDuel = true; + break; + case "fixed": + data.fixedFishList = tables.TbFixedFishList.DataList.First(); + break; + case "special-item": + data.fishItem = tables.TbItem.DataList.First(x => x.SubType == 11); + break; + case "missing-map": + Permit.AllowedKeys = new[] + { + "NewPlayerDataDic" + }; + break; + case "wrong-area": + var fj = SimpleJSON.JSON.Parse(data.curFishData.json.ToString()); + fj["AreaID"] = 999999; + data.curFishData = new cfg.FishData(fj); + break; + case "event-field": + var ev = tables.TbFishingEvent.DataList.First(x => x.ID == 10100000); + typeof(cfg.FishingEvent).GetProperty("PopupPriority").SetValue(ev, ev.PopupPriority + 1); + break; + case "event-count": + tables.TbFishingEvent.DataList.Remove(tables.TbFishingEvent.DataList.First(x => x.ID == 10100000)); + break; + case "trigger-pack": + typeof(cfg.TriggerPackManager).GetProperty("Condition").SetValue(tables.TbTriggerPackManager.DataList.First(), cfg.ConditionType.GetFishCount); + break; } - if(scenario=="ordinary" || scenario=="zero-cruise" || scenario=="activity-drift" || scenario.StartsWith("guide-before-")) + + if (scenario == "ordinary" || scenario == "zero-cruise" || scenario == "activity-drift" || scenario.StartsWith("guide-before-")) { - PrepareFishingReward(fishingAction,data); - Check(Ready && rewardPlan.Data==data && fixture.Sets==0,"actual full preflight admitted before any consumption"); - if(scenario=="activity-drift") - {scopes.CreateActivityScope((1,1));RejectSync(CheckRewardContext,"actual activity scope drift denied");} - else if(scenario.StartsWith("guide-before-")) + PrepareFishingReward(fishingAction, data); + Check(Ready && rewardPlan.Data == data && fixture.Sets == 0, "actual full preflight admitted before any consumption"); + if (scenario == "activity-drift") { - var actor=new object(); - if(scenario!="guide-before-S1") {Check(BeginRewardDrawing(actor),"first drawing");using(BeginRewardSegment("strike")){} } - if(scenario=="guide-before-S3") {Check(BeginRewardEnding(actor,true),"first ending");using(BeginRewardSegment("ending")){} } - guideState.curDefine=originalGroups.First().guidanceDefines.First(); - if(scenario=="guide-before-S1")RejectSync(()=>BeginRewardDrawing(actor),"active guide before drawing"); - else if(scenario=="guide-before-S2")RejectSync(()=>BeginRewardEnding(actor,true),"active guide before ending"); - else RejectSync(()=>BindRewardPanel(new object()),"active guide before reward data"); + scopes.CreateActivityScope((1, 1)); + RejectSync(CheckRewardContext, "actual activity scope drift denied"); + } + else if (scenario.StartsWith("guide-before-")) + { + var actor = new object (); + if (scenario != "guide-before-S1") + { + Check(BeginRewardDrawing(actor), "first drawing"); + using (BeginRewardSegment("strike")) + { + } + } + + if (scenario == "guide-before-S3") + { + Check(BeginRewardEnding(actor, true), "first ending"); + using (BeginRewardSegment("ending")) + { + } + } + + guideState.curDefine = originalGroups.First().guidanceDefines.First(); + if (scenario == "guide-before-S1") + { + RejectSync(() => BeginRewardDrawing(actor), "active guide before drawing"); + } + else if (scenario == "guide-before-S2") + { + RejectSync(() => BeginRewardEnding(actor, true), "active guide before ending"); + } + else + { + RejectSync(() => BindRewardPanel(new object ()), "active guide before reward data"); + } } else { - var actor=new object();Check(BeginRewardDrawing(actor),"actual prepare-draw");using(BeginRewardSegment("strike")){} - Check(BeginRewardEnding(actor,true),"actual ending");using(BeginRewardSegment("ending")){} - Check(BindRewardPanel(new object())!=null,"actual panel binding with before count"); - using(GContext.OnEvent().Subscribe(guideState.TriggerGuideNext)) - using(BeginRewardSegment("reward")){GContext.Publish(new OnEventTriggerGuide("FishingRewardPanel"));RecordRewardGuideNotification();} - Check(rewardAction.GuideNotifications==1 && guideState.curDefine==null && guideState.curGroupDefine==null,"one original guide notification and no activated guide"); + var actor = new object (); + Check(BeginRewardDrawing(actor), "actual prepare-draw"); + using (BeginRewardSegment("strike")) + { + } + + Check(BeginRewardEnding(actor, true), "actual ending"); + using (BeginRewardSegment("ending")) + { + } + + Check(BindRewardPanel(new object ()) != null, "actual panel binding with before count"); + using (GContext.OnEvent().Subscribe(guideState.TriggerGuideNext)) + using (BeginRewardSegment("reward")) + { + GContext.Publish(new OnEventTriggerGuide("FishingRewardPanel")); + RecordRewardGuideNotification(); + } + + Check(rewardAction.GuideNotifications == 1 && guideState.curDefine == null && guideState.curGroupDefine == null, "one original guide notification and no activated guide"); } } - else RejectSync(()=>PrepareFishingReward(fishingAction,data),"full gate rejects "+scenario); - Check(fixture.Sets==0,"preflight case no network or consumed energy: "+scenario); + else + { + RejectSync(() => PrepareFishingReward(fishingAction, data), "full gate rejects " + scenario); + } + + Check(fixture.Sets == 0, "preflight case no network or consumed energy: " + scenario); } - await Start("reward-confirmation-timeout-no-replay");primary=Batch();fixture.HoldSet=true; - pending=ConfirmRewardAsync(rewardAction,primary);await fixture.SetEntered.Task; - await Reject(pending,"actual 30-second timeout");pending=null;fixture.ReleaseSet.TrySetResult(true); - Check(fixture.Sets==1 && !rewardAction.Confirmed && !rewardAction.Presented,"timeout never repeats reward"); - result=JsonConvert.SerializeObject(new{success=true,groups,assertions=checks,passed,formalRequests=0,synthetic=true,folder}); + + await Start("reward-confirmation-timeout-no-replay"); + primary = Batch(); + fixture.HoldSet = true; + _ = KVMgr.SyncKVAsync(rewardAction.Consumption.Owner); // One simulated ordinary timer tick. + pending = ConfirmRewardAsync(rewardAction, primary); + await fixture.SetEntered.Task; + await Reject(pending, "actual 30-second timeout"); + pending = null; + fixture.ReleaseSet.TrySetResult(true); + Check(fixture.Sets == 1 && !rewardAction.Confirmed && !rewardAction.Presented, "timeout never repeats reward"); + result = JsonConvert.SerializeObject(new { success = true, groups, assertions = checks, passed, formalRequests = 0, synthetic = true, folder }); } finally { try { - subscribers?.Dispose();subscribers=null; - LocalizationMgr.enumLanguage=oldLanguages;textTable.SetValue(null,oldTextTable); - player?.StopRecoveryEnergy();if(fixture!=null)await fixture.Close();if(pending!=null){try{await pending;}catch{}} - pfField.SetValue(null,oldPF);if(pfShell!=null)UnityEngine.Object.DestroyImmediate(pfShell); - FishingContextAccess.Use(oldContainer);FishingContextAccess.Events=oldEvents;container?.Dispose(); - (Enabled,Ready,Error,Permit,RunPath,handle,onFault,onClose,collecting,mainThread,failed,mainContext,fishingAction,rewardPlan,rewardAction)=saved; + LocalizationMgr.enumLanguage = oldLanguages; + textTable.SetValue(null, oldTextTable); + player?.StopRecoveryEnergy(); + Exception guideDisposeError = null; + try + { + guideStore?.Dispose(); + } + catch (Exception error) + { + guideDisposeError = error; + } + finally + { + guideStore = null; + } + if (fixture != null) + { + await fixture.Close(); + } + + if (pending != null) + { + try + { + await pending; + } + catch + { + } + } + + FishingContextAccess.Use(oldContainer); + FishingContextAccess.Events = oldEvents; + container?.Dispose(); + (Enabled, Ready, Error, Permit, RunPath, handle, onFault, collecting, mainThread, failed, mainContext, fishingAction, rewardPlan, rewardAction) = saved; + if (guideDisposeError != null) + { + throw guideDisposeError; + } + } + catch + { + validationCleanupFailure = fixture; + throw; } - catch {validationCleanupFailure=fixture;throw;} finally { - AppDomain.CurrentDomain.FirstChanceException-=observeIO; - if(Directory.Exists(folder))File.WriteAllText(Path.Combine(folder,"storage-diagnostics.json"),JsonConvert.SerializeObject(ioDiagnostics.ToArray())); - Interlocked.Exchange(ref validationRunning,0); + AppDomain.CurrentDomain.FirstChanceException -= observeIO; + if (Directory.Exists(folder)) + { + File.WriteAllText(Path.Combine(folder, "storage-diagnostics.json"), JsonConvert.SerializeObject(ioDiagnostics.ToArray())); + } + + Interlocked.Exchange(ref validationRunning, 0); } } - File.WriteAllText(Path.Combine(folder,"result.json"),result);return result; + + File.WriteAllText(Path.Combine(folder, "result.json"), result); + return result; } sealed class RewardSubscribers:IDisposable { const System.Reflection.BindingFlags Fields=System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.NonPublic; - static readonly System.Reflection.FieldInfo PF=typeof(PlayFabMgr).GetField("_instance",System.Reflection.BindingFlags.Static|System.Reflection.BindingFlags.NonPublic); static readonly System.Reflection.FieldInfo Red=typeof(RedPointManager).GetField("instance",System.Reflection.BindingFlags.Static|System.Reflection.BindingFlags.NonPublic); - readonly object oldRed=Red.GetValue(null),oldPF=PF.GetValue(null); - GameObject shell; LuckyTaskData magicTask; MiniBattlePassDataProvider provider; + private readonly object oldRed = Red.GetValue(null); + private LuckyTaskData magicTask; + private MiniBattlePassDataProvider provider; internal BattlePassDataProvider Battle; internal EventLuckyGameModel Lucky; internal EventLuckMagicModel Magic; internal MiniBattlePassDataModel Mini; - internal void Bind(cfg.Tables tables,FishingEventData events,Container container) + internal void Bind(cfg.Tables tables, FishingEventData events, Container container, IPlayerSaveStore store) { Red.SetValue(null,new RedPointManager()); - shell=new GameObject("KV inactive subscriber storage fixture");shell.SetActive(false);shell.hideFlags=HideFlags.HideAndDontSave; - var pf=shell.AddComponent(); - if(!pf.IsUnstartedForKVLoad)throw new InvalidOperationException("No PF lifecycle may start in this fixture."); - PF.SetValue(null,pf); - var store=new PlayFabPlayerSaveStore(pf,CancellationToken.None); container.RegisterInstance(store); container.Resolve().playerSaveStore=store; container.Resolve().playerSaveStore=store; @@ -557,10 +1184,40 @@ namespace game.PlayerDataStorage } public void Dispose() { - Battle?.Dispose();Lucky?.Dispose();magicTask?.Dispose(); - if(Mini!=null)(typeof(MiniBattlePassDataModel).GetField("disposables",Fields).GetValue(Mini) as IDisposable)?.Dispose(); - PF.SetValue(null,oldPF);Red.SetValue(null,oldRed); - if(shell!=null)UnityEngine.Object.DestroyImmediate(shell); + var errors = new List(); + void Release(Action action) + { + try + { + action(); + } + catch (Exception error) + { + errors.Add(error); + } + } + Release(() => Battle?.Dispose()); + Release(() => Lucky?.Dispose()); + Release(() => magicTask?.Dispose()); + Release(() => + { + if (Mini != null) + { + (typeof(MiniBattlePassDataModel).GetField("disposables", Fields).GetValue(Mini) as IDisposable)?.Dispose(); + } + }); + Release(() => Red.SetValue(null, oldRed)); + Release(() => + { + if (!ReferenceEquals(Red.GetValue(null), oldRed)) + { + throw new InvalidOperationException("Subscriber fixture statics did not restore."); + } + }); + if (errors.Count != 0) + { + throw new AggregateException(errors); + } } } static bool ReadRejected() {try{Read("NewPlayerDataDic");return false;}catch(InvalidOperationException){return true;}} diff --git a/Client/Assets/Scripts/Services/UserService.KVFishingValidation.cs b/Client/Assets/Scripts/Services/UserService.KVFishingValidation.cs index ee73bdfec..e3facfd82 100644 --- a/Client/Assets/Scripts/Services/UserService.KVFishingValidation.cs +++ b/Client/Assets/Scripts/Services/UserService.KVFishingValidation.cs @@ -1,4 +1,4 @@ -#if UNITY_EDITOR && !SERVICE_HOST +#if UNITY_EDITOR using System; using System.Collections.Generic; using System.IO; @@ -9,287 +9,691 @@ using asap.core; using GameCore; using Newtonsoft.Json; using UniRx; -using DG.Tweening; using UnityEngine; namespace game.PlayerDataStorage { internal static partial class PlayerKVGameplayLoop { + // Observes the original async-void method; never enables the temporary gameplay path. + internal static async Task VerifyOriginalFishingForEditorAsync() + { + if (UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || GContext.Ready || Resources.FindObjectsOfTypeAll().Length != 0 || PlayFabMgr.HasLiveInstanceForKVLoad || Enabled || handle != null || File.Exists(Path.Combine(Root, "permit.json")) || validationCleanupFailure != null) + { + throw new InvalidOperationException("Idle editor without a real permit required."); + } + if (Interlocked.CompareExchange(ref validationRunning, 1, 0) != 0) + { + throw new InvalidOperationException("Validation running."); + } + + var oldContainer = GContext.container; + var oldEvents = FishingContextAccess.Events; + var oldLanguages = LocalizationMgr.enumLanguage; + var fields = System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic; + var textTable = typeof(LocalizationMgr).GetField("table", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); + var oldTextTable = textTable.GetValue(null); + var folder = Path.Combine(Root, "fishing-original-fixed-runs", DateTime.UtcNow.ToString("yyyyMMddTHHmmss") + "_" + Guid.NewGuid().ToString("N")); + var passed = new List(); + int checks = 0; + void Check(bool value, string message) + { + checks++; + if (!value) + { + throw new InvalidOperationException("Original fishing: " + message); + } + } + try + { + foreach (var scenario in new[] { "ordinary", "retry", "pack-21", "pack-22", "unauthorized", "held-recovery", "below-limit", "subscribers", "cross-limit-boundary" }) + { + var errors = new List(); + var fixture = new EquipmentFixture(Path.Combine(folder, scenario)); + KVPlayerSaveStore store = null; + Container container = null; + PlayerData player = null; + AchievementDataManager achievements = null; + FishingSubscribers subscribers = null; + GameObject shell = null; + IDisposable consumeSubscription = null; + IDisposable playerSubscription = null; + bool invoked = false; + int completionLogs = 0; + int saveFailureLogs = 0; + var completed = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var unexpectedLogs = new List(); + void Log(string condition, string stack, LogType type) + { + const string prefix = "[FishBehaviourB::ConsumeBaitOnPlayfab] "; + if (condition == prefix + "True" || condition == prefix + "False") + { + completionLogs++; + completed.TrySetResult(condition == prefix + "True"); + } + if (scenario == "unauthorized" && type == LogType.Error && condition == "[KVMgr::SyncDataImmidiate] Save failed.") + { + saveFailureLogs++; + } + else if (type == LogType.Exception || type == LogType.Error || type == LogType.Assert) + { + unexpectedLogs.Add(condition + "\n" + stack); + } + } + void Clean(Action action) + { + try + { + action(); + } + catch (Exception ex) + { + errors.Add(ex); + validationCleanupFailure = fixture; + } + } + void ObserveRecovery(Action startRecovery) + { + var awaitAssembly = typeof(IEnumeratorAwaitExtensions).Assembly; + var staticFields = System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic; + var allFields = fields | System.Reflection.BindingFlags.Public; + var syncField = awaitAssembly.GetType("UnityAsyncAwaitUtil.SyncContextUtil", true).GetField("k__BackingField", staticFields); + var runnerField = awaitAssembly.GetType("UnityAsyncAwaitUtil.AsyncCoroutineRunner", true).GetField("_instance", staticFields); + var savedSync = syncField.GetValue(null); + var savedRunner = runnerField.GetValue(null); + var savedCurrent = SynchronizationContext.Current; + var observer = new OriginalFishingTestContext(); + var scheduler = new OriginalFishingTestContext(); + System.Collections.IEnumerator instructionRun = null; + IEnumeratorAwaitExtensions.SimpleCoroutineAwaiter recoveryAwaiter = null; + bool instructionYielded = false; + bool instructionEnded = false; + try + { + SynchronizationContext.SetSynchronizationContext(observer); + syncField.SetValue(null, scheduler); + startRecovery(); + Check(scheduler.Count == 1 && observer.Started == 1 && observer.Completed == 0, "original recovery suspended at one instruction"); + var posted = scheduler.Peek(); + Check(posted.State == null && posted.Callback.Target.GetType().FullName == "IEnumeratorAwaitExtensions+<>c__DisplayClass12_0", "exact original scheduler dispatch"); + var action = (Action)posted.Callback.Target.GetType().GetField("action", allFields).GetValue(posted.Callback.Target); + Check(action.Target.GetType().FullName == "IEnumeratorAwaitExtensions+<>c__DisplayClass10_0" && action.Method.Name == "b__0", "exact original void wait closure"); + recoveryAwaiter = (IEnumeratorAwaitExtensions.SimpleCoroutineAwaiter)action.Target.GetType().GetField("awaiter", allFields).GetValue(action.Target); + var instruction = action.Target.GetType().GetField("instruction", allFields).GetValue(action.Target); + Check(instruction is WaitForSeconds && !recoveryAwaiter.IsCompleted, "actual incomplete seconds awaiter"); + var wrapper = typeof(IEnumeratorAwaitExtensions).GetNestedType("InstructionWrappers", System.Reflection.BindingFlags.NonPublic); + instructionRun = (System.Collections.IEnumerator)wrapper.GetMethod("ReturnVoid", staticFields | System.Reflection.BindingFlags.Public).Invoke(null, new[] { (object)recoveryAwaiter, instruction }); + scheduler.Take(); + instructionYielded = instructionRun.MoveNext(); + Check(instructionYielded && ReferenceEquals(instructionRun.Current, instruction), "library iterator yielded original instruction"); + player.StopRecoveryEnergy(); + SynchronizationContext.SetSynchronizationContext(scheduler); + instructionEnded = !instructionRun.MoveNext(); + Check(instructionEnded && recoveryAwaiter.IsCompleted && observer.Completed == 1, "manual-await-boundary exits original async void"); + } + finally + { + Clean(() => player.StopRecoveryEnergy()); + Clean(() => + { + SynchronizationContext.SetSynchronizationContext(scheduler); + if (instructionRun != null && !instructionEnded) + { + if (!instructionYielded) + { + instructionYielded = instructionRun.MoveNext(); + } + instructionEnded = !instructionRun.MoveNext(); + } + }); + Clean(() => + { + SynchronizationContext.SetSynchronizationContext(observer); + while (observer.Count != 0) + { + var posted = observer.Take(); + Clean(() => posted.Callback(posted.State)); + } + }); + Clean(() => Check(observer.Started == 1 && observer.Completed == 1 && observer.Count == 0 && scheduler.Count == 0 && instructionEnded && recoveryAwaiter != null && recoveryAwaiter.IsCompleted, "recovery state machine and queues drained")); + Clean(() => Check(ReferenceEquals(runnerField.GetValue(null), savedRunner), "no coroutine runner created or replaced")); + Clean(() => syncField.SetValue(null, savedSync)); + Clean(() => SynchronizationContext.SetSynchronizationContext(savedCurrent)); + } + } + Application.logMessageReceived += Log; + try + { + var owner = await fixture.Open(); + store = new KVPlayerSaveStore(); + store.Bind(owner, CancellationToken.None); + var tables = new cfg.Tables(n => SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath, "../../cfgData", n + ".json"))))); + Check(tables.TbEnergyDef.DataList.Count > 4 && tables.TbEnergyDef.DataList[4].Mag == 10 && tables.TbEnergyDef.DataList[4].RetryCost == 5, "distinct real normal/retry costs"); + container = new Container(); + FishingContextAccess.Use(container); + FishingContextAccess.Events = new EventAggregator(); + container.RegisterInstance(tables); + container.RegisterInstance(store); + player = new PlayerData(tables, null); + var small = new SmallGameData(tables, null, null); + var fish = new PlayerFishData(tables, null); + achievements = new AchievementDataManager(tables); + var events = new FishingEventData(tables); + container.RegisterInstance(player); + container.RegisterInstance(small); + container.RegisterInstance(fish); + container.RegisterInstance(achievements); + container.RegisterInstance(new FishingBoxData()); + container.RegisterInstance(events); + container.RegisterInstance(new FishingNotifications()); + player.playerSaveStore = store; + fish.playerSaveStore = store; + small.playerSaveStore = store; + events.playerSaveStore = store; + achievements.Init(); + LocalizationMgr.enumLanguage = tables.TbLanguageConfig.DataList.Select(x => x.ID).ToList(); + textTable.SetValue(null, null); + int initialEnergy = scenario == "cross-limit-boundary" ? 300 : scenario == "held-recovery" || scenario == "below-limit" ? 250 : 400; + int rod = tables.TbRodData.DataMap.Keys.First(); + int map = tables.TbMapData.DataMap.Keys.First(); + Module02OriginalLoadTests.LoadCore(player, new object[] { 1, 10UL, 0, initialEnergy, 5, 4, rod, new DateTime(2026, 1, 1), 0, 7, 10UL, 2, map, map, 0, 0, 0, 0, 0 }); + typeof(PlayerData).GetProperty("benefitsEnergyLimit").SetValue(player, 300); + typeof(PlayerData).GetProperty("benefitsEnergyRecover").SetValue(player, 1); + if (scenario == "subscribers") + { + subscribers = new FishingSubscribers(); + subscribers.Bind(tables, events, container); + Check(!tables.TbFishingEvent.DataList.Any(e => e.ConditionList.Any(c => c.Condition == cfg.ConditionType.ConsumeEnergy)) && !tables.TbTriggerPackManager.DataList.Any(t => t.Condition == cfg.ConditionType.ConsumeEnergy), "real configuration excludes additional async event and pack activation"); + } + player.SavePlayerData(false); + int subtype = scenario == "pack-21" ? 21 : scenario == "pack-22" ? 22 : 1; + var item = tables.TbItem.DataList.FirstOrDefault(x => x.SubType == subtype); + Check(item != null, "real item subtype " + subtype); + var data = new FishingData { fishItem = item, IsRetry = scenario == "retry" }; + int cost = scenario == "retry" ? 5 : 10; + int energyRM = player.GetEnergyRM(); + var expected = new Dictionary(player.PlayerDataDic); + expected["energy"] = (initialEnergy - cost).ToString(); + string expectedJson = JsonConvert.SerializeObject(expected); + var order = new List(); + int consumed = 0; + playerSubscription = GContext.OnEvent().Subscribe(_ => order.Add("player")); + consumeSubscription = GContext.OnEvent().Subscribe(e => + { + if (e.type == cfg.ConditionType.ConsumeEnergy) + { + Check(player.Energy == initialEnergy - cost, "event observes deducted energy"); + order.Add("consume"); + consumed += e.count; + store.Write("k", "event-" + e.count).RequireAccepted(); + } + }); + if (scenario == "cross-limit-boundary") + { + ObserveRecovery(() => player.ReduceEnergy(cost, false)); + Check(player.Energy == 290 && player.GetEnergyRM() == energyRM + cost, "original crossing deducts once"); + Check(order.SequenceEqual(new[] { "player", "player" }) && consumed == 0, "crossing publishes twice without inventing consume event"); + var crossingData = new Dictionary(player.PlayerDataDic); + Check(crossingData["newData"].Split(',')[3] == "290" && DateTime.Parse(crossingData["newData"].Split(',')[7]) > new DateTime(2026, 1, 1) && !crossingData.ContainsKey("energy"), "original crossing save has updated time and energy"); + Check(fixture.Sets == 0 && fixture.Remote["NewPlayerDataDic"] == "original-save", "crossing uses ordinary save without immediate network"); + var flushed = await KVMgr.SyncKVAsync(owner); + Check(flushed.TransportError == PlayerKVError.None && flushed.Blocked == 0 && flushed.Unknown == 0 && fixture.Sets == 1 && fixture.Auth == 1, "crossing ordinary save succeeds once"); + Check(fixture.Remote["NewPlayerDataDic"] == JsonConvert.SerializeObject(crossingData), "crossing exact original serialized snapshot"); + var reloaded = new PlayerData(tables, null); + Module02OriginalLoadTests.LoadCore(reloaded, JsonConvert.DeserializeObject>(fixture.Remote["NewPlayerDataDic"])); + Check(reloaded.Energy == player.Energy && reloaded.equipRodID == player.equipRodID && (ulong)reloaded.gold == (ulong)player.gold, "crossing original parser retains energy rod and gold"); + } + else + { + shell = new GameObject("KV original consumption fixed fixture"); + shell.SetActive(false); + shell.hideFlags = HideFlags.HideAndDontSave; + var behavior = shell.AddComponent(); + typeof(FishingBehaviorB).GetField("_tables", fields).SetValue(behavior, tables); + typeof(FishingBehaviorB).GetField("fishingData", fields).SetValue(behavior, data); + typeof(FishingBehaviorB).GetField("saveStore", fields).SetValue(behavior, store); + Dictionary subscriberWrites = null; + fixture.Unauthorized = scenario == "unauthorized"; + fixture.HoldSet = scenario == "held-recovery"; + invoked = true; + typeof(FishingBehaviorB).GetMethod("ConsumeBaitOnPlayfab", fields).Invoke(behavior, null); + Check(player.Energy == initialEnergy - cost && player.GetEnergyRM() == energyRM + cost, "one original local deduction"); + Check(consumed == (subtype == 1 ? cost : 0), "original pack exclusion"); + Check(order.SequenceEqual(subtype == 1 ? new[] { "player", "consume" } : new[] { "player" }), "publish before event"); + if (subscribers != null) + { + Check(subscribers.Battle.Data.BattleTask.dic_dailyTasks.Values.Single() == cost && subscribers.Lucky.DicTasks.Values.Single() == cost && subscribers.Magic.DicTasks.Values.Single() == cost && subscribers.Mini.Data.Exp == cost, "four actual subscribers process one original consume event"); + Check(achievements.GetAchievementDatas(cfg.ConditionType.ConsumeEnergy) == (ulong)cost, "actual achievement receives original event"); + subscriberWrites = new[] { "BattlePassRecordTask", "MiniBPKeyNew", "EventLuckGameRecord", "EventLuckMagicPlayfabData" }.ToDictionary(key => key, key => store.Read(key).Value); + Check(subscriberWrites.Values.All(value => !string.IsNullOrEmpty(value)) && subscriberWrites.Keys.All(key => !fixture.Remote.ContainsKey(key)), "actual task payloads wait for ordinary save timing"); + } + if (fixture.HoldSet) + { + Check(await Task.WhenAny(fixture.SetEntered.Task, Task.Delay(5000)) == fixture.SetEntered.Task, "held request entered"); + Check(!completed.Task.IsCompleted && completionLogs == 0, "async void returned while actual request pending"); + ObserveRecovery(() => player.CoRecoveryEnergy(tables.TbGlobalConfig.InitEnergyRestorationSpeed * 60)); + Check(player.Energy == initialEnergy - cost + 1, "real recovery proceeds during request"); + fixture.ReleaseSet.TrySetResult(true); + } + Check(await Task.WhenAny(completed.Task, Task.Delay(5000)) == completed.Task, "actual completion log observed"); + Check(await completed.Task == !fixture.Unauthorized && completionLogs == 1, "original success/false result"); + Check(saveFailureLogs == (fixture.Unauthorized ? 1 : 0), "expected 401 save error is observed exactly once"); + Check(fixture.Sets == 1 && fixture.Auth == 1, "one immediate attempt and no reauthentication"); + Check(fixture.Remote["k"] == "original", "ordinary event key not sent by immediate write"); + if (fixture.Unauthorized) + { + Check(fixture.Remote["NewPlayerDataDic"] == "original-save", "401 did not commit snapshot"); + } + else + { + Check(fixture.Remote["NewPlayerDataDic"] == expectedJson, "original exact pre-event snapshot plus energy"); + Check(expected["newData"].Split(',')[3] == initialEnergy.ToString(), "copied newData retains original value"); + if (subscribers != null) + { + var originalSnapshot = new PlayerData(tables, null); + Module02OriginalLoadTests.LoadCore(originalSnapshot, JsonConvert.DeserializeObject>(fixture.Remote["NewPlayerDataDic"])); + Check(originalSnapshot.Energy == initialEnergy && originalSnapshot.equipRodID == player.equipRodID && (ulong)originalSnapshot.gold == (ulong)player.gold, "original parser reads pre-event snapshot values without canonical rewrite"); + } + var flush = await KVMgr.SyncKVAsync(owner); + Check(flush.TransportError == PlayerKVError.None && flush.Blocked == 0 && flush.Unknown == 0 && fixture.Remote["k"] == (subtype == 1 ? "event-" + cost : "original"), "subsequent ordinary event write"); + if (subscriberWrites != null) + { + Check(subscriberWrites.All(pair => fixture.Remote.TryGetValue(pair.Key, out var value) && value == pair.Value), "ordinary tick persists exact actual task payloads"); + Check(fixture.Remote["NewPlayerDataDic"] == expectedJson, "task ordinary save does not rewrite original immediate snapshot"); + } + if (fixture.HoldSet) + { + var recovered = JsonConvert.DeserializeObject>(fixture.Remote["NewPlayerDataDic"]); + Check(recovered["newData"].Split(',')[3] == (initialEnergy - cost + 1).ToString() && !recovered.ContainsKey("energy"), "later recovery saved separately"); + } + } + } + Check(!Enabled && !Ready && handle == null, "no temporary gameplay activation"); + } + catch (Exception ex) + { + errors.Add(ex); + } + finally + { + fixture.ReleaseSet.TrySetResult(true); + if (invoked && await Task.WhenAny(completed.Task, Task.Delay(5000)) != completed.Task) + { + errors.Add(new InvalidOperationException("Original async void did not drain: " + scenario)); + validationCleanupFailure = fixture; + } + Clean(() => player?.StopRecoveryEnergy()); + Clean(() => consumeSubscription?.Dispose()); + Clean(() => playerSubscription?.Dispose()); + Clean(() => subscribers?.Dispose()); + Clean(() => achievements?.Dispose()); + Clean(() => store?.Dispose()); + try + { + await fixture.Close(); + } + catch (Exception ex) + { + errors.Add(ex); + validationCleanupFailure = fixture; + } + Clean(() => + { + if (shell != null) + { + UnityEngine.Object.DestroyImmediate(shell); + } + }); + Clean(() => container?.Dispose()); + FishingContextAccess.Use(oldContainer); + FishingContextAccess.Events = oldEvents; + Application.logMessageReceived -= Log; + if (unexpectedLogs.Count != 0) + { + errors.Add(new InvalidOperationException(string.Join("\n", unexpectedLogs))); + } + } + if (errors.Count != 0) + { + Directory.CreateDirectory(folder); + File.WriteAllText(Path.Combine(folder, "failure.json"), JsonConvert.SerializeObject(new { scenario, errors = errors.Select(x => x.ToString()), formalRequests = 0 })); + throw new AggregateException(errors); + } + passed.Add(scenario); + } + } + finally + { + FishingContextAccess.Use(oldContainer); + FishingContextAccess.Events = oldEvents; + LocalizationMgr.enumLanguage = oldLanguages; + try + { + textTable.SetValue(null, oldTextTable); + } + finally + { + Interlocked.Exchange(ref validationRunning, 0); + } + } + string result = JsonConvert.SerializeObject(new { success = true, groups = passed.Count, assertions = checks, passed, recoveryTiming = "manual-await-boundary", formalRequests = 0, synthetic = true, restored = true, folder }); + Directory.CreateDirectory(folder); + File.WriteAllText(Path.Combine(folder, "result.json"), result); + return result; + } + + private sealed class OriginalFishingTestContext : SynchronizationContext + { + private readonly Queue<(SendOrPostCallback Callback, object State)> posts = new Queue<(SendOrPostCallback, object)>(); + private int started; + private int completed; + + internal int Count => posts.Count; + internal int Started => started; + internal int Completed => completed; + + public override void Post(SendOrPostCallback callback, object state) + { + posts.Enqueue((callback, state)); + } + + public override void OperationStarted() + { + started++; + } + + public override void OperationCompleted() + { + completed++; + } + + internal (SendOrPostCallback Callback, object State) Peek() + { + return posts.Peek(); + } + + internal (SendOrPostCallback Callback, object State) Take() + { + return posts.Dequeue(); + } + } + // Only a fixed idle-editor test; the handler inherited from EquipmentFixture never forwards requests. internal static async Task VerifyFishingForEditorAsync() { - if(UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || GContext.Ready || - Resources.FindObjectsOfTypeAll().Length!=0 || PlayFabMgr.HasLiveInstanceForKVLoad || - Enabled || handle!=null || File.Exists(Path.Combine(Root,"permit.json")) || validationCleanupFailure!=null) + if (UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || GContext.Ready || Resources.FindObjectsOfTypeAll().Length != 0 || PlayFabMgr.HasLiveInstanceForKVLoad || Enabled || handle != null || File.Exists(Path.Combine(Root, "permit.json")) || validationCleanupFailure != null) + { throw new InvalidOperationException("Idle editor without a real permit required."); - if(Interlocked.CompareExchange(ref validationRunning,1,0)!=0) throw new InvalidOperationException("Validation running."); - var saved=(Enabled,Ready,Error,Permit,RunPath,handle,onFault,onClose,collecting,mainThread,failed,mainContext,fishingAction); - var oldContainer=GContext.container; var oldEvents=FishingContextAccess.Events; - var folder=Path.Combine(Root,"fishing-fixed-runs",DateTime.UtcNow.ToString("yyyyMMddTHHmmss")+"_"+Guid.NewGuid().ToString("N")); - EquipmentFixture fixture=null; Task pending=null; Container container=null; PlayerData player=null; IDisposable subscription=null; - var oldLanguages=LocalizationMgr.enumLanguage; - var textTable=typeof(LocalizationMgr).GetField("table",System.Reflection.BindingFlags.Static|System.Reflection.BindingFlags.NonPublic); - var oldTextTable=textTable.GetValue(null); - GameObject saveShell=null; - var pfField=typeof(PlayFabMgr).GetField("_instance",System.Reflection.BindingFlags.Static|System.Reflection.BindingFlags.NonPublic); - var oldPF=pfField.GetValue(null); - FishingSubscribers subscribers=null; - int checks=0,groups=0; var passed=new List(); string result=null; - void Check(bool yes,string reason) { checks++; if(!yes) throw new InvalidOperationException("Fishing validation: "+reason); } + } + + if (Interlocked.CompareExchange(ref validationRunning, 1, 0) != 0) + { + throw new InvalidOperationException("Validation running."); + } + + var saved = (Enabled, Ready, Error, Permit, RunPath, handle, onFault, collecting, mainThread, failed, mainContext, fishingAction); + var folder = Path.Combine(Root, "fishing-fixed-runs", DateTime.UtcNow.ToString("yyyyMMddTHHmmss") + "_" + Guid.NewGuid().ToString("N")); + EquipmentFixture fixture = null; + Task pending = null; + int checks = 0, groups = 0; + var passed = new List(); + string result = null; + void Check(bool yes, string reason) + { + checks++; + if (!yes) + { + throw new InvalidOperationException("Fishing validation: " + reason); + } + } + async Task Start(string name) { - subscribers?.Dispose(); subscribers=null; - player?.StopRecoveryEnergy(); player=null; subscription?.Dispose(); subscription=null; - if(fixture!=null) await fixture.Close(); - if(pending!=null) { try { await pending; } catch { } pending=null; } - pfField.SetValue(null,oldPF);if(saveShell!=null)UnityEngine.Object.DestroyImmediate(saveShell);saveShell=null; - FishingContextAccess.Use(oldContainer); FishingContextAccess.Events=oldEvents; container?.Dispose(); container=null; - fixture=new EquipmentFixture(Path.Combine(folder,(++groups).ToString())); - var owner=await fixture.Open(); - Enabled=true; Ready=false; Error=null; failed=0; handle=null; collecting=null; fishingAction=null; - Permit=new PlayerKVLoopPermit{Version=2,Operation="fishing-consume-once",PlayerId="101",AllowedKeys=new[]{"k","NewPlayerDataDic","late"}}; - RunPath=folder; mainThread=Thread.CurrentThread.ManagedThreadId; mainContext=SynchronizationContext.Current; - Attach(_=>fixture.Faults++,fixture.Close); Publish(owner); + if (fixture != null) + { + await fixture.Close(); + } + + if (pending != null) + { + try + { + await pending; + } + catch + { + } + + pending = null; + } + + + fixture = new EquipmentFixture(Path.Combine(folder, (++groups).ToString())); + var owner = await fixture.Open(); + Enabled = true; + Ready = false; + Error = null; + failed = 0; + handle = null; + collecting = null; + fishingAction = null; + Permit = new PlayerKVLoopPermit + { + Version = 2, + Operation = "fishing-consume-once", + PlayerId = "101", + AllowedKeys = new[] + { + "k", + "NewPlayerDataDic", + "late" + } + }; + RunPath = folder; + mainThread = Thread.CurrentThread.ManagedThreadId; + mainContext = SynchronizationContext.Current; + Attach(_ => fixture.Faults++); + Publish(owner); passed.Add(name); } - (FishingAction action,WriteBatch batch,PlayerKVEditResult primary) Batch(bool duplicates=false) + + (FishingAction action, WriteBatch batch, PlayerKVEditResult primary) Batch(bool duplicates = false) { - var action=BeginFishing(new object()); Check(ClaimFishingConsumption(action),"first consume admitted"); - var batch=BeginFishingWrites(action); - if(duplicates) { Write("NewPlayerDataDic","intermediate-local",false); Write("NewPlayerDataDic","intermediate-remote",true); } - Write("k","task",true); var primary=Write("NewPlayerDataDic","final",true); batch.Dispose(); - return(action,batch,primary); + var action = BeginFishing(new object ()); + Check(ClaimFishingConsumption(action), "first consume admitted"); + var batch = BeginFishingWrites(action); + if (duplicates) + { + Write("NewPlayerDataDic", "intermediate-local", false); + Write("NewPlayerDataDic", "intermediate-remote", true); + } + + Write("k", "task", true); + var primary = Write("NewPlayerDataDic", "final", true); + batch.Dispose(); + return (action, batch, primary); } - async Task Reject(Task task,string label) + + async Task Reject(Task task, string label) { - bool rejected=false; try { await task; } catch(InvalidOperationException) { rejected=true; } - Check(rejected && !Ready && fixture.Faults==1,label); + bool rejected = false; + try + { + await task; + } + catch (InvalidOperationException) + { + rejected = true; + } + + Check(rejected && !Ready && fixture.Faults == 1, label); } + try { Directory.CreateDirectory(folder); await Start("duplicate-state-writes-and-original-final-tickets"); - var b=Batch(true); Check(b.batch.Records.Count==4 && !b.batch.Records[0].Remote && b.batch.Records[0].Edit.Ticket==null,"local intermediate captured"); - await ConfirmFishingAsync(b.action,b.batch,b.primary); - Check(fixture.Remote["NewPlayerDataDic"]=="final" && fixture.Remote["k"]=="task","both final values persisted"); - int continued=0; ContinueFishing(b.action,()=>continued++); ContinueFishing(b.action,()=>continued++); - Check(continued==1 && !ClaimFishingConsumption(b.action) && BeginFishing(new object())==null,"continue and consume/cast only once"); - - await Start("pending-response-does-not-continue"); b=Batch(); fixture.HoldSet=true; - pending=ConfirmFishingAsync(b.action,b.batch,b.primary); - Check(ReferenceEquals(await Task.WhenAny(fixture.SetEntered.Task,pending,Task.Delay(5000)),fixture.SetEntered.Task),"Set entered"); - Check(!b.action.Confirmed && !b.action.Continued,"no continuation during pending response"); - fixture.ReleaseSet.TrySetResult(true); await pending; pending=null; - Check(b.action.Confirmed,"original response confirms"); - - await Start("final-localOnly-rejected-before-flush"); b=Batch(); + var b = Batch(true); + Check(b.batch.Records.Count == 4 && !b.batch.Records[0].Remote && b.batch.Records[0].Edit.Ticket == null, "local intermediate captured"); + _ = KVMgr.SyncKVAsync(b.batch.Owner); // One simulated ordinary timer tick. + await ConfirmFishingAsync(b.action, b.batch, b.primary); + Check(fixture.Remote["NewPlayerDataDic"] == "final" && fixture.Remote["k"] == "task", "both final values persisted"); + int continued = 0; + ContinueFishing(b.action, () => continued++); + ContinueFishing(b.action, () => continued++); + Check(continued == 1 && !ClaimFishingConsumption(b.action) && BeginFishing(new object ()) == null, "continue and consume/cast only once"); + await Start("pending-response-does-not-continue"); + b = Batch(); + fixture.HoldSet = true; + _ = KVMgr.SyncKVAsync(b.batch.Owner); // One simulated ordinary timer tick. + pending = ConfirmFishingAsync(b.action, b.batch, b.primary); + Check(ReferenceEquals(await Task.WhenAny(fixture.SetEntered.Task, pending, Task.Delay(5000)), fixture.SetEntered.Task), "Set entered"); + Check(!b.action.Confirmed && !b.action.Continued, "no continuation during pending response"); + fixture.ReleaseSet.TrySetResult(true); + await pending; + pending = null; + Check(b.action.Confirmed, "original response confirms"); + await Start("final-localOnly-rejected-before-flush"); + b = Batch(); // A sealed record ledger from actual writes with a localOnly final key. - collecting=b.batch; Write("k","local-tail",false); b.batch.Dispose(); - await Reject(ConfirmFishingAsync(b.action,b.batch,b.primary),"local final cannot report remote success"); Check(fixture.Sets==0,"no flush of rejected batch"); - - await Start("external-final-supersession"); b=Batch(); Write("NewPlayerDataDic","later-action",true); - await Reject(ConfirmFishingAsync(b.action,b.batch,b.primary),"never substitute later ticket"); - - await Start("lost-response-after-commit"); b=Batch(); fixture.LoseResponse=true; - await Reject(ConfirmFishingAsync(b.action,b.batch,b.primary),"Unknown stops run"); - Check(fixture.Sets==1 && fixture.Remote["NewPlayerDataDic"]=="final","one uncertain commit, no replay"); - - await Start("unauthorized-does-not-reauthenticate"); b=Batch(); fixture.Unauthorized=true; - await Reject(ConfirmFishingAsync(b.action,b.batch,b.primary),"401 stops run"); Check(fixture.Auth==1 && fixture.Sets==1,"single auth and Set"); - - await Start("cancelled-object-does-not-continue-after-commit"); b=Batch(); fixture.HoldSet=true; - pending=ConfirmFishingAsync(b.action,b.batch,b.primary); await fixture.SetEntered.Task; - CancelFishing(b.action,"synthetic disable"); fixture.ReleaseSet.TrySetResult(true); - await Reject(pending,"disabled original action cannot continue"); pending=null; - Check(!b.action.Continued && b.action.Cancelled,"no stale continuation"); - - await Start("close-before-confirmation"); b=Batch(); await fixture.Close(); - await Reject(ConfirmFishingAsync(b.action,b.batch,b.primary),"closed owner rejected"); Check(fixture.Sets==0,"close does not invent flush"); - - await Start("partial-commit-is-not-atomic-success"); b=Batch(); fixture.PartialCommit=true; fixture.LoseResponse=true; - await Reject(ConfirmFishingAsync(b.action,b.batch,b.primary),"partial unknown stops run"); - Check(fixture.Sets==1 && fixture.Remote["k"]=="task" && fixture.Remote["NewPlayerDataDic"]=="original-save","partial commit retained without compensation"); - + collecting = b.batch; + Write("k", "local-tail", false); + b.batch.Dispose(); + await Reject(ConfirmFishingAsync(b.action, b.batch, b.primary), "local final cannot report remote success"); + Check(fixture.Sets == 0, "no flush of rejected batch"); + await Start("external-final-supersession"); + b = Batch(); + Write("NewPlayerDataDic", "later-action", true); + _ = KVMgr.SyncKVAsync(b.batch.Owner); // One simulated ordinary timer tick. + await Reject(ConfirmFishingAsync(b.action, b.batch, b.primary), "never substitute later ticket"); + await Start("lost-response-after-commit"); + b = Batch(); + fixture.LoseResponse = true; + _ = KVMgr.SyncKVAsync(b.batch.Owner); // One simulated ordinary timer tick. + await Reject(ConfirmFishingAsync(b.action, b.batch, b.primary), "Unknown stops run"); + Check(fixture.Sets == 1 && fixture.Remote["NewPlayerDataDic"] == "final", "one uncertain commit, no replay"); + await Start("unauthorized-does-not-reauthenticate"); + b = Batch(); + fixture.Unauthorized = true; + _ = KVMgr.SyncKVAsync(b.batch.Owner); // One simulated ordinary timer tick. + await Reject(ConfirmFishingAsync(b.action, b.batch, b.primary), "401 stops run"); + Check(fixture.Auth == 1 && fixture.Sets == 1, "single auth and Set"); + await Start("cancelled-object-does-not-continue-after-commit"); + b = Batch(); + fixture.HoldSet = true; + _ = KVMgr.SyncKVAsync(b.batch.Owner); // One simulated ordinary timer tick. + pending = ConfirmFishingAsync(b.action, b.batch, b.primary); + await fixture.SetEntered.Task; + CancelFishing(b.action, "synthetic disable"); + fixture.ReleaseSet.TrySetResult(true); + await Reject(pending, "disabled original action cannot continue"); + pending = null; + Check(!b.action.Continued && b.action.Cancelled, "no stale continuation"); + await Start("close-before-confirmation"); + b = Batch(); + await fixture.Close(); + await Reject(ConfirmFishingAsync(b.action, b.batch, b.primary), "closed owner rejected"); + Check(fixture.Sets == 0, "close does not invent flush"); + await Start("partial-commit-is-not-atomic-success"); + b = Batch(); + fixture.PartialCommit = true; + fixture.LoseResponse = true; + _ = KVMgr.SyncKVAsync(b.batch.Owner); // One simulated ordinary timer tick. + await Reject(ConfirmFishingAsync(b.action, b.batch, b.primary), "partial unknown stops run"); + Check(fixture.Sets == 1 && fixture.Remote["k"] == "task" && fixture.Remote["NewPlayerDataDic"] == "original-save", "partial commit retained without compensation"); await Start("storage-error-before-send"); - var stateFile=Directory.GetFiles(Path.Combine(folder,groups.ToString()),"state.json",SearchOption.AllDirectories).Single(); - using(var locked=new FileStream(stateFile,FileMode.Open,FileAccess.Read,FileShare.None)) + var stateFile = Directory.GetFiles(Path.Combine(folder, groups.ToString()), "state.json", SearchOption.AllDirectories).Single(); + using (var locked = new FileStream(stateFile, FileMode.Open, FileAccess.Read, FileShare.None)) { - bool storage=false; try { Write("NewPlayerDataDic","locked",true); } catch(InvalidOperationException e) { storage=e.Message.Contains("StorageError"); } - Check(storage && !Ready && fixture.Faults==1 && fixture.Sets==0,"storage failure cannot be accepted or retried"); - } - - foreach(bool complete in new[]{false,true}) - { - await Start(complete?"actual-tween-autoKill-after-complete":"actual-tween-kill-before-complete"); - var shell=new GameObject("KV inactive fishing tween fixture"); shell.SetActive(false); shell.hideFlags=HideFlags.HideAndDontSave; - Tween tween=null; - // DOTween.Init deliberately does nothing in EditMode; Kill otherwise returns - // before reaching the real tween engine. Scope this fixed fixture gate to this - // synchronous block and restore it even when an assertion fails. - var initialized=typeof(DOTween).GetField("initialized",System.Reflection.BindingFlags.Static|System.Reflection.BindingFlags.NonPublic|System.Reflection.BindingFlags.Public); - var wasInitialized=initialized.GetValue(null); + bool storage = false; try { - initialized.SetValue(null,true); - var behavior=shell.AddComponent(); - var action=BeginFishing(behavior); - typeof(FishingBehaviorB).GetField("kvFishingAction",System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.NonPublic).SetValue(behavior,action); - float value=0; tween=DOTween.To(()=>value,v=>value=v,1,100).SetAutoKill(true).SetUpdate(UpdateType.Manual); - typeof(FishingBehaviorB).GetMethod("TrackKVCastTween",System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.NonPublic).Invoke(behavior,new object[]{tween}); - Check(tween.onKill!=null && tween.onComplete!=null,"actual callbacks installed"); - if(complete) tween.Complete(); else tween.Kill(false); - Check(action.Cancelled!=complete && !action.Continued,"actual Tween Kill boundary complete="+complete+" cancelled="+action.Cancelled+" enabled="+Enabled+" active="+tween.IsActive()); - Check(fixture.Faults==(complete?0:1) && fixture.Sets==0,"autoKill is not a cancellation"); + Write("NewPlayerDataDic", "locked", true); } - finally + catch (InvalidOperationException e) { - try { tween?.Kill(false); UnityEngine.Object.DestroyImmediate(shell); } - finally { initialized.SetValue(null,wasInitialized); } + storage = e.Message.Contains("StorageError"); } + + Check(storage && !Ready && fixture.Faults == 1 && fixture.Sets == 0, "storage failure cannot be accepted or retried"); } - - await Start("completed-action-normal-disable-is-not-failure"); - var completedShell=new GameObject("KV completed disable fixture");completedShell.SetActive(false);completedShell.hideFlags=HideFlags.HideAndDontSave; + + await Start("observation-timeout-does-not-replay"); + b = Batch(); + fixture.HoldSet = true; + _ = KVMgr.SyncKVAsync(b.batch.Owner); // One simulated ordinary timer tick. + pending = ConfirmFishingAsync(b.action, b.batch, b.primary); + await Reject(pending, "30 second observer deadline stops continuation"); + pending = null; + Check(fixture.Sets == 1 && !b.action.Continued, "timeout leaves one admitted write"); + fixture.ReleaseSet.TrySetResult(true); + await Start("equipment-permit-cannot-cast"); + Permit.Version = 1; + Permit.Operation = null; + bool denied = false; try { - var behavior=completedShell.AddComponent(); - var action=BeginFishing(behavior);Check(ClaimFishingConsumption(action),"completed action admitted"); - var batch=BeginFishingWrites(action);var primary=Write("NewPlayerDataDic","completed",true);batch.Dispose(); - await ConfirmFishingAsync(action,batch,primary);ContinueFishing(action,()=>{}); - typeof(FishingBehaviorB).GetField("kvFishingAction",System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.NonPublic).SetValue(behavior,action); - typeof(FishingBehaviorB).GetMethod("OnDisable",System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.NonPublic).Invoke(behavior,null); - Check(action.Cancelled && action.Continued && Ready && fixture.Faults==0,"normal disable after completed consumption must not Fault"); - Check(!FishingCurrent(action) && BeginFishing(behavior)==null,"normal disable still revokes callbacks and never restores quota"); + BeginFishing(new object ()); } - finally { UnityEngine.Object.DestroyImmediate(completedShell); } - - await Start("observation-timeout-does-not-replay"); b=Batch(); fixture.HoldSet=true; - pending=ConfirmFishingAsync(b.action,b.batch,b.primary); - await Reject(pending,"30 second observer deadline stops continuation"); pending=null; - Check(fixture.Sets==1 && !b.action.Continued,"timeout leaves one admitted write"); - fixture.ReleaseSet.TrySetResult(true); - - await Start("equipment-permit-cannot-cast"); Permit.Version=1; Permit.Operation=null; - bool denied=false; try { BeginFishing(new object()); } catch(InvalidOperationException) { denied=true; } - Check(denied && fixture.Sets==0,"old permit cannot consume"); - - foreach(var scenario in new[]{"above-limit","cross-limit","below-limit","recovery-during-pending"}) + catch (InvalidOperationException) { - await Start("actual-PlayerData-"+scenario); - int initialEnergy=scenario=="above-limit"?400:scenario=="cross-limit"?300:250; - var tables=new cfg.Tables(n=>SimpleJSON.JSON.Parse(File.ReadAllText(Path.GetFullPath(Path.Combine(Application.dataPath,"../../cfgData",n+".json"))))); - container=new Container(); FishingContextAccess.Use(container); FishingContextAccess.Events=new EventAggregator(); - container.RegisterInstance(tables); - saveShell=new GameObject("KV inactive consumption storage fixture");saveShell.SetActive(false);saveShell.hideFlags=HideFlags.HideAndDontSave; - var pf=saveShell.AddComponent();Check(pf.IsUnstartedForKVLoad,"consumption fixture never starts PF lifecycle");pfField.SetValue(null,pf); - var store=new PlayFabPlayerSaveStore(pf,CancellationToken.None); - container.RegisterInstance(store); - LocalizationMgr.enumLanguage=tables.TbLanguageConfig.DataList.Select(x=>x.ID).ToList(); - textTable.SetValue(null,null); - player=new PlayerData(tables,null); var small=new SmallGameData(tables,null,null); var fish=new PlayerFishData(tables,null); - var achievements=new AchievementDataManager(tables); var box=new FishingBoxData(); var events=new FishingEventData(tables); - container.RegisterInstance(player); container.RegisterInstance(small); container.RegisterInstance(fish); - container.RegisterInstance(achievements); container.RegisterInstance(box); container.RegisterInstance(events); - player.playerSaveStore=store;fish.playerSaveStore=store;small.playerSaveStore=store;events.playerSaveStore=store; - container.RegisterInstance(new FishingNotifications()); - fish.ResetForKVLoad(); small.ResetForKVLoad(); achievements.ResetForKVLoad(); box.ResetForKVLoad(); - achievements.Init(); - int rod=tables.TbRodData.DataMap.Keys.First(),map=tables.TbMapData.DataMap.Keys.First(); - var core=new PlayerKVCoreState(new object[]{1,10UL,0,initialEnergy,5,0,rod,new DateTime(2026,1,1),0,7,10UL,2,map,map,0,0,0,0,0}); - player.ReplaceFromKVDecoded(new PlayerKVPlayerState(core,new Dictionary(),new Dictionary{{-1,1}},new List(),0,false,"0")); - // Fixed backing property only, no caller-controlled reflection or gameplay registration. - typeof(PlayerData).GetProperty("benefitsEnergyLimit").SetValue(player,300); - typeof(PlayerData).GetProperty("benefitsEnergyRecover").SetValue(player,1); - if(scenario=="above-limit") - { - Permit.AllowedKeys=Permit.AllowedKeys.Concat(new[]{"BattlePassRecordTask","MiniBPKeyNew","EventLuckGameRecord","EventLuckMagicPlayfabData"}).ToArray(); - subscribers=new FishingSubscribers(); - subscribers.Bind(tables,events,container); - Check(!tables.TbFishingEvent.DataList.Any(e=>e.ConditionList.Any(c=>c.Condition==cfg.ConditionType.ConsumeEnergy)) && - !tables.TbTriggerPackManager.DataList.Any(t=>t.Condition==cfg.ConditionType.ConsumeEnergy),"real config excludes async activation and trigger-pack writes"); + denied = true; } - int consumed=0,notified=0; - subscription=GContext.OnEvent().Subscribe(e=>{if(e.type==cfg.ConditionType.ConsumeEnergy){consumed+=e.count; Write("k","task-"+e.count,true);}}); - using(GContext.OnEvent().Subscribe(_=>notified++)) - { - var action=BeginFishing(new object()); Check(ClaimFishingConsumption(action),"real action claimed"); - fixture.HoldSet=scenario=="recovery-during-pending"; - var consumption=player.ConsumeEnergyForKVLoopAsync(3,action); pending=consumption; - if(fixture.HoldSet) - { - await fixture.SetEntered.Task; - Check(!action.Confirmed && !action.Continued,"real player pending cannot continue"); - // Drive the actual due recovery tick while the original Set is still held. - // No replacement serialization, no paused production recovery algorithm. - player.CoRecoveryEnergy(tables.TbGlobalConfig.InitEnergyRestorationSpeed*60); - Check((int)player.Energy==initialEnergy-2 && !action.Confirmed,"real recovery can write during pending"); - fixture.ReleaseSet.TrySetResult(true); - } - await consumption; pending=null; - Check((int)player.Energy==initialEnergy-(fixture.HoldSet?2:3) && player.GetEnergyRM()==10 && consumed==3,"one real deduction and event"); - Check(notified==(scenario=="cross-limit"?2:fixture.HoldSet?3:1),"original notification count preserved"); - var modern=JsonConvert.DeserializeObject>(fixture.Remote["NewPlayerDataDic"]); - Check(modern["newData"].Split(',')[3]==(initialEnergy-3).ToString() && !modern.ContainsKey("energy"),"one canonical representation"); - Check(fixture.Remote["k"]=="task-3" && action.Confirmed,"synchronous task write confirmed"); - Check(achievements.GetAchievementDatas(cfg.ConditionType.ConsumeEnergy)==3 && modern["ad"].Contains(":") && modern["ad"]==achievements.AchievementDataToJson(),"actual achievement subscriber captured after event"); - var savedTime=DateTime.Parse(modern["newData"].Split(',')[7]); - Check(scenario=="cross-limit"?savedTime>new DateTime(2026,1,1):savedTime==new DateTime(2026,1,1),"recovery timestamp crossing behavior preserved"); - if(fixture.HoldSet) - { - await KVMgr.FlushKVAsync(action.Owner); - var recovered=JsonConvert.DeserializeObject>(fixture.Remote["NewPlayerDataDic"]); - Check(recovered["newData"].Split(',')[3]==(initialEnergy-2).ToString(),"later recovery has separate flush, not original action confirmation"); - } - if(subscribers!=null) - { - Check(subscribers.Battle.Data.BattleTask.dic_dailyTasks.Values.Single()==3 && subscribers.Lucky.DicTasks.Values.Single()==3 && subscribers.Magic.DicTasks.Values.Single()==3,"actual task subscriptions each receive one consume event"); - Check(subscribers.Mini.Data.Exp==3,"actual mini BP subscription receives the event"); - Check(new[]{"BattlePassRecordTask","MiniBPKeyNew","EventLuckGameRecord","EventLuckMagicPlayfabData"}.All(fixture.Remote.ContainsKey),"all actual subscriber save methods confirmed in original action"); - } - var parsed=new PlayerKVSchemaSnapshot("fixed-fishing",tables.TbRodData.DataMap.Keys,tables.TbMapData.DataMap.Keys, - new Dictionary(),System.Globalization.CultureInfo.CurrentCulture,new DateTime(2026,9,24,0,0,0,DateTimeKind.Utc),0); - var errors=new PlayerKVSchemaDiagnostics(); - Check(PlayerKVSaveSchema.DecodeCore(new Dictionary(),modern,parsed,errors)!=null && errors.TotalErrors==0,"actual serialized core loads without alias conflict"); - } - } - result=JsonConvert.SerializeObject(new{success=true,groups,assertions=checks,passed,formalRequests=0,synthetic=true,restored=true,folder}); + + Check(denied && fixture.Sets == 0, "old permit cannot consume"); + result = JsonConvert.SerializeObject(new { success = true, groups, assertions = checks, passed, formalRequests = 0, synthetic = true, restored = true, folder }); } finally { try { - subscribers?.Dispose(); subscribers=null; - player?.StopRecoveryEnergy(); subscription?.Dispose(); - if(fixture!=null) await fixture.Close(); - if(pending!=null) { try { await pending; } catch(Exception e) { Debug.LogWarning("Observed fishing test failure: "+e.GetType().Name); } } - pfField.SetValue(null,oldPF);if(saveShell!=null)UnityEngine.Object.DestroyImmediate(saveShell); - FishingContextAccess.Use(oldContainer); FishingContextAccess.Events=oldEvents; container?.Dispose(); - LocalizationMgr.enumLanguage=oldLanguages; textTable.SetValue(null,oldTextTable); - (Enabled,Ready,Error,Permit,RunPath,handle,onFault,onClose,collecting,mainThread,failed,mainContext,fishingAction)=saved; + if (fixture != null) + { + await fixture.Close(); + } + + if (pending != null) + { + try + { + await pending; + } + catch (Exception e) + { + Debug.LogWarning("Observed fishing test failure: " + e.GetType().Name); + } + } + + + (Enabled, Ready, Error, Permit, RunPath, handle, onFault, collecting, mainThread, failed, mainContext, fishingAction) = saved; + } + catch + { + validationCleanupFailure = fixture; + throw; + } + finally + { + Interlocked.Exchange(ref validationRunning, 0); } - catch { validationCleanupFailure=fixture; throw; } - finally { Interlocked.Exchange(ref validationRunning,0); } } - File.WriteAllText(Path.Combine(folder,"result.json"),result); return result; + + File.WriteAllText(Path.Combine(folder, "result.json"), result); + return result; } // Fixed real subscriber fixture. Reflection targets are compiled constants, never supplied by CLI. sealed class FishingSubscribers:IDisposable { const System.Reflection.BindingFlags Fields=System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.NonPublic; - static readonly System.Reflection.FieldInfo PF=typeof(PlayFabMgr).GetField("_instance",System.Reflection.BindingFlags.Static|System.Reflection.BindingFlags.NonPublic); static readonly System.Reflection.FieldInfo Red=typeof(RedPointManager).GetField("instance",System.Reflection.BindingFlags.Static|System.Reflection.BindingFlags.NonPublic); - readonly object oldRed=Red.GetValue(null),oldPF=PF.GetValue(null); - GameObject shell; LuckyTaskData magicTask; MiniBattlePassDataProvider provider; + private readonly object oldRed = Red.GetValue(null); + private LuckyTaskData magicTask; + private MiniBattlePassDataProvider provider; internal BattlePassDataProvider Battle; internal EventLuckyGameModel Lucky; internal EventLuckMagicModel Magic; internal MiniBattlePassDataModel Mini; internal void Bind(cfg.Tables tables,FishingEventData events,Container container) { Red.SetValue(null,new RedPointManager()); - shell=new GameObject("KV inactive subscriber storage fixture");shell.SetActive(false);shell.hideFlags=HideFlags.HideAndDontSave; - var pf=shell.AddComponent(); - if(!pf.IsUnstartedForKVLoad)throw new InvalidOperationException("No PF lifecycle may start in this fixture."); - PF.SetValue(null,pf); var store=container.Resolve(); container.RegisterInstance(store); container.Resolve().playerSaveStore=store; @@ -322,10 +726,40 @@ namespace game.PlayerDataStorage } public void Dispose() { - Battle?.Dispose();Lucky?.Dispose();magicTask?.Dispose(); - if(Mini!=null)(typeof(MiniBattlePassDataModel).GetField("disposables",Fields).GetValue(Mini) as IDisposable)?.Dispose(); - PF.SetValue(null,oldPF);Red.SetValue(null,oldRed); - if(shell!=null)UnityEngine.Object.DestroyImmediate(shell); + var errors = new List(); + void Release(Action action) + { + try + { + action(); + } + catch (Exception error) + { + errors.Add(error); + } + } + Release(() => Battle?.Dispose()); + Release(() => Lucky?.Dispose()); + Release(() => magicTask?.Dispose()); + Release(() => + { + if (Mini != null) + { + (typeof(MiniBattlePassDataModel).GetField("disposables", Fields).GetValue(Mini) as IDisposable)?.Dispose(); + } + }); + Release(() => Red.SetValue(null, oldRed)); + Release(() => + { + if (!ReferenceEquals(Red.GetValue(null), oldRed)) + { + throw new InvalidOperationException("Subscriber fixture statics did not restore."); + } + }); + if (errors.Count != 0) + { + throw new AggregateException(errors); + } } } sealed class FishingContextAccess:GContext diff --git a/Client/Assets/Scripts/Services/UserService.KVGameplayLoop.cs b/Client/Assets/Scripts/Services/UserService.KVGameplayLoop.cs index 2475cd616..9c4d9c58b 100644 --- a/Client/Assets/Scripts/Services/UserService.KVGameplayLoop.cs +++ b/Client/Assets/Scripts/Services/UserService.KVGameplayLoop.cs @@ -86,37 +86,17 @@ namespace game.PlayerDataStorage internal static PlayerKVLoopPermit Permit { get; private set; } internal static string Root => Path.GetFullPath(Path.Combine(Application.dataPath,"../../CodexOutput/upserver/KVGameplayLoopTests")); internal static string RunPath { get; private set; } - internal static string CacheRoot => Path.Combine(RunPath,"cache"); static PlayerKVGameSessionHandle handle; static Action onFault; - static Func onClose; static WriteBatch collecting; static int mainThread, failed; static SynchronizationContext mainContext; static readonly object auditGate=new object(); - internal static void BeforeBootstrap() + internal static void Attach(Action fault) { - var path=Path.Combine(Root,"permit.json"); - if(!File.Exists(path)) return; - // A malformed or active permit must never silently fall back to PF. - Enabled=true; - if(JObject.Parse(File.ReadAllText(path))["Enabled"]?.Value()==false) { Enabled=false; return; } - if(PlayFabMgr.HasLiveInstanceForKVLoad) throw new InvalidOperationException("Cannot switch a running storage backend."); - Permit=PlayerKVLoopPermit.Read(path); - using(var process=System.Diagnostics.Process.GetCurrentProcess()) - { - var identity=process.Id+"_"+process.StartTime.ToUniversalTime().Ticks; - PlayerKVLoopPermit.Claim(Root,identity); - RunPath=Path.Combine(Root,"runs",identity); Directory.CreateDirectory(RunPath); - } - mainThread=Thread.CurrentThread.ManagedThreadId; - mainContext=SynchronizationContext.Current ?? throw new InvalidOperationException("Unity main context required."); - GContext.container.Resolve().Set("SaveBackend","kv-loop"); - GContext.container.Resolve().Set("CustomID",Permit.PlayerId); - Audit("claim",new{Permit.PlayerId,Permit.BackupSha256}); + onFault = fault; } - internal static void Attach(Action fault,Func close) { onFault=fault; onClose=close; } internal static void Publish(PlayerKVGameSessionHandle value) { if(!Enabled || failed!=0 || handle!=null || value==null || value.PlayerId!=Permit.PlayerId) @@ -160,12 +140,6 @@ namespace game.PlayerDataStorage internal WriteBatch(PlayerKVGameSessionHandle owner) { Owner=owner; } public void Dispose() { if(ReferenceEquals(collecting,this)) collecting=null; } } - internal static WriteBatch BeginEquip() - { - if(Permit?.AllowsFishing==true) throw Stop("Equipment is outside this fishing permit."); - if(collecting!=null) throw Stop("Reentrant equipment action."); - return collecting=new WriteBatch(Capture()); - } internal sealed class WriteRecord { internal readonly string Key,ValueHash; @@ -220,9 +194,6 @@ namespace game.PlayerDataStorage last.Values.Any(r=>!r.Remote || r.Edit.Ticket==null)) throw Stop("Fishing final writes require original remote tickets."); using(var timeout=new CancellationTokenSource(TimeSpan.FromSeconds(30))) { - var flush=await KVMgr.FlushKVAsync(batch.Owner,timeout.Token); - if(!FishingCurrent(action) || flush.Unknown>0 || flush.Blocked>0 || flush.TransportError!=PlayerKVError.None) - throw Stop("Fishing flush: "+flush.TransportError); foreach(var record in batch.Records) { var ticket=record.Edit.Ticket; @@ -250,33 +221,6 @@ namespace game.PlayerDataStorage continuation(); Audit("fishing-consume-ready",new{action.Owner.OwnerInstanceId,action.Owner.Epoch}); } - internal static async Task ConfirmEquipAsync(WriteBatch batch,PlayerKVEditResult primary) - { - if(primary?.Ticket==null || !batch.Edits.Contains(primary) || !ReferenceEquals(Capture(),batch.Owner)) - throw Stop("Missing original equipment ticket."); - var flush=await KVMgr.FlushKVAsync(batch.Owner); - if(flush.Unknown>0 || flush.Blocked>0 || flush.TransportError!=PlayerKVError.None) throw Stop("Equipment flush: "+flush.TransportError); - foreach(var edit in batch.Edits) - { - if(edit.Ticket==null) continue; // localOnly is audited, never claimed as remotely confirmed. - var result=await KVMgr.WaitForKVTicketAsync(batch.Owner,edit.Ticket); - if(result.Status!=PlayerKVTicketStatus.Confirmed) throw Stop("Equipment ticket: "+result.Status); - } - if(!ReferenceEquals(Capture(),batch.Owner)) throw Stop("Equipment session changed."); - Audit("equipment-confirmed",new{tickets=batch.Edits.Count(e=>e.Ticket!=null)}); - } - internal static async Task FlushObservedAsync() - { - if(!Ready) return; - try - { - var result=await KVMgr.FlushKVAsync(Capture()); - if(result.Unknown>0 || result.Blocked>0 || result.TransportError!=PlayerKVError.None) throw Stop("Periodic flush: "+result.TransportError); - } - catch(Exception e) { Fault(e.Message); } - } - internal static void Revoke() { Ready=false; } - internal static Task CloseAsync() { Revoke(); return onClose?.Invoke() ?? Task.CompletedTask; } internal static InvalidOperationException Stop(string message) { Fault(message); return new InvalidOperationException(message); } internal static void Fault(string message) { @@ -299,127 +243,281 @@ namespace game.PlayerDataStorage static object validationCleanupFailure; internal static async Task VerifyEquipmentForEditorAsync() { - if(UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || GContext.Ready || - UnityEngine.Resources.FindObjectsOfTypeAll().Length!=0 || PlayFabMgr.HasLiveInstanceForKVLoad || - Enabled || handle!=null || File.Exists(Path.Combine(Root,"permit.json")) || validationCleanupFailure!=null) + if (UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0 || PlayFabMgr.HasLiveInstanceForKVLoad || Enabled || handle != null || File.Exists(Path.Combine(Root, "permit.json")) || validationCleanupFailure != null) + { throw new InvalidOperationException("An idle editor without a real loop permit is required."); - if(Interlocked.CompareExchange(ref validationRunning,1,0)!=0) throw new InvalidOperationException("Validation already running."); - var original=(Enabled,Ready,Error,Permit,RunPath,handle,onFault,onClose,collecting,mainThread,failed,mainContext); - var folder=Path.Combine(Root,"fixed-equipment-runs",DateTime.UtcNow.ToString("yyyyMMddTHHmmss")+"_"+Guid.NewGuid().ToString("N")); - EquipmentFixture fixture=null; - Task pendingConfirmation=null; - string result=null; - int assertions=0, groups=0; - void Check(bool ok,string reason) { assertions++; if(!ok) throw new InvalidOperationException("Equipment validation: "+reason); } + } + + if (Interlocked.CompareExchange(ref validationRunning, 1, 0) != 0) + { + throw new InvalidOperationException("Validation already running."); + } + + var original = (Enabled, Ready, Error, Permit, RunPath, handle, onFault, collecting, mainThread, failed, mainContext); + var folder = Path.Combine(Root, "fixed-equipment-runs", DateTime.UtcNow.ToString("yyyyMMddTHHmmss") + "_" + Guid.NewGuid().ToString("N")); + EquipmentFixture fixture = null; + Task pendingConfirmation = null; + string result = null; + int assertions = 0, groups = 0; + WriteBatch BeginEquip() + { + if (Permit?.AllowsFishing == true) + { + throw Stop("Equipment is outside this fishing permit."); + } + if (collecting != null) + { + throw Stop("Reentrant equipment action."); + } + return collecting = new WriteBatch(Capture()); + } + + async Task ConfirmEquipAsync(WriteBatch batch, PlayerKVEditResult primary) + { + if (primary?.Ticket == null || !batch.Edits.Contains(primary) || !ReferenceEquals(Capture(), batch.Owner)) + { + throw Stop("Missing original equipment ticket."); + } + foreach (var edit in batch.Edits) + { + // localOnly is audited, never claimed as remotely confirmed. + if (edit.Ticket == null) + { + continue; + } + var result = await KVMgr.WaitForKVTicketAsync(batch.Owner, edit.Ticket); + if (result.Status != PlayerKVTicketStatus.Confirmed) + { + throw Stop("Equipment ticket: " + result.Status); + } + } + if (!ReferenceEquals(Capture(), batch.Owner)) + { + throw Stop("Equipment session changed."); + } + Audit("equipment-confirmed", new { tickets = batch.Edits.Count(e => e.Ticket != null) }); + } + + void Check(bool ok, string reason) + { + assertions++; + if (!ok) + { + throw new InvalidOperationException("Equipment validation: " + reason); + } + } + async Task Start() { - if(fixture!=null) await fixture.Close(); - fixture=new EquipmentFixture(Path.Combine(folder,groups.ToString())); - var owner=await fixture.Open(); - Enabled=true; Ready=false; Error=null; failed=0; handle=null; collecting=null; - Permit=new PlayerKVLoopPermit{PlayerId="101",AllowedKeys=new[]{"k","NewPlayerDataDic","late"}}; - RunPath=folder; mainThread=Thread.CurrentThread.ManagedThreadId; mainContext=SynchronizationContext.Current; - Attach(_=>fixture.Faults++,fixture.Close); Publish(owner); + if (fixture != null) + { + await fixture.Close(); + } + + fixture = new EquipmentFixture(Path.Combine(folder, groups.ToString())); + var owner = await fixture.Open(); + Enabled = true; + Ready = false; + Error = null; + failed = 0; + handle = null; + collecting = null; + Permit = new PlayerKVLoopPermit + { + PlayerId = "101", + AllowedKeys = new[] + { + "k", + "NewPlayerDataDic", + "late" + } + }; + RunPath = folder; + mainThread = Thread.CurrentThread.ManagedThreadId; + mainContext = SynchronizationContext.Current; + Attach(_ => fixture.Faults++); + Publish(owner); groups++; } - async Task Reject(Task task,string contains) + + async Task Reject(Task task, string contains) { - bool rejected=false; - try { await task; } catch(InvalidOperationException e) { rejected=e.Message.Contains(contains); } - Check(rejected,"expected rejection: "+contains); - Check(!Ready && fixture.Faults==1,"one fault revokes facade"); - } - try - { - if(!PlayerKVGameLoadGuard.TryEnter(out var probe)) throw new InvalidOperationException("Load guard occupied."); - probe.Dispose(); Directory.CreateDirectory(folder); - await Start(); - Check(Read("missing")==null,"valid missing key remains null"); - var batch=BeginEquip(); - // This nested callback represents the synchronous Publish subscriber in the equipment chain. - Action nested=()=>Write("k","nested",true); - nested(); var primary=Write("NewPlayerDataDic","whole-save",true); batch.Dispose(); - Check(batch.Edits.Count==2 && ReferenceEquals(primary,batch.Edits[1]),"all original edits collected"); - Check(fixture.Sets==0,"write acceptance is local only"); - await ConfirmEquipAsync(batch,primary); - foreach(var edit in batch.Edits) Check((await KVMgr.WaitForKVTicketAsync(batch.Owner,edit.Ticket)).Status==PlayerKVTicketStatus.Confirmed,"each original ticket confirmed"); - Check(fixture.Remote["k"]=="nested" && fixture.Remote["NewPlayerDataDic"]=="whole-save" && Ready && fixture.Faults==0,"complete batch committed"); - - await Start(); batch=BeginEquip(); - var first=Write("k","first",true); Write("k","second",true); - primary=Write("NewPlayerDataDic","whole-save",true); batch.Dispose(); - await Reject(ConfirmEquipAsync(batch,primary),"Superseded"); - Check((await KVMgr.WaitForKVTicketAsync(batch.Owner,first.Ticket)).Status==PlayerKVTicketStatus.Superseded,"original nested ticket never replaced"); - - await Start(); batch=BeginEquip(); - Write("k","nested",true); primary=Write("NewPlayerDataDic","watermark",true); batch.Dispose(); - fixture.HoldSet=true; - var confirmation=ConfirmEquipAsync(batch,primary); - pendingConfirmation=confirmation; - var entered=await Task.WhenAny(fixture.SetEntered.Task,confirmation,Task.Delay(5000)); - Check(ReferenceEquals(entered,fixture.SetEntered.Task),"first set entered"); - var late=Write("late","later-write",true); - Check(batch.Edits.Count==2,"later write excluded from synchronous batch"); - fixture.ReleaseSet.TrySetResult(true); await confirmation; pendingConfirmation=null; - Check(!fixture.Remote.ContainsKey("late"),"flush watermark excludes later write"); - await KVMgr.FlushKVAsync(batch.Owner); - Check((await KVMgr.WaitForKVTicketAsync(batch.Owner,late.Ticket)).Status==PlayerKVTicketStatus.Confirmed,"later write needs its own flush"); - - await Start(); batch=BeginEquip(); primary=Write("NewPlayerDataDic","unauthorized",true); batch.Dispose(); - fixture.Unauthorized=true; - await Reject(ConfirmEquipAsync(batch,primary),"Equipment flush"); - Check(fixture.Auth==1 && fixture.Sets==1,"401 never reauthenticates or retries"); - - await Start(); batch=BeginEquip(); primary=Write("NewPlayerDataDic","lost-response",true); batch.Dispose(); - fixture.LoseResponse=true; - await Reject(ConfirmEquipAsync(batch,primary),"Equipment flush"); - Check(fixture.Remote["NewPlayerDataDic"]=="lost-response" && fixture.Sets==1,"unknown remote commit is not replayed"); - Check((await KVMgr.WaitForKVTicketAsync(batch.Owner,primary.Ticket)).Status==PlayerKVTicketStatus.Unknown,"unknown original ticket preserved"); - - await Start(); batch=BeginEquip(); primary=Write("NewPlayerDataDic","closed",true); batch.Dispose(); - await fixture.Close(); - await Reject(ConfirmEquipAsync(batch,primary),"Equipment flush"); - Check(fixture.Sets==0,"close does not flush pending writes"); - - await Start(); bool denied=false; - try { Write("unbacked-key","x",true); } catch(InvalidOperationException e) { denied=e.Message.Contains("permission"); } - Check(denied && fixture.Sets==0 && !Ready,"key permission checked before writes"); - await Start(); await fixture.Close(); denied=false; - try { Read("k"); } catch(InvalidOperationException) { denied=true; } - Check(denied && !Ready,"stale read cannot become missing"); - - var originalContainer=GContext.container; - var container=new Container(); + bool rejected = false; try { - var configPath=Path.GetFullPath(Path.Combine(Application.dataPath,"../../cfgData")); - var tables=new cfg.Tables(name=>SimpleJSON.JSON.Parse(File.ReadAllText(Path.Combine(configPath,name+".json")))); + await task; + } + catch (InvalidOperationException e) + { + rejected = e.Message.Contains(contains); + } + + Check(rejected, "expected rejection: " + contains); + Check(!Ready && fixture.Faults == 1, "one fault revokes facade"); + } + + try + { + if (!PlayerKVGameLoadGuard.TryEnter(out var probe)) + { + throw new InvalidOperationException("Load guard occupied."); + } + + probe.Dispose(); + Directory.CreateDirectory(folder); + await Start(); + Check(Read("missing") == null, "valid missing key remains null"); + var batch = BeginEquip(); + // This nested callback represents the synchronous Publish subscriber in the equipment chain. + Action nested = () => Write("k", "nested", true); + nested(); + var primary = Write("NewPlayerDataDic", "whole-save", true); + batch.Dispose(); + Check(batch.Edits.Count == 2 && ReferenceEquals(primary, batch.Edits[1]), "all original edits collected"); + Check(fixture.Sets == 0, "write acceptance is local only"); + _ = KVMgr.SyncKVAsync(batch.Owner); // One simulated ordinary timer tick, outside confirmation. + await ConfirmEquipAsync(batch, primary); + foreach (var edit in batch.Edits) + Check((await KVMgr.WaitForKVTicketAsync(batch.Owner, edit.Ticket)).Status == PlayerKVTicketStatus.Confirmed, "each original ticket confirmed"); + Check(fixture.Remote["k"] == "nested" && fixture.Remote["NewPlayerDataDic"] == "whole-save" && Ready && fixture.Faults == 0, "complete batch committed"); + await Start(); + batch = BeginEquip(); + var first = Write("k", "first", true); + Write("k", "second", true); + primary = Write("NewPlayerDataDic", "whole-save", true); + batch.Dispose(); + _ = KVMgr.SyncKVAsync(batch.Owner); // One simulated ordinary timer tick, outside confirmation. + await Reject(ConfirmEquipAsync(batch, primary), "Superseded"); + Check((await KVMgr.WaitForKVTicketAsync(batch.Owner, first.Ticket)).Status == PlayerKVTicketStatus.Superseded, "original nested ticket never replaced"); + await Start(); + batch = BeginEquip(); + Write("k", "nested", true); + primary = Write("NewPlayerDataDic", "watermark", true); + batch.Dispose(); + fixture.HoldSet = true; + _ = KVMgr.SyncKVAsync(batch.Owner); // One simulated ordinary timer tick, outside confirmation. + var confirmation = ConfirmEquipAsync(batch, primary); + pendingConfirmation = confirmation; + var entered = await Task.WhenAny(fixture.SetEntered.Task, confirmation, Task.Delay(5000)); + Check(ReferenceEquals(entered, fixture.SetEntered.Task), "first set entered"); + var late = Write("late", "later-write", true); + Check(batch.Edits.Count == 2, "later write excluded from synchronous batch"); + fixture.ReleaseSet.TrySetResult(true); + await confirmation; + pendingConfirmation = null; + Check(!fixture.Remote.ContainsKey("late"), "flush watermark excludes later write"); + await KVMgr.SyncKVAsync(batch.Owner); + Check((await KVMgr.WaitForKVTicketAsync(batch.Owner, late.Ticket)).Status == PlayerKVTicketStatus.Confirmed, "later write needs its own flush"); + await Start(); + batch = BeginEquip(); + primary = Write("NewPlayerDataDic", "unauthorized", true); + batch.Dispose(); + fixture.Unauthorized = true; + _ = KVMgr.SyncKVAsync(batch.Owner); // One simulated ordinary timer tick, outside confirmation. + await Reject(ConfirmEquipAsync(batch, primary), "Equipment ticket"); + Check(fixture.Auth == 1 && fixture.Sets == 1, "401 never reauthenticates or retries"); + await Start(); + batch = BeginEquip(); + primary = Write("NewPlayerDataDic", "lost-response", true); + batch.Dispose(); + fixture.LoseResponse = true; + _ = KVMgr.SyncKVAsync(batch.Owner); // One simulated ordinary timer tick, outside confirmation. + await Reject(ConfirmEquipAsync(batch, primary), "Equipment ticket"); + Check(fixture.Remote["NewPlayerDataDic"] == "lost-response" && fixture.Sets == 1, "unknown remote commit is not replayed"); + Check((await KVMgr.WaitForKVTicketAsync(batch.Owner, primary.Ticket)).Status == PlayerKVTicketStatus.Unknown, "unknown original ticket preserved"); + await Start(); + batch = BeginEquip(); + primary = Write("NewPlayerDataDic", "closed", true); + batch.Dispose(); + await fixture.Close(); + await Reject(ConfirmEquipAsync(batch, primary), "Equipment ticket"); + Check(fixture.Sets == 0, "close does not flush pending writes"); + await Start(); + bool denied = false; + try + { + Write("unbacked-key", "x", true); + } + catch (InvalidOperationException e) + { + denied = e.Message.Contains("permission"); + } + + Check(denied && fixture.Sets == 0 && !Ready, "key permission checked before writes"); + await Start(); + await fixture.Close(); + denied = false; + try + { + Read("k"); + } + catch (InvalidOperationException) + { + denied = true; + } + + Check(denied && !Ready, "stale read cannot become missing"); + var originalContainer = GContext.container; + var container = new Container(); + try + { + var configPath = Path.GetFullPath(Path.Combine(Application.dataPath, "../../cfgData")); + var tables = new cfg.Tables(name => SimpleJSON.JSON.Parse(File.ReadAllText(Path.Combine(configPath, name + ".json")))); container.RegisterInstance(tables); EquipmentContextAccess.Use(container); - using(container.InjectionScope()) container.Register().AsSingleton(); - var shooting=container.Resolve(); - Check(shooting!=null && ReferenceEquals(shooting,container.Resolve()),"M24 container resolves one instance"); - shooting.ResetForKVLoad(); - Check(!shooting.KVLoadPresent,"M24 can enter the existing load transaction without activation"); + using (container.InjectionScope()) + container.Register().AsSingleton(); + var shooting = container.Resolve(); + Check(shooting != null && ReferenceEquals(shooting, container.Resolve()), "M24 container resolves one instance"); + shooting.LoadData("{\"EventId\":11,\"AmmoCount\":7}"); + var shootingData = JObject.FromObject(Module02OriginalLoadTests.Field(shooting, "_data")); + Check((int)shootingData["EventId"] == 11 && (int)shootingData["AmmoCount"] == 7, "M24 registered instance uses original load method"); } - finally { EquipmentContextAccess.Use(originalContainer); container.Dispose(); } - Check(ReferenceEquals(GContext.container,originalContainer),"M24 global container restored"); + finally + { + EquipmentContextAccess.Use(originalContainer); + container.Dispose(); + } + + Check(ReferenceEquals(GContext.container, originalContainer), "M24 global container restored"); groups++; - result=JsonConvert.SerializeObject(new{success=true,groups,assertions,formalRequests=0,synthetic=true,restored=true,folder}); + result = JsonConvert.SerializeObject(new { success = true, groups, assertions, formalRequests = 0, synthetic = true, restored = true, folder }); } finally { try { - if(fixture!=null) await fixture.Close(); - if(pendingConfirmation!=null) - try { await pendingConfirmation; } catch(Exception e) { Debug.LogWarning("Observed failed synthetic confirmation during cleanup: "+e.GetType().Name); } - (Enabled,Ready,Error,Permit,RunPath,handle,onFault,onClose,collecting,mainThread,failed,mainContext)=original; + if (fixture != null) + { + await fixture.Close(); + } + + if (pendingConfirmation != null) + { + try + { + await pendingConfirmation; + } + catch (Exception e) + { + Debug.LogWarning("Observed failed synthetic confirmation during cleanup: " + e.GetType().Name); + } + } + + (Enabled, Ready, Error, Permit, RunPath, handle, onFault, collecting, mainThread, failed, mainContext) = original; + } + catch + { + validationCleanupFailure = fixture; + throw; + } + finally + { + Interlocked.Exchange(ref validationRunning, 0); } - catch { validationCleanupFailure=fixture; throw; } - finally { Interlocked.Exchange(ref validationRunning,0); } } - File.WriteAllText(Path.Combine(folder,"result.json"),result); + + File.WriteAllText(Path.Combine(folder, "result.json"), result); return result; } @@ -430,37 +528,29 @@ namespace game.PlayerDataStorage } internal static string InspectPFBackupForEditor(string path) { - if(Enabled || validationRunning!=0 || UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || GContext.Ready || - UnityEngine.Resources.FindObjectsOfTypeAll().Length!=0) - throw new InvalidOperationException("Idle editor required for source inspection."); - path=Path.GetFullPath(path); - var allowed=Path.GetFullPath(Path.Combine(Root,"pf-source-backups"))+Path.DirectorySeparatorChar; - if(!path.StartsWith(allowed,StringComparison.OrdinalIgnoreCase)) throw new ArgumentException("Expected local PF source backup."); - var bytes=File.ReadAllBytes(path); var source=JObject.Parse(Encoding.UTF8.GetString(bytes)); - var id=(string)source["customId"]; - if((string)source["source"]!="PlayFab" || (string)source["titleId"]!="108EE8" || (id!="101" && id!="102")) - throw new InvalidOperationException("Source identity mismatch."); - var raw=source["data"].ToObject>(); - var originalContainer=GContext.container; var isolated=new Container(); - try + if (Enabled || validationRunning != 0 || UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || GContext.Ready || UnityEngine.Resources.FindObjectsOfTypeAll().Length != 0) { - var configPath=Path.GetFullPath(Path.Combine(Application.dataPath,"../../cfgData")); - var tables=new cfg.Tables(name=>SimpleJSON.JSON.Parse(File.ReadAllText(Path.Combine(configPath,name+".json")))); - isolated.RegisterInstance(tables); EquipmentContextAccess.Use(isolated); - var now=DateTime.UtcNow; - var snapshot=PlayerKVGameplayBindings.Snapshot(now); - // Diagnostic-only context: this is NOT a real KV Prepare/Open and cannot publish a handle. - var prepared=new PlayerKVLoginPrepareResult(PlayerKVLoginPrepareError.None,id,1,ownerId:"offline-PF-candidate",data:raw); - var account=new PlayerKVAccountDescriptor(id,1,0,false,DateTime.SpecifyKind(DateTime.MinValue,DateTimeKind.Utc),now); - var identity=new PlayerKVIdentitySnapshot((string)source["playFabId"],false,PlayerKVIdentityChannel.none,Array.Empty()); - var decoded=PlayerKVSaveSchema.Decode(prepared,account,id,1,true,snapshot,snapshot.Version,identity); - return JsonConvert.SerializeObject(new{sourceOnly=true,syntheticDescriptor=true,usesLocalUtc=true,customId=id,path,sha256=PlayerKVLoopPermit.Hash(bytes),keys=raw.Count, - verdict=decoded.Verdict.ToString(),errors=decoded.Diagnostics.TotalErrors, - details=decoded.Diagnostics.Details.Select(d=>new{module=d.Module,field=d.Field,code=d.Code.ToString()}), - configuredRods=decoded.Data?.Module(3).RodLevels.Keys.ToArray(), - gameplayPublished=false,writes=0}); + throw new InvalidOperationException("Idle editor required for source inspection."); } - finally { EquipmentContextAccess.Use(originalContainer); isolated.Dispose(); } + + path = Path.GetFullPath(path); + var allowed = Path.GetFullPath(Path.Combine(Root, "pf-source-backups")) + Path.DirectorySeparatorChar; + if (!path.StartsWith(allowed, StringComparison.OrdinalIgnoreCase)) + { + throw new ArgumentException("Expected local PF source backup."); + } + + var bytes = File.ReadAllBytes(path); + var source = JObject.Parse(Encoding.UTF8.GetString(bytes)); + var id = (string)source["customId"]; + if ((string)source["source"] != "PlayFab" || (string)source["titleId"] != "108EE8" || (id != "101" && id != "102")) + { + throw new InvalidOperationException("Source identity mismatch."); + } + + var raw = source["data"].ToObject>(); + var actual = Module02OriginalLoadTests.InspectRaw(raw); + return JsonConvert.SerializeObject(new { sourceOnly = true, usesLocalUtc = true, customId = id, path, sha256 = PlayerKVLoopPermit.Hash(bytes), keys = raw.Count, originalLoad = JObject.Parse(actual), gameplayPublished = false, formalRequests = 0 }); } sealed class EquipmentFixture { @@ -514,108 +604,35 @@ namespace game.PlayerDataStorage internal async Task Close() { ReleaseSet.TrySetResult(true); - await bridge.CloseAsync(); - session.Dispose(); + Exception closeError = null; + try + { + await bridge.CloseAsync(); + } + catch (Exception error) + { + closeError = error; + throw; + } + finally + { + try + { + session.Dispose(); + } + catch (Exception disposeError) + { + if (closeError != null) + { + throw new AggregateException(closeError, disposeError); + } + throw; + } + } } } } #endif } -#if !SERVICE_HOST -namespace game -{ - public partial class PlayFabUserService - { - PlayerKVGameSessionBridge loopBridge; - PlayerKVGameLoadGuard loopGuard; - Task loopClosing; - TaskCompletionSource loopSettled; - bool loopAttempted, loopStopping; - internal bool KVLoopLoading { get; private set; } - - async Task LoginKVGameplayLoopAsync(Action progress,int generation) - { - if(loopAttempted || loopStopping || CustomId!=PlayerKVGameplayLoop.Permit.PlayerId) return ELoginStep.Api; - loopAttempted=true; loopSettled=new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - loopBridge=new PlayerKVGameSessionBridge(); - PlayerKVGameplayLoop.Attach(message=> - { - _=StopKVGameplayLoopAsync(); - var main=UnityEngine.Application.isPlaying; - if(main) _=ExitKVGameplayLoopAsync(); - },StopKVGameplayLoopAsync); - try - { - if(customServerMgr.ApiBaseUri.AbsoluteUri!=PlayerKVGameplayLoop.Permit.Api) - throw new InvalidOperationException("KV loop requires the fixed s101 API."); - if(!await LoginPlayFab(generation) || generation!=logoutGeneration) throw new InvalidOperationException("PF identity login failed/stale."); - if(!await LoginApiServer() || generation!=logoutGeneration) throw new InvalidOperationException("API login failed/stale."); - if(InternalId!=0 || IsLogin) throw new InvalidOperationException("Gameplay identity published before load."); - var opened=await loopBridge.OpenAsync(apiSession,PlayerKVGameplayLoop.CacheRoot,CustomId,customServerMgr.ApiBaseUri, - generation,e=>!loopStopping && e==logoutGeneration,LoginLifetime); - if(!opened.Success) throw new InvalidOperationException("KV open: "+opened.Error); - var read=opened.Handle.ReadLocalSnapshot(); - if(!read.Success) throw new InvalidOperationException("KV snapshot: "+read.Error); - var prepared=new PlayerKVLoginPrepareResult(PlayerKVLoginPrepareError.None,apiSession.PlayerId,generation, - syncStatus:opened.Handle.Status,ownerId:opened.Handle.OwnerInstanceId,data:read.Data); - var account=new PlayerKVAccountDescriptor(apiSession.PlayerId,generation,apiSession.InternalId, - apiSession.NewlyCreated,apiSession.CreateTimeUtc,apiSession.ServerTimeUtc); - var snapshot=PlayerKVGameplayBindings.Snapshot(apiSession.ServerTimeUtc); - var identity=new PlayerKVIdentitySnapshot(UserId,config.Get("NewlyCreated",false),PlayerKVIdentityChannel.none,Array.Empty()); - var decoded=PlayerKVSaveSchema.Decode(prepared,account,CustomId,generation,!loopStopping && generation==logoutGeneration,snapshot,snapshot.Version,identity); - if(decoded.Data==null) throw new InvalidOperationException("KV schema: "+decoded.Verdict); - if(!PlayerKVGameLoadGuard.TryEnter(out loopGuard)) throw new InvalidOperationException("Load guard occupied."); - KVLoopLoading=true; - var transaction=PlayerKVGameplayBindings.Bind(this); - var applied=transaction.Apply(decoded.Data,()=>!loopStopping && generation==logoutGeneration, - ()=>loopGuard.IsCurrent && loopGuard.Violations==0,()=>{}); - if(applied!=PlayerKVApplyError.None) throw new InvalidOperationException("KV apply: "+applied); - KVLoopLoading=false; loopGuard.Dispose(); loopGuard=null; - PlayerKVGameplayLoop.Publish(opened.Handle); - PlayFabMgr.Instance.StartKVGameplayLoopSync(); - InternalId=apiSession.InternalId; - GContext.Publish(new EvtAPISvrLoginSuccess{playerId=apiSession.PlayerId,internalId=InternalId}); - OnInitData?.Invoke(decoded.Data.Raw.ToDictionary(p=>p.Key,p=>p.Value,StringComparer.Ordinal)); - SetMMTestValue(); - if(!PlayerKVGameplayLoop.Ready || loopStopping || generation!=logoutGeneration) throw new InvalidOperationException("Initialization revoked loop."); - progress?.Invoke(2); return ELoginStep.Done; - } - catch(Exception e) { PlayerKVGameplayLoop.Fault(e.Message); return ELoginStep.Api; } - finally { KVLoopLoading=false; loopSettled.TrySetResult(true); } - } - async Task ExitKVGameplayLoopAsync() - { - try { await GContext.container.Resolve().SwitchStageAsync("QuitStage"); } - catch(Exception e) { Debug.LogException(e); } - } - internal Task StopKVGameplayLoopAsync() - { - if(loopClosing!=null) return loopClosing; - loopStopping=true; PlayerKVGameplayLoop.Revoke(); logoutGeneration++; apiLoginGeneration++; InternalId=0; - PlayFabMgr.Instance?.StopKVGameplayLoopSync(); - var completion=new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - loopClosing=completion.Task; PlayerKVShutdownRegistry.Process.Register(loopClosing); - try { loginLifetime.Cancel(); } catch(Exception e) { Debug.LogException(e); } - var drain=loopBridge?.CloseAsync() ?? Task.CompletedTask; - _=FinishKVGameplayLoopAsync(drain,completion); return loopClosing; - } - async Task FinishKVGameplayLoopAsync(Task drain,TaskCompletionSource completion) - { - try - { - if(loopSettled!=null) await loopSettled.Task; - await drain; - if(loopBridge!=null) await loopBridge.CloseAsync(); - apiSession?.Dispose(); apiSession=null; customServerMgr.ClearAccountSession(); - loopGuard?.Dispose(); loopGuard=null; - UserId=null; DisplayName=null; AvatarUrl=null; InternalId=0; - PlayFab.PlayFabClientAPI.ForgetAllCredentials(); - PlayerKVGameplayLoop.Audit("closed",new{requiresProcessRestart=true}); completion.TrySetResult(true); - } - catch(Exception e) { completion.TrySetException(e); Debug.LogException(e); } - } - } -} -#endif #endif diff --git a/Client/Assets/Scripts/Services/UserService.KVLoad.cs b/Client/Assets/Scripts/Services/UserService.KVLoad.cs deleted file mode 100644 index f7c578a9b..000000000 --- a/Client/Assets/Scripts/Services/UserService.KVLoad.cs +++ /dev/null @@ -1,123 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Threading; -using System.Threading.Tasks; -using asap.core; -using game.PlayerDataStorage; -using UnityEngine; - -namespace game -{ - public partial class PlayFabUserService - { - readonly bool kvControlledInstance; - PlayerKVGameLoadCoordinator kvCoordinator; - Action> kvReceiver; - int kvReceiverUsers; - internal PlayerKVGameLoadError KVLastError { get; private set; } - internal string CaptureSaveBackend() => config==null ? "playfab" : config.Get("SaveBackend","playfab"); - internal bool RejectSaveBackend(string backend) - { -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerKVGameplayLoop.Enabled && backend=="kv-loop" && !kvControlledInstance) - { KVLastError=PlayerKVGameLoadError.None; return false; } -#endif - KVLastError=backend=="kv" ? PlayerKVGameLoadError.BackendNotEnabled : backend!="playfab" ? PlayerKVGameLoadError.BackendUnsupported : - kvControlledInstance ? PlayerKVGameLoadError.Input : PlayerKVGameLoadError.None; - return KVLastError!=PlayerKVGameLoadError.None; - } - internal void ConfigureKVForValidation(PlayerKVGameLoadTransaction transaction,PlayFabMgr pf,CustomServerMgr server,Func unstarted) - { - if(!kvControlledInstance || kvCoordinator!=null || pf==null || !pf.IsUnstartedForKVLoad || PlayFabMgr.HasLiveInstanceForKVLoad || - server==null || !server.IsFreshForKVLoad || unstarted==null || !unstarted()) throw new InvalidOperationException("Fresh controlled services required."); - kvCoordinator=new PlayerKVGameLoadCoordinator(transaction,()=>pf.IsUnstartedForKVLoad && InternalId==0 && unstarted(), - NotifyKVLoaded,()=>KVIntents?.Count ?? 0,server.BindKVForValidation,server.ClearKVForValidation); - server.KVUnauthorized+=version=> { if(version==server.SessionVersion) { InternalId=0; _=kvCoordinator.Revoke(); } }; - } - internal virtual async Task LoadKVForValidationAsync(PlayerKVGameLoadCapability capability) - { - if(!kvControlledInstance || kvCoordinator==null || capability==null) - return new PlayerKVGameLoadResult(PlayerKVGameLoadError.Input,0); - try - { - int loginMs=config==null ? 10000 : PlayerKVSaveSchema.Int32(config.Get("KVLoginCloseObserveMs","10000")); - int quitMs=config==null ? 5000 : PlayerKVSaveSchema.Int32(config.Get("KVQuitCloseObserveMs","5000")); - if(loginMs!=capability.LoginObserveMs || quitMs!=capability.QuitObserveMs || loginMs<1000 || loginMs>15000 || quitMs<1000 || quitMs>15000) - return new PlayerKVGameLoadResult(PlayerKVGameLoadError.Input,0); - } - catch { return new PlayerKVGameLoadResult(PlayerKVGameLoadError.Input,0); } - var requestedId=CustomId; var generation=logoutGeneration; - var result=await kvCoordinator.LoadAsync(requestedId,capability,LoginLifetime,()=>requestedId==CustomId && generation==logoutGeneration); - if(generation!=logoutGeneration || requestedId!=CustomId) - { - _=kvCoordinator.Revoke(); - if(result.State==PlayerKVGameLoadState.LoadedForValidation) result=new PlayerKVGameLoadResult(PlayerKVGameLoadError.Stale,result.Epoch); - } - KVLastError=result.Error; return result; - } - internal Task CloseKVForValidationAsync() => kvCoordinator?.Revoke() ?? Task.CompletedTask; - internal Task ObserveKVQuitAsync() => kvCoordinator?.ObserveQuitAsync() ?? Task.FromResult(PlayerKVShutdownStatus.Ready); - internal bool KVLoadedForValidation => kvCoordinator?.LoadedForValidation ?? false; - internal int KVReceiverCountForValidation => kvReceiverUsers; - internal void EnterKVReceiver(Action> receiver) - { - if(!kvControlledInstance || receiver==null || (kvReceiver!=null && kvReceiver!=receiver)) throw new InvalidOperationException("Controlled receiver required."); - if(kvReceiverUsers++==0) { kvReceiver=receiver; OnInitData+=receiver; } - } - internal void ExitKVReceiver() - { if(--kvReceiverUsers==0) { OnInitData-=kvReceiver; kvReceiver=null; } } - void NotifyKVLoaded() - { - var listeners=OnInitData?.GetInvocationList(); - if(listeners!=null && (listeners.Length!=1 || kvReceiver==null || !listeners[0].Equals(kvReceiver))) - throw new InvalidOperationException("Unregistered controlled receiver."); - OnInitData?.Invoke(KVLoadingCopy.ToDictionary(p=>p.Key,p=>p.Value,StringComparer.Ordinal)); - } - internal int KVTapJoyBalance { get; private set; } - internal PlayerKVInitializationIntents KVIntents { get; private set; } - internal IReadOnlyDictionary KVLoadingCopy { get; private set; } - internal int MMTestForKVValidation => MMTestValue; - internal bool IsControlledKVInstance => kvControlledInstance; - - internal virtual void ResetForKVLoad() - { - bool admitted=kvControlledInstance, sessionAllowed=apiSession==null; -#if UNITY_EDITOR && !SERVICE_HOST - admitted=admitted || KVLoopLoading; - sessionAllowed=sessionAllowed || KVLoopLoading; -#endif - if(!admitted || InternalId!=0 || !sessionAllowed) - throw new InvalidOperationException("Unstarted controlled identity required."); - KVIntents?.Discard(); KVIntents=null; KVLoadingCopy=null; - MMTestValue=0; EAccoutUrl=new Dictionary(StringComparer.Ordinal); KVTapJoyBalance=0; - } - internal void ReplaceFromKVDecoded(PlayerKVLoginState state,long epoch,IReadOnlyDictionary raw) - { - bool admitted=kvControlledInstance; -#if UNITY_EDITOR && !SERVICE_HOST - admitted=admitted || KVLoopLoading; -#endif - if(!admitted || state==null || raw==null) throw new InvalidOperationException("Controlled login state required."); - var copy=raw.ToDictionary(p=>p.Key,p=>p.Value,StringComparer.Ordinal); - var intents=new PlayerKVInitializationIntents(epoch,state.Channel); - foreach(var pair in state.Normalizations) { copy[pair.Key]=pair.Value; intents.Add(epoch,pair.Key,pair.Value); } - KVIntents?.Discard(); KVIntents=intents; - KVLoadingCopy=new System.Collections.ObjectModel.ReadOnlyDictionary(copy); - MMTestValue=state.MMTest; KVTapJoyBalance=state.TapJoyBalance; - EAccoutUrl=state.AccountUrls.ToDictionary(p=>p.Key,p=>p.Value,StringComparer.Ordinal); - ReplaceKVLinked(state); - } - void IKVUserLoadReceiver.ResetForKVLoad() => ResetForKVLoad(); - void IKVUserLoadReceiver.ReplaceFromKVDecoded(PlayerKVLoginState state,long epoch,IReadOnlyDictionary raw) - => ReplaceFromKVDecoded(state,epoch,raw); - void IKVUserLoadReceiver.DiscardKVIntents() => KVIntents?.Discard(); - bool IKVUserLifecycle.KVHandoffReady => false; - PlayerKVGameLoadError IKVUserLifecycle.KVLastError => KVLastError; - Task IKVUserLifecycle.CloseKVForValidationAsync() => CloseKVForValidationAsync(); - Task IKVUserLifecycle.ObserveKVQuitAsync() => ObserveKVQuitAsync(); - internal virtual void ReplaceKVLinked(PlayerKVLoginState state) { } - } -} diff --git a/Client/Assets/Scripts/Services/UserService.KVLoad.cs.meta b/Client/Assets/Scripts/Services/UserService.KVLoad.cs.meta deleted file mode 100644 index 6e5d8cc49..000000000 --- a/Client/Assets/Scripts/Services/UserService.KVLoad.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: a676add461b14c90b0f8a6e420884fd6 diff --git a/Client/Assets/Scripts/Services/UserService.cs b/Client/Assets/Scripts/Services/UserService.cs index 2e2201baf..b9ce23443 100644 --- a/Client/Assets/Scripts/Services/UserService.cs +++ b/Client/Assets/Scripts/Services/UserService.cs @@ -98,7 +98,7 @@ namespace game void UpdateProfileLv(); } - public partial class PlayFabUserService : IUserService, PlayerDataStorage.IKVUserLoadReceiver, PlayerDataStorage.IKVUserLifecycle + public class PlayFabUserService : IUserService { [Inject] public IConfig config { get; set; } @@ -106,7 +106,7 @@ namespace game [Inject] public ICustomServerMgr customServerMgr { get; set; } - public bool IsLogin => !kvControlledInstance && PlayFabClientAPI.IsClientLoggedIn() && IsAuthorized; + public bool IsLogin => PlayFabClientAPI.IsClientLoggedIn() && IsAuthorized; public bool IsAuthorized => InternalId != 0 && apiSession != null && apiSession.IsAuthenticated; @@ -145,18 +145,11 @@ namespace game return "Angler#" + (string.IsNullOrEmpty(id) ? string.Empty : id.Substring(0, Math.Min(5, id.Length))); } - public PlayFabUserService() : this(null) { } - - internal PlayFabUserService(PlayerDataStorage.PlayerKVControlledLoadCapability capability) + public PlayFabUserService() { - kvControlledInstance = capability != null; - if (kvControlledInstance) return; GContext.OnEvent().Subscribe(evt => { if (evt.SessionVersion != customServerMgr.SessionVersion) return; -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault("API unauthorized; restart required."); return; } -#endif InternalId = 0; if (PlayFabClientAPI.IsClientLoggedIn()) _ = LoginApiServer(); }); @@ -168,6 +161,16 @@ namespace game private readonly System.Threading.SemaphoreSlim loginGate = new System.Threading.SemaphoreSlim(1, 1); public virtual Task Login(Action progress, bool tyrLoginByToken = true) => LoginWithBackend(progress,CaptureSaveBackend()); + internal string CaptureSaveBackend() + { + return config == null ? "playfab" : config.Get("SaveBackend", "playfab"); + } + + internal bool RejectSaveBackend(string backend) + { + return backend != "playfab"; + } + protected async Task LoginWithBackend(Action progress,string backend) { var generation = logoutGeneration; @@ -189,9 +192,6 @@ namespace game private async Task LoginCore(Action progress, int generation) { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) return await LoginKVGameplayLoopAsync(progress,generation); -#endif if (IsLogin) { progress?.Invoke(2); @@ -351,11 +351,7 @@ namespace game var info_request_parameters = new GetPlayerCombinedInfoRequestParams { GetUserAccountInfo = true, -#if UNITY_EDITOR && !SERVICE_HOST - GetUserData = !game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled, -#else GetUserData = true, -#endif GetPlayerProfile = true, ProfileConstraints = new PlayerProfileViewConstraints() { @@ -518,9 +514,6 @@ namespace game //InitData should invoke after local time adjusted. //save login time to local storage. -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) -#endif InitData(playfabUserData, UserId); return true; @@ -560,9 +553,6 @@ namespace game return false; } customServerMgr.UseAccountSession(session); -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) return true; // Identity is published only after all KV modules load. -#endif InternalId = session.InternalId; GContext.Publish(new EvtAPISvrLoginSuccess { @@ -672,17 +662,6 @@ namespace game public virtual void Logout() { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) { _=StopKVGameplayLoopAsync(); return; } -#endif - if(kvControlledInstance) - { - logoutGeneration++; InternalId=0; UserId=null; DisplayName=null; AvatarUrl=null; - _=kvCoordinator?.Revoke(); - var previous=loginLifetime; loginLifetime=new System.Threading.CancellationTokenSource(); - try { previous.Cancel(); } finally { previous.Dispose(); } - return; - } logoutGeneration++; apiLoginGeneration++; diff --git a/Client/Assets/Scripts/Stages/FishingStage.cs b/Client/Assets/Scripts/Stages/FishingStage.cs index 491a45148..f72771cbb 100644 --- a/Client/Assets/Scripts/Stages/FishingStage.cs +++ b/Client/Assets/Scripts/Stages/FishingStage.cs @@ -199,20 +199,8 @@ namespace game InitManager(); if (kvUser != null) { - if (!GContext.container.Resolve().InitialRefreshSucceeded) - throw new System.InvalidOperationException("KV initial daily refresh failed; previous login must be retained."); - // Daily refresh consumes the previous login first. Save its actual player aggregate - // and pending module writes before advancing the persisted login timestamp. - GContext.container.Resolve().SavePlayerData(); - var initialization = await store.FlushAsync(loginLifetime); - if (stopping || this == null || loginLifetime.IsCancellationRequested) return; - if (!kvUser.IsAuthorized || !store.IsCurrent || !initialization.Confirmed) - throw new System.InvalidOperationException("KV initialization saves were not confirmed."); - var loginSaved = await store.WriteAndConfirmAsync("LastLoginTimeUtc", - kvUser.LoginTime.ToUniversalTime().ToString("O", System.Globalization.CultureInfo.InvariantCulture), loginLifetime); - if (stopping || this == null || loginLifetime.IsCancellationRequested) return; - if (!kvUser.IsAuthorized || !store.IsCurrent || !loginSaved.Confirmed) - throw new System.InvalidOperationException("KV login timestamp was not confirmed."); + var loginTime = kvUser.LoginTime.ToUniversalTime().ToString("O", System.Globalization.CultureInfo.InvariantCulture); + _ = ObserveLastLoginSaveAsync(store, loginTime); } GContext.container.RegisterInstance(stageData); GContext.container.Register().AsSingleton(); @@ -271,6 +259,18 @@ namespace game _autoRestart.Init(); } + private static async Task ObserveLastLoginSaveAsync(PlayerDataStorage.IPlayerSaveStore store, string loginTime) + { + try + { + await store.SyncDataImmidiate("LastLoginTimeUtc", loginTime); + } + catch (System.Exception ex) + { + Debug.LogError("[FishingStage] LastLogin save failed: " + ex); + } + } + void InitEvent() { var rtService = GContext.container.Resolve(); @@ -282,26 +282,14 @@ namespace game MainThreadDispatcher.OnApplicationPauseAsObservable() .Subscribe(paused => { - if (paused) _ = FlushPausedSaveAsync(); - else _ = OnApplicationResumedAsync(); + if (!paused) + { + _ = OnApplicationResumedAsync(); + } }) .AddTo(disposable); } - private async Task FlushPausedSaveAsync() - { - var user = UserService; - var store = sessionSaveStore; - if (stopping || user is not KVUserService || !user.IsAuthorized || store == null || !store.IsCurrent) return; - try - { - var result = await store.FlushAsync(user.LoginLifetime); - if (!stopping && store.IsCurrent && !result.Confirmed) - Debug.LogWarning("KV pause save: " + result.Status); - } - catch (System.Exception ex) { Debug.LogError("KV pause save failed: " + ex.GetType().Name); } - } - private async Task OnApplicationResumedAsync() { var userService = UserService; diff --git a/Client/Assets/Scripts/Stages/LoginStage.cs b/Client/Assets/Scripts/Stages/LoginStage.cs index 69536338a..29cf64919 100644 --- a/Client/Assets/Scripts/Stages/LoginStage.cs +++ b/Client/Assets/Scripts/Stages/LoginStage.cs @@ -19,34 +19,39 @@ namespace game { #if AGG GContext.container.Register().AsSingleton(); - GContext.container.Register().AsSingleton(); - GContext.container.Register().AsSingleton(); #else + GContext.container.Register().AsSingleton(); +#endif if (SubBoostrap.RuntimeSelection?.IsKV == true) { if (PlayFabMgr.HasLiveInstanceForKVLoad) + { throw new System.InvalidOperationException("KV startup found an active legacy save manager."); - GContext.container.Register().AsSingleton(); + } +#if AGG + GContext.container.Register().AsSingleton(); +#else + GContext.container.Register().AsSingleton(); +#endif GContext.container.Register().AsSingleton(); } else { +#if AGG + GContext.container.Register().AsSingleton(); +#else GContext.container.Register().AsSingleton(); +#endif GContext.container.Register().AsSingleton(); } - GContext.container.Register().AsSingleton(); -#endif GContext.container.Register().AsSingleton(); GContext.container.Register().AsSingleton(); GContext.container.Register().AsSingleton(); GContext.container.Register().AsSingleton(); -#if UNITY_EDITOR && !SERVICE_HOST - if(PlayerDataStorage.PlayerKVGameplayLoop.Enabled || SubBoostrap.RuntimeSelection?.IsKV==true) + if (SubBoostrap.RuntimeSelection?.IsKV == true) + { GContext.container.Register().AsSingleton(); -#else - if(SubBoostrap.RuntimeSelection?.IsKV==true) - GContext.container.Register().AsSingleton(); -#endif + } GContext.container.Register().AsSingleton(); //GContext.container.Register().AsSingleton(); GContext.container.Register().AsSingleton(); @@ -107,9 +112,6 @@ namespace game startActId = "AggLoginAct"; #else startActId = "PFLoginAct"; -#endif -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) startActId="PFLoginAct"; #endif if (!LoadingScreen.isShowing()) { @@ -123,8 +125,6 @@ namespace game protected override async Task RequestNextAct(string actId) { - if(SubBoostrap.RuntimeSelection?.IsKV==true) - return; await GContext.container.Resolve().SwitchStageAsync("FishingStage"); } } diff --git a/Client/Assets/Scripts/Stages/PFLoginAct.cs b/Client/Assets/Scripts/Stages/PFLoginAct.cs index 6152d8490..21302d6ef 100644 --- a/Client/Assets/Scripts/Stages/PFLoginAct.cs +++ b/Client/Assets/Scripts/Stages/PFLoginAct.cs @@ -32,6 +32,7 @@ namespace game private string[] loadingInfos; private CancellationTokenSource loginLifetime; private CancellationToken loginToken; + private Task loginWork; public override async Task StartAsync() { @@ -60,10 +61,22 @@ namespace game //CancellationTokenSource source; private async void DoLogin() { - try { await LoginAsync(); } - catch (OperationCanceledException) when (loginToken.IsCancellationRequested) { } - catch (Exception ex) { Debug.LogException(ex); } - finally { StopLoadingInfo(); } + try + { + loginWork = LoginAsync(); + await loginWork; + } + catch (OperationCanceledException) when (loginToken.IsCancellationRequested) + { + } + catch (Exception ex) + { + Debug.LogException(ex); + } + finally + { + StopLoadingInfo(); + } } private async Task LoginAsync() @@ -71,9 +84,6 @@ namespace game loginToken.ThrowIfCancellationRequested(); UpdateLoadingInfo(); var configCustomId = config.Get("CustomID", string.Empty); -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) configCustomId=game.PlayerDataStorage.PlayerKVGameplayLoop.Permit.PlayerId; -#endif if (configCustomId == @"{{input}}") { LoadingScreen.HideProgressBar(); @@ -83,7 +93,7 @@ namespace game LoadingScreen.ShowProgressBar(); UpdateLoadingInfo(); } - else + else if (SubBoostrap.RuntimeSelection?.IsKV == true || string.IsNullOrEmpty(configCustomId)) { userService.CustomId = configCustomId; } @@ -91,37 +101,16 @@ namespace game //source = new CancellationTokenSource(); //LoadingAutoInc(source.Token, 1f); - var formalKV=SubBoostrap.RuntimeSelection?.IsKV==true; rtService.WaitForAPISvrLogin(); var step = await userService.Login(OnLoginStep); loginToken.ThrowIfCancellationRequested(); - if(formalKV) - { - StopLoadingInfo(); - LoadingScreen.HideProgressBar(); - if(step==ELoginStep.Done && kvLifecycle?.KVHandoffReady==true) - LoadingScreen.SetLoadingInfo("KV account loaded. Gameplay is not enabled yet."); - else - { - var error=kvLifecycle?.KVLastError.ToString() ?? "Input"; - dialog.Config(new SimpleDialog.Context - { - message="KV login unavailable", - message2="Login stopped ("+error+"). Sign out or restart before trying again.", - okAction=()=>userService.Logout(), closeAction=()=>userService.Logout() - }); - } - return; - } if (step != ELoginStep.Done) { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) throw game.PlayerDataStorage.PlayerKVGameplayLoop.Stop("Login failed; restart the Unity process before another attempt."); -#endif //source.Cancel(); //source.Dispose(); await ReytryDialog(userService.Login, LocalizationMgr.GetText("subtitle_loginfailed") , LocalizationMgr.GetText("msg_loginfailed")); + step = ELoginStep.Done; } loginToken.ThrowIfCancellationRequested(); @@ -310,7 +299,11 @@ namespace game loginLifetime?.Cancel(); loginLifetime?.Dispose(); loginLifetime = null; - if(SubBoostrap.RuntimeSelection?.IsKV==true) userService.Logout(); + if (SubBoostrap.RuntimeSelection?.IsKV == true && loginWork != null && + (loginWork.Status != TaskStatus.RanToCompletion || kvLifecycle?.KVHandoffReady != true)) + { + userService.Logout(); + } } diff --git a/Client/Assets/Scripts/Stages/QuitAct.cs b/Client/Assets/Scripts/Stages/QuitAct.cs index aa58cbc13..679ae6111 100644 --- a/Client/Assets/Scripts/Stages/QuitAct.cs +++ b/Client/Assets/Scripts/Stages/QuitAct.cs @@ -34,10 +34,25 @@ namespace game public override async Task StartAsync() { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) _=game.PlayerDataStorage.PlayerKVGameplayLoop.CloseAsync(); -#endif - if(userService is PlayerDataStorage.IKVUserLifecycle closingKVUser) _=closingKVUser.CloseKVForValidationAsync(); + if (userService is PlayerDataStorage.IKVUserLifecycle closingKVUser) + { + try + { + var original = (userService as KVUserService)?.SaveStore as PlayerDataStorage.KVPlayerSaveStore; + if (original != null && original.IsCurrent) + { + _ = original.SyncDataAsync(); + } + } + catch (System.Exception ex) + { + Debug.LogError("KV quit save failed: " + ex.GetType().Name); + } + finally + { + _ = closingKVUser.CloseKVForValidationAsync(); + } + } // Invalidate identity before any await can allow old login/HTTP callbacks to resume. if (QuitStage.Logout) { @@ -54,10 +69,6 @@ namespace game catch (System.Exception ex) { Debug.LogException(ex); } // Observation is bounded; the process registry still owns any unfinished close. -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) await PlayerDataStorage.PlayerKVShutdownRegistry.Process.ObserveAsync(5000); - else -#endif if(userService is PlayerDataStorage.IKVUserLifecycle kvUser) await kvUser.ObserveKVQuitAsync(); adsService.Release(); @@ -87,16 +98,6 @@ namespace game } } base.OnStarted(); -#if UNITY_EDITOR && !SERVICE_HOST - if (game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) - { - var status = PlayerDataStorage.PlayerKVShutdownRegistry.Process.Status; - Debug.Log("KV loop ended; restart Unity before another run. Shutdown: " + status); - if (status == PlayerDataStorage.PlayerKVShutdownStatus.Ready) - UnityEditor.EditorApplication.isPlaying = false; - return; // Keep the process barrier; never return this run to PreBoot. - } -#endif Invoke("Unload", 2f); } } diff --git a/Client/Assets/Scripts/SubBoostrap.cs b/Client/Assets/Scripts/SubBoostrap.cs index 94614b874..350a7ec55 100644 --- a/Client/Assets/Scripts/SubBoostrap.cs +++ b/Client/Assets/Scripts/SubBoostrap.cs @@ -1,4 +1,4 @@ - + using AppsFlyerSDK; using asap.core; using asap.core.common; @@ -26,9 +26,12 @@ public class SubBoostrap { internal static game.PlayerDataStorage.PlayerKVRuntimeSelection RuntimeSelection { get; private set; } - public static async System.Threading.Tasks.Task RegisterServices(GameObject rootCtxGo, IConfig config) + public static async Task RegisterServices(GameObject rootCtxGo, IConfig config) { - if(config==null) throw new ArgumentNullException(nameof(config)); + if (config == null) + { + throw new ArgumentNullException(nameof(config)); + } #if AGG const bool aggBuild=true; #else @@ -97,10 +100,14 @@ public class SubBoostrap #else GameCore.GameEventMgr.Init(); #endif -#if UNITY_EDITOR && !SERVICE_HOST - game.PlayerDataStorage.PlayerKVGameplayLoop.BeforeBootstrap(); -#endif - if(!selection.IsKV) rootCtxGo.AddComponent(); + if (!selection.IsKV) + { + rootCtxGo.AddComponent(); + } + else + { + rootCtxGo.AddComponent(); + } // TODO Replace DataCenter with seprated data class // Create(); // ----------------------------------------- diff --git a/Client/Assets/Scripts/TimeManager/TimeRefreshManager.cs b/Client/Assets/Scripts/TimeManager/TimeRefreshManager.cs index 4f93b592c..86f4686e3 100644 --- a/Client/Assets/Scripts/TimeManager/TimeRefreshManager.cs +++ b/Client/Assets/Scripts/TimeManager/TimeRefreshManager.cs @@ -20,7 +20,7 @@ namespace TimeManager _sessionStartTime = ZZTimeHelper.UtcNow().UtcNowOffset(); _lastCheckedHour = _sessionStartTime.Hour; - InitialRefreshSucceeded = CheckLastLogin(); + CheckLastLogin(); _tickService.MinuteTick .Subscribe(_ => { @@ -32,7 +32,6 @@ namespace TimeManager private readonly ITimeTickService _tickService; private readonly IUserService _userService; - public bool InitialRefreshSucceeded { get; } private int _lastCheckedDayOfYear = -1; private int _lastCheckedHour = -1; @@ -41,11 +40,14 @@ namespace TimeManager #region Check登录时间 - private bool CheckLastLogin() + private void CheckLastLogin() { - if (IsLastLoginToday()) return true; + if (IsLastLoginToday()) + { + return; + } Debug.Log("上次登录不是今天"); - return OnCrossDayRefresh(); + OnCrossDayRefresh(); } private void CheckSessionCrossDay() { @@ -123,18 +125,16 @@ namespace TimeManager /// /// 跨天刷新逻辑 /// - private bool OnCrossDayRefresh() + private void OnCrossDayRefresh() { try { // 1. 发送活动跨天刷新事件 GContext.Publish(new ActivityCrossDayRefreshEvent()); - return true; } catch (Exception e) { Debug.LogError($"[TimeRefreshManager] Error during cross day refresh: {e.Message}\n{e.StackTrace}"); - return false; } } diff --git a/Client/Assets/Scripts/UI/DeBugPanel.cs b/Client/Assets/Scripts/UI/DeBugPanel.cs index 39e2c2fc0..0f68e071c 100644 --- a/Client/Assets/Scripts/UI/DeBugPanel.cs +++ b/Client/Assets/Scripts/UI/DeBugPanel.cs @@ -581,8 +581,11 @@ public class DeBugPanel : MonoBehaviour private void ChangeMMT() { - var userService = GContext.container.Resolve() as game.PlayFabUserService; - if (userService == null) return; + var userService = GContext.container.Resolve(); + if (userService is not game.PlayFabUserService && userService is not game.KVUserService) + { + return; + } string mmt = inputField_mmt.text; List mmts = mmt.ToLower().Select(c => c.ToString()).ToList(); var mmDatas = GContext.container.Resolve().TbMMTInit.DataList; @@ -594,7 +597,14 @@ public class DeBugPanel : MonoBehaviour value |= 1 << (mmDatas[i].ID - 1001); } } - userService.GMMMT(value); + if (userService is game.KVUserService kvUserService) + { + kvUserService.GMMMT(value); + } + else + { + ((game.PlayFabUserService)userService).GMMMT(value); + } } private string _cfg_ver; diff --git a/Client/Assets/Scripts/UI/FishingReward/FishingRewardPanel.cs b/Client/Assets/Scripts/UI/FishingReward/FishingRewardPanel.cs index d6f3a5e97..496eaeeca 100644 --- a/Client/Assets/Scripts/UI/FishingReward/FishingRewardPanel.cs +++ b/Client/Assets/Scripts/UI/FishingReward/FishingRewardPanel.cs @@ -17,24 +17,6 @@ using UnityEngine.UI; public class FishingRewardPanel : BasePanel { -#if UNITY_EDITOR && !SERVICE_HOST - game.PlayerDataStorage.PlayerKVGameplayLoop.FishingRewardAction kvReward; - System.Func kvPresentation; - bool KVRewardViewCurrent() => !game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled || - (this!=null && isActiveAndEnabled && game.PlayerDataStorage.PlayerKVGameplayLoop.RewardPanelCurrent(kvReward,this)); - async System.Threading.Tasks.Task ConfirmKVRewardAsync(game.PlayerDataStorage.PlayerKVEditResult primary) - { - try - { - await game.PlayerDataStorage.PlayerKVGameplayLoop.ConfirmRewardAsync(kvReward,primary); - if(!KVRewardViewCurrent()) return; - game.PlayerDataStorage.PlayerKVGameplayLoop.PresentReward(kvReward,()=>{canvasGroup.alpha=1;canvasGroup.blocksRaycasts=true;canvasGroup.interactable=true;}); - if(kvPresentation!=null) await kvPresentation(); - } - catch(System.Exception e) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault(e.Message); } - } - void OnDisable() => game.PlayerDataStorage.PlayerKVGameplayLoop.CancelReward(this,"reward panel disabled"); -#endif Tables _tables; private CanvasGroup canvasGroup; private CanvasGroup root_success; @@ -163,9 +145,6 @@ public class FishingRewardPanel : BasePanel dragImage = transform.Find("root_success/UIDrag").GetComponent(); canvasGroup = GetComponent(); -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) { canvasGroup.alpha=0; canvasGroup.blocksRaycasts=false; canvasGroup.interactable=false; } -#endif root_success = transform.Find("root_success").GetComponent(); @@ -263,9 +242,6 @@ public class FishingRewardPanel : BasePanel } if (GContext.container.Resolve().IsOpenDrop) { -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) -#endif CheckResource(); } } @@ -284,12 +260,8 @@ public class FishingRewardPanel : BasePanel fishingData = GContext.container.Resolve(); Magnification = playerData.GetMagnification(); - playButton.onClick.AddListener(OnClickInHome); -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) -#endif - { go_fishPhoto.OnBackClick = OnBackClick; + playButton.onClick.AddListener(OnClickInHome); targetBtn.onClick.AddListener(OnTargetClosePanel); oneVOneBattleBtn.onClick.AddListener(OnTargetClosePanel); btn_green.onClick.AddListener(OnSucceed); @@ -319,7 +291,6 @@ public class FishingRewardPanel : BasePanel dragImage.OnDragCall += OnDragFish; dragImage.OnEndDragCall += StartDoRotate; - } OnShow(); } void StartDoRotate() @@ -338,31 +309,6 @@ public class FishingRewardPanel : BasePanel } void OnShow() - { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) - { - try - { - var bound=game.PlayerDataStorage.PlayerKVGameplayLoop.BindRewardPanel(this); - if(bound==null) return; - kvReward=bound; - game.PlayerDataStorage.PlayerKVEditResult primary; - using(game.PlayerDataStorage.PlayerKVGameplayLoop.BeginRewardSegment("reward")) - { - OnShowCore(); - playerFishData.SaveCaughtFishForKVLoop(fishID); - primary=playerData.SaveFishingRewardForKVLoop(); - } - _=ConfirmKVRewardAsync(primary); - } - catch(System.Exception e) { game.PlayerDataStorage.PlayerKVGameplayLoop.Fault(e.Message); } - return; - } -#endif - OnShowCore(); - } - void OnShowCore() { var normalRank = _tables.TbGlobalConfig.Rank; var spRank = _tables.TbGlobalConfig.RankForSpFish; @@ -425,23 +371,13 @@ public class FishingRewardPanel : BasePanel if (fishingData.fishingResult == FishingResult.Success) { -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) -#endif AudioRewardPanel(); root_fail.SetActive(false); root_success.gameObject.SetActive(fishingData.IsGeneralFish()); root_target.SetActive(fishingData.IsKeepsakeFish() || fishingData.IsPackItemFish()); root_1v1battle.SetActive(fishingData.fishItem.IsSpinachItem()); float pointBonus = playerFishData.GetRodAscendStats(); -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) kvPresentation=ApplySuccess(pointBonus); - else -#endif Success(pointBonus); -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) -#endif StartCoroutine(Blur()); #if AGG @@ -482,9 +418,6 @@ public class FishingRewardPanel : BasePanel } #endif GContext.Publish(new OnEventTriggerGuide(GetType().Name)); -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) game.PlayerDataStorage.PlayerKVGameplayLoop.RecordRewardGuideNotification(); -#endif fishingData.IsRetry = false; } else @@ -548,19 +481,11 @@ public class FishingRewardPanel : BasePanel //Pulling 结束后 float time = fishingData.fishingBehaviorConf.blurDelay; yield return new WaitForSeconds(time); -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVRewardViewCurrent()) yield break; -#endif EnableFishingBlur(true); } //钓鱼成功 async void Success(float pointBonus) - { - var present=ApplySuccess(pointBonus); - if(present!=null) await present(); - } - System.Func ApplySuccess(float pointBonus) { go_info.gameObject.SetActive(false); GContext.container.Resolve().SaveFishingFrequency(); @@ -572,9 +497,6 @@ public class FishingRewardPanel : BasePanel GContext.container.Resolve().AddItemCount(curCollectingID, addCollecting, null); MaterialChange(); } -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) -#endif PlayAudioRewardFish(); GContext.container.Resolve().EndCollectionTargetWeight(fishingData.fishItem.ID); fishingEventData.AddProgress(fishingData.fishItem.Quality, Magnification); @@ -644,9 +566,6 @@ public class FishingRewardPanel : BasePanel } GContext.Publish(new TargetAddData(dropPackageList.DropIDList[1], 0, add)); var isSpecialFish = fishingData.curFishData.GeneralType == FishGeneralType.SpMapFish || fishingData.curFishData.GeneralType == FishGeneralType.EventFish; -#if UNITY_EDITOR && !SERVICE_HOST - if(!game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) -#endif SetTextTitleAsync(proficiencyExtra, isSpecialFish); SetFishWeight(fishingData.fishWeight); MMTService mmService = GContext.container.Resolve(); @@ -661,28 +580,6 @@ public class FishingRewardPanel : BasePanel } } bonusReward.Show(Magnification); -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) - return async ()=> - { - if(!KVRewardViewCurrent()) return; - AudioRewardPanel(); PlayAudioRewardFish(); SetTextTitleAsync(proficiencyExtra,isSpecialFish); - _ = StartCoroutine(Blur()); - await PresentGeneralRewardAsync(glodBuff); - }; -#endif - return ()=>PresentGeneralRewardAsync(glodBuff); - } - else if (fishingData.fishItem.IsSpinachItem()) - { - //todo 1v1battle - root_1v1battle_text_info.text=LocalizationMgr.GetText("UI_GiftBargainPopupPanel_8"); - } - return null; - } - - async System.Threading.Tasks.Task PresentGeneralRewardAsync(float glodBuff) - { _ = StartCoroutine(AddCash()); //Show Fish Info UI go_info.gameObject.SetActive(true); @@ -696,11 +593,7 @@ public class FishingRewardPanel : BasePanel anim_panel.Play("info_show_2"); await new WaitForSeconds(waitTime1 + duration1 + waitTime2); - if (!isEnable -#if UNITY_EDITOR && !SERVICE_HOST - || !KVRewardViewCurrent() -#endif - ) + if (!isEnable) { return; } @@ -712,9 +605,6 @@ public class FishingRewardPanel : BasePanel var addCash = add - newCash; DOTween.To(() => progress, x => progress = x, 1f, duration2).OnUpdate(() => { -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVRewardViewCurrent()) return; -#endif text_gold_num.text = ConvertTools.GetNumberString2((int)(newCash + addCash * progress)); text_num_buff.text = text_gold_num.text; }).SetId("AddCash"); @@ -730,14 +620,17 @@ public class FishingRewardPanel : BasePanel } VibrationData(); fishingRewardSocial.ShowSocial(isSocial); + } + else if (fishingData.fishItem.IsSpinachItem()) + { + //todo 1v1battle + root_1v1battle_text_info.text=LocalizationMgr.GetText("UI_GiftBargainPopupPanel_8"); + } } async void VibrationData() { await Awaiters.Seconds(2.5f); -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVRewardViewCurrent()) return; -#endif if (curRateIndex >= _tables.TbGlobalConfig.RankVibration.Count) curRateIndex = _tables.TbGlobalConfig.RankVibration.Count - 1; int hapticType = _tables.TbGlobalConfig.RankVibration[curRateIndex]; @@ -824,14 +717,8 @@ public class FishingRewardPanel : BasePanel var progress = 0f; int cash = add / Magnification; yield return Awaiters.Seconds(waitTime1); -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVRewardViewCurrent()) yield break; -#endif DOTween.To(() => progress, x => progress = x, 1, duration1).OnUpdate(() => { -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVRewardViewCurrent()) return; -#endif text_weight_num.text = LocalizationMgr.GetFormatTextValue("UI_FishingRewardPanel_101014", ConvertTools.GetNumberString2((int)(_fishScore * progress))); text_pound.text = LocalizationMgr.GetWeight(fishingData.fishWeight * progress, true); @@ -842,9 +729,6 @@ public class FishingRewardPanel : BasePanel .SetId("AddCash") .OnComplete(() => { -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVRewardViewCurrent()) return; -#endif text_pound.text = LocalizationMgr.GetWeight(fishingData.fishWeight); } ); @@ -869,10 +753,7 @@ public class FishingRewardPanel : BasePanel curRate = etor.Current.Key; } while (etor.MoveNext()); - var rateObject=await Addressables.InstantiateAsync(curRate, icon_rate).Task; -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVRewardViewCurrent() && rateObject!=null) Addressables.ReleaseInstance(rateObject); -#endif + await Addressables.InstantiateAsync(curRate, icon_rate).Task; } bool _newRecord; @@ -1176,10 +1057,6 @@ public class FishingRewardPanel : BasePanel protected override void OnDestroy() { -#if UNITY_EDITOR && !SERVICE_HOST - game.PlayerDataStorage.PlayerKVGameplayLoop.CancelReward(this,"reward panel destroyed"); -#endif - //ConvertTools.SetFSBlur(false); EnableFishingBlur(false); GContext.Publish(new PlayNewItemFxEvent() { type = 2 }); @@ -1276,9 +1153,6 @@ public class FishingRewardPanel : BasePanel if (!string.IsNullOrEmpty(fishingData.AudioRewardFish)) { NewItemAudio = await Addressables.LoadAssetAsync(fishingData.AudioRewardFish).Task; -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVRewardViewCurrent()) { if(NewItemAudio!=null) Addressables.Release(NewItemAudio); NewItemAudio=null; return; } -#endif PlayNewItemAudio(); fishingData.AudioRewardFish = ""; } @@ -1340,9 +1214,6 @@ public class FishingRewardPanel : BasePanel await GContext.container.Resolve().PlayFishingSound(fishingData.curFishData.AudioRewardPanel); } await Awaiters.NextFrame; -#if UNITY_EDITOR && !SERVICE_HOST - if(!KVRewardViewCurrent()) return; -#endif if (this != null && !string.IsNullOrEmpty(fishingData.curFishData.AudioRewardPanelLoop)) { GContext.Publish(new EventBGMSound(fishingData.curFishData.AudioRewardPanelLoop)); @@ -1365,10 +1236,6 @@ public class FishingRewardPanel : BasePanel string fishName = "0"; private void OnGUI() { -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) return; -#endif - int fontSize = 40; GUI.skin.textField.fontSize = fontSize; GUI.skin.button.fontSize = fontSize; diff --git a/Client/Assets/Scripts/UI/JigsawPuzzle/JigsawPuzzleManager.cs b/Client/Assets/Scripts/UI/JigsawPuzzle/JigsawPuzzleManager.cs index 066f2a921..50de97eb1 100644 --- a/Client/Assets/Scripts/UI/JigsawPuzzle/JigsawPuzzleManager.cs +++ b/Client/Assets/Scripts/UI/JigsawPuzzle/JigsawPuzzleManager.cs @@ -12,7 +12,7 @@ namespace Assets.Scripts.UI.JigsawPuzzle { public class JigsawPuzzleManager:IDisposable { - readonly game.PlayerDataStorage.IPlayerSaveStore saveStore = GContext.container.Resolve(); + readonly game.PlayerDataStorage.IPlayerSaveStore saveStore = GContext.container.Resolve(); public const string PriceImgName = "separate_icon_eventjigsawpuzzle_piece_"; diff --git a/Client/Assets/Scripts/UI/PinataPack/EventPinataPackDataManager.cs b/Client/Assets/Scripts/UI/PinataPack/EventPinataPackDataManager.cs index 17d96f55c..ffa798c80 100644 --- a/Client/Assets/Scripts/UI/PinataPack/EventPinataPackDataManager.cs +++ b/Client/Assets/Scripts/UI/PinataPack/EventPinataPackDataManager.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using asap.core; using cfg; using GameCore; @@ -12,32 +12,13 @@ namespace game { [asap.core.Inject] public game.PlayerDataStorage.IPlayerSaveStore SaveStore { get; set; } - private readonly EventPinataPackData _kvTarget; - private EventPinataPackDataManager(EventPinataPackData target) { _kvTarget=target; } - internal static EventPinataPackDataManager CreateForKVLoad() - { - var target=GContext.container.Resolve(); - if(target==null) throw new System.InvalidOperationException("KV Pinata target is not registered."); - return new EventPinataPackDataManager(target); - } - private EventPinataPackData RequireKVTarget() - { - var target=GContext.container.Resolve(); - if(target==null || (_kvTarget!=null && !ReferenceEquals(target,_kvTarget))) - throw new System.InvalidOperationException("KV Pinata target changed."); - return target; - } - internal static PlayerDataStorage.PlayerKVPinataState DecodeForKVLoad(IReadOnlyDictionary raw, - PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => PlayerDataStorage.PlayerKVSaveSchema.DecodePinata(raw,errors); - internal void ResetForKVLoad() - { - var target=RequireKVTarget(); target.EventID=0; target.PinataMainID=0; target.PurchasedCount=0; - } - internal void ReplaceFromKVDecoded(PlayerDataStorage.PlayerKVPinataState state) - { - if(state==null) throw new System.ArgumentNullException(nameof(state)); - var target=RequireKVTarget(); target.EventID=state.EventID; target.PinataMainID=state.PinataMainID; target.PurchasedCount=state.PurchasedCount; - } + + + + + + + #if UNITY_EDITOR private bool m_IsCheckCondition = true; #else diff --git a/Client/Assets/Scripts/UI/Rod/FishingRodPanel_Level.cs b/Client/Assets/Scripts/UI/Rod/FishingRodPanel_Level.cs index 72512cd7d..a33e8625e 100644 --- a/Client/Assets/Scripts/UI/Rod/FishingRodPanel_Level.cs +++ b/Client/Assets/Scripts/UI/Rod/FishingRodPanel_Level.cs @@ -228,12 +228,7 @@ public partial class FishingRodPanel : BasePanel fx_rodpanel_upgrade_change.SetActive(false); } -#if UNITY_EDITOR && !SERVICE_HOST - bool kvEquipInFlight; - async void OnClickEquip() -#else void OnClickEquip() -#endif { if (data.config.ID == GContext.container.Resolve().equipRodID || data.isLock) { @@ -244,17 +239,6 @@ public partial class FishingRodPanel : BasePanel ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_26")); return; } -#if UNITY_EDITOR && !SERVICE_HOST - if(game.PlayerDataStorage.PlayerKVGameplayLoop.Enabled) - { - if(kvEquipInFlight) return; - kvEquipInFlight=true; - try { await GContext.container.Resolve().SetEquipRodIDForKVLoopAsync(data.config.ID); } - catch(System.Exception e) { Debug.LogException(e); return; } - finally { kvEquipInFlight=false; } - } - else -#endif GContext.container.Resolve().SetEquipRodID(data.config.ID); btn_equip_go.gameObject.SetActive(false); equipped.SetActive(true); diff --git a/Client/Assets/Scripts/UI/Setting/SettingNotificationsGradePopupPanel.cs b/Client/Assets/Scripts/UI/Setting/SettingNotificationsGradePopupPanel.cs index 9b5c35746..bf3b709fd 100644 --- a/Client/Assets/Scripts/UI/Setting/SettingNotificationsGradePopupPanel.cs +++ b/Client/Assets/Scripts/UI/Setting/SettingNotificationsGradePopupPanel.cs @@ -8,10 +8,8 @@ public class SettingNotificationsGradePopupPanel : MonoBehaviour { public Button btn_ok; public Button btn_cancel; - ISettingService settings; - ILocalNotificationService notifications; - bool handling; - bool completed; + private ISettingService settings; + private ILocalNotificationService notifications; private void Start() { settings = GContext.container.Resolve(); @@ -21,34 +19,24 @@ public class SettingNotificationsGradePopupPanel : MonoBehaviour } private void OnBtnOk() { - HandlePrompt(true); + if (this == null) + { + return; + } + (settings as DefaultSettingService)?.RequirePromptOwner(); + (notifications as LocalNotificationService)?.RequirePromptOwner(settings); + DestroyUI(); + notifications.OpenSettings(); } void DestroyUI() { - HandlePrompt(false); - } - async void HandlePrompt(bool openSettings) - { - if (this == null || handling || completed) return; - handling = true; - try + if (this == null) { - (settings as DefaultSettingService)?.RequirePromptOwner(); - (notifications as LocalNotificationService)?.RequirePromptOwner(settings); - settings.ShowNotice = true; - if (openSettings && settings is DefaultSettingService bound && bound.HasKVPromptOwner) - { - await ((LocalNotificationService)notifications).OpenSettingsAsync(); - if (this == null) return; - bound.RequirePromptOwner(); - } - (settings as DefaultSettingService)?.RequirePromptOwner(); - completed = true; - UIManager.Instance.DestroyUI(gameObject.name); - if (openSettings && !(settings is DefaultSettingService kv && kv.HasKVPromptOwner)) - notifications.OpenSettings(); + return; } - catch (System.Exception ex) { game.DefaultSettingService.LogPromptFailure(ex); } - finally { handling = false; } + (settings as DefaultSettingService)?.RequirePromptOwner(); + (notifications as LocalNotificationService)?.RequirePromptOwner(settings); + settings.ShowNotice = true; + UIManager.Instance.DestroyUI(gameObject.name); } } diff --git a/Client/Assets/Scripts/UI/Setting/SettingNotificationsPopupPanel.cs b/Client/Assets/Scripts/UI/Setting/SettingNotificationsPopupPanel.cs index ac8b4b3e8..a6020ebf8 100644 --- a/Client/Assets/Scripts/UI/Setting/SettingNotificationsPopupPanel.cs +++ b/Client/Assets/Scripts/UI/Setting/SettingNotificationsPopupPanel.cs @@ -7,48 +7,30 @@ public class SettingNotificationsPopupPanel : MonoBehaviour { public Button btn_ok; public Button btn_cancel; - ILocalNotificationService notifications; - bool handling; - bool completed; + private ILocalNotificationService notifications; private void Start() { notifications = GContext.container.Resolve(); btn_ok.onClick.AddListener(OnBtnOk); btn_cancel.onClick.AddListener(DestroyUI); } - private async void OnBtnOk() + private void OnBtnOk() { - if (this == null || handling || completed) return; - handling = true; - try + if (this == null) { - if (notifications is LocalNotificationService local && local.HasKVPromptOwner) - { - local.RequirePromptOwner(); - await local.OpenSettingsAsync(); - if (this == null) return; - local.RequirePromptOwner(); - } - else - { - DestroyUI(); - notifications.OpenSettings(); - return; - } - DestroyUI(); + return; } - catch (System.Exception ex) { game.DefaultSettingService.LogPromptFailure(ex); } - finally { handling = false; } + (notifications as LocalNotificationService)?.RequirePromptOwner(); + DestroyUI(); + notifications.OpenSettings(); } void DestroyUI() { - if (this == null || completed) return; - try + if (this == null) { - (notifications as LocalNotificationService)?.RequirePromptOwner(); - completed = true; - UIManager.Instance.DestroyUI(gameObject.name); + return; } - catch (System.Exception ex) { game.DefaultSettingService.LogPromptFailure(ex); } + (notifications as LocalNotificationService)?.RequirePromptOwner(); + UIManager.Instance.DestroyUI(gameObject.name); } } diff --git a/Client/Assets/Scripts/UI/Setting/SettingPopupPanel.cs b/Client/Assets/Scripts/UI/Setting/SettingPopupPanel.cs index 4295c2c73..9b8eb3a20 100644 --- a/Client/Assets/Scripts/UI/Setting/SettingPopupPanel.cs +++ b/Client/Assets/Scripts/UI/Setting/SettingPopupPanel.cs @@ -11,8 +11,8 @@ using UnityEngine.UI; public class SettingPopupPanel : MonoBehaviour { - ISettingService settingService; - ILocalNotificationService notificationService; + private ISettingService settingService; + private ILocalNotificationService notificationService; public Button btn_close; public Button btn_mask; public BtnSwitch music; @@ -216,15 +216,20 @@ public class SettingPopupPanel : MonoBehaviour } private void OnToggleNotification(bool isOn) { - try + if (this == null) { - if (this == null) return; - (settingService as DefaultSettingService)?.RequirePromptOwner(); - (notificationService as LocalNotificationService)?.RequirePromptOwner(settingService); - if (isOn) notificationService.OpenSettings(); - else UIManager.Instance.ShowUI(new UIType("SettingNotificationsPopupPanel")); + return; + } + (settingService as DefaultSettingService)?.RequirePromptOwner(); + (notificationService as LocalNotificationService)?.RequirePromptOwner(settingService); + if (isOn) + { + notificationService.OpenSettings(); + } + else + { + UIManager.Instance.ShowUI(new UIType("SettingNotificationsPopupPanel")); } - catch (System.Exception ex) { game.DefaultSettingService.LogPromptFailure(ex); } } private void OnChangeLanguage(ChangeLanguageEvent changeLanguageEvent = null) diff --git a/Client/Assets/Scripts/UI/ShootingRange/ShootingRangeData.cs b/Client/Assets/Scripts/UI/ShootingRange/ShootingRangeData.cs index d33439872..1da994005 100644 --- a/Client/Assets/Scripts/UI/ShootingRange/ShootingRangeData.cs +++ b/Client/Assets/Scripts/UI/ShootingRange/ShootingRangeData.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using asap.core; using cfg; @@ -12,40 +12,13 @@ public class EventShootingRangeData : IChainPackData private RawData _data = new RawData(); - private bool _kvLoadPresent; - internal bool KVLoadPresent => _kvLoadPresent; - internal static game.PlayerDataStorage.PlayerKVShootingRangeState DecodeForKVLoad( - IReadOnlyDictionary raw, game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeShootingRange(raw, snapshot, errors); + + + - internal void ResetForKVLoad() - { - _kvLoadPresent = false; - _data = default(RawData); - } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVShootingRangeState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - if (!state.IsPresent) { ResetForKVLoad(); return; } - var replacement = new RawData - { - EventId = state.EventId, - CycleId = state.CycleId, - RedirectId = state.RedirectId, - AmmoCount = state.AmmoCount, - CurrentStageIdx = state.CurrentStageIdx, - ChainProgress = state.ChainProgress, - RewardFlag = state.RewardFlag, - TargetFlag = state.TargetFlag, - HasBeenOpened = state.HasBeenOpened, - Inflation = state.Inflation, - }; - _data = replacement; - _kvLoadPresent = true; - } - internal game.PlayerDataStorage.PlayerKVShootingRangeState SnapshotForKVValidation() => - new game.PlayerDataStorage.PlayerKVShootingRangeState(_kvLoadPresent, _data.EventId, _data.CycleId, _data.RedirectId, _data.AmmoCount, _data.CurrentStageIdx, _data.ChainProgress, _data.RewardFlag, _data.TargetFlag, _data.HasBeenOpened, _data.Inflation); + + + private readonly Tables _tables = GContext.container.Resolve(); private readonly TbPack _pack = GContext.container.Resolve().TbPack; private readonly TbEventPackManager _eventPackManager = GContext.container.Resolve().TbEventPackManager; diff --git a/Client/Assets/Scripts/UI/Shop/BlackFridayCouponData.cs b/Client/Assets/Scripts/UI/Shop/BlackFridayCouponData.cs index a701293e8..503728253 100644 --- a/Client/Assets/Scripts/UI/Shop/BlackFridayCouponData.cs +++ b/Client/Assets/Scripts/UI/Shop/BlackFridayCouponData.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using asap.core; using cfg; @@ -48,10 +48,8 @@ public class BlackFridayCouponData ZZTimeHelper.UtcNow() <= ActivateTime + TimeSpan.FromSeconds(EventDuration) && !IsBought; public int Multiplier => GContext.container.Resolve().TbEventCoupon[RedirectId].Multiple; public int EventDuration => GContext.container.Resolve().TbEventCoupon[RedirectId].Time; - internal void ResetForKVLoad() - { ActivateTime=default; EventId=0; RedirectId=0; _isBought=false; DoesPop=true; } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVCouponState state) - { if(state==null) throw new ArgumentNullException(nameof(state)); ActivateTime=state.ActivateTime; EventId=state.EventId; RedirectId=state.RedirectId; _isBought=state.Bought; } + + public void LoadData(string s) { diff --git a/Client/Assets/Scripts/UI/Shop/ChainPackWithProgressData.cs b/Client/Assets/Scripts/UI/Shop/ChainPackWithProgressData.cs index 76382c49c..1d7c1343f 100644 --- a/Client/Assets/Scripts/UI/Shop/ChainPackWithProgressData.cs +++ b/Client/Assets/Scripts/UI/Shop/ChainPackWithProgressData.cs @@ -1,4 +1,4 @@ -using asap.core; +using asap.core; using cfg; using GameCore; namespace GameCore @@ -11,9 +11,7 @@ namespace GameCore } public class ChainPackWithProgressMigrationData : ThanksGivingPackData { - internal new static game.PlayerDataStorage.PlayerKVProgressPackState DecodeForKVLoad(System.Collections.Generic.IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeProgressPack(raw,true,errors); + public new const string Key = "ThanksGivingPackMigrationData"; public override string RedPointKey => "thanks_giving"; protected override string key => Key; diff --git a/Client/Assets/Scripts/UI/Shop/GiftNoticePanel.cs b/Client/Assets/Scripts/UI/Shop/GiftNoticePanel.cs index aa4b2a62b..e702eb174 100644 --- a/Client/Assets/Scripts/UI/Shop/GiftNoticePanel.cs +++ b/Client/Assets/Scripts/UI/Shop/GiftNoticePanel.cs @@ -16,8 +16,7 @@ public class GiftNoticePanel : MonoBehaviour Button btn_watch2; public RewardItemNew[] rewardItemNews; private Tables _tables; - ILocalNotificationService notificationService; - bool handlingNotification; + private ILocalNotificationService notificationService; private void Awake() { @@ -61,29 +60,15 @@ public class GiftNoticePanel : MonoBehaviour PlayerPrefs.SetInt("GiftNoticePanel", 1); OnClose(); } - async void OnClickYES() + void OnClickYES() { - if (this == null || handlingNotification) return; - handlingNotification = true; - try + if (this == null) { - if (notificationService is LocalNotificationService local && local.HasKVPromptOwner) - { - local.RequirePromptOwner(); - await local.OpenSettingsAsync(); - if (this == null) return; - local.RequirePromptOwner(); - } - else - { - OnClose(); - notificationService.OpenSettings(); - return; - } - OnClose(); + return; } - catch (System.Exception ex) { game.DefaultSettingService.LogPromptFailure(ex); } - finally { handlingNotification = false; } + (notificationService as LocalNotificationService)?.RequirePromptOwner(); + OnClose(); + notificationService.OpenSettings(); } void OnClose() { diff --git a/Client/Assets/Scripts/UI/Shop/ThanksGivingPackData.cs b/Client/Assets/Scripts/UI/Shop/ThanksGivingPackData.cs index 999311b4c..fb0156c5c 100644 --- a/Client/Assets/Scripts/UI/Shop/ThanksGivingPackData.cs +++ b/Client/Assets/Scripts/UI/Shop/ThanksGivingPackData.cs @@ -1,4 +1,4 @@ -using UnityEngine; +using UnityEngine; using System; using System.Collections.Generic; using System.Linq; @@ -27,18 +27,10 @@ public class ThanksGivingPackData : IProgressChainPackData protected Data _data = new Data(0, 0, 0, 0); - internal static game.PlayerDataStorage.PlayerKVProgressPackState DecodeForKVLoad(IReadOnlyDictionary raw, - game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) => - game.PlayerDataStorage.PlayerKVSaveSchema.DecodeProgressPack(raw,false,errors); - internal void ResetForKVLoad() { _data = null; } - internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVProgressPackState state) - { - if (state == null) throw new ArgumentNullException(nameof(state)); - _data = state.IsPresent ? new Data(state.EventId,state.RedirectId,state.TokenProgress,state.ChainProgress) : null; - } - internal game.PlayerDataStorage.PlayerKVProgressPackState SnapshotForKVValidation() => _data == null - ? new game.PlayerDataStorage.PlayerKVProgressPackState(false,0,0,0,0) - : new game.PlayerDataStorage.PlayerKVProgressPackState(true,_data.EventId,_data.RedirectId,_data.TokenProgress,_data.ChainProgress); + + + + /// /// Starts with 0, representing the first unclaimed reward. /// diff --git a/Client/Assets/Scripts/UI/Turntable/FishingTurntablePanel.cs b/Client/Assets/Scripts/UI/Turntable/FishingTurntablePanel.cs index 1ef76616d..c2b9b1fc3 100644 --- a/Client/Assets/Scripts/UI/Turntable/FishingTurntablePanel.cs +++ b/Client/Assets/Scripts/UI/Turntable/FishingTurntablePanel.cs @@ -581,8 +581,8 @@ public class FishingTurntablePanel : BasePanel } private async void ConsumeOnPlayfab() { - var success = (await saveStore.WriteAndConfirmAsync("TurntableRoll", -(_fishingEventData.TurntableCoupon - wheelLevel.CostNumber).ToString())).Confirmed; + var success = await saveStore.SyncDataImmidiate("TurntableRoll", + (_fishingEventData.TurntableCoupon - wheelLevel.CostNumber).ToString()); Debug.Log($"[FishingTurntablePanel::ConsumeOnPlayfab] {success}"); isDataSynced = true; }