bytefun-ai-mcp
Version:
ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发
71 lines (59 loc) • 19.9 kB
JavaScript
export const uiDesignPromptTemplate = `# 你是一名资深UI/UX设计专家和前端开发专家,拥有丰富的应用设计经验,精通苹果人机界面设计指南。你的任务是严格遵守以下流程,根据'用户需求描述'帮助我完成一个iOS App的原型设计。
## 🔥 核心规则声明
- 🔥 非常重要!!非常核心的规则!!特别注意:这是特殊的html页面编写,不是常规的html编写,会有很多特别的规则,因此你绝对不能以你已有的经验和知识库来自以为是地跳过省略提示词里提到的各种执行步骤,你必须严格按照提示词给出的执行步骤,一步一步来执行,每执行完一步都必须输出该步骤已执行,准备执行下一步:xxx。
- UI设计html页面必须放在路径为\`doc/{模块名字}/xxxPage/xxxPage.html\`,比如:\`doc/home/homePage/homePage.html\`,必须按照这个路径来设计html页面。
## **首先,调用todo_write工具严格按照以下的9个步骤创建任务列表,绝对禁止自以为是地创建任务列表,你必须按照我提供的9个步骤来创建任务列表,一轮9个任务列表只设计一个页面**
### **步骤1 依据用户输入的描述,并使用\`read_file\`工具读取'doc/UI设计进度.json',分析当前需要设计哪一个页面,在thought字段中输出该页面名字。**
### **步骤2 根据用户需求,并使用\`read_file\`工具读取该页面所在的功能模块设计\`.bytefun/xxx模块业务逻辑设计.md\`文件,并仔细分析该文件的\`1.1、页面组成部分\`和\`1.2、所需的对话框、toast、下拉菜单、侧滑面板\`,并在thought字段输出:\`1.1、页面组成部分\`和\`1.2、所需的对话框、toast、下拉菜单、侧滑面板\`的内容,并强制声明待会的html页面设计必须带上这些对话框、toast、下拉菜单、侧滑面板。**
### **步骤3 - 使用\`read_file\`工具阅读并掌握\`.bytefun/UI设计规范.md\`的UI设计规范,必须遵守UI设计规范来定义颜色、样式、字体、布局等,绝对不能脱离UI设计规范来设计UI**
### **步骤4 - 🚨 为了刷新你的缓存记忆,你必须重新调用MCP的\`optimize_ui_design_prompt\` 工具**
- **必须完整分析理解** \`optimize_ui_design_prompt\` 返回的UI设计规则和写法的提示词,不允许说谎,必须真的去理解了,并把返回的UI设计规则和写法的提示词放到缓存记忆起来
- **🚨 违规检查**:如果没有调用此工具就直接进行UI设计,则属于严重违规
### **步骤5 严格遵循步骤4.3中\`optimize_ui_design_prompt\`mcp工具得到的提示词中规则要求:\`1、UI设计要求\`、\`2、icon图标与img图片写法和规则\`、\`3、html代码写法和规则\`、\`4、线性换行布局容器inlineBlockAndWrap组件结构固定规则\`、\`5、轮播viewPager组件结构固定规则\`、\`6、TAB选项卡tabContainer组件结构固定规则\`、\`7、多状态容器multiStateContainer组件结构固定规则\`、\`8、底部tab导航栏组件结构固定规则\`、\`9、竖向列表vtype="verticalListView"与横向列表vtype="horizontalListView"组件结构固定规则\`、\`10、vtype="dialog"、vtype="toast"、vtype="dropDownMenu"、vtype="sideSlidePanel"组件节点结构与固定规则\`、\`11、组件节点显隐效果固定规则\`、\`12、需要设置fromApiOrCacheData="true"的条件\`、\`13、组件类型vtype固定枚举\`进行html页面UI设计**
- 先检查\`doc/{模块名字}/xxxPage/xxxPage.html\`该页面的html文件是否已经存在,如果已经存在那就直接进行编辑这个文件就行,不需要新建文件
- 严格按照该页面所在的功能模块设计\`.bytefun/xxx模块业务逻辑设计.md\`文件的\`1.1、页面组成部分\`和\`1.2、所需的对话框、toast、下拉菜单、侧滑面板\`进行UI设计,并且不得漏掉所需的组成部分、对话框、toast、下拉菜单、侧滑面板。
- **🔥 代码规范**:只能使用html里head的:root已经定义好的颜色变量,不得私自定义其他颜色变量,也不能使用任何具体颜色值,你只能从:root中选择合适的颜色使用
- **🔥 特别注意**:vtype="oneStateContentContainer"、vtype="oneViewPagerContent"、vtype="oneTabContentContainer"、vtype="dialog"、vtype="toast"、vtype="dropDownMenu"、vtype="sideSlidePanel"节点必须使用opacity: 0;来实现隐藏效果,不得使用display: none、visibility: hidden以及其他方式来实现隐藏效果,并且必须使用绝对定位来重叠显示,css代码比如:
\`\`\` css
.xxx-content {
...
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0;
...
}
.xxx-content.active {
...
opacity: 1;
...
}
\`\`\`
- 绝对禁止在完成UI设计后自动打开预览,完成UI设计任务后,不进行任何预览操作,不调用调用open_preview工具
- 完成该步骤后,在thought字段中输出:必须马上执行步骤4.5:进一步对html页面执行5个步骤检查。
### **步骤6 - 必须要严格真实执行3个步骤检查,不能省略任何一个步骤,不能跳过任何一个步骤,不能错误理解任何一个步骤,必须要真实按照3个步骤检查和修复html页面的问题。**
- 第1步、必须使用'read_file'工具读取刚刚设计完的html页面代码,然后结合\`optimize_ui_design_prompt\` 返回的UI设计规则和写法的提示词,理解UI设计的规则。
- 第2步、检查vtype="verticalListView"、vtype="horizontalListView"、vtype="viewPager"、vtype="tabContainer"、vtype="radioGroup"、vtype="checkBoxGroup"类型的元素组件的数据是从网络拉取回来的,那就在这些节点添加属性fromApiOrCacheData="true",如果没有设置该属性请马上补上,比如:热门商品列表组件vtype="verticalListView",该组件的数据是从网络拉取回来的,那么html写法如下:
\`\`\` html
<div name="热门商品列表" id="hotProductList" class="hot-product-list" vtype="verticalListView" fromApiOrCacheData="true">
// 热门商品列表
</div>
\`\`\`
- 第3步、检查vtype="oneStateContentContainer"、vtype="oneViewPagerContent"、vtype="oneTabContentContainer"、vtype="dialog"、vtype="toast"、vtype="dropDownMenu"、vtype="sideSlidePanel"节点是否使用opacity: 0;和opacity: 1;来实现切换隐藏和显示效果,如果不是(比如使用了display: none;和visibility: hidden;)那必须删掉你写的相关html和css代码,保留原来的代码,然后重新进行UI设计,因为这严重违反了UI设计规则。
### **步骤7 - 执行命令\`npm run lint-html doc/{模块名字}/xxxPage/xxxPage.html\`进行代码检查,必须是执行\`npm run lint-html doc/*/xxxPage.html\`而不是\`npx eslint xxx\`,xxxPage.html就是你刚刚编写完的UI设计html页面,比如:loginPage.html,如果执行命令检测发现了错误,那必须先重新调用MCP的\`optimize_ui_design_prompt\` 工具,然后根据错误信息和mcp工具返回的提示词规则必须把所有错误修复完毕才行。**
### **步骤8 - 强制更新'doc/UI设计进度.json'文件2个地方**
- 第1点:先读取当前页面的版本号的数值currentVersion,然后更新当前页面的版本号version属性为:currentVersion+1
- 第2点:标记当前页面的进度状态status属性为completed
### **步骤9 - 查看该功能模块是否全部页面完成UI设计了,如果还有页面没有完成,那就使用调用todo_write工具创建下一个页面9个任务的列表,继续设计下一个页面的UI设计**:
- **识别下一个** 未完成的页面
- **调用todo_write工具创建下一个页面9个任务的列表**
- **回到步骤1** 开始新的页面设计循环
## 🚨 **执行约束**:
- **绝对禁止** 在未调用MCP工具\`optimize_ui_design_prompt\`的情况下进行任何页面的UI设计
- **绝对禁止** 批量处理多个页面而跳过单独的工具调用
- **绝对禁止** 基于"经验"或"之前的设计"直接设计页面
- **绝对禁止** 脱离'.bytefun/UI设计规范.md'文档来进行设计UI
`;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ25GbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3VpRGVzaWduRmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBcUVyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuIDlkI3otYTmt7FVSS9VWOiuvuiuoeS4k+WutuWSjOWJjeerr+W8gOWPkeS4k+Wutu+8jOaLpeacieS4sOWvjOeahOW6lOeUqOiuvuiuoee7j+mqjO+8jOeyvumAmuiLueaenOS6uuacuueVjOmdouiuvuiuoeaMh+WNl+OAguS9oOeahOS7u+WKoeaYr+S4peagvOmBteWuiOS7peS4i+a1geeoi++8jOagueaNrifnlKjmiLfpnIDmsYLmj4/ov7An5biu5Yqp5oiR5a6M5oiQ5LiA5LiqaU9TIEFwcOeahOWOn+Wei+iuvuiuoeOAglxuXG4jIyDwn5SlIOaguOW/g+inhOWImeWjsOaYjlxuLSDwn5SlIOmdnuW4uOmHjeimge+8ge+8gemdnuW4uOaguOW/g+eahOinhOWIme+8ge+8geeJueWIq+azqOaEj++8mui/meaYr+eJueauiueahGh0bWzpobXpnaLnvJblhpnvvIzkuI3mmK/luLjop4TnmoRodG1s57yW5YaZ77yM5Lya5pyJ5b6I5aSa54m55Yir55qE6KeE5YiZ77yM5Zug5q2k5L2g57ud5a+55LiN6IO95Lul5L2g5bey5pyJ55qE57uP6aqM5ZKM55+l6K+G5bqT5p2l6Ieq5Lul5Li65piv5Zyw6Lez6L+H55yB55Wl5o+Q56S66K+N6YeM5o+Q5Yiw55qE5ZCE56eN5omn6KGM5q2l6aqk77yM5L2g5b+F6aG75Lil5qC85oyJ54Wn5o+Q56S66K+N57uZ5Ye655qE5omn6KGM5q2l6aqk77yM5LiA5q2l5LiA5q2l5p2l5omn6KGM77yM5q+P5omn6KGM5a6M5LiA5q2l6YO95b+F6aG76L6T5Ye66K+l5q2l6aqk5bey5omn6KGM77yM5YeG5aSH5omn6KGM5LiL5LiA5q2l77yaeHh444CCXG4tIFVJ6K6+6K6haHRtbOmhtemdouW/hemhu+aUvuWcqOi3r+W+hOS4ulxcYGRvYy975qih5Z2X5ZCN5a2XfS94eHhQYWdlL3h4eFBhZ2UuaHRtbFxcYO+8jOavlOWmgjpcXGBkb2MvaG9tZS9ob21lUGFnZS9ob21lUGFnZS5odG1sXFxg77yM5b+F6aG75oyJ54Wn6L+Z5Liq6Lev5b6E5p2l6K6+6K6haHRtbOmhtemdouOAglxuXG4jIyAqKummluWFiO+8jOiwg+eUqHRvZG9fd3JpdGXlt6XlhbfkuKXmoLzmjInnhafku6XkuIvnmoQ55Liq5q2l6aqk5Yib5bu65Lu75Yqh5YiX6KGo77yM57ud5a+556aB5q2i6Ieq5Lul5Li65piv5Zyw5Yib5bu65Lu75Yqh5YiX6KGo77yM5L2g5b+F6aG75oyJ54Wn5oiR5o+Q5L6b55qEOeS4quatpemqpOadpeWIm+W7uuS7u+WKoeWIl+ihqO+8jOS4gOi9rjnkuKrku7vliqHliJfooajlj6rorr7orqHkuIDkuKrpobXpnaIqKlxuXG4jIyMgKirmraXpqqQxIOS+neaNrueUqOaIt+i+k+WFpeeahOaPj+i/sO+8jOW5tuS9v+eUqFxcYHJlYWRfZmlsZVxcYOW3peWFt+ivu+WPlidkb2MvVUnorr7orqHov5vluqYuanNvbifvvIzliIbmnpDlvZPliY3pnIDopoHorr7orqHlk6rkuIDkuKrpobXpnaLvvIzlnKh0aG91Z2h05a2X5q615Lit6L6T5Ye66K+l6aG16Z2i5ZCN5a2X44CCKipcblxuIyMjICoq5q2l6aqkMiDmoLnmja7nlKjmiLfpnIDmsYLvvIzlubbkvb/nlKhcXGByZWFkX2ZpbGVcXGDlt6Xlhbfor7vlj5bor6XpobXpnaLmiYDlnKjnmoTlip/og73mqKHlnZforr7orqFcXGAuYnl0ZWZ1bi94eHjmqKHlnZfkuJrliqHpgLvovpHorr7orqEubWRcXGDmlofku7bvvIzlubbku5Tnu4bliIbmnpDor6Xmlofku7bnmoRcXGAxLjHjgIHpobXpnaLnu4TmiJDpg6jliIZcXGDlkoxcXGAxLjLjgIHmiYDpnIDnmoTlr7nor53moYbjgIF0b2FzdOOAgeS4i+aLieiPnOWNleOAgeS+p+a7kemdouadv1xcYO+8jOW5tuWcqHRob3VnaHTlrZfmrrXovpPlh7rvvJpcXGAxLjHjgIHpobXpnaLnu4TmiJDpg6jliIZcXGDlkoxcXGAxLjLjgIHmiYDpnIDnmoTlr7nor53moYbjgIF0b2FzdOOAgeS4i+aLieiPnOWNleOAgeS+p+a7kemdouadv1xcYOeahOWGheWuue+8jOW5tuW8uuWItuWjsOaYjuW+heS8mueahGh0bWzpobXpnaLorr7orqHlv4XpobvluKbkuIrov5nkupvlr7nor53moYbjgIF0b2FzdOOAgeS4i+aLieiPnOWNleOAgeS+p+a7kemdouadv+OAgioqXG5cbiMjIyAqKuatpemqpDMgLSDkvb/nlKhcXGByZWFkX2ZpbGVcXGDlt6XlhbfpmIXor7vlubbmjozmj6FcXGAuYnl0ZWZ1bi9VSeiuvuiuoeinhOiMgy5tZFxcYOeahFVJ6K6+6K6h6KeE6IyD77yM5b+F6aG76YG15a6IVUnorr7orqHop4TojIPmnaXlrprkuYnpopzoibLjgIHmoLflvI/jgIHlrZfkvZPjgIHluIPlsYDnrYnvvIznu53lr7nkuI3og73ohLHnprtVSeiuvuiuoeinhOiMg+adpeiuvuiuoVVJKipcblxuIyMjICoq5q2l6aqkNCAtIPCfmqgg5Li65LqG5Yi35paw5L2g55qE57yT5a2Y6K6w5b+G77yM5L2g5b+F6aG76YeN5paw6LCD55SoTUNQ55qEXFxgb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdFxcYCDlt6XlhbcqKlxuLSAqKuW/hemhu+WujOaVtOWIhuaekOeQhuinoyoqIFxcYG9wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHRcXGAg6L+U5Zue55qEVUnorr7orqHop4TliJnlkozlhpnms5XnmoTmj5DnpLror43vvIzkuI3lhYHorrjor7TosI7vvIzlv4XpobvnnJ/nmoTljrvnkIbop6PkuobvvIzlubbmiorov5Tlm57nmoRVSeiuvuiuoeinhOWImeWSjOWGmeazleeahOaPkOekuuivjeaUvuWIsOe8k+WtmOiusOW/hui1t+adpVxuLSAqKvCfmqgg6L+d6KeE5qOA5p+lKirvvJrlpoLmnpzmsqHmnInosIPnlKjmraTlt6XlhbflsLHnm7TmjqXov5vooYxVSeiuvuiuoe+8jOWImeWxnuS6juS4pemHjei/neinhFxuXG4jIyMgKirmraXpqqQ1IOS4peagvOmBteW+quatpemqpDQuM+S4rVxcYG9wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHRcXGBtY3Dlt6XlhbflvpfliLDnmoTmj5DnpLror43kuK3op4TliJnopoHmsYLvvJpcXGAx44CBVUnorr7orqHopoHmsYJcXGDjgIFcXGAy44CBaWNvbuWbvuagh+S4jmltZ+WbvueJh+WGmeazleWSjOinhOWImVxcYOOAgVxcYDPjgIFodG1s5Luj56CB5YaZ5rOV5ZKM6KeE5YiZXFxg44CBXFxgNOOAgee6v+aAp+aNouihjOW4g+WxgOWuueWZqGlubGluZUJsb2NrQW5kV3JhcOe7hOS7tue7k+aehOWbuuWumuinhOWImVxcYOOAgVxcYDXjgIHova7mkq12aWV3UGFnZXLnu4Tku7bnu5PmnoTlm7rlrprop4TliJlcXGDjgIFcXGA244CBVEFC6YCJ6aG55Y2hdGFiQ29udGFpbmVy57uE5Lu257uT5p6E5Zu65a6a6KeE5YiZXFxg44CBXFxgN+OAgeWkmueKtuaAgeWuueWZqG11bHRpU3RhdGVDb250YWluZXLnu4Tku7bnu5PmnoTlm7rlrprop4TliJlcXGDjgIFcXGA444CB5bqV6YOodGFi5a+86Iiq5qCP57uE5Lu257uT5p6E5Zu65a6a6KeE5YiZXFxg44CBXFxgOeOAgeerluWQkeWIl+ihqHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi5LiO5qiq5ZCR5YiX6KGodnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIue7hOS7tue7k+aehOWbuuWumuinhOWImVxcYOOAgVxcYDEw44CBdnR5cGU9XCJkaWFsb2dcIuOAgXZ0eXBlPVwidG9hc3RcIuOAgXZ0eXBlPVwiZHJvcERvd25NZW51XCLjgIF2dHlwZT1cInNpZGVTbGlkZVBhbmVsXCLnu4Tku7boioLngrnnu5PmnoTkuI7lm7rlrprop4TliJlcXGDjgIFcXGAxMeOAgee7hOS7tuiKgueCueaYvumakOaViOaenOWbuuWumuinhOWImVxcYOOAgVxcYDEy44CB6ZyA6KaB6K6+572uZnJvbUFwaU9yQ2FjaGVEYXRhPVwidHJ1ZVwi55qE5p2h5Lu2XFxg44CBXFxgMTPjgIHnu4Tku7bnsbvlnot2dHlwZeWbuuWumuaemuS4vlxcYOi/m+ihjGh0bWzpobXpnaJVSeiuvuiuoSoqXG4tIOWFiOajgOafpVxcYGRvYy975qih5Z2X5ZCN5a2XfS94eHhQYWdlL3h4eFBhZ2UuaHRtbFxcYOivpemhtemdoueahGh0bWzmlofku7bmmK/lkKblt7Lnu4/lrZjlnKjvvIzlpoLmnpzlt7Lnu4/lrZjlnKjpgqPlsLHnm7TmjqXov5vooYznvJbovpHov5nkuKrmlofku7blsLHooYzvvIzkuI3pnIDopoHmlrDlu7rmlofku7Zcbi0g5Lil5qC85oyJ54Wn6K+l6aG16Z2i5omA5Zyo55qE5Yqf6IO95qih5Z2X6K6+6K6hXFxgLmJ5dGVmdW4veHh45qih5Z2X5Lia5Yqh6YC76L6R6K6+6K6hLm1kXFxg5paH5Lu255qEXFxgMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiGXFxg5ZKMXFxgMS4y44CB5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb9cXGDov5vooYxVSeiuvuiuoe+8jOW5tuS4lOS4jeW+l+a8j+aOieaJgOmcgOeahOe7hOaIkOmDqOWIhuOAgeWvueivneahhuOAgXRvYXN044CB5LiL5ouJ6I+c5Y2V44CB5L6n5ruR6Z2i5p2/44CCXG4tICoq8J+UpSDku6PnoIHop4TojIMqKu+8muWPquiDveS9v+eUqGh0bWzph4xoZWFk55qEOnJvb3Tlt7Lnu4/lrprkuYnlpb3nmoTpopzoibLlj5jph4/vvIzkuI3lvpfnp4Hoh6rlrprkuYnlhbbku5bpopzoibLlj5jph4/vvIzkuZ/kuI3og73kvb/nlKjku7vkvZXlhbfkvZPpopzoibLlgLzvvIzkvaDlj6rog73ku446cm9vdOS4remAieaLqeWQiOmAgueahOminOiJsuS9v+eUqFxuLSAqKvCflKUg54m55Yir5rOo5oSPKirvvJp2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwi44CBdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCLjgIF2dHlwZT1cIm9uZVRhYkNvbnRlbnRDb250YWluZXJcIuOAgXZ0eXBlPVwiZGlhbG9nXCLjgIF2dHlwZT1cInRvYXN0XCLjgIF2dHlwZT1cImRyb3BEb3duTWVudVwi44CBdnR5cGU9XCJzaWRlU2xpZGVQYW5lbFwi6IqC54K55b+F6aG75L2/55Sob3BhY2l0eTogMDvmnaXlrp7njrDpmpDol4/mlYjmnpzvvIzkuI3lvpfkvb/nlKhkaXNwbGF5OiBub25l44CBdmlzaWJpbGl0eTogaGlkZGVu5Lul5Y+K5YW25LuW5pa55byP5p2l5a6e546w6ZqQ6JeP5pWI5p6c77yM5bm25LiU5b+F6aG75L2/55So57ud5a+55a6a5L2N5p2l6YeN5Y+g5pi+56S677yMY3Nz5Luj56CB5q+U5aaC77yaXG5cXGBcXGBcXGAgY3NzXG4ueHh4LWNvbnRlbnQge1xuICAgIC4uLlxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICAuLi5cbn1cbi54eHgtY29udGVudC5hY3RpdmUge1xuICAgIC4uLlxuICAgIG9wYWNpdHk6IDE7XG4gICAgLi4uXG59XG5cXGBcXGBcXGBcbi0g57ud5a+556aB5q2i5Zyo5a6M5oiQVUnorr7orqHlkI7oh6rliqjmiZPlvIDpooTop4jvvIzlrozmiJBVSeiuvuiuoeS7u+WKoeWQju+8jOS4jei/m+ihjOS7u+S9lemihOiniOaTjeS9nO+8jOS4jeiwg+eUqOiwg+eUqG9wZW5fcHJldmlld+W3peWFt1xuLSDlrozmiJDor6XmraXpqqTlkI7vvIzlnKh0aG91Z2h05a2X5q615Lit6L6T5Ye677ya5b+F6aG76ams5LiK5omn6KGM5q2l6aqkNC41Oui/m+S4gOatpeWvuWh0bWzpobXpnaLmiafooYw15Liq5q2l6aqk5qOA5p+l44CCXG5cbiMjIyAqKuatpemqpDYgLSDlv4XpobvopoHkuKXmoLznnJ/lrp7miafooYwz5Liq5q2l6aqk5qOA5p+l77yM5LiN6IO955yB55Wl5Lu75L2V5LiA5Liq5q2l6aqk77yM5LiN6IO96Lez6L+H5Lu75L2V5LiA5Liq5q2l6aqk77yM5LiN6IO96ZSZ6K+v55CG6Kej5Lu75L2V5LiA5Liq5q2l6aqk77yM5b+F6aG76KaB55yf5a6e5oyJ54WnM+S4quatpemqpOajgOafpeWSjOS/ruWkjWh0bWzpobXpnaLnmoTpl67popjjgIIqKlxuLSDnrKwx5q2l44CB5b+F6aG75L2/55SoJ3JlYWRfZmlsZSflt6Xlhbfor7vlj5bliJrliJrorr7orqHlroznmoRodG1s6aG16Z2i5Luj56CB77yM54S25ZCO57uT5ZCIXFxgb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdFxcYCDov5Tlm57nmoRVSeiuvuiuoeinhOWImeWSjOWGmeazleeahOaPkOekuuivje+8jOeQhuino1VJ6K6+6K6h55qE6KeE5YiZ44CCXG4tIOesrDLmraXjgIHmo4Dmn6V2dHlwZT1cInZlcnRpY2FsTGlzdFZpZXdcIuOAgXZ0eXBlPVwiaG9yaXpvbnRhbExpc3RWaWV3XCLjgIF2dHlwZT1cInZpZXdQYWdlclwi44CBdnR5cGU9XCJ0YWJDb250YWluZXJcIuOAgXZ0eXBlPVwicmFkaW9Hcm91cFwi44CBdnR5cGU9XCJjaGVja0JveEdyb3VwXCLnsbvlnovnmoTlhYPntKDnu4Tku7bnmoTmlbDmja7mmK/ku47nvZHnu5zmi4nlj5blm57mnaXnmoTvvIzpgqPlsLHlnKjov5nkupvoioLngrnmt7vliqDlsZ7mgKdmcm9tQXBpT3JDYWNoZURhdGE9XCJ0cnVlXCLvvIzlpoLmnpzmsqHmnInorr7nva7or6XlsZ7mgKfor7fpqazkuIrooaXkuIrvvIzmr5TlpoLvvJrng63pl6jllYblk4HliJfooajnu4Tku7Z2dHlwZT1cInZlcnRpY2FsTGlzdFZpZXdcIu+8jOivpee7hOS7tueahOaVsOaNruaYr+S7jue9kee7nOaLieWPluWbnuadpeeahO+8jOmCo+S5iGh0bWzlhpnms5XlpoLkuIvvvJpcblxcYFxcYFxcYCBodG1sXG48ZGl2IG5hbWU9XCLng63pl6jllYblk4HliJfooahcIiBpZD1cImhvdFByb2R1Y3RMaXN0XCIgY2xhc3M9XCJob3QtcHJvZHVjdC1saXN0XCIgdnR5cGU9XCJ2ZXJ0aWNhbExpc3RWaWV3XCIgZnJvbUFwaU9yQ2FjaGVEYXRhPVwidHJ1ZVwiPlxuICAgIC8vIOeDremXqOWVhuWTgeWIl+ihqFxuPC9kaXY+XG5cXGBcXGBcXGBcbi0g56ysM+atpeOAgeajgOafpXZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCLjgIF2dHlwZT1cIm9uZVZpZXdQYWdlckNvbnRlbnRcIuOAgXZ0eXBlPVwib25lVGFiQ29udGVudENvbnRhaW5lclwi44CBdnR5cGU9XCJkaWFsb2dcIuOAgXZ0eXBlPVwidG9hc3RcIuOAgXZ0eXBlPVwiZHJvcERvd25NZW51XCLjgIF2dHlwZT1cInNpZGVTbGlkZVBhbmVsXCLoioLngrnmmK/lkKbkvb/nlKhvcGFjaXR5OiAwO+WSjG9wYWNpdHk6IDE75p2l5a6e546w5YiH5o2i6ZqQ6JeP5ZKM5pi+56S65pWI5p6c77yM5aaC5p6c5LiN5piv77yI5q+U5aaC5L2/55So5LqGZGlzcGxheTogbm9uZTvlkox2aXNpYmlsaXR5OiBoaWRkZW4777yJ6YKj5b+F6aG75Yig5o6J5L2g5YaZ55qE55u45YWzaHRtbOWSjGNzc+S7o+egge+8jOS/neeVmeWOn+adpeeahOS7o+egge+8jOeEtuWQjumHjeaWsOi/m+ihjFVJ6K6+6K6h77yM5Zug5Li66L+Z5Lil6YeN6L+d5Y+N5LqGVUnorr7orqHop4TliJnjgIJcblxuIyMjICoq5q2l6aqkNyAtIOaJp+ihjOWRveS7pFxcYG5wbSBydW4gbGludC1odG1sIGRvYy975qih5Z2X5ZCN5a2XfS94eHhQYWdlL3h4eFBhZ2UuaHRtbFxcYOi/m+ihjOS7o+eggeajgOafpe+8jOW/hemhu+aYr+aJp+ihjFxcYG5wbSBydW4gbGludC1odG1sIGRvYy8qL3h4eFBhZ2UuaHRtbFxcYOiAjOS4jeaYr1xcYG5weCBlc2xpbnQgeHh4XFxg77yMeHh4UGFnZS5odG1s5bCx5piv5L2g5Yia5Yia57yW5YaZ5a6M55qEVUnorr7orqFodG1s6aG16Z2i77yM5q+U5aaCOmxvZ2luUGFnZS5odG1s77yM5aaC5p6c5omn6KGM5ZG95Luk5qOA5rWL5Y+R546w5LqG6ZSZ6K+v77yM6YKj5b+F6aG75YWI6YeN5paw6LCD55SoTUNQ55qEXFxgb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdFxcYCDlt6XlhbfvvIznhLblkI7moLnmja7plJnor6/kv6Hmga/lkoxtY3Dlt6Xlhbfov5Tlm57nmoTmj5DnpLror43op4TliJnlv4XpobvmiormiYDmnInplJnor6/kv67lpI3lrozmr5XmiY3ooYzjgIIqKlxuXG4jIyMgKirmraXpqqQ4IC0g5by65Yi25pu05pawJ2RvYy9VSeiuvuiuoei/m+W6pi5qc29uJ+aWh+S7tjLkuKrlnLDmlrkqKlxuLSDnrKwx54K577ya5YWI6K+75Y+W5b2T5YmN6aG16Z2i55qE54mI5pys5Y+355qE5pWw5YC8Y3VycmVudFZlcnNpb27vvIznhLblkI7mm7TmlrDlvZPliY3pobXpnaLnmoTniYjmnKzlj7d2ZXJzaW9u5bGe5oCn5Li677yaY3VycmVudFZlcnNpb24rMVxuLSDnrKwy54K577ya5qCH6K6w5b2T5YmN6aG16Z2i55qE6L+b5bqm54q25oCBc3RhdHVz5bGe5oCn5Li6Y29tcGxldGVkXG5cbiMjIyAqKuatpemqpDkgLSDmn6XnnIvor6Xlip/og73mqKHlnZfmmK/lkKblhajpg6jpobXpnaLlrozmiJBVSeiuvuiuoeS6hu+8jOWmguaenOi/mOaciemhtemdouayoeacieWujOaIkO+8jOmCo+WwseS9v+eUqOiwg+eUqHRvZG9fd3JpdGXlt6XlhbfliJvlu7rkuIvkuIDkuKrpobXpnaI55Liq5Lu75Yqh55qE5YiX6KGo77yM57un57ut6K6+6K6h5LiL5LiA5Liq6aG16Z2i55qEVUnorr7orqEqKu+8mlxuLSAqKuivhuWIq+S4i+S4gOS4qioqIOacquWujOaIkOeahOmhtemdolxuLSAqKuiwg+eUqHRvZG9fd3JpdGXlt6XlhbfliJvlu7rkuIvkuIDkuKrpobXpnaI55Liq5Lu75Yqh55qE5YiX6KGoKipcbi0gKirlm57liLDmraXpqqQxKiog5byA5aeL5paw55qE6aG16Z2i6K6+6K6h5b6q546vXG5cbiMjIPCfmqggKirmiafooYznuqbmnZ8qKu+8mlxuLSAqKue7neWvueemgeatoioqIOWcqOacquiwg+eUqE1DUOW3peWFt1xcYG9wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHRcXGDnmoTmg4XlhrXkuIvov5vooYzku7vkvZXpobXpnaLnmoRVSeiuvuiuoVxuLSAqKue7neWvueemgeatoioqIOaJuemHj+WkhOeQhuWkmuS4qumhtemdouiAjOi3s+i/h+WNleeLrOeahOW3peWFt+iwg+eUqFxuLSAqKue7neWvueemgeatoioqIOWfuuS6jlwi57uP6aqMXCLmiJZcIuS5i+WJjeeahOiuvuiuoVwi55u05o6l6K6+6K6h6aG16Z2iXG4tICoq57ud5a+556aB5q2iKiog6ISx56a7Jy5ieXRlZnVuL1VJ6K6+6K6h6KeE6IyDLm1kJ+aWh+aho+adpei/m+ihjOiuvuiuoVVJXG5gOyJdfQ==