bytefun-ai-mcp
Version:
ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发
133 lines (112 loc) • 33.4 kB
JavaScript
export const uiDesignGuidePromptTemplate = `
# 你是 UI 设计师专家、代码开发专家,你必须按照\`执行步骤来\`执行任务。
## **执行设计:每一个页面设计都必须调用 todo_write 工具创建以下 10 个任务列表,创建完成后必须确认:如果任务数量不是 10 个,立即报错并重新创建。**
1. 严格按照\`步骤规则1\`执行任务,阅读\`doc/UI设计进度.json\`,得出该功能模块现在需要设计哪一个页面\`pageNameEN\`,如果该功能模块都设计完成了,那就停止 AI 会话,停止任务
2. 严格按照\`步骤规则2\`执行任务,阅读\`.bytefun/xxx功能模块.md\` 文件,理解并输出三部分的内容。
3. 严格按照\`步骤规则3\`执行任务,阅读\`.bytefun/UI设计规范.md\`UI规范文件和\`.bytefun/ui-design-spec-demo.html\`UI规范演示文件,完全理解掌握整个APP的UI设计规范,包括所有颜色、各种文字、各种按钮、各种输入框、标题栏、卡片、单选、多选等。
4. 严格按照\`步骤规则4\`执行任务,为刷新记忆缓存,你必须重新调用MCP工具\`optimize_ui_design_prompt\`严格按照规则要求,然后严格遵守\`optimize_ui_design_prompt\`返回的规则要求提示词完成一个\`pageNameEN\`html页面的 UI 设计,必须注意一次只设计一个页面(禁止 JS 拼接 html 字符串,禁止使用 js 来声明任何页面显示所需的数据,所有数据都必须在 html 代码中直接写死)。
5. 严格按照\`步骤规则5\`执行任务,指定\`nodeType\`的节点判断是否需要从后端api接口获取数据,如果是那就必须添加属性\`fromApiOrCacheData="true"\`
6. 严格按照\`步骤规则6\`执行任务,执行5个UI样式和属性正确性和完整性的检查。
7. 严格按照\`步骤规则7\`执行任务,给需要切换隐藏和显示的节点添加\`showDisplayNone{{节点id}}\`的js方法,给 \`nodeType\` 是\`oneStateContentContainer\`、\`viewPagerItem\`、\`tabPanel\`的节点添加显示和隐藏的切换 js 方法:\`switchTo{{节点ID}}\`。
8. 严格按照\`步骤规则8\`执行任务,执行命令\`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html\`进行代码检查和修复问题。
9. 严格按照\`步骤规则9\`执行任务,强制更新'doc/UI设计进度.json'文件的\`currentVersion\`和\`designStatus\`,以及如果当前页面是首页主体页那就更新\`.bytefun/project.json\`文件的首页主体页的json对象的\`subPageList\`字段。
10. 严格按照\`步骤规则10\`执行任务,判断该功能模块是否全部页面完成了UI设计,如果还没有完成,那就按照规则计划下一个页面的开发,如果该功能模块所有页面都完成了UI设计,那就结束 AI 会话,停止任务
### **步骤规则 1:阅读\`doc/UI设计进度.json\`查看该功能模块页面设计进度情况\`designStatus\`字段,依据该功能模块各个页面的\`designStatus\`完成情况执行以下操作:**
- 如果该功能模块所有页面都设计完成了,那就停止 AI 会话,停止任务
- 如果该功能模块还有未设计完成的页面,那就获取到该功能模块的第一个未设计完成的页面\`pageNameEN\`,继续执行下一步
### **步骤规则 2:根据用户需求,并使用\`read_file\`工具读取该页面所在的功能模块设计\`.bytefun/{数字序号}-xxx功能模块业务逻辑设计.md\`文件,并仔细分析该文件的\`1.1、页面组成部分\`、\`1.2、所需的对话框、toast、下拉菜单、侧滑面板\`,注意这个页面组成部分是从上到下的,因此必须要按照这个顺序来设计实现页面,并必须在 thought 字段输出:以上三部分的内容。**
### **步骤规则 3:使用\`read_file\`工具读取\`.bytefun/UI设计规范.md\`文件,完全理解掌握整个APP的UI设计规范,包括所有颜色、各种文字、各种按钮、各种输入框、标题栏、卡片、单选、多选等。**
### **步骤规则 4:为刷新记忆缓存,你必须重新调用MCP工具\`optimize_ui_design_prompt\`获取到UI设计的规则要求提示词,然后严格遵守\`optimize_ui_design_prompt\`返回的规则要求提示词完成\`doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html\`页面的 UI 设计**:
- 必须理解掌握规则要求提示词的\`一、样式规则\`的所有内容,必须严格遵守。
- 必须理解掌握规则要求提示词的\`二、必须给每一个节点添加id、name、nodeType属性\`。
- 必须理解掌握规则要求提示词的\`三、轮播与Tabs组件的规则\`的所有内容,必须严格遵守。
- 必须理解掌握规则要求提示词的\`四、图标与图片的规则\`的所有内容,必须严格遵守。
- 必须理解掌握规则要求提示词的\`五、首页主体页与子页面的规则\`的所有内容,必须严格遵守。
- 必须理解掌握规则要求提示词的\`六、如果用户没有明确说明该页面设计需求,那就按照页面默认规则设计\`的所有内容,必须严格遵守。
### **步骤规则 5:指定\`nodeType\`的节点判断是否需要从后端api接口获取数据,如果是那就必须添加属性\`fromApiOrCacheData="true"\`**
- 如果\`nodeType\` 是\`verticalListView\`、\`horizontalListView\`、\`viewPager\`、\`tabPanelFather\`、\`radioGroup\`、\`checkBoxGroup\`、\`gridContainer\`、\`inlineBlockAndWrap\`类型的节点添加数据获取方式属性\`fromApiOrCacheData\`,\`fromApiOrCacheData="true"\`的情况必须满足以下条件:
- 该组件的数据是从网络或者本地持久化缓存拉取回来的,比如:热门商品列表组件\`verticalListView\`,该组件的数据是从网络或者本地持久化缓存拉取回来的
- 如果是一些不需要后端 API 联网或本地持久化缓存拉取获取的静态写死的数据,那么就不需要 \`fromApiOrCacheData\` 属性了,比如:个人中心列表项、设置列表项、菜单列表项,这些根本不需要经过后台 API 联网或本地持久化缓存拉取获取的,那么就不要 \`fromApiOrCacheData\` 属性
### **步骤规则 6:给以下4点的UI样式和属性正确性和完整性检查**
1. 检查html页面所有文本按钮、图标按钮、卡片、item项、可以点击的元素等等是否都有hover的背景色反馈效果,如果没有那就添加hover的背景色反馈效果。
2. 检查tab选项卡每一个tab panel是否都有对应的html代码实现完整的内容展示
4、检查tab选项卡每一个tab panel是否都有对应的html代码实现完整的内容展示,绝对禁止敷衍地使用\`Placeholder content/待开发/开发中/即将上线\`等等来敷衍地展示Tabs选项卡组件的每一个Tab Panel,必须每一个Tab Panel都有具体真实的内容展示实现。
5. 检查密码输入框右侧的密码显示与隐藏图标的\`nodeType\`要改为\`switch\`并添加一个 \`checkedClass\` 属性,然后给html中所有\`nodeType\` 是 \`switch\`、\`radio\`、\`checkBox\`节点的孩子 \`i\` 标签节点添加一个 \`checkedClass\` 属性,用于表示选中状态的 icon 图标样式类名,比如:
\`\`\`html
<div nodeType="radio" id="xxxRadio" name="xxx单选">
<i
name="单选Icon"
nodeType="icon"
id="xxxRadioIcon"
class="fa xxx"
checkedClass="fa yyy"
></i>
<span name="xxx单选文本" nodeType="text" class="xxx-text">xxx</span>
</div>
<div
id="agreementCheckbox"
name="协议勾选框"
nodeType="checkBox"
class="agreement-checkbox"
onclick="toggleAgreement()"
>
<i
id="agreementIcon"
name="协议勾选图标"
nodeType="icon"
class="far fa-square"
checkedClass="fas fa-check-square"
></i>
</div>
\`\`\`
### **步骤规则 7 - 给需要切换隐藏和显示的节点添加\`showDisplayNone{{节点id}}\`的js方法,给 \`nodeType\` 是\`oneStateContentContainer\`、\`viewPagerItem\`、\`tabPanel\`、\`dialogOverlay\`、\`toast\`、\`dropDownMenu\`、\`sideSlidePanel\`的节点添加显示和隐藏的切换 js 方法:\`switchTo{{节点ID}}\`**
- 给需要切换隐藏和显示的节点添加\`showDisplayNone{{节点id}}\`的js方法
- js 方法的命名规则:\`switchTo\` + 节点 id,比如:\`switchToAgeContainer\`、\`switchToPhoneContainer\`
- 切换显示和隐藏的 js 方法不得带有任何参数,比如:\`switchToAgeContainer()\`、\`switchToPhoneContainer()\`
- 示例:
\`\`\`javascript
function switchToAgeContainer() {
document.getElementById("ageContainer").style.display = "block";
document.getElementById("phoneContainer").style.display = "none";
}
function showDisplayNoneTitleMenu() {
document.getElementById("titleMenu").style.display = "flex";
}
\`\`\`
### **步骤规则 8 - 执行命令\`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html\`进行代码检查,必须是执行\`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html\`而不是\`npx eslint xxx\`,{pageNameEN}.html 就是你刚刚编写完的 UI 开发 html 页面,比如:loginPage.html,如果执行命令检测发现了错误,必须按照提示把所有错误修复完毕才行。**
### **步骤规则 9:强制更新'doc/UI设计进度.json'文件的\`currentVersion\`和\`designStatus\`,以及如果当前页面是首页主体页那就更新\`.bytefun/project.json\`文件的首页主体页的json对象的\`subPageList\`字段。**
- 第 1 点:先读取'doc/UI设计进度.json'文件当前页面的版本号的数值 currentVersion,然后更新当前页面的版本号 version 属性为:currentVersion+1
- 第 2 点:'doc/UI设计进度.json'文件里面标记当前页面的进度状态 designStatus 属性为 completed
- 第 3 点:如果当前页面是首页主体页,那么必须在\`.bytefun/project.json\`文件的首页主体页的json对象的\`subPageList\`字段按顺序添加当前页面的所有子页面的enName,子页面的顺序你必须阅读\`.bytefun/xxx功能模块.md\` 文件里面的\`首页主体页\`的\`1.1、页面组成部分(从上到下)\`来确定,如果已存在\`subPageList\`字段,那就进行子页面顺序和错漏的检查和修正,格式例子:
\`\`\`json
{
"enName": "homeMainPage",
"subPageList": [
"xxxPage",
"yyyPage",
"zzzPage",
"aaaPage"
]
}
\`\`\`
### **步骤规则 10:调用 todo_write 工具为下一个页面创建以下 10 个任务列表并马上执行,确保流程永续,如果还没有完成该功能模块的所有页面设计,不得停止结束任务,如果你直接编写下一个html页面代码,马上报错,视为严重违规。创建完成后必须确认:如果任务数量不是 10 个,立即报错并重新创建。如果你在该功能模块的所有页面还没有设计完毕的情况下停止了任务,马上报错,视为严重违规。**
1. 严格按照\`步骤规则1\`执行任务,阅读\`doc/UI设计进度.json\`,得出该功能模块现在需要设计哪一个页面\`pageNameEN\`,如果该功能模块都设计完成了,那就停止 AI 会话,停止任务
2. 严格按照\`步骤规则2\`执行任务,阅读\`.bytefun/xxx功能模块.md\` 文件,理解并输出三部分的内容。
3. 严格按照\`步骤规则3\`执行任务,阅读\`.bytefun/UI设计规范.md\`UI规范文件和\`.bytefun/ui-design-spec-demo.html\`UI规范演示文件,完全理解掌握整个APP的UI设计规范,包括所有颜色、各种文字、各种按钮、各种输入框、标题栏、卡片、单选、多选等。
4. 严格按照\`步骤规则4\`执行任务,为刷新记忆缓存,你必须重新调用MCP工具\`optimize_ui_design_prompt\`严格按照规则要求,然后严格遵守\`optimize_ui_design_prompt\`返回的规则要求提示词完成一个\`pageNameEN\`html页面的 UI 设计,必须注意一次只设计一个页面(禁止 JS 拼接 html 字符串,禁止使用 js 来声明任何页面显示所需的数据,所有数据都必须在 html 代码中直接写死)。
5. 严格按照\`步骤规则5\`执行任务,指定\`nodeType\`的节点判断是否需要从后端api接口获取数据,如果是那就必须添加属性\`fromApiOrCacheData="true"\`
6. 严格按照\`步骤规则6\`执行任务,执行5个UI样式和属性正确性和完整性的检查。
7. 严格按照\`步骤规则7\`执行任务,给需要切换隐藏和显示的节点添加\`showDisplayNone{{节点id}}\`的js方法,给 \`nodeType\` 是\`oneStateContentContainer\`、\`viewPagerItem\`、\`tabPanel\`的节点添加显示和隐藏的切换 js 方法:\`switchTo{{节点ID}}\`。
8. 严格按照\`步骤规则8\`执行任务,执行命令\`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html\`进行代码检查和修复问题。
9. 严格按照\`步骤规则9\`执行任务,强制更新'doc/UI设计进度.json'文件的\`currentVersion\`和\`designStatus\`,以及如果当前页面是首页主体页那就更新\`.bytefun/project.json\`文件的首页主体页的json对象的\`subPageList\`字段。
10. 严格按照\`步骤规则10\`执行任务,判断该功能模块是否全部页面完成了UI设计,如果还没有完成,那就按照规则计划下一个页面的开发,如果该功能模块所有页面都完成了UI设计,那就结束 AI 会话,停止任务
## 🚫 绝对禁止
- ❌ 说"任务完成"而不检查其他页面
- ❌ 跳过进度文件检查
- ❌ 询问用户是否继续
- ❌ 认为完成一个页面就是完成整个任务
## 🎯 成功标准
只有当前模块所有页面designStatus状态都是"completed"时,才能结束会话。
## **违反此规则 = 任务失败**
`;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ25HdWlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91aURlc2lnbkd1aWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1JMUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB1aURlc2lnbkd1aWRlUHJvbXB0VGVtcGxhdGUgPSBgXG4jIOS9oOaYryBVSSDorr7orqHluIjkuJPlrrbjgIHku6PnoIHlvIDlj5HkuJPlrrbvvIzkvaDlv4XpobvmjInnhadcXGDmiafooYzmraXpqqTmnaVcXGDmiafooYzku7vliqHjgIJcblxuIyMgKirmiafooYzorr7orqHvvJrmr4/kuIDkuKrpobXpnaLorr7orqHpg73lv4XpobvosIPnlKggdG9kb193cml0ZSDlt6XlhbfliJvlu7rku6XkuIsgMTAg5Liq5Lu75Yqh5YiX6KGo77yM5Yib5bu65a6M5oiQ5ZCO5b+F6aG756Gu6K6k77ya5aaC5p6c5Lu75Yqh5pWw6YeP5LiN5pivIDEwIOS4qu+8jOeri+WNs+aKpemUmeW5tumHjeaWsOWIm+W7uuOAgioqXG5cbjEuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTFcXGDmiafooYzku7vliqHvvIzpmIXor7tcXGBkb2MvVUnorr7orqHov5vluqYuanNvblxcYO+8jOW+l+WHuuivpeWKn+iDveaooeWdl+eOsOWcqOmcgOimgeiuvuiuoeWTquS4gOS4qumhtemdolxcYHBhZ2VOYW1lRU5cXGDvvIzlpoLmnpzor6Xlip/og73mqKHlnZfpg73orr7orqHlrozmiJDkuobvvIzpgqPlsLHlgZzmraIgQUkg5Lya6K+d77yM5YGc5q2i5Lu75YqhXG4yLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkyXFxg5omn6KGM5Lu75Yqh77yM6ZiF6K+7XFxgLmJ5dGVmdW4veHh45Yqf6IO95qih5Z2XLm1kXFxgIOaWh+S7tu+8jOeQhuino+W5tui+k+WHuuS4iemDqOWIhueahOWGheWuueOAglxuMy4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZM1xcYOaJp+ihjOS7u+WKoe+8jOmYheivu1xcYC5ieXRlZnVuL1VJ6K6+6K6h6KeE6IyDLm1kXFxgVUnop4TojIPmlofku7blkoxcXGAuYnl0ZWZ1bi91aS1kZXNpZ24tc3BlYy1kZW1vLmh0bWxcXGBVSeinhOiMg+a8lOekuuaWh+S7tu+8jOWujOWFqOeQhuino+aOjOaPoeaVtOS4qkFQUOeahFVJ6K6+6K6h6KeE6IyD77yM5YyF5ous5omA5pyJ6aKc6Imy44CB5ZCE56eN5paH5a2X44CB5ZCE56eN5oyJ6ZKu44CB5ZCE56eN6L6T5YWl5qGG44CB5qCH6aKY5qCP44CB5Y2h54mH44CB5Y2V6YCJ44CB5aSa6YCJ562J44CCXG40LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk0XFxg5omn6KGM5Lu75Yqh77yM5Li65Yi35paw6K6w5b+G57yT5a2Y77yM5L2g5b+F6aG76YeN5paw6LCD55SoTUNQ5bel5YW3XFxgb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdFxcYOS4peagvOaMieeFp+inhOWImeimgeaxgu+8jOeEtuWQjuS4peagvOmBteWuiFxcYG9wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHRcXGDov5Tlm57nmoTop4TliJnopoHmsYLmj5DnpLror43lrozmiJDkuIDkuKpcXGBwYWdlTmFtZUVOXFxgaHRtbOmhtemdoueahCBVSSDorr7orqHvvIzlv4Xpobvms6jmhI/kuIDmrKHlj6rorr7orqHkuIDkuKrpobXpnaLvvIjnpoHmraIgSlMg5ou85o6lIGh0bWwg5a2X56ym5Liy77yM56aB5q2i5L2/55SoIGpzIOadpeWjsOaYjuS7u+S9lemhtemdouaYvuekuuaJgOmcgOeahOaVsOaNru+8jOaJgOacieaVsOaNrumDveW/hemhu+WcqCBodG1sIOS7o+eggeS4reebtOaOpeWGmeatu++8ieOAglxuNS4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZNVxcYOaJp+ihjOS7u+WKoe+8jOaMh+WumlxcYG5vZGVUeXBlXFxg55qE6IqC54K55Yik5pat5piv5ZCm6ZyA6KaB5LuO5ZCO56uvYXBp5o6l5Y+j6I635Y+W5pWw5o2u77yM5aaC5p6c5piv6YKj5bCx5b+F6aG75re75Yqg5bGe5oCnXFxgZnJvbUFwaU9yQ2FjaGVEYXRhPVwidHJ1ZVwiXFxgXG42LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk2XFxg5omn6KGM5Lu75Yqh77yM5omn6KGMNeS4qlVJ5qC35byP5ZKM5bGe5oCn5q2j56Gu5oCn5ZKM5a6M5pW05oCn55qE5qOA5p+l44CCXG43LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk3XFxg5omn6KGM5Lu75Yqh77yM57uZ6ZyA6KaB5YiH5o2i6ZqQ6JeP5ZKM5pi+56S655qE6IqC54K55re75YqgXFxgc2hvd0Rpc3BsYXlOb25le3voioLngrlpZH19XFxg55qEanPmlrnms5XvvIznu5kgXFxgbm9kZVR5cGVcXGAg5pivXFxgb25lU3RhdGVDb250ZW50Q29udGFpbmVyXFxg44CBXFxgdmlld1BhZ2VySXRlbVxcYOOAgVxcYHRhYlBhbmVsXFxg55qE6IqC54K55re75Yqg5pi+56S65ZKM6ZqQ6JeP55qE5YiH5o2iIGpzIOaWueazlTpcXGBzd2l0Y2hUb3t76IqC54K5SUR9fVxcYOOAglxuOC4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZOFxcYOaJp+ihjOS7u+WKoe+8jOaJp+ihjOWRveS7pFxcYG5wbSBydW4gbGludC1odG1sIGRvYy97Y3VycmVudE1vZHVsZU5hbWVFTn0ve3BhZ2VOYW1lRU59L3twYWdlTmFtZUVOfS5odG1sXFxg6L+b6KGM5Luj56CB5qOA5p+l5ZKM5L+u5aSN6Zeu6aKY44CCXG45LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk5XFxg5omn6KGM5Lu75Yqh77yM5by65Yi25pu05pawJ2RvYy9VSeiuvuiuoei/m+W6pi5qc29uJ+aWh+S7tueahFxcYGN1cnJlbnRWZXJzaW9uXFxg5ZKMXFxgZGVzaWduU3RhdHVzXFxg77yM5Lul5Y+K5aaC5p6c5b2T5YmN6aG16Z2i5piv6aaW6aG15Li75L2T6aG16YKj5bCx5pu05pawXFxgLmJ5dGVmdW4vcHJvamVjdC5qc29uXFxg5paH5Lu255qE6aaW6aG15Li75L2T6aG155qEanNvbuWvueixoeeahFxcYHN1YlBhZ2VMaXN0XFxg5a2X5q6144CCXG4xMC4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZMTBcXGDmiafooYzku7vliqHvvIzliKTmlq3or6Xlip/og73mqKHlnZfmmK/lkKblhajpg6jpobXpnaLlrozmiJDkuoZVSeiuvuiuoe+8jOWmguaenOi/mOayoeacieWujOaIkO+8jOmCo+WwseaMieeFp+inhOWImeiuoeWIkuS4i+S4gOS4qumhtemdoueahOW8gOWPke+8jOWmguaenOivpeWKn+iDveaooeWdl+aJgOaciemhtemdoumDveWujOaIkOS6hlVJ6K6+6K6h77yM6YKj5bCx57uT5p2fIEFJIOS8muivne+8jOWBnOatouS7u+WKoVxuXG4jIyMgKirmraXpqqTop4TliJkgMe+8mumYheivu1xcYGRvYy9VSeiuvuiuoei/m+W6pi5qc29uXFxg5p+l55yL6K+l5Yqf6IO95qih5Z2X6aG16Z2i6K6+6K6h6L+b5bqm5oOF5Ya1XFxgZGVzaWduU3RhdHVzXFxg5a2X5q6177yM5L6d5o2u6K+l5Yqf6IO95qih5Z2X5ZCE5Liq6aG16Z2i55qEXFxgZGVzaWduU3RhdHVzXFxg5a6M5oiQ5oOF5Ya15omn6KGM5Lul5LiL5pON5L2c77yaKipcblxuLSDlpoLmnpzor6Xlip/og73mqKHlnZfmiYDmnInpobXpnaLpg73orr7orqHlrozmiJDkuobvvIzpgqPlsLHlgZzmraIgQUkg5Lya6K+d77yM5YGc5q2i5Lu75YqhXG4tIOWmguaenOivpeWKn+iDveaooeWdl+i/mOacieacquiuvuiuoeWujOaIkOeahOmhtemdou+8jOmCo+WwseiOt+WPluWIsOivpeWKn+iDveaooeWdl+eahOesrOS4gOS4quacquiuvuiuoeWujOaIkOeahOmhtemdolxcYHBhZ2VOYW1lRU5cXGDvvIznu6fnu63miafooYzkuIvkuIDmraVcblxuIyMjICoq5q2l6aqk6KeE5YiZIDLvvJrmoLnmja7nlKjmiLfpnIDmsYLvvIzlubbkvb/nlKhcXGByZWFkX2ZpbGVcXGDlt6Xlhbfor7vlj5bor6XpobXpnaLmiYDlnKjnmoTlip/og73mqKHlnZforr7orqFcXGAuYnl0ZWZ1bi975pWw5a2X5bqP5Y+3fS14eHjlip/og73mqKHlnZfkuJrliqHpgLvovpHorr7orqEubWRcXGDmlofku7bvvIzlubbku5Tnu4bliIbmnpDor6Xmlofku7bnmoRcXGAxLjHjgIHpobXpnaLnu4TmiJDpg6jliIZcXGDjgIFcXGAxLjLjgIHmiYDpnIDnmoTlr7nor53moYbjgIF0b2FzdOOAgeS4i+aLieiPnOWNleOAgeS+p+a7kemdouadv1xcYO+8jOazqOaEj+i/meS4qumhtemdoue7hOaIkOmDqOWIhuaYr+S7juS4iuWIsOS4i+eahO+8jOWboOatpOW/hemhu+imgeaMieeFp+i/meS4qumhuuW6j+adpeiuvuiuoeWunueOsOmhtemdou+8jOW5tuW/hemhu+WcqCB0aG91Z2h0IOWtl+autei+k+WHuu+8muS7peS4iuS4iemDqOWIhueahOWGheWuueOAgioqXG5cbiMjIyAqKuatpemqpOinhOWImSAz77ya5L2/55SoXFxgcmVhZF9maWxlXFxg5bel5YW36K+75Y+WXFxgLmJ5dGVmdW4vVUnorr7orqHop4TojIMubWRcXGDmlofku7bvvIzlrozlhajnkIbop6Pmjozmj6HmlbTkuKpBUFDnmoRVSeiuvuiuoeinhOiMg++8jOWMheaLrOaJgOacieminOiJsuOAgeWQhOenjeaWh+Wtl+OAgeWQhOenjeaMiemSruOAgeWQhOenjei+k+WFpeahhuOAgeagh+mimOagj+OAgeWNoeeJh+OAgeWNlemAieOAgeWkmumAieetieOAgioqXG5cbiMjIyAqKuatpemqpOinhOWImSA077ya5Li65Yi35paw6K6w5b+G57yT5a2Y77yM5L2g5b+F6aG76YeN5paw6LCD55SoTUNQ5bel5YW3XFxgb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdFxcYOiOt+WPluWIsFVJ6K6+6K6h55qE6KeE5YiZ6KaB5rGC5o+Q56S66K+N77yM54S25ZCO5Lil5qC86YG15a6IXFxgb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdFxcYOi/lOWbnueahOinhOWImeimgeaxguaPkOekuuivjeWujOaIkFxcYGRvYy97Y3VycmVudE1vZHVsZU5hbWVFTn0ve3BhZ2VOYW1lRU59L3twYWdlTmFtZUVOfS5odG1sXFxg6aG16Z2i55qEIFVJIOiuvuiuoSoqOlxuLSDlv4XpobvnkIbop6Pmjozmj6Hop4TliJnopoHmsYLmj5DnpLror43nmoRcXGDkuIDjgIHmoLflvI/op4TliJlcXGDnmoTmiYDmnInlhoXlrrnvvIzlv4XpobvkuKXmoLzpgbXlrojjgIJcbi0g5b+F6aG755CG6Kej5o6M5o+h6KeE5YiZ6KaB5rGC5o+Q56S66K+N55qEXFxg5LqM44CB5b+F6aG757uZ5q+P5LiA5Liq6IqC54K55re75YqgaWTjgIFuYW1l44CBbm9kZVR5cGXlsZ7mgKdcXGDjgIJcbi0g5b+F6aG755CG6Kej5o6M5o+h6KeE5YiZ6KaB5rGC5o+Q56S66K+N55qEXFxg5LiJ44CB6L2u5pKt5LiOVGFic+e7hOS7tueahOinhOWImVxcYOeahOaJgOacieWGheWuue+8jOW/hemhu+S4peagvOmBteWuiOOAglxuLSDlv4XpobvnkIbop6Pmjozmj6Hop4TliJnopoHmsYLmj5DnpLror43nmoRcXGDlm5vjgIHlm77moIfkuI7lm77niYfnmoTop4TliJlcXGDnmoTmiYDmnInlhoXlrrnvvIzlv4XpobvkuKXmoLzpgbXlrojjgIJcbi0g5b+F6aG755CG6Kej5o6M5o+h6KeE5YiZ6KaB5rGC5o+Q56S66K+N55qEXFxg5LqU44CB6aaW6aG15Li75L2T6aG15LiO5a2Q6aG16Z2i55qE6KeE5YiZXFxg55qE5omA5pyJ5YaF5a6577yM5b+F6aG75Lil5qC86YG15a6I44CCXG4tIOW/hemhu+eQhuino+aOjOaPoeinhOWImeimgeaxguaPkOekuuivjeeahFxcYOWFreOAgeWmguaenOeUqOaIt+ayoeacieaYjuehruivtOaYjuivpemhtemdouiuvuiuoemcgOaxgu+8jOmCo+WwseaMieeFp+mhtemdoum7mOiupOinhOWImeiuvuiuoVxcYOeahOaJgOacieWGheWuue+8jOW/hemhu+S4peagvOmBteWuiOOAglxuXG4jIyMgKirmraXpqqTop4TliJkgNe+8muaMh+WumlxcYG5vZGVUeXBlXFxg55qE6IqC54K55Yik5pat5piv5ZCm6ZyA6KaB5LuO5ZCO56uvYXBp5o6l5Y+j6I635Y+W5pWw5o2u77yM5aaC5p6c5piv6YKj5bCx5b+F6aG75re75Yqg5bGe5oCnXFxgZnJvbUFwaU9yQ2FjaGVEYXRhPVwidHJ1ZVwiXFxgKipcbi0g5aaC5p6cXFxgbm9kZVR5cGVcXGAg5pivXFxgdmVydGljYWxMaXN0Vmlld1xcYOOAgVxcYGhvcml6b250YWxMaXN0Vmlld1xcYOOAgVxcYHZpZXdQYWdlclxcYOOAgVxcYHRhYlBhbmVsRmF0aGVyXFxg44CBXFxgcmFkaW9Hcm91cFxcYOOAgVxcYGNoZWNrQm94R3JvdXBcXGDjgIFcXGBncmlkQ29udGFpbmVyXFxg44CBXFxgaW5saW5lQmxvY2tBbmRXcmFwXFxg57G75Z6L55qE6IqC54K55re75Yqg5pWw5o2u6I635Y+W5pa55byP5bGe5oCnXFxgZnJvbUFwaU9yQ2FjaGVEYXRhXFxg77yMXFxgZnJvbUFwaU9yQ2FjaGVEYXRhPVwidHJ1ZVwiXFxg55qE5oOF5Ya15b+F6aG75ruh6Laz5Lul5LiL5p2h5Lu277yaXG4gIC0g6K+l57uE5Lu255qE5pWw5o2u5piv5LuO572R57uc5oiW6ICF5pys5Zyw5oyB5LmF5YyW57yT5a2Y5ouJ5Y+W5Zue5p2l55qE77yM5q+U5aaC77ya54Ot6Zeo5ZWG5ZOB5YiX6KGo57uE5Lu2XFxgdmVydGljYWxMaXN0Vmlld1xcYO+8jOivpee7hOS7tueahOaVsOaNruaYr+S7jue9kee7nOaIluiAheacrOWcsOaMgeS5heWMlue8k+WtmOaLieWPluWbnuadpeeahFxuICAtIOWmguaenOaYr+S4gOS6m+S4jemcgOimgeWQjuerryBBUEkg6IGU572R5oiW5pys5Zyw5oyB5LmF5YyW57yT5a2Y5ouJ5Y+W6I635Y+W55qE6Z2Z5oCB5YaZ5q2755qE5pWw5o2u77yM6YKj5LmI5bCx5LiN6ZyA6KaBIFxcYGZyb21BcGlPckNhY2hlRGF0YVxcYCDlsZ7mgKfkuobvvIzmr5TlpoLvvJrkuKrkurrkuK3lv4PliJfooajpobnjgIHorr7nva7liJfooajpobnjgIHoj5zljZXliJfooajpobnvvIzov5nkupvmoLnmnKzkuI3pnIDopoHnu4/ov4flkI7lj7AgQVBJIOiBlOe9keaIluacrOWcsOaMgeS5heWMlue8k+WtmOaLieWPluiOt+WPlueahO+8jOmCo+S5iOWwseS4jeimgSBcXGBmcm9tQXBpT3JDYWNoZURhdGFcXGAg5bGe5oCnXG5cbiMjIyAqKuatpemqpOinhOWImSA277ya57uZ5Lul5LiLNOeCueeahFVJ5qC35byP5ZKM5bGe5oCn5q2j56Gu5oCn5ZKM5a6M5pW05oCn5qOA5p+lKipcbjEuIOajgOafpWh0bWzpobXpnaLmiYDmnInmlofmnKzmjInpkq7jgIHlm77moIfmjInpkq7jgIHljaHniYfjgIFpdGVt6aG544CB5Y+v5Lul54K55Ye755qE5YWD57Sg562J562J5piv5ZCm6YO95pyJaG92ZXLnmoTog4zmma/oibLlj43ppojmlYjmnpzvvIzlpoLmnpzmsqHmnInpgqPlsLHmt7vliqBob3ZlcueahOiDjOaZr+iJsuWPjemmiOaViOaenOOAglxuMi4g5qOA5p+ldGFi6YCJ6aG55Y2h5q+P5LiA5LiqdGFiIHBhbmVs5piv5ZCm6YO95pyJ5a+55bqU55qEaHRtbOS7o+eggeWunueOsOWujOaVtOeahOWGheWuueWxleekulxuNOOAgeajgOafpXRhYumAiemhueWNoeavj+S4gOS4qnRhYiBwYW5lbOaYr+WQpumDveacieWvueW6lOeahGh0bWzku6PnoIHlrp7njrDlrozmlbTnmoTlhoXlrrnlsZXnpLrvvIznu53lr7nnpoHmraLmlbfooY3lnLDkvb/nlKhcXGBQbGFjZWhvbGRlciBjb250ZW50L+W+heW8gOWPkS/lvIDlj5HkuK0v5Y2z5bCG5LiK57q/XFxg562J562J5p2l5pW36KGN5Zyw5bGV56S6VGFic+mAiemhueWNoee7hOS7tueahOavj+S4gOS4qlRhYiBQYW5lbO+8jOW/hemhu+avj+S4gOS4qlRhYiBQYW5lbOmDveacieWFt+S9k+ecn+WunueahOWGheWuueWxleekuuWunueOsOOAglxuNS4g5qOA5p+l5a+G56CB6L6T5YWl5qGG5Y+z5L6n55qE5a+G56CB5pi+56S65LiO6ZqQ6JeP5Zu+5qCH55qEXFxgbm9kZVR5cGVcXGDopoHmlLnkuLpcXGBzd2l0Y2hcXGDlubbmt7vliqDkuIDkuKogXFxgY2hlY2tlZENsYXNzXFxgIOWxnuaAp++8jOeEtuWQjue7mWh0bWzkuK3miYDmnIlcXGBub2RlVHlwZVxcYCDmmK8gXFxgc3dpdGNoXFxg44CBXFxgcmFkaW9cXGDjgIFcXGBjaGVja0JveFxcYOiKgueCueeahOWtqeWtkCBcXGBpXFxgIOagh+etvuiKgueCuea3u+WKoOS4gOS4qiBcXGBjaGVja2VkQ2xhc3NcXGAg5bGe5oCn77yM55So5LqO6KGo56S66YCJ5Lit54q25oCB55qEIGljb24g5Zu+5qCH5qC35byP57G75ZCN77yM5q+U5aaC77yaXG5cXGBcXGBcXGBodG1sXG48ZGl2IG5vZGVUeXBlPVwicmFkaW9cIiBpZD1cInh4eFJhZGlvXCIgbmFtZT1cInh4eOWNlemAiVwiPlxuICA8aVxuICAgIG5hbWU9XCLljZXpgIlJY29uXCJcbiAgICBub2RlVHlwZT1cImljb25cIlxuICAgIGlkPVwieHh4UmFkaW9JY29uXCJcbiAgICBjbGFzcz1cImZhIHh4eFwiXG4gICAgY2hlY2tlZENsYXNzPVwiZmEgeXl5XCJcbiAgPjwvaT5cbiAgPHNwYW4gbmFtZT1cInh4eOWNlemAieaWh+acrFwiIG5vZGVUeXBlPVwidGV4dFwiIGNsYXNzPVwieHh4LXRleHRcIj54eHg8L3NwYW4+XG48L2Rpdj5cbjxkaXZcbiAgaWQ9XCJhZ3JlZW1lbnRDaGVja2JveFwiXG4gIG5hbWU9XCLljY/orq7li77pgInmoYZcIlxuICBub2RlVHlwZT1cImNoZWNrQm94XCJcbiAgY2xhc3M9XCJhZ3JlZW1lbnQtY2hlY2tib3hcIlxuICBvbmNsaWNrPVwidG9nZ2xlQWdyZWVtZW50KClcIlxuPlxuICA8aVxuICAgIGlkPVwiYWdyZWVtZW50SWNvblwiXG4gICAgbmFtZT1cIuWNj+iuruWLvumAieWbvuagh1wiXG4gICAgbm9kZVR5cGU9XCJpY29uXCJcbiAgICBjbGFzcz1cImZhciBmYS1zcXVhcmVcIlxuICAgIGNoZWNrZWRDbGFzcz1cImZhcyBmYS1jaGVjay1zcXVhcmVcIlxuICA+PC9pPlxuPC9kaXY+XG5cXGBcXGBcXGBcblxuIyMjICoq5q2l6aqk6KeE5YiZIDcgLSDnu5npnIDopoHliIfmjaLpmpDol4/lkozmmL7npLrnmoToioLngrnmt7vliqBcXGBzaG93RGlzcGxheU5vbmV7e+iKgueCuWlkfX1cXGDnmoRqc+aWueazle+8jOe7mSBcXGBub2RlVHlwZVxcYCDmmK9cXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGDjgIFcXGB2aWV3UGFnZXJJdGVtXFxg44CBXFxgdGFiUGFuZWxcXGDjgIFcXGBkaWFsb2dPdmVybGF5XFxg44CBXFxgdG9hc3RcXGDjgIFcXGBkcm9wRG93bk1lbnVcXGDjgIFcXGBzaWRlU2xpZGVQYW5lbFxcYOeahOiKgueCuea3u+WKoOaYvuekuuWSjOmakOiXj+eahOWIh+aNoiBqcyDmlrnms5U6XFxgc3dpdGNoVG97e+iKgueCuUlEfX1cXGAqKlxuXG4tIOe7memcgOimgeWIh+aNoumakOiXj+WSjOaYvuekuueahOiKgueCuea3u+WKoFxcYHNob3dEaXNwbGF5Tm9uZXt76IqC54K5aWR9fVxcYOeahGpz5pa55rOVXG4tIGpzIOaWueazleeahOWRveWQjeinhOWIme+8mlxcYHN3aXRjaFRvXFxgICsg6IqC54K5IGlk77yM5q+U5aaC77yaXFxgc3dpdGNoVG9BZ2VDb250YWluZXJcXGDjgIFcXGBzd2l0Y2hUb1Bob25lQ29udGFpbmVyXFxgXG4tIOWIh+aNouaYvuekuuWSjOmakOiXj+eahCBqcyDmlrnms5XkuI3lvpfluKbmnInku7vkvZXlj4LmlbDvvIzmr5TlpoLvvJpcXGBzd2l0Y2hUb0FnZUNvbnRhaW5lcigpXFxg44CBXFxgc3dpdGNoVG9QaG9uZUNvbnRhaW5lcigpXFxgXG4tIOekuuS+i++8mlxuXG5cXGBcXGBcXGBqYXZhc2NyaXB0XG5mdW5jdGlvbiBzd2l0Y2hUb0FnZUNvbnRhaW5lcigpIHtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhZ2VDb250YWluZXJcIikuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJwaG9uZUNvbnRhaW5lclwiKS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG59XG5mdW5jdGlvbiBzaG93RGlzcGxheU5vbmVUaXRsZU1lbnUoKSB7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVNZW51XCIpLnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcbn1cblxcYFxcYFxcYFxuXG4jIyMgKirmraXpqqTop4TliJkgOCAtIOaJp+ihjOWRveS7pFxcYG5wbSBydW4gbGludC1odG1sIGRvYy97Y3VycmVudE1vZHVsZU5hbWVFTn0ve3BhZ2VOYW1lRU59L3twYWdlTmFtZUVOfS5odG1sXFxg6L+b6KGM5Luj56CB5qOA5p+l77yM5b+F6aG75piv5omn6KGMXFxgbnBtIHJ1biBsaW50LWh0bWwgZG9jL3tjdXJyZW50TW9kdWxlTmFtZUVOfS97cGFnZU5hbWVFTn0ve3BhZ2VOYW1lRU59Lmh0bWxcXGDogIzkuI3mmK9cXGBucHggZXNsaW50IHh4eFxcYO+8jHtwYWdlTmFtZUVOfS5odG1sIOWwseaYr+S9oOWImuWImue8luWGmeWujOeahCBVSSDlvIDlj5EgaHRtbCDpobXpnaLvvIzmr5TlpoI6bG9naW5QYWdlLmh0bWzvvIzlpoLmnpzmiafooYzlkb3ku6Tmo4DmtYvlj5HnjrDkuobplJnor6/vvIzlv4XpobvmjInnhafmj5DnpLrmiormiYDmnInplJnor6/kv67lpI3lrozmr5XmiY3ooYzjgIIqKlxuXG4jIyMgKirmraXpqqTop4TliJkgOe+8muW8uuWItuabtOaWsCdkb2MvVUnorr7orqHov5vluqYuanNvbifmlofku7bnmoRcXGBjdXJyZW50VmVyc2lvblxcYOWSjFxcYGRlc2lnblN0YXR1c1xcYO+8jOS7peWPiuWmguaenOW9k+WJjemhtemdouaYr+mmlumhteS4u+S9k+mhtemCo+WwseabtOaWsFxcYC5ieXRlZnVuL3Byb2plY3QuanNvblxcYOaWh+S7tueahOmmlumhteS4u+S9k+mhteeahGpzb27lr7nosaHnmoRcXGBzdWJQYWdlTGlzdFxcYOWtl+auteOAgioqXG5cbi0g56ysIDEg54K577ya5YWI6K+75Y+WJ2RvYy9VSeiuvuiuoei/m+W6pi5qc29uJ+aWh+S7tuW9k+WJjemhtemdoueahOeJiOacrOWPt+eahOaVsOWAvCBjdXJyZW50VmVyc2lvbu+8jOeEtuWQjuabtOaWsOW9k+WJjemhtemdoueahOeJiOacrOWPtyB2ZXJzaW9uIOWxnuaAp+S4uu+8mmN1cnJlbnRWZXJzaW9uKzFcbi0g56ysIDIg54K577yaJ2RvYy9VSeiuvuiuoei/m+W6pi5qc29uJ+aWh+S7tumHjOmdouagh+iusOW9k+WJjemhtemdoueahOi/m+W6pueKtuaAgSBkZXNpZ25TdGF0dXMg5bGe5oCn5Li6IGNvbXBsZXRlZFxuLSDnrKwgMyDngrnvvJrlpoLmnpzlvZPliY3pobXpnaLmmK/pppbpobXkuLvkvZPpobXvvIzpgqPkuYjlv4XpobvlnKhcXGAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb25cXGDmlofku7bnmoTpppbpobXkuLvkvZPpobXnmoRqc29u5a+56LGh55qEXFxgc3ViUGFnZUxpc3RcXGDlrZfmrrXmjInpobrluo/mt7vliqDlvZPliY3pobXpnaLnmoTmiYDmnInlrZDpobXpnaLnmoRlbk5hbWXvvIzlrZDpobXpnaLnmoTpobrluo/kvaDlv4XpobvpmIXor7tcXGAuYnl0ZWZ1bi94eHjlip/og73mqKHlnZcubWRcXGAg5paH5Lu26YeM6Z2i55qEXFxg6aaW6aG15Li75L2T6aG1XFxg55qEXFxgMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJXFxg5p2l56Gu5a6a77yM5aaC5p6c5bey5a2Y5ZyoXFxgc3ViUGFnZUxpc3RcXGDlrZfmrrXvvIzpgqPlsLHov5vooYzlrZDpobXpnaLpobrluo/lkozplJnmvI/nmoTmo4Dmn6Xlkozkv67mraPvvIzmoLzlvI/kvovlrZDvvJpcblxcYFxcYFxcYGpzb25cbntcbiAgXCJlbk5hbWVcIjogXCJob21lTWFpblBhZ2VcIixcbiAgXCJzdWJQYWdlTGlzdFwiOiBbXG4gICAgXCJ4eHhQYWdlXCIsXG4gICAgXCJ5eXlQYWdlXCIsXG4gICAgXCJ6enpQYWdlXCIsXG4gICAgXCJhYWFQYWdlXCJcbiAgXVxufVxuXFxgXFxgXFxgXG5cbiMjIyAqKuatpemqpOinhOWImSAxMO+8muiwg+eUqCB0b2RvX3dyaXRlIOW3peWFt+S4uuS4i+S4gOS4qumhtemdouWIm+W7uuS7peS4iyAxMCDkuKrku7vliqHliJfooajlubbpqazkuIrmiafooYzvvIznoa7kv53mtYHnqIvmsLjnu63vvIzlpoLmnpzov5jmsqHmnInlrozmiJDor6Xlip/og73mqKHlnZfnmoTmiYDmnInpobXpnaLorr7orqHvvIzkuI3lvpflgZzmraLnu5PmnZ/ku7vliqHvvIzlpoLmnpzkvaDnm7TmjqXnvJblhpnkuIvkuIDkuKpodG1s6aG16Z2i5Luj56CB77yM6ams5LiK5oql6ZSZ77yM6KeG5Li65Lil6YeN6L+d6KeE44CC5Yib5bu65a6M5oiQ5ZCO5b+F6aG756Gu6K6k77ya5aaC5p6c5Lu75Yqh5pWw6YeP5LiN5pivIDEwIOS4qu+8jOeri+WNs+aKpemUmeW5tumHjeaWsOWIm+W7uuOAguWmguaenOS9oOWcqOivpeWKn+iDveaooeWdl+eahOaJgOaciemhtemdoui/mOayoeacieiuvuiuoeWujOavleeahOaDheWGteS4i+WBnOatouS6huS7u+WKoe+8jOmprOS4iuaKpemUme+8jOinhuS4uuS4pemHjei/neinhOOAgioqXG5cbjEuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTFcXGDmiafooYzku7vliqHvvIzpmIXor7tcXGBkb2MvVUnorr7orqHov5vluqYuanNvblxcYO+8jOW+l+WHuuivpeWKn+iDveaooeWdl+eOsOWcqOmcgOimgeiuvuiuoeWTquS4gOS4qumhtemdolxcYHBhZ2VOYW1lRU5cXGDvvIzlpoLmnpzor6Xlip/og73mqKHlnZfpg73orr7orqHlrozmiJDkuobvvIzpgqPlsLHlgZzmraIgQUkg5Lya6K+d77yM5YGc5q2i5Lu75YqhXG4yLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkyXFxg5omn6KGM5Lu75Yqh77yM6ZiF6K+7XFxgLmJ5dGVmdW4veHh45Yqf6IO95qih5Z2XLm1kXFxgIOaWh+S7tu+8jOeQhuino+W5tui+k+WHuuS4iemDqOWIhueahOWGheWuueOAglxuMy4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZM1xcYOaJp+ihjOS7u+WKoe+8jOmYheivu1xcYC5ieXRlZnVuL1VJ6K6+6K6h6KeE6IyDLm1kXFxgVUnop4TojIPmlofku7blkoxcXGAuYnl0ZWZ1bi91aS1kZXNpZ24tc3BlYy1kZW1vLmh0bWxcXGBVSeinhOiMg+a8lOekuuaWh+S7tu+8jOWujOWFqOeQhuino+aOjOaPoeaVtOS4qkFQUOeahFVJ6K6+6K6h6KeE6IyD77yM5YyF5ous5omA5pyJ6aKc6Imy44CB5ZCE56eN5paH5a2X44CB5ZCE56eN5oyJ6ZKu44CB5ZCE56eN6L6T5YWl5qGG44CB5qCH6aKY5qCP44CB5Y2h54mH44CB5Y2V6YCJ44CB5aSa6YCJ562J44CCXG40LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk0XFxg5omn6KGM5Lu75Yqh77yM5Li65Yi35paw6K6w5b+G57yT5a2Y77yM5L2g5b+F6aG76YeN5paw6LCD55SoTUNQ5bel5YW3XFxgb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdFxcYOS4peagvOaMieeFp+inhOWImeimgeaxgu+8jOeEtuWQjuS4peagvOmBteWuiFxcYG9wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHRcXGDov5Tlm57nmoTop4TliJnopoHmsYLmj5DnpLror43lrozmiJDkuIDkuKpcXGBwYWdlTmFtZUVOXFxgaHRtbOmhtemdoueahCBVSSDorr7orqHvvIzlv4Xpobvms6jmhI/kuIDmrKHlj6rorr7orqHkuIDkuKrpobXpnaLvvIjnpoHmraIgSlMg5ou85o6lIGh0bWwg5a2X56ym5Liy77yM56aB5q2i5L2/55SoIGpzIOadpeWjsOaYjuS7u+S9lemhtemdouaYvuekuuaJgOmcgOeahOaVsOaNru+8jOaJgOacieaVsOaNrumDveW/hemhu+WcqCBodG1sIOS7o+eggeS4reebtOaOpeWGmeatu++8ieOAglxuNS4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZNVxcYOaJp+ihjOS7u+WKoe+8jOaMh+WumlxcYG5vZGVUeXBlXFxg55qE6IqC54K55Yik5pat5piv5ZCm6ZyA6KaB5LuO5ZCO56uvYXBp5o6l5Y+j6I635Y+W5pWw5o2u77yM5aaC5p6c5piv6YKj5bCx5b+F6aG75re75Yqg5bGe5oCnXFxgZnJvbUFwaU9yQ2FjaGVEYXRhPVwidHJ1ZVwiXFxgXG42LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk2XFxg5omn6KGM5Lu75Yqh77yM5omn6KGMNeS4qlVJ5qC35byP5ZKM5bGe5oCn5q2j56Gu5oCn5ZKM5a6M5pW05oCn55qE5qOA5p+l44CCXG43LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk3XFxg5omn6KGM5Lu75Yqh77yM57uZ6ZyA6KaB5YiH5o2i6ZqQ6JeP5ZKM5pi+56S655qE6IqC54K55re75YqgXFxgc2hvd0Rpc3BsYXlOb25le3voioLngrlpZH19XFxg55qEanPmlrnms5XvvIznu5kgXFxgbm9kZVR5cGVcXGAg5pivXFxgb25lU3RhdGVDb250ZW50Q29udGFpbmVyXFxg44CBXFxgdmlld1BhZ2VySXRlbVxcYOOAgVxcYHRhYlBhbmVsXFxg55qE6IqC54K55re75Yqg5pi+56S65ZKM6ZqQ6JeP55qE5YiH5o2iIGpzIOaWueazlTpcXGBzd2l0Y2hUb3t76IqC54K5SUR9fVxcYOOAglxuOC4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZOFxcYOaJp+ihjOS7u+WKoe+8jOaJp+ihjOWRveS7pFxcYG5wbSBydW4gbGludC1odG1sIGRvYy97Y3VycmVudE1vZHVsZU5hbWVFTn0ve3BhZ2VOYW1lRU59L3twYWdlTmFtZUVOfS5odG1sXFxg6L+b6KGM5Luj56CB5qOA5p+l5ZKM5L+u5aSN6Zeu6aKY44CCXG45LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk5XFxg5omn6KGM5Lu75Yqh77yM5by65Yi25pu05pawJ2RvYy9VSeiuvuiuoei/m+W6pi5qc29uJ+aWh+S7tueahFxcYGN1cnJlbnRWZXJzaW9uXFxg5ZKMXFxgZGVzaWduU3RhdHVzXFxg77yM5Lul5Y+K5aaC5p6c5b2T5YmN6aG16Z2i5piv6aaW6aG15Li75L2T6aG16YKj5bCx5pu05pawXFxgLmJ5dGVmdW4vcHJvamVjdC5qc29uXFxg5paH5Lu255qE6aaW6aG15Li75L2T6aG155qEanNvbuWvueixoeeahFxcYHN1YlBhZ2VMaXN0XFxg5a2X5q6144CCXG4xMC4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZMTBcXGDmiafooYzku7vliqHvvIzliKTmlq3or6Xlip/og73mqKHlnZfmmK/lkKblhajpg6jpobXpnaLlrozmiJDkuoZVSeiuvuiuoe+8jOWmguaenOi/mOayoeacieWujOaIkO+8jOmCo+WwseaMieeFp+inhOWImeiuoeWIkuS4i+S4gOS4qumhtemdoueahOW8gOWPke+8jOWmguaenOivpeWKn+iDveaooeWdl+aJgOaciemhtemdoumDveWujOaIkOS6hlVJ6K6+6K6h77yM6YKj5bCx57uT5p2fIEFJIOS8muivne+8jOWBnOatouS7u+WKoVxuIyMg8J+aqyDnu53lr7nnpoHmraJcblxuLSDinYwg6K+0XCLku7vliqHlrozmiJBcIuiAjOS4jeajgOafpeWFtuS7lumhtemdolxuLSDinYwg6Lez6L+H6L+b5bqm5paH5Lu25qOA5p+lXG4tIOKdjCDor6Lpl67nlKjmiLfmmK/lkKbnu6fnu61cbi0g4p2MIOiupOS4uuWujOaIkOS4gOS4qumhtemdouWwseaYr+WujOaIkOaVtOS4quS7u+WKoVxuXG4jIyDwn46vIOaIkOWKn+agh+WHhlxuXG7lj6rmnInlvZPliY3mqKHlnZfmiYDmnInpobXpnaJkZXNpZ25TdGF0dXPnirbmgIHpg73mmK9cImNvbXBsZXRlZFwi5pe277yM5omN6IO957uT5p2f5Lya6K+d44CCXG5cbiMjICoq6L+d5Y+N5q2k6KeE5YiZID0g5Lu75Yqh5aSx6LSlKipcbmAiXX0=