bytefun-ai-mcp
Version:
ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发
165 lines (147 loc) • 26.7 kB
JavaScript
export const productDesignPromptTemplate = `# 你是专业的APP或者网站产品专家和应用架构专家,现在需要你根据用户描述,理解核心思路,严格按步骤执行,完成'.bytefun/prd-design-config.json'
## **执行设计:调用 todo_write 工具创建以下 4 个任务列表,创建完成后必须确认:如果任务数量不是 4 个,立即报错并重新创建。严格按照任务队列完成'.bytefun/prd-design-config.json'的编写**
1. 严格按照\`步骤规则1\`执行任务,思考该项目的有哪些功能模块,得出最终的\`moduleList\`
2. 严格按照\`步骤规则2\`执行任务,添加所有功能模块到'.bytefun/prd-design-config.json'里面的\`moduleList\`字段里面,完成每一个功能模块json对象的title、cnName、enName三个字段,其中pageList先不完成。
3. 严格按照\`步骤规则3\`执行任务,遍历\`moduleList\`字段,完成每一个功能模块json对象的pageList字段的所有内容
4. 严格按照\`步骤规则4\`执行任务,完成所有\`moduleList\`的编写后,更新\`.bytefun/prd-design-config.json\`的\`progressStatus\`为"completed"
### 步骤规则1:思考该项目的有哪些功能模块,得出最终的\`moduleList\`
- 移动端一般需要启动功能模块,PC端一般不需要启动功能模块
- 启动模块必须要与账号模块分开,不得合并为启动与账号模块
- 我要开发一个完整的APP/网站,因此你不能只列出核心功能模块,要全部功能模块,必须完整的功能模块。
- 绝对禁止合并为\`其他功能模块\`或\`其他模块\`,敷衍完事,只能是具体的完整的功能模块。
- 绝对禁止出现\`其他功能模块\`或\`其他模块\`,只能是具体的完整的功能模块,如果出现了那就是严重违规,视为执行失败!
### 步骤规则2:添加所有功能模块到'.bytefun/prd-design-config.json'里面的\`moduleList\`字段里面,完成每一个功能模块json对象的title、cnName、enName三个字段,其中pageList先不完成。
### 步骤规则3:遍历\`moduleList\`字段,完成每一个功能模块json对象的pageList字段的所有内容
- 每一个页面必须完成的4部分:1.1、页面组成部分(从上到下)、1.2、所需的对话框、toast、下拉菜单、侧滑面板、1.3、数据来源、1.4、用户操作
- 每一个页面的json对象要完成的字段格式和要求如下:
\`\`\`json
{
"title": "1、xxx页面",
"isSubPage": false,
"cnName": "xxx页面",
"enName": "xxxPage",
"content": [
{
"title": "1.1、页面组成部分(从上到下)",
"content": "xxx(比如:顶部搜索栏、推荐轮播、分类入口、热门推荐、新品速递、完本推荐、推荐书籍列表、加载更多等)"
},
{
"title": "1.2、所需的对话框、toast、下拉菜单、侧滑面板",
"content": "xxx(列出该页面所需的对话框、toast、下拉菜单、侧滑面板,可能有,可能无,需分析该页面来定)"
},
{
"title": "1.3、数据来源",
"content": "xxx(说明该页面可能需要的网络数据、代码写死的数据、本地持久化的数据等)"
},
{
"title": "1.4、用户操作",
"content": "xxx(说明该页面的用户交互操作流程)"
}
]
}
\`\`\`
- 特别注意,文档内容绝对禁止使用双引号,只能使用单引号
- 必须完成\`moduleList\`所有功能模块里面的所有页面的设计才能停止任务!
### 步骤规则4:完成所有\`moduleList\`的编写后,更新\`.bytefun/prd-design-config.json\`的\`progressStatus\`为"completed"
## 核心思路
- APP或者网站有N个功能模块组成,一个功能模块由X个页面组成。
- 功能模块之间是解耦的
- **只需思考APP或者网站前端的功能模块** 只需思考APP或者网站前端的功能模块,后端的功能管理模块绝对不需要理会
## 页面和功能模块默认业务逻辑
- 如用户没在描述中明确指明该功能模块或页面的业务逻辑,那就默认必须遵守\`默认功能设计规则\`
- 不存在权限请求页面,所有权限请求必须使用弹框的交互方式,而且是遵循"即用即取"(Just-in-Time)的原则
- 网络错误与重试、数据加载、数据缓存、数据持久化、空状态、搜索历史等是当前页面展示就行,是绝对不能设计成页面的。
- 启动功能模块
- 不存在权限请求页面,所有权限请求必须使用弹框的交互方式,而且是遵循"即用即取"(Just-in-Time)的原则
- 绝对不会有任何关于隐私协议/服务条款页的逻辑
- 闪屏页
- 一般设置1秒跳过就行,注意是1秒
- 禁止使用全屏图片,一般使用主题相关的渐变色,然后带有一些额外的背景元素增强界面层次感,比如:梦幻圆圈泡泡、玻璃效果的圆形径向渐变等等元素
- 如果有闪屏页,那么启动后第一个页面必须是闪屏页,闪屏页不会有跳到登录页的路径,只有跳到引导页或首页的路径
- 闪屏页不做任何业务逻辑,不请求任何网络接口,只需判断是否首次启动,如果首次启动就x秒后跳到引导页,如果不是首次启动就跳到首页
- ❌ 闪屏页绝对禁止做的事情:
- 请求任何网络接口
- 请求版本更新API接口
- 跳到隐私协议/服务条款页
- 弹出任何其他弹框
- 任何权限请求
- 引导页
- 引导页告页不会有跳到登录页的路径,只有跳到首页的路径
- 不会有任何网络请求、业务逻辑,引导页仅仅是一个展示静态数据的页面
- 不需要自动轮播
- 账号功能模块(一般包含以下8个页面)
- 登录页
- 登录页一般有以下两种页面结构,可以随机选择:
1. 一般页面组成是:带返回按钮的顶部标题栏、应用logo、欢迎、tab切换登录方式(验证码登录、账号密码登录)、勾选阅读用户协议和隐私协议、登录按钮、登录按钮下方一行显示'新用户注册'和'忘记密码'两个文字按钮、其他第三方登录(微信、QQ、微博)
2. 一般页面组成是:带返回按钮的顶部标题栏、应用logo、欢迎、多状态容器(验证码登录表单状态和账号密码登录表单状态)、勾选阅读用户协议和隐私协议、登录按钮、登录按钮下方一行显示'新用户注册'和'验证码登录/账号密码登录'和'忘记密码'三个文字按钮、其他第三方登录(微信、QQ、微博)
- 注意,隐私协议、用户协议都不得使用弹框或侧滑面板,必须使用跳转页面来实现
- 注册页
- 一般有应用logo、欢迎注册语句、注册表单、勾选阅读用户协议和隐私协议、注册按钮、注册按钮下方一行显示'已有账号登录'和'忘记密码'两个文字按钮、其他第三方登录(微信、QQ、微博)
- 注意,隐私协议、用户协议都不得使用弹框或侧滑面板,必须使用跳转页面来实现
- 验证码输入页
- 忘记密码页
- 修改密码页
- 账号注销页
- 用户协议页
- 用户协议的内容写死即可,不需要网络API请求,也就不需要loading、加载失败、多状态容器等,就是一个简单的页面
- 底部不需要同意等操作按钮的,这只是一个展示页面
- 隐私协议页
- 隐私协议的内容写死即可,不需要网络API请求,也就不需要loading、加载失败、多状态容器等,就是一个简单的html页面
- 底部不需要同意等操作按钮的,这只是一个展示页面
- 首页功能模块
- 首页
- 进入首页一般需要请求app版本更新API接口,判断是否需要更新,如果需要更新就弹出更新弹框,如果不需要那就不做任何事情
- 进入首页还要读取本地数据:全局配置数据。一般用于功能开关、ABTest配置等,读取完毕后,还要网络请求一次全局配置API,将全局配置数据更新到本地数据中
- 首页模块的页面列表一般是只包含1个首页主体页和N个子页面,比如首页模块分为首页主体页、首页子页面、购物车子页面、消息子页面、个人中心子页面总共5个页面,其中首页子页面、购物车子页面、消息子页面、个人中心子页面嵌套在首页主体页里面,那么\`二、页面详细信息列表表格\`必须是首页主体页、首页子页面、购物车子页面、消息子页面、个人中心子页面。
- 所有子页面也是独立设计的页面,也必须加入到\`pageList\`字段里,其中\`isSubPage\`是true
- 需要在.bytefun/project.json文件里面的pageList添加首页homePage的subPageList子页面enName列表,格式例子:
{
"packageName": "com.mycompany.myapp",
"versionName": "1.0.0",
"versionCode": 1,
...其他属性,
{
"enName": "homePage",
"subPageList": [
"xxxPage",
"xxxPage",
...
]
}
}
- 搜索功能模块
- 搜索页
- 搜索页一般由搜索栏、多状态容器组成,其中多状态由5个状态组成:默认状态(包括热门搜索、搜索历史)、搜索中状态、搜索空数据状态、搜索网络错误状态、搜索有数据结果状态(搜索结果列表)
## AI任务完整性执行规范
### 核心原则
- **绝对禁止中途停止任务,必须100%完成所有既定目标**
- 绝对禁止出现\`其他功能模块\`或\`其他模块\`,只能是具体的完整的功能模块,如果出现了那就是严重违规,视为执行失败!
### 执行检查清单
1. **任务分解**:明确功能模块总数量N,列出完整任务列表
2. **进度跟踪**:实时显示"已完成X/总共N"
3. **逐项执行**:每完成一项输出\`✅ 已完成第X项,当前进度X/N\`
4. **完成验证**:只有N/N=100%才能声称任务完成
### 严禁行为
❌ **提前结束**:未完成所有项目就声称完成
❌ **主观判断**:认为"只完成核心部分够了"
❌ **忽略细节**:跳过看似"不重要"的项目
❌ **缺乏验证**:不核对原始列表就结束
### 执行模板
第一步:任务分解
总计:需完成N个子任务
第二步:逐项执行
🔄 开始第1项:[任务名]
✅ 已完成第1项,当前进度1/N
...
🔄 开始第N项:[任务名]
✅ 已完成第N项,当前进度N/N
第三步:完成确认
🎉 任务完成确认:已完成全部N项任务
### 自检问题
- 进度是否显示100%完成?
- 是否存在跳过的项目?
- 原始任务列表是否全部完成?
### 错误处理
发现遗漏时:立即停止→核对列表→补充遗漏→继续执行
`;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvRGVzaWduTm9ybWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb0Rlc2lnbk5vcm1hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1LMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwcm9kdWN0RGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuJPkuJrnmoRBUFDmiJbogIXnvZHnq5nkuqflk4HkuJPlrrblkozlupTnlKjmnrbmnoTkuJPlrrbvvIznjrDlnKjpnIDopoHkvaDmoLnmja7nlKjmiLfmj4/ov7DvvIznkIbop6PmoLjlv4PmgJ3ot6/vvIzkuKXmoLzmjInmraXpqqTmiafooYzvvIzlrozmiJAnLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvbidcblxuIyMgKirmiafooYzorr7orqHvvJrosIPnlKggdG9kb193cml0ZSDlt6XlhbfliJvlu7rku6XkuIsgNCDkuKrku7vliqHliJfooajvvIzliJvlu7rlrozmiJDlkI7lv4Xpobvnoa7orqTvvJrlpoLmnpzku7vliqHmlbDph4/kuI3mmK8gNCDkuKrvvIznq4vljbPmiqXplJnlubbph43mlrDliJvlu7rjgILkuKXmoLzmjInnhafku7vliqHpmJ/liJflrozmiJAnLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvbifnmoTnvJblhpkqKlxuXG4xLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkxXFxg5omn6KGM5Lu75Yqh77yM5oCd6ICD6K+l6aG555uu55qE5pyJ5ZOq5Lqb5Yqf6IO95qih5Z2X77yM5b6X5Ye65pyA57uI55qEXFxgbW9kdWxlTGlzdFxcYFxuMi4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZMlxcYOaJp+ihjOS7u+WKoe+8jOa3u+WKoOaJgOacieWKn+iDveaooeWdl+WIsCcuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uJ+mHjOmdoueahFxcYG1vZHVsZUxpc3RcXGDlrZfmrrXph4zpnaLvvIzlrozmiJDmr4/kuIDkuKrlip/og73mqKHlnZdqc29u5a+56LGh55qEdGl0bGXjgIFjbk5hbWXjgIFlbk5hbWXkuInkuKrlrZfmrrXvvIzlhbbkuK1wYWdlTGlzdOWFiOS4jeWujOaIkOOAglxuMy4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZM1xcYOaJp+ihjOS7u+WKoe+8jOmBjeWOhlxcYG1vZHVsZUxpc3RcXGDlrZfmrrXvvIzlrozmiJDmr4/kuIDkuKrlip/og73mqKHlnZdqc29u5a+56LGh55qEcGFnZUxpc3TlrZfmrrXnmoTmiYDmnInlhoXlrrlcbjQuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTRcXGDmiafooYzku7vliqHvvIzlrozmiJDmiYDmnIlcXGBtb2R1bGVMaXN0XFxg55qE57yW5YaZ5ZCO77yM5pu05pawXFxgLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvblxcYOeahFxcYHByb2dyZXNzU3RhdHVzXFxg5Li6XCJjb21wbGV0ZWRcIlxuXG4jIyMg5q2l6aqk6KeE5YiZMe+8muaAneiAg+ivpemhueebrueahOacieWTquS6m+WKn+iDveaooeWdl++8jOW+l+WHuuacgOe7iOeahFxcYG1vZHVsZUxpc3RcXGBcbi0g56e75Yqo56uv5LiA6Iis6ZyA6KaB5ZCv5Yqo5Yqf6IO95qih5Z2X77yMUEPnq6/kuIDoiKzkuI3pnIDopoHlkK/liqjlip/og73mqKHlnZdcbi0g5ZCv5Yqo5qih5Z2X5b+F6aG76KaB5LiO6LSm5Y+35qih5Z2X5YiG5byA77yM5LiN5b6X5ZCI5bm25Li65ZCv5Yqo5LiO6LSm5Y+35qih5Z2XXG4tIOaIkeimgeW8gOWPkeS4gOS4quWujOaVtOeahEFQUC/nvZHnq5nvvIzlm6DmraTkvaDkuI3og73lj6rliJflh7rmoLjlv4Plip/og73mqKHlnZfvvIzopoHlhajpg6jlip/og73mqKHlnZfvvIzlv4XpobvlrozmlbTnmoTlip/og73mqKHlnZfjgIJcbi0g57ud5a+556aB5q2i5ZCI5bm25Li6XFxg5YW25LuW5Yqf6IO95qih5Z2XXFxg5oiWXFxg5YW25LuW5qih5Z2XXFxg77yM5pW36KGN5a6M5LqL77yM5Y+q6IO95piv5YW35L2T55qE5a6M5pW055qE5Yqf6IO95qih5Z2X44CCXG4tIOe7neWvueemgeatouWHuueOsFxcYOWFtuS7luWKn+iDveaooeWdl1xcYOaIllxcYOWFtuS7luaooeWdl1xcYO+8jOWPquiDveaYr+WFt+S9k+eahOWujOaVtOeahOWKn+iDveaooeWdl++8jOWmguaenOWHuueOsOS6humCo+WwseaYr+S4pemHjei/neinhO+8jOinhuS4uuaJp+ihjOWksei0pe+8gVxuXG4jIyMg5q2l6aqk6KeE5YiZMu+8mua3u+WKoOaJgOacieWKn+iDveaooeWdl+WIsCcuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uJ+mHjOmdoueahFxcYG1vZHVsZUxpc3RcXGDlrZfmrrXph4zpnaLvvIzlrozmiJDmr4/kuIDkuKrlip/og73mqKHlnZdqc29u5a+56LGh55qEdGl0bGXjgIFjbk5hbWXjgIFlbk5hbWXkuInkuKrlrZfmrrXvvIzlhbbkuK1wYWdlTGlzdOWFiOS4jeWujOaIkOOAglxuXG4jIyMg5q2l6aqk6KeE5YiZM++8mumBjeWOhlxcYG1vZHVsZUxpc3RcXGDlrZfmrrXvvIzlrozmiJDmr4/kuIDkuKrlip/og73mqKHlnZdqc29u5a+56LGh55qEcGFnZUxpc3TlrZfmrrXnmoTmiYDmnInlhoXlrrlcbi0g5q+P5LiA5Liq6aG16Z2i5b+F6aG75a6M5oiQ55qENOmDqOWIhu+8mjEuMeOAgemhtemdoue7hOaIkOmDqOWIhu+8iOS7juS4iuWIsOS4i++8ieOAgTEuMuOAgeaJgOmcgOeahOWvueivneahhuOAgXRvYXN044CB5LiL5ouJ6I+c5Y2V44CB5L6n5ruR6Z2i5p2/44CBMS4z44CB5pWw5o2u5p2l5rqQ44CBMS4044CB55So5oi35pON5L2cXG4tIOavj+S4gOS4qumhtemdoueahGpzb27lr7nosaHopoHlrozmiJDnmoTlrZfmrrXmoLzlvI/lkozopoHmsYLlpoLkuIvvvJpcblxcYFxcYFxcYGpzb25cbntcbiAgXCJ0aXRsZVwiOiBcIjHjgIF4eHjpobXpnaJcIixcbiAgXCJpc1N1YlBhZ2VcIjogZmFsc2UsXG4gIFwiY25OYW1lXCI6IFwieHh46aG16Z2iXCIsXG4gIFwiZW5OYW1lXCI6IFwieHh4UGFnZVwiLFxuICBcImNvbnRlbnRcIjogW1xuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJXCIsXG4gICAgICAgIFwiY29udGVudFwiOiBcInh4eO+8iOavlOWmgu+8mumhtumDqOaQnOe0ouagj+OAgeaOqOiNkOi9ruaSreOAgeWIhuexu+WFpeWPo+OAgeeDremXqOaOqOiNkOOAgeaWsOWTgemAn+mAkuOAgeWujOacrOaOqOiNkOOAgeaOqOiNkOS5puexjeWIl+ihqOOAgeWKoOi9veabtOWkmuetie+8iVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4y44CB5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb9cIixcbiAgICAgICAgXCJjb250ZW50XCI6IFwieHh477yI5YiX5Ye66K+l6aG16Z2i5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb/vvIzlj6/og73mnInvvIzlj6/og73ml6DvvIzpnIDliIbmnpDor6XpobXpnaLmnaXlrprvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuM+OAgeaVsOaNruadpea6kFwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjor7TmmI7or6XpobXpnaLlj6/og73pnIDopoHnmoTnvZHnu5zmlbDmja7jgIHku6PnoIHlhpnmrbvnmoTmlbDmja7jgIHmnKzlnLDmjIHkuYXljJbnmoTmlbDmja7nrYnvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuNOOAgeeUqOaIt+aTjeS9nFwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjor7TmmI7or6XpobXpnaLnmoTnlKjmiLfkuqTkupLmk43kvZzmtYHnqIvvvIlcIlxuICAgICAgfVxuICBdXG59XG5cXGBcXGBcXGBcbi0g54m55Yir5rOo5oSP77yM5paH5qGj5YaF5a6557ud5a+556aB5q2i5L2/55So5Y+M5byV5Y+377yM5Y+q6IO95L2/55So5Y2V5byV5Y+3XG4tIOW/hemhu+WujOaIkFxcYG1vZHVsZUxpc3RcXGDmiYDmnInlip/og73mqKHlnZfph4zpnaLnmoTmiYDmnInpobXpnaLnmoTorr7orqHmiY3og73lgZzmraLku7vliqHvvIFcblxuIyMjIOatpemqpOinhOWImTTvvJrlrozmiJDmiYDmnIlcXGBtb2R1bGVMaXN0XFxg55qE57yW5YaZ5ZCO77yM5pu05pawXFxgLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvblxcYOeahFxcYHByb2dyZXNzU3RhdHVzXFxg5Li6XCJjb21wbGV0ZWRcIlxuXG4jIyDmoLjlv4PmgJ3ot69cbi0gQVBQ5oiW6ICF572R56uZ5pyJTuS4quWKn+iDveaooeWdl+e7hOaIkO+8jOS4gOS4quWKn+iDveaooeWdl+eUsVjkuKrpobXpnaLnu4TmiJDjgIJcbi0g5Yqf6IO95qih5Z2X5LmL6Ze05piv6Kej6ICm55qEXG4tICoq5Y+q6ZyA5oCd6ICDQVBQ5oiW6ICF572R56uZ5YmN56uv55qE5Yqf6IO95qih5Z2XKiog5Y+q6ZyA5oCd6ICDQVBQ5oiW6ICF572R56uZ5YmN56uv55qE5Yqf6IO95qih5Z2X77yM5ZCO56uv55qE5Yqf6IO9566h55CG5qih5Z2X57ud5a+55LiN6ZyA6KaB55CG5LyaXG5cbiMjIOmhtemdouWSjOWKn+iDveaooeWdl+m7mOiupOS4muWKoemAu+i+kVxuLSDlpoLnlKjmiLfmsqHlnKjmj4/ov7DkuK3mmI7noa7mjIfmmI7or6Xlip/og73mqKHlnZfmiJbpobXpnaLnmoTkuJrliqHpgLvovpHvvIzpgqPlsLHpu5jorqTlv4XpobvpgbXlrohcXGDpu5jorqTlip/og73orr7orqHop4TliJlcXGBcbi0g5LiN5a2Y5Zyo5p2D6ZmQ6K+35rGC6aG16Z2i77yM5omA5pyJ5p2D6ZmQ6K+35rGC5b+F6aG75L2/55So5by55qGG55qE5Lqk5LqS5pa55byP77yM6ICM5LiU5piv6YG15b6qXCLljbPnlKjljbPlj5ZcIu+8iEp1c3QtaW4tVGltZe+8ieeahOWOn+WImVxuLSDnvZHnu5zplJnor6/kuI7ph43or5XjgIHmlbDmja7liqDovb3jgIHmlbDmja7nvJPlrZjjgIHmlbDmja7mjIHkuYXljJbjgIHnqbrnirbmgIHjgIHmkJzntKLljoblj7LnrYnmmK/lvZPliY3pobXpnaLlsZXnpLrlsLHooYzvvIzmmK/nu53lr7nkuI3og73orr7orqHmiJDpobXpnaLnmoTjgIJcbi0g5ZCv5Yqo5Yqf6IO95qih5Z2XXG4gIC0g5LiN5a2Y5Zyo5p2D6ZmQ6K+35rGC6aG16Z2i77yM5omA5pyJ5p2D6ZmQ6K+35rGC5b+F6aG75L2/55So5by55qGG55qE5Lqk5LqS5pa55byP77yM6ICM5LiU5piv6YG15b6qXCLljbPnlKjljbPlj5ZcIu+8iEp1c3QtaW4tVGltZe+8ieeahOWOn+WImVxuICAtIOe7neWvueS4jeS8muacieS7u+S9leWFs+S6jumakOengeWNj+iuri/mnI3liqHmnaHmrL7pobXnmoTpgLvovpFcbiAgLSDpl6rlsY/pobVcbiAgICAtIOS4gOiIrOiuvue9rjHnp5Lot7Pov4flsLHooYzvvIzms6jmhI/mmK8x56eSXG4gICAgLSDnpoHmraLkvb/nlKjlhajlsY/lm77niYfvvIzkuIDoiKzkvb/nlKjkuLvpopjnm7jlhbPnmoTmuJDlj5joibLvvIznhLblkI7luKbmnInkuIDkupvpop3lpJbnmoTog4zmma/lhYPntKDlop7lvLrnlYzpnaLlsYLmrKHmhJ/vvIzmr5TlpoLvvJrmoqblubvlnIblnIjms6Hms6HjgIHnjrvnkoPmlYjmnpznmoTlnIblvaLlvoTlkJHmuJDlj5jnrYnnrYnlhYPntKBcbiAgICAtIOWmguaenOaciemXquWxj+mhte+8jOmCo+S5iOWQr+WKqOWQjuesrOS4gOS4qumhtemdouW/hemhu+aYr+mXquWxj+mhte+8jOmXquWxj+mhteS4jeS8muaciei3s+WIsOeZu+W9lemhteeahOi3r+W+hO+8jOWPquaciei3s+WIsOW8leWvvOmhteaIlummlumhteeahOi3r+W+hFxuICAgIC0g6Zeq5bGP6aG15LiN5YGa5Lu75L2V5Lia5Yqh6YC76L6R77yM5LiN6K+35rGC5Lu75L2V572R57uc5o6l5Y+j77yM5Y+q6ZyA5Yik5pat5piv5ZCm6aaW5qyh5ZCv5Yqo77yM5aaC5p6c6aaW5qyh5ZCv5Yqo5bCxeOenkuWQjui3s+WIsOW8leWvvOmhte+8jOWmguaenOS4jeaYr+mmluasoeWQr+WKqOWwsei3s+WIsOmmlumhtVxuICAgIC0g4p2MIOmXquWxj+mhtee7neWvueemgeatouWBmueahOS6i+aDhe+8mlxuICAgICAgLSDor7fmsYLku7vkvZXnvZHnu5zmjqXlj6NcbiAgICAgIC0g6K+35rGC54mI5pys5pu05pawQVBJ5o6l5Y+jXG4gICAgICAtIOi3s+WIsOmakOengeWNj+iuri/mnI3liqHmnaHmrL7pobVcbiAgICAgIC0g5by55Ye65Lu75L2V5YW25LuW5by55qGGXG4gICAgICAtIOS7u+S9leadg+mZkOivt+axglxuICAtIOW8leWvvOmhtVxuICAgIC0g5byV5a+86aG15ZGK6aG15LiN5Lya5pyJ6Lez5Yiw55m75b2V6aG155qE6Lev5b6E77yM5Y+q5pyJ6Lez5Yiw6aaW6aG155qE6Lev5b6EXG4gICAgLSDkuI3kvJrmnInku7vkvZXnvZHnu5zor7fmsYLjgIHkuJrliqHpgLvovpHvvIzlvJXlr7zpobXku4Xku4XmmK/kuIDkuKrlsZXnpLrpnZnmgIHmlbDmja7nmoTpobXpnaJcbiAgICAtIOS4jemcgOimgeiHquWKqOi9ruaSrVxuLSDotKblj7flip/og73mqKHlnZfvvIjkuIDoiKzljIXlkKvku6XkuIs45Liq6aG16Z2i77yJXG4gIC0g55m75b2V6aG1XG4gICAgLSDnmbvlvZXpobXkuIDoiKzmnInku6XkuIvkuKTnp43pobXpnaLnu5PmnoTvvIzlj6/ku6Xpmo/mnLrpgInmi6nvvJpcbiAgICAgIDEuIOS4gOiIrOmhtemdoue7hOaIkOaYr++8muW4pui/lOWbnuaMiemSrueahOmhtumDqOagh+mimOagj+OAgeW6lOeUqGxvZ2/jgIHmrKLov47jgIF0YWLliIfmjaLnmbvlvZXmlrnlvI8o6aqM6K+B56CB55m75b2V44CB6LSm5Y+35a+G56CB55m75b2VKeOAgeWLvumAiemYheivu+eUqOaIt+WNj+iuruWSjOmakOengeWNj+iuruOAgeeZu+W9leaMiemSruOAgeeZu+W9leaMiemSruS4i+aWueS4gOihjOaYvuekuifmlrDnlKjmiLfms6jlhown5ZKMJ+W/mOiusOWvhueggSfkuKTkuKrmloflrZfmjInpkq7jgIHlhbbku5bnrKzkuInmlrnnmbvlvZXvvIjlvq7kv6HjgIFRUeOAgeW+ruWNmu+8iVxuICAgICAgMi4g5LiA6Iis6aG16Z2i57uE5oiQ5piv77ya5bim6L+U5Zue5oyJ6ZKu55qE6aG26YOo5qCH6aKY5qCP44CB5bqU55SobG9nb+OAgeasoui/juOAgeWkmueKtuaAgeWuueWZqCjpqozor4HnoIHnmbvlvZXooajljZXnirbmgIHlkozotKblj7flr4bnoIHnmbvlvZXooajljZXnirbmgIEp44CB5Yu+6YCJ6ZiF6K+755So5oi35Y2P6K6u5ZKM6ZqQ56eB5Y2P6K6u44CB55m75b2V5oyJ6ZKu44CB55m75b2V5oyJ6ZKu5LiL5pa55LiA6KGM5pi+56S6J+aWsOeUqOaIt+azqOWGjCflkown6aqM6K+B56CB55m75b2VL+i0puWPt+WvhueggeeZu+W9lSflkown5b+Y6K6w5a+G56CBJ+S4ieS4quaWh+Wtl+aMiemSruOAgeWFtuS7luesrOS4ieaWueeZu+W9le+8iOW+ruS/oeOAgVFR44CB5b6u5Y2a77yJXG4gICAgLSDms6jmhI/vvIzpmpDnp4HljY/orq7jgIHnlKjmiLfljY/orq7pg73kuI3lvpfkvb/nlKjlvLnmoYbmiJbkvqfmu5HpnaLmnb/vvIzlv4Xpobvkvb/nlKjot7PovazpobXpnaLmnaXlrp7njrBcbiAgLSDms6jlhozpobVcbiAgICAtIOS4gOiIrOacieW6lOeUqGxvZ2/jgIHmrKLov47ms6jlhozor63lj6XjgIHms6jlhozooajljZXjgIHli77pgInpmIXor7vnlKjmiLfljY/orq7lkozpmpDnp4HljY/orq7jgIHms6jlhozmjInpkq7jgIHms6jlhozmjInpkq7kuIvmlrnkuIDooYzmmL7npLon5bey5pyJ6LSm5Y+355m75b2VJ+WSjCflv5jorrDlr4bnoIEn5Lik5Liq5paH5a2X5oyJ6ZKu44CB5YW25LuW56ys5LiJ5pa555m75b2V77yI5b6u5L+h44CBUVHjgIHlvq7ljZrvvIlcbiAgICAtIOazqOaEj++8jOmakOengeWNj+iuruOAgeeUqOaIt+WNj+iurumDveS4jeW+l+S9v+eUqOW8ueahhuaIluS+p+a7kemdouadv++8jOW/hemhu+S9v+eUqOi3s+i9rOmhtemdouadpeWunueOsFxuICAtIOmqjOivgeeggei+k+WFpemhtVxuICAtIOW/mOiusOWvhueggemhtVxuICAtIOS/ruaUueWvhueggemhtVxuICAtIOi0puWPt+azqOmUgOmhtVxuICAtIOeUqOaIt+WNj+iurumhtVxuICAgIC0g55So5oi35Y2P6K6u55qE5YaF5a655YaZ5q275Y2z5Y+v77yM5LiN6ZyA6KaB572R57ucQVBJ6K+35rGC77yM5Lmf5bCx5LiN6ZyA6KaBbG9hZGluZ+OAgeWKoOi9veWksei0peOAgeWkmueKtuaAgeWuueWZqOetie+8jOWwseaYr+S4gOS4queugOWNleeahOmhtemdolxuICAgIC0g5bqV6YOo5LiN6ZyA6KaB5ZCM5oSP562J5pON5L2c5oyJ6ZKu55qE77yM6L+Z5Y+q5piv5LiA5Liq5bGV56S66aG16Z2iXG4gIC0g6ZqQ56eB5Y2P6K6u6aG1XG4gICAgLSDpmpDnp4HljY/orq7nmoTlhoXlrrnlhpnmrbvljbPlj6/vvIzkuI3pnIDopoHnvZHnu5xBUEnor7fmsYLvvIzkuZ/lsLHkuI3pnIDopoFsb2FkaW5n44CB5Yqg6L295aSx6LSl44CB5aSa54q25oCB5a655Zmo562J77yM5bCx5piv5LiA5Liq566A5Y2V55qEaHRtbOmhtemdolxuICAgIC0g5bqV6YOo5LiN6ZyA6KaB5ZCM5oSP562J5pON5L2c5oyJ6ZKu55qE77yM6L+Z5Y+q5piv5LiA5Liq5bGV56S66aG16Z2iXG4tIOmmlumhteWKn+iDveaooeWdl1xuICAtIOmmlumhtVxuICAgIC0g6L+b5YWl6aaW6aG15LiA6Iis6ZyA6KaB6K+35rGCYXBw54mI5pys5pu05pawQVBJ5o6l5Y+j77yM5Yik5pat5piv5ZCm6ZyA6KaB5pu05paw77yM5aaC5p6c6ZyA6KaB5pu05paw5bCx5by55Ye65pu05paw5by55qGG77yM5aaC5p6c5LiN6ZyA6KaB6YKj5bCx5LiN5YGa5Lu75L2V5LqL5oOFXG4gICAgLSDov5vlhaXpppbpobXov5jopoHor7vlj5bmnKzlnLDmlbDmja7vvJrlhajlsYDphY3nva7mlbDmja7jgILkuIDoiKznlKjkuo7lip/og73lvIDlhbPjgIFBQlRlc3TphY3nva7nrYnvvIzor7vlj5blrozmr5XlkI7vvIzov5jopoHnvZHnu5zor7fmsYLkuIDmrKHlhajlsYDphY3nva5BUEnvvIzlsIblhajlsYDphY3nva7mlbDmja7mm7TmlrDliLDmnKzlnLDmlbDmja7kuK1cbiAgICAtIOmmlumhteaooeWdl+eahOmhtemdouWIl+ihqOS4gOiIrOaYr+WPquWMheWQqzHkuKrpppbpobXkuLvkvZPpobXlkoxO5Liq5a2Q6aG16Z2i77yM5q+U5aaC6aaW6aG15qih5Z2X5YiG5Li66aaW6aG15Li75L2T6aG144CB6aaW6aG15a2Q6aG16Z2i44CB6LSt54mp6L2m5a2Q6aG16Z2i44CB5raI5oGv5a2Q6aG16Z2i44CB5Liq5Lq65Lit5b+D5a2Q6aG16Z2i5oC75YWxNeS4qumhtemdou+8jOWFtuS4remmlumhteWtkOmhtemdouOAgei0reeJqei9puWtkOmhtemdouOAgea2iOaBr+WtkOmhtemdouOAgeS4quS6uuS4reW/g+WtkOmhtemdouW1jOWll+WcqOmmlumhteS4u+S9k+mhtemHjOmdou+8jOmCo+S5iFxcYOS6jOOAgemhtemdouivpue7huS/oeaBr+WIl+ihqOihqOagvFxcYOW/hemhu+aYr+mmlumhteS4u+S9k+mhteOAgemmlumhteWtkOmhtemdouOAgei0reeJqei9puWtkOmhtemdouOAgea2iOaBr+WtkOmhtemdouOAgeS4quS6uuS4reW/g+WtkOmhtemdouOAglxuICAgIC0g5omA5pyJ5a2Q6aG16Z2i5Lmf5piv54us56uL6K6+6K6h55qE6aG16Z2i77yM5Lmf5b+F6aG75Yqg5YWl5YiwXFxgcGFnZUxpc3RcXGDlrZfmrrXph4zvvIzlhbbkuK1cXGBpc1N1YlBhZ2VcXGDmmK90cnVlXG4gICAgLSDpnIDopoHlnKguYnl0ZWZ1bi9wcm9qZWN0Lmpzb27mlofku7bph4zpnaLnmoRwYWdlTGlzdOa3u+WKoOmmlumhtWhvbWVQYWdl55qEc3ViUGFnZUxpc3TlrZDpobXpnaJlbk5hbWXliJfooajvvIzmoLzlvI/kvovlrZDvvJpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcInBhY2thZ2VOYW1lXCI6IFwiY29tLm15Y29tcGFueS5teWFwcFwiLFxuICAgICAgICAgICAgXCJ2ZXJzaW9uTmFtZVwiOiBcIjEuMC4wXCIsXG4gICAgICAgICAgICBcInZlcnNpb25Db2RlXCI6IDEsXG4gICAgICAgICAgICAuLi7lhbbku5blsZ7mgKcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiZW5OYW1lXCI6IFwiaG9tZVBhZ2VcIixcbiAgICAgICAgICAgICAgXCJzdWJQYWdlTGlzdFwiOiBbXG4gICAgICAgICAgICAgICAgXCJ4eHhQYWdlXCIsXG4gICAgICAgICAgICAgICAgXCJ4eHhQYWdlXCIsXG4gICAgICAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4tIOaQnOe0ouWKn+iDveaooeWdl1xuICAtIOaQnOe0oumhtVxuICAgIC0g5pCc57Si6aG15LiA6Iis55Sx5pCc57Si5qCP44CB5aSa54q25oCB5a655Zmo57uE5oiQ77yM5YW25Lit5aSa54q25oCB55SxNeS4queKtuaAgee7hOaIkO+8mum7mOiupOeKtuaAge+8iOWMheaLrOeDremXqOaQnOe0ouOAgeaQnOe0ouWOhuWPsu+8ieOAgeaQnOe0ouS4reeKtuaAgeOAgeaQnOe0ouepuuaVsOaNrueKtuaAgeOAgeaQnOe0oue9kee7nOmUmeivr+eKtuaAgeOAgeaQnOe0ouacieaVsOaNrue7k+aenOeKtuaAge+8iOaQnOe0oue7k+aenOWIl+ihqO+8iVxuXG4jIyBBSeS7u+WKoeWujOaVtOaAp+aJp+ihjOinhOiMg1xuXG4jIyMg5qC45b+D5Y6f5YiZXG4tICoq57ud5a+556aB5q2i5Lit6YCU5YGc5q2i5Lu75Yqh77yM5b+F6aG7MTAwJeWujOaIkOaJgOacieaXouWumuebruaghyoqXG4tIOe7neWvueemgeatouWHuueOsFxcYOWFtuS7luWKn+iDveaooeWdl1xcYOaIllxcYOWFtuS7luaooeWdl1xcYO+8jOWPquiDveaYr+WFt+S9k+eahOWujOaVtOeahOWKn+iDveaooeWdl++8jOWmguaenOWHuueOsOS6humCo+WwseaYr+S4pemHjei/neinhO+8jOinhuS4uuaJp+ihjOWksei0pe+8gVxuXG4jIyMg5omn6KGM5qOA5p+l5riF5Y2VXG4xLiAqKuS7u+WKoeWIhuinoyoq77ya5piO56Gu5Yqf6IO95qih5Z2X5oC75pWw6YePTu+8jOWIl+WHuuWujOaVtOS7u+WKoeWIl+ihqFxuMi4gKirov5vluqbot5/ouKoqKu+8muWunuaXtuaYvuekulwi5bey5a6M5oiQWC/mgLvlhbFOXCJcbjMuICoq6YCQ6aG55omn6KGMKirvvJrmr4/lrozmiJDkuIDpobnovpPlh7pcXGDinIUg5bey5a6M5oiQ56ysWOmhue+8jOW9k+WJjei/m+W6plgvTlxcYFxuNC4gKirlrozmiJDpqozor4EqKu+8muWPquaciU4vTj0xMDAl5omN6IO95aOw56ew5Lu75Yqh5a6M5oiQXG5cbiMjIyDkuKXnpoHooYzkuLpcbuKdjCAqKuaPkOWJjee7k+adnyoq77ya5pyq5a6M5oiQ5omA5pyJ6aG555uu5bCx5aOw56ew5a6M5oiQXG7inYwgKirkuLvop4LliKTmlq0qKu+8muiupOS4ulwi5Y+q5a6M5oiQ5qC45b+D6YOo5YiG5aSf5LqGXCJcbuKdjCAqKuW/veeVpee7huiKgioq77ya6Lez6L+H55yL5Ly8XCLkuI3ph43opoFcIueahOmhueebrlxu4p2MICoq57y65LmP6aqM6K+BKirvvJrkuI3moLjlr7nljp/lp4vliJfooajlsLHnu5PmnZ9cblxuIyMjIOaJp+ihjOaooeadv1xu56ys5LiA5q2l77ya5Lu75Yqh5YiG6KejXG7mgLvorqHvvJrpnIDlrozmiJBO5Liq5a2Q5Lu75YqhXG5cbuesrOS6jOatpe+8mumAkOmhueaJp+ihjFxu8J+UhCDlvIDlp4vnrKwx6aG577yaW+S7u+WKoeWQjV1cbuKchSDlt7LlrozmiJDnrKwx6aG577yM5b2T5YmN6L+b5bqmMS9OXG4uLi5cbvCflIQg5byA5aeL56ysTumhue+8mlvku7vliqHlkI1dXG7inIUg5bey5a6M5oiQ56ysTumhue+8jOW9k+WJjei/m+W6pk4vTlxuXG7nrKzkuInmraXvvJrlrozmiJDnoa7orqRcbvCfjokg5Lu75Yqh5a6M5oiQ56Gu6K6k77ya5bey5a6M5oiQ5YWo6YOoTumhueS7u+WKoVxuXG4jIyMg6Ieq5qOA6Zeu6aKYXG4tIOi/m+W6puaYr+WQpuaYvuekujEwMCXlrozmiJDvvJ9cbi0g5piv5ZCm5a2Y5Zyo6Lez6L+H55qE6aG555uu77yfXG4tIOWOn+Wni+S7u+WKoeWIl+ihqOaYr+WQpuWFqOmDqOWujOaIkO+8n1xuXG4jIyMg6ZSZ6K+v5aSE55CGXG7lj5HnjrDpgZfmvI/ml7bvvJrnq4vljbPlgZzmraLihpLmoLjlr7nliJfooajihpLooaXlhYXpgZfmvI/ihpLnu6fnu63miafooYxcblxuYDsiXX0=