bytefun-ai-mcp 1.14.45 → 1.14.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- export declare const understandingCodeFrameworkTemplate = "\n# **\u5FC5\u987B\u5148\u7406\u89E3\u9879\u76EE\u4EE3\u7801\u6846\u67B610\u4E2A\u77E5\u8BC6\u70B9**\n## 1. **\u7406\u89E3View\u7EC4\u4EF6\u7684\u58F0\u660E\u548C\u4F7F\u7528\u89C4\u5219**\n - \u8FD9\u4E0D\u662Fhtml\u3001react\u7B49\u5F00\u53D1\uFF0C\u8FD9\u662F\u4E00\u4E2A\u65B0\u7684\u5F00\u53D1\u6846\u67B6\uFF0C\u662F\u57FA\u4E8Esrc/lib/uilib\u6587\u4EF6\u5939\u91CC\u9762\u7684UI\u7EC4\u4EF6\u5E93\u6765\u5F00\u53D1\u7684\n - View\u7EC4\u4EF6\u7684\u57FA\u7C7B\u662FBaseView\uFF0C\u5BB9\u5668\u57FA\u7C7B\u662FBaseContainerView\uFF0C\u6240\u6709View\u7EC4\u4EF6\u90FD\u7EE7\u627F\u81EABaseView\n - \u67E5\u770B'src/lib/uilib/'\u6587\u4EF6\u5939\u4E0B\u9762\u7684\u6587\u4EF6\u540D\u5B57\uFF0C\u7406\u89E3\u603B\u5171\u6709\u591A\u5C11\u79CDUI\u7EC4\u4EF6\n - \u6240\u6709view\u7EC4\u4EF6\u7684\u58F0\u660E\uFF0C\u5FC5\u987B\u4F7F\u7528`findViewById(id: string)`\u65B9\u6CD5\u8D4B\u503C\uFF0C\u5176\u4E2D\u91CC\u9762\u7684\u53C2\u6570`id`\u5FC5\u987B\u4ECE`src/{moduleNameEN}/{pageNameEN}/{pageNameEN}.md`\u67E5\u627E\u83B7\u53D6\u5230\u6B63\u786E\u7684id\u7684\u503C\n - \u7981\u6B62\u4FEE\u6539`src/{moduleNameEN}/{pageNameEN}/{pageNameEN}.md`\u6587\u4EF6\u91CC\u9762\u7684\u4EE3\u7801\uFF0C\u6B64\u6587\u4EF6\u53EA\u8BFB\n - View\u7EC4\u4EF6\u7684\u58F0\u660E\u5FC5\u987B\u5728\u7C7B\u6587\u4EF6\u5F00\u59CB\u65F6\u5148\u58F0\u660E\uFF0C\u5E76\u4E14\u5FC5\u987B\u8981\u58F0\u660E\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF0C\u4E0D\u5F97\u58F0\u660E\u4E3ABaseView\uFF0C\u4E0D\u5F97\u5728\u4EFB\u4F55\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewById\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF0C\u6BD4\u5982\uFF1A\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ```typescript\n public class HomePage extends Page {\n private nameTextView: TextView = this.findViewById('nameTextView') as TextView\n ....\n }\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u6CA1\u6709\u58F0\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF09\uFF1A\n ```typescript\n private nameTextView = this.findViewById('nameTextView')\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u5728\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewById\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF09\uFF1A\n ```typescript\n private oneFunction() {\n const nameTextView: TextView = this.findViewById('nameTextView') as TextView\n ....\n }\n ```\n - \u6240\u6709View\u7EC4\u4EF6\u7684\u663E\u793A\u3001\u9690\u85CF\u5360\u4F4D\u3001\u9690\u85CF\u4E0D\u5360\u4F4D\u7684\u8BBE\u7F6E\u90FD\u5FC5\u987B\u4F7F\u7528View\u7684`visibility`\u5C5E\u6027\u8FDB\u884C\u8BBE\u7F6E\uFF0C\u4E0D\u5F97\u4F7F\u7528`station`\u5C5E\u6027\u3002\n - \u6240\u6709View\u7EC4\u4EF6\u7684normal\u3001readOnly\u3001focus\u3001selected\u3001disabled\u72B6\u6001\u7684\u53D8\u5316\u90FD\u5FC5\u987B\u4F7F\u7528view\u7684\u5C5E\u6027station\u6765\u76F4\u63A5\u8BBE\u7F6E\uFF0C\u6BD4\u5982\uFF1A`this.nameInputView.station = ViewStation.Focus`\uFF0C\u53EF\u9009\u503C\u6709\uFF1AViewStation.NORMAL\u3001ViewStation.READONLY\u3001ViewStation.FOCUSED\u3001ViewStation.SELECTED\u3001ViewStation.DISABLED\u3002\n - \u6240\u6709View\u7EC4\u4EF6(\u5305\u62ECBaseView\u3001BaseContainer\u4EE5\u53CA\u5B83\u4EEC\u7684\u5B50\u7C7B)\u7684\u70B9\u51FB\u4E8B\u4EF6\uFF0C\u90FD\u53EF\u4EE5\u76F4\u63A5\u5728view\u7EC4\u4EF6\u7684\u58F0\u660E\u540E\u9762\u6DFB\u52A0`setOnClickListener`\u65B9\u6CD5\u6765\u76D1\u542C\u70B9\u51FB\u4E8B\u4EF6\uFF0C\u6BD4\u5982\uFF1A`this.xxxContainer.setOnClickListener(() => { this.nameTextView.text = '\u70B9\u51FB\u4E86' + this.nameTextView.text })`\n - \u6240\u6709\u7684dialog\u5BF9\u8BDD\u6846\uFF0C\u5FC5\u987B\u8C03\u7528Dialog\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528Dialog\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxDialog.show()\u3001this.xxxDialog.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u5BF9\u8BDD\u6846\u3002\n - \u6240\u6709\u7684DropDownMenu\u4E0B\u62C9\u83DC\u5355\uFF0C\u5FC5\u987B\u8C03\u7528DropDownMenu\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528DropDownMenu\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxDropDownMenu.show()\u3001this.xxxDropDownMenu.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u4E0B\u62C9\u83DC\u5355\u3002\n - \u6240\u6709\u7684SideSlideContainer\u4FA7\u6ED1\u5BB9\u5668\uFF0C\u5FC5\u987B\u8C03\u7528SideSlideContainer\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528SideSlideContainer\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxSideSlideContainer.show()\u3001this.xxxSideSlideContainer.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u4FA7\u6ED1\u5BB9\u5668\u3002\n\n## 2. **\u7406\u89E3\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts\u4EE5\u53CAjson\u76F8\u5173\u4EE3\u7801**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/AllFunction.ts'\u6587\u4EF6\uFF0C\u7406\u89E3\u8BE5\u5DE5\u7A0B\u80FD\u4F7F\u7528\u7684\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/JsonObject.ts'\u548C'src/lib/JsonArray.ts'\u6587\u4EF6\uFF0C\u7406\u89E3\u8FD9\u4E24\u4E2A\u6587\u4EF6\u5B9A\u4E49\u7684json\u76F8\u5173\u7684\u65B9\u6CD5\n - \u8BF7\u4E25\u683C\u6309\u7167\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts\uFF0C\u4E0D\u8981\u65B0\u589E\u3001\u5220\u9664\u6216\u4FEE\u6539\u4EFB\u4F55AllFunction\u63A5\u53E3\u58F0\u660E\uFF1B\u4E5F\u4E0D\u8981\u8C03\u7528\u5176\u4ED6\u672A\u5728AllFunction\u4E2D\u51FA\u73B0\u7684\u51FD\u6570\u6216\u6A21\u5757\n - \u6240\u6709\u7684toast\u63D0\u793A\uFF0C\u5FC5\u987B\u8C03\u7528AllFunction.showToast\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5E76\u4E14\u5982\u7528\u6237\u63CF\u8FF0\u6CA1\u6709\u660E\u786E\u8BF4\u660E\u9700\u8981toast\u63D0\u793A\uFF0C\u4F60\u4E0D\u5F97\u64C5\u81EA\u8FDB\u884CToast\u63D0\u793A\u3002\n - \u6240\u6709\u7684dialog\u5BF9\u8BDD\u6846\uFF0C\u5FC5\u987B\u8C03\u7528Dialog\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528Dialog\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxDialog.show()\u3001this.xxxDialog.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u5BF9\u8BDD\u6846\u3002\n - \u6240\u6709\u7684DropDownMenu\u4E0B\u62C9\u83DC\u5355\uFF0C\u5FC5\u987B\u8C03\u7528DropDownMenu\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528DropDownMenu\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxDropDownMenu.show()\u3001this.xxxDropDownMenu.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u4E0B\u62C9\u83DC\u5355\u3002\n - \u6240\u6709\u7684SideSlideContainer\u4FA7\u6ED1\u5BB9\u5668\uFF0C\u5FC5\u987B\u8C03\u7528SideSlideContainer\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528SideSlideContainer\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxSideSlideContainer.show()\u3001this.xxxSideSlideContainer.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u4FA7\u6ED1\u5BB9\u5668\u3002\n - \u5EF6\u65F6\u6267\u884CAllFunction.setTimeout\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u6E05\u7406timeout\uFF0C\u4EE3\u7801\u4E0A\u7EDD\u5BF9\u4E0D\u80FD\u8FDB\u884CcleaTimeout\u7B49\u7C7B\u4F3C\u64CD\u4F5C\uFF0C\u56E0\u6B64setTimeout\u4E5F\u4E0D\u9700\u8981\u58F0\u660E\u53D8\u91CF\u53BB\u63A5\u6536setTimeout\u8FD4\u56DE\u7684\u5F15\u7528\u3002\n - \u6240\u6709localStorage\u672C\u5730\u6570\u636E\u5B58\u50A8\u90FD\u5FC5\u987B\u4F7F\u7528AllFunction\u7684saveDatabaseBoolean\u3001saveDatabaseNumber\u3001saveDatabaseString\u3001saveDatabaseArray\u3001saveDatabaseObject\u65B9\u6CD5\u6765\u5B58\u50A8\u6570\u636E\uFF0C\u4F7F\u7528getDatabaseBoolean\u3001getDatabaseNumber\u3001getDatabaseString\u3001getDatabaseArray\u3001getDatabaseObject\u65B9\u6CD5\u6765\u83B7\u53D6\u6570\u636E\u3002\n\n## 3. **\u7406\u89E3Ref\u3001watch**\n - Ref\u7684\u6570\u636E\u7C7B\u578B\u53EA\u80FD\u662F\u4EE5\u4E0B5\u4E2D\u7C7B\u578B\uFF1A\u6570\u5B57\u4F7F\u7528Ref<number>\uFF0C\u5B57\u7B26\u4E32\u4F7F\u7528Ref<string>\uFF0C\u5E03\u5C14\u91CF\u4F7F\u7528Ref<boolean>\uFF0C\u5BF9\u8C61\u4F7F\u7528Ref<any>\uFF0C\u6570\u7EC4\u4F7F\u7528Ref<Array<any>>\u6216Ref<Array<any> | null>\u6216Ref<any[]>\u6216Ref<any[] | null>\u3002\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/Ref.ts'\u6587\u4EF6\uFF0C\u7406\u89E3Ref\u548Cwatch\u7684\u5B9A\u4E49\u7528\u6CD5\n - watch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u7B2C\u4E00\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684Ref\u6570\u7EC4\uFF0C\u7B2C\u4E8C\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684\u56DE\u8C03\u51FD\u6570\uFF0C\u56DE\u8C03\u51FD\u6570\u4E2D\u53EF\u4EE5\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\u3002\n - Ref\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0Cwatch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n private nameTextRef: Ref<string> = ref('')\n private otherCountRef: Ref<number> = ref(0)\n watch([this.nameTextRef, this.otherCountRef], () => {\n // \u53EF\u4EE5\u5148\u76F8\u5173\u7684UI\u66F4\u65B0\u6216\u4E1A\u52A1\u903B\u8F91\n if (this.otherCountRef.value > 5) {\n this.nameTextView.text = this.nameTextRef.value + '5'\n } else {\n this.nameTextView.text = this.nameTextRef.value + '10'\n }\n })\n ```\n - `src/lib/uilib/Ref.ts`\u91CC\u9762\u7684`watch`\u51FD\u6570\uFF0C\u7B2C\u4E00\u4E2A\u5165\u53C2`refs: Ref<T>[]`\u7EDD\u5BF9\u7981\u6B62\u5148\u58F0\u660E\u5C40ref\u6570\u7EC4\u90E8\u53D8\u91CF\u518D\u4F20\u5165\uFF0C\u6B63\u786E\u7684\u5199\u6CD5\u5E94\u8BE5\u662F\u76F4\u63A5\u5199\u6570\u7EC4\uFF1A`[ref1, ref2]`\u5C31\u884C\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF1A\n ``` typescript\n const refArray = [ref1, ref2]\n watch(refArray, (newValues: T[]) => {\n // \u76D1\u542Cref1\u548Cref2\u7684\u53D8\u5316\n })\n ```\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ``` typescript\n watch([ref1, ref2], (newValues: T[]) => {\n // \u76D1\u542Cref1\u548Cref2\u7684\u53D8\u5316\n })\n ```\n\n## 4. **\u7406\u89E3setDataList\u65B9\u6CD5\u7684\u9759\u6001\u6570\u636E\u4E0E\u52A8\u6001\u6570\u636E\u573A\u666F**\n - \u5BF9\u4E8E\u52A8\u6001\u6570\u636E\u5BB9\u5668ViewPager\u3001ListView\u7684setDataList\u65B9\u6CD5\uFF0C\u5982\u679C\u6570\u636E\u662F\u52A8\u6001\u7684\uFF0C\u6BD4\u5982\uFF1A\u4ECE\u540E\u7AEF\u63A5\u53E3\u83B7\u53D6\u7684\uFF0C\u624D\u80FD\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\u9759\u6001\u6570\u636E\u5DF2\u7ECF\u5728UI\u9875\u9762\u4E0A\u5199\u597D\u4E86\uFF0C\u4F60\u4E0D\u5F97\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\n - \u5224\u65AD\u6807\u51C6\uFF1A\u5982\u679CUI\u9875\u9762\u4E2D\u5DF2\u7ECF\u6709\u5B8C\u6574\u7684\u8F6E\u64AD\u9879\u76EE/\u5217\u8868\u9879\u76EE\uFF0C\u5C31\u662F\u9759\u6001\u6570\u636E\uFF0C\u5982\u679C\u662F\u7F51\u7EDCAPI\u8FD4\u56DE\u7684\u6570\u636E\u5217\u8868\u5C31\u662F\u52A8\u6001\u6570\u636E\u3002\n - \u2705 \u9759\u6001\u6570\u636E\u5BB9\u5668\uFF08UI\u9875\u9762\u4E2D\u5DF2\u5199\u597D\u5185\u5BB9\uFF09\uFF1A\u4E0D\u4F7F\u7528setDataList()\n - \u2705 \u52A8\u6001\u6570\u636E\u5BB9\u5668\uFF08\u9700\u8981\u4ECEAPI\u83B7\u53D6\uFF09\uFF1A\u624D\u4F7F\u7528setDataList()\n\n## 5. **View\u7EC4\u4EF6\uFF0C\u7406\u89E3\u6BCF\u4E2A\u7EC4\u4EF6\u53EF\u80FD\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u5982\u679C\u7EC4\u4EF6\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u90A3\u4E48\u4F60\u4E0D\u5F97\u518D\u81EA\u5DF1\u521B\u5EFAref\u53D8\u91CF\u6216\u8005\u4F7F\u7528onSelectChange\u7B49\u56DE\u8C03\u89E6\u53D1UI\u66F4\u65B0**\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\u3002\n public initView() {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n }\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n public initView() {\n watch([this.viewPager.currentSelectIndexRef], () => {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n })\n ```\n - tab\u7EC4\u4EF6\u548C\u8F6E\u64AD\u7EC4\u4EF6\u7684\u9009\u62E9\u53D8\u5316\u76D1\u542C\uFF0C\u5FC5\u987B\u4F7F\u7528`ViewPager`\u6216`TabContainer`\u7684`onSelectChange(func: (item: any, position: number) => void)`\u51FD\u6570\u6765\u76D1\u542C\u9009\u62E9\u53D8\u5316\n\n## 6. **\u7406\u89E3\u9875\u9762\u8DF3\u8F6C**\n - \u7F16\u5199\u8DF3\u8F6C\u9875\u9762\u7684\u4EE3\u7801\u65F6\uFF0C\u5FC5\u987B\u8981\u5148\u67E5\u770B\u76EE\u6807\u9875\u9762\u7684ts\u6587\u4EF6\uFF0C\u786E\u8BA4\u76EE\u6807\u9875\u9762\u662F\u5426\u5B58\u5728\uFF0C\u5982\u679C\u5B58\u5728\u90A3\u4E48\u5FC5\u987B\u8981\u4F7F\u7528`AllFunction.startPage(new xxxPage(xxx)`\u6765\u8DF3\u8F6C\u5230\u76EE\u6807\u9875\u9762xxxPage\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u6577\u884D\u5730\u4F7F\u7528`AllFunction.showToast`\u6765\u6A21\u62DF\u63D0\u793A\u8DF3\u8F6C\u9875\u9762\uFF0C\u9664\u975E\u76EE\u6807\u9875\u9762\u4E0D\u5B58\u5728\u3002\n - \u9875\u9762\u8DF3\u8F6C\u5FC5\u987B\u4F7F\u7528AllFunction.startPage\u5B9E\u73B0\uFF0CstartPage\u4F20\u5165Page\u7684\u5B50\u7C7B\u5BF9\u8C61\uFF0C\u5982\uFF1AAllFunction.startPage(new ProductPage(this.productID))\u3002\n - \u274C \u9875\u9762\u8DF3\u8F6C\u4E0D\u9700\u8003\u8651\u6A21\u5757\u5316\u3001\u5FAA\u73AF\u4F9D\u8D56\u3001\u6E10\u8FDB\u5F0F\u5F00\u53D1\uFF0C\u7EDD\u5BF9\u7981\u6B62\u5C4F\u853D\u9875\u9762\u8DF3\u8F6C\u7684\u4EE3\u7801\uFF0C\u6240\u6709\u9875\u9762\u90FD\u5DF2\u7ECF\u5B58\u5728\uFF0C\u4E0D\u4F1A\u51FA\u73B0\u7F16\u8BD1\u51FA\u9519\u7684\uFF0C\u5FC5\u987B\u660E\u786E\u5199\u4E0A\u9875\u9762\u8DF3\u8F6C\u7684\u4EE3\u7801\u548C\u76EE\u6807\u9875\u9762\u6240\u9700\u7684\u8DF3\u8F6C\u53C2\u6570\u3002\n - \u5728Application.ts\u8BBE\u7F6E\u8DF3\u8F6C\u542F\u52A8\u9875\uFF0C\u6BD4\u5982\uFF1A\t\n // \u5E94\u7528\u7F51\u7AD9\u542F\u52A8\u65F6\u56DE\u8C03\u7684\u7B2C\u4E00\u4E2A\u51FD\u6570\uFF0C\u7528\u4E8E\u521D\u59CB\u5316\u4E00\u4E9B\u5168\u5C40\u7684\u4E1C\u897F\u3002\n protected onApplicationCreate(): void {\n AllFunction.startPage(new SplashPage())\n }\n - \u2705 \u5F15\u5165\u5176\u4ED6\u7C7B\u53EA\u5141\u8BB8\u4E00\u79CD\u5199\u6CD5\uFF1A\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u52A8\u6001import\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n // \u4F7F\u7528\u52A8\u6001\u5BFC\u5165\u907F\u514D\u5FAA\u73AF\u4F9D\u8D56\n import('../guidePage/guidePage').then(({ default: GuidePage }) => {\n AllFunction.startPage(new GuidePage())\n })\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528require\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n require('../guidePage/guidePage').default\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\u662F\uFF1AAllFunction.startPage(new GuidePage())\u3002\u7136\u540E\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u5982\u679C\u9875\u9762\u8DF3\u8F6C\u9700\u8981\u4F20\u9012\u53C2\u6570\uFF0C\u90A3\u4E48\u9700\u8981\u4F7F\u7528Page\u7684\u5B50\u7C7B\u6784\u9020\u51FD\u6570\u6765\u4F20\u9012\u53C2\u6570\uFF0C\u6BD4\u5982\uFF1AAllFunction.startPage(new GuidePage(this.productID))\u3002\n - \u5728\u5B9E\u73B0\u9875\u9762\u8DF3\u8F6C\u4EE3\u7801\u7684\u65F6\u5019\uFF0C\u5FC5\u987B\u4E25\u683C\u6309\u7167\u4EE5\u4E0B\u4E09\u6B65\u6765\u5B9E\u73B0\uFF1A\n - **\u7B2C\u4E00\u6B65\uFF1A\u5148\u5206\u6790\u8DF3\u8F6C\u7684\u76EE\u6807\u9875\u9762\u9700\u8981\u4F20\u9012\u54EA\u4E9B\u53C2\u6570**\n - **\u7B2C\u4E8C\u6B65\uFF1A\u4FEE\u6539\u76EE\u6807\u9875\u9762\u6784\u9020\u51FD\u6570**\uFF1A\n ```typescript\n export default class ReadingPage extends Page {\n private bookId: number\n private chapterTitle: string\n \n constructor(bookId: number, chapterTitle: string) {\n super()\n this.bookId = bookId\n this.chapterTitle = chapterTitle\n }\n }\n ```\n - **\u7B2C\u4E09\u6B65\uFF1A\u4FEE\u6539\u8DF3\u8F6C\u4EE3\u7801**\n ```typescript\n const bookData = this.readingHistoryDataRef.value[0]\n AllFunction.startPage(new ReadingPage(bookData.id, bookData.chapterTitle))\n ```\n\n## 7. **\u7406\u89E3\u57FA\u7840\u5F00\u53D1\u89C4\u5219**\n - lib\u6587\u4EF6\u5939\u91CC\u9762\u7684\u4EE3\u7801\u6587\u4EF6\u90FD\u662F\u5185\u7F6E\u6846\u67B6\u4EE3\u7801\uFF0C\u7EDD\u5BF9\u7981\u6B62\u5BF9lib\u6587\u4EF6\u5939\u7684\u4EE3\u7801\u8FDB\u884C\u589E\u5220\u6539\u64CD\u4F5C\n - \u4EFB\u4F55\u9875\u9762\uFF08\u7279\u522B\u662F\u95EA\u5C4F\u9875\uFF09\u7684\u4E1A\u52A1\u903B\u8F91\u7EDD\u5BF9\u4E0D\u80FD\u653E\u5230Application.ts\u8FDB\u884C\u5904\u7406\uFF0CApplication.ts\u53EA\u8FDB\u884C\u5168\u5C40\u7F51\u7EDC\u62E6\u622A\u5904\u7406\u3001\u5168\u5C40\u9759\u6001\u53D8\u91CF\u3001\u5168\u5C40\u9759\u6001\u65B9\u6CD5\u7684\u5B9A\u4E49\u548C\u5B9E\u73B0\n - \u5982\u679C\u662F\u591A\u4E2A\u9875\u9762\u5171\u7528\u7684\u6570\u636E\u53D8\u91CF\uFF0C\u53EF\u4EE5\u8003\u8651\u58F0\u660E\u4E3A\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u5E76\u5728Application.ts\u4E2D\u8FDB\u884C\u58F0\u660E\u3002\n - \u5168\u5C40\u9759\u6001\u53D8\u91CF\u5728\u5173\u95EDAPP\u6216\u8005\u7F51\u9875\u540E\u4F1A\u6E05\u7406\u6389\u7684\uFF0C\u6240\u4EE5\u4F60\u8981\u601D\u8003\u6E05\u695A\u54EA\u4E9B\u6570\u636E\u53D8\u91CF\u9700\u8981\u6301\u4E45\u5316\u50A8\u5B58\uFF0C\u54EA\u4E9B\u662F\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u6301\u4E45\u5316\u63A5\u53E3\uFF1AsaveDatabaseXxx\u548CgetDatabaseDataXxx\uFF0C\u6BD4\u5982\u662F\u5426\u5DF2\u7ECF\u5F39\u51FA\u8FC7\u5E7F\u544A\u5F39\u6846\uFF0C\u8FD9\u4E2A\u5E94\u8BE5\u6301\u4E45\u5316\u50A8\u5B58\u3002\n - \u58F0\u660E\u5168\u5C40\u53D8\u91CF\u3001\u5C40\u90E8\u53D8\u91CF\u5FC5\u987B\u8981\u58F0\u660E\u6570\u636E\u7C7B\u578B\uFF0C\u5E76\u4E14\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528any\uFF0C\u8BF7\u4F7F\u7528\u5177\u4F53\u7C7B\u578B\u6765\u58F0\u660E\n - \u8F6E\u64ADViewPager\u5BF9\u5E94\u7684\u7D22\u5F15\u6307\u793A\u5668\u5BB9\u5668\uFF0C\u8FD9\u4E2A\u7D22\u5F15\u6307\u793A\u5668\u4E0D\u9700\u8981\u989D\u5916\u4EE3\u7801\u5B9E\u73B0\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u672C\u8EABViewPager\u4E0EIndicatorContainer\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u4E86\u5207\u6362\u7684UI\u66F4\u65B0\u903B\u8F91\u7684\u4E86\uFF0C\u53EA\u9700\u8981viewPager.bindIndicator(indicatorContainer)\u5373\u53EF\u3002\n - Tab\u9009\u9879\u5361`TabNavigateBar`\u548C`TabNavigateBarItem`\u7684\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3ATab\u9009\u9879\u5361\u5185\u90E8\u5DF2\u7ECF\u5C01\u88C5\u597D\u4E86\u6ED1\u52A8\u548C\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n - \u5E95\u90E8\u5BFC\u822A\u680F`bottomTabNavigateBar`\u548C`bottomTabNavigateBarItem`\u7684\u6ED1\u52A8\u548C\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3A\u5E95\u90E8\u5BFC\u822A\u680F\u5185\u90E8\u5DF2\u7ECF\u5C01\u88C5\u597D\u4E86\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\uFF0C\u6BD4\u5982\u9996\u9875\u4E3B\u4F53\u9875\u7684\u5E95\u90E8\u5BFC\u822A\u680F\uFF0C\u4E0D\u9700\u8981\u5B9E\u73B0\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u56E0\u4E3A\u5E95\u90E8\u5BFC\u822A\u680F\u7684\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\u5DF2\u7ECF\u81EA\u52A8\u5B9E\u73B0\u4E86\u3002\n - \u6BCF\u4E00\u4E2A\u9875\u9762(\u5982loginPage)\u5FC5\u987B\u5728page\u6587\u4EF6\u5939\u4E0B\u9762\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6587\u4EF6\u5939(\u5982login)\uFF0C\u7136\u540E\u9875\u9762\u7684ts\u6587\u4EF6(\u5982loginPage.ts)\u521B\u5EFA\u5728\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u9762\u3002\n\n## 8. **\u7406\u89E3\u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u8BFB\u53D6'src/backendApi/backendApiInfo.md'\u540E\u7AEFAPI\u4F7F\u7528\u8BF4\u660E\u6587\u4EF6\uFF0C\u5FC5\u987B\u7F13\u5B58\u8BB0\u4F4F\u6240\u6709\u53EF\u7528\u7684\u540E\u7AEFAPI\u63A5\u53E3\u5217\u8868\u3002\n - \u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528\uFF0C\u5FC5\u987B\u4F7F\u7528src/backendApi\u6587\u4EF6\u5939\u91CC\u9762\u7684\u5404\u79CDAPI\u7C7B\u4E2D\u5B9A\u4E49\u7684\u65B9\u6CD5\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528\u672A\u5728backendApi\u6587\u4EF6\u5939\u4E2D\u5B9A\u4E49\u7684\u540E\u7AEFAPI\uFF0C\u6BD4\u5982\uFF1AbackendApi/account/getUserInfo.ts\uFF0C\u8FD9\u4E2A\u5C31\u662F\u8D26\u53F7\u6A21\u5757\u4E2D\u7684\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u7684API\u7C7B\uFF0C\u8FD4\u56DE\u7684res\u5FC5\u987B\u58F0\u660E\u5177\u4F53\u7C7B\u578B\uFF0C\u6BD4\u5982res: getUserInfoResponse\u3002\n - request\u63A5\u53E3\u53EA\u9700\u5B9A\u4E49\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u5B9E\u73B0\uFF0C\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u3002\n - API\u7C7B\u4EE3\u7801\u793A\u4F8B\uFF1A\n ```typescript\n import { NetFailData } from '../../lib/NetFailData'\n import BaseApi from '../BaseApi'\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8BF7\u6C42\u6570\u636E\n export interface postClientBizAuthLoginRequest {\n username?: string\n password?: string\n key?: string\n captcha?: string\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\n export interface postClientBizAuthLoginResponse {\n code: number\n msg: string\n data: {\n access_token: string\n }\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\n export default class postClientBizAuthLogin extends BaseApi {\n\n public static request_ArtuX1d8a6A(\n request: postClientBizAuthLoginRequest,\n success: (res: postClientBizAuthLoginResponse) => void,\n fail: (error: NetFailData) => void\n ): void { }\n\n }\n ```\n - API\u7C7B\u7684\u4F7F\u7528\u65B9\u5F0F\uFF1A\u5148import API\u7C7B\uFF0C\u7136\u540E\u8C03\u7528API\u7C7B\u7684request\u65B9\u6CD5\uFF0C\u6BD4\u5982\uFF1A\n import { NetFailData } from \"../../lib/NetFailData\"\n import { postClientBizAuthLogin } from '../../backendApi/account/postClientBizAuthLogin'\n ...\n const request: postClientBizAuthLoginRequest = {\n username: 'admin',\n password: '123456',\n key: '123456',\n captcha: '123456'\n }\n postClientBizAuthLogin.request_ArtuX1d8a6A(request, (response: postClientBizAuthLogoutResponse) => {\n // \u8BF7\u6C42\u6210\u529F\u540E\u7684\u5904\u7406\n }, (error: NetFailData) => {\n // \u8BF7\u6C42\u5931\u8D25\u540E\u7684\u5904\u7406\n })\n ...\n\n## 9. **\u7406\u89E3\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\u4E0EUI\u6570\u636E\u7ED1\u5B9A**\n - \u5FC5\u987B\u67E5\u770BxxxPage.md\u6587\u4EF6\u91CC\u9762\u7684\u8BE5\u8282\u70B9\u662F\u5426\u6709\u58F0\u660EfromApiOrCacheData(true)\u7684\u60C5\u51B5\uFF0C\u5982\u679C\u6709\u58F0\u660E\u8868\u793A\u8BE5\u8282\u70B9\u9700\u8981\u4ECE\u540E\u7AEFapi\u63A5\u53E3\u83B7\u53D6\u6570\u636E\uFF0C\u90A3\u4E48\u5FC5\u987B\u5C01\u88C5\u4E00\u4E2A\u540D\u5B57\u53EB\u505A`bindDataFromNet`\u7684\u65B9\u6CD5\u6765\u5904\u7406\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\u4E0EUI\u6570\u636E\u7ED1\u5B9A\u7684\u903B\u8F91\u3002\n - \u5728\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\uFF0C\u5FC5\u987B\u4E25\u683C\u53C2\u8003`api\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\u4E0EUI\u6570\u636E\u7ED1\u5B9A\u4F8B\u5B50`\uFF0C\u9700\u8981\u6839\u636Evtype\u6765\u505A\u6570\u636E\u7ED1\u5B9A\n - vtype=\"verticalListView\"\u3001vtype=\"horizontalListView\"\u3001vtype=\"viewPager\"\u3001vtype=\"inlineBlockAndWrap\"\u7C7B\u578B\u7684\u8282\u70B9\u7EC4\u4EF6\uFF0C\u9700\u8981\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u7ED1\u5B9A\u6570\u636E\uFF0C\u6BD4\u5982\uFF1A\n this.xxxVerticalListView.setDataList(xxxResponse.data.list)\u3001this.xxxHorizontalListView.setDataList(xxxResponse.xxxList)\u3001this.xxxViewPager.setDataList(xxxResponse.xxxList)\n - `setDataList`\u7684\u5165\u53C2\u5FC5\u987B\u662F\u76F4\u63A5\u5199\u540E\u7AEFapi\u8FD4\u56DE\u7684\u6570\u636E\u8DEF\u5F84\uFF0C\u6BD4\u5982\uFF1AxxxResponse.data.xxxList\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528\u5168\u5C40\u53D8\u91CF\u548C\u5C40\u90E8\u53D8\u91CF\u8FDB\u884C\u6570\u636E\u7ED1\u5B9A\uFF0C\u4E0D\u80FD\u5199\u5176\u4ED6\u903B\u8F91\u4EE3\u7801\uFF0C\u6BD4\u5982\uFF1A\u4E0D\u80FD\u5199if\u3001for\u3001while\u7B49\u5FAA\u73AF\u8BED\u53E5\uFF0C\u4E0D\u80FD\u5199\u51FD\u6570\u8C03\u7528\u7B49\u3002\n - vtype=\"listItemCard\"\u3001vtype=\"oneViewPagerContent\"\u7C7B\u578B\u7684\u8282\u70B9\u7EC4\u4EF6\uFF0C\u9700\u8981\u6DF1\u5EA6\u904D\u5386\u5B83\u7684\u7B2C1\u4E2Aitem\u7684\u5B69\u5B50\uFF0C\u7136\u540E\u7ED3\u5408\u540E\u7AEFapi\u8FD4\u56DE\u7684xxxResponse\u7684\u6570\u636E\u7ED3\u6784\u7ED9\u7B2C1\u4E2Aitem\u8BBE\u7F6E\u6570\u636E\uFF0C\u6CE8\u610F\u53EA\u9700\u7ED9\u7B2C1\u4E2Aitem\u8282\u70B9\u8BBE\u7F6E\u6570\u636E\uFF0C\u800C\u4E0D\u662F\u6240\u6709item\u8282\u70B9\u90FD\u8BBE\u7F6E\u6570\u636E\uFF0C\u5E76\u4E14\u5FC5\u987B\u662F\u76F4\u63A5\u5199\u540E\u7AEFapi\u8FD4\u56DE\u7684\u6570\u636E\u8DEF\u5F84\u7684\u7B2C\u4E00\u4E2AitemData\u7684\u6570\u636E\u8DEF\u5F84\uFF0C\u6BD4\u5982\uFF1Aconst itemData = dataList[0]; this.recommendBookTitle1.text = itemData.xxx.titleText\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528\u5168\u5C40\u53D8\u91CF\u548C\u5C40\u90E8\u53D8\u91CF\u8FDB\u884C\u6570\u636E\u7ED1\u5B9A\uFF0C\u4E0D\u80FD\u5199\u5176\u4ED6\u903B\u8F91\u4EE3\u7801\uFF0C\u6BD4\u5982\uFF1A\u4E0D\u80FD\u5199if\u3001for\u3001while\u7B49\u5FAA\u73AF\u8BED\u53E5\uFF0C\u5982\u679C\u9700\u8981\u903B\u8F91\u5904\u7406\u540E\u624D\u80FD\u5F97\u51FAthis.recommendBookTitle1.text\u7684\u503C\uFF0C\u90A3\u5C31\u5FC5\u987B\u8981\u5C01\u88C5\u4E00\u4E2A`getxxx(itemData: any): string`\u65B9\u6CD5\u6765\u83B7\u53D6\uFF0C\u7136\u540E:this.recommendBookTitle1.text = this.getxxx(itemData)\n - api\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\u4E0EUI\u6570\u636E\u7ED1\u5B9A\u4F8B\u5B50\uFF1A\n ```typescript\n // \u540E\u7AEFxxxApi\u8FD4\u56DE\u7684xxxResponse\u6570\u636E\u7ED3\u6784\n export interface getRecommendBookListResponse {\n code: number\n msg: string\n data: {\n list: [\n {\n id: number // \u4E66\u7C4DID\n title: string // \u4E66\u7C4D\u6807\u9898\n author: string // \u4F5C\u8005\u540D\u79F0\n coverUrl: string // \u5C01\u9762\u56FE\u7247URL\n description: string // \u4E66\u7C4D\u7B80\u4ECB\n categoryName: string // \u5206\u7C7B\u540D\u79F0\n }\n ] // \u4E66\u7C4D\u5217\u8868\n total: number // \u603B\u6570\u91CF\n page: number // \u5F53\u524D\u9875\u7801\n size: number // \u6BCF\u9875\u6570\u91CF\n }\n }\n ...\n private bindDataFromNet(getRecommendBookListData: getRecommendBookListResponse) {\n // \u8BBE\u7F6E\u4E66\u7C4D\u5217\u8868\u6570\u636E\n this.recommendBookList.setDataList(getRecommendBookListData.data.listData)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n const listItemData = getRecommendBookListData.data.listData[0]\n this.recommendBookCover1.src = listItemData.coverUrl\n this.recommendBookTitle1.text = listItemData.title\n this.recommendBookAuthor1.text = listItemData.author\n ...\n // \u8BBE\u7F6E\u8F6E\u64AD\u6570\u636E\n this.recommendViewPager.setDataList(getRecommendBookListData.data.viewPagerData)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n const viePagerItemData = getRecommendBookListData.data.viewPagerData[0]\n this.recommendImage1.src = viePagerItemData.coverUrl\n this.carouselTitle1.text = this.getCarouselTitleData(viePagerItemData) // \u7531\u4E8E\u6709\u590D\u6742\u7684\u903B\u8F91\u5904\u7406\uFF0C\u6240\u4EE5\u5FC5\u987B\u8981\u5C01\u88C5\u4E00\u4E2A\u65B9\u6CD5\u6765\u83B7\u53D6\n }\n private getCarouselTitleData(itemData: any) {\n let title = ''\n if (itemData.title) {\n title = itemData.title\n } else if (itemData.description) {\n title = itemData.description\n } else {\n title = itemData.categoryName\n }\n return title\n }\n ...\n ```\n - \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\u65F6\uFF0C\u5982\u679C\u8868\u8FBE\u5F0F\u53F3\u4FA7\u6D89\u53CA\u903B\u8F91\u8FD0\u7B97\uFF0C\u5FC5\u987B\u5C01\u88C5\u6210\u4E00\u4E2A\u7C7B\u6210\u5458\u65B9\u6CD5\uFF0C\u5982\uFF1A\n ```typescript\n // \u6D89\u53CA\u903B\u8F91\u8FD0\u7B97\u65F6\u6539\u4E3A\u8C03\u7528\u4E00\u4E2A\u7C7B\u6210\u5458\u65B9\u6CD5\n this.recommendImage1.src = this.xxxMethod(getRecommendBookListResponse)\n // \u5982\u679C\u8868\u8FBE\u5F0F\u53F3\u4FA7\u6D89\u53CA\u903B\u8F91\u8FD0\u7B97\uFF0C\u5C01\u88C5\u6210\u4E00\u4E2A\u7C7B\u6210\u5458\u65B9\u6CD5\n private xxxMethod(res: getRecommendBookListResponse): string {\n let tmp = getRecommendBookListResponse.data.list[0].coverUrl\n if (tmp && tmp.length > 5) {\n return tmp + '\u957F\u540D\u5B57'\n }\n return tmp\n }\n ```\n \n\n## 10. \u4E00\u4E9B\u9AD8\u7EA7View\u7EC4\u4EF6\u5185\u90E8\u5DF2\u5C01\u88C5\u597D\u903B\u8F91\uFF0C\u56E0\u6B64\u4E00\u4E9BView\u7EC4\u4EF6\u4E0D\u9700\u8981\u505A\u4EE5\u4E0B\u4E8B\u60C5\n- \u8F6E\u64ADViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3AViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\u5DF2\u7ECF\u81EA\u52A8\u5B9E\u73B0\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n- Tab\u9009\u9879\u5361`TabNavigateBar`\u548C`TabNavigateBarItem`\u7684\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3ATab\u9009\u9879\u5361\u5185\u90E8\u5DF2\u7ECF\u5C01\u88C5\u597D\u4E86\u6ED1\u52A8\u548C\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n- \u5E95\u90E8\u5BFC\u822A\u680F`bottomTabNavigateBar`\u548C`bottomTabNavigateBarItem`\u7684\u6ED1\u52A8\u548C\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3A\u5E95\u90E8\u5BFC\u822A\u680F\u5185\u90E8\u5DF2\u7ECF\u5C01\u88C5\u597D\u4E86\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n- \u5B50\u9875\u9762\u5BB9\u5668`SubPageContainer`\u4E0D\u9700\u8981\u7F16\u5199\u4EFB\u4F55\u8BBE\u7F6E\u9875\u9762\u6216\u5207\u6362\u9875\u9762\u7684\u903B\u8F91\u3002\n- \u7981\u6B62\u5BF9ImageView\u8FDB\u884Ccolor\u5C5E\u6027\u7684\u8BBE\u7F6E\u3002\n- \u591A\u72B6\u6001\u5BB9\u5668`MultiStateContainer`\uFF0C\u7981\u6B62\u5BF9\u5176\u5185\u90E8\u7684\u5B50View\u7EC4\u4EF6\u8FDB\u884C\u76F4\u63A5\u8BBE\u7F6E\uFF0C\u800C\u5FC5\u987B\u901A\u8FC7`currentStationRef`\u6765\u5207\u6362\u72B6\u6001\uFF0C\u4FEE\u6539`currentStationRef`\u5207\u6362\u72B6\u6001\u540E\u5C31\u4F1A\u81EA\u52A8\u663E\u793A\u8BE5\u72B6\u6001\u4E0B\u7684UI\u7EC4\u4EF6\uFF0C\u5E76\u4E14\u9690\u85CF\u5176\u4ED6\u72B6\u6001\u4E0B\u7684UI\u7EC4\u4EF6\u3002\n\n";
1
+ export declare const understandingCodeFrameworkTemplate = "\n# **\u5FC5\u987B\u5148\u7406\u89E3\u9879\u76EE\u4EE3\u7801\u6846\u67B610\u4E2A\u77E5\u8BC6\u70B9**\n## 1. **\u7406\u89E3View\u7EC4\u4EF6\u7684\u58F0\u660E\u548C\u4F7F\u7528\u89C4\u5219**\n - \u8FD9\u4E0D\u662Fhtml\u3001react\u7B49\u5F00\u53D1\uFF0C\u8FD9\u662F\u4E00\u4E2A\u65B0\u7684\u5F00\u53D1\u6846\u67B6\uFF0C\u662F\u57FA\u4E8Esrc/lib/uilib\u6587\u4EF6\u5939\u91CC\u9762\u7684UI\u7EC4\u4EF6\u5E93\u6765\u5F00\u53D1\u7684\n - View\u7EC4\u4EF6\u7684\u57FA\u7C7B\u662FBaseView\uFF0C\u5BB9\u5668\u57FA\u7C7B\u662FBaseContainerView\uFF0C\u6240\u6709View\u7EC4\u4EF6\u90FD\u7EE7\u627F\u81EABaseView\n - \u67E5\u770B'src/lib/uilib/'\u6587\u4EF6\u5939\u4E0B\u9762\u7684\u6587\u4EF6\u540D\u5B57\uFF0C\u7406\u89E3\u603B\u5171\u6709\u591A\u5C11\u79CDUI\u7EC4\u4EF6\n - \u6240\u6709view\u7EC4\u4EF6\u7684\u58F0\u660E\uFF0C\u5FC5\u987B\u4F7F\u7528`findViewById(id: string)`\u65B9\u6CD5\u8D4B\u503C\uFF0C\u5176\u4E2D\u91CC\u9762\u7684\u53C2\u6570`id`\u5FC5\u987B\u4ECE`src/{moduleNameEN}/{pageNameEN}/{pageNameEN}.md`\u67E5\u627E\u83B7\u53D6\u5230\u6B63\u786E\u7684id\u7684\u503C\n - \u7981\u6B62\u4FEE\u6539`src/{moduleNameEN}/{pageNameEN}/{pageNameEN}.md`\u6587\u4EF6\u91CC\u9762\u7684\u4EE3\u7801\uFF0C\u6B64\u6587\u4EF6\u53EA\u8BFB\n - View\u7EC4\u4EF6\u7684\u58F0\u660E\u5FC5\u987B\u5728\u7C7B\u6587\u4EF6\u5F00\u59CB\u65F6\u5148\u58F0\u660E\uFF0C\u5E76\u4E14\u5FC5\u987B\u8981\u58F0\u660E\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF0C\u4E0D\u5F97\u58F0\u660E\u4E3ABaseView\uFF0C\u4E0D\u5F97\u5728\u4EFB\u4F55\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewById\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF0C\u6BD4\u5982\uFF1A\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ```typescript\n public class HomePage extends Page {\n private nameTextView: TextView = this.findViewById('nameTextView') as TextView\n ....\n }\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u6CA1\u6709\u58F0\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF09\uFF1A\n ```typescript\n private nameTextView = this.findViewById('nameTextView')\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u5728\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewById\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF09\uFF1A\n ```typescript\n private oneFunction() {\n const nameTextView: TextView = this.findViewById('nameTextView') as TextView\n ....\n }\n ```\n - \u6240\u6709View\u7EC4\u4EF6\u7684\u663E\u793A\u3001\u9690\u85CF\u5360\u4F4D\u3001\u9690\u85CF\u4E0D\u5360\u4F4D\u7684\u8BBE\u7F6E\u90FD\u5FC5\u987B\u4F7F\u7528View\u7684`visibility`\u5C5E\u6027\u8FDB\u884C\u8BBE\u7F6E\uFF0C\u4E0D\u5F97\u4F7F\u7528`station`\u5C5E\u6027\u3002\n - \u6240\u6709View\u7EC4\u4EF6\u7684normal\u3001readOnly\u3001focus\u3001selected\u3001disabled\u72B6\u6001\u7684\u53D8\u5316\u90FD\u5FC5\u987B\u4F7F\u7528view\u7684\u5C5E\u6027station\u6765\u76F4\u63A5\u8BBE\u7F6E\uFF0C\u6BD4\u5982\uFF1A`this.nameInputView.station = ViewStation.Focus`\uFF0C\u53EF\u9009\u503C\u6709\uFF1AViewStation.NORMAL\u3001ViewStation.READONLY\u3001ViewStation.FOCUSED\u3001ViewStation.SELECTED\u3001ViewStation.DISABLED\u3002\n - \u6240\u6709View\u7EC4\u4EF6(\u5305\u62ECBaseView\u3001BaseContainer\u4EE5\u53CA\u5B83\u4EEC\u7684\u5B50\u7C7B)\u7684\u70B9\u51FB\u4E8B\u4EF6\uFF0C\u90FD\u53EF\u4EE5\u76F4\u63A5\u5728view\u7EC4\u4EF6\u7684\u58F0\u660E\u540E\u9762\u6DFB\u52A0`setOnClickListener`\u65B9\u6CD5\u6765\u76D1\u542C\u70B9\u51FB\u4E8B\u4EF6\uFF0C\u6BD4\u5982\uFF1A`this.xxxContainer.setOnClickListener(() => { this.nameTextView.text = '\u70B9\u51FB\u4E86' + this.nameTextView.text })`\n - \u6240\u6709\u7684dialog\u5BF9\u8BDD\u6846\uFF0C\u5FC5\u987B\u8C03\u7528Dialog\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528Dialog\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxDialog.show()\u3001this.xxxDialog.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u5BF9\u8BDD\u6846\u3002\n - \u6240\u6709\u7684DropDownMenu\u4E0B\u62C9\u83DC\u5355\uFF0C\u5FC5\u987B\u8C03\u7528DropDownMenu\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528DropDownMenu\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxDropDownMenu.show()\u3001this.xxxDropDownMenu.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u4E0B\u62C9\u83DC\u5355\u3002\n - \u6240\u6709\u7684SideSlideContainer\u4FA7\u6ED1\u5BB9\u5668\uFF0C\u5FC5\u987B\u8C03\u7528SideSlideContainer\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528SideSlideContainer\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxSideSlideContainer.show()\u3001this.xxxSideSlideContainer.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u4FA7\u6ED1\u5BB9\u5668\u3002\n\n## 2. **\u7406\u89E3\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts\u4EE5\u53CAjson\u76F8\u5173\u4EE3\u7801**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/AllFunction.ts'\u6587\u4EF6\uFF0C\u7406\u89E3\u8BE5\u5DE5\u7A0B\u80FD\u4F7F\u7528\u7684\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/JsonObject.ts'\u548C'src/lib/JsonArray.ts'\u6587\u4EF6\uFF0C\u7406\u89E3\u8FD9\u4E24\u4E2A\u6587\u4EF6\u5B9A\u4E49\u7684json\u76F8\u5173\u7684\u65B9\u6CD5\n - \u8BF7\u4E25\u683C\u6309\u7167\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts\uFF0C\u4E0D\u8981\u65B0\u589E\u3001\u5220\u9664\u6216\u4FEE\u6539\u4EFB\u4F55AllFunction\u63A5\u53E3\u58F0\u660E\uFF1B\u4E5F\u4E0D\u8981\u8C03\u7528\u5176\u4ED6\u672A\u5728AllFunction\u4E2D\u51FA\u73B0\u7684\u51FD\u6570\u6216\u6A21\u5757\n - \u6240\u6709\u7684toast\u63D0\u793A\uFF0C\u5FC5\u987B\u8C03\u7528AllFunction.showToast\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5E76\u4E14\u5982\u7528\u6237\u63CF\u8FF0\u6CA1\u6709\u660E\u786E\u8BF4\u660E\u9700\u8981toast\u63D0\u793A\uFF0C\u4F60\u4E0D\u5F97\u64C5\u81EA\u8FDB\u884CToast\u63D0\u793A\u3002\n - \u6240\u6709\u7684dialog\u5BF9\u8BDD\u6846\uFF0C\u5FC5\u987B\u8C03\u7528Dialog\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528Dialog\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxDialog.show()\u3001this.xxxDialog.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u5BF9\u8BDD\u6846\u3002\n - \u6240\u6709\u7684DropDownMenu\u4E0B\u62C9\u83DC\u5355\uFF0C\u5FC5\u987B\u8C03\u7528DropDownMenu\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528DropDownMenu\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxDropDownMenu.show()\u3001this.xxxDropDownMenu.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u4E0B\u62C9\u83DC\u5355\u3002\n - \u6240\u6709\u7684SideSlideContainer\u4FA7\u6ED1\u5BB9\u5668\uFF0C\u5FC5\u987B\u8C03\u7528SideSlideContainer\u7EC4\u4EF6\u7684show\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5173\u95ED\u65F6\u5FC5\u987B\u8C03\u7528SideSlideContainer\u7EC4\u4EF6\u7684hide\u65B9\u6CD5\u6765\u5173\u95ED\uFF0C\u6BD4\u5982\uFF1Athis.xxxSideSlideContainer.show()\u3001this.xxxSideSlideContainer.hide()\uFF0C\u7981\u6B62\u4F7F\u7528view\u7684visibility\u5C5E\u6027\u6765\u663E\u793A\u9690\u85CF\u4FA7\u6ED1\u5BB9\u5668\u3002\n - \u5EF6\u65F6\u6267\u884CAllFunction.setTimeout\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u6E05\u7406timeout\uFF0C\u4EE3\u7801\u4E0A\u7EDD\u5BF9\u4E0D\u80FD\u8FDB\u884CcleaTimeout\u7B49\u7C7B\u4F3C\u64CD\u4F5C\uFF0C\u56E0\u6B64setTimeout\u4E5F\u4E0D\u9700\u8981\u58F0\u660E\u53D8\u91CF\u53BB\u63A5\u6536setTimeout\u8FD4\u56DE\u7684\u5F15\u7528\u3002\n - \u6240\u6709localStorage\u672C\u5730\u6570\u636E\u5B58\u50A8\u90FD\u5FC5\u987B\u4F7F\u7528AllFunction\u7684saveDatabaseBoolean\u3001saveDatabaseNumber\u3001saveDatabaseString\u3001saveDatabaseArray\u3001saveDatabaseObject\u65B9\u6CD5\u6765\u5B58\u50A8\u6570\u636E\uFF0C\u4F7F\u7528getDatabaseBoolean\u3001getDatabaseNumber\u3001getDatabaseString\u3001getDatabaseArray\u3001getDatabaseObject\u65B9\u6CD5\u6765\u83B7\u53D6\u6570\u636E\u3002\n\n## 3. **\u7406\u89E3Ref\u3001watch**\n - Ref\u7684\u6570\u636E\u7C7B\u578B\u53EA\u80FD\u662F\u4EE5\u4E0B5\u4E2D\u7C7B\u578B\uFF1A\u6570\u5B57\u4F7F\u7528Ref<number>\uFF0C\u5B57\u7B26\u4E32\u4F7F\u7528Ref<string>\uFF0C\u5E03\u5C14\u91CF\u4F7F\u7528Ref<boolean>\uFF0C\u5BF9\u8C61\u4F7F\u7528Ref<any>\uFF0C\u6570\u7EC4\u4F7F\u7528Ref<Array<any>>\u6216Ref<Array<any> | null>\u6216Ref<any[]>\u6216Ref<any[] | null>\u3002\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/Ref.ts'\u6587\u4EF6\uFF0C\u7406\u89E3Ref\u548Cwatch\u7684\u5B9A\u4E49\u7528\u6CD5\n - watch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u7B2C\u4E00\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684Ref\u6570\u7EC4\uFF0C\u7B2C\u4E8C\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684\u56DE\u8C03\u51FD\u6570\uFF0C\u56DE\u8C03\u51FD\u6570\u4E2D\u53EF\u4EE5\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\u3002\n - Ref\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0Cwatch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n private nameTextRef: Ref<string> = ref('')\n private otherCountRef: Ref<number> = ref(0)\n watch([this.nameTextRef, this.otherCountRef], () => {\n // \u53EF\u4EE5\u5148\u76F8\u5173\u7684UI\u66F4\u65B0\u6216\u4E1A\u52A1\u903B\u8F91\n if (this.otherCountRef.value > 5) {\n this.nameTextView.text = this.nameTextRef.value + '5'\n } else {\n this.nameTextView.text = this.nameTextRef.value + '10'\n }\n })\n ```\n - `src/lib/uilib/Ref.ts`\u91CC\u9762\u7684`watch`\u51FD\u6570\uFF0C\u7B2C\u4E00\u4E2A\u5165\u53C2`refs: Ref<T>[]`\u7EDD\u5BF9\u7981\u6B62\u5148\u58F0\u660E\u5C40ref\u6570\u7EC4\u90E8\u53D8\u91CF\u518D\u4F20\u5165\uFF0C\u6B63\u786E\u7684\u5199\u6CD5\u5E94\u8BE5\u662F\u76F4\u63A5\u5199\u6570\u7EC4\uFF1A`[ref1, ref2]`\u5C31\u884C\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF1A\n ``` typescript\n const refArray = [ref1, ref2]\n watch(refArray, (newValues: T[]) => {\n // \u76D1\u542Cref1\u548Cref2\u7684\u53D8\u5316\n })\n ```\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ``` typescript\n watch([ref1, ref2], (newValues: T[]) => {\n // \u76D1\u542Cref1\u548Cref2\u7684\u53D8\u5316\n })\n ```\n\n## 4. **\u7406\u89E3setDataList\u65B9\u6CD5\u7684\u9759\u6001\u6570\u636E\u4E0E\u52A8\u6001\u6570\u636E\u573A\u666F**\n - \u5BF9\u4E8E\u52A8\u6001\u6570\u636E\u5BB9\u5668ViewPager\u3001ListView\u7684setDataList\u65B9\u6CD5\uFF0C\u5982\u679C\u6570\u636E\u662F\u52A8\u6001\u7684\uFF0C\u6BD4\u5982\uFF1A\u4ECE\u540E\u7AEF\u63A5\u53E3\u83B7\u53D6\u7684\uFF0C\u624D\u80FD\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\u9759\u6001\u6570\u636E\u5DF2\u7ECF\u5728UI\u9875\u9762\u4E0A\u5199\u597D\u4E86\uFF0C\u4F60\u4E0D\u5F97\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\n - \u5224\u65AD\u6807\u51C6\uFF1A\u5982\u679CUI\u9875\u9762\u4E2D\u5DF2\u7ECF\u6709\u5B8C\u6574\u7684\u8F6E\u64AD\u9879\u76EE/\u5217\u8868\u9879\u76EE\uFF0C\u5C31\u662F\u9759\u6001\u6570\u636E\uFF0C\u5982\u679C\u662F\u7F51\u7EDCAPI\u8FD4\u56DE\u7684\u6570\u636E\u5217\u8868\u5C31\u662F\u52A8\u6001\u6570\u636E\u3002\n - \u2705 \u9759\u6001\u6570\u636E\u5BB9\u5668\uFF08UI\u9875\u9762\u4E2D\u5DF2\u5199\u597D\u5185\u5BB9\uFF09\uFF1A\u4E0D\u4F7F\u7528setDataList()\n - \u2705 \u52A8\u6001\u6570\u636E\u5BB9\u5668\uFF08\u9700\u8981\u4ECEAPI\u83B7\u53D6\uFF09\uFF1A\u624D\u4F7F\u7528setDataList()\n\n## 5. **View\u7EC4\u4EF6\uFF0C\u7406\u89E3\u6BCF\u4E2A\u7EC4\u4EF6\u53EF\u80FD\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u5982\u679C\u7EC4\u4EF6\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u90A3\u4E48\u4F60\u4E0D\u5F97\u518D\u81EA\u5DF1\u521B\u5EFAref\u53D8\u91CF\u6216\u8005\u4F7F\u7528onSelectChange\u7B49\u56DE\u8C03\u89E6\u53D1UI\u66F4\u65B0**\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\u3002\n public initView() {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n }\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n public initView() {\n watch([this.viewPager.currentSelectIndexRef], () => {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n })\n ```\n - tab\u7EC4\u4EF6\u548C\u8F6E\u64AD\u7EC4\u4EF6\u7684\u9009\u62E9\u53D8\u5316\u76D1\u542C\uFF0C\u5FC5\u987B\u4F7F\u7528`ViewPager`\u6216`TabContainer`\u7684`onSelectChange(func: (item: any, position: number) => void)`\u51FD\u6570\u6765\u76D1\u542C\u9009\u62E9\u53D8\u5316\n\n## 6. **\u7406\u89E3\u9875\u9762\u8DF3\u8F6C**\n - \u7F16\u5199\u8DF3\u8F6C\u9875\u9762\u7684\u4EE3\u7801\u65F6\uFF0C\u5FC5\u987B\u8981\u5148\u67E5\u770B\u76EE\u6807\u9875\u9762\u7684ts\u6587\u4EF6\uFF0C\u786E\u8BA4\u76EE\u6807\u9875\u9762\u662F\u5426\u5B58\u5728\uFF0C\u5982\u679C\u5B58\u5728\u90A3\u4E48\u5FC5\u987B\u8981\u4F7F\u7528`AllFunction.startPage(new xxxPage(xxx)`\u6765\u8DF3\u8F6C\u5230\u76EE\u6807\u9875\u9762xxxPage\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u6577\u884D\u5730\u4F7F\u7528`AllFunction.showToast`\u6765\u6A21\u62DF\u63D0\u793A\u8DF3\u8F6C\u9875\u9762\uFF0C\u9664\u975E\u76EE\u6807\u9875\u9762\u4E0D\u5B58\u5728\u3002\n - \u9875\u9762\u8DF3\u8F6C\u5FC5\u987B\u4F7F\u7528AllFunction.startPage\u5B9E\u73B0\uFF0CstartPage\u4F20\u5165Page\u7684\u5B50\u7C7B\u5BF9\u8C61\uFF0C\u5982\uFF1AAllFunction.startPage(new ProductPage(this.productID))\u3002\n - \u274C \u9875\u9762\u8DF3\u8F6C\u4E0D\u9700\u8003\u8651\u6A21\u5757\u5316\u3001\u5FAA\u73AF\u4F9D\u8D56\u3001\u6E10\u8FDB\u5F0F\u5F00\u53D1\uFF0C\u7EDD\u5BF9\u7981\u6B62\u5C4F\u853D\u9875\u9762\u8DF3\u8F6C\u7684\u4EE3\u7801\uFF0C\u6240\u6709\u9875\u9762\u90FD\u5DF2\u7ECF\u5B58\u5728\uFF0C\u4E0D\u4F1A\u51FA\u73B0\u7F16\u8BD1\u51FA\u9519\u7684\uFF0C\u5FC5\u987B\u660E\u786E\u5199\u4E0A\u9875\u9762\u8DF3\u8F6C\u7684\u4EE3\u7801\u548C\u76EE\u6807\u9875\u9762\u6240\u9700\u7684\u8DF3\u8F6C\u53C2\u6570\u3002\n - \u5728Application.ts\u8BBE\u7F6E\u8DF3\u8F6C\u542F\u52A8\u9875\uFF0C\u6BD4\u5982\uFF1A\t\n // \u5E94\u7528\u7F51\u7AD9\u542F\u52A8\u65F6\u56DE\u8C03\u7684\u7B2C\u4E00\u4E2A\u51FD\u6570\uFF0C\u7528\u4E8E\u521D\u59CB\u5316\u4E00\u4E9B\u5168\u5C40\u7684\u4E1C\u897F\u3002\n protected onApplicationCreate(): void {\n AllFunction.startPage(new SplashPage())\n }\n - \u2705 \u5F15\u5165\u5176\u4ED6\u7C7B\u53EA\u5141\u8BB8\u4E00\u79CD\u5199\u6CD5\uFF1A\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u52A8\u6001import\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n // \u4F7F\u7528\u52A8\u6001\u5BFC\u5165\u907F\u514D\u5FAA\u73AF\u4F9D\u8D56\n import('../guidePage/guidePage').then(({ default: GuidePage }) => {\n AllFunction.startPage(new GuidePage())\n })\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528require\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n require('../guidePage/guidePage').default\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\u662F\uFF1AAllFunction.startPage(new GuidePage())\u3002\u7136\u540E\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u5982\u679C\u9875\u9762\u8DF3\u8F6C\u9700\u8981\u4F20\u9012\u53C2\u6570\uFF0C\u90A3\u4E48\u9700\u8981\u4F7F\u7528Page\u7684\u5B50\u7C7B\u6784\u9020\u51FD\u6570\u6765\u4F20\u9012\u53C2\u6570\uFF0C\u6BD4\u5982\uFF1AAllFunction.startPage(new GuidePage(this.productID))\u3002\n - \u5728\u5B9E\u73B0\u9875\u9762\u8DF3\u8F6C\u4EE3\u7801\u7684\u65F6\u5019\uFF0C\u5FC5\u987B\u4E25\u683C\u6309\u7167\u4EE5\u4E0B\u4E09\u6B65\u6765\u5B9E\u73B0\uFF1A\n - **\u7B2C\u4E00\u6B65\uFF1A\u5148\u5206\u6790\u8DF3\u8F6C\u7684\u76EE\u6807\u9875\u9762\u9700\u8981\u4F20\u9012\u54EA\u4E9B\u53C2\u6570**\n - **\u7B2C\u4E8C\u6B65\uFF1A\u4FEE\u6539\u76EE\u6807\u9875\u9762\u6784\u9020\u51FD\u6570**\uFF1A\n ```typescript\n export default class ReadingPage extends Page {\n private bookId: number\n private chapterTitle: string\n \n constructor(bookId: number, chapterTitle: string) {\n super()\n this.bookId = bookId\n this.chapterTitle = chapterTitle\n }\n }\n ```\n - **\u7B2C\u4E09\u6B65\uFF1A\u4FEE\u6539\u8DF3\u8F6C\u4EE3\u7801**\n ```typescript\n const bookData = this.readingHistoryDataRef.value[0]\n AllFunction.startPage(new ReadingPage(bookData.id, bookData.chapterTitle))\n ```\n\n## 7. **\u7406\u89E3\u57FA\u7840\u5F00\u53D1\u89C4\u5219**\n - lib\u6587\u4EF6\u5939\u91CC\u9762\u7684\u4EE3\u7801\u6587\u4EF6\u90FD\u662F\u5185\u7F6E\u6846\u67B6\u4EE3\u7801\uFF0C\u7EDD\u5BF9\u7981\u6B62\u5BF9lib\u6587\u4EF6\u5939\u7684\u4EE3\u7801\u8FDB\u884C\u589E\u5220\u6539\u64CD\u4F5C\n - \u4EFB\u4F55\u9875\u9762\uFF08\u7279\u522B\u662F\u95EA\u5C4F\u9875\uFF09\u7684\u4E1A\u52A1\u903B\u8F91\u7EDD\u5BF9\u4E0D\u80FD\u653E\u5230Application.ts\u8FDB\u884C\u5904\u7406\uFF0CApplication.ts\u53EA\u8FDB\u884C\u5168\u5C40\u7F51\u7EDC\u62E6\u622A\u5904\u7406\u3001\u5168\u5C40\u9759\u6001\u53D8\u91CF\u3001\u5168\u5C40\u9759\u6001\u65B9\u6CD5\u7684\u5B9A\u4E49\u548C\u5B9E\u73B0\n - \u5982\u679C\u662F\u591A\u4E2A\u9875\u9762\u5171\u7528\u7684\u6570\u636E\u53D8\u91CF\uFF0C\u53EF\u4EE5\u8003\u8651\u58F0\u660E\u4E3A\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u5E76\u5728Application.ts\u4E2D\u8FDB\u884C\u58F0\u660E\u3002\n - \u5168\u5C40\u9759\u6001\u53D8\u91CF\u5728\u5173\u95EDAPP\u6216\u8005\u7F51\u9875\u540E\u4F1A\u6E05\u7406\u6389\u7684\uFF0C\u6240\u4EE5\u4F60\u8981\u601D\u8003\u6E05\u695A\u54EA\u4E9B\u6570\u636E\u53D8\u91CF\u9700\u8981\u6301\u4E45\u5316\u50A8\u5B58\uFF0C\u54EA\u4E9B\u662F\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u6301\u4E45\u5316\u63A5\u53E3\uFF1AsaveDatabaseXxx\u548CgetDatabaseDataXxx\uFF0C\u6BD4\u5982\u662F\u5426\u5DF2\u7ECF\u5F39\u51FA\u8FC7\u5E7F\u544A\u5F39\u6846\uFF0C\u8FD9\u4E2A\u5E94\u8BE5\u6301\u4E45\u5316\u50A8\u5B58\u3002\n - \u58F0\u660E\u5168\u5C40\u53D8\u91CF\u3001\u5C40\u90E8\u53D8\u91CF\u5FC5\u987B\u8981\u58F0\u660E\u6570\u636E\u7C7B\u578B\uFF0C\u5E76\u4E14\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528any\uFF0C\u8BF7\u4F7F\u7528\u5177\u4F53\u7C7B\u578B\u6765\u58F0\u660E\n - \u8F6E\u64ADViewPager\u5BF9\u5E94\u7684\u7D22\u5F15\u6307\u793A\u5668\u5BB9\u5668\uFF0C\u8FD9\u4E2A\u7D22\u5F15\u6307\u793A\u5668\u4E0D\u9700\u8981\u989D\u5916\u4EE3\u7801\u5B9E\u73B0\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u672C\u8EABViewPager\u4E0EIndicatorContainer\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u4E86\u5207\u6362\u7684UI\u66F4\u65B0\u903B\u8F91\u7684\u4E86\uFF0C\u53EA\u9700\u8981viewPager.bindIndicator(indicatorContainer)\u5373\u53EF\u3002\n - Tab\u9009\u9879\u5361`TabNavigateBar`\u548C`TabNavigateBarItem`\u7684\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3ATab\u9009\u9879\u5361\u5185\u90E8\u5DF2\u7ECF\u5C01\u88C5\u597D\u4E86\u6ED1\u52A8\u548C\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n - \u5E95\u90E8\u5BFC\u822A\u680F`bottomTabNavigateBar`\u548C`bottomTabNavigateBarItem`\u7684\u6ED1\u52A8\u548C\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3A\u5E95\u90E8\u5BFC\u822A\u680F\u5185\u90E8\u5DF2\u7ECF\u5C01\u88C5\u597D\u4E86\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\uFF0C\u6BD4\u5982\u9996\u9875\u4E3B\u4F53\u9875\u7684\u5E95\u90E8\u5BFC\u822A\u680F\uFF0C\u4E0D\u9700\u8981\u5B9E\u73B0\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u56E0\u4E3A\u5E95\u90E8\u5BFC\u822A\u680F\u7684\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\u5DF2\u7ECF\u81EA\u52A8\u5B9E\u73B0\u4E86\u3002\n - \u6BCF\u4E00\u4E2A\u9875\u9762(\u5982loginPage)\u5FC5\u987B\u5728page\u6587\u4EF6\u5939\u4E0B\u9762\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6587\u4EF6\u5939(\u5982login)\uFF0C\u7136\u540E\u9875\u9762\u7684ts\u6587\u4EF6(\u5982loginPage.ts)\u521B\u5EFA\u5728\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u9762\u3002\n\n## 8. **\u7406\u89E3\u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u8BFB\u53D6'src/backendApi/backendApiInfo.md'\u540E\u7AEFAPI\u4F7F\u7528\u8BF4\u660E\u6587\u4EF6\uFF0C\u5FC5\u987B\u7F13\u5B58\u8BB0\u4F4F\u6240\u6709\u53EF\u7528\u7684\u540E\u7AEFAPI\u63A5\u53E3\u5217\u8868\u3002\n - \u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528\uFF0C\u5FC5\u987B\u4F7F\u7528src/backendApi\u6587\u4EF6\u5939\u91CC\u9762\u7684\u5404\u79CDAPI\u7C7B\u4E2D\u5B9A\u4E49\u7684\u65B9\u6CD5\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528\u672A\u5728backendApi\u6587\u4EF6\u5939\u4E2D\u5B9A\u4E49\u7684\u540E\u7AEFAPI\uFF0C\u6BD4\u5982\uFF1AbackendApi/account/getUserInfo.ts\uFF0C\u8FD9\u4E2A\u5C31\u662F\u8D26\u53F7\u6A21\u5757\u4E2D\u7684\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u7684API\u7C7B\uFF0C\u8FD4\u56DE\u7684res\u5FC5\u987B\u58F0\u660E\u5177\u4F53\u7C7B\u578B\uFF0C\u6BD4\u5982res: getUserInfoResponse\u3002\n - request\u63A5\u53E3\u53EA\u9700\u5B9A\u4E49\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u5B9E\u73B0\uFF0C\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u3002\n - API\u7C7B\u4EE3\u7801\u793A\u4F8B\uFF1A\n ```typescript\n import { NetFailData } from '../../lib/NetFailData'\n import BaseApi from '../BaseApi'\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8BF7\u6C42\u6570\u636E\n export interface postClientBizAuthLoginRequest {\n username?: string\n password?: string\n key?: string\n captcha?: string\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\n export interface postClientBizAuthLoginResponse {\n code: number\n msg: string\n data: {\n access_token: string\n }\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\n export default class postClientBizAuthLogin extends BaseApi {\n\n public static request_ArtuX1d8a6A(\n request: postClientBizAuthLoginRequest,\n success: (res: postClientBizAuthLoginResponse) => void,\n fail: (error: NetFailData) => void\n ): void { }\n\n }\n ```\n - API\u7C7B\u7684\u4F7F\u7528\u65B9\u5F0F\uFF1A\u5148import API\u7C7B\uFF0C\u7136\u540E\u8C03\u7528API\u7C7B\u7684request\u65B9\u6CD5\uFF0C\u6BD4\u5982\uFF1A\n import { NetFailData } from \"../../lib/NetFailData\"\n import { postClientBizAuthLogin } from '../../backendApi/account/postClientBizAuthLogin'\n ...\n const request: postClientBizAuthLoginRequest = {\n username: 'admin',\n password: '123456',\n key: '123456',\n captcha: '123456'\n }\n postClientBizAuthLogin.request_ArtuX1d8a6A(request, (response: postClientBizAuthLogoutResponse) => {\n // \u8BF7\u6C42\u6210\u529F\u540E\u7684\u5904\u7406\n }, (error: NetFailData) => {\n // \u8BF7\u6C42\u5931\u8D25\u540E\u7684\u5904\u7406\n })\n ...\n\n## 9. **\u7406\u89E3\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\u4E0EUI\u6570\u636E\u7ED1\u5B9A**\n - \u5FC5\u987B\u67E5\u770BxxxPage.md\u6587\u4EF6\u91CC\u9762\u7684\u8BE5\u8282\u70B9\u662F\u5426\u6709\u58F0\u660EfromApiOrCacheData(true)\u7684\u60C5\u51B5\uFF0C\u5982\u679C\u6709\u58F0\u660E\u8868\u793A\u8BE5\u8282\u70B9\u9700\u8981\u4ECE\u540E\u7AEFapi\u63A5\u53E3\u83B7\u53D6\u6570\u636E\uFF0C\u90A3\u4E48\u5FC5\u987B\u5C01\u88C5\u4E00\u4E2A\u540D\u5B57\u53EB\u505A`bindDataFromNet`\u7684\u65B9\u6CD5\u6765\u5904\u7406\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\u4E0EUI\u6570\u636E\u7ED1\u5B9A\u7684\u903B\u8F91\u3002\n - \u5728\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\uFF0C\u5FC5\u987B\u4E25\u683C\u53C2\u8003`api\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\u4E0EUI\u6570\u636E\u7ED1\u5B9A\u4F8B\u5B50`\uFF0C\u9700\u8981\u6839\u636Evtype\u6765\u505A\u6570\u636E\u7ED1\u5B9A\n - vtype=\"verticalListView\"\u3001vtype=\"horizontalListView\"\u3001vtype=\"viewPager\"\u3001vtype=\"radioGroup\"\u3001vtype=\"checkBoxGroup\"\u3001vtype=\"inlineBlockAndWrap\"\u7C7B\u578B\u7684\u8282\u70B9\u7EC4\u4EF6\uFF0C\u9700\u8981\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u7ED1\u5B9A\u6570\u636E\uFF0C\u6BD4\u5982\uFF1A\n this.xxxVerticalListView.setDataList(xxxResponse.data.list)\u3001this.xxxHorizontalListView.setDataList(xxxResponse.xxxList)\u3001this.xxxViewPager.setDataList(xxxResponse.xxxList)\n - `setDataList`\u7684\u5165\u53C2\u5FC5\u987B\u662F\u76F4\u63A5\u5199\u540E\u7AEFapi\u8FD4\u56DE\u7684\u6570\u636E\u8DEF\u5F84\uFF0C\u6BD4\u5982\uFF1AxxxResponse.data.xxxList\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528\u5168\u5C40\u53D8\u91CF\u548C\u5C40\u90E8\u53D8\u91CF\u8FDB\u884C\u6570\u636E\u7ED1\u5B9A\uFF0C\u4E0D\u80FD\u5199\u5176\u4ED6\u903B\u8F91\u4EE3\u7801\uFF0C\u6BD4\u5982\uFF1A\u4E0D\u80FD\u5199if\u3001for\u3001while\u7B49\u5FAA\u73AF\u8BED\u53E5\uFF0C\u4E0D\u80FD\u5199\u51FD\u6570\u8C03\u7528\u7B49\u3002\n - vtype=\"listItemCard\"\u3001vtype=\"oneViewPagerContent\"\u7C7B\u578B\u7684\u8282\u70B9\u7EC4\u4EF6\uFF0C\u9700\u8981\u6DF1\u5EA6\u904D\u5386\u5B83\u7684\u7B2C1\u4E2Aitem\u7684\u5B69\u5B50\uFF0C\u7136\u540E\u7ED3\u5408\u540E\u7AEFapi\u8FD4\u56DE\u7684xxxResponse\u7684\u6570\u636E\u7ED3\u6784\u7ED9\u7B2C1\u4E2Aitem\u8BBE\u7F6E\u6570\u636E\uFF0C\u6CE8\u610F\u53EA\u9700\u7ED9\u7B2C1\u4E2Aitem\u8282\u70B9\u8BBE\u7F6E\u6570\u636E\uFF0C\u800C\u4E0D\u662F\u6240\u6709item\u8282\u70B9\u90FD\u8BBE\u7F6E\u6570\u636E\uFF0C\u5E76\u4E14\u5FC5\u987B\u662F\u76F4\u63A5\u5199\u540E\u7AEFapi\u8FD4\u56DE\u7684\u6570\u636E\u8DEF\u5F84\u7684\u7B2C\u4E00\u4E2AitemData\u7684\u6570\u636E\u8DEF\u5F84\uFF0C\u6BD4\u5982\uFF1Aconst itemData = dataList[0]; this.recommendBookTitle1.text = itemData.xxx.titleText\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528\u5168\u5C40\u53D8\u91CF\u548C\u5C40\u90E8\u53D8\u91CF\u8FDB\u884C\u6570\u636E\u7ED1\u5B9A\uFF0C\u4E0D\u80FD\u5199\u5176\u4ED6\u903B\u8F91\u4EE3\u7801\uFF0C\u6BD4\u5982\uFF1A\u4E0D\u80FD\u5199if\u3001for\u3001while\u7B49\u5FAA\u73AF\u8BED\u53E5\uFF0C\u5982\u679C\u9700\u8981\u903B\u8F91\u5904\u7406\u540E\u624D\u80FD\u5F97\u51FAthis.recommendBookTitle1.text\u7684\u503C\uFF0C\u90A3\u5C31\u5FC5\u987B\u8981\u5C01\u88C5\u4E00\u4E2A`getxxx(itemData: any): string`\u65B9\u6CD5\u6765\u83B7\u53D6\uFF0C\u7136\u540E:this.recommendBookTitle1.text = this.getxxx(itemData)\n - api\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\u4E0EUI\u6570\u636E\u7ED1\u5B9A\u4F8B\u5B50\uFF1A\n ```typescript\n // \u540E\u7AEFxxxApi\u8FD4\u56DE\u7684xxxResponse\u6570\u636E\u7ED3\u6784\n export interface getRecommendBookListResponse {\n code: number\n msg: string\n data: {\n list: [\n {\n id: number // \u4E66\u7C4DID\n title: string // \u4E66\u7C4D\u6807\u9898\n author: string // \u4F5C\u8005\u540D\u79F0\n coverUrl: string // \u5C01\u9762\u56FE\u7247URL\n description: string // \u4E66\u7C4D\u7B80\u4ECB\n categoryName: string // \u5206\u7C7B\u540D\u79F0\n }\n ] // \u4E66\u7C4D\u5217\u8868\n total: number // \u603B\u6570\u91CF\n page: number // \u5F53\u524D\u9875\u7801\n size: number // \u6BCF\u9875\u6570\u91CF\n }\n }\n ...\n private bindDataFromNet(getRecommendBookListData: getRecommendBookListResponse) {\n // \u8BBE\u7F6E\u4E66\u7C4D\u5217\u8868\u6570\u636E\n this.recommendBookList.setDataList(getRecommendBookListData.data.listData)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n const listItemData = getRecommendBookListData.data.listData[0]\n this.recommendBookCover1.src = listItemData.coverUrl\n this.recommendBookTitle1.text = listItemData.title\n this.recommendBookAuthor1.text = listItemData.author\n ...\n // \u8BBE\u7F6E\u8F6E\u64AD\u6570\u636E\n this.recommendViewPager.setDataList(getRecommendBookListData.data.viewPagerData)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n const viePagerItemData = getRecommendBookListData.data.viewPagerData[0]\n this.recommendImage1.src = viePagerItemData.coverUrl\n this.carouselTitle1.text = this.getCarouselTitleData(viePagerItemData) // \u7531\u4E8E\u6709\u590D\u6742\u7684\u903B\u8F91\u5904\u7406\uFF0C\u6240\u4EE5\u5FC5\u987B\u8981\u5C01\u88C5\u4E00\u4E2A\u65B9\u6CD5\u6765\u83B7\u53D6\n }\n private getCarouselTitleData(itemData: any) {\n let title = ''\n if (itemData.title) {\n title = itemData.title\n } else if (itemData.description) {\n title = itemData.description\n } else {\n title = itemData.categoryName\n }\n return title\n }\n ...\n ```\n - \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\u65F6\uFF0C\u5982\u679C\u8868\u8FBE\u5F0F\u53F3\u4FA7\u6D89\u53CA\u903B\u8F91\u8FD0\u7B97\uFF0C\u5FC5\u987B\u5C01\u88C5\u6210\u4E00\u4E2A\u7C7B\u6210\u5458\u65B9\u6CD5\uFF0C\u5982\uFF1A\n ```typescript\n // \u6D89\u53CA\u903B\u8F91\u8FD0\u7B97\u65F6\u6539\u4E3A\u8C03\u7528\u4E00\u4E2A\u7C7B\u6210\u5458\u65B9\u6CD5\n this.recommendImage1.src = this.xxxMethod(getRecommendBookListResponse)\n // \u5982\u679C\u8868\u8FBE\u5F0F\u53F3\u4FA7\u6D89\u53CA\u903B\u8F91\u8FD0\u7B97\uFF0C\u5C01\u88C5\u6210\u4E00\u4E2A\u7C7B\u6210\u5458\u65B9\u6CD5\n private xxxMethod(res: getRecommendBookListResponse): string {\n let tmp = getRecommendBookListResponse.data.list[0].coverUrl\n if (tmp && tmp.length > 5) {\n return tmp + '\u957F\u540D\u5B57'\n }\n return tmp\n }\n ```\n \n\n## 10. \u4E00\u4E9B\u9AD8\u7EA7View\u7EC4\u4EF6\u5185\u90E8\u5DF2\u5C01\u88C5\u597D\u903B\u8F91\uFF0C\u56E0\u6B64\u4E00\u4E9BView\u7EC4\u4EF6\u4E0D\u9700\u8981\u505A\u4EE5\u4E0B\u4E8B\u60C5\n- \u8F6E\u64ADViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3AViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\u5DF2\u7ECF\u81EA\u52A8\u5B9E\u73B0\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n- Tab\u9009\u9879\u5361`TabNavigateBar`\u548C`TabNavigateBarItem`\u7684\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3ATab\u9009\u9879\u5361\u5185\u90E8\u5DF2\u7ECF\u5C01\u88C5\u597D\u4E86\u6ED1\u52A8\u548C\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n- \u5E95\u90E8\u5BFC\u822A\u680F`bottomTabNavigateBar`\u548C`bottomTabNavigateBarItem`\u7684\u6ED1\u52A8\u548C\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3A\u5E95\u90E8\u5BFC\u822A\u680F\u5185\u90E8\u5DF2\u7ECF\u5C01\u88C5\u597D\u4E86\u70B9\u51FB\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n- \u5B50\u9875\u9762\u5BB9\u5668`SubPageContainer`\u4E0D\u9700\u8981\u7F16\u5199\u4EFB\u4F55\u8BBE\u7F6E\u9875\u9762\u6216\u5207\u6362\u9875\u9762\u7684\u903B\u8F91\u3002\n- \u7981\u6B62\u5BF9ImageView\u8FDB\u884Ccolor\u5C5E\u6027\u7684\u8BBE\u7F6E\u3002\n- \u591A\u72B6\u6001\u5BB9\u5668`MultiStateContainer`\uFF0C\u7981\u6B62\u5BF9\u5176\u5185\u90E8\u7684\u5B50View\u7EC4\u4EF6\u8FDB\u884C\u76F4\u63A5\u8BBE\u7F6E\uFF0C\u800C\u5FC5\u987B\u901A\u8FC7`currentStationRef`\u6765\u5207\u6362\u72B6\u6001\uFF0C\u4FEE\u6539`currentStationRef`\u5207\u6362\u72B6\u6001\u540E\u5C31\u4F1A\u81EA\u52A8\u663E\u793A\u8BE5\u72B6\u6001\u4E0B\u7684UI\u7EC4\u4EF6\uFF0C\u5E76\u4E14\u9690\u85CF\u5176\u4ED6\u72B6\u6001\u4E0B\u7684UI\u7EC4\u4EF6\u3002\n\n";
2
2
  //# sourceMappingURL=appCodeRule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"appCodeRule.d.ts","sourceRoot":"","sources":["../src/appCodeRule.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,63hCA4R9C,CAAC"}
1
+ {"version":3,"file":"appCodeRule.d.ts","sourceRoot":"","sources":["../src/appCodeRule.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,o7hCA4R9C,CAAC"}
@@ -203,7 +203,7 @@ export const understandingCodeFrameworkTemplate = `
203
203
  ## 9. **理解调用后端api接口返回数据后与UI数据绑定**
204
204
  - 必须查看xxxPage.md文件里面的该节点是否有声明fromApiOrCacheData(true)的情况,如果有声明表示该节点需要从后端api接口获取数据,那么必须封装一个名字叫做\`bindDataFromNet\`的方法来处理调用后端api接口返回数据后与UI数据绑定的逻辑。
205
205
  - 在调用后端api接口返回数据后,必须严格参考\`api接口返回数据后与UI数据绑定例子\`,需要根据vtype来做数据绑定
206
- - vtype="verticalListView"、vtype="horizontalListView"、vtype="viewPager"、vtype="inlineBlockAndWrap"类型的节点组件,需要使用setDataList方法来绑定数据,比如:
206
+ - vtype="verticalListView"、vtype="horizontalListView"、vtype="viewPager"、vtype="radioGroup"、vtype="checkBoxGroup"、vtype="inlineBlockAndWrap"类型的节点组件,需要使用setDataList方法来绑定数据,比如:
207
207
  this.xxxVerticalListView.setDataList(xxxResponse.data.list)、this.xxxHorizontalListView.setDataList(xxxResponse.xxxList)、this.xxxViewPager.setDataList(xxxResponse.xxxList)
208
208
  - \`setDataList\`的入参必须是直接写后端api返回的数据路径,比如:xxxResponse.data.xxxList,绝对不能使用全局变量和局部变量进行数据绑定,不能写其他逻辑代码,比如:不能写if、for、while等循环语句,不能写函数调用等。
209
209
  - vtype="listItemCard"、vtype="oneViewPagerContent"类型的节点组件,需要深度遍历它的第1个item的孩子,然后结合后端api返回的xxxResponse的数据结构给第1个item设置数据,注意只需给第1个item节点设置数据,而不是所有item节点都设置数据,并且必须是直接写后端api返回的数据路径的第一个itemData的数据路径,比如:const itemData = dataList[0]; this.recommendBookTitle1.text = itemData.xxx.titleText,绝对不能使用全局变量和局部变量进行数据绑定,不能写其他逻辑代码,比如:不能写if、for、while等循环语句,如果需要逻辑处理后才能得出this.recommendBookTitle1.text的值,那就必须要封装一个\`getxxx(itemData: any): string\`方法来获取,然后:this.recommendBookTitle1.text = this.getxxx(itemData)
@@ -283,4 +283,4 @@ export const understandingCodeFrameworkTemplate = `
283
283
  - 多状态容器\`MultiStateContainer\`,禁止对其内部的子View组件进行直接设置,而必须通过\`currentStationRef\`来切换状态,修改\`currentStationRef\`切换状态后就会自动显示该状态下的UI组件,并且隐藏其他状态下的UI组件。
284
284
 
285
285
  `;
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwQ29kZVJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwQ29kZVJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNFJqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVuZGVyc3RhbmRpbmdDb2RlRnJhbWV3b3JrVGVtcGxhdGUgPSBgXG4jICoq5b+F6aG75YWI55CG6Kej6aG555uu5Luj56CB5qGG5p62MTDkuKrnn6Xor4bngrkqKlxuIyMgMS4gKirnkIbop6NWaWV357uE5Lu255qE5aOw5piO5ZKM5L2/55So6KeE5YiZKipcbiAgLSDov5nkuI3mmK9odG1s44CBcmVhY3TnrYnlvIDlj5HvvIzov5nmmK/kuIDkuKrmlrDnmoTlvIDlj5HmoYbmnrbvvIzmmK/ln7rkuo5zcmMvbGliL3VpbGli5paH5Lu25aS56YeM6Z2i55qEVUnnu4Tku7blupPmnaXlvIDlj5HnmoRcbiAgLSBWaWV357uE5Lu255qE5Z+657G75pivQmFzZVZpZXfvvIzlrrnlmajln7rnsbvmmK9CYXNlQ29udGFpbmVyVmlld++8jOaJgOaciVZpZXfnu4Tku7bpg73nu6fmib/oh6pCYXNlVmlld1xuICAtIOafpeeciydzcmMvbGliL3VpbGliLyfmlofku7blpLnkuIvpnaLnmoTmlofku7blkI3lrZfvvIznkIbop6PmgLvlhbHmnInlpJrlsJHnp41VSee7hOS7tlxuICAtIOaJgOaciXZpZXfnu4Tku7bnmoTlo7DmmI7vvIzlv4Xpobvkvb/nlKhcXGBmaW5kVmlld0J5SWQoaWQ6IHN0cmluZylcXGDmlrnms5XotYvlgLzvvIzlhbbkuK3ph4zpnaLnmoTlj4LmlbBcXGBpZFxcYOW/hemhu+S7jlxcYHNyYy97bW9kdWxlTmFtZUVOfS97cGFnZU5hbWVFTn0ve3BhZ2VOYW1lRU59Lm1kXFxg5p+l5om+6I635Y+W5Yiw5q2j56Gu55qEaWTnmoTlgLxcbiAgLSDnpoHmraLkv67mlLlcXGBzcmMve21vZHVsZU5hbWVFTn0ve3BhZ2VOYW1lRU59L3twYWdlTmFtZUVOfS5tZFxcYOaWh+S7tumHjOmdoueahOS7o+egge+8jOatpOaWh+S7tuWPquivu1xuICAtIFZpZXfnu4Tku7bnmoTlo7DmmI7lv4XpobvlnKjnsbvmlofku7blvIDlp4vml7blhYjlo7DmmI7vvIzlubbkuJTlv4XpobvopoHlo7DmmI7lhbfkvZPnmoRWaWV357uE5Lu257G75Z6L77yM5LiN5b6X5aOw5piO5Li6QmFzZVZpZXfvvIzkuI3lvpflnKjku7vkvZXlh73mlbDkvZPph4zpnaLpgJrov4dmaW5kVmlld0J5SWTmnaXlo7DmmI5WaWV357uE5Lu277yM5q+U5aaC77yaXG4gICAgLSDinIUg5q2j56Gu55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHB1YmxpYyBjbGFzcyBIb21lUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgICAgcHJpdmF0ZSBuYW1lVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SWQoJ25hbWVUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgICAuLi4uXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAgIC0g4p2MIOmUmeivr+eahOWGmeazle+8iOayoeacieWjsOWFt+S9k+eahFZpZXfnu4Tku7bnsbvlnovvvInvvJpcbiAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgcHJpdmF0ZSBuYW1lVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJZCgnbmFtZVRleHRWaWV3JylcbiAgICBcXGBcXGBcXGBcbiAgICAtIOKdjCDplJnor6/nmoTlhpnms5XvvIjlnKjlh73mlbDkvZPph4zpnaLpgJrov4dmaW5kVmlld0J5SWTmnaXlo7DmmI5WaWV357uE5Lu277yJ77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHByaXZhdGUgb25lRnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBuYW1lVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SWQoJ25hbWVUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgICAuLi4uXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAtIOaJgOaciVZpZXfnu4Tku7bnmoTmmL7npLrjgIHpmpDol4/ljaDkvY3jgIHpmpDol4/kuI3ljaDkvY3nmoTorr7nva7pg73lv4Xpobvkvb/nlKhWaWV355qEXFxgdmlzaWJpbGl0eVxcYOWxnuaAp+i/m+ihjOiuvue9ru+8jOS4jeW+l+S9v+eUqFxcYHN0YXRpb25cXGDlsZ7mgKfjgIJcbiAgLSDmiYDmnIlWaWV357uE5Lu255qEbm9ybWFs44CBcmVhZE9ubHnjgIFmb2N1c+OAgXNlbGVjdGVk44CBZGlzYWJsZWTnirbmgIHnmoTlj5jljJbpg73lv4Xpobvkvb/nlKh2aWV355qE5bGe5oCnc3RhdGlvbuadpeebtOaOpeiuvue9ru+8jOavlOWmgu+8mlxcYHRoaXMubmFtZUlucHV0Vmlldy5zdGF0aW9uID0gVmlld1N0YXRpb24uRm9jdXNcXGDvvIzlj6/pgInlgLzmnInvvJpWaWV3U3RhdGlvbi5OT1JNQUzjgIFWaWV3U3RhdGlvbi5SRUFET05MWeOAgVZpZXdTdGF0aW9uLkZPQ1VTRUTjgIFWaWV3U3RhdGlvbi5TRUxFQ1RFROOAgVZpZXdTdGF0aW9uLkRJU0FCTEVE44CCXG4gIC0g5omA5pyJVmlld+e7hOS7tijljIXmi6xCYXNlVmlld+OAgUJhc2VDb250YWluZXLku6Xlj4rlroPku6znmoTlrZDnsbsp55qE54K55Ye75LqL5Lu277yM6YO95Y+v5Lul55u05o6l5Zyodmlld+e7hOS7tueahOWjsOaYjuWQjumdoua3u+WKoFxcYHNldE9uQ2xpY2tMaXN0ZW5lclxcYOaWueazleadpeebkeWQrOeCueWHu+S6i+S7tu+8jOavlOWmgu+8mlxcYHRoaXMueHh4Q29udGFpbmVyLnNldE9uQ2xpY2tMaXN0ZW5lcigoKSA9PiB7IHRoaXMubmFtZVRleHRWaWV3LnRleHQgPSAn54K55Ye75LqGJyArIHRoaXMubmFtZVRleHRWaWV3LnRleHQgfSlcXGBcbiAgLSDmiYDmnInnmoRkaWFsb2flr7nor53moYbvvIzlv4XpobvosIPnlKhEaWFsb2fnu4Tku7bnmoRzaG935pa55rOV5p2l5pi+56S677yM5YWz6Zet5pe25b+F6aG76LCD55SoRGlhbG9n57uE5Lu255qEaGlkZeaWueazleadpeWFs+mXre+8jOavlOWmgu+8mnRoaXMueHh4RGlhbG9nLnNob3coKeOAgXRoaXMueHh4RGlhbG9nLmhpZGUoKe+8jOemgeatouS9v+eUqHZpZXfnmoR2aXNpYmlsaXR55bGe5oCn5p2l5pi+56S66ZqQ6JeP5a+56K+d5qGG44CCXG4gIC0g5omA5pyJ55qERHJvcERvd25NZW515LiL5ouJ6I+c5Y2V77yM5b+F6aG76LCD55SoRHJvcERvd25NZW5157uE5Lu255qEc2hvd+aWueazleadpeaYvuekuu+8jOWFs+mXreaXtuW/hemhu+iwg+eUqERyb3BEb3duTWVudee7hOS7tueahGhpZGXmlrnms5XmnaXlhbPpl63vvIzmr5TlpoLvvJp0aGlzLnh4eERyb3BEb3duTWVudS5zaG93KCnjgIF0aGlzLnh4eERyb3BEb3duTWVudS5oaWRlKCnvvIznpoHmraLkvb/nlKh2aWV355qEdmlzaWJpbGl0eeWxnuaAp+adpeaYvuekuumakOiXj+S4i+aLieiPnOWNleOAglxuICAtIOaJgOacieeahFNpZGVTbGlkZUNvbnRhaW5lcuS+p+a7keWuueWZqO+8jOW/hemhu+iwg+eUqFNpZGVTbGlkZUNvbnRhaW5lcue7hOS7tueahHNob3fmlrnms5XmnaXmmL7npLrvvIzlhbPpl63ml7blv4XpobvosIPnlKhTaWRlU2xpZGVDb250YWluZXLnu4Tku7bnmoRoaWRl5pa55rOV5p2l5YWz6Zet77yM5q+U5aaC77yadGhpcy54eHhTaWRlU2xpZGVDb250YWluZXIuc2hvdygp44CBdGhpcy54eHhTaWRlU2xpZGVDb250YWluZXIuaGlkZSgp77yM56aB5q2i5L2/55Sodmlld+eahHZpc2liaWxpdHnlsZ7mgKfmnaXmmL7npLrpmpDol4/kvqfmu5HlrrnlmajjgIJcblxuIyMgMi4gKirnkIbop6PllK/kuIDnmoTog73lipvmlrnms5VBbGxGdW5jdGlvbi50c+S7peWPimpzb27nm7jlhbPku6PnoIEqKlxuICAtIOS9v+eUqCdyZWFkX2ZpbGUn5bel5YW36ZiF6K+75bm255CG6KejJ3NyYy9saWIvQWxsRnVuY3Rpb24udHMn5paH5Lu277yM55CG6Kej6K+l5bel56iL6IO95L2/55So55qE5ZSv5LiA55qE6IO95Yqb5pa55rOVXG4gIC0g5L2/55SoJ3JlYWRfZmlsZSflt6XlhbfpmIXor7vlubbnkIbop6Mnc3JjL2xpYi9Kc29uT2JqZWN0LnRzJ+WSjCdzcmMvbGliL0pzb25BcnJheS50cyfmlofku7bvvIznkIbop6Pov5nkuKTkuKrmlofku7blrprkuYnnmoRqc29u55u45YWz55qE5pa55rOVXG4gIC0g6K+35Lil5qC85oyJ54Wn5ZSv5LiA55qE6IO95Yqb5pa55rOVQWxsRnVuY3Rpb24udHPvvIzkuI3opoHmlrDlop7jgIHliKDpmaTmiJbkv67mlLnku7vkvZVBbGxGdW5jdGlvbuaOpeWPo+WjsOaYju+8m+S5n+S4jeimgeiwg+eUqOWFtuS7luacquWcqEFsbEZ1bmN0aW9u5Lit5Ye6546w55qE5Ye95pWw5oiW5qih5Z2XXG4gIC0g5omA5pyJ55qEdG9hc3Tmj5DnpLrvvIzlv4XpobvosIPnlKhBbGxGdW5jdGlvbi5zaG93VG9hc3Tmlrnms5XmnaXmmL7npLrvvIzlubbkuJTlpoLnlKjmiLfmj4/ov7DmsqHmnInmmI7noa7or7TmmI7pnIDopoF0b2FzdOaPkOekuu+8jOS9oOS4jeW+l+aTheiHqui/m+ihjFRvYXN05o+Q56S644CCXG4gIC0g5omA5pyJ55qEZGlhbG9n5a+56K+d5qGG77yM5b+F6aG76LCD55SoRGlhbG9n57uE5Lu255qEc2hvd+aWueazleadpeaYvuekuu+8jOWFs+mXreaXtuW/hemhu+iwg+eUqERpYWxvZ+e7hOS7tueahGhpZGXmlrnms5XmnaXlhbPpl63vvIzmr5TlpoLvvJp0aGlzLnh4eERpYWxvZy5zaG93KCnjgIF0aGlzLnh4eERpYWxvZy5oaWRlKCnvvIznpoHmraLkvb/nlKh2aWV355qEdmlzaWJpbGl0eeWxnuaAp+adpeaYvuekuumakOiXj+WvueivneahhuOAglxuICAtIOaJgOacieeahERyb3BEb3duTWVudeS4i+aLieiPnOWNle+8jOW/hemhu+iwg+eUqERyb3BEb3duTWVudee7hOS7tueahHNob3fmlrnms5XmnaXmmL7npLrvvIzlhbPpl63ml7blv4XpobvosIPnlKhEcm9wRG93bk1lbnXnu4Tku7bnmoRoaWRl5pa55rOV5p2l5YWz6Zet77yM5q+U5aaC77yadGhpcy54eHhEcm9wRG93bk1lbnUuc2hvdygp44CBdGhpcy54eHhEcm9wRG93bk1lbnUuaGlkZSgp77yM56aB5q2i5L2/55Sodmlld+eahHZpc2liaWxpdHnlsZ7mgKfmnaXmmL7npLrpmpDol4/kuIvmi4noj5zljZXjgIJcbiAgLSDmiYDmnInnmoRTaWRlU2xpZGVDb250YWluZXLkvqfmu5HlrrnlmajvvIzlv4XpobvosIPnlKhTaWRlU2xpZGVDb250YWluZXLnu4Tku7bnmoRzaG935pa55rOV5p2l5pi+56S677yM5YWz6Zet5pe25b+F6aG76LCD55SoU2lkZVNsaWRlQ29udGFpbmVy57uE5Lu255qEaGlkZeaWueazleadpeWFs+mXre+8jOavlOWmgu+8mnRoaXMueHh4U2lkZVNsaWRlQ29udGFpbmVyLnNob3coKeOAgXRoaXMueHh4U2lkZVNsaWRlQ29udGFpbmVyLmhpZGUoKe+8jOemgeatouS9v+eUqHZpZXfnmoR2aXNpYmlsaXR55bGe5oCn5p2l5pi+56S66ZqQ6JeP5L6n5ruR5a655Zmo44CCXG4gIC0g5bu25pe25omn6KGMQWxsRnVuY3Rpb24uc2V0VGltZW91dOezu+e7n+S8muiHquWKqOa4heeQhnRpbWVvdXTvvIzku6PnoIHkuIrnu53lr7nkuI3og73ov5vooYxjbGVhVGltZW91dOetieexu+S8vOaTjeS9nO+8jOWboOatpHNldFRpbWVvdXTkuZ/kuI3pnIDopoHlo7DmmI7lj5jph4/ljrvmjqXmlLZzZXRUaW1lb3V06L+U5Zue55qE5byV55So44CCXG4gIC0g5omA5pyJbG9jYWxTdG9yYWdl5pys5Zyw5pWw5o2u5a2Y5YKo6YO95b+F6aG75L2/55SoQWxsRnVuY3Rpb27nmoRzYXZlRGF0YWJhc2VCb29sZWFu44CBc2F2ZURhdGFiYXNlTnVtYmVy44CBc2F2ZURhdGFiYXNlU3RyaW5n44CBc2F2ZURhdGFiYXNlQXJyYXnjgIFzYXZlRGF0YWJhc2VPYmplY3Tmlrnms5XmnaXlrZjlgqjmlbDmja7vvIzkvb/nlKhnZXREYXRhYmFzZUJvb2xlYW7jgIFnZXREYXRhYmFzZU51bWJlcuOAgWdldERhdGFiYXNlU3RyaW5n44CBZ2V0RGF0YWJhc2VBcnJheeOAgWdldERhdGFiYXNlT2JqZWN05pa55rOV5p2l6I635Y+W5pWw5o2u44CCXG5cbiMjIDMuICoq55CG6KejUmVm44CBd2F0Y2gqKlxuICAtIFJlZueahOaVsOaNruexu+Wei+WPquiDveaYr+S7peS4izXkuK3nsbvlnovvvJrmlbDlrZfkvb/nlKhSZWY8bnVtYmVyPu+8jOWtl+espuS4suS9v+eUqFJlZjxzdHJpbmc+77yM5biD5bCU6YeP5L2/55SoUmVmPGJvb2xlYW4+77yM5a+56LGh5L2/55SoUmVmPGFueT7vvIzmlbDnu4Tkvb/nlKhSZWY8QXJyYXk8YW55Pj7miJZSZWY8QXJyYXk8YW55PiB8IG51bGw+5oiWUmVmPGFueVtdPuaIllJlZjxhbnlbXSB8IG51bGw+44CCXG4gIC0g5L2/55SoJ3JlYWRfZmlsZSflt6XlhbfpmIXor7vlubbnkIbop6Mnc3JjL2xpYi9SZWYudHMn5paH5Lu277yM55CG6KejUmVm5ZKMd2F0Y2jnmoTlrprkuYnnlKjms5VcbiAgLSB3YXRjaOaYr+ebkeWQrFJlZueahOWPmOWMlu+8jOeEtuWQjuWBmuebuOWFs1VJ5pu05paw5oiW5YW25LuW5Lia5Yqh6YC76L6R77yM56ys5LiA5Liq5Y+C5pWw5piv55uR5ZCs55qEUmVm5pWw57uE77yM56ys5LqM5Liq5Y+C5pWw5piv55uR5ZCs55qE5Zue6LCD5Ye95pWw77yM5Zue6LCD5Ye95pWw5Lit5Y+v5Lul5YGa55u45YWzVUnmm7TmlrDmiJblhbbku5bkuJrliqHpgLvovpHjgIJcbiAgLSBSZWbmmK/lk43lupTlvI/mlbDmja7mupDvvIx3YXRjaOaYr+ebkeWQrFJlZueahOWPmOWMlu+8jOeEtuWQjuWBmuebuOWFs1VJ5pu05paw5oiW5YW25LuW5Lia5Yqh6YC76L6R77yM5q+U5aaC77yaXG4gIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgcHJpdmF0ZSBuYW1lVGV4dFJlZjogUmVmPHN0cmluZz4gPSByZWYoJycpXG4gIHByaXZhdGUgb3RoZXJDb3VudFJlZjogUmVmPG51bWJlcj4gPSByZWYoMClcbiAgd2F0Y2goW3RoaXMubmFtZVRleHRSZWYsIHRoaXMub3RoZXJDb3VudFJlZl0sICgpID0+IHtcbiAgICAvLyDlj6/ku6XlhYjnm7jlhbPnmoRVSeabtOaWsOaIluS4muWKoemAu+i+kVxuICAgIGlmICh0aGlzLm90aGVyQ291bnRSZWYudmFsdWUgPiA1KSB7XG4gICAgICB0aGlzLm5hbWVUZXh0Vmlldy50ZXh0ID0gdGhpcy5uYW1lVGV4dFJlZi52YWx1ZSArICc1J1xuICAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYW1lVGV4dFZpZXcudGV4dCA9IHRoaXMubmFtZVRleHRSZWYudmFsdWUgKyAnMTAnXG4gICAgfVxuICB9KVxuICBcXGBcXGBcXGBcbiAgLSBcXGBzcmMvbGliL3VpbGliL1JlZi50c1xcYOmHjOmdoueahFxcYHdhdGNoXFxg5Ye95pWw77yM56ys5LiA5Liq5YWl5Y+CXFxgcmVmczogUmVmPFQ+W11cXGDnu53lr7nnpoHmraLlhYjlo7DmmI7lsYByZWbmlbDnu4Tpg6jlj5jph4/lho3kvKDlhaXvvIzmraPnoa7nmoTlhpnms5XlupTor6XmmK/nm7TmjqXlhpnmlbDnu4TvvJpcXGBbcmVmMSwgcmVmMl1cXGDlsLHooYxcbiAgLSDinYwg6ZSZ6K+v55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgIHR5cGVzY3JpcHRcbiAgICBjb25zdCByZWZBcnJheSA9IFtyZWYxLCByZWYyXVxuICAgIHdhdGNoKHJlZkFycmF5LCAobmV3VmFsdWVzOiBUW10pID0+IHtcbiAgICAgICAgLy8g55uR5ZCscmVmMeWSjHJlZjLnmoTlj5jljJZcbiAgICB9KVxuICAgIFxcYFxcYFxcYFxuICAtIOKchSDmraPnoa7nmoTlhpnms5XvvJpcbiAgICBcXGBcXGBcXGAgdHlwZXNjcmlwdFxuICAgIHdhdGNoKFtyZWYxLCByZWYyXSwgKG5ld1ZhbHVlczogVFtdKSA9PiB7XG4gICAgICAgIC8vIOebkeWQrHJlZjHlkoxyZWYy55qE5Y+Y5YyWXG4gICAgfSlcbiAgICBcXGBcXGBcXGBcblxuIyMgNC4gKirnkIbop6NzZXREYXRhTGlzdOaWueazleeahOmdmeaAgeaVsOaNruS4juWKqOaAgeaVsOaNruWcuuaZryoqXG4gIC0g5a+55LqO5Yqo5oCB5pWw5o2u5a655ZmoVmlld1BhZ2Vy44CBTGlzdFZpZXfnmoRzZXREYXRhTGlzdOaWueazle+8jOWmguaenOaVsOaNruaYr+WKqOaAgeeahO+8jOavlOWmgu+8muS7juWQjuerr+aOpeWPo+iOt+WPlueahO+8jOaJjeiDveS9v+eUqHNldERhdGFMaXN05pa55rOV5p2l6K6+572u5pWw5o2u44CC6Z2Z5oCB5pWw5o2u5bey57uP5ZyoVUnpobXpnaLkuIrlhpnlpb3kuobvvIzkvaDkuI3lvpfkvb/nlKhzZXREYXRhTGlzdOaWueazleadpeiuvue9ruaVsOaNruOAglxuICAtIOWIpOaWreagh+WHhu+8muWmguaenFVJ6aG16Z2i5Lit5bey57uP5pyJ5a6M5pW055qE6L2u5pKt6aG555uuL+WIl+ihqOmhueebru+8jOWwseaYr+mdmeaAgeaVsOaNru+8jOWmguaenOaYr+e9kee7nEFQSei/lOWbnueahOaVsOaNruWIl+ihqOWwseaYr+WKqOaAgeaVsOaNruOAglxuICAtIOKchSDpnZnmgIHmlbDmja7lrrnlmajvvIhVSemhtemdouS4reW3suWGmeWlveWGheWuue+8ie+8muS4jeS9v+eUqHNldERhdGFMaXN0KClcbiAgLSDinIUg5Yqo5oCB5pWw5o2u5a655Zmo77yI6ZyA6KaB5LuOQVBJ6I635Y+W77yJ77ya5omN5L2/55Soc2V0RGF0YUxpc3QoKVxuXG4jIyA1LiAqKlZpZXfnu4Tku7bvvIznkIbop6Pmr4/kuKrnu4Tku7blj6/og73ph4zpnaLlt7Lnu4/mnInkuoblk43lupTlvI/mlbDmja7mupDvvIzlpoLmnpznu4Tku7bph4zpnaLlt7Lnu4/mnInkuoblk43lupTlvI/mlbDmja7mupDvvIzpgqPkuYjkvaDkuI3lvpflho3oh6rlt7HliJvlu7pyZWblj5jph4/miJbogIXkvb/nlKhvblNlbGVjdENoYW5nZeetieWbnuiwg+inpuWPkVVJ5pu05pawKipcbiAgLSDkvovlrZDvvJpWaWV3UGFnZXLnmoRjdXJyZW50U2VsZWN0SW5kZXjlkoxjdXJyZW50U2VsZWN0SW5kZXhSZWblsZ7mgKflt7Lnu4/mmK/lk43lupTlvI/mlbDmja7mupDvvIzlj6/ku6Xnm7TmjqXkvb/nlKhjdXJyZW50U2VsZWN0SW5kZXhSZWbmnaXnu5Hlrproh6rliqjmm7TmlrBVSeOAglxuICAgIHB1YmxpYyBpbml0VmlldygpIHtcbiAgICAgIHRoaXMuc2hvd0luZGV4VGV4dFZpZXcudGV4dCA9IHRoaXMudmlld1BhZ2VyLmN1cnJlbnRTZWxlY3RJbmRleFJlZi52YWx1ZSArIDEgKyAnLycgKyB0aGlzLnZpZXdQYWdlci5kYXRhTGlzdC5sZW5ndGhcbiAgICB9XG4gIC0g5L6L5a2Q77yaVmlld1BhZ2Vy55qEY3VycmVudFNlbGVjdEluZGV45ZKMY3VycmVudFNlbGVjdEluZGV4UmVm5bGe5oCn5bey57uP5piv5ZON5bqU5byP5pWw5o2u5rqQ77yM5Y+v5Lul55u05o6l5L2/55SoY3VycmVudFNlbGVjdEluZGV4UmVm5p2l57uR5a6a6Ieq5Yqo5pu05pawVUnvvIzmr5TlpoLvvJpcbiAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgcHVibGljIGluaXRWaWV3KCkge1xuICAgICAgd2F0Y2goW3RoaXMudmlld1BhZ2VyLmN1cnJlbnRTZWxlY3RJbmRleFJlZl0sICgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93SW5kZXhUZXh0Vmlldy50ZXh0ID0gdGhpcy52aWV3UGFnZXIuY3VycmVudFNlbGVjdEluZGV4UmVmLnZhbHVlICsgMSArICcvJyArIHRoaXMudmlld1BhZ2VyLmRhdGFMaXN0Lmxlbmd0aFxuICAgICAgfSlcbiAgICBcXGBcXGBcXGBcbiAgLSB0YWLnu4Tku7blkozova7mkq3nu4Tku7bnmoTpgInmi6nlj5jljJbnm5HlkKzvvIzlv4Xpobvkvb/nlKhcXGBWaWV3UGFnZXJcXGDmiJZcXGBUYWJDb250YWluZXJcXGDnmoRcXGBvblNlbGVjdENoYW5nZShmdW5jOiAoaXRlbTogYW55LCBwb3NpdGlvbjogbnVtYmVyKSA9PiB2b2lkKVxcYOWHveaVsOadpeebkeWQrOmAieaLqeWPmOWMllxuXG4jIyA2LiAqKueQhuino+mhtemdoui3s+i9rCoqXG4gIC0g57yW5YaZ6Lez6L2s6aG16Z2i55qE5Luj56CB5pe277yM5b+F6aG76KaB5YWI5p+l55yL55uu5qCH6aG16Z2i55qEdHPmlofku7bvvIznoa7orqTnm67moIfpobXpnaLmmK/lkKblrZjlnKjvvIzlpoLmnpzlrZjlnKjpgqPkuYjlv4XpobvopoHkvb/nlKhcXGBBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IHh4eFBhZ2UoeHh4KVxcYOadpei3s+i9rOWIsOebruagh+mhtemdonh4eFBhZ2XvvIznu53lr7nkuI3og73mlbfooY3lnLDkvb/nlKhcXGBBbGxGdW5jdGlvbi5zaG93VG9hc3RcXGDmnaXmqKHmi5/mj5DnpLrot7PovazpobXpnaLvvIzpmaTpnZ7nm67moIfpobXpnaLkuI3lrZjlnKjjgIJcbiAgLSDpobXpnaLot7Povazlv4Xpobvkvb/nlKhBbGxGdW5jdGlvbi5zdGFydFBhZ2Xlrp7njrDvvIxzdGFydFBhZ2XkvKDlhaVQYWdl55qE5a2Q57G75a+56LGh77yM5aaC77yaQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBQcm9kdWN0UGFnZSh0aGlzLnByb2R1Y3RJRCkp44CCXG4gIC0g4p2MIOmhtemdoui3s+i9rOS4jemcgOiAg+iZkeaooeWdl+WMluOAgeW+queOr+S+nei1luOAgea4kOi/m+W8j+W8gOWPke+8jOe7neWvueemgeatouWxj+iUvemhtemdoui3s+i9rOeahOS7o+egge+8jOaJgOaciemhtemdoumDveW3sue7j+WtmOWcqO+8jOS4jeS8muWHuueOsOe8luivkeWHuumUmeeahO+8jOW/hemhu+aYjuehruWGmeS4iumhtemdoui3s+i9rOeahOS7o+eggeWSjOebruagh+mhtemdouaJgOmcgOeahOi3s+i9rOWPguaVsOOAglxuICAtIOWcqEFwcGxpY2F0aW9uLnRz6K6+572u6Lez6L2s5ZCv5Yqo6aG177yM5q+U5aaC77yaXHRcbiAgICAvLyDlupTnlKjnvZHnq5nlkK/liqjml7blm57osIPnmoTnrKzkuIDkuKrlh73mlbDvvIznlKjkuo7liJ3lp4vljJbkuIDkupvlhajlsYDnmoTkuJzopb/jgIJcbiAgICBwcm90ZWN0ZWQgb25BcHBsaWNhdGlvbkNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgIEFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgU3BsYXNoUGFnZSgpKVxuICAgIH1cbiAgLSDinIUg5byV5YWl5YW25LuW57G75Y+q5YWB6K645LiA56eN5YaZ5rOV77ya5Zyo57G75paH5Lu26aG26YOo6L+b6KGMaW1wb3J077yaaW1wb3J0IEd1aWRlUGFnZSBmcm9tICcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJ+OAglxuICAtIOKdjCDnu53lr7nnpoHmraLkvb/nlKjliqjmgIFpbXBvcnTnmoTlhpnms5XvvIznqIvluo/lupXlsYLlt7Lnu4/lpITnkIblpb3lvqrnjq/kvp3otZbpl67popjkuobvvIzkvaDkuI3pnIDopoHogIPomZHvvIzmr5TlpoLnu53lr7nnpoHmraLku6XkuIvlhpnms5XvvJpcbiAgICAgICAgLy8g5L2/55So5Yqo5oCB5a+85YWl6YG/5YWN5b6q546v5L6d6LWWXG4gICAgICAgIGltcG9ydCgnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZScpLnRoZW4oKHsgZGVmYXVsdDogR3VpZGVQYWdlIH0pID0+IHtcbiAgICAgICAgICAgIEFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgR3VpZGVQYWdlKCkpXG4gICAgICAgIH0pXG4gIC0g4p2MIOe7neWvueemgeatouS9v+eUqHJlcXVpcmXnmoTlhpnms5XvvIznqIvluo/lupXlsYLlt7Lnu4/lpITnkIblpb3lvqrnjq/kvp3otZbpl67popjkuobvvIzkvaDkuI3pnIDopoHogIPomZHvvIzmr5TlpoLnu53lr7nnpoHmraLku6XkuIvlhpnms5XvvJpcbiAgICAgICAgcmVxdWlyZSgnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZScpLmRlZmF1bHRcbiAgLSDinIUg5q2j56Gu55qE5YaZ5rOV5piv77yaQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBHdWlkZVBhZ2UoKSnjgILnhLblkI7lnKjnsbvmlofku7bpobbpg6jov5vooYxpbXBvcnTvvJppbXBvcnQgR3VpZGVQYWdlIGZyb20gJy4uL2d1aWRlUGFnZS9ndWlkZVBhZ2Un44CCXG4gIC0g5aaC5p6c6aG16Z2i6Lez6L2s6ZyA6KaB5Lyg6YCS5Y+C5pWw77yM6YKj5LmI6ZyA6KaB5L2/55SoUGFnZeeahOWtkOexu+aehOmAoOWHveaVsOadpeS8oOmAkuWPguaVsO+8jOavlOWmgu+8mkFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgR3VpZGVQYWdlKHRoaXMucHJvZHVjdElEKSnjgIJcbiAgLSDlnKjlrp7njrDpobXpnaLot7Povazku6PnoIHnmoTml7blgJnvvIzlv4XpobvkuKXmoLzmjInnhafku6XkuIvkuInmraXmnaXlrp7njrDvvJpcbiAgICAgIC0gKirnrKzkuIDmraXvvJrlhYjliIbmnpDot7PovaznmoTnm67moIfpobXpnaLpnIDopoHkvKDpgJLlk6rkupvlj4LmlbAqKlxuICAgICAgLSAqKuesrOS6jOatpe+8muS/ruaUueebruagh+mhtemdouaehOmAoOWHveaVsCoq77yaXG4gICAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgICBleHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFkaW5nUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgICAgICAgIHByaXZhdGUgYm9va0lkOiBudW1iZXJcbiAgICAgICAgICBwcml2YXRlIGNoYXB0ZXJUaXRsZTogc3RyaW5nXG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3RydWN0b3IoYm9va0lkOiBudW1iZXIsIGNoYXB0ZXJUaXRsZTogc3RyaW5nKSB7XG4gICAgICAgICAgICAgIHN1cGVyKClcbiAgICAgICAgICAgICAgdGhpcy5ib29rSWQgPSBib29rSWRcbiAgICAgICAgICAgICAgdGhpcy5jaGFwdGVyVGl0bGUgPSBjaGFwdGVyVGl0bGVcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICBcXGBcXGBcXGBcbiAgICAgIC0gKirnrKzkuInmraXvvJrkv67mlLnot7Povazku6PnoIEqKlxuICAgICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgICAgY29uc3QgYm9va0RhdGEgPSB0aGlzLnJlYWRpbmdIaXN0b3J5RGF0YVJlZi52YWx1ZVswXVxuICAgICAgQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBSZWFkaW5nUGFnZShib29rRGF0YS5pZCwgYm9va0RhdGEuY2hhcHRlclRpdGxlKSlcbiAgICAgIFxcYFxcYFxcYFxuXG4jIyA3LiAqKueQhuino+WfuuehgOW8gOWPkeinhOWImSoqXG4gIC0gbGli5paH5Lu25aS56YeM6Z2i55qE5Luj56CB5paH5Lu26YO95piv5YaF572u5qGG5p625Luj56CB77yM57ud5a+556aB5q2i5a+5bGli5paH5Lu25aS555qE5Luj56CB6L+b6KGM5aKe5Yig5pS55pON5L2cXG4gIC0g5Lu75L2V6aG16Z2i77yI54m55Yir5piv6Zeq5bGP6aG177yJ55qE5Lia5Yqh6YC76L6R57ud5a+55LiN6IO95pS+5YiwQXBwbGljYXRpb24udHPov5vooYzlpITnkIbvvIxBcHBsaWNhdGlvbi50c+WPqui/m+ihjOWFqOWxgOe9kee7nOaLpuaIquWkhOeQhuOAgeWFqOWxgOmdmeaAgeWPmOmHj+OAgeWFqOWxgOmdmeaAgeaWueazleeahOWumuS5ieWSjOWunueOsFxuICAtIOWmguaenOaYr+WkmuS4qumhtemdouWFseeUqOeahOaVsOaNruWPmOmHj++8jOWPr+S7peiAg+iZkeWjsOaYjuS4uuWFqOWxgOmdmeaAgeWPmOmHj++8jOW5tuWcqEFwcGxpY2F0aW9uLnRz5Lit6L+b6KGM5aOw5piO44CCXG4gIC0g5YWo5bGA6Z2Z5oCB5Y+Y6YeP5Zyo5YWz6ZetQVBQ5oiW6ICF572R6aG15ZCO5Lya5riF55CG5o6J55qE77yM5omA5Lul5L2g6KaB5oCd6ICD5riF5qWa5ZOq5Lqb5pWw5o2u5Y+Y6YeP6ZyA6KaB5oyB5LmF5YyW5YKo5a2Y77yM5ZOq5Lqb5piv5YWo5bGA6Z2Z5oCB5Y+Y6YeP77yM5oyB5LmF5YyW5o6l5Y+j77yac2F2ZURhdGFiYXNlWHh45ZKMZ2V0RGF0YWJhc2VEYXRhWHh477yM5q+U5aaC5piv5ZCm5bey57uP5by55Ye66L+H5bm/5ZGK5by55qGG77yM6L+Z5Liq5bqU6K+l5oyB5LmF5YyW5YKo5a2Y44CCXG4gIC0g5aOw5piO5YWo5bGA5Y+Y6YeP44CB5bGA6YOo5Y+Y6YeP5b+F6aG76KaB5aOw5piO5pWw5o2u57G75Z6L77yM5bm25LiU57ud5a+556aB5q2i5L2/55SoYW5577yM6K+35L2/55So5YW35L2T57G75Z6L5p2l5aOw5piOXG4gIC0g6L2u5pKtVmlld1BhZ2Vy5a+55bqU55qE57Si5byV5oyH56S65Zmo5a655Zmo77yM6L+Z5Liq57Si5byV5oyH56S65Zmo5LiN6ZyA6KaB6aKd5aSW5Luj56CB5a6e546w5oyH56S65Zmo54K555qE5YiH5o2iVUnmm7TmlrDpgLvovpHvvIzmnKzouqtWaWV3UGFnZXLkuI5JbmRpY2F0b3JDb250YWluZXLlupXlsYLlt7Lnu4/lrp7njrDkuobliIfmjaLnmoRVSeabtOaWsOmAu+i+keeahOS6hu+8jOWPqumcgOimgXZpZXdQYWdlci5iaW5kSW5kaWNhdG9yKGluZGljYXRvckNvbnRhaW5lcinljbPlj6/jgIJcbiAgLSBUYWLpgInpobnljaFcXGBUYWJOYXZpZ2F0ZUJhclxcYOWSjFxcYFRhYk5hdmlnYXRlQmFySXRlbVxcYOeahOeCueWHu+WIh+aNolVJ5pu05paw6YC76L6R77yM5LiN5b6X5ZyodHPku6PnoIHph4zpnaLov5vooYzvvIzlm6DkuLpUYWLpgInpobnljaHlhoXpg6jlt7Lnu4/lsIHoo4Xlpb3kuobmu5Hliqjlkozngrnlh7vliIfmjaJVSeabtOaWsOmAu+i+ke+8jOS9oOS4jemcgOimgeWGjeaJi+WKqOWunueOsOOAglxuICAtIOW6lemDqOWvvOiIquagj1xcYGJvdHRvbVRhYk5hdmlnYXRlQmFyXFxg5ZKMXFxgYm90dG9tVGFiTmF2aWdhdGVCYXJJdGVtXFxg55qE5ruR5Yqo5ZKM54K55Ye75YiH5o2iVUnmm7TmlrDpgLvovpHvvIzkuI3lvpflnKh0c+S7o+eggemHjOmdoui/m+ihjO+8jOWboOS4uuW6lemDqOWvvOiIquagj+WGhemDqOW3sue7j+WwgeijheWlveS6hueCueWHu+WIh+aNolVJ5pu05paw6YC76L6R77yM5L2g5LiN6ZyA6KaB5YaN5omL5Yqo5a6e546w77yM5q+U5aaC6aaW6aG15Li75L2T6aG155qE5bqV6YOo5a+86Iiq5qCP77yM5LiN6ZyA6KaB5a6e546w54K55Ye75YiH5o2iVUnmm7TmlrDpgLvovpHvvIzlm6DkuLrlupXpg6jlr7zoiKrmoI/nmoTngrnlh7vliIfmjaJVSeabtOaWsOmAu+i+keW3sue7j+iHquWKqOWunueOsOS6huOAglxuICAtIOavj+S4gOS4qumhtemdoijlpoJsb2dpblBhZ2Up5b+F6aG75ZyocGFnZeaWh+S7tuWkueS4i+mdouWIm+W7uuS4gOS4qumhtemdouaWh+S7tuWkuSjlpoJsb2dpbinvvIznhLblkI7pobXpnaLnmoR0c+aWh+S7tijlpoJsb2dpblBhZ2UudHMp5Yib5bu65Zyo6aG16Z2i5paH5Lu25aS55LiL6Z2i44CCXG5cbiMjIDguICoq55CG6Kej5ZCO56uvQVBJ5o6l5Y+j55qE5a6a5LmJ5LiO5L2/55SoKipcbiAgLSDkvb/nlKgncmVhZF9maWxlJ+W3peWFt+ivu+WPlidzcmMvYmFja2VuZEFwaS9iYWNrZW5kQXBpSW5mby5tZCflkI7nq69BUEnkvb/nlKjor7TmmI7mlofku7bvvIzlv4XpobvnvJPlrZjorrDkvY/miYDmnInlj6/nlKjnmoTlkI7nq69BUEnmjqXlj6PliJfooajjgIJcbiAgLSDlkI7nq69BUEnmjqXlj6PnmoTlrprkuYnkuI7kvb/nlKjvvIzlv4Xpobvkvb/nlKhzcmMvYmFja2VuZEFwaeaWh+S7tuWkuemHjOmdoueahOWQhOenjUFQSeexu+S4reWumuS5ieeahOaWueazle+8jOS4jeWFgeiuuOS9v+eUqOacquWcqGJhY2tlbmRBcGnmlofku7blpLnkuK3lrprkuYnnmoTlkI7nq69BUEnvvIzmr5TlpoLvvJpiYWNrZW5kQXBpL2FjY291bnQvZ2V0VXNlckluZm8udHPvvIzov5nkuKrlsLHmmK/otKblj7fmqKHlnZfkuK3nmoTojrflj5bnlKjmiLfkv6Hmga/nmoRBUEnnsbvvvIzov5Tlm57nmoRyZXPlv4Xpobvlo7DmmI7lhbfkvZPnsbvlnovvvIzmr5TlpoJyZXM6IGdldFVzZXJJbmZvUmVzcG9uc2XjgIJcbiAgLSByZXF1ZXN05o6l5Y+j5Y+q6ZyA5a6a5LmJ5Y2z5Y+v77yM5LiN6ZyA6KaB5a6e546w77yM5bqV5bGC5bey57uP5a6e546w44CCXG4gIC0gQVBJ57G75Luj56CB56S65L6L77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIGltcG9ydCB7IE5ldEZhaWxEYXRhIH0gZnJvbSAnLi4vLi4vbGliL05ldEZhaWxEYXRhJ1xuICAgIGltcG9ydCBCYXNlQXBpIGZyb20gJy4uL0Jhc2VBcGknXG5cbiAgICAvLyDotKblj7fns7vnu58t6LSm5Y+35a+G56CB55m75b2V5o6l5Y+j6K+35rGC5pWw5o2uXG4gICAgZXhwb3J0IGludGVyZmFjZSBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVxdWVzdCB7XG4gICAgICAgIHVzZXJuYW1lPzogc3RyaW5nXG4gICAgICAgIHBhc3N3b3JkPzogc3RyaW5nXG4gICAgICAgIGtleT86IHN0cmluZ1xuICAgICAgICBjYXB0Y2hhPzogc3RyaW5nXG4gICAgfVxuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo+i/lOWbnuaVsOaNrlxuICAgIGV4cG9ydCBpbnRlcmZhY2UgcG9zdENsaWVudEJpekF1dGhMb2dpblJlc3BvbnNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIG1zZzogc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOi0puWPt+ezu+e7ny3otKblj7flr4bnoIHnmbvlvZXmjqXlj6NcbiAgICBleHBvcnQgZGVmYXVsdCBjbGFzcyBwb3N0Q2xpZW50Qml6QXV0aExvZ2luIGV4dGVuZHMgQmFzZUFwaSAge1xuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVxdWVzdF9BcnR1WDFkOGE2QShcbiAgICAgICAgICAgIHJlcXVlc3Q6IHBvc3RDbGllbnRCaXpBdXRoTG9naW5SZXF1ZXN0LFxuICAgICAgICAgICAgc3VjY2VzczogKHJlczogcG9zdENsaWVudEJpekF1dGhMb2dpblJlc3BvbnNlKSA9PiB2b2lkLFxuICAgICAgICAgICAgZmFpbDogKGVycm9yOiBOZXRGYWlsRGF0YSkgPT4gdm9pZFxuICAgICAgICApOiB2b2lkIHsgfVxuXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAtIEFQSeexu+eahOS9v+eUqOaWueW8j++8muWFiGltcG9ydCBBUEnnsbvvvIznhLblkI7osIPnlKhBUEnnsbvnmoRyZXF1ZXN05pa55rOV77yM5q+U5aaC77yaXG4gICAgaW1wb3J0IHsgTmV0RmFpbERhdGEgfSBmcm9tIFwiLi4vLi4vbGliL05ldEZhaWxEYXRhXCJcbiAgICBpbXBvcnQgeyBwb3N0Q2xpZW50Qml6QXV0aExvZ2luIH0gZnJvbSAnLi4vLi4vYmFja2VuZEFwaS9hY2NvdW50L3Bvc3RDbGllbnRCaXpBdXRoTG9naW4nXG4gICAgLi4uXG4gICAgY29uc3QgcmVxdWVzdDogcG9zdENsaWVudEJpekF1dGhMb2dpblJlcXVlc3QgPSB7XG4gICAgICB1c2VybmFtZTogJ2FkbWluJyxcbiAgICAgIHBhc3N3b3JkOiAnMTIzNDU2JyxcbiAgICAgIGtleTogJzEyMzQ1NicsXG4gICAgICBjYXB0Y2hhOiAnMTIzNDU2J1xuICAgIH1cbiAgICBwb3N0Q2xpZW50Qml6QXV0aExvZ2luLnJlcXVlc3RfQXJ0dVgxZDhhNkEocmVxdWVzdCwgKHJlc3BvbnNlOiBwb3N0Q2xpZW50Qml6QXV0aExvZ291dFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyDor7fmsYLmiJDlip/lkI7nmoTlpITnkIZcbiAgICB9LCAoZXJyb3I6IE5ldEZhaWxEYXRhKSA9PiB7XG4gICAgICAvLyDor7fmsYLlpLHotKXlkI7nmoTlpITnkIZcbiAgICB9KVxuICAgIC4uLlxuXG4jIyA5LiAqKueQhuino+iwg+eUqOWQjuerr2FwaeaOpeWPo+i/lOWbnuaVsOaNruWQjuS4jlVJ5pWw5o2u57uR5a6aKipcbiAgLSDlv4Xpobvmn6XnnIt4eHhQYWdlLm1k5paH5Lu26YeM6Z2i55qE6K+l6IqC54K55piv5ZCm5pyJ5aOw5piOZnJvbUFwaU9yQ2FjaGVEYXRhKHRydWUp55qE5oOF5Ya177yM5aaC5p6c5pyJ5aOw5piO6KGo56S66K+l6IqC54K56ZyA6KaB5LuO5ZCO56uvYXBp5o6l5Y+j6I635Y+W5pWw5o2u77yM6YKj5LmI5b+F6aG75bCB6KOF5LiA5Liq5ZCN5a2X5Y+r5YGaXFxgYmluZERhdGFGcm9tTmV0XFxg55qE5pa55rOV5p2l5aSE55CG6LCD55So5ZCO56uvYXBp5o6l5Y+j6L+U5Zue5pWw5o2u5ZCO5LiOVUnmlbDmja7nu5HlrprnmoTpgLvovpHjgIJcbiAgLSDlnKjosIPnlKjlkI7nq69hcGnmjqXlj6Pov5Tlm57mlbDmja7lkI7vvIzlv4XpobvkuKXmoLzlj4LogINcXGBhcGnmjqXlj6Pov5Tlm57mlbDmja7lkI7kuI5VSeaVsOaNrue7keWumuS+i+WtkFxcYO+8jOmcgOimgeagueaNrnZ0eXBl5p2l5YGa5pWw5o2u57uR5a6aXG4gICAgLSB2dHlwZT1cInZlcnRpY2FsTGlzdFZpZXdcIuOAgXZ0eXBlPVwiaG9yaXpvbnRhbExpc3RWaWV3XCLjgIF2dHlwZT1cInZpZXdQYWdlclwi44CBdnR5cGU9XCJpbmxpbmVCbG9ja0FuZFdyYXBcIuexu+Wei+eahOiKgueCuee7hOS7tu+8jOmcgOimgeS9v+eUqHNldERhdGFMaXN05pa55rOV5p2l57uR5a6a5pWw5o2u77yM5q+U5aaC77yaXG4gICAgICB0aGlzLnh4eFZlcnRpY2FsTGlzdFZpZXcuc2V0RGF0YUxpc3QoeHh4UmVzcG9uc2UuZGF0YS5saXN0KeOAgXRoaXMueHh4SG9yaXpvbnRhbExpc3RWaWV3LnNldERhdGFMaXN0KHh4eFJlc3BvbnNlLnh4eExpc3Qp44CBdGhpcy54eHhWaWV3UGFnZXIuc2V0RGF0YUxpc3QoeHh4UmVzcG9uc2UueHh4TGlzdClcbiAgICAtIFxcYHNldERhdGFMaXN0XFxg55qE5YWl5Y+C5b+F6aG75piv55u05o6l5YaZ5ZCO56uvYXBp6L+U5Zue55qE5pWw5o2u6Lev5b6E77yM5q+U5aaC77yaeHh4UmVzcG9uc2UuZGF0YS54eHhMaXN077yM57ud5a+55LiN6IO95L2/55So5YWo5bGA5Y+Y6YeP5ZKM5bGA6YOo5Y+Y6YeP6L+b6KGM5pWw5o2u57uR5a6a77yM5LiN6IO95YaZ5YW25LuW6YC76L6R5Luj56CB77yM5q+U5aaC77ya5LiN6IO95YaZaWbjgIFmb3LjgIF3aGlsZeetieW+queOr+ivreWPpe+8jOS4jeiDveWGmeWHveaVsOiwg+eUqOetieOAglxuICAgIC0gdnR5cGU9XCJsaXN0SXRlbUNhcmRcIuOAgXZ0eXBlPVwib25lVmlld1BhZ2VyQ29udGVudFwi57G75Z6L55qE6IqC54K557uE5Lu277yM6ZyA6KaB5rex5bqm6YGN5Y6G5a6D55qE56ysMeS4qml0ZW3nmoTlranlrZDvvIznhLblkI7nu5PlkIjlkI7nq69hcGnov5Tlm57nmoR4eHhSZXNwb25zZeeahOaVsOaNrue7k+aehOe7meesrDHkuKppdGVt6K6+572u5pWw5o2u77yM5rOo5oSP5Y+q6ZyA57uZ56ysMeS4qml0ZW3oioLngrnorr7nva7mlbDmja7vvIzogIzkuI3mmK/miYDmnIlpdGVt6IqC54K56YO96K6+572u5pWw5o2u77yM5bm25LiU5b+F6aG75piv55u05o6l5YaZ5ZCO56uvYXBp6L+U5Zue55qE5pWw5o2u6Lev5b6E55qE56ys5LiA5LiqaXRlbURhdGHnmoTmlbDmja7ot6/lvoTvvIzmr5TlpoLvvJpjb25zdCBpdGVtRGF0YSA9IGRhdGFMaXN0WzBdOyB0aGlzLnJlY29tbWVuZEJvb2tUaXRsZTEudGV4dCA9IGl0ZW1EYXRhLnh4eC50aXRsZVRleHTvvIznu53lr7nkuI3og73kvb/nlKjlhajlsYDlj5jph4/lkozlsYDpg6jlj5jph4/ov5vooYzmlbDmja7nu5HlrprvvIzkuI3og73lhpnlhbbku5bpgLvovpHku6PnoIHvvIzmr5TlpoLvvJrkuI3og73lhplpZuOAgWZvcuOAgXdoaWxl562J5b6q546v6K+t5Y+l77yM5aaC5p6c6ZyA6KaB6YC76L6R5aSE55CG5ZCO5omN6IO95b6X5Ye6dGhpcy5yZWNvbW1lbmRCb29rVGl0bGUxLnRleHTnmoTlgLzvvIzpgqPlsLHlv4XpobvopoHlsIHoo4XkuIDkuKpcXGBnZXR4eHgoaXRlbURhdGE6IGFueSk6IHN0cmluZ1xcYOaWueazleadpeiOt+WPlu+8jOeEtuWQjjp0aGlzLnJlY29tbWVuZEJvb2tUaXRsZTEudGV4dCA9IHRoaXMuZ2V0eHh4KGl0ZW1EYXRhKVxuICAgIC0gYXBp5o6l5Y+j6L+U5Zue5pWw5o2u5ZCO5LiOVUnmlbDmja7nu5HlrprkvovlrZDvvJpcbiAgICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICAgIC8vIOWQjuerr3h4eEFwaei/lOWbnueahHh4eFJlc3BvbnNl5pWw5o2u57uT5p6EXG4gICAgICBleHBvcnQgaW50ZXJmYWNlIGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2Uge1xuICAgICAgICAgIGNvZGU6IG51bWJlclxuICAgICAgICAgIG1zZzogc3RyaW5nXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBsaXN0OiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IG51bWJlciAvLyDkuabnsY1JRFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmcgLy8g5Lmm57GN5qCH6aKYXG4gICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBzdHJpbmcgLy8g5L2c6ICF5ZCN56ewXG4gICAgICAgICAgICAgICAgICAgICAgY292ZXJVcmw6IHN0cmluZyAvLyDlsIHpnaLlm77niYdVUkxcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIC8vIOS5puexjeeugOS7i1xuICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5TmFtZTogc3RyaW5nIC8vIOWIhuexu+WQjeensFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdIC8vIOS5puexjeWIl+ihqFxuICAgICAgICAgICAgICB0b3RhbDogbnVtYmVyIC8vIOaAu+aVsOmHj1xuICAgICAgICAgICAgICBwYWdlOiBudW1iZXIgLy8g5b2T5YmN6aG156CBXG4gICAgICAgICAgICAgIHNpemU6IG51bWJlciAvLyDmr4/pobXmlbDph49cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICAuLi5cbiAgICAgIHByaXZhdGUgYmluZERhdGFGcm9tTmV0KGdldFJlY29tbWVuZEJvb2tMaXN0RGF0YTogZ2V0UmVjb21tZW5kQm9va0xpc3RSZXNwb25zZSkge1xuICAgICAgICAvLyDorr7nva7kuabnsY3liJfooajmlbDmja5cbiAgICAgICAgdGhpcy5yZWNvbW1lbmRCb29rTGlzdC5zZXREYXRhTGlzdChnZXRSZWNvbW1lbmRCb29rTGlzdERhdGEuZGF0YS5saXN0RGF0YSlcbiAgICAgICAgLy8g6K6+572u56ysMeS4qml0ZW3oioLngrnmlbDmja5cbiAgICAgICAgY29uc3QgbGlzdEl0ZW1EYXRhID0gZ2V0UmVjb21tZW5kQm9va0xpc3REYXRhLmRhdGEubGlzdERhdGFbMF1cbiAgICAgICAgdGhpcy5yZWNvbW1lbmRCb29rQ292ZXIxLnNyYyA9IGxpc3RJdGVtRGF0YS5jb3ZlclVybFxuICAgICAgICB0aGlzLnJlY29tbWVuZEJvb2tUaXRsZTEudGV4dCA9IGxpc3RJdGVtRGF0YS50aXRsZVxuICAgICAgICB0aGlzLnJlY29tbWVuZEJvb2tBdXRob3IxLnRleHQgPSBsaXN0SXRlbURhdGEuYXV0aG9yXG4gICAgICAgIC4uLlxuICAgICAgICAvLyDorr7nva7ova7mkq3mlbDmja5cbiAgICAgICAgdGhpcy5yZWNvbW1lbmRWaWV3UGFnZXIuc2V0RGF0YUxpc3QoZ2V0UmVjb21tZW5kQm9va0xpc3REYXRhLmRhdGEudmlld1BhZ2VyRGF0YSlcbiAgICAgICAgLy8g6K6+572u56ysMeS4qml0ZW3oioLngrnmlbDmja5cbiAgICAgICAgY29uc3QgdmllUGFnZXJJdGVtRGF0YSA9IGdldFJlY29tbWVuZEJvb2tMaXN0RGF0YS5kYXRhLnZpZXdQYWdlckRhdGFbMF1cbiAgICAgICAgdGhpcy5yZWNvbW1lbmRJbWFnZTEuc3JjID0gdmllUGFnZXJJdGVtRGF0YS5jb3ZlclVybFxuICAgICAgICB0aGlzLmNhcm91c2VsVGl0bGUxLnRleHQgPSB0aGlzLmdldENhcm91c2VsVGl0bGVEYXRhKHZpZVBhZ2VySXRlbURhdGEpIC8vIOeUseS6juacieWkjeadgueahOmAu+i+keWkhOeQhu+8jOaJgOS7peW/hemhu+imgeWwgeijheS4gOS4quaWueazleadpeiOt+WPllxuICAgICAgfVxuICAgICAgcHJpdmF0ZSBnZXRDYXJvdXNlbFRpdGxlRGF0YShpdGVtRGF0YTogYW55KSB7XG4gICAgICAgIGxldCB0aXRsZSA9ICcnXG4gICAgICAgIGlmIChpdGVtRGF0YS50aXRsZSkge1xuICAgICAgICAgIHRpdGxlID0gaXRlbURhdGEudGl0bGVcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtRGF0YS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgIHRpdGxlID0gaXRlbURhdGEuZGVzY3JpcHRpb25cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aXRsZSA9IGl0ZW1EYXRhLmNhdGVnb3J5TmFtZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aXRsZVxuICAgICAgfVxuICAgICAgLi4uXG4gICAgICBcXGBcXGBcXGBcbiAgICAtIOiuvue9ruesrDHkuKppdGVt6IqC54K55pWw5o2u5pe277yM5aaC5p6c6KGo6L6+5byP5Y+z5L6n5raJ5Y+K6YC76L6R6L+Q566X77yM5b+F6aG75bCB6KOF5oiQ5LiA5Liq57G75oiQ5ZGY5pa55rOV77yM5aaC77yaXG4gICAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgICAvLyDmtonlj4rpgLvovpHov5Dnrpfml7bmlLnkuLrosIPnlKjkuIDkuKrnsbvmiJDlkZjmlrnms5VcbiAgICAgIHRoaXMucmVjb21tZW5kSW1hZ2UxLnNyYyA9IHRoaXMueHh4TWV0aG9kKGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UpXG4gICAgICAvLyDlpoLmnpzooajovr7lvI/lj7Pkvqfmtonlj4rpgLvovpHov5DnrpfvvIzlsIHoo4XmiJDkuIDkuKrnsbvmiJDlkZjmlrnms5VcbiAgICAgIHByaXZhdGUgeHh4TWV0aG9kKHJlczogZ2V0UmVjb21tZW5kQm9va0xpc3RSZXNwb25zZSk6IHN0cmluZyB7XG4gICAgICAgIGxldCB0bXAgPSBnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlLmRhdGEubGlzdFswXS5jb3ZlclVybFxuICAgICAgICBpZiAodG1wICYmIHRtcC5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgICByZXR1cm4gdG1wICsgJ+mVv+WQjeWtlydcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG1wXG4gICAgICB9XG4gICAgICBcXGBcXGBcXGBcbiAgICBcblxuIyMgMTAuIOS4gOS6m+mrmOe6p1ZpZXfnu4Tku7blhoXpg6jlt7LlsIHoo4Xlpb3pgLvovpHvvIzlm6DmraTkuIDkuptWaWV357uE5Lu25LiN6ZyA6KaB5YGa5Lul5LiL5LqL5oOFXG4tIOi9ruaSrVZpZXdQYWdlcueahOaMh+ekuuWZqOeCueeahOWIh+aNolVJ5pu05paw6YC76L6R77yM5LiN5b6X5ZyodHPku6PnoIHph4zpnaLov5vooYzvvIzlm6DkuLpWaWV3UGFnZXLnmoTmjIfnpLrlmajngrnnmoTliIfmjaJVSeabtOaWsOmAu+i+keW3sue7j+iHquWKqOWunueOsOS6hu+8jOS9oOS4jemcgOimgeWGjeaJi+WKqOWunueOsOOAglxuLSBUYWLpgInpobnljaFcXGBUYWJOYXZpZ2F0ZUJhclxcYOWSjFxcYFRhYk5hdmlnYXRlQmFySXRlbVxcYOeahOeCueWHu+WIh+aNolVJ5pu05paw6YC76L6R77yM5LiN5b6X5ZyodHPku6PnoIHph4zpnaLov5vooYzvvIzlm6DkuLpUYWLpgInpobnljaHlhoXpg6jlt7Lnu4/lsIHoo4Xlpb3kuobmu5Hliqjlkozngrnlh7vliIfmjaJVSeabtOaWsOmAu+i+ke+8jOS9oOS4jemcgOimgeWGjeaJi+WKqOWunueOsOOAglxuLSDlupXpg6jlr7zoiKrmoI9cXGBib3R0b21UYWJOYXZpZ2F0ZUJhclxcYOWSjFxcYGJvdHRvbVRhYk5hdmlnYXRlQmFySXRlbVxcYOeahOa7keWKqOWSjOeCueWHu+WIh+aNolVJ5pu05paw6YC76L6R77yM5LiN5b6X5ZyodHPku6PnoIHph4zpnaLov5vooYzvvIzlm6DkuLrlupXpg6jlr7zoiKrmoI/lhoXpg6jlt7Lnu4/lsIHoo4Xlpb3kuobngrnlh7vliIfmjaJVSeabtOaWsOmAu+i+ke+8jOS9oOS4jemcgOimgeWGjeaJi+WKqOWunueOsOOAglxuLSDlrZDpobXpnaLlrrnlmahcXGBTdWJQYWdlQ29udGFpbmVyXFxg5LiN6ZyA6KaB57yW5YaZ5Lu75L2V6K6+572u6aG16Z2i5oiW5YiH5o2i6aG16Z2i55qE6YC76L6R44CCXG4tIOemgeatouWvuUltYWdlVmlld+i/m+ihjGNvbG9y5bGe5oCn55qE6K6+572u44CCXG4tIOWkmueKtuaAgeWuueWZqFxcYE11bHRpU3RhdGVDb250YWluZXJcXGDvvIznpoHmraLlr7nlhbblhoXpg6jnmoTlrZBWaWV357uE5Lu26L+b6KGM55u05o6l6K6+572u77yM6ICM5b+F6aG76YCa6L+HXFxgY3VycmVudFN0YXRpb25SZWZcXGDmnaXliIfmjaLnirbmgIHvvIzkv67mlLlcXGBjdXJyZW50U3RhdGlvblJlZlxcYOWIh+aNoueKtuaAgeWQjuWwseS8muiHquWKqOaYvuekuuivpeeKtuaAgeS4i+eahFVJ57uE5Lu277yM5bm25LiU6ZqQ6JeP5YW25LuW54q25oCB5LiL55qEVUnnu4Tku7bjgIJcblxuYDtcbiJdfQ==
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwQ29kZVJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwQ29kZVJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNFJqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVuZGVyc3RhbmRpbmdDb2RlRnJhbWV3b3JrVGVtcGxhdGUgPSBgXG4jICoq5b+F6aG75YWI55CG6Kej6aG555uu5Luj56CB5qGG5p62MTDkuKrnn6Xor4bngrkqKlxuIyMgMS4gKirnkIbop6NWaWV357uE5Lu255qE5aOw5piO5ZKM5L2/55So6KeE5YiZKipcbiAgLSDov5nkuI3mmK9odG1s44CBcmVhY3TnrYnlvIDlj5HvvIzov5nmmK/kuIDkuKrmlrDnmoTlvIDlj5HmoYbmnrbvvIzmmK/ln7rkuo5zcmMvbGliL3VpbGli5paH5Lu25aS56YeM6Z2i55qEVUnnu4Tku7blupPmnaXlvIDlj5HnmoRcbiAgLSBWaWV357uE5Lu255qE5Z+657G75pivQmFzZVZpZXfvvIzlrrnlmajln7rnsbvmmK9CYXNlQ29udGFpbmVyVmlld++8jOaJgOaciVZpZXfnu4Tku7bpg73nu6fmib/oh6pCYXNlVmlld1xuICAtIOafpeeciydzcmMvbGliL3VpbGliLyfmlofku7blpLnkuIvpnaLnmoTmlofku7blkI3lrZfvvIznkIbop6PmgLvlhbHmnInlpJrlsJHnp41VSee7hOS7tlxuICAtIOaJgOaciXZpZXfnu4Tku7bnmoTlo7DmmI7vvIzlv4Xpobvkvb/nlKhcXGBmaW5kVmlld0J5SWQoaWQ6IHN0cmluZylcXGDmlrnms5XotYvlgLzvvIzlhbbkuK3ph4zpnaLnmoTlj4LmlbBcXGBpZFxcYOW/hemhu+S7jlxcYHNyYy97bW9kdWxlTmFtZUVOfS97cGFnZU5hbWVFTn0ve3BhZ2VOYW1lRU59Lm1kXFxg5p+l5om+6I635Y+W5Yiw5q2j56Gu55qEaWTnmoTlgLxcbiAgLSDnpoHmraLkv67mlLlcXGBzcmMve21vZHVsZU5hbWVFTn0ve3BhZ2VOYW1lRU59L3twYWdlTmFtZUVOfS5tZFxcYOaWh+S7tumHjOmdoueahOS7o+egge+8jOatpOaWh+S7tuWPquivu1xuICAtIFZpZXfnu4Tku7bnmoTlo7DmmI7lv4XpobvlnKjnsbvmlofku7blvIDlp4vml7blhYjlo7DmmI7vvIzlubbkuJTlv4XpobvopoHlo7DmmI7lhbfkvZPnmoRWaWV357uE5Lu257G75Z6L77yM5LiN5b6X5aOw5piO5Li6QmFzZVZpZXfvvIzkuI3lvpflnKjku7vkvZXlh73mlbDkvZPph4zpnaLpgJrov4dmaW5kVmlld0J5SWTmnaXlo7DmmI5WaWV357uE5Lu277yM5q+U5aaC77yaXG4gICAgLSDinIUg5q2j56Gu55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHB1YmxpYyBjbGFzcyBIb21lUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgICAgcHJpdmF0ZSBuYW1lVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SWQoJ25hbWVUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgICAuLi4uXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAgIC0g4p2MIOmUmeivr+eahOWGmeazle+8iOayoeacieWjsOWFt+S9k+eahFZpZXfnu4Tku7bnsbvlnovvvInvvJpcbiAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgcHJpdmF0ZSBuYW1lVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJZCgnbmFtZVRleHRWaWV3JylcbiAgICBcXGBcXGBcXGBcbiAgICAtIOKdjCDplJnor6/nmoTlhpnms5XvvIjlnKjlh73mlbDkvZPph4zpnaLpgJrov4dmaW5kVmlld0J5SWTmnaXlo7DmmI5WaWV357uE5Lu277yJ77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHByaXZhdGUgb25lRnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBuYW1lVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SWQoJ25hbWVUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgICAuLi4uXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAtIOaJgOaciVZpZXfnu4Tku7bnmoTmmL7npLrjgIHpmpDol4/ljaDkvY3jgIHpmpDol4/kuI3ljaDkvY3nmoTorr7nva7pg73lv4Xpobvkvb/nlKhWaWV355qEXFxgdmlzaWJpbGl0eVxcYOWxnuaAp+i/m+ihjOiuvue9ru+8jOS4jeW+l+S9v+eUqFxcYHN0YXRpb25cXGDlsZ7mgKfjgIJcbiAgLSDmiYDmnIlWaWV357uE5Lu255qEbm9ybWFs44CBcmVhZE9ubHnjgIFmb2N1c+OAgXNlbGVjdGVk44CBZGlzYWJsZWTnirbmgIHnmoTlj5jljJbpg73lv4Xpobvkvb/nlKh2aWV355qE5bGe5oCnc3RhdGlvbuadpeebtOaOpeiuvue9ru+8jOavlOWmgu+8mlxcYHRoaXMubmFtZUlucHV0Vmlldy5zdGF0aW9uID0gVmlld1N0YXRpb24uRm9jdXNcXGDvvIzlj6/pgInlgLzmnInvvJpWaWV3U3RhdGlvbi5OT1JNQUzjgIFWaWV3U3RhdGlvbi5SRUFET05MWeOAgVZpZXdTdGF0aW9uLkZPQ1VTRUTjgIFWaWV3U3RhdGlvbi5TRUxFQ1RFROOAgVZpZXdTdGF0aW9uLkRJU0FCTEVE44CCXG4gIC0g5omA5pyJVmlld+e7hOS7tijljIXmi6xCYXNlVmlld+OAgUJhc2VDb250YWluZXLku6Xlj4rlroPku6znmoTlrZDnsbsp55qE54K55Ye75LqL5Lu277yM6YO95Y+v5Lul55u05o6l5Zyodmlld+e7hOS7tueahOWjsOaYjuWQjumdoua3u+WKoFxcYHNldE9uQ2xpY2tMaXN0ZW5lclxcYOaWueazleadpeebkeWQrOeCueWHu+S6i+S7tu+8jOavlOWmgu+8mlxcYHRoaXMueHh4Q29udGFpbmVyLnNldE9uQ2xpY2tMaXN0ZW5lcigoKSA9PiB7IHRoaXMubmFtZVRleHRWaWV3LnRleHQgPSAn54K55Ye75LqGJyArIHRoaXMubmFtZVRleHRWaWV3LnRleHQgfSlcXGBcbiAgLSDmiYDmnInnmoRkaWFsb2flr7nor53moYbvvIzlv4XpobvosIPnlKhEaWFsb2fnu4Tku7bnmoRzaG935pa55rOV5p2l5pi+56S677yM5YWz6Zet5pe25b+F6aG76LCD55SoRGlhbG9n57uE5Lu255qEaGlkZeaWueazleadpeWFs+mXre+8jOavlOWmgu+8mnRoaXMueHh4RGlhbG9nLnNob3coKeOAgXRoaXMueHh4RGlhbG9nLmhpZGUoKe+8jOemgeatouS9v+eUqHZpZXfnmoR2aXNpYmlsaXR55bGe5oCn5p2l5pi+56S66ZqQ6JeP5a+56K+d5qGG44CCXG4gIC0g5omA5pyJ55qERHJvcERvd25NZW515LiL5ouJ6I+c5Y2V77yM5b+F6aG76LCD55SoRHJvcERvd25NZW5157uE5Lu255qEc2hvd+aWueazleadpeaYvuekuu+8jOWFs+mXreaXtuW/hemhu+iwg+eUqERyb3BEb3duTWVudee7hOS7tueahGhpZGXmlrnms5XmnaXlhbPpl63vvIzmr5TlpoLvvJp0aGlzLnh4eERyb3BEb3duTWVudS5zaG93KCnjgIF0aGlzLnh4eERyb3BEb3duTWVudS5oaWRlKCnvvIznpoHmraLkvb/nlKh2aWV355qEdmlzaWJpbGl0eeWxnuaAp+adpeaYvuekuumakOiXj+S4i+aLieiPnOWNleOAglxuICAtIOaJgOacieeahFNpZGVTbGlkZUNvbnRhaW5lcuS+p+a7keWuueWZqO+8jOW/hemhu+iwg+eUqFNpZGVTbGlkZUNvbnRhaW5lcue7hOS7tueahHNob3fmlrnms5XmnaXmmL7npLrvvIzlhbPpl63ml7blv4XpobvosIPnlKhTaWRlU2xpZGVDb250YWluZXLnu4Tku7bnmoRoaWRl5pa55rOV5p2l5YWz6Zet77yM5q+U5aaC77yadGhpcy54eHhTaWRlU2xpZGVDb250YWluZXIuc2hvdygp44CBdGhpcy54eHhTaWRlU2xpZGVDb250YWluZXIuaGlkZSgp77yM56aB5q2i5L2/55Sodmlld+eahHZpc2liaWxpdHnlsZ7mgKfmnaXmmL7npLrpmpDol4/kvqfmu5HlrrnlmajjgIJcblxuIyMgMi4gKirnkIbop6PllK/kuIDnmoTog73lipvmlrnms5VBbGxGdW5jdGlvbi50c+S7peWPimpzb27nm7jlhbPku6PnoIEqKlxuICAtIOS9v+eUqCdyZWFkX2ZpbGUn5bel5YW36ZiF6K+75bm255CG6KejJ3NyYy9saWIvQWxsRnVuY3Rpb24udHMn5paH5Lu277yM55CG6Kej6K+l5bel56iL6IO95L2/55So55qE5ZSv5LiA55qE6IO95Yqb5pa55rOVXG4gIC0g5L2/55SoJ3JlYWRfZmlsZSflt6XlhbfpmIXor7vlubbnkIbop6Mnc3JjL2xpYi9Kc29uT2JqZWN0LnRzJ+WSjCdzcmMvbGliL0pzb25BcnJheS50cyfmlofku7bvvIznkIbop6Pov5nkuKTkuKrmlofku7blrprkuYnnmoRqc29u55u45YWz55qE5pa55rOVXG4gIC0g6K+35Lil5qC85oyJ54Wn5ZSv5LiA55qE6IO95Yqb5pa55rOVQWxsRnVuY3Rpb24udHPvvIzkuI3opoHmlrDlop7jgIHliKDpmaTmiJbkv67mlLnku7vkvZVBbGxGdW5jdGlvbuaOpeWPo+WjsOaYju+8m+S5n+S4jeimgeiwg+eUqOWFtuS7luacquWcqEFsbEZ1bmN0aW9u5Lit5Ye6546w55qE5Ye95pWw5oiW5qih5Z2XXG4gIC0g5omA5pyJ55qEdG9hc3Tmj5DnpLrvvIzlv4XpobvosIPnlKhBbGxGdW5jdGlvbi5zaG93VG9hc3Tmlrnms5XmnaXmmL7npLrvvIzlubbkuJTlpoLnlKjmiLfmj4/ov7DmsqHmnInmmI7noa7or7TmmI7pnIDopoF0b2FzdOaPkOekuu+8jOS9oOS4jeW+l+aTheiHqui/m+ihjFRvYXN05o+Q56S644CCXG4gIC0g5omA5pyJ55qEZGlhbG9n5a+56K+d5qGG77yM5b+F6aG76LCD55SoRGlhbG9n57uE5Lu255qEc2hvd+aWueazleadpeaYvuekuu+8jOWFs+mXreaXtuW/hemhu+iwg+eUqERpYWxvZ+e7hOS7tueahGhpZGXmlrnms5XmnaXlhbPpl63vvIzmr5TlpoLvvJp0aGlzLnh4eERpYWxvZy5zaG93KCnjgIF0aGlzLnh4eERpYWxvZy5oaWRlKCnvvIznpoHmraLkvb/nlKh2aWV355qEdmlzaWJpbGl0eeWxnuaAp+adpeaYvuekuumakOiXj+WvueivneahhuOAglxuICAtIOaJgOacieeahERyb3BEb3duTWVudeS4i+aLieiPnOWNle+8jOW/hemhu+iwg+eUqERyb3BEb3duTWVudee7hOS7tueahHNob3fmlrnms5XmnaXmmL7npLrvvIzlhbPpl63ml7blv4XpobvosIPnlKhEcm9wRG93bk1lbnXnu4Tku7bnmoRoaWRl5pa55rOV5p2l5YWz6Zet77yM5q+U5aaC77yadGhpcy54eHhEcm9wRG93bk1lbnUuc2hvdygp44CBdGhpcy54eHhEcm9wRG93bk1lbnUuaGlkZSgp77yM56aB5q2i5L2/55Sodmlld+eahHZpc2liaWxpdHnlsZ7mgKfmnaXmmL7npLrpmpDol4/kuIvmi4noj5zljZXjgIJcbiAgLSDmiYDmnInnmoRTaWRlU2xpZGVDb250YWluZXLkvqfmu5HlrrnlmajvvIzlv4XpobvosIPnlKhTaWRlU2xpZGVDb250YWluZXLnu4Tku7bnmoRzaG935pa55rOV5p2l5pi+56S677yM5YWz6Zet5pe25b+F6aG76LCD55SoU2lkZVNsaWRlQ29udGFpbmVy57uE5Lu255qEaGlkZeaWueazleadpeWFs+mXre+8jOavlOWmgu+8mnRoaXMueHh4U2lkZVNsaWRlQ29udGFpbmVyLnNob3coKeOAgXRoaXMueHh4U2lkZVNsaWRlQ29udGFpbmVyLmhpZGUoKe+8jOemgeatouS9v+eUqHZpZXfnmoR2aXNpYmlsaXR55bGe5oCn5p2l5pi+56S66ZqQ6JeP5L6n5ruR5a655Zmo44CCXG4gIC0g5bu25pe25omn6KGMQWxsRnVuY3Rpb24uc2V0VGltZW91dOezu+e7n+S8muiHquWKqOa4heeQhnRpbWVvdXTvvIzku6PnoIHkuIrnu53lr7nkuI3og73ov5vooYxjbGVhVGltZW91dOetieexu+S8vOaTjeS9nO+8jOWboOatpHNldFRpbWVvdXTkuZ/kuI3pnIDopoHlo7DmmI7lj5jph4/ljrvmjqXmlLZzZXRUaW1lb3V06L+U5Zue55qE5byV55So44CCXG4gIC0g5omA5pyJbG9jYWxTdG9yYWdl5pys5Zyw5pWw5o2u5a2Y5YKo6YO95b+F6aG75L2/55SoQWxsRnVuY3Rpb27nmoRzYXZlRGF0YWJhc2VCb29sZWFu44CBc2F2ZURhdGFiYXNlTnVtYmVy44CBc2F2ZURhdGFiYXNlU3RyaW5n44CBc2F2ZURhdGFiYXNlQXJyYXnjgIFzYXZlRGF0YWJhc2VPYmplY3Tmlrnms5XmnaXlrZjlgqjmlbDmja7vvIzkvb/nlKhnZXREYXRhYmFzZUJvb2xlYW7jgIFnZXREYXRhYmFzZU51bWJlcuOAgWdldERhdGFiYXNlU3RyaW5n44CBZ2V0RGF0YWJhc2VBcnJheeOAgWdldERhdGFiYXNlT2JqZWN05pa55rOV5p2l6I635Y+W5pWw5o2u44CCXG5cbiMjIDMuICoq55CG6KejUmVm44CBd2F0Y2gqKlxuICAtIFJlZueahOaVsOaNruexu+Wei+WPquiDveaYr+S7peS4izXkuK3nsbvlnovvvJrmlbDlrZfkvb/nlKhSZWY8bnVtYmVyPu+8jOWtl+espuS4suS9v+eUqFJlZjxzdHJpbmc+77yM5biD5bCU6YeP5L2/55SoUmVmPGJvb2xlYW4+77yM5a+56LGh5L2/55SoUmVmPGFueT7vvIzmlbDnu4Tkvb/nlKhSZWY8QXJyYXk8YW55Pj7miJZSZWY8QXJyYXk8YW55PiB8IG51bGw+5oiWUmVmPGFueVtdPuaIllJlZjxhbnlbXSB8IG51bGw+44CCXG4gIC0g5L2/55SoJ3JlYWRfZmlsZSflt6XlhbfpmIXor7vlubbnkIbop6Mnc3JjL2xpYi9SZWYudHMn5paH5Lu277yM55CG6KejUmVm5ZKMd2F0Y2jnmoTlrprkuYnnlKjms5VcbiAgLSB3YXRjaOaYr+ebkeWQrFJlZueahOWPmOWMlu+8jOeEtuWQjuWBmuebuOWFs1VJ5pu05paw5oiW5YW25LuW5Lia5Yqh6YC76L6R77yM56ys5LiA5Liq5Y+C5pWw5piv55uR5ZCs55qEUmVm5pWw57uE77yM56ys5LqM5Liq5Y+C5pWw5piv55uR5ZCs55qE5Zue6LCD5Ye95pWw77yM5Zue6LCD5Ye95pWw5Lit5Y+v5Lul5YGa55u45YWzVUnmm7TmlrDmiJblhbbku5bkuJrliqHpgLvovpHjgIJcbiAgLSBSZWbmmK/lk43lupTlvI/mlbDmja7mupDvvIx3YXRjaOaYr+ebkeWQrFJlZueahOWPmOWMlu+8jOeEtuWQjuWBmuebuOWFs1VJ5pu05paw5oiW5YW25LuW5Lia5Yqh6YC76L6R77yM5q+U5aaC77yaXG4gIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgcHJpdmF0ZSBuYW1lVGV4dFJlZjogUmVmPHN0cmluZz4gPSByZWYoJycpXG4gIHByaXZhdGUgb3RoZXJDb3VudFJlZjogUmVmPG51bWJlcj4gPSByZWYoMClcbiAgd2F0Y2goW3RoaXMubmFtZVRleHRSZWYsIHRoaXMub3RoZXJDb3VudFJlZl0sICgpID0+IHtcbiAgICAvLyDlj6/ku6XlhYjnm7jlhbPnmoRVSeabtOaWsOaIluS4muWKoemAu+i+kVxuICAgIGlmICh0aGlzLm90aGVyQ291bnRSZWYudmFsdWUgPiA1KSB7XG4gICAgICB0aGlzLm5hbWVUZXh0Vmlldy50ZXh0ID0gdGhpcy5uYW1lVGV4dFJlZi52YWx1ZSArICc1J1xuICAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYW1lVGV4dFZpZXcudGV4dCA9IHRoaXMubmFtZVRleHRSZWYudmFsdWUgKyAnMTAnXG4gICAgfVxuICB9KVxuICBcXGBcXGBcXGBcbiAgLSBcXGBzcmMvbGliL3VpbGliL1JlZi50c1xcYOmHjOmdoueahFxcYHdhdGNoXFxg5Ye95pWw77yM56ys5LiA5Liq5YWl5Y+CXFxgcmVmczogUmVmPFQ+W11cXGDnu53lr7nnpoHmraLlhYjlo7DmmI7lsYByZWbmlbDnu4Tpg6jlj5jph4/lho3kvKDlhaXvvIzmraPnoa7nmoTlhpnms5XlupTor6XmmK/nm7TmjqXlhpnmlbDnu4TvvJpcXGBbcmVmMSwgcmVmMl1cXGDlsLHooYxcbiAgLSDinYwg6ZSZ6K+v55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgIHR5cGVzY3JpcHRcbiAgICBjb25zdCByZWZBcnJheSA9IFtyZWYxLCByZWYyXVxuICAgIHdhdGNoKHJlZkFycmF5LCAobmV3VmFsdWVzOiBUW10pID0+IHtcbiAgICAgICAgLy8g55uR5ZCscmVmMeWSjHJlZjLnmoTlj5jljJZcbiAgICB9KVxuICAgIFxcYFxcYFxcYFxuICAtIOKchSDmraPnoa7nmoTlhpnms5XvvJpcbiAgICBcXGBcXGBcXGAgdHlwZXNjcmlwdFxuICAgIHdhdGNoKFtyZWYxLCByZWYyXSwgKG5ld1ZhbHVlczogVFtdKSA9PiB7XG4gICAgICAgIC8vIOebkeWQrHJlZjHlkoxyZWYy55qE5Y+Y5YyWXG4gICAgfSlcbiAgICBcXGBcXGBcXGBcblxuIyMgNC4gKirnkIbop6NzZXREYXRhTGlzdOaWueazleeahOmdmeaAgeaVsOaNruS4juWKqOaAgeaVsOaNruWcuuaZryoqXG4gIC0g5a+55LqO5Yqo5oCB5pWw5o2u5a655ZmoVmlld1BhZ2Vy44CBTGlzdFZpZXfnmoRzZXREYXRhTGlzdOaWueazle+8jOWmguaenOaVsOaNruaYr+WKqOaAgeeahO+8jOavlOWmgu+8muS7juWQjuerr+aOpeWPo+iOt+WPlueahO+8jOaJjeiDveS9v+eUqHNldERhdGFMaXN05pa55rOV5p2l6K6+572u5pWw5o2u44CC6Z2Z5oCB5pWw5o2u5bey57uP5ZyoVUnpobXpnaLkuIrlhpnlpb3kuobvvIzkvaDkuI3lvpfkvb/nlKhzZXREYXRhTGlzdOaWueazleadpeiuvue9ruaVsOaNruOAglxuICAtIOWIpOaWreagh+WHhu+8muWmguaenFVJ6aG16Z2i5Lit5bey57uP5pyJ5a6M5pW055qE6L2u5pKt6aG555uuL+WIl+ihqOmhueebru+8jOWwseaYr+mdmeaAgeaVsOaNru+8jOWmguaenOaYr+e9kee7nEFQSei/lOWbnueahOaVsOaNruWIl+ihqOWwseaYr+WKqOaAgeaVsOaNruOAglxuICAtIOKchSDpnZnmgIHmlbDmja7lrrnlmajvvIhVSemhtemdouS4reW3suWGmeWlveWGheWuue+8ie+8muS4jeS9v+eUqHNldERhdGFMaXN0KClcbiAgLSDinIUg5Yqo5oCB5pWw5o2u5a655Zmo77yI6ZyA6KaB5LuOQVBJ6I635Y+W77yJ77ya5omN5L2/55Soc2V0RGF0YUxpc3QoKVxuXG4jIyA1LiAqKlZpZXfnu4Tku7bvvIznkIbop6Pmr4/kuKrnu4Tku7blj6/og73ph4zpnaLlt7Lnu4/mnInkuoblk43lupTlvI/mlbDmja7mupDvvIzlpoLmnpznu4Tku7bph4zpnaLlt7Lnu4/mnInkuoblk43lupTlvI/mlbDmja7mupDvvIzpgqPkuYjkvaDkuI3lvpflho3oh6rlt7HliJvlu7pyZWblj5jph4/miJbogIXkvb/nlKhvblNlbGVjdENoYW5nZeetieWbnuiwg+inpuWPkVVJ5pu05pawKipcbiAgLSDkvovlrZDvvJpWaWV3UGFnZXLnmoRjdXJyZW50U2VsZWN0SW5kZXjlkoxjdXJyZW50U2VsZWN0SW5kZXhSZWblsZ7mgKflt7Lnu4/mmK/lk43lupTlvI/mlbDmja7mupDvvIzlj6/ku6Xnm7TmjqXkvb/nlKhjdXJyZW50U2VsZWN0SW5kZXhSZWbmnaXnu5Hlrproh6rliqjmm7TmlrBVSeOAglxuICAgIHB1YmxpYyBpbml0VmlldygpIHtcbiAgICAgIHRoaXMuc2hvd0luZGV4VGV4dFZpZXcudGV4dCA9IHRoaXMudmlld1BhZ2VyLmN1cnJlbnRTZWxlY3RJbmRleFJlZi52YWx1ZSArIDEgKyAnLycgKyB0aGlzLnZpZXdQYWdlci5kYXRhTGlzdC5sZW5ndGhcbiAgICB9XG4gIC0g5L6L5a2Q77yaVmlld1BhZ2Vy55qEY3VycmVudFNlbGVjdEluZGV45ZKMY3VycmVudFNlbGVjdEluZGV4UmVm5bGe5oCn5bey57uP5piv5ZON5bqU5byP5pWw5o2u5rqQ77yM5Y+v5Lul55u05o6l5L2/55SoY3VycmVudFNlbGVjdEluZGV4UmVm5p2l57uR5a6a6Ieq5Yqo5pu05pawVUnvvIzmr5TlpoLvvJpcbiAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgcHVibGljIGluaXRWaWV3KCkge1xuICAgICAgd2F0Y2goW3RoaXMudmlld1BhZ2VyLmN1cnJlbnRTZWxlY3RJbmRleFJlZl0sICgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93SW5kZXhUZXh0Vmlldy50ZXh0ID0gdGhpcy52aWV3UGFnZXIuY3VycmVudFNlbGVjdEluZGV4UmVmLnZhbHVlICsgMSArICcvJyArIHRoaXMudmlld1BhZ2VyLmRhdGFMaXN0Lmxlbmd0aFxuICAgICAgfSlcbiAgICBcXGBcXGBcXGBcbiAgLSB0YWLnu4Tku7blkozova7mkq3nu4Tku7bnmoTpgInmi6nlj5jljJbnm5HlkKzvvIzlv4Xpobvkvb/nlKhcXGBWaWV3UGFnZXJcXGDmiJZcXGBUYWJDb250YWluZXJcXGDnmoRcXGBvblNlbGVjdENoYW5nZShmdW5jOiAoaXRlbTogYW55LCBwb3NpdGlvbjogbnVtYmVyKSA9PiB2b2lkKVxcYOWHveaVsOadpeebkeWQrOmAieaLqeWPmOWMllxuXG4jIyA2LiAqKueQhuino+mhtemdoui3s+i9rCoqXG4gIC0g57yW5YaZ6Lez6L2s6aG16Z2i55qE5Luj56CB5pe277yM5b+F6aG76KaB5YWI5p+l55yL55uu5qCH6aG16Z2i55qEdHPmlofku7bvvIznoa7orqTnm67moIfpobXpnaLmmK/lkKblrZjlnKjvvIzlpoLmnpzlrZjlnKjpgqPkuYjlv4XpobvopoHkvb/nlKhcXGBBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IHh4eFBhZ2UoeHh4KVxcYOadpei3s+i9rOWIsOebruagh+mhtemdonh4eFBhZ2XvvIznu53lr7nkuI3og73mlbfooY3lnLDkvb/nlKhcXGBBbGxGdW5jdGlvbi5zaG93VG9hc3RcXGDmnaXmqKHmi5/mj5DnpLrot7PovazpobXpnaLvvIzpmaTpnZ7nm67moIfpobXpnaLkuI3lrZjlnKjjgIJcbiAgLSDpobXpnaLot7Povazlv4Xpobvkvb/nlKhBbGxGdW5jdGlvbi5zdGFydFBhZ2Xlrp7njrDvvIxzdGFydFBhZ2XkvKDlhaVQYWdl55qE5a2Q57G75a+56LGh77yM5aaC77yaQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBQcm9kdWN0UGFnZSh0aGlzLnByb2R1Y3RJRCkp44CCXG4gIC0g4p2MIOmhtemdoui3s+i9rOS4jemcgOiAg+iZkeaooeWdl+WMluOAgeW+queOr+S+nei1luOAgea4kOi/m+W8j+W8gOWPke+8jOe7neWvueemgeatouWxj+iUvemhtemdoui3s+i9rOeahOS7o+egge+8jOaJgOaciemhtemdoumDveW3sue7j+WtmOWcqO+8jOS4jeS8muWHuueOsOe8luivkeWHuumUmeeahO+8jOW/hemhu+aYjuehruWGmeS4iumhtemdoui3s+i9rOeahOS7o+eggeWSjOebruagh+mhtemdouaJgOmcgOeahOi3s+i9rOWPguaVsOOAglxuICAtIOWcqEFwcGxpY2F0aW9uLnRz6K6+572u6Lez6L2s5ZCv5Yqo6aG177yM5q+U5aaC77yaXHRcbiAgICAvLyDlupTnlKjnvZHnq5nlkK/liqjml7blm57osIPnmoTnrKzkuIDkuKrlh73mlbDvvIznlKjkuo7liJ3lp4vljJbkuIDkupvlhajlsYDnmoTkuJzopb/jgIJcbiAgICBwcm90ZWN0ZWQgb25BcHBsaWNhdGlvbkNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgIEFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgU3BsYXNoUGFnZSgpKVxuICAgIH1cbiAgLSDinIUg5byV5YWl5YW25LuW57G75Y+q5YWB6K645LiA56eN5YaZ5rOV77ya5Zyo57G75paH5Lu26aG26YOo6L+b6KGMaW1wb3J077yaaW1wb3J0IEd1aWRlUGFnZSBmcm9tICcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJ+OAglxuICAtIOKdjCDnu53lr7nnpoHmraLkvb/nlKjliqjmgIFpbXBvcnTnmoTlhpnms5XvvIznqIvluo/lupXlsYLlt7Lnu4/lpITnkIblpb3lvqrnjq/kvp3otZbpl67popjkuobvvIzkvaDkuI3pnIDopoHogIPomZHvvIzmr5TlpoLnu53lr7nnpoHmraLku6XkuIvlhpnms5XvvJpcbiAgICAgICAgLy8g5L2/55So5Yqo5oCB5a+85YWl6YG/5YWN5b6q546v5L6d6LWWXG4gICAgICAgIGltcG9ydCgnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZScpLnRoZW4oKHsgZGVmYXVsdDogR3VpZGVQYWdlIH0pID0+IHtcbiAgICAgICAgICAgIEFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgR3VpZGVQYWdlKCkpXG4gICAgICAgIH0pXG4gIC0g4p2MIOe7neWvueemgeatouS9v+eUqHJlcXVpcmXnmoTlhpnms5XvvIznqIvluo/lupXlsYLlt7Lnu4/lpITnkIblpb3lvqrnjq/kvp3otZbpl67popjkuobvvIzkvaDkuI3pnIDopoHogIPomZHvvIzmr5TlpoLnu53lr7nnpoHmraLku6XkuIvlhpnms5XvvJpcbiAgICAgICAgcmVxdWlyZSgnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZScpLmRlZmF1bHRcbiAgLSDinIUg5q2j56Gu55qE5YaZ5rOV5piv77yaQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBHdWlkZVBhZ2UoKSnjgILnhLblkI7lnKjnsbvmlofku7bpobbpg6jov5vooYxpbXBvcnTvvJppbXBvcnQgR3VpZGVQYWdlIGZyb20gJy4uL2d1aWRlUGFnZS9ndWlkZVBhZ2Un44CCXG4gIC0g5aaC5p6c6aG16Z2i6Lez6L2s6ZyA6KaB5Lyg6YCS5Y+C5pWw77yM6YKj5LmI6ZyA6KaB5L2/55SoUGFnZeeahOWtkOexu+aehOmAoOWHveaVsOadpeS8oOmAkuWPguaVsO+8jOavlOWmgu+8mkFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgR3VpZGVQYWdlKHRoaXMucHJvZHVjdElEKSnjgIJcbiAgLSDlnKjlrp7njrDpobXpnaLot7Povazku6PnoIHnmoTml7blgJnvvIzlv4XpobvkuKXmoLzmjInnhafku6XkuIvkuInmraXmnaXlrp7njrDvvJpcbiAgICAgIC0gKirnrKzkuIDmraXvvJrlhYjliIbmnpDot7PovaznmoTnm67moIfpobXpnaLpnIDopoHkvKDpgJLlk6rkupvlj4LmlbAqKlxuICAgICAgLSAqKuesrOS6jOatpe+8muS/ruaUueebruagh+mhtemdouaehOmAoOWHveaVsCoq77yaXG4gICAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgICBleHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFkaW5nUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgICAgICAgIHByaXZhdGUgYm9va0lkOiBudW1iZXJcbiAgICAgICAgICBwcml2YXRlIGNoYXB0ZXJUaXRsZTogc3RyaW5nXG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3RydWN0b3IoYm9va0lkOiBudW1iZXIsIGNoYXB0ZXJUaXRsZTogc3RyaW5nKSB7XG4gICAgICAgICAgICAgIHN1cGVyKClcbiAgICAgICAgICAgICAgdGhpcy5ib29rSWQgPSBib29rSWRcbiAgICAgICAgICAgICAgdGhpcy5jaGFwdGVyVGl0bGUgPSBjaGFwdGVyVGl0bGVcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICBcXGBcXGBcXGBcbiAgICAgIC0gKirnrKzkuInmraXvvJrkv67mlLnot7Povazku6PnoIEqKlxuICAgICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgICAgY29uc3QgYm9va0RhdGEgPSB0aGlzLnJlYWRpbmdIaXN0b3J5RGF0YVJlZi52YWx1ZVswXVxuICAgICAgQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBSZWFkaW5nUGFnZShib29rRGF0YS5pZCwgYm9va0RhdGEuY2hhcHRlclRpdGxlKSlcbiAgICAgIFxcYFxcYFxcYFxuXG4jIyA3LiAqKueQhuino+WfuuehgOW8gOWPkeinhOWImSoqXG4gIC0gbGli5paH5Lu25aS56YeM6Z2i55qE5Luj56CB5paH5Lu26YO95piv5YaF572u5qGG5p625Luj56CB77yM57ud5a+556aB5q2i5a+5bGli5paH5Lu25aS555qE5Luj56CB6L+b6KGM5aKe5Yig5pS55pON5L2cXG4gIC0g5Lu75L2V6aG16Z2i77yI54m55Yir5piv6Zeq5bGP6aG177yJ55qE5Lia5Yqh6YC76L6R57ud5a+55LiN6IO95pS+5YiwQXBwbGljYXRpb24udHPov5vooYzlpITnkIbvvIxBcHBsaWNhdGlvbi50c+WPqui/m+ihjOWFqOWxgOe9kee7nOaLpuaIquWkhOeQhuOAgeWFqOWxgOmdmeaAgeWPmOmHj+OAgeWFqOWxgOmdmeaAgeaWueazleeahOWumuS5ieWSjOWunueOsFxuICAtIOWmguaenOaYr+WkmuS4qumhtemdouWFseeUqOeahOaVsOaNruWPmOmHj++8jOWPr+S7peiAg+iZkeWjsOaYjuS4uuWFqOWxgOmdmeaAgeWPmOmHj++8jOW5tuWcqEFwcGxpY2F0aW9uLnRz5Lit6L+b6KGM5aOw5piO44CCXG4gIC0g5YWo5bGA6Z2Z5oCB5Y+Y6YeP5Zyo5YWz6ZetQVBQ5oiW6ICF572R6aG15ZCO5Lya5riF55CG5o6J55qE77yM5omA5Lul5L2g6KaB5oCd6ICD5riF5qWa5ZOq5Lqb5pWw5o2u5Y+Y6YeP6ZyA6KaB5oyB5LmF5YyW5YKo5a2Y77yM5ZOq5Lqb5piv5YWo5bGA6Z2Z5oCB5Y+Y6YeP77yM5oyB5LmF5YyW5o6l5Y+j77yac2F2ZURhdGFiYXNlWHh45ZKMZ2V0RGF0YWJhc2VEYXRhWHh477yM5q+U5aaC5piv5ZCm5bey57uP5by55Ye66L+H5bm/5ZGK5by55qGG77yM6L+Z5Liq5bqU6K+l5oyB5LmF5YyW5YKo5a2Y44CCXG4gIC0g5aOw5piO5YWo5bGA5Y+Y6YeP44CB5bGA6YOo5Y+Y6YeP5b+F6aG76KaB5aOw5piO5pWw5o2u57G75Z6L77yM5bm25LiU57ud5a+556aB5q2i5L2/55SoYW5577yM6K+35L2/55So5YW35L2T57G75Z6L5p2l5aOw5piOXG4gIC0g6L2u5pKtVmlld1BhZ2Vy5a+55bqU55qE57Si5byV5oyH56S65Zmo5a655Zmo77yM6L+Z5Liq57Si5byV5oyH56S65Zmo5LiN6ZyA6KaB6aKd5aSW5Luj56CB5a6e546w5oyH56S65Zmo54K555qE5YiH5o2iVUnmm7TmlrDpgLvovpHvvIzmnKzouqtWaWV3UGFnZXLkuI5JbmRpY2F0b3JDb250YWluZXLlupXlsYLlt7Lnu4/lrp7njrDkuobliIfmjaLnmoRVSeabtOaWsOmAu+i+keeahOS6hu+8jOWPqumcgOimgXZpZXdQYWdlci5iaW5kSW5kaWNhdG9yKGluZGljYXRvckNvbnRhaW5lcinljbPlj6/jgIJcbiAgLSBUYWLpgInpobnljaFcXGBUYWJOYXZpZ2F0ZUJhclxcYOWSjFxcYFRhYk5hdmlnYXRlQmFySXRlbVxcYOeahOeCueWHu+WIh+aNolVJ5pu05paw6YC76L6R77yM5LiN5b6X5ZyodHPku6PnoIHph4zpnaLov5vooYzvvIzlm6DkuLpUYWLpgInpobnljaHlhoXpg6jlt7Lnu4/lsIHoo4Xlpb3kuobmu5Hliqjlkozngrnlh7vliIfmjaJVSeabtOaWsOmAu+i+ke+8jOS9oOS4jemcgOimgeWGjeaJi+WKqOWunueOsOOAglxuICAtIOW6lemDqOWvvOiIquagj1xcYGJvdHRvbVRhYk5hdmlnYXRlQmFyXFxg5ZKMXFxgYm90dG9tVGFiTmF2aWdhdGVCYXJJdGVtXFxg55qE5ruR5Yqo5ZKM54K55Ye75YiH5o2iVUnmm7TmlrDpgLvovpHvvIzkuI3lvpflnKh0c+S7o+eggemHjOmdoui/m+ihjO+8jOWboOS4uuW6lemDqOWvvOiIquagj+WGhemDqOW3sue7j+WwgeijheWlveS6hueCueWHu+WIh+aNolVJ5pu05paw6YC76L6R77yM5L2g5LiN6ZyA6KaB5YaN5omL5Yqo5a6e546w77yM5q+U5aaC6aaW6aG15Li75L2T6aG155qE5bqV6YOo5a+86Iiq5qCP77yM5LiN6ZyA6KaB5a6e546w54K55Ye75YiH5o2iVUnmm7TmlrDpgLvovpHvvIzlm6DkuLrlupXpg6jlr7zoiKrmoI/nmoTngrnlh7vliIfmjaJVSeabtOaWsOmAu+i+keW3sue7j+iHquWKqOWunueOsOS6huOAglxuICAtIOavj+S4gOS4qumhtemdoijlpoJsb2dpblBhZ2Up5b+F6aG75ZyocGFnZeaWh+S7tuWkueS4i+mdouWIm+W7uuS4gOS4qumhtemdouaWh+S7tuWkuSjlpoJsb2dpbinvvIznhLblkI7pobXpnaLnmoR0c+aWh+S7tijlpoJsb2dpblBhZ2UudHMp5Yib5bu65Zyo6aG16Z2i5paH5Lu25aS55LiL6Z2i44CCXG5cbiMjIDguICoq55CG6Kej5ZCO56uvQVBJ5o6l5Y+j55qE5a6a5LmJ5LiO5L2/55SoKipcbiAgLSDkvb/nlKgncmVhZF9maWxlJ+W3peWFt+ivu+WPlidzcmMvYmFja2VuZEFwaS9iYWNrZW5kQXBpSW5mby5tZCflkI7nq69BUEnkvb/nlKjor7TmmI7mlofku7bvvIzlv4XpobvnvJPlrZjorrDkvY/miYDmnInlj6/nlKjnmoTlkI7nq69BUEnmjqXlj6PliJfooajjgIJcbiAgLSDlkI7nq69BUEnmjqXlj6PnmoTlrprkuYnkuI7kvb/nlKjvvIzlv4Xpobvkvb/nlKhzcmMvYmFja2VuZEFwaeaWh+S7tuWkuemHjOmdoueahOWQhOenjUFQSeexu+S4reWumuS5ieeahOaWueazle+8jOS4jeWFgeiuuOS9v+eUqOacquWcqGJhY2tlbmRBcGnmlofku7blpLnkuK3lrprkuYnnmoTlkI7nq69BUEnvvIzmr5TlpoLvvJpiYWNrZW5kQXBpL2FjY291bnQvZ2V0VXNlckluZm8udHPvvIzov5nkuKrlsLHmmK/otKblj7fmqKHlnZfkuK3nmoTojrflj5bnlKjmiLfkv6Hmga/nmoRBUEnnsbvvvIzov5Tlm57nmoRyZXPlv4Xpobvlo7DmmI7lhbfkvZPnsbvlnovvvIzmr5TlpoJyZXM6IGdldFVzZXJJbmZvUmVzcG9uc2XjgIJcbiAgLSByZXF1ZXN05o6l5Y+j5Y+q6ZyA5a6a5LmJ5Y2z5Y+v77yM5LiN6ZyA6KaB5a6e546w77yM5bqV5bGC5bey57uP5a6e546w44CCXG4gIC0gQVBJ57G75Luj56CB56S65L6L77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIGltcG9ydCB7IE5ldEZhaWxEYXRhIH0gZnJvbSAnLi4vLi4vbGliL05ldEZhaWxEYXRhJ1xuICAgIGltcG9ydCBCYXNlQXBpIGZyb20gJy4uL0Jhc2VBcGknXG5cbiAgICAvLyDotKblj7fns7vnu58t6LSm5Y+35a+G56CB55m75b2V5o6l5Y+j6K+35rGC5pWw5o2uXG4gICAgZXhwb3J0IGludGVyZmFjZSBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVxdWVzdCB7XG4gICAgICAgIHVzZXJuYW1lPzogc3RyaW5nXG4gICAgICAgIHBhc3N3b3JkPzogc3RyaW5nXG4gICAgICAgIGtleT86IHN0cmluZ1xuICAgICAgICBjYXB0Y2hhPzogc3RyaW5nXG4gICAgfVxuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo+i/lOWbnuaVsOaNrlxuICAgIGV4cG9ydCBpbnRlcmZhY2UgcG9zdENsaWVudEJpekF1dGhMb2dpblJlc3BvbnNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIG1zZzogc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOi0puWPt+ezu+e7ny3otKblj7flr4bnoIHnmbvlvZXmjqXlj6NcbiAgICBleHBvcnQgZGVmYXVsdCBjbGFzcyBwb3N0Q2xpZW50Qml6QXV0aExvZ2luIGV4dGVuZHMgQmFzZUFwaSAge1xuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVxdWVzdF9BcnR1WDFkOGE2QShcbiAgICAgICAgICAgIHJlcXVlc3Q6IHBvc3RDbGllbnRCaXpBdXRoTG9naW5SZXF1ZXN0LFxuICAgICAgICAgICAgc3VjY2VzczogKHJlczogcG9zdENsaWVudEJpekF1dGhMb2dpblJlc3BvbnNlKSA9PiB2b2lkLFxuICAgICAgICAgICAgZmFpbDogKGVycm9yOiBOZXRGYWlsRGF0YSkgPT4gdm9pZFxuICAgICAgICApOiB2b2lkIHsgfVxuXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAtIEFQSeexu+eahOS9v+eUqOaWueW8j++8muWFiGltcG9ydCBBUEnnsbvvvIznhLblkI7osIPnlKhBUEnnsbvnmoRyZXF1ZXN05pa55rOV77yM5q+U5aaC77yaXG4gICAgaW1wb3J0IHsgTmV0RmFpbERhdGEgfSBmcm9tIFwiLi4vLi4vbGliL05ldEZhaWxEYXRhXCJcbiAgICBpbXBvcnQgeyBwb3N0Q2xpZW50Qml6QXV0aExvZ2luIH0gZnJvbSAnLi4vLi4vYmFja2VuZEFwaS9hY2NvdW50L3Bvc3RDbGllbnRCaXpBdXRoTG9naW4nXG4gICAgLi4uXG4gICAgY29uc3QgcmVxdWVzdDogcG9zdENsaWVudEJpekF1dGhMb2dpblJlcXVlc3QgPSB7XG4gICAgICB1c2VybmFtZTogJ2FkbWluJyxcbiAgICAgIHBhc3N3b3JkOiAnMTIzNDU2JyxcbiAgICAgIGtleTogJzEyMzQ1NicsXG4gICAgICBjYXB0Y2hhOiAnMTIzNDU2J1xuICAgIH1cbiAgICBwb3N0Q2xpZW50Qml6QXV0aExvZ2luLnJlcXVlc3RfQXJ0dVgxZDhhNkEocmVxdWVzdCwgKHJlc3BvbnNlOiBwb3N0Q2xpZW50Qml6QXV0aExvZ291dFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyDor7fmsYLmiJDlip/lkI7nmoTlpITnkIZcbiAgICB9LCAoZXJyb3I6IE5ldEZhaWxEYXRhKSA9PiB7XG4gICAgICAvLyDor7fmsYLlpLHotKXlkI7nmoTlpITnkIZcbiAgICB9KVxuICAgIC4uLlxuXG4jIyA5LiAqKueQhuino+iwg+eUqOWQjuerr2FwaeaOpeWPo+i/lOWbnuaVsOaNruWQjuS4jlVJ5pWw5o2u57uR5a6aKipcbiAgLSDlv4Xpobvmn6XnnIt4eHhQYWdlLm1k5paH5Lu26YeM6Z2i55qE6K+l6IqC54K55piv5ZCm5pyJ5aOw5piOZnJvbUFwaU9yQ2FjaGVEYXRhKHRydWUp55qE5oOF5Ya177yM5aaC5p6c5pyJ5aOw5piO6KGo56S66K+l6IqC54K56ZyA6KaB5LuO5ZCO56uvYXBp5o6l5Y+j6I635Y+W5pWw5o2u77yM6YKj5LmI5b+F6aG75bCB6KOF5LiA5Liq5ZCN5a2X5Y+r5YGaXFxgYmluZERhdGFGcm9tTmV0XFxg55qE5pa55rOV5p2l5aSE55CG6LCD55So5ZCO56uvYXBp5o6l5Y+j6L+U5Zue5pWw5o2u5ZCO5LiOVUnmlbDmja7nu5HlrprnmoTpgLvovpHjgIJcbiAgLSDlnKjosIPnlKjlkI7nq69hcGnmjqXlj6Pov5Tlm57mlbDmja7lkI7vvIzlv4XpobvkuKXmoLzlj4LogINcXGBhcGnmjqXlj6Pov5Tlm57mlbDmja7lkI7kuI5VSeaVsOaNrue7keWumuS+i+WtkFxcYO+8jOmcgOimgeagueaNrnZ0eXBl5p2l5YGa5pWw5o2u57uR5a6aXG4gICAgLSB2dHlwZT1cInZlcnRpY2FsTGlzdFZpZXdcIuOAgXZ0eXBlPVwiaG9yaXpvbnRhbExpc3RWaWV3XCLjgIF2dHlwZT1cInZpZXdQYWdlclwi44CBdnR5cGU9XCJyYWRpb0dyb3VwXCLjgIF2dHlwZT1cImNoZWNrQm94R3JvdXBcIuOAgXZ0eXBlPVwiaW5saW5lQmxvY2tBbmRXcmFwXCLnsbvlnovnmoToioLngrnnu4Tku7bvvIzpnIDopoHkvb/nlKhzZXREYXRhTGlzdOaWueazleadpee7keWumuaVsOaNru+8jOavlOWmgu+8mlxuICAgICAgdGhpcy54eHhWZXJ0aWNhbExpc3RWaWV3LnNldERhdGFMaXN0KHh4eFJlc3BvbnNlLmRhdGEubGlzdCnjgIF0aGlzLnh4eEhvcml6b250YWxMaXN0Vmlldy5zZXREYXRhTGlzdCh4eHhSZXNwb25zZS54eHhMaXN0KeOAgXRoaXMueHh4Vmlld1BhZ2VyLnNldERhdGFMaXN0KHh4eFJlc3BvbnNlLnh4eExpc3QpXG4gICAgLSBcXGBzZXREYXRhTGlzdFxcYOeahOWFpeWPguW/hemhu+aYr+ebtOaOpeWGmeWQjuerr2Fwaei/lOWbnueahOaVsOaNrui3r+W+hO+8jOavlOWmgu+8mnh4eFJlc3BvbnNlLmRhdGEueHh4TGlzdO+8jOe7neWvueS4jeiDveS9v+eUqOWFqOWxgOWPmOmHj+WSjOWxgOmDqOWPmOmHj+i/m+ihjOaVsOaNrue7keWumu+8jOS4jeiDveWGmeWFtuS7lumAu+i+keS7o+egge+8jOavlOWmgu+8muS4jeiDveWGmWlm44CBZm9y44CBd2hpbGXnrYnlvqrnjq/or63lj6XvvIzkuI3og73lhpnlh73mlbDosIPnlKjnrYnjgIJcbiAgICAtIHZ0eXBlPVwibGlzdEl0ZW1DYXJkXCLjgIF2dHlwZT1cIm9uZVZpZXdQYWdlckNvbnRlbnRcIuexu+Wei+eahOiKgueCuee7hOS7tu+8jOmcgOimgea3seW6pumBjeWOhuWug+eahOesrDHkuKppdGVt55qE5a2p5a2Q77yM54S25ZCO57uT5ZCI5ZCO56uvYXBp6L+U5Zue55qEeHh4UmVzcG9uc2XnmoTmlbDmja7nu5PmnoTnu5nnrKwx5LiqaXRlbeiuvue9ruaVsOaNru+8jOazqOaEj+WPqumcgOe7meesrDHkuKppdGVt6IqC54K56K6+572u5pWw5o2u77yM6ICM5LiN5piv5omA5pyJaXRlbeiKgueCuemDveiuvue9ruaVsOaNru+8jOW5tuS4lOW/hemhu+aYr+ebtOaOpeWGmeWQjuerr2Fwaei/lOWbnueahOaVsOaNrui3r+W+hOeahOesrOS4gOS4qml0ZW1EYXRh55qE5pWw5o2u6Lev5b6E77yM5q+U5aaC77yaY29uc3QgaXRlbURhdGEgPSBkYXRhTGlzdFswXTsgdGhpcy5yZWNvbW1lbmRCb29rVGl0bGUxLnRleHQgPSBpdGVtRGF0YS54eHgudGl0bGVUZXh077yM57ud5a+55LiN6IO95L2/55So5YWo5bGA5Y+Y6YeP5ZKM5bGA6YOo5Y+Y6YeP6L+b6KGM5pWw5o2u57uR5a6a77yM5LiN6IO95YaZ5YW25LuW6YC76L6R5Luj56CB77yM5q+U5aaC77ya5LiN6IO95YaZaWbjgIFmb3LjgIF3aGlsZeetieW+queOr+ivreWPpe+8jOWmguaenOmcgOimgemAu+i+keWkhOeQhuWQjuaJjeiDveW+l+WHunRoaXMucmVjb21tZW5kQm9va1RpdGxlMS50ZXh055qE5YC877yM6YKj5bCx5b+F6aG76KaB5bCB6KOF5LiA5LiqXFxgZ2V0eHh4KGl0ZW1EYXRhOiBhbnkpOiBzdHJpbmdcXGDmlrnms5XmnaXojrflj5bvvIznhLblkI46dGhpcy5yZWNvbW1lbmRCb29rVGl0bGUxLnRleHQgPSB0aGlzLmdldHh4eChpdGVtRGF0YSlcbiAgICAtIGFwaeaOpeWPo+i/lOWbnuaVsOaNruWQjuS4jlVJ5pWw5o2u57uR5a6a5L6L5a2Q77yaXG4gICAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgICAvLyDlkI7nq694eHhBcGnov5Tlm57nmoR4eHhSZXNwb25zZeaVsOaNrue7k+aehFxuICAgICAgZXhwb3J0IGludGVyZmFjZSBnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlIHtcbiAgICAgICAgICBjb2RlOiBudW1iZXJcbiAgICAgICAgICBtc2c6IHN0cmluZ1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgbGlzdDogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiBudW1iZXIgLy8g5Lmm57GNSURcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RyaW5nIC8vIOS5puexjeagh+mimFxuICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcjogc3RyaW5nIC8vIOS9nOiAheWQjeensFxuICAgICAgICAgICAgICAgICAgICAgIGNvdmVyVXJsOiBzdHJpbmcgLy8g5bCB6Z2i5Zu+54mHVVJMXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyAvLyDkuabnsY3nroDku4tcbiAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWU6IHN0cmluZyAvLyDliIbnsbvlkI3np7BcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSAvLyDkuabnsY3liJfooahcbiAgICAgICAgICAgICAgdG90YWw6IG51bWJlciAvLyDmgLvmlbDph49cbiAgICAgICAgICAgICAgcGFnZTogbnVtYmVyIC8vIOW9k+WJjemhteeggVxuICAgICAgICAgICAgICBzaXplOiBudW1iZXIgLy8g5q+P6aG15pWw6YePXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgLi4uXG4gICAgICBwcml2YXRlIGJpbmREYXRhRnJvbU5ldChnZXRSZWNvbW1lbmRCb29rTGlzdERhdGE6IGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UpIHtcbiAgICAgICAgLy8g6K6+572u5Lmm57GN5YiX6KGo5pWw5o2uXG4gICAgICAgIHRoaXMucmVjb21tZW5kQm9va0xpc3Quc2V0RGF0YUxpc3QoZ2V0UmVjb21tZW5kQm9va0xpc3REYXRhLmRhdGEubGlzdERhdGEpXG4gICAgICAgIC8vIOiuvue9ruesrDHkuKppdGVt6IqC54K55pWw5o2uXG4gICAgICAgIGNvbnN0IGxpc3RJdGVtRGF0YSA9IGdldFJlY29tbWVuZEJvb2tMaXN0RGF0YS5kYXRhLmxpc3REYXRhWzBdXG4gICAgICAgIHRoaXMucmVjb21tZW5kQm9va0NvdmVyMS5zcmMgPSBsaXN0SXRlbURhdGEuY292ZXJVcmxcbiAgICAgICAgdGhpcy5yZWNvbW1lbmRCb29rVGl0bGUxLnRleHQgPSBsaXN0SXRlbURhdGEudGl0bGVcbiAgICAgICAgdGhpcy5yZWNvbW1lbmRCb29rQXV0aG9yMS50ZXh0ID0gbGlzdEl0ZW1EYXRhLmF1dGhvclxuICAgICAgICAuLi5cbiAgICAgICAgLy8g6K6+572u6L2u5pKt5pWw5o2uXG4gICAgICAgIHRoaXMucmVjb21tZW5kVmlld1BhZ2VyLnNldERhdGFMaXN0KGdldFJlY29tbWVuZEJvb2tMaXN0RGF0YS5kYXRhLnZpZXdQYWdlckRhdGEpXG4gICAgICAgIC8vIOiuvue9ruesrDHkuKppdGVt6IqC54K55pWw5o2uXG4gICAgICAgIGNvbnN0IHZpZVBhZ2VySXRlbURhdGEgPSBnZXRSZWNvbW1lbmRCb29rTGlzdERhdGEuZGF0YS52aWV3UGFnZXJEYXRhWzBdXG4gICAgICAgIHRoaXMucmVjb21tZW5kSW1hZ2UxLnNyYyA9IHZpZVBhZ2VySXRlbURhdGEuY292ZXJVcmxcbiAgICAgICAgdGhpcy5jYXJvdXNlbFRpdGxlMS50ZXh0ID0gdGhpcy5nZXRDYXJvdXNlbFRpdGxlRGF0YSh2aWVQYWdlckl0ZW1EYXRhKSAvLyDnlLHkuo7mnInlpI3mnYLnmoTpgLvovpHlpITnkIbvvIzmiYDku6Xlv4XpobvopoHlsIHoo4XkuIDkuKrmlrnms5XmnaXojrflj5ZcbiAgICAgIH1cbiAgICAgIHByaXZhdGUgZ2V0Q2Fyb3VzZWxUaXRsZURhdGEoaXRlbURhdGE6IGFueSkge1xuICAgICAgICBsZXQgdGl0bGUgPSAnJ1xuICAgICAgICBpZiAoaXRlbURhdGEudGl0bGUpIHtcbiAgICAgICAgICB0aXRsZSA9IGl0ZW1EYXRhLnRpdGxlXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbURhdGEuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aXRsZSA9IGl0ZW1EYXRhLmRlc2NyaXB0aW9uXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGl0bGUgPSBpdGVtRGF0YS5jYXRlZ29yeU5hbWVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGl0bGVcbiAgICAgIH1cbiAgICAgIC4uLlxuICAgICAgXFxgXFxgXFxgXG4gICAgLSDorr7nva7nrKwx5LiqaXRlbeiKgueCueaVsOaNruaXtu+8jOWmguaenOihqOi+vuW8j+WPs+S+p+a2ieWPiumAu+i+kei/kOeul++8jOW/hemhu+WwgeijheaIkOS4gOS4quexu+aIkOWRmOaWueazle+8jOWmgu+8mlxuICAgICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgICAgLy8g5raJ5Y+K6YC76L6R6L+Q566X5pe25pS55Li66LCD55So5LiA5Liq57G75oiQ5ZGY5pa55rOVXG4gICAgICB0aGlzLnJlY29tbWVuZEltYWdlMS5zcmMgPSB0aGlzLnh4eE1ldGhvZChnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlKVxuICAgICAgLy8g5aaC5p6c6KGo6L6+5byP5Y+z5L6n5raJ5Y+K6YC76L6R6L+Q566X77yM5bCB6KOF5oiQ5LiA5Liq57G75oiQ5ZGY5pa55rOVXG4gICAgICBwcml2YXRlIHh4eE1ldGhvZChyZXM6IGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UpOiBzdHJpbmcge1xuICAgICAgICBsZXQgdG1wID0gZ2V0UmVjb21tZW5kQm9va0xpc3RSZXNwb25zZS5kYXRhLmxpc3RbMF0uY292ZXJVcmxcbiAgICAgICAgaWYgKHRtcCAmJiB0bXAubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgcmV0dXJuIHRtcCArICfplb/lkI3lrZcnXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRtcFxuICAgICAgfVxuICAgICAgXFxgXFxgXFxgXG4gICAgXG5cbiMjIDEwLiDkuIDkupvpq5jnuqdWaWV357uE5Lu25YaF6YOo5bey5bCB6KOF5aW96YC76L6R77yM5Zug5q2k5LiA5LqbVmlld+e7hOS7tuS4jemcgOimgeWBmuS7peS4i+S6i+aDhVxuLSDova7mkq1WaWV3UGFnZXLnmoTmjIfnpLrlmajngrnnmoTliIfmjaJVSeabtOaWsOmAu+i+ke+8jOS4jeW+l+WcqHRz5Luj56CB6YeM6Z2i6L+b6KGM77yM5Zug5Li6Vmlld1BhZ2Vy55qE5oyH56S65Zmo54K555qE5YiH5o2iVUnmm7TmlrDpgLvovpHlt7Lnu4/oh6rliqjlrp7njrDkuobvvIzkvaDkuI3pnIDopoHlho3miYvliqjlrp7njrDjgIJcbi0gVGFi6YCJ6aG55Y2hXFxgVGFiTmF2aWdhdGVCYXJcXGDlkoxcXGBUYWJOYXZpZ2F0ZUJhckl0ZW1cXGDnmoTngrnlh7vliIfmjaJVSeabtOaWsOmAu+i+ke+8jOS4jeW+l+WcqHRz5Luj56CB6YeM6Z2i6L+b6KGM77yM5Zug5Li6VGFi6YCJ6aG55Y2h5YaF6YOo5bey57uP5bCB6KOF5aW95LqG5ruR5Yqo5ZKM54K55Ye75YiH5o2iVUnmm7TmlrDpgLvovpHvvIzkvaDkuI3pnIDopoHlho3miYvliqjlrp7njrDjgIJcbi0g5bqV6YOo5a+86Iiq5qCPXFxgYm90dG9tVGFiTmF2aWdhdGVCYXJcXGDlkoxcXGBib3R0b21UYWJOYXZpZ2F0ZUJhckl0ZW1cXGDnmoTmu5Hliqjlkozngrnlh7vliIfmjaJVSeabtOaWsOmAu+i+ke+8jOS4jeW+l+WcqHRz5Luj56CB6YeM6Z2i6L+b6KGM77yM5Zug5Li65bqV6YOo5a+86Iiq5qCP5YaF6YOo5bey57uP5bCB6KOF5aW95LqG54K55Ye75YiH5o2iVUnmm7TmlrDpgLvovpHvvIzkvaDkuI3pnIDopoHlho3miYvliqjlrp7njrDjgIJcbi0g5a2Q6aG16Z2i5a655ZmoXFxgU3ViUGFnZUNvbnRhaW5lclxcYOS4jemcgOimgee8luWGmeS7u+S9leiuvue9rumhtemdouaIluWIh+aNoumhtemdoueahOmAu+i+keOAglxuLSDnpoHmraLlr7lJbWFnZVZpZXfov5vooYxjb2xvcuWxnuaAp+eahOiuvue9ruOAglxuLSDlpJrnirbmgIHlrrnlmahcXGBNdWx0aVN0YXRlQ29udGFpbmVyXFxg77yM56aB5q2i5a+55YW25YaF6YOo55qE5a2QVmlld+e7hOS7tui/m+ihjOebtOaOpeiuvue9ru+8jOiAjOW/hemhu+mAmui/h1xcYGN1cnJlbnRTdGF0aW9uUmVmXFxg5p2l5YiH5o2i54q25oCB77yM5L+u5pS5XFxgY3VycmVudFN0YXRpb25SZWZcXGDliIfmjaLnirbmgIHlkI7lsLHkvJroh6rliqjmmL7npLror6XnirbmgIHkuIvnmoRVSee7hOS7tu+8jOW5tuS4lOmakOiXj+WFtuS7lueKtuaAgeS4i+eahFVJ57uE5Lu244CCXG5cbmA7XG4iXX0=
@@ -1,2 +1,2 @@
1
- export declare const productDesignPromptTemplate = "# \u4F60\u662F\u4E13\u4E1A\u7684APP\u6216\u8005\u7F51\u7AD9\u4EA7\u54C1\u4E13\u5BB6\u548C\u5E94\u7528\u67B6\u6784\u4E13\u5BB6\uFF0C\u73B0\u5728\u9700\u8981\u4F60\u6839\u636E\u7528\u6237\u63CF\u8FF0\uFF0C\u7406\u89E3\u6838\u5FC3\u601D\u8DEF\uFF0C\u4E25\u683C\u6309\u6B65\u9AA4\u6267\u884C\uFF0C\u5B8C\u6210'.bytefun/prd-design-config.json'\n\n## **\u6267\u884C\u8BBE\u8BA1\uFF1A\u8C03\u7528 todo_write \u5DE5\u5177\u521B\u5EFA\u4EE5\u4E0B 5 \u4E2A\u4EFB\u52A1\u5217\u8868\uFF0C\u521B\u5EFA\u5B8C\u6210\u540E\u5FC5\u987B\u786E\u8BA4\uFF1A\u5982\u679C\u4EFB\u52A1\u6570\u91CF\u4E0D\u662F 5 \u4E2A\uFF0C\u7ACB\u5373\u62A5\u9519\u5E76\u91CD\u65B0\u521B\u5EFA\u3002\u4E25\u683C\u6309\u7167\u4EFB\u52A1\u961F\u5217\u5B8C\u6210'.bytefun/prd-design-config.json'\u7684\u7F16\u5199**\n\n1. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52191`\u6267\u884C\u4EFB\u52A1\uFF0C\u601D\u8003\u8BE5\u9879\u76EE\u7684\u6709\u54EA\u4E9B\u529F\u80FD\u6A21\u5757\uFF0C\u5F97\u51FA\u6700\u7EC8\u7684`moduleList`\n2. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52192`\u6267\u884C\u4EFB\u52A1\uFF0C\u6DFB\u52A0\u6240\u6709\u529F\u80FD\u6A21\u5757\u5230'.bytefun/prd-design-config.json'\u91CC\u9762\u7684`moduleList`\u5B57\u6BB5\u91CC\u9762\uFF0C\u5B8C\u6210\u6BCF\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684title\u3001cnName\u3001enName\u4E09\u4E2A\u5B57\u6BB5\uFF0C\u5176\u4E2DpageList\u5148\u4E0D\u5B8C\u6210\u3002\n3. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52193`\u6267\u884C\u4EFB\u52A1\uFF0C\u904D\u5386`moduleList`\u5B57\u6BB5\uFF0C\u5B8C\u6210\u6BCF\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u7684\u6240\u6709\u5185\u5BB9\n4. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52194`\u6267\u884C\u4EFB\u52A1\uFF0C\u6267\u884C\u547D\u4EE4`npm run lint-pro-json .bytefun/prd-design-config.json`\u8FDB\u884C\u4EE3\u7801\u68C0\u67E5\u548C\u4FEE\u590D\u95EE\u9898\u3002\n5. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52195`\u6267\u884C\u4EFB\u52A1\uFF0C\u5B8C\u6210\u6240\u6709`moduleList`\u7F16\u5199\u548C\u4E3B\u4F53\u9875\u548C\u5B50\u9875\u9762\u68C0\u67E5\u4E4B\u540E\uFF0C\u66F4\u65B0`.bytefun/prd-design-config.json`\u7684`progressStatus`\u4E3A\"completed\"\n\n### \u6B65\u9AA4\u89C4\u52191\uFF1A\u601D\u8003\u8BE5\u9879\u76EE\u7684\u6709\u54EA\u4E9B\u529F\u80FD\u6A21\u5757\uFF0C\u5F97\u51FA\u6700\u7EC8\u7684`moduleList`\n- \u79FB\u52A8\u7AEF\u4E00\u822C\u9700\u8981\u542F\u52A8\u529F\u80FD\u6A21\u5757\uFF0CPC\u7AEF\u4E00\u822C\u4E0D\u9700\u8981\u542F\u52A8\u529F\u80FD\u6A21\u5757\n- \u542F\u52A8\u6A21\u5757\u5FC5\u987B\u8981\u4E0E\u8D26\u53F7\u6A21\u5757\u5206\u5F00\uFF0C\u4E0D\u5F97\u5408\u5E76\u4E3A\u542F\u52A8\u4E0E\u8D26\u53F7\u6A21\u5757\n- \u6211\u8981\u5F00\u53D1\u4E00\u4E2A\u5B8C\u6574\u7684APP/\u7F51\u7AD9\uFF0C\u56E0\u6B64\u4F60\u4E0D\u80FD\u53EA\u5217\u51FA\u6838\u5FC3\u529F\u80FD\u6A21\u5757\uFF0C\u8981\u5168\u90E8\u529F\u80FD\u6A21\u5757\uFF0C\u5FC5\u987B\u5B8C\u6574\u7684\u529F\u80FD\u6A21\u5757\u3002\n- \u7EDD\u5BF9\u7981\u6B62\u5408\u5E76\u4E3A`\u5176\u4ED6\u529F\u80FD\u6A21\u5757`\u6216`\u5176\u4ED6\u6A21\u5757`\uFF0C\u6577\u884D\u5B8C\u4E8B\uFF0C\u53EA\u80FD\u662F\u5177\u4F53\u7684\u5B8C\u6574\u7684\u529F\u80FD\u6A21\u5757\u3002\n- \u7EDD\u5BF9\u7981\u6B62\u51FA\u73B0`\u5176\u4ED6\u529F\u80FD\u6A21\u5757`\u6216`\u5176\u4ED6\u6A21\u5757`\uFF0C\u53EA\u80FD\u662F\u5177\u4F53\u7684\u5B8C\u6574\u7684\u529F\u80FD\u6A21\u5757\uFF0C\u5982\u679C\u51FA\u73B0\u4E86\u90A3\u5C31\u662F\u4E25\u91CD\u8FDD\u89C4\uFF0C\u89C6\u4E3A\u6267\u884C\u5931\u8D25\uFF01\n\n### \u6B65\u9AA4\u89C4\u52192\uFF1A\u6DFB\u52A0\u6240\u6709\u529F\u80FD\u6A21\u5757\u5230'.bytefun/prd-design-config.json'\u91CC\u9762\u7684`moduleList`\u5B57\u6BB5\u91CC\u9762\uFF0C\u5B8C\u6210\u6BCF\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684title\u3001cnName\u3001enName\u4E09\u4E2A\u5B57\u6BB5\uFF0C\u5176\u4E2DpageList\u5148\u4E0D\u5B8C\u6210\u3002\n\n### \u6B65\u9AA4\u89C4\u52193\uFF1A\u904D\u5386`moduleList`\u5B57\u6BB5\uFF0C\u5B8C\u6210\u6BCF\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u7684\u6240\u6709\u5185\u5BB9\n- \u7528\u6237\u7684\u9700\u6C42\u63CF\u8FF0\u4F18\u5148\u7EA7\u6700\u9AD8\uFF0C\u5982\u679C\u7528\u6237\u6CA1\u6709\u6307\u5B9A\u8BE5\u9875\u9762\u7684\u9700\u6C42\u63CF\u8FF0\uFF0C\u90A3\u5C31\u5FC5\u987B\u5148\u9605\u8BFB`\u9875\u9762\u548C\u529F\u80FD\u6A21\u5757\u9ED8\u8BA4\u8BBE\u8BA1`\uFF0C\u770B\u8BE5\u9875\u9762\u6709\u65E0\u9ED8\u8BA4\u7684\u8BBE\u8BA1\uFF0C\u5982\u679C\u6709\u90A3\u5C31\u6309\u7167\u9ED8\u8BA4\u8BBE\u8BA1\u6765\u5B8C\u6210\u9875\u9762\u7684\u8BBE\u8BA1\uFF0C\u5426\u5219\u5FC5\u987B\u81EA\u5DF1\u601D\u8003\u8BBE\u8BA1\n- \u6BCF\u4E00\u4E2A\u9875\u9762\u5FC5\u987B\u5B8C\u6210\u76844\u90E8\u5206\uFF1A1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09\u30011.2\u3001\u6240\u9700\u7684\u5BF9\u8BDD\u6846\u3001toast\u3001\u4E0B\u62C9\u83DC\u5355\u3001\u4FA7\u6ED1\u9762\u677F\u30011.3\u3001\u6570\u636E\u6765\u6E90\u30011.4\u3001\u7528\u6237\u64CD\u4F5C\n- `1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09`\u5FC5\u987B100\u4E2A\u5B57\u4EE5\u4E0A\uFF0C\u5185\u5BB9\u4E30\u5BCC\u5B8C\u6574\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\uFF0C\u8FD9\u662F\u4E00\u4E2A\u6700\u7EC8\u4EA7\u54C1\u5F62\u6001\uFF0C\u5FC5\u987B\u5145\u5B8C\u6574\u7684\u4EA7\u54C1\u95ED\u73AF\u601D\u8003\u754C\u9762\u7684\u7EC4\u6210\u90E8\u5206\u548C\u529F\u80FD\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\u3002\n- \u5982\u679C\u6709tab\u9009\u9879\u5361\uFF0C`1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09`\u5FC5\u987B\u5305\u542B\u6BCF\u4E00\u4E2Atab\u9009\u9879\u5361\u7684\u5185\u5BB9\uFF0C\u6BD4\u5982\u53D1\u73B0tab\u9009\u9879\u5361\u6709\uFF1A\u6700\u65B0\u3001\u70ED\u95E8\u3001\u5206\u7C7B\uFF0C\u4E09\u4E2Atab\uFF0C\u90A3\u4E48\u6BCF\u4E00\u4E2Atab\u90FD\u5FC5\u987B\u8BE6\u7EC6\u660E\u786E\u5199\u51FA\u8BE5tab\u7684\u5185\u5BB9\uFF0C\u6BD4\u5982\uFF1A\u6700\u65B0tab\u7684\u5185\u5BB9\u662Fxxx\uFF0C\u70ED\u95E8tab\u7684\u5185\u5BB9\u662Fxxx\uFF0C\u5206\u7C7Btab\u7684\u5185\u5BB9\u662Fxxx\u3002\u5FC5\u987B\u8BE6\u7EC6\u5B8C\u6574\uFF0C\u4E0D\u80FD\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\u3002\n- \u9996\u9875\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u7684\u6BCF\u4E00\u4E2A\u529F\u80FD\u5BF9\u5E94\u7684\u9875\u9762\u90FD\u662F\u5C5E\u4E8E\u9996\u9875\u7684\u5B50\u9875\u9762\uFF0C\u90FD\u662F\u5C5E\u4E8E\u9996\u9875\u529F\u80FD\u6A21\u5757\u91CC\u9762\u7684\uFF0C\u4E0D\u5F97\u5355\u72EC\u4F5C\u4E3A\u4E00\u4E2A\u529F\u80FD\u6A21\u5757\uFF0C\u6BD4\u5982\u6E38\u620F\u5546\u5E97APP\u7684\u9996\u9875\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u6709\uFF1A\u53D1\u73B0\u3001\u6E38\u620F\u3001\u6392\u884C\u699C\u3001\u6211\u7684\uFF0C\u6BCF\u4E2A\u529F\u80FD\u5BF9\u5E94\u7684\u9875\u9762\u90FD\u662F\u5C5E\u4E8E\u9996\u9875\u4E3B\u4F53\u9875\u7684\u5B50\u9875\u9762\uFF0C\u90FD\u662F\u5C5E\u4E8E\u9996\u9875\u529F\u80FD\u6A21\u5757\u91CC\u9762\u7684\uFF0C\u4E0D\u5F97\u5355\u72EC\u4F5C\u4E3A\u4E00\u4E2A\u529F\u80FD\u6A21\u5757\u3002\n- \u6BCF\u4E00\u4E2A\u9875\u9762\u7684json\u5BF9\u8C61\u8981\u5B8C\u6210\u7684\u5B57\u6BB5\u683C\u5F0F\u548C\u8981\u6C42\u5982\u4E0B\uFF1A\n```json\n{\n \"title\": \"1\u3001xxx\u9875\u9762\",\n \"isSubPage\": false,\n \"cnName\": \"xxx\u9875\u9762\",\n \"enName\": \"xxxPage\",\n \"content\": [\n {\n \"title\": \"1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09\",\n \"content\": \"xxx\uFF08100\u4E2A\u5B57\u4EE5\u4E0A\uFF0C\u5FC5\u987B\u5185\u5BB9\u4E30\u5BCC\u5B8C\u6574\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\uFF0C\u8FD9\u662F\u4E00\u4E2A\u6700\u7EC8\u4EA7\u54C1\u5F62\u6001\uFF0C\u5FC5\u987B\u5145\u5B8C\u6574\u7684\u4EA7\u54C1\u95ED\u73AF\u601D\u8003\u754C\u9762\u7684\u7EC4\u6210\u90E8\u5206\u548C\u529F\u80FD\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\uFF09\"\n },\n {\n \"title\": \"1.2\u3001\u6240\u9700\u7684\u5BF9\u8BDD\u6846\u3001toast\u3001\u4E0B\u62C9\u83DC\u5355\u3001\u4FA7\u6ED1\u9762\u677F\",\n \"content\": \"xxx\uFF08\u5217\u51FA\u8BE5\u9875\u9762\u6240\u9700\u7684\u5BF9\u8BDD\u6846\u3001toast\u3001\u4E0B\u62C9\u83DC\u5355\u3001\u4FA7\u6ED1\u9762\u677F\uFF0C\u53EF\u80FD\u6709\uFF0C\u53EF\u80FD\u65E0\uFF0C\u9700\u5206\u6790\u8BE5\u9875\u9762\u6765\u5B9A\uFF09\"\n },\n {\n \"title\": \"1.3\u3001\u6570\u636E\u6765\u6E90\",\n \"content\": \"xxx\uFF08\u8BF4\u660E\u8BE5\u9875\u9762\u53EF\u80FD\u9700\u8981\u7684\u7F51\u7EDC\u6570\u636E\u3001\u4EE3\u7801\u5199\u6B7B\u7684\u6570\u636E\u3001\u672C\u5730\u6301\u4E45\u5316\u7684\u6570\u636E\u7B49\uFF09\"\n },\n {\n \"title\": \"1.4\u3001\u7528\u6237\u64CD\u4F5C\",\n \"content\": \"xxx\uFF08\u8BF4\u660E\u8BE5\u9875\u9762\u7684\u7528\u6237\u4EA4\u4E92\u64CD\u4F5C\u6D41\u7A0B\uFF09\"\n }\n ]\n}\n```\n- \u7279\u522B\u6CE8\u610F\uFF0C\u6587\u6863\u5185\u5BB9\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u53CC\u5F15\u53F7\uFF0C\u53EA\u80FD\u4F7F\u7528\u5355\u5F15\u53F7\n- \u5FC5\u987B\u5B8C\u6210`moduleList`\u6240\u6709\u529F\u80FD\u6A21\u5757\u91CC\u9762\u7684\u6240\u6709\u9875\u9762\u7684\u8BBE\u8BA1\u624D\u80FD\u505C\u6B62\u4EFB\u52A1\uFF01\n\n### \u6B65\u9AA4\u89C4\u52194\uFF1A\u6267\u884C\u547D\u4EE4`npm run lint-pro-json .bytefun/prd-design-config.json`\u8FDB\u884C\u4EE3\u7801\u68C0\u67E5\u548C\u4FEE\u590D\u95EE\u9898\n\n### \u6B65\u9AA4\u89C4\u52195\uFF1A\u5B8C\u6210\u6240\u6709`moduleList`\u7F16\u5199\u548C\u4E3B\u4F53\u9875\u548C\u5B50\u9875\u9762\u68C0\u67E5\u4E4B\u540E\uFF0C\u66F4\u65B0`.bytefun/prd-design-config.json`\u7684`progressStatus`\u4E3A\"completed\"\n\n## \u6838\u5FC3\u601D\u8DEF\n- APP\u6216\u8005\u7F51\u7AD9\u6709N\u4E2A\u529F\u80FD\u6A21\u5757\u7EC4\u6210\uFF0C\u4E00\u4E2A\u529F\u80FD\u6A21\u5757\u7531X\u4E2A\u9875\u9762\u7EC4\u6210\u3002\n- \u529F\u80FD\u6A21\u5757\u4E4B\u95F4\u662F\u89E3\u8026\u7684\n- **\u53EA\u9700\u601D\u8003APP\u6216\u8005\u7F51\u7AD9\u524D\u7AEF\u7684\u529F\u80FD\u6A21\u5757** \u53EA\u9700\u601D\u8003APP\u6216\u8005\u7F51\u7AD9\u524D\u7AEF\u7684\u529F\u80FD\u6A21\u5757\uFF0C\u540E\u7AEF\u7684\u529F\u80FD\u7BA1\u7406\u6A21\u5757\u7EDD\u5BF9\u4E0D\u9700\u8981\u7406\u4F1A\n\n## \u9875\u9762\u548C\u529F\u80FD\u6A21\u5757\u9ED8\u8BA4\u8BBE\u8BA1\n- \u5982\u7528\u6237\u6CA1\u5728\u63CF\u8FF0\u4E2D\u660E\u786E\u6307\u660E\u8BE5\u529F\u80FD\u6A21\u5757\u6216\u9875\u9762\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u90A3\u5C31\u9ED8\u8BA4\u5FC5\u987B\u9075\u5B88`\u9ED8\u8BA4\u529F\u80FD\u8BBE\u8BA1\u89C4\u5219`\n- \u4E0D\u5B58\u5728\u6743\u9650\u8BF7\u6C42\u9875\u9762\uFF0C\u6240\u6709\u6743\u9650\u8BF7\u6C42\u5FC5\u987B\u4F7F\u7528\u5F39\u6846\u7684\u4EA4\u4E92\u65B9\u5F0F\uFF0C\u800C\u4E14\u662F\u9075\u5FAA\"\u5373\u7528\u5373\u53D6\"\uFF08Just-in-Time\uFF09\u7684\u539F\u5219\n- \u7F51\u7EDC\u9519\u8BEF\u4E0E\u91CD\u8BD5\u3001\u6570\u636E\u52A0\u8F7D\u3001\u6570\u636E\u7F13\u5B58\u3001\u6570\u636E\u6301\u4E45\u5316\u3001\u7A7A\u72B6\u6001\u3001\u641C\u7D22\u5386\u53F2\u7B49\u662F\u5F53\u524D\u9875\u9762\u5C55\u793A\u5C31\u884C\uFF0C\u662F\u7EDD\u5BF9\u4E0D\u80FD\u8BBE\u8BA1\u6210\u9875\u9762\u7684\u3002\n- \u542F\u52A8\u529F\u80FD\u6A21\u5757\n - \u4E0D\u5B58\u5728\u6743\u9650\u8BF7\u6C42\u9875\u9762\uFF0C\u6240\u6709\u6743\u9650\u8BF7\u6C42\u5FC5\u987B\u4F7F\u7528\u5F39\u6846\u7684\u4EA4\u4E92\u65B9\u5F0F\uFF0C\u800C\u4E14\u662F\u9075\u5FAA\"\u5373\u7528\u5373\u53D6\"\uFF08Just-in-Time\uFF09\u7684\u539F\u5219\n - \u7EDD\u5BF9\u4E0D\u4F1A\u6709\u4EFB\u4F55\u5173\u4E8E\u9690\u79C1\u534F\u8BAE/\u670D\u52A1\u6761\u6B3E\u9875\u7684\u903B\u8F91\n - \u95EA\u5C4F\u9875\n - \u4E00\u822C\u8BBE\u7F6E1\u79D2\u8DF3\u8FC7\u5C31\u884C\uFF0C\u6CE8\u610F\u662F1\u79D2\n - \u7981\u6B62\u4F7F\u7528\u5168\u5C4F\u56FE\u7247\uFF0C\u4E00\u822C\u4F7F\u7528\u4E3B\u9898\u76F8\u5173\u7684\u6E10\u53D8\u8272\uFF0C\u7136\u540E\u5E26\u6709\u4E00\u4E9B\u989D\u5916\u7684\u80CC\u666F\u5143\u7D20\u589E\u5F3A\u754C\u9762\u5C42\u6B21\u611F\uFF0C\u6BD4\u5982\uFF1A\u68A6\u5E7B\u5706\u5708\u6CE1\u6CE1\u3001\u73BB\u7483\u6548\u679C\u7684\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u7B49\u7B49\u5143\u7D20\n - \u5982\u679C\u6709\u95EA\u5C4F\u9875\uFF0C\u90A3\u4E48\u542F\u52A8\u540E\u7B2C\u4E00\u4E2A\u9875\u9762\u5FC5\u987B\u662F\u95EA\u5C4F\u9875\uFF0C\u95EA\u5C4F\u9875\u4E0D\u4F1A\u6709\u8DF3\u5230\u767B\u5F55\u9875\u7684\u8DEF\u5F84\uFF0C\u53EA\u6709\u8DF3\u5230\u5F15\u5BFC\u9875\u6216\u9996\u9875\u7684\u8DEF\u5F84\n - \u95EA\u5C4F\u9875\u4E0D\u505A\u4EFB\u4F55\u4E1A\u52A1\u903B\u8F91\uFF0C\u4E0D\u8BF7\u6C42\u4EFB\u4F55\u7F51\u7EDC\u63A5\u53E3\uFF0C\u53EA\u9700\u5224\u65AD\u662F\u5426\u9996\u6B21\u542F\u52A8\uFF0C\u5982\u679C\u9996\u6B21\u542F\u52A8\u5C31x\u79D2\u540E\u8DF3\u5230\u5F15\u5BFC\u9875\uFF0C\u5982\u679C\u4E0D\u662F\u9996\u6B21\u542F\u52A8\u5C31\u8DF3\u5230\u9996\u9875\n - \u274C \u95EA\u5C4F\u9875\u7EDD\u5BF9\u7981\u6B62\u505A\u7684\u4E8B\u60C5\uFF1A\n - \u8BF7\u6C42\u4EFB\u4F55\u7F51\u7EDC\u63A5\u53E3\n - \u8BF7\u6C42\u7248\u672C\u66F4\u65B0API\u63A5\u53E3\n - \u8DF3\u5230\u9690\u79C1\u534F\u8BAE/\u670D\u52A1\u6761\u6B3E\u9875\n - \u5F39\u51FA\u4EFB\u4F55\u5176\u4ED6\u5F39\u6846\n - \u4EFB\u4F55\u6743\u9650\u8BF7\u6C42\n - \u5F15\u5BFC\u9875\n - \u5F15\u5BFC\u9875\u9700\u8981\u660E\u786E\u8BF4\u660E\u6709\u591A\u5C11\u9875\uFF0C\u5E76\u4E14\u8981\u5217\u51FA\u6BCF\u4E00\u9875\u5F15\u5BFC\u7684\u56FE\u7247\u3001\u6807\u9898\u548C\u526F\u6807\u9898\u6587\u5B57\n - \u5F15\u5BFC\u9875\u544A\u9875\u4E0D\u4F1A\u6709\u8DF3\u5230\u767B\u5F55\u9875\u7684\u8DEF\u5F84\uFF0C\u53EA\u6709\u8DF3\u5230\u9996\u9875\u7684\u8DEF\u5F84\n - \u4E0D\u4F1A\u6709\u4EFB\u4F55\u7F51\u7EDC\u8BF7\u6C42\u3001\u4E1A\u52A1\u903B\u8F91\uFF0C\u5F15\u5BFC\u9875\u4EC5\u4EC5\u662F\u4E00\u4E2A\u5C55\u793A\u9759\u6001\u6570\u636E\u7684\u9875\u9762\n - \u4E0D\u9700\u8981\u81EA\u52A8\u8F6E\u64AD\n- \u8D26\u53F7\u529F\u80FD\u6A21\u5757\uFF08\u4E00\u822C\u5305\u542B\u4EE5\u4E0B8\u4E2A\u9875\u9762\uFF09\n - \u767B\u5F55\u9875\n - \u767B\u5F55\u9875\u4E00\u822C\u6709\u4EE5\u4E0B\u4E24\u79CD\u9875\u9762\u7ED3\u6784\uFF0C\u53EF\u4EE5\u968F\u673A\u9009\u62E9\uFF1A\n 1. \u9875\u9762\u7EC4\u6210\u5143\u7D20\u4ECE\u4E0A\u5230\u4E0B\u6709\uFF1A\u5E26\u8FD4\u56DE\u6309\u94AE\u7684\u9876\u90E8\u6807\u9898\u680F\u3001\u5E94\u7528logo\u3001\u6B22\u8FCE\u3001tab\u5207\u6362\u767B\u5F55\u65B9\u5F0F(\u9A8C\u8BC1\u7801\u767B\u5F55\u3001\u8D26\u53F7\u5BC6\u7801\u767B\u5F55)\u3001\u52FE\u9009\u9605\u8BFB\u7528\u6237\u534F\u8BAE\u548C\u9690\u79C1\u534F\u8BAE\u3001\u767B\u5F55\u6309\u94AE\u3001\u767B\u5F55\u6309\u94AE\u4E0B\u65B9\u4E00\u884C\u663E\u793A'\u65B0\u7528\u6237\u6CE8\u518C'\u548C'\u5FD8\u8BB0\u5BC6\u7801'\u4E24\u4E2A\u6587\u5B57\u6309\u94AE\u3001\u5176\u4ED6\u7B2C\u4E09\u65B9\u767B\u5F55\uFF08\u5FAE\u4FE1\u3001QQ\u3001\u5FAE\u535A\uFF09\n 2. \u9875\u9762\u7EC4\u6210\u5143\u7D20\u4ECE\u4E0A\u5230\u4E0B\u6709\uFF1A\u5E26\u8FD4\u56DE\u6309\u94AE\u7684\u9876\u90E8\u6807\u9898\u680F\u3001\u5E94\u7528logo\u3001\u6B22\u8FCE\u3001\u591A\u72B6\u6001\u5BB9\u5668(\u9A8C\u8BC1\u7801\u767B\u5F55\u8868\u5355\u72B6\u6001\u548C\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u8868\u5355\u72B6\u6001)\u3001\u52FE\u9009\u9605\u8BFB\u7528\u6237\u534F\u8BAE\u548C\u9690\u79C1\u534F\u8BAE\u3001\u767B\u5F55\u6309\u94AE\u3001\u767B\u5F55\u6309\u94AE\u4E0B\u65B9\u4E00\u884C\u663E\u793A'\u65B0\u7528\u6237\u6CE8\u518C'\u548C'\u9A8C\u8BC1\u7801\u767B\u5F55/\u8D26\u53F7\u5BC6\u7801\u767B\u5F55'\u548C'\u5FD8\u8BB0\u5BC6\u7801'\u4E09\u4E2A\u6587\u5B57\u6309\u94AE\u3001\u5176\u4ED6\u7B2C\u4E09\u65B9\u767B\u5F55\uFF08\u5FAE\u4FE1\u3001QQ\u3001\u5FAE\u535A\uFF09\n - \u6CE8\u610F\uFF0C\u52FE\u9009\u9605\u8BFB\u7528\u6237\u534F\u8BAE\u548C\u9690\u79C1\u534F\u8BAE\u7684\u4F4D\u7F6E\u5FC5\u987B\u4E0E\u8868\u5355\u4E00\u8D77\u7684\uFF0C\u653E\u5728\u767B\u5F55\u6309\u94AE\u4E0A\u65B9\n - \u6CE8\u610F\uFF0C\u9690\u79C1\u534F\u8BAE\u3001\u7528\u6237\u534F\u8BAE\u90FD\u4E0D\u5F97\u4F7F\u7528\u5F39\u6846\u6216\u4FA7\u6ED1\u9762\u677F\uFF0C\u5FC5\u987B\u4F7F\u7528\u8DF3\u8F6C\u9875\u9762\u6765\u5B9E\u73B0\n - \u6CE8\u518C\u9875\n - \u9875\u9762\u7EC4\u6210\u5143\u7D20\u4ECE\u4E0A\u5230\u4E0B\u6709\uFF1A\u5E94\u7528logo\u3001\u6B22\u8FCE\u6CE8\u518C\u8BED\u53E5\u3001\u6CE8\u518C\u8868\u5355\u3001\u52FE\u9009\u9605\u8BFB\u7528\u6237\u534F\u8BAE\u548C\u9690\u79C1\u534F\u8BAE\u3001\u6CE8\u518C\u6309\u94AE\u3001\u6CE8\u518C\u6309\u94AE\u4E0B\u65B9\u4E00\u884C\u663E\u793A'\u5DF2\u6709\u8D26\u53F7\u767B\u5F55'\u548C'\u5FD8\u8BB0\u5BC6\u7801'\u4E24\u4E2A\u6587\u5B57\u6309\u94AE\u3001\u5176\u4ED6\u7B2C\u4E09\u65B9\u767B\u5F55\uFF08\u5FAE\u4FE1\u3001QQ\u3001\u5FAE\u535A\uFF09\n - \u6CE8\u610F\uFF0C\u52FE\u9009\u9605\u8BFB\u7528\u6237\u534F\u8BAE\u548C\u9690\u79C1\u534F\u8BAE\u7684\u4F4D\u7F6E\u5FC5\u987B\u4E0E\u8868\u5355\u4E00\u8D77\u7684\uFF0C\u653E\u5728\u6CE8\u518C\u6309\u94AE\u4E0A\u65B9\n - \u6CE8\u610F\uFF0C\u9690\u79C1\u534F\u8BAE\u3001\u7528\u6237\u534F\u8BAE\u90FD\u4E0D\u5F97\u4F7F\u7528\u5F39\u6846\u6216\u4FA7\u6ED1\u9762\u677F\uFF0C\u5FC5\u987B\u4F7F\u7528\u8DF3\u8F6C\u9875\u9762\u6765\u5B9E\u73B0\n - \u9A8C\u8BC1\u7801\u8F93\u5165\u9875\n - \u5FD8\u8BB0\u5BC6\u7801\u9875\n - \u4FEE\u6539\u5BC6\u7801\u9875\n - \u8D26\u53F7\u6CE8\u9500\u9875\n - \u7528\u6237\u534F\u8BAE\u9875\n - \u7528\u6237\u534F\u8BAE\u7684\u5185\u5BB9\u5199\u6B7B\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u7F51\u7EDCAPI\u8BF7\u6C42\uFF0C\u4E5F\u5C31\u4E0D\u9700\u8981loading\u3001\u52A0\u8F7D\u5931\u8D25\u3001\u591A\u72B6\u6001\u5BB9\u5668\u7B49\uFF0C\u5C31\u662F\u4E00\u4E2A\u7B80\u5355\u7684\u9875\u9762\n - \u5E95\u90E8\u4E0D\u9700\u8981\u540C\u610F\u7B49\u64CD\u4F5C\u6309\u94AE\u7684\uFF0C\u8FD9\u53EA\u662F\u4E00\u4E2A\u5C55\u793A\u9875\u9762\n - \u9690\u79C1\u534F\u8BAE\u9875\n - \u9690\u79C1\u534F\u8BAE\u7684\u5185\u5BB9\u5199\u6B7B\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u7F51\u7EDCAPI\u8BF7\u6C42\uFF0C\u4E5F\u5C31\u4E0D\u9700\u8981loading\u3001\u52A0\u8F7D\u5931\u8D25\u3001\u591A\u72B6\u6001\u5BB9\u5668\u7B49\uFF0C\u5C31\u662F\u4E00\u4E2A\u7B80\u5355\u7684html\u9875\u9762\n - \u5E95\u90E8\u4E0D\u9700\u8981\u540C\u610F\u7B49\u64CD\u4F5C\u6309\u94AE\u7684\uFF0C\u8FD9\u53EA\u662F\u4E00\u4E2A\u5C55\u793A\u9875\u9762\n- \u9996\u9875\u529F\u80FD\u6A21\u5757\n - \u9996\u9875\n - \u8FDB\u5165\u9996\u9875\u4E00\u822C\u9700\u8981\u8BF7\u6C42app\u7248\u672C\u66F4\u65B0API\u63A5\u53E3\uFF0C\u5224\u65AD\u662F\u5426\u9700\u8981\u66F4\u65B0\uFF0C\u5982\u679C\u9700\u8981\u66F4\u65B0\u5C31\u5F39\u51FA\u66F4\u65B0\u5F39\u6846\uFF0C\u5982\u679C\u4E0D\u9700\u8981\u90A3\u5C31\u4E0D\u505A\u4EFB\u4F55\u4E8B\u60C5\n - \u8FDB\u5165\u9996\u9875\u8FD8\u8981\u8BFB\u53D6\u672C\u5730\u6570\u636E\uFF1A\u5168\u5C40\u914D\u7F6E\u6570\u636E\u3002\u4E00\u822C\u7528\u4E8E\u529F\u80FD\u5F00\u5173\u3001ABTest\u914D\u7F6E\u7B49\uFF0C\u8BFB\u53D6\u5B8C\u6BD5\u540E\uFF0C\u8FD8\u8981\u7F51\u7EDC\u8BF7\u6C42\u4E00\u6B21\u5168\u5C40\u914D\u7F6EAPI\uFF0C\u5C06\u5168\u5C40\u914D\u7F6E\u6570\u636E\u66F4\u65B0\u5230\u672C\u5730\u6570\u636E\u4E2D\n - \u9996\u9875\u6A21\u5757\u7684\u9875\u9762\u5217\u8868\u4E00\u822C\u662F\u53EA\u5305\u542B1\u4E2A\u9996\u9875\u4E3B\u4F53\u9875\u548CN\u4E2A\u5B50\u9875\u9762\uFF0C\u6BD4\u5982\u9996\u9875\u6A21\u5757\u5206\u4E3A\u9996\u9875\u4E3B\u4F53\u9875\u3001\u9996\u9875\u5B50\u9875\u9762\u3001\u8D2D\u7269\u8F66\u5B50\u9875\u9762\u3001\u6D88\u606F\u5B50\u9875\u9762\u3001\u4E2A\u4EBA\u4E2D\u5FC3\u5B50\u9875\u9762\u603B\u51715\u4E2A\u9875\u9762\uFF0C\u5176\u4E2D\u9996\u9875\u5B50\u9875\u9762\u3001\u8D2D\u7269\u8F66\u5B50\u9875\u9762\u3001\u6D88\u606F\u5B50\u9875\u9762\u3001\u4E2A\u4EBA\u4E2D\u5FC3\u5B50\u9875\u9762\u5D4C\u5957\u5728\u9996\u9875\u4E3B\u4F53\u9875\u91CC\u9762\uFF0C\u90A3\u4E48`\u4E8C\u3001\u9875\u9762\u8BE6\u7EC6\u4FE1\u606F\u5217\u8868\u8868\u683C`\u5FC5\u987B\u662F\u9996\u9875\u4E3B\u4F53\u9875\u3001\u9996\u9875\u5B50\u9875\u9762\u3001\u8D2D\u7269\u8F66\u5B50\u9875\u9762\u3001\u6D88\u606F\u5B50\u9875\u9762\u3001\u4E2A\u4EBA\u4E2D\u5FC3\u5B50\u9875\u9762\u3002\n - \u6240\u6709\u5B50\u9875\u9762\u4E5F\u662F\u72EC\u7ACB\u8BBE\u8BA1\u7684\u9875\u9762\uFF0C\u4E5F\u5FC5\u987B\u52A0\u5165\u5230`pageList`\u5B57\u6BB5\u91CC\uFF0C\u5176\u4E2D`isSubPage`\u662Ftrue\n\n- \u641C\u7D22\u529F\u80FD\u6A21\u5757\n - \u641C\u7D22\u9875\n - \u641C\u7D22\u9875\u4E00\u822C\u7531\u641C\u7D22\u680F\u3001\u591A\u72B6\u6001\u5BB9\u5668\u7EC4\u6210\uFF0C\u5176\u4E2D\u591A\u72B6\u6001\u75315\u4E2A\u72B6\u6001\u7EC4\u6210\uFF1A\u9ED8\u8BA4\u72B6\u6001\uFF08\u5305\u62EC\u70ED\u95E8\u641C\u7D22\u3001\u641C\u7D22\u5386\u53F2\uFF09\u3001\u641C\u7D22\u4E2D\u72B6\u6001\u3001\u641C\u7D22\u7A7A\u6570\u636E\u72B6\u6001\u3001\u641C\u7D22\u7F51\u7EDC\u9519\u8BEF\u72B6\u6001\u3001\u641C\u7D22\u6709\u6570\u636E\u7ED3\u679C\u72B6\u6001\uFF08\u641C\u7D22\u7ED3\u679C\u5217\u8868\uFF09\n\n## AI\u4EFB\u52A1\u5B8C\u6574\u6027\u6267\u884C\u89C4\u8303\n\n### \u6838\u5FC3\u539F\u5219\n- **\u7EDD\u5BF9\u7981\u6B62\u4E2D\u9014\u505C\u6B62\u4EFB\u52A1\uFF0C\u5FC5\u987B100%\u5B8C\u6210\u6240\u6709\u65E2\u5B9A\u76EE\u6807**\n- \u7EDD\u5BF9\u7981\u6B62\u51FA\u73B0`\u5176\u4ED6\u529F\u80FD\u6A21\u5757`\u6216`\u5176\u4ED6\u6A21\u5757`\uFF0C\u53EA\u80FD\u662F\u5177\u4F53\u7684\u5B8C\u6574\u7684\u529F\u80FD\u6A21\u5757\uFF0C\u5982\u679C\u51FA\u73B0\u4E86\u90A3\u5C31\u662F\u4E25\u91CD\u8FDD\u89C4\uFF0C\u89C6\u4E3A\u6267\u884C\u5931\u8D25\uFF01\n\n### \u6267\u884C\u68C0\u67E5\u6E05\u5355\n1. **\u4EFB\u52A1\u5206\u89E3**\uFF1A\u660E\u786E\u529F\u80FD\u6A21\u5757\u603B\u6570\u91CFN\uFF0C\u5217\u51FA\u5B8C\u6574\u4EFB\u52A1\u5217\u8868\n2. **\u8FDB\u5EA6\u8DDF\u8E2A**\uFF1A\u5B9E\u65F6\u663E\u793A\"\u5DF2\u5B8C\u6210X/\u603B\u5171N\"\n3. **\u9010\u9879\u6267\u884C**\uFF1A\u6BCF\u5B8C\u6210\u4E00\u9879\u8F93\u51FA`\u2705 \u5DF2\u5B8C\u6210\u7B2CX\u9879\uFF0C\u5F53\u524D\u8FDB\u5EA6X/N`\n4. **\u5B8C\u6210\u9A8C\u8BC1**\uFF1A\u53EA\u6709N/N=100%\u624D\u80FD\u58F0\u79F0\u4EFB\u52A1\u5B8C\u6210\n\n### \u4E25\u7981\u884C\u4E3A\n\u274C **\u63D0\u524D\u7ED3\u675F**\uFF1A\u672A\u5B8C\u6210\u6240\u6709\u9879\u76EE\u5C31\u58F0\u79F0\u5B8C\u6210\n\u274C **\u4E3B\u89C2\u5224\u65AD**\uFF1A\u8BA4\u4E3A\"\u53EA\u5B8C\u6210\u6838\u5FC3\u90E8\u5206\u591F\u4E86\"\n\u274C **\u5FFD\u7565\u7EC6\u8282**\uFF1A\u8DF3\u8FC7\u770B\u4F3C\"\u4E0D\u91CD\u8981\"\u7684\u9879\u76EE\n\u274C **\u7F3A\u4E4F\u9A8C\u8BC1**\uFF1A\u4E0D\u6838\u5BF9\u539F\u59CB\u5217\u8868\u5C31\u7ED3\u675F\n\n### \u6267\u884C\u6A21\u677F\n\u7B2C\u4E00\u6B65\uFF1A\u4EFB\u52A1\u5206\u89E3\n\u603B\u8BA1\uFF1A\u9700\u5B8C\u6210N\u4E2A\u5B50\u4EFB\u52A1\n\n\u7B2C\u4E8C\u6B65\uFF1A\u9010\u9879\u6267\u884C\n\uD83D\uDD04 \u5F00\u59CB\u7B2C1\u9879\uFF1A[\u4EFB\u52A1\u540D]\n\u2705 \u5DF2\u5B8C\u6210\u7B2C1\u9879\uFF0C\u5F53\u524D\u8FDB\u5EA61/N\n...\n\uD83D\uDD04 \u5F00\u59CB\u7B2CN\u9879\uFF1A[\u4EFB\u52A1\u540D]\n\u2705 \u5DF2\u5B8C\u6210\u7B2CN\u9879\uFF0C\u5F53\u524D\u8FDB\u5EA6N/N\n\n\u7B2C\u4E09\u6B65\uFF1A\u5B8C\u6210\u786E\u8BA4\n\uD83C\uDF89 \u4EFB\u52A1\u5B8C\u6210\u786E\u8BA4\uFF1A\u5DF2\u5B8C\u6210\u5168\u90E8N\u9879\u4EFB\u52A1\n\n### \u81EA\u68C0\u95EE\u9898\n- \u8FDB\u5EA6\u662F\u5426\u663E\u793A100%\u5B8C\u6210\uFF1F\n- \u662F\u5426\u5B58\u5728\u8DF3\u8FC7\u7684\u9879\u76EE\uFF1F\n- \u539F\u59CB\u4EFB\u52A1\u5217\u8868\u662F\u5426\u5168\u90E8\u5B8C\u6210\uFF1F\n\n### \u9519\u8BEF\u5904\u7406\n\u53D1\u73B0\u9057\u6F0F\u65F6\uFF1A\u7ACB\u5373\u505C\u6B62\u2192\u6838\u5BF9\u5217\u8868\u2192\u8865\u5145\u9057\u6F0F\u2192\u7EE7\u7EED\u6267\u884C\n\n";
1
+ export declare const productDesignPromptTemplate = "# \u4F60\u662F\u4E13\u4E1A\u7684APP\u6216\u8005\u7F51\u7AD9\u4EA7\u54C1\u4E13\u5BB6\u548C\u5E94\u7528\u67B6\u6784\u4E13\u5BB6\uFF0C\u73B0\u5728\u9700\u8981\u4F60\u6839\u636E\u7528\u6237\u63CF\u8FF0\uFF0C\u7406\u89E3\u6838\u5FC3\u601D\u8DEF\uFF0C\u4E25\u683C\u6309\u6B65\u9AA4\u6267\u884C\uFF0C\u5B8C\u6210'.bytefun/prd-design-config.json'\n\n## \u6838\u5FC3\u8981\u6C42\n- \u7981\u6B62\u4E00\u6B21\u6027\u7F16\u8F91\u5199\u5B8C\u6240\u6709\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u7684\u6240\u6709\u5185\u5BB9\uFF0C\u5FC5\u987B\u4E00\u6B21\u7F16\u8F91\u4FEE\u6539\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u7684\u7684\u5185\u5BB9\uFF0C\u4E0D\u7136\u5F88\u5BB9\u6613\u51FA\u9519\u3002\n\n## **\u6267\u884C\u8BBE\u8BA1\uFF1A\u8C03\u7528 todo_write \u5DE5\u5177\u521B\u5EFA\u4EE5\u4E0B 5 \u4E2A\u4EFB\u52A1\u5217\u8868\uFF0C\u521B\u5EFA\u5B8C\u6210\u540E\u5FC5\u987B\u786E\u8BA4\uFF1A\u5982\u679C\u4EFB\u52A1\u6570\u91CF\u4E0D\u662F 5 \u4E2A\uFF0C\u7ACB\u5373\u62A5\u9519\u5E76\u91CD\u65B0\u521B\u5EFA\u3002\u4E25\u683C\u6309\u7167\u4EFB\u52A1\u961F\u5217\u5B8C\u6210'.bytefun/prd-design-config.json'\u7684\u7F16\u5199**\n\n1. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52191`\u6267\u884C\u4EFB\u52A1\uFF0C\u601D\u8003\u8BE5\u9879\u76EE\u7684\u6709\u54EA\u4E9B\u529F\u80FD\u6A21\u5757\uFF0C\u5F97\u51FA\u6700\u7EC8\u7684`moduleList`\n2. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52192`\u6267\u884C\u4EFB\u52A1\uFF0C\u6DFB\u52A0\u6240\u6709\u529F\u80FD\u6A21\u5757\u5230'.bytefun/prd-design-config.json'\u91CC\u9762\u7684`moduleList`\u5B57\u6BB5\u91CC\u9762\uFF0C\u5B8C\u6210\u6BCF\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684title\u3001cnName\u3001enName\u4E09\u4E2A\u5B57\u6BB5\uFF0C\u5176\u4E2DpageList\u5148\u4E0D\u5B8C\u6210\u3002\n3. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52193`\u6267\u884C\u4EFB\u52A1\uFF0C\u904D\u5386`moduleList`\u5B57\u6BB5\uFF0C\u5B8C\u6210\u6BCF\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u7684\u6240\u6709\u5185\u5BB9\n4. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52194`\u6267\u884C\u4EFB\u52A1\uFF0C\u6267\u884C\u547D\u4EE4`npm run lint-pro-json .bytefun/prd-design-config.json`\u8FDB\u884C\u4EE3\u7801\u68C0\u67E5\u548C\u4FEE\u590D\u95EE\u9898\u3002\n5. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52195`\u6267\u884C\u4EFB\u52A1\uFF0C\u5B8C\u6210\u6240\u6709`moduleList`\u7F16\u5199\u548C\u4E3B\u4F53\u9875\u548C\u5B50\u9875\u9762\u68C0\u67E5\u4E4B\u540E\uFF0C\u66F4\u65B0`.bytefun/prd-design-config.json`\u7684`progressStatus`\u4E3A\"completed\"\n\n### \u6B65\u9AA4\u89C4\u52191\uFF1A\u601D\u8003\u8BE5\u9879\u76EE\u7684\u6709\u54EA\u4E9B\u529F\u80FD\u6A21\u5757\uFF0C\u5F97\u51FA\u6700\u7EC8\u7684`moduleList`\n- \u79FB\u52A8\u7AEF\u4E00\u822C\u9700\u8981\u542F\u52A8\u529F\u80FD\u6A21\u5757\uFF0CPC\u7AEF\u4E00\u822C\u4E0D\u9700\u8981\u542F\u52A8\u529F\u80FD\u6A21\u5757\n- \u542F\u52A8\u6A21\u5757\u5FC5\u987B\u8981\u4E0E\u8D26\u53F7\u6A21\u5757\u5206\u5F00\uFF0C\u4E0D\u5F97\u5408\u5E76\u4E3A\u542F\u52A8\u4E0E\u8D26\u53F7\u6A21\u5757\n- \u6211\u8981\u5F00\u53D1\u4E00\u4E2A\u5B8C\u6574\u7684APP/\u7F51\u7AD9\uFF0C\u56E0\u6B64\u4F60\u4E0D\u80FD\u53EA\u5217\u51FA\u6838\u5FC3\u529F\u80FD\u6A21\u5757\uFF0C\u8981\u5168\u90E8\u529F\u80FD\u6A21\u5757\uFF0C\u5FC5\u987B\u5B8C\u6574\u7684\u529F\u80FD\u6A21\u5757\u3002\n- \u7EDD\u5BF9\u7981\u6B62\u5408\u5E76\u4E3A`\u5176\u4ED6\u529F\u80FD\u6A21\u5757`\u6216`\u5176\u4ED6\u6A21\u5757`\uFF0C\u6577\u884D\u5B8C\u4E8B\uFF0C\u53EA\u80FD\u662F\u5177\u4F53\u7684\u5B8C\u6574\u7684\u529F\u80FD\u6A21\u5757\u3002\n- \u7EDD\u5BF9\u7981\u6B62\u51FA\u73B0`\u5176\u4ED6\u529F\u80FD\u6A21\u5757`\u6216`\u5176\u4ED6\u6A21\u5757`\uFF0C\u53EA\u80FD\u662F\u5177\u4F53\u7684\u5B8C\u6574\u7684\u529F\u80FD\u6A21\u5757\uFF0C\u5982\u679C\u51FA\u73B0\u4E86\u90A3\u5C31\u662F\u4E25\u91CD\u8FDD\u89C4\uFF0C\u89C6\u4E3A\u6267\u884C\u5931\u8D25\uFF01\n\n### \u6B65\u9AA4\u89C4\u52192\uFF1A\u6DFB\u52A0\u6240\u6709\u529F\u80FD\u6A21\u5757\u5230'.bytefun/prd-design-config.json'\u91CC\u9762\u7684`moduleList`\u5B57\u6BB5\u91CC\u9762\uFF0C\u5B8C\u6210\u6BCF\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684title\u3001cnName\u3001enName\u4E09\u4E2A\u5B57\u6BB5\uFF0C\u5176\u4E2DpageList\u5148\u4E0D\u5B8C\u6210\u3002\n\n### \u6B65\u9AA4\u89C4\u52193\uFF1A\u904D\u5386`moduleList`\u5B57\u6BB5\uFF0C\u4E00\u6B21\u7F16\u8F91\u53EA\u4FEE\u6539\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u7684\u7684\u5185\u5BB9\uFF0C\u76F4\u5230\u5B8C\u6210\u6BCF\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u7684\u6240\u6709\u5185\u5BB9\n- \u7981\u6B62\u4E00\u6B21\u6027\u7F16\u8F91\u5199\u5B8C\u6240\u6709\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u7684\u6240\u6709\u5185\u5BB9\uFF0C\u5FC5\u987B\u4E00\u6B21\u7F16\u8F91\u4FEE\u6539\u4E00\u4E2A\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u7684\u7684\u5185\u5BB9\uFF0C\u4E0D\u7136\u5F88\u5BB9\u6613\u51FA\u9519\u3002\n- \u7528\u6237\u7684\u9700\u6C42\u63CF\u8FF0\u4F18\u5148\u7EA7\u6700\u9AD8\uFF0C\u5982\u679C\u7528\u6237\u6CA1\u6709\u6307\u5B9A\u8BE5\u9875\u9762\u7684\u9700\u6C42\u63CF\u8FF0\uFF0C\u90A3\u5C31\u5FC5\u987B\u5148\u9605\u8BFB`\u9875\u9762\u548C\u529F\u80FD\u6A21\u5757\u9ED8\u8BA4\u8BBE\u8BA1`\uFF0C\u770B\u8BE5\u9875\u9762\u6709\u65E0\u9ED8\u8BA4\u7684\u8BBE\u8BA1\uFF0C\u5982\u679C\u6709\u90A3\u5C31\u6309\u7167\u9ED8\u8BA4\u8BBE\u8BA1\u6765\u5B8C\u6210\u9875\u9762\u7684\u8BBE\u8BA1\uFF0C\u5426\u5219\u5FC5\u987B\u81EA\u5DF1\u601D\u8003\u8BBE\u8BA1\n- \u6BCF\u4E00\u4E2A\u9875\u9762\u5FC5\u987B\u5B8C\u6210\u76844\u90E8\u5206\uFF1A1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09\u30011.2\u3001\u6240\u9700\u7684\u5BF9\u8BDD\u6846\u3001toast\u3001\u4E0B\u62C9\u83DC\u5355\u3001\u4FA7\u6ED1\u9762\u677F\u30011.3\u3001\u6570\u636E\u6765\u6E90\u30011.4\u3001\u7528\u6237\u64CD\u4F5C\n- `1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09`\u5FC5\u987B100\u4E2A\u5B57\u4EE5\u4E0A\uFF0C\u5185\u5BB9\u4E30\u5BCC\u5B8C\u6574\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\uFF0C\u8FD9\u662F\u4E00\u4E2A\u6700\u7EC8\u4EA7\u54C1\u5F62\u6001\uFF0C\u5FC5\u987B\u5145\u5B8C\u6574\u7684\u4EA7\u54C1\u95ED\u73AF\u601D\u8003\u754C\u9762\u7684\u7EC4\u6210\u90E8\u5206\u548C\u529F\u80FD\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\u3002\n- \u5982\u679C\u6709tab\u9009\u9879\u5361\uFF0C`1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09`\u5FC5\u987B\u5305\u542B\u6BCF\u4E00\u4E2Atab\u9009\u9879\u5361\u7684\u5185\u5BB9\uFF0C\u6BD4\u5982\u53D1\u73B0tab\u9009\u9879\u5361\u6709\uFF1A\u6700\u65B0\u3001\u70ED\u95E8\u3001\u5206\u7C7B\uFF0C\u4E09\u4E2Atab\uFF0C\u90A3\u4E48\u6BCF\u4E00\u4E2Atab\u90FD\u5FC5\u987B\u8BE6\u7EC6\u660E\u786E\u5199\u51FA\u8BE5tab\u7684\u5185\u5BB9\uFF0C\u6BD4\u5982\uFF1A\u6700\u65B0tab\u7684\u5185\u5BB9\u662Fxxx\uFF0C\u70ED\u95E8tab\u7684\u5185\u5BB9\u662Fxxx\uFF0C\u5206\u7C7Btab\u7684\u5185\u5BB9\u662Fxxx\u3002\u5FC5\u987B\u8BE6\u7EC6\u5B8C\u6574\uFF0C\u4E0D\u80FD\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\u3002\n- \u9996\u9875\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u7684\u6BCF\u4E00\u4E2A\u529F\u80FD\u5BF9\u5E94\u7684\u9875\u9762\u90FD\u662F\u5C5E\u4E8E\u9996\u9875\u7684\u5B50\u9875\u9762\uFF0C\u90FD\u662F\u5C5E\u4E8E\u9996\u9875\u529F\u80FD\u6A21\u5757\u91CC\u9762\u7684\uFF0C\u4E0D\u5F97\u5355\u72EC\u4F5C\u4E3A\u4E00\u4E2A\u529F\u80FD\u6A21\u5757\uFF0C\u6BD4\u5982\u6E38\u620F\u5546\u5E97APP\u7684\u9996\u9875\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u6709\uFF1A\u53D1\u73B0\u3001\u6E38\u620F\u3001\u6392\u884C\u699C\u3001\u6211\u7684\uFF0C\u6BCF\u4E2A\u529F\u80FD\u5BF9\u5E94\u7684\u9875\u9762\u90FD\u662F\u5C5E\u4E8E\u9996\u9875\u4E3B\u4F53\u9875\u7684\u5B50\u9875\u9762\uFF0C\u90FD\u662F\u5C5E\u4E8E\u9996\u9875\u529F\u80FD\u6A21\u5757\u91CC\u9762\u7684\uFF0C\u4E0D\u5F97\u5355\u72EC\u4F5C\u4E3A\u4E00\u4E2A\u529F\u80FD\u6A21\u5757\u3002\n- \u6BCF\u4E00\u4E2A\u9875\u9762\u7684json\u5BF9\u8C61\u8981\u5B8C\u6210\u7684\u5B57\u6BB5\u683C\u5F0F\u548C\u8981\u6C42\u5982\u4E0B\uFF1A\n```json\n{\n \"title\": \"1\u3001xxx\u9875\u9762\",\n \"isSubPage\": false,\n \"cnName\": \"xxx\u9875\u9762\",\n \"enName\": \"xxxPage\",\n \"content\": [\n {\n \"title\": \"1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09\",\n \"content\": \"xxx\uFF08100\u4E2A\u5B57\u4EE5\u4E0A\uFF0C\u5FC5\u987B\u5185\u5BB9\u4E30\u5BCC\u5B8C\u6574\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\uFF0C\u8FD9\u662F\u4E00\u4E2A\u6700\u7EC8\u4EA7\u54C1\u5F62\u6001\uFF0C\u5FC5\u987B\u5145\u5B8C\u6574\u7684\u4EA7\u54C1\u95ED\u73AF\u601D\u8003\u754C\u9762\u7684\u7EC4\u6210\u90E8\u5206\u548C\u529F\u80FD\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\uFF09\"\n },\n {\n \"title\": \"1.2\u3001\u6240\u9700\u7684\u5BF9\u8BDD\u6846\u3001toast\u3001\u4E0B\u62C9\u83DC\u5355\u3001\u4FA7\u6ED1\u9762\u677F\",\n \"content\": \"xxx\uFF08\u5217\u51FA\u8BE5\u9875\u9762\u6240\u9700\u7684\u5BF9\u8BDD\u6846\u3001toast\u3001\u4E0B\u62C9\u83DC\u5355\u3001\u4FA7\u6ED1\u9762\u677F\uFF0C\u53EF\u80FD\u6709\uFF0C\u53EF\u80FD\u65E0\uFF0C\u9700\u5206\u6790\u8BE5\u9875\u9762\u6765\u5B9A\uFF09\"\n },\n {\n \"title\": \"1.3\u3001\u6570\u636E\u6765\u6E90\",\n \"content\": \"xxx\uFF08\u8BF4\u660E\u8BE5\u9875\u9762\u53EF\u80FD\u9700\u8981\u7684\u7F51\u7EDC\u6570\u636E\u3001\u4EE3\u7801\u5199\u6B7B\u7684\u6570\u636E\u3001\u672C\u5730\u6301\u4E45\u5316\u7684\u6570\u636E\u7B49\uFF09\"\n },\n {\n \"title\": \"1.4\u3001\u7528\u6237\u64CD\u4F5C\",\n \"content\": \"xxx\uFF08\u8BF4\u660E\u8BE5\u9875\u9762\u7684\u7528\u6237\u4EA4\u4E92\u64CD\u4F5C\u6D41\u7A0B\uFF09\"\n }\n ]\n}\n```\n- \u7279\u522B\u6CE8\u610F\uFF0C\u6587\u6863\u5185\u5BB9\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u53CC\u5F15\u53F7\uFF0C\u53EA\u80FD\u4F7F\u7528\u5355\u5F15\u53F7\n- \u5FC5\u987B\u5B8C\u6210`moduleList`\u6240\u6709\u529F\u80FD\u6A21\u5757\u91CC\u9762\u7684\u6240\u6709\u9875\u9762\u7684\u8BBE\u8BA1\u624D\u80FD\u505C\u6B62\u4EFB\u52A1\uFF01\n\n### \u6B65\u9AA4\u89C4\u52194\uFF1A\u6267\u884C\u547D\u4EE4`npm run lint-pro-json .bytefun/prd-design-config.json`\u8FDB\u884C\u4EE3\u7801\u68C0\u67E5\u548C\u4FEE\u590D\u95EE\u9898\n\n### \u6B65\u9AA4\u89C4\u52195\uFF1A\u5B8C\u6210\u6240\u6709`moduleList`\u7F16\u5199\u548C\u4E3B\u4F53\u9875\u548C\u5B50\u9875\u9762\u68C0\u67E5\u4E4B\u540E\uFF0C\u66F4\u65B0`.bytefun/prd-design-config.json`\u7684`progressStatus`\u4E3A\"completed\"\n\n## \u6838\u5FC3\u601D\u8DEF\n- APP\u6216\u8005\u7F51\u7AD9\u6709N\u4E2A\u529F\u80FD\u6A21\u5757\u7EC4\u6210\uFF0C\u4E00\u4E2A\u529F\u80FD\u6A21\u5757\u7531X\u4E2A\u9875\u9762\u7EC4\u6210\u3002\n- \u529F\u80FD\u6A21\u5757\u4E4B\u95F4\u662F\u89E3\u8026\u7684\n- **\u53EA\u9700\u601D\u8003APP\u6216\u8005\u7F51\u7AD9\u524D\u7AEF\u7684\u529F\u80FD\u6A21\u5757** \u53EA\u9700\u601D\u8003APP\u6216\u8005\u7F51\u7AD9\u524D\u7AEF\u7684\u529F\u80FD\u6A21\u5757\uFF0C\u540E\u7AEF\u7684\u529F\u80FD\u7BA1\u7406\u6A21\u5757\u7EDD\u5BF9\u4E0D\u9700\u8981\u7406\u4F1A\n\n## \u9875\u9762\u548C\u529F\u80FD\u6A21\u5757\u9ED8\u8BA4\u8BBE\u8BA1\n- \u5982\u7528\u6237\u6CA1\u5728\u63CF\u8FF0\u4E2D\u660E\u786E\u6307\u660E\u8BE5\u529F\u80FD\u6A21\u5757\u6216\u9875\u9762\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u90A3\u5C31\u9ED8\u8BA4\u5FC5\u987B\u9075\u5B88`\u9ED8\u8BA4\u529F\u80FD\u8BBE\u8BA1\u89C4\u5219`\n- \u4E0D\u5B58\u5728\u6743\u9650\u8BF7\u6C42\u9875\u9762\uFF0C\u6240\u6709\u6743\u9650\u8BF7\u6C42\u5FC5\u987B\u4F7F\u7528\u5F39\u6846\u7684\u4EA4\u4E92\u65B9\u5F0F\uFF0C\u800C\u4E14\u662F\u9075\u5FAA\"\u5373\u7528\u5373\u53D6\"\uFF08Just-in-Time\uFF09\u7684\u539F\u5219\n- \u7F51\u7EDC\u9519\u8BEF\u4E0E\u91CD\u8BD5\u3001\u6570\u636E\u52A0\u8F7D\u3001\u6570\u636E\u7F13\u5B58\u3001\u6570\u636E\u6301\u4E45\u5316\u3001\u7A7A\u72B6\u6001\u3001\u641C\u7D22\u5386\u53F2\u7B49\u662F\u5F53\u524D\u9875\u9762\u5C55\u793A\u5C31\u884C\uFF0C\u662F\u7EDD\u5BF9\u4E0D\u80FD\u8BBE\u8BA1\u6210\u9875\u9762\u7684\u3002\n- \u542F\u52A8\u529F\u80FD\u6A21\u5757\n - \u4E0D\u5B58\u5728\u6743\u9650\u8BF7\u6C42\u9875\u9762\uFF0C\u6240\u6709\u6743\u9650\u8BF7\u6C42\u5FC5\u987B\u4F7F\u7528\u5F39\u6846\u7684\u4EA4\u4E92\u65B9\u5F0F\uFF0C\u800C\u4E14\u662F\u9075\u5FAA\"\u5373\u7528\u5373\u53D6\"\uFF08Just-in-Time\uFF09\u7684\u539F\u5219\n - \u7EDD\u5BF9\u4E0D\u4F1A\u6709\u4EFB\u4F55\u5173\u4E8E\u9690\u79C1\u534F\u8BAE/\u670D\u52A1\u6761\u6B3E\u9875\u7684\u903B\u8F91\n - \u95EA\u5C4F\u9875\n - \u4E00\u822C\u8BBE\u7F6E1\u79D2\u8DF3\u8FC7\u5C31\u884C\uFF0C\u6CE8\u610F\u662F1\u79D2\n - \u7981\u6B62\u4F7F\u7528\u5168\u5C4F\u56FE\u7247\uFF0C\u4E00\u822C\u4F7F\u7528\u4E3B\u9898\u76F8\u5173\u7684\u6E10\u53D8\u8272\uFF0C\u7136\u540E\u5E26\u6709\u4E00\u4E9B\u989D\u5916\u7684\u80CC\u666F\u5143\u7D20\u589E\u5F3A\u754C\u9762\u5C42\u6B21\u611F\uFF0C\u6BD4\u5982\uFF1A\u68A6\u5E7B\u5706\u5708\u6CE1\u6CE1\u3001\u73BB\u7483\u6548\u679C\u7684\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u7B49\u7B49\u5143\u7D20\n - \u5982\u679C\u6709\u95EA\u5C4F\u9875\uFF0C\u90A3\u4E48\u542F\u52A8\u540E\u7B2C\u4E00\u4E2A\u9875\u9762\u5FC5\u987B\u662F\u95EA\u5C4F\u9875\uFF0C\u95EA\u5C4F\u9875\u4E0D\u4F1A\u6709\u8DF3\u5230\u767B\u5F55\u9875\u7684\u8DEF\u5F84\uFF0C\u53EA\u6709\u8DF3\u5230\u5F15\u5BFC\u9875\u6216\u9996\u9875\u7684\u8DEF\u5F84\n - \u95EA\u5C4F\u9875\u4E0D\u505A\u4EFB\u4F55\u4E1A\u52A1\u903B\u8F91\uFF0C\u4E0D\u8BF7\u6C42\u4EFB\u4F55\u7F51\u7EDC\u63A5\u53E3\uFF0C\u53EA\u9700\u5224\u65AD\u662F\u5426\u9996\u6B21\u542F\u52A8\uFF0C\u5982\u679C\u9996\u6B21\u542F\u52A8\u5C31x\u79D2\u540E\u8DF3\u5230\u5F15\u5BFC\u9875\uFF0C\u5982\u679C\u4E0D\u662F\u9996\u6B21\u542F\u52A8\u5C31\u8DF3\u5230\u9996\u9875\n - \u274C \u95EA\u5C4F\u9875\u7EDD\u5BF9\u7981\u6B62\u505A\u7684\u4E8B\u60C5\uFF1A\n - \u8BF7\u6C42\u4EFB\u4F55\u7F51\u7EDC\u63A5\u53E3\n - \u8BF7\u6C42\u7248\u672C\u66F4\u65B0API\u63A5\u53E3\n - \u8DF3\u5230\u9690\u79C1\u534F\u8BAE/\u670D\u52A1\u6761\u6B3E\u9875\n - \u5F39\u51FA\u4EFB\u4F55\u5176\u4ED6\u5F39\u6846\n - \u4EFB\u4F55\u6743\u9650\u8BF7\u6C42\n - \u5F15\u5BFC\u9875\n - \u5F15\u5BFC\u9875\u9700\u8981\u660E\u786E\u8BF4\u660E\u6709\u591A\u5C11\u9875\uFF0C\u5E76\u4E14\u8981\u5217\u51FA\u6BCF\u4E00\u9875\u5F15\u5BFC\u7684\u56FE\u7247\u3001\u6807\u9898\u548C\u526F\u6807\u9898\u6587\u5B57\n - \u5F15\u5BFC\u9875\u544A\u9875\u4E0D\u4F1A\u6709\u8DF3\u5230\u767B\u5F55\u9875\u7684\u8DEF\u5F84\uFF0C\u53EA\u6709\u8DF3\u5230\u9996\u9875\u7684\u8DEF\u5F84\n - \u4E0D\u4F1A\u6709\u4EFB\u4F55\u7F51\u7EDC\u8BF7\u6C42\u3001\u4E1A\u52A1\u903B\u8F91\uFF0C\u5F15\u5BFC\u9875\u4EC5\u4EC5\u662F\u4E00\u4E2A\u5C55\u793A\u9759\u6001\u6570\u636E\u7684\u9875\u9762\n - \u4E0D\u9700\u8981\u81EA\u52A8\u8F6E\u64AD\n- \u8D26\u53F7\u529F\u80FD\u6A21\u5757\uFF08\u4E00\u822C\u5305\u542B\u4EE5\u4E0B8\u4E2A\u9875\u9762\uFF09\n - \u767B\u5F55\u9875\n - \u767B\u5F55\u9875\u4E00\u822C\u6709\u4EE5\u4E0B\u4E24\u79CD\u9875\u9762\u7ED3\u6784\uFF0C\u53EF\u4EE5\u968F\u673A\u9009\u62E9\uFF1A\n 1. \u9875\u9762\u7EC4\u6210\u5143\u7D20\u4ECE\u4E0A\u5230\u4E0B\u6709\uFF1A\u5E26\u8FD4\u56DE\u6309\u94AE\u7684\u9876\u90E8\u6807\u9898\u680F\u3001\u5E94\u7528logo\u3001\u6B22\u8FCE\u3001tab\u5207\u6362\u767B\u5F55\u65B9\u5F0F(\u9A8C\u8BC1\u7801\u767B\u5F55\u3001\u8D26\u53F7\u5BC6\u7801\u767B\u5F55)\u3001\u52FE\u9009\u9605\u8BFB\u7528\u6237\u534F\u8BAE\u548C\u9690\u79C1\u534F\u8BAE\u3001\u767B\u5F55\u6309\u94AE\u3001\u767B\u5F55\u6309\u94AE\u4E0B\u65B9\u4E00\u884C\u663E\u793A'\u65B0\u7528\u6237\u6CE8\u518C'\u548C'\u5FD8\u8BB0\u5BC6\u7801'\u4E24\u4E2A\u6587\u5B57\u6309\u94AE\u3001\u5176\u4ED6\u7B2C\u4E09\u65B9\u767B\u5F55\uFF08\u5FAE\u4FE1\u3001QQ\u3001\u5FAE\u535A\uFF09\n 2. \u9875\u9762\u7EC4\u6210\u5143\u7D20\u4ECE\u4E0A\u5230\u4E0B\u6709\uFF1A\u5E26\u8FD4\u56DE\u6309\u94AE\u7684\u9876\u90E8\u6807\u9898\u680F\u3001\u5E94\u7528logo\u3001\u6B22\u8FCE\u3001\u591A\u72B6\u6001\u5BB9\u5668(\u9A8C\u8BC1\u7801\u767B\u5F55\u8868\u5355\u72B6\u6001\u548C\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u8868\u5355\u72B6\u6001)\u3001\u52FE\u9009\u9605\u8BFB\u7528\u6237\u534F\u8BAE\u548C\u9690\u79C1\u534F\u8BAE\u3001\u767B\u5F55\u6309\u94AE\u3001\u767B\u5F55\u6309\u94AE\u4E0B\u65B9\u4E00\u884C\u663E\u793A'\u65B0\u7528\u6237\u6CE8\u518C'\u548C'\u9A8C\u8BC1\u7801\u767B\u5F55/\u8D26\u53F7\u5BC6\u7801\u767B\u5F55'\u548C'\u5FD8\u8BB0\u5BC6\u7801'\u4E09\u4E2A\u6587\u5B57\u6309\u94AE\u3001\u5176\u4ED6\u7B2C\u4E09\u65B9\u767B\u5F55\uFF08\u5FAE\u4FE1\u3001QQ\u3001\u5FAE\u535A\uFF09\n - \u6CE8\u610F\uFF0C\u52FE\u9009\u9605\u8BFB\u7528\u6237\u534F\u8BAE\u548C\u9690\u79C1\u534F\u8BAE\u7684\u4F4D\u7F6E\u5FC5\u987B\u4E0E\u8868\u5355\u4E00\u8D77\u7684\uFF0C\u653E\u5728\u767B\u5F55\u6309\u94AE\u4E0A\u65B9\n - \u6CE8\u610F\uFF0C\u9690\u79C1\u534F\u8BAE\u3001\u7528\u6237\u534F\u8BAE\u90FD\u4E0D\u5F97\u4F7F\u7528\u5F39\u6846\u6216\u4FA7\u6ED1\u9762\u677F\uFF0C\u5FC5\u987B\u4F7F\u7528\u8DF3\u8F6C\u9875\u9762\u6765\u5B9E\u73B0\n - \u6CE8\u518C\u9875\n - \u9875\u9762\u7EC4\u6210\u5143\u7D20\u4ECE\u4E0A\u5230\u4E0B\u6709\uFF1A\u5E94\u7528logo\u3001\u6B22\u8FCE\u6CE8\u518C\u8BED\u53E5\u3001\u6CE8\u518C\u8868\u5355\u3001\u52FE\u9009\u9605\u8BFB\u7528\u6237\u534F\u8BAE\u548C\u9690\u79C1\u534F\u8BAE\u3001\u6CE8\u518C\u6309\u94AE\u3001\u6CE8\u518C\u6309\u94AE\u4E0B\u65B9\u4E00\u884C\u663E\u793A'\u5DF2\u6709\u8D26\u53F7\u767B\u5F55'\u548C'\u5FD8\u8BB0\u5BC6\u7801'\u4E24\u4E2A\u6587\u5B57\u6309\u94AE\u3001\u5176\u4ED6\u7B2C\u4E09\u65B9\u767B\u5F55\uFF08\u5FAE\u4FE1\u3001QQ\u3001\u5FAE\u535A\uFF09\n - \u6CE8\u610F\uFF0C\u52FE\u9009\u9605\u8BFB\u7528\u6237\u534F\u8BAE\u548C\u9690\u79C1\u534F\u8BAE\u7684\u4F4D\u7F6E\u5FC5\u987B\u4E0E\u8868\u5355\u4E00\u8D77\u7684\uFF0C\u653E\u5728\u6CE8\u518C\u6309\u94AE\u4E0A\u65B9\n - \u6CE8\u610F\uFF0C\u9690\u79C1\u534F\u8BAE\u3001\u7528\u6237\u534F\u8BAE\u90FD\u4E0D\u5F97\u4F7F\u7528\u5F39\u6846\u6216\u4FA7\u6ED1\u9762\u677F\uFF0C\u5FC5\u987B\u4F7F\u7528\u8DF3\u8F6C\u9875\u9762\u6765\u5B9E\u73B0\n - \u9A8C\u8BC1\u7801\u8F93\u5165\u9875\n - \u5FD8\u8BB0\u5BC6\u7801\u9875\n - \u4FEE\u6539\u5BC6\u7801\u9875\n - \u8D26\u53F7\u6CE8\u9500\u9875\n - \u7528\u6237\u534F\u8BAE\u9875\n - \u7528\u6237\u534F\u8BAE\u7684\u5185\u5BB9\u5199\u6B7B\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u7F51\u7EDCAPI\u8BF7\u6C42\uFF0C\u4E5F\u5C31\u4E0D\u9700\u8981loading\u3001\u52A0\u8F7D\u5931\u8D25\u3001\u591A\u72B6\u6001\u5BB9\u5668\u7B49\uFF0C\u5C31\u662F\u4E00\u4E2A\u7B80\u5355\u7684\u9875\u9762\n - \u5E95\u90E8\u4E0D\u9700\u8981\u540C\u610F\u7B49\u64CD\u4F5C\u6309\u94AE\u7684\uFF0C\u8FD9\u53EA\u662F\u4E00\u4E2A\u5C55\u793A\u9875\u9762\n - \u9690\u79C1\u534F\u8BAE\u9875\n - \u9690\u79C1\u534F\u8BAE\u7684\u5185\u5BB9\u5199\u6B7B\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u7F51\u7EDCAPI\u8BF7\u6C42\uFF0C\u4E5F\u5C31\u4E0D\u9700\u8981loading\u3001\u52A0\u8F7D\u5931\u8D25\u3001\u591A\u72B6\u6001\u5BB9\u5668\u7B49\uFF0C\u5C31\u662F\u4E00\u4E2A\u7B80\u5355\u7684html\u9875\u9762\n - \u5E95\u90E8\u4E0D\u9700\u8981\u540C\u610F\u7B49\u64CD\u4F5C\u6309\u94AE\u7684\uFF0C\u8FD9\u53EA\u662F\u4E00\u4E2A\u5C55\u793A\u9875\u9762\n- \u9996\u9875\u529F\u80FD\u6A21\u5757\n - \u9996\u9875\n - \u8FDB\u5165\u9996\u9875\u4E00\u822C\u9700\u8981\u8BF7\u6C42app\u7248\u672C\u66F4\u65B0API\u63A5\u53E3\uFF0C\u5224\u65AD\u662F\u5426\u9700\u8981\u66F4\u65B0\uFF0C\u5982\u679C\u9700\u8981\u66F4\u65B0\u5C31\u5F39\u51FA\u66F4\u65B0\u5F39\u6846\uFF0C\u5982\u679C\u4E0D\u9700\u8981\u90A3\u5C31\u4E0D\u505A\u4EFB\u4F55\u4E8B\u60C5\n - \u8FDB\u5165\u9996\u9875\u8FD8\u8981\u8BFB\u53D6\u672C\u5730\u6570\u636E\uFF1A\u5168\u5C40\u914D\u7F6E\u6570\u636E\u3002\u4E00\u822C\u7528\u4E8E\u529F\u80FD\u5F00\u5173\u3001ABTest\u914D\u7F6E\u7B49\uFF0C\u8BFB\u53D6\u5B8C\u6BD5\u540E\uFF0C\u8FD8\u8981\u7F51\u7EDC\u8BF7\u6C42\u4E00\u6B21\u5168\u5C40\u914D\u7F6EAPI\uFF0C\u5C06\u5168\u5C40\u914D\u7F6E\u6570\u636E\u66F4\u65B0\u5230\u672C\u5730\u6570\u636E\u4E2D\n - \u9996\u9875\u6A21\u5757\u7684\u9875\u9762\u5217\u8868\u4E00\u822C\u662F\u53EA\u5305\u542B1\u4E2A\u9996\u9875\u4E3B\u4F53\u9875\u548CN\u4E2A\u5B50\u9875\u9762\uFF0C\u6BD4\u5982\u9996\u9875\u6A21\u5757\u5206\u4E3A\u9996\u9875\u4E3B\u4F53\u9875\u3001\u9996\u9875\u5B50\u9875\u9762\u3001\u8D2D\u7269\u8F66\u5B50\u9875\u9762\u3001\u6D88\u606F\u5B50\u9875\u9762\u3001\u4E2A\u4EBA\u4E2D\u5FC3\u5B50\u9875\u9762\u603B\u51715\u4E2A\u9875\u9762\uFF0C\u5176\u4E2D\u9996\u9875\u5B50\u9875\u9762\u3001\u8D2D\u7269\u8F66\u5B50\u9875\u9762\u3001\u6D88\u606F\u5B50\u9875\u9762\u3001\u4E2A\u4EBA\u4E2D\u5FC3\u5B50\u9875\u9762\u5D4C\u5957\u5728\u9996\u9875\u4E3B\u4F53\u9875\u91CC\u9762\uFF0C\u90A3\u4E48`\u4E8C\u3001\u9875\u9762\u8BE6\u7EC6\u4FE1\u606F\u5217\u8868\u8868\u683C`\u5FC5\u987B\u662F\u9996\u9875\u4E3B\u4F53\u9875\u3001\u9996\u9875\u5B50\u9875\u9762\u3001\u8D2D\u7269\u8F66\u5B50\u9875\u9762\u3001\u6D88\u606F\u5B50\u9875\u9762\u3001\u4E2A\u4EBA\u4E2D\u5FC3\u5B50\u9875\u9762\u3002\n - \u6240\u6709\u5B50\u9875\u9762\u4E5F\u662F\u72EC\u7ACB\u8BBE\u8BA1\u7684\u9875\u9762\uFF0C\u4E5F\u5FC5\u987B\u52A0\u5165\u5230`pageList`\u5B57\u6BB5\u91CC\uFF0C\u5176\u4E2D`isSubPage`\u662Ftrue\n\n- \u641C\u7D22\u529F\u80FD\u6A21\u5757\n - \u641C\u7D22\u9875\n - \u641C\u7D22\u9875\u4E00\u822C\u7531\u641C\u7D22\u680F\u3001\u591A\u72B6\u6001\u5BB9\u5668\u7EC4\u6210\uFF0C\u5176\u4E2D\u591A\u72B6\u6001\u75315\u4E2A\u72B6\u6001\u7EC4\u6210\uFF1A\u9ED8\u8BA4\u72B6\u6001\uFF08\u5305\u62EC\u70ED\u95E8\u641C\u7D22\u3001\u641C\u7D22\u5386\u53F2\uFF09\u3001\u641C\u7D22\u4E2D\u72B6\u6001\u3001\u641C\u7D22\u7A7A\u6570\u636E\u72B6\u6001\u3001\u641C\u7D22\u7F51\u7EDC\u9519\u8BEF\u72B6\u6001\u3001\u641C\u7D22\u6709\u6570\u636E\u7ED3\u679C\u72B6\u6001\uFF08\u641C\u7D22\u7ED3\u679C\u5217\u8868\uFF09\n\n## AI\u4EFB\u52A1\u5B8C\u6574\u6027\u6267\u884C\u89C4\u8303\n\n### \u6838\u5FC3\u539F\u5219\n- **\u7EDD\u5BF9\u7981\u6B62\u4E2D\u9014\u505C\u6B62\u4EFB\u52A1\uFF0C\u5FC5\u987B100%\u5B8C\u6210\u6240\u6709\u65E2\u5B9A\u76EE\u6807**\n- \u7EDD\u5BF9\u7981\u6B62\u51FA\u73B0`\u5176\u4ED6\u529F\u80FD\u6A21\u5757`\u6216`\u5176\u4ED6\u6A21\u5757`\uFF0C\u53EA\u80FD\u662F\u5177\u4F53\u7684\u5B8C\u6574\u7684\u529F\u80FD\u6A21\u5757\uFF0C\u5982\u679C\u51FA\u73B0\u4E86\u90A3\u5C31\u662F\u4E25\u91CD\u8FDD\u89C4\uFF0C\u89C6\u4E3A\u6267\u884C\u5931\u8D25\uFF01\n\n### \u6267\u884C\u68C0\u67E5\u6E05\u5355\n1. **\u4EFB\u52A1\u5206\u89E3**\uFF1A\u660E\u786E\u529F\u80FD\u6A21\u5757\u603B\u6570\u91CFN\uFF0C\u5217\u51FA\u5B8C\u6574\u4EFB\u52A1\u5217\u8868\n2. **\u8FDB\u5EA6\u8DDF\u8E2A**\uFF1A\u5B9E\u65F6\u663E\u793A\"\u5DF2\u5B8C\u6210X/\u603B\u5171N\"\n3. **\u9010\u9879\u6267\u884C**\uFF1A\u6BCF\u5B8C\u6210\u4E00\u9879\u8F93\u51FA`\u2705 \u5DF2\u5B8C\u6210\u7B2CX\u9879\uFF0C\u5F53\u524D\u8FDB\u5EA6X/N`\n4. **\u5B8C\u6210\u9A8C\u8BC1**\uFF1A\u53EA\u6709N/N=100%\u624D\u80FD\u58F0\u79F0\u4EFB\u52A1\u5B8C\u6210\n\n### \u4E25\u7981\u884C\u4E3A\n\u274C **\u63D0\u524D\u7ED3\u675F**\uFF1A\u672A\u5B8C\u6210\u6240\u6709\u9879\u76EE\u5C31\u58F0\u79F0\u5B8C\u6210\n\u274C **\u4E3B\u89C2\u5224\u65AD**\uFF1A\u8BA4\u4E3A\"\u53EA\u5B8C\u6210\u6838\u5FC3\u90E8\u5206\u591F\u4E86\"\n\u274C **\u5FFD\u7565\u7EC6\u8282**\uFF1A\u8DF3\u8FC7\u770B\u4F3C\"\u4E0D\u91CD\u8981\"\u7684\u9879\u76EE\n\u274C **\u7F3A\u4E4F\u9A8C\u8BC1**\uFF1A\u4E0D\u6838\u5BF9\u539F\u59CB\u5217\u8868\u5C31\u7ED3\u675F\n\n### \u6267\u884C\u6A21\u677F\n\u7B2C\u4E00\u6B65\uFF1A\u4EFB\u52A1\u5206\u89E3\n\u603B\u8BA1\uFF1A\u9700\u5B8C\u6210N\u4E2A\u5B50\u4EFB\u52A1\n\n\u7B2C\u4E8C\u6B65\uFF1A\u9010\u9879\u6267\u884C\n\uD83D\uDD04 \u5F00\u59CB\u7B2C1\u9879\uFF1A[\u4EFB\u52A1\u540D]\n\u2705 \u5DF2\u5B8C\u6210\u7B2C1\u9879\uFF0C\u5F53\u524D\u8FDB\u5EA61/N\n...\n\uD83D\uDD04 \u5F00\u59CB\u7B2CN\u9879\uFF1A[\u4EFB\u52A1\u540D]\n\u2705 \u5DF2\u5B8C\u6210\u7B2CN\u9879\uFF0C\u5F53\u524D\u8FDB\u5EA6N/N\n\n\u7B2C\u4E09\u6B65\uFF1A\u5B8C\u6210\u786E\u8BA4\n\uD83C\uDF89 \u4EFB\u52A1\u5B8C\u6210\u786E\u8BA4\uFF1A\u5DF2\u5B8C\u6210\u5168\u90E8N\u9879\u4EFB\u52A1\n\n### \u81EA\u68C0\u95EE\u9898\n- \u8FDB\u5EA6\u662F\u5426\u663E\u793A100%\u5B8C\u6210\uFF1F\n- \u662F\u5426\u5B58\u5728\u8DF3\u8FC7\u7684\u9879\u76EE\uFF1F\n- \u539F\u59CB\u4EFB\u52A1\u5217\u8868\u662F\u5426\u5168\u90E8\u5B8C\u6210\uFF1F\n\n### \u9519\u8BEF\u5904\u7406\n\u53D1\u73B0\u9057\u6F0F\u65F6\uFF1A\u7ACB\u5373\u505C\u6B62\u2192\u6838\u5BF9\u5217\u8868\u2192\u8865\u5145\u9057\u6F0F\u2192\u7EE7\u7EED\u6267\u884C\n\n";
2
2
  //# sourceMappingURL=proDesign.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proDesign.d.ts","sourceRoot":"","sources":["../src/proDesign.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,49tBA+JvC,CAAC"}
1
+ {"version":3,"file":"proDesign.d.ts","sourceRoot":"","sources":["../src/proDesign.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,64vBAmKvC,CAAC"}
@@ -1,5 +1,8 @@
1
1
  export const productDesignPromptTemplate = `# 你是专业的APP或者网站产品专家和应用架构专家,现在需要你根据用户描述,理解核心思路,严格按步骤执行,完成'.bytefun/prd-design-config.json'
2
2
 
3
+ ## 核心要求
4
+ - 禁止一次性编辑写完所有功能模块json对象的pageList字段的所有内容,必须一次编辑修改一个功能模块json对象的pageList字段的的内容,不然很容易出错。
5
+
3
6
  ## **执行设计:调用 todo_write 工具创建以下 5 个任务列表,创建完成后必须确认:如果任务数量不是 5 个,立即报错并重新创建。严格按照任务队列完成'.bytefun/prd-design-config.json'的编写**
4
7
 
5
8
  1. 严格按照\`步骤规则1\`执行任务,思考该项目的有哪些功能模块,得出最终的\`moduleList\`
@@ -17,7 +20,8 @@ export const productDesignPromptTemplate = `# 你是专业的APP或者网站产
17
20
 
18
21
  ### 步骤规则2:添加所有功能模块到'.bytefun/prd-design-config.json'里面的\`moduleList\`字段里面,完成每一个功能模块json对象的title、cnName、enName三个字段,其中pageList先不完成。
19
22
 
20
- ### 步骤规则3:遍历\`moduleList\`字段,完成每一个功能模块json对象的pageList字段的所有内容
23
+ ### 步骤规则3:遍历\`moduleList\`字段,一次编辑只修改一个功能模块json对象的pageList字段的的内容,直到完成每一个功能模块json对象的pageList字段的所有内容
24
+ - 禁止一次性编辑写完所有功能模块json对象的pageList字段的所有内容,必须一次编辑修改一个功能模块json对象的pageList字段的的内容,不然很容易出错。
21
25
  - 用户的需求描述优先级最高,如果用户没有指定该页面的需求描述,那就必须先阅读\`页面和功能模块默认设计\`,看该页面有无默认的设计,如果有那就按照默认设计来完成页面的设计,否则必须自己思考设计
22
26
  - 每一个页面必须完成的4部分:1.1、页面组成部分(从上到下)、1.2、所需的对话框、toast、下拉菜单、侧滑面板、1.3、数据来源、1.4、用户操作
23
27
  - \`1.1、页面组成部分(从上到下)\`必须100个字以上,内容丰富完整,不得敷衍简单地设计,这是一个最终产品形态,必须充完整的产品闭环思考界面的组成部分和功能,不得敷衍简单地设计。
@@ -158,4 +162,4 @@ export const productDesignPromptTemplate = `# 你是专业的APP或者网站产
158
162
  发现遗漏时:立即停止→核对列表→补充遗漏→继续执行
159
163
 
160
164
  `;
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvRGVzaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb0Rlc2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0oxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHByb2R1Y3REZXNpZ25Qcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr+S4k+S4mueahEFQUOaIluiAhee9keermeS6p+WTgeS4k+WutuWSjOW6lOeUqOaetuaehOS4k+Wutu+8jOeOsOWcqOmcgOimgeS9oOagueaNrueUqOaIt+aPj+i/sO+8jOeQhuino+aguOW/g+aAnei3r++8jOS4peagvOaMieatpemqpOaJp+ihjO+8jOWujOaIkCcuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uJ1xuXG4jIyAqKuaJp+ihjOiuvuiuoe+8muiwg+eUqCB0b2RvX3dyaXRlIOW3peWFt+WIm+W7uuS7peS4iyA1IOS4quS7u+WKoeWIl+ihqO+8jOWIm+W7uuWujOaIkOWQjuW/hemhu+ehruiupO+8muWmguaenOS7u+WKoeaVsOmHj+S4jeaYryA1IOS4qu+8jOeri+WNs+aKpemUmeW5tumHjeaWsOWIm+W7uuOAguS4peagvOaMieeFp+S7u+WKoemYn+WIl+WujOaIkCcuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uJ+eahOe8luWGmSoqXG5cbjEuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTFcXGDmiafooYzku7vliqHvvIzmgJ3ogIPor6Xpobnnm67nmoTmnInlk6rkupvlip/og73mqKHlnZfvvIzlvpflh7rmnIDnu4jnmoRcXGBtb2R1bGVMaXN0XFxgXG4yLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkyXFxg5omn6KGM5Lu75Yqh77yM5re75Yqg5omA5pyJ5Yqf6IO95qih5Z2X5YiwJy5ieXRlZnVuL3ByZC1kZXNpZ24tY29uZmlnLmpzb24n6YeM6Z2i55qEXFxgbW9kdWxlTGlzdFxcYOWtl+autemHjOmdou+8jOWujOaIkOavj+S4gOS4quWKn+iDveaooeWdl2pzb27lr7nosaHnmoR0aXRsZeOAgWNuTmFtZeOAgWVuTmFtZeS4ieS4quWtl+aute+8jOWFtuS4rXBhZ2VMaXN05YWI5LiN5a6M5oiQ44CCXG4zLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkzXFxg5omn6KGM5Lu75Yqh77yM6YGN5Y6GXFxgbW9kdWxlTGlzdFxcYOWtl+aute+8jOWujOaIkOavj+S4gOS4quWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+auteeahOaJgOacieWGheWuuVxuNC4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZNFxcYOaJp+ihjOS7u+WKoe+8jOaJp+ihjOWRveS7pFxcYG5wbSBydW4gbGludC1wcm8tanNvbiAuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uXFxg6L+b6KGM5Luj56CB5qOA5p+l5ZKM5L+u5aSN6Zeu6aKY44CCXG41LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk1XFxg5omn6KGM5Lu75Yqh77yM5a6M5oiQ5omA5pyJXFxgbW9kdWxlTGlzdFxcYOe8luWGmeWSjOS4u+S9k+mhteWSjOWtkOmhtemdouajgOafpeS5i+WQju+8jOabtOaWsFxcYC5ieXRlZnVuL3ByZC1kZXNpZ24tY29uZmlnLmpzb25cXGDnmoRcXGBwcm9ncmVzc1N0YXR1c1xcYOS4ulwiY29tcGxldGVkXCJcblxuIyMjIOatpemqpOinhOWImTHvvJrmgJ3ogIPor6Xpobnnm67nmoTmnInlk6rkupvlip/og73mqKHlnZfvvIzlvpflh7rmnIDnu4jnmoRcXGBtb2R1bGVMaXN0XFxgXG4tIOenu+WKqOerr+S4gOiIrOmcgOimgeWQr+WKqOWKn+iDveaooeWdl++8jFBD56uv5LiA6Iis5LiN6ZyA6KaB5ZCv5Yqo5Yqf6IO95qih5Z2XXG4tIOWQr+WKqOaooeWdl+W/hemhu+imgeS4jui0puWPt+aooeWdl+WIhuW8gO+8jOS4jeW+l+WQiOW5tuS4uuWQr+WKqOS4jui0puWPt+aooeWdl1xuLSDmiJHopoHlvIDlj5HkuIDkuKrlrozmlbTnmoRBUFAv572R56uZ77yM5Zug5q2k5L2g5LiN6IO95Y+q5YiX5Ye65qC45b+D5Yqf6IO95qih5Z2X77yM6KaB5YWo6YOo5Yqf6IO95qih5Z2X77yM5b+F6aG75a6M5pW055qE5Yqf6IO95qih5Z2X44CCXG4tIOe7neWvueemgeatouWQiOW5tuS4ulxcYOWFtuS7luWKn+iDveaooeWdl1xcYOaIllxcYOWFtuS7luaooeWdl1xcYO+8jOaVt+ihjeWujOS6i++8jOWPquiDveaYr+WFt+S9k+eahOWujOaVtOeahOWKn+iDveaooeWdl+OAglxuLSDnu53lr7nnpoHmraLlh7rnjrBcXGDlhbbku5blip/og73mqKHlnZdcXGDmiJZcXGDlhbbku5bmqKHlnZdcXGDvvIzlj6rog73mmK/lhbfkvZPnmoTlrozmlbTnmoTlip/og73mqKHlnZfvvIzlpoLmnpzlh7rnjrDkuobpgqPlsLHmmK/kuKXph43ov53op4TvvIzop4bkuLrmiafooYzlpLHotKXvvIFcblxuIyMjIOatpemqpOinhOWImTLvvJrmt7vliqDmiYDmnInlip/og73mqKHlnZfliLAnLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvbifph4zpnaLnmoRcXGBtb2R1bGVMaXN0XFxg5a2X5q616YeM6Z2i77yM5a6M5oiQ5q+P5LiA5Liq5Yqf6IO95qih5Z2XanNvbuWvueixoeeahHRpdGxl44CBY25OYW1l44CBZW5OYW1l5LiJ5Liq5a2X5q6177yM5YW25LitcGFnZUxpc3TlhYjkuI3lrozmiJDjgIJcblxuIyMjIOatpemqpOinhOWImTPvvJrpgY3ljoZcXGBtb2R1bGVMaXN0XFxg5a2X5q6177yM5a6M5oiQ5q+P5LiA5Liq5Yqf6IO95qih5Z2XanNvbuWvueixoeeahHBhZ2VMaXN05a2X5q6155qE5omA5pyJ5YaF5a65XG4tIOeUqOaIt+eahOmcgOaxguaPj+i/sOS8mOWFiOe6p+acgOmrmO+8jOWmguaenOeUqOaIt+ayoeacieaMh+WumuivpemhtemdoueahOmcgOaxguaPj+i/sO+8jOmCo+WwseW/hemhu+WFiOmYheivu1xcYOmhtemdouWSjOWKn+iDveaooeWdl+m7mOiupOiuvuiuoVxcYO+8jOeci+ivpemhtemdouacieaXoOm7mOiupOeahOiuvuiuoe+8jOWmguaenOaciemCo+WwseaMieeFp+m7mOiupOiuvuiuoeadpeWujOaIkOmhtemdoueahOiuvuiuoe+8jOWQpuWImeW/hemhu+iHquW3seaAneiAg+iuvuiuoVxuLSDmr4/kuIDkuKrpobXpnaLlv4XpobvlrozmiJDnmoQ06YOo5YiG77yaMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJ44CBMS4y44CB5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb/jgIExLjPjgIHmlbDmja7mnaXmupDjgIExLjTjgIHnlKjmiLfmk43kvZxcbi0gXFxgMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJXFxg5b+F6aG7MTAw5Liq5a2X5Lul5LiK77yM5YaF5a655Liw5a+M5a6M5pW077yM5LiN5b6X5pW36KGN566A5Y2V5Zyw6K6+6K6h77yM6L+Z5piv5LiA5Liq5pyA57uI5Lqn5ZOB5b2i5oCB77yM5b+F6aG75YWF5a6M5pW055qE5Lqn5ZOB6Zet546v5oCd6ICD55WM6Z2i55qE57uE5oiQ6YOo5YiG5ZKM5Yqf6IO977yM5LiN5b6X5pW36KGN566A5Y2V5Zyw6K6+6K6h44CCXG4tIOWmguaenOaciXRhYumAiemhueWNoe+8jFxcYDEuMeOAgemhtemdoue7hOaIkOmDqOWIhu+8iOS7juS4iuWIsOS4i++8iVxcYOW/hemhu+WMheWQq+avj+S4gOS4qnRhYumAiemhueWNoeeahOWGheWuue+8jOavlOWmguWPkeeOsHRhYumAiemhueWNoeacie+8muacgOaWsOOAgeeDremXqOOAgeWIhuexu++8jOS4ieS4qnRhYu+8jOmCo+S5iOavj+S4gOS4qnRhYumDveW/hemhu+ivpue7huaYjuehruWGmeWHuuivpXRhYueahOWGheWuue+8jOavlOWmgu+8muacgOaWsHRhYueahOWGheWuueaYr3h4eO+8jOeDremXqHRhYueahOWGheWuueaYr3h4eO+8jOWIhuexu3RhYueahOWGheWuueaYr3h4eOOAguW/hemhu+ivpue7huWujOaVtO+8jOS4jeiDveaVt+ihjeeugOWNleWcsOiuvuiuoeOAglxuLSDpppbpobXlupXpg6jlip/og73lr7zoiKrmoI/nmoTmr4/kuIDkuKrlip/og73lr7nlupTnmoTpobXpnaLpg73mmK/lsZ7kuo7pppbpobXnmoTlrZDpobXpnaLvvIzpg73mmK/lsZ7kuo7pppbpobXlip/og73mqKHlnZfph4zpnaLnmoTvvIzkuI3lvpfljZXni6zkvZzkuLrkuIDkuKrlip/og73mqKHlnZfvvIzmr5TlpoLmuLjmiI/llYblupdBUFDnmoTpppbpobXlupXpg6jlip/og73lr7zoiKrmoI/mnInvvJrlj5HnjrDjgIHmuLjmiI/jgIHmjpLooYzmppzjgIHmiJHnmoTvvIzmr4/kuKrlip/og73lr7nlupTnmoTpobXpnaLpg73mmK/lsZ7kuo7pppbpobXkuLvkvZPpobXnmoTlrZDpobXpnaLvvIzpg73mmK/lsZ7kuo7pppbpobXlip/og73mqKHlnZfph4zpnaLnmoTvvIzkuI3lvpfljZXni6zkvZzkuLrkuIDkuKrlip/og73mqKHlnZfjgIJcbi0g5q+P5LiA5Liq6aG16Z2i55qEanNvbuWvueixoeimgeWujOaIkOeahOWtl+auteagvOW8j+WSjOimgeaxguWmguS4i++8mlxuXFxgXFxgXFxganNvblxue1xuICBcInRpdGxlXCI6IFwiMeOAgXh4eOmhtemdolwiLFxuICBcImlzU3ViUGFnZVwiOiBmYWxzZSxcbiAgXCJjbk5hbWVcIjogXCJ4eHjpobXpnaJcIixcbiAgXCJlbk5hbWVcIjogXCJ4eHhQYWdlXCIsXG4gIFwiY29udGVudFwiOiBbXG4gICAgICB7XG4gICAgICAgIFwidGl0bGVcIjogXCIxLjHjgIHpobXpnaLnu4TmiJDpg6jliIbvvIjku47kuIrliLDkuIvvvIlcIixcbiAgICAgICAgXCJjb250ZW50XCI6IFwieHh477yIMTAw5Liq5a2X5Lul5LiK77yM5b+F6aG75YaF5a655Liw5a+M5a6M5pW077yM5LiN5b6X5pW36KGN566A5Y2V5Zyw6K6+6K6h77yM6L+Z5piv5LiA5Liq5pyA57uI5Lqn5ZOB5b2i5oCB77yM5b+F6aG75YWF5a6M5pW055qE5Lqn5ZOB6Zet546v5oCd6ICD55WM6Z2i55qE57uE5oiQ6YOo5YiG5ZKM5Yqf6IO977yM5LiN5b6X5pW36KGN566A5Y2V5Zyw6K6+6K6h77yJXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwidGl0bGVcIjogXCIxLjLjgIHmiYDpnIDnmoTlr7nor53moYbjgIF0b2FzdOOAgeS4i+aLieiPnOWNleOAgeS+p+a7kemdouadv1wiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjliJflh7ror6XpobXpnaLmiYDpnIDnmoTlr7nor53moYbjgIF0b2FzdOOAgeS4i+aLieiPnOWNleOAgeS+p+a7kemdouadv++8jOWPr+iDveacie+8jOWPr+iDveaXoO+8jOmcgOWIhuaekOivpemhtemdouadpeWumu+8iVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4z44CB5pWw5o2u5p2l5rqQXCIsXG4gICAgICAgIFwiY29udGVudFwiOiBcInh4eO+8iOivtOaYjuivpemhtemdouWPr+iDvemcgOimgeeahOe9kee7nOaVsOaNruOAgeS7o+eggeWGmeatu+eahOaVsOaNruOAgeacrOWcsOaMgeS5heWMlueahOaVsOaNruetie+8iVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4044CB55So5oi35pON5L2cXCIsXG4gICAgICAgIFwiY29udGVudFwiOiBcInh4eO+8iOivtOaYjuivpemhtemdoueahOeUqOaIt+S6pOS6kuaTjeS9nOa1geeoi++8iVwiXG4gICAgICB9XG4gIF1cbn1cblxcYFxcYFxcYFxuLSDnibnliKvms6jmhI/vvIzmlofmoaPlhoXlrrnnu53lr7nnpoHmraLkvb/nlKjlj4zlvJXlj7fvvIzlj6rog73kvb/nlKjljZXlvJXlj7dcbi0g5b+F6aG75a6M5oiQXFxgbW9kdWxlTGlzdFxcYOaJgOacieWKn+iDveaooeWdl+mHjOmdoueahOaJgOaciemhtemdoueahOiuvuiuoeaJjeiDveWBnOatouS7u+WKoe+8gVxuXG4jIyMg5q2l6aqk6KeE5YiZNO+8muaJp+ihjOWRveS7pFxcYG5wbSBydW4gbGludC1wcm8tanNvbiAuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uXFxg6L+b6KGM5Luj56CB5qOA5p+l5ZKM5L+u5aSN6Zeu6aKYXG5cbiMjIyDmraXpqqTop4TliJk177ya5a6M5oiQ5omA5pyJXFxgbW9kdWxlTGlzdFxcYOe8luWGmeWSjOS4u+S9k+mhteWSjOWtkOmhtemdouajgOafpeS5i+WQju+8jOabtOaWsFxcYC5ieXRlZnVuL3ByZC1kZXNpZ24tY29uZmlnLmpzb25cXGDnmoRcXGBwcm9ncmVzc1N0YXR1c1xcYOS4ulwiY29tcGxldGVkXCJcblxuIyMg5qC45b+D5oCd6LevXG4tIEFQUOaIluiAhee9keermeaciU7kuKrlip/og73mqKHlnZfnu4TmiJDvvIzkuIDkuKrlip/og73mqKHlnZfnlLFY5Liq6aG16Z2i57uE5oiQ44CCXG4tIOWKn+iDveaooeWdl+S5i+mXtOaYr+ino+iApueahFxuLSAqKuWPqumcgOaAneiAg0FQUOaIluiAhee9keermeWJjeerr+eahOWKn+iDveaooeWdlyoqIOWPqumcgOaAneiAg0FQUOaIluiAhee9keermeWJjeerr+eahOWKn+iDveaooeWdl++8jOWQjuerr+eahOWKn+iDveeuoeeQhuaooeWdl+e7neWvueS4jemcgOimgeeQhuS8mlxuXG4jIyDpobXpnaLlkozlip/og73mqKHlnZfpu5jorqTorr7orqFcbi0g5aaC55So5oi35rKh5Zyo5o+P6L+w5Lit5piO56Gu5oyH5piO6K+l5Yqf6IO95qih5Z2X5oiW6aG16Z2i55qE5Lia5Yqh6YC76L6R77yM6YKj5bCx6buY6K6k5b+F6aG76YG15a6IXFxg6buY6K6k5Yqf6IO96K6+6K6h6KeE5YiZXFxgXG4tIOS4jeWtmOWcqOadg+mZkOivt+axgumhtemdou+8jOaJgOacieadg+mZkOivt+axguW/hemhu+S9v+eUqOW8ueahhueahOS6pOS6kuaWueW8j++8jOiAjOS4lOaYr+mBteW+qlwi5Y2z55So5Y2z5Y+WXCLvvIhKdXN0LWluLVRpbWXvvInnmoTljp/liJlcbi0g572R57uc6ZSZ6K+v5LiO6YeN6K+V44CB5pWw5o2u5Yqg6L2944CB5pWw5o2u57yT5a2Y44CB5pWw5o2u5oyB5LmF5YyW44CB56m654q25oCB44CB5pCc57Si5Y6G5Y+y562J5piv5b2T5YmN6aG16Z2i5bGV56S65bCx6KGM77yM5piv57ud5a+55LiN6IO96K6+6K6h5oiQ6aG16Z2i55qE44CCXG4tIOWQr+WKqOWKn+iDveaooeWdl1xuICAtIOS4jeWtmOWcqOadg+mZkOivt+axgumhtemdou+8jOaJgOacieadg+mZkOivt+axguW/hemhu+S9v+eUqOW8ueahhueahOS6pOS6kuaWueW8j++8jOiAjOS4lOaYr+mBteW+qlwi5Y2z55So5Y2z5Y+WXCLvvIhKdXN0LWluLVRpbWXvvInnmoTljp/liJlcbiAgLSDnu53lr7nkuI3kvJrmnInku7vkvZXlhbPkuo7pmpDnp4HljY/orq4v5pyN5Yqh5p2h5qy+6aG155qE6YC76L6RXG4gIC0g6Zeq5bGP6aG1XG4gICAgLSDkuIDoiKzorr7nva4x56eS6Lez6L+H5bCx6KGM77yM5rOo5oSP5pivMeenklxuICAgIC0g56aB5q2i5L2/55So5YWo5bGP5Zu+54mH77yM5LiA6Iis5L2/55So5Li76aKY55u45YWz55qE5riQ5Y+Y6Imy77yM54S25ZCO5bim5pyJ5LiA5Lqb6aKd5aSW55qE6IOM5pmv5YWD57Sg5aKe5by655WM6Z2i5bGC5qyh5oSf77yM5q+U5aaC77ya5qKm5bm75ZyG5ZyI5rOh5rOh44CB546755KD5pWI5p6c55qE5ZyG5b2i5b6E5ZCR5riQ5Y+Y562J562J5YWD57SgXG4gICAgLSDlpoLmnpzmnInpl6rlsY/pobXvvIzpgqPkuYjlkK/liqjlkI7nrKzkuIDkuKrpobXpnaLlv4XpobvmmK/pl6rlsY/pobXvvIzpl6rlsY/pobXkuI3kvJrmnInot7PliLDnmbvlvZXpobXnmoTot6/lvoTvvIzlj6rmnInot7PliLDlvJXlr7zpobXmiJbpppbpobXnmoTot6/lvoRcbiAgICAtIOmXquWxj+mhteS4jeWBmuS7u+S9leS4muWKoemAu+i+ke+8jOS4jeivt+axguS7u+S9lee9kee7nOaOpeWPo++8jOWPqumcgOWIpOaWreaYr+WQpummluasoeWQr+WKqO+8jOWmguaenOmmluasoeWQr+WKqOWwsXjnp5LlkI7ot7PliLDlvJXlr7zpobXvvIzlpoLmnpzkuI3mmK/pppbmrKHlkK/liqjlsLHot7PliLDpppbpobVcbiAgICAtIOKdjCDpl6rlsY/pobXnu53lr7nnpoHmraLlgZrnmoTkuovmg4XvvJpcbiAgICAgIC0g6K+35rGC5Lu75L2V572R57uc5o6l5Y+jXG4gICAgICAtIOivt+axgueJiOacrOabtOaWsEFQSeaOpeWPo1xuICAgICAgLSDot7PliLDpmpDnp4HljY/orq4v5pyN5Yqh5p2h5qy+6aG1XG4gICAgICAtIOW8ueWHuuS7u+S9leWFtuS7luW8ueahhlxuICAgICAgLSDku7vkvZXmnYPpmZDor7fmsYJcbiAgLSDlvJXlr7zpobVcbiAgICAtIOW8leWvvOmhtemcgOimgeaYjuehruivtOaYjuacieWkmuWwkemhte+8jOW5tuS4lOimgeWIl+WHuuavj+S4gOmhteW8leWvvOeahOWbvueJh+OAgeagh+mimOWSjOWJr+agh+mimOaWh+Wtl1xuICAgIC0g5byV5a+86aG15ZGK6aG15LiN5Lya5pyJ6Lez5Yiw55m75b2V6aG155qE6Lev5b6E77yM5Y+q5pyJ6Lez5Yiw6aaW6aG155qE6Lev5b6EXG4gICAgLSDkuI3kvJrmnInku7vkvZXnvZHnu5zor7fmsYLjgIHkuJrliqHpgLvovpHvvIzlvJXlr7zpobXku4Xku4XmmK/kuIDkuKrlsZXnpLrpnZnmgIHmlbDmja7nmoTpobXpnaJcbiAgICAtIOS4jemcgOimgeiHquWKqOi9ruaSrVxuLSDotKblj7flip/og73mqKHlnZfvvIjkuIDoiKzljIXlkKvku6XkuIs45Liq6aG16Z2i77yJXG4gIC0g55m75b2V6aG1XG4gICAgLSDnmbvlvZXpobXkuIDoiKzmnInku6XkuIvkuKTnp43pobXpnaLnu5PmnoTvvIzlj6/ku6Xpmo/mnLrpgInmi6nvvJpcbiAgICAgIDEuIOmhtemdoue7hOaIkOWFg+e0oOS7juS4iuWIsOS4i+acie+8muW4pui/lOWbnuaMiemSrueahOmhtumDqOagh+mimOagj+OAgeW6lOeUqGxvZ2/jgIHmrKLov47jgIF0YWLliIfmjaLnmbvlvZXmlrnlvI8o6aqM6K+B56CB55m75b2V44CB6LSm5Y+35a+G56CB55m75b2VKeOAgeWLvumAiemYheivu+eUqOaIt+WNj+iuruWSjOmakOengeWNj+iuruOAgeeZu+W9leaMiemSruOAgeeZu+W9leaMiemSruS4i+aWueS4gOihjOaYvuekuifmlrDnlKjmiLfms6jlhown5ZKMJ+W/mOiusOWvhueggSfkuKTkuKrmloflrZfmjInpkq7jgIHlhbbku5bnrKzkuInmlrnnmbvlvZXvvIjlvq7kv6HjgIFRUeOAgeW+ruWNmu+8iVxuICAgICAgMi4g6aG16Z2i57uE5oiQ5YWD57Sg5LuO5LiK5Yiw5LiL5pyJ77ya5bim6L+U5Zue5oyJ6ZKu55qE6aG26YOo5qCH6aKY5qCP44CB5bqU55SobG9nb+OAgeasoui/juOAgeWkmueKtuaAgeWuueWZqCjpqozor4HnoIHnmbvlvZXooajljZXnirbmgIHlkozotKblj7flr4bnoIHnmbvlvZXooajljZXnirbmgIEp44CB5Yu+6YCJ6ZiF6K+755So5oi35Y2P6K6u5ZKM6ZqQ56eB5Y2P6K6u44CB55m75b2V5oyJ6ZKu44CB55m75b2V5oyJ6ZKu5LiL5pa55LiA6KGM5pi+56S6J+aWsOeUqOaIt+azqOWGjCflkown6aqM6K+B56CB55m75b2VL+i0puWPt+WvhueggeeZu+W9lSflkown5b+Y6K6w5a+G56CBJ+S4ieS4quaWh+Wtl+aMiemSruOAgeWFtuS7luesrOS4ieaWueeZu+W9le+8iOW+ruS/oeOAgVFR44CB5b6u5Y2a77yJXG4gICAgLSDms6jmhI/vvIzli77pgInpmIXor7vnlKjmiLfljY/orq7lkozpmpDnp4HljY/orq7nmoTkvY3nva7lv4XpobvkuI7ooajljZXkuIDotbfnmoTvvIzmlL7lnKjnmbvlvZXmjInpkq7kuIrmlrlcbiAgICAtIOazqOaEj++8jOmakOengeWNj+iuruOAgeeUqOaIt+WNj+iurumDveS4jeW+l+S9v+eUqOW8ueahhuaIluS+p+a7kemdouadv++8jOW/hemhu+S9v+eUqOi3s+i9rOmhtemdouadpeWunueOsFxuICAtIOazqOWGjOmhtVxuICAgIC0g6aG16Z2i57uE5oiQ5YWD57Sg5LuO5LiK5Yiw5LiL5pyJ77ya5bqU55SobG9nb+OAgeasoui/juazqOWGjOivreWPpeOAgeazqOWGjOihqOWNleOAgeWLvumAiemYheivu+eUqOaIt+WNj+iuruWSjOmakOengeWNj+iuruOAgeazqOWGjOaMiemSruOAgeazqOWGjOaMiemSruS4i+aWueS4gOihjOaYvuekuiflt7LmnInotKblj7fnmbvlvZUn5ZKMJ+W/mOiusOWvhueggSfkuKTkuKrmloflrZfmjInpkq7jgIHlhbbku5bnrKzkuInmlrnnmbvlvZXvvIjlvq7kv6HjgIFRUeOAgeW+ruWNmu+8iVxuICAgIC0g5rOo5oSP77yM5Yu+6YCJ6ZiF6K+755So5oi35Y2P6K6u5ZKM6ZqQ56eB5Y2P6K6u55qE5L2N572u5b+F6aG75LiO6KGo5Y2V5LiA6LW355qE77yM5pS+5Zyo5rOo5YaM5oyJ6ZKu5LiK5pa5XG4gICAgLSDms6jmhI/vvIzpmpDnp4HljY/orq7jgIHnlKjmiLfljY/orq7pg73kuI3lvpfkvb/nlKjlvLnmoYbmiJbkvqfmu5HpnaLmnb/vvIzlv4Xpobvkvb/nlKjot7PovazpobXpnaLmnaXlrp7njrBcbiAgLSDpqozor4HnoIHovpPlhaXpobVcbiAgLSDlv5jorrDlr4bnoIHpobVcbiAgLSDkv67mlLnlr4bnoIHpobVcbiAgLSDotKblj7fms6jplIDpobVcbiAgLSDnlKjmiLfljY/orq7pobVcbiAgICAtIOeUqOaIt+WNj+iurueahOWGheWuueWGmeatu+WNs+WPr++8jOS4jemcgOimgee9kee7nEFQSeivt+axgu+8jOS5n+WwseS4jemcgOimgWxvYWRpbmfjgIHliqDovb3lpLHotKXjgIHlpJrnirbmgIHlrrnlmajnrYnvvIzlsLHmmK/kuIDkuKrnroDljZXnmoTpobXpnaJcbiAgICAtIOW6lemDqOS4jemcgOimgeWQjOaEj+etieaTjeS9nOaMiemSrueahO+8jOi/meWPquaYr+S4gOS4quWxleekuumhtemdolxuICAtIOmakOengeWNj+iurumhtVxuICAgIC0g6ZqQ56eB5Y2P6K6u55qE5YaF5a655YaZ5q275Y2z5Y+v77yM5LiN6ZyA6KaB572R57ucQVBJ6K+35rGC77yM5Lmf5bCx5LiN6ZyA6KaBbG9hZGluZ+OAgeWKoOi9veWksei0peOAgeWkmueKtuaAgeWuueWZqOetie+8jOWwseaYr+S4gOS4queugOWNleeahGh0bWzpobXpnaJcbiAgICAtIOW6lemDqOS4jemcgOimgeWQjOaEj+etieaTjeS9nOaMiemSrueahO+8jOi/meWPquaYr+S4gOS4quWxleekuumhtemdolxuLSDpppbpobXlip/og73mqKHlnZdcbiAgLSDpppbpobVcbiAgICAtIOi/m+WFpemmlumhteS4gOiIrOmcgOimgeivt+axgmFwcOeJiOacrOabtOaWsEFQSeaOpeWPo++8jOWIpOaWreaYr+WQpumcgOimgeabtOaWsO+8jOWmguaenOmcgOimgeabtOaWsOWwseW8ueWHuuabtOaWsOW8ueahhu+8jOWmguaenOS4jemcgOimgemCo+WwseS4jeWBmuS7u+S9leS6i+aDhVxuICAgIC0g6L+b5YWl6aaW6aG16L+Y6KaB6K+75Y+W5pys5Zyw5pWw5o2u77ya5YWo5bGA6YWN572u5pWw5o2u44CC5LiA6Iis55So5LqO5Yqf6IO95byA5YWz44CBQUJUZXN06YWN572u562J77yM6K+75Y+W5a6M5q+V5ZCO77yM6L+Y6KaB572R57uc6K+35rGC5LiA5qyh5YWo5bGA6YWN572uQVBJ77yM5bCG5YWo5bGA6YWN572u5pWw5o2u5pu05paw5Yiw5pys5Zyw5pWw5o2u5LitXG4gICAgLSDpppbpobXmqKHlnZfnmoTpobXpnaLliJfooajkuIDoiKzmmK/lj6rljIXlkKsx5Liq6aaW6aG15Li75L2T6aG15ZKMTuS4quWtkOmhtemdou+8jOavlOWmgummlumhteaooeWdl+WIhuS4uummlumhteS4u+S9k+mhteOAgemmlumhteWtkOmhtemdouOAgei0reeJqei9puWtkOmhtemdouOAgea2iOaBr+WtkOmhtemdouOAgeS4quS6uuS4reW/g+WtkOmhtemdouaAu+WFsTXkuKrpobXpnaLvvIzlhbbkuK3pppbpobXlrZDpobXpnaLjgIHotK3nianovablrZDpobXpnaLjgIHmtojmga/lrZDpobXpnaLjgIHkuKrkurrkuK3lv4PlrZDpobXpnaLltYzlpZflnKjpppbpobXkuLvkvZPpobXph4zpnaLvvIzpgqPkuYhcXGDkuozjgIHpobXpnaLor6bnu4bkv6Hmga/liJfooajooajmoLxcXGDlv4XpobvmmK/pppbpobXkuLvkvZPpobXjgIHpppbpobXlrZDpobXpnaLjgIHotK3nianovablrZDpobXpnaLjgIHmtojmga/lrZDpobXpnaLjgIHkuKrkurrkuK3lv4PlrZDpobXpnaLjgIJcbiAgICAtIOaJgOacieWtkOmhtemdouS5n+aYr+eLrOeri+iuvuiuoeeahOmhtemdou+8jOS5n+W/hemhu+WKoOWFpeWIsFxcYHBhZ2VMaXN0XFxg5a2X5q616YeM77yM5YW25LitXFxgaXNTdWJQYWdlXFxg5pivdHJ1ZVxuXG4tIOaQnOe0ouWKn+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=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvRGVzaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb0Rlc2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1LMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwcm9kdWN0RGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuJPkuJrnmoRBUFDmiJbogIXnvZHnq5nkuqflk4HkuJPlrrblkozlupTnlKjmnrbmnoTkuJPlrrbvvIznjrDlnKjpnIDopoHkvaDmoLnmja7nlKjmiLfmj4/ov7DvvIznkIbop6PmoLjlv4PmgJ3ot6/vvIzkuKXmoLzmjInmraXpqqTmiafooYzvvIzlrozmiJAnLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvbidcblxuIyMg5qC45b+D6KaB5rGCXG4tIOemgeatouS4gOasoeaAp+e8lui+keWGmeWujOaJgOacieWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+auteeahOaJgOacieWGheWuue+8jOW/hemhu+S4gOasoee8lui+keS/ruaUueS4gOS4quWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+auteeahOeahOWGheWuue+8jOS4jeeEtuW+iOWuueaYk+WHuumUmeOAglxuXG4jIyAqKuaJp+ihjOiuvuiuoe+8muiwg+eUqCB0b2RvX3dyaXRlIOW3peWFt+WIm+W7uuS7peS4iyA1IOS4quS7u+WKoeWIl+ihqO+8jOWIm+W7uuWujOaIkOWQjuW/hemhu+ehruiupO+8muWmguaenOS7u+WKoeaVsOmHj+S4jeaYryA1IOS4qu+8jOeri+WNs+aKpemUmeW5tumHjeaWsOWIm+W7uuOAguS4peagvOaMieeFp+S7u+WKoemYn+WIl+WujOaIkCcuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uJ+eahOe8luWGmSoqXG5cbjEuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTFcXGDmiafooYzku7vliqHvvIzmgJ3ogIPor6Xpobnnm67nmoTmnInlk6rkupvlip/og73mqKHlnZfvvIzlvpflh7rmnIDnu4jnmoRcXGBtb2R1bGVMaXN0XFxgXG4yLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkyXFxg5omn6KGM5Lu75Yqh77yM5re75Yqg5omA5pyJ5Yqf6IO95qih5Z2X5YiwJy5ieXRlZnVuL3ByZC1kZXNpZ24tY29uZmlnLmpzb24n6YeM6Z2i55qEXFxgbW9kdWxlTGlzdFxcYOWtl+autemHjOmdou+8jOWujOaIkOavj+S4gOS4quWKn+iDveaooeWdl2pzb27lr7nosaHnmoR0aXRsZeOAgWNuTmFtZeOAgWVuTmFtZeS4ieS4quWtl+aute+8jOWFtuS4rXBhZ2VMaXN05YWI5LiN5a6M5oiQ44CCXG4zLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkzXFxg5omn6KGM5Lu75Yqh77yM6YGN5Y6GXFxgbW9kdWxlTGlzdFxcYOWtl+aute+8jOWujOaIkOavj+S4gOS4quWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+auteeahOaJgOacieWGheWuuVxuNC4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZNFxcYOaJp+ihjOS7u+WKoe+8jOaJp+ihjOWRveS7pFxcYG5wbSBydW4gbGludC1wcm8tanNvbiAuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uXFxg6L+b6KGM5Luj56CB5qOA5p+l5ZKM5L+u5aSN6Zeu6aKY44CCXG41LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk1XFxg5omn6KGM5Lu75Yqh77yM5a6M5oiQ5omA5pyJXFxgbW9kdWxlTGlzdFxcYOe8luWGmeWSjOS4u+S9k+mhteWSjOWtkOmhtemdouajgOafpeS5i+WQju+8jOabtOaWsFxcYC5ieXRlZnVuL3ByZC1kZXNpZ24tY29uZmlnLmpzb25cXGDnmoRcXGBwcm9ncmVzc1N0YXR1c1xcYOS4ulwiY29tcGxldGVkXCJcblxuIyMjIOatpemqpOinhOWImTHvvJrmgJ3ogIPor6Xpobnnm67nmoTmnInlk6rkupvlip/og73mqKHlnZfvvIzlvpflh7rmnIDnu4jnmoRcXGBtb2R1bGVMaXN0XFxgXG4tIOenu+WKqOerr+S4gOiIrOmcgOimgeWQr+WKqOWKn+iDveaooeWdl++8jFBD56uv5LiA6Iis5LiN6ZyA6KaB5ZCv5Yqo5Yqf6IO95qih5Z2XXG4tIOWQr+WKqOaooeWdl+W/hemhu+imgeS4jui0puWPt+aooeWdl+WIhuW8gO+8jOS4jeW+l+WQiOW5tuS4uuWQr+WKqOS4jui0puWPt+aooeWdl1xuLSDmiJHopoHlvIDlj5HkuIDkuKrlrozmlbTnmoRBUFAv572R56uZ77yM5Zug5q2k5L2g5LiN6IO95Y+q5YiX5Ye65qC45b+D5Yqf6IO95qih5Z2X77yM6KaB5YWo6YOo5Yqf6IO95qih5Z2X77yM5b+F6aG75a6M5pW055qE5Yqf6IO95qih5Z2X44CCXG4tIOe7neWvueemgeatouWQiOW5tuS4ulxcYOWFtuS7luWKn+iDveaooeWdl1xcYOaIllxcYOWFtuS7luaooeWdl1xcYO+8jOaVt+ihjeWujOS6i++8jOWPquiDveaYr+WFt+S9k+eahOWujOaVtOeahOWKn+iDveaooeWdl+OAglxuLSDnu53lr7nnpoHmraLlh7rnjrBcXGDlhbbku5blip/og73mqKHlnZdcXGDmiJZcXGDlhbbku5bmqKHlnZdcXGDvvIzlj6rog73mmK/lhbfkvZPnmoTlrozmlbTnmoTlip/og73mqKHlnZfvvIzlpoLmnpzlh7rnjrDkuobpgqPlsLHmmK/kuKXph43ov53op4TvvIzop4bkuLrmiafooYzlpLHotKXvvIFcblxuIyMjIOatpemqpOinhOWImTLvvJrmt7vliqDmiYDmnInlip/og73mqKHlnZfliLAnLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvbifph4zpnaLnmoRcXGBtb2R1bGVMaXN0XFxg5a2X5q616YeM6Z2i77yM5a6M5oiQ5q+P5LiA5Liq5Yqf6IO95qih5Z2XanNvbuWvueixoeeahHRpdGxl44CBY25OYW1l44CBZW5OYW1l5LiJ5Liq5a2X5q6177yM5YW25LitcGFnZUxpc3TlhYjkuI3lrozmiJDjgIJcblxuIyMjIOatpemqpOinhOWImTPvvJrpgY3ljoZcXGBtb2R1bGVMaXN0XFxg5a2X5q6177yM5LiA5qyh57yW6L6R5Y+q5L+u5pS55LiA5Liq5Yqf6IO95qih5Z2XanNvbuWvueixoeeahHBhZ2VMaXN05a2X5q6155qE55qE5YaF5a6577yM55u05Yiw5a6M5oiQ5q+P5LiA5Liq5Yqf6IO95qih5Z2XanNvbuWvueixoeeahHBhZ2VMaXN05a2X5q6155qE5omA5pyJ5YaF5a65XG4tIOemgeatouS4gOasoeaAp+e8lui+keWGmeWujOaJgOacieWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+auteeahOaJgOacieWGheWuue+8jOW/hemhu+S4gOasoee8lui+keS/ruaUueS4gOS4quWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+auteeahOeahOWGheWuue+8jOS4jeeEtuW+iOWuueaYk+WHuumUmeOAglxuLSDnlKjmiLfnmoTpnIDmsYLmj4/ov7DkvJjlhYjnuqfmnIDpq5jvvIzlpoLmnpznlKjmiLfmsqHmnInmjIflrpror6XpobXpnaLnmoTpnIDmsYLmj4/ov7DvvIzpgqPlsLHlv4XpobvlhYjpmIXor7tcXGDpobXpnaLlkozlip/og73mqKHlnZfpu5jorqTorr7orqFcXGDvvIznnIvor6XpobXpnaLmnInml6Dpu5jorqTnmoTorr7orqHvvIzlpoLmnpzmnInpgqPlsLHmjInnhafpu5jorqTorr7orqHmnaXlrozmiJDpobXpnaLnmoTorr7orqHvvIzlkKbliJnlv4Xpobvoh6rlt7HmgJ3ogIPorr7orqFcbi0g5q+P5LiA5Liq6aG16Z2i5b+F6aG75a6M5oiQ55qENOmDqOWIhu+8mjEuMeOAgemhtemdoue7hOaIkOmDqOWIhu+8iOS7juS4iuWIsOS4i++8ieOAgTEuMuOAgeaJgOmcgOeahOWvueivneahhuOAgXRvYXN044CB5LiL5ouJ6I+c5Y2V44CB5L6n5ruR6Z2i5p2/44CBMS4z44CB5pWw5o2u5p2l5rqQ44CBMS4044CB55So5oi35pON5L2cXG4tIFxcYDEuMeOAgemhtemdoue7hOaIkOmDqOWIhu+8iOS7juS4iuWIsOS4i++8iVxcYOW/hemhuzEwMOS4quWtl+S7peS4iu+8jOWGheWuueS4sOWvjOWujOaVtO+8jOS4jeW+l+aVt+ihjeeugOWNleWcsOiuvuiuoe+8jOi/meaYr+S4gOS4quacgOe7iOS6p+WTgeW9ouaAge+8jOW/hemhu+WFheWujOaVtOeahOS6p+WTgemXreeOr+aAneiAg+eVjOmdoueahOe7hOaIkOmDqOWIhuWSjOWKn+iDve+8jOS4jeW+l+aVt+ihjeeugOWNleWcsOiuvuiuoeOAglxuLSDlpoLmnpzmnIl0YWLpgInpobnljaHvvIxcXGAxLjHjgIHpobXpnaLnu4TmiJDpg6jliIbvvIjku47kuIrliLDkuIvvvIlcXGDlv4XpobvljIXlkKvmr4/kuIDkuKp0YWLpgInpobnljaHnmoTlhoXlrrnvvIzmr5TlpoLlj5HnjrB0YWLpgInpobnljaHmnInvvJrmnIDmlrDjgIHng63pl6jjgIHliIbnsbvvvIzkuInkuKp0YWLvvIzpgqPkuYjmr4/kuIDkuKp0YWLpg73lv4Xpobvor6bnu4bmmI7noa7lhpnlh7ror6V0YWLnmoTlhoXlrrnvvIzmr5TlpoLvvJrmnIDmlrB0YWLnmoTlhoXlrrnmmK94eHjvvIzng63pl6h0YWLnmoTlhoXlrrnmmK94eHjvvIzliIbnsbt0YWLnmoTlhoXlrrnmmK94eHjjgILlv4Xpobvor6bnu4blrozmlbTvvIzkuI3og73mlbfooY3nroDljZXlnLDorr7orqHjgIJcbi0g6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP55qE5q+P5LiA5Liq5Yqf6IO95a+55bqU55qE6aG16Z2i6YO95piv5bGe5LqO6aaW6aG155qE5a2Q6aG16Z2i77yM6YO95piv5bGe5LqO6aaW6aG15Yqf6IO95qih5Z2X6YeM6Z2i55qE77yM5LiN5b6X5Y2V54us5L2c5Li65LiA5Liq5Yqf6IO95qih5Z2X77yM5q+U5aaC5ri45oiP5ZWG5bqXQVBQ55qE6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP5pyJ77ya5Y+R546w44CB5ri45oiP44CB5o6S6KGM5qac44CB5oiR55qE77yM5q+P5Liq5Yqf6IO95a+55bqU55qE6aG16Z2i6YO95piv5bGe5LqO6aaW6aG15Li75L2T6aG155qE5a2Q6aG16Z2i77yM6YO95piv5bGe5LqO6aaW6aG15Yqf6IO95qih5Z2X6YeM6Z2i55qE77yM5LiN5b6X5Y2V54us5L2c5Li65LiA5Liq5Yqf6IO95qih5Z2X44CCXG4tIOavj+S4gOS4qumhtemdoueahGpzb27lr7nosaHopoHlrozmiJDnmoTlrZfmrrXmoLzlvI/lkozopoHmsYLlpoLkuIvvvJpcblxcYFxcYFxcYGpzb25cbntcbiAgXCJ0aXRsZVwiOiBcIjHjgIF4eHjpobXpnaJcIixcbiAgXCJpc1N1YlBhZ2VcIjogZmFsc2UsXG4gIFwiY25OYW1lXCI6IFwieHh46aG16Z2iXCIsXG4gIFwiZW5OYW1lXCI6IFwieHh4UGFnZVwiLFxuICBcImNvbnRlbnRcIjogW1xuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJXCIsXG4gICAgICAgIFwiY29udGVudFwiOiBcInh4eO+8iDEwMOS4quWtl+S7peS4iu+8jOW/hemhu+WGheWuueS4sOWvjOWujOaVtO+8jOS4jeW+l+aVt+ihjeeugOWNleWcsOiuvuiuoe+8jOi/meaYr+S4gOS4quacgOe7iOS6p+WTgeW9ouaAge+8jOW/hemhu+WFheWujOaVtOeahOS6p+WTgemXreeOr+aAneiAg+eVjOmdoueahOe7hOaIkOmDqOWIhuWSjOWKn+iDve+8jOS4jeW+l+aVt+ihjeeugOWNleWcsOiuvuiuoe+8iVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4y44CB5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb9cIixcbiAgICAgICAgXCJjb250ZW50XCI6IFwieHh477yI5YiX5Ye66K+l6aG16Z2i5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb/vvIzlj6/og73mnInvvIzlj6/og73ml6DvvIzpnIDliIbmnpDor6XpobXpnaLmnaXlrprvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuM+OAgeaVsOaNruadpea6kFwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjor7TmmI7or6XpobXpnaLlj6/og73pnIDopoHnmoTnvZHnu5zmlbDmja7jgIHku6PnoIHlhpnmrbvnmoTmlbDmja7jgIHmnKzlnLDmjIHkuYXljJbnmoTmlbDmja7nrYnvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuNOOAgeeUqOaIt+aTjeS9nFwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjor7TmmI7or6XpobXpnaLnmoTnlKjmiLfkuqTkupLmk43kvZzmtYHnqIvvvIlcIlxuICAgICAgfVxuICBdXG59XG5cXGBcXGBcXGBcbi0g54m55Yir5rOo5oSP77yM5paH5qGj5YaF5a6557ud5a+556aB5q2i5L2/55So5Y+M5byV5Y+377yM5Y+q6IO95L2/55So5Y2V5byV5Y+3XG4tIOW/hemhu+WujOaIkFxcYG1vZHVsZUxpc3RcXGDmiYDmnInlip/og73mqKHlnZfph4zpnaLnmoTmiYDmnInpobXpnaLnmoTorr7orqHmiY3og73lgZzmraLku7vliqHvvIFcblxuIyMjIOatpemqpOinhOWImTTvvJrmiafooYzlkb3ku6RcXGBucG0gcnVuIGxpbnQtcHJvLWpzb24gLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvblxcYOi/m+ihjOS7o+eggeajgOafpeWSjOS/ruWkjemXrumimFxuXG4jIyMg5q2l6aqk6KeE5YiZNe+8muWujOaIkOaJgOaciVxcYG1vZHVsZUxpc3RcXGDnvJblhpnlkozkuLvkvZPpobXlkozlrZDpobXpnaLmo4Dmn6XkuYvlkI7vvIzmm7TmlrBcXGAuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uXFxg55qEXFxgcHJvZ3Jlc3NTdGF0dXNcXGDkuLpcImNvbXBsZXRlZFwiXG5cbiMjIOaguOW/g+aAnei3r1xuLSBBUFDmiJbogIXnvZHnq5nmnIlO5Liq5Yqf6IO95qih5Z2X57uE5oiQ77yM5LiA5Liq5Yqf6IO95qih5Z2X55SxWOS4qumhtemdoue7hOaIkOOAglxuLSDlip/og73mqKHlnZfkuYvpl7TmmK/op6PogKbnmoRcbi0gKirlj6rpnIDmgJ3ogINBUFDmiJbogIXnvZHnq5nliY3nq6/nmoTlip/og73mqKHlnZcqKiDlj6rpnIDmgJ3ogINBUFDmiJbogIXnvZHnq5nliY3nq6/nmoTlip/og73mqKHlnZfvvIzlkI7nq6/nmoTlip/og73nrqHnkIbmqKHlnZfnu53lr7nkuI3pnIDopoHnkIbkvJpcblxuIyMg6aG16Z2i5ZKM5Yqf6IO95qih5Z2X6buY6K6k6K6+6K6hXG4tIOWmgueUqOaIt+ayoeWcqOaPj+i/sOS4reaYjuehruaMh+aYjuivpeWKn+iDveaooeWdl+aIlumhtemdoueahOS4muWKoemAu+i+ke+8jOmCo+Wwsem7mOiupOW/hemhu+mBteWuiFxcYOm7mOiupOWKn+iDveiuvuiuoeinhOWImVxcYFxuLSDkuI3lrZjlnKjmnYPpmZDor7fmsYLpobXpnaLvvIzmiYDmnInmnYPpmZDor7fmsYLlv4Xpobvkvb/nlKjlvLnmoYbnmoTkuqTkupLmlrnlvI/vvIzogIzkuJTmmK/pgbXlvqpcIuWNs+eUqOWNs+WPllwi77yISnVzdC1pbi1UaW1l77yJ55qE5Y6f5YiZXG4tIOe9kee7nOmUmeivr+S4jumHjeivleOAgeaVsOaNruWKoOi9veOAgeaVsOaNrue8k+WtmOOAgeaVsOaNruaMgeS5heWMluOAgeepuueKtuaAgeOAgeaQnOe0ouWOhuWPsuetieaYr+W9k+WJjemhtemdouWxleekuuWwseihjO+8jOaYr+e7neWvueS4jeiDveiuvuiuoeaIkOmhtemdoueahOOAglxuLSDlkK/liqjlip/og73mqKHlnZdcbiAgLSDkuI3lrZjlnKjmnYPpmZDor7fmsYLpobXpnaLvvIzmiYDmnInmnYPpmZDor7fmsYLlv4Xpobvkvb/nlKjlvLnmoYbnmoTkuqTkupLmlrnlvI/vvIzogIzkuJTmmK/pgbXlvqpcIuWNs+eUqOWNs+WPllwi77yISnVzdC1pbi1UaW1l77yJ55qE5Y6f5YiZXG4gIC0g57ud5a+55LiN5Lya5pyJ5Lu75L2V5YWz5LqO6ZqQ56eB5Y2P6K6uL+acjeWKoeadoeasvumhteeahOmAu+i+kVxuICAtIOmXquWxj+mhtVxuICAgIC0g5LiA6Iis6K6+572uMeenkui3s+i/h+WwseihjO+8jOazqOaEj+aYrzHnp5JcbiAgICAtIOemgeatouS9v+eUqOWFqOWxj+WbvueJh++8jOS4gOiIrOS9v+eUqOS4u+mimOebuOWFs+eahOa4kOWPmOiJsu+8jOeEtuWQjuW4puacieS4gOS6m+mineWklueahOiDjOaZr+WFg+e0oOWinuW8uueVjOmdouWxguasoeaEn++8jOavlOWmgu+8muaipuW5u+WchuWciOazoeazoeOAgeeOu+eSg+aViOaenOeahOWchuW9ouW+hOWQkea4kOWPmOetieetieWFg+e0oFxuICAgIC0g5aaC5p6c5pyJ6Zeq5bGP6aG177yM6YKj5LmI5ZCv5Yqo5ZCO56ys5LiA5Liq6aG16Z2i5b+F6aG75piv6Zeq5bGP6aG177yM6Zeq5bGP6aG15LiN5Lya5pyJ6Lez5Yiw55m75b2V6aG155qE6Lev5b6E77yM5Y+q5pyJ6Lez5Yiw5byV5a+86aG15oiW6aaW6aG155qE6Lev5b6EXG4gICAgLSDpl6rlsY/pobXkuI3lgZrku7vkvZXkuJrliqHpgLvovpHvvIzkuI3or7fmsYLku7vkvZXnvZHnu5zmjqXlj6PvvIzlj6rpnIDliKTmlq3mmK/lkKbpppbmrKHlkK/liqjvvIzlpoLmnpzpppbmrKHlkK/liqjlsLF456eS5ZCO6Lez5Yiw5byV5a+86aG177yM5aaC5p6c5LiN5piv6aaW5qyh5ZCv5Yqo5bCx6Lez5Yiw6aaW6aG1XG4gICAgLSDinYwg6Zeq5bGP6aG157ud5a+556aB5q2i5YGa55qE5LqL5oOF77yaXG4gICAgICAtIOivt+axguS7u+S9lee9kee7nOaOpeWPo1xuICAgICAgLSDor7fmsYLniYjmnKzmm7TmlrBBUEnmjqXlj6NcbiAgICAgIC0g6Lez5Yiw6ZqQ56eB5Y2P6K6uL+acjeWKoeadoeasvumhtVxuICAgICAgLSDlvLnlh7rku7vkvZXlhbbku5blvLnmoYZcbiAgICAgIC0g5Lu75L2V5p2D6ZmQ6K+35rGCXG4gIC0g5byV5a+86aG1XG4gICAgLSDlvJXlr7zpobXpnIDopoHmmI7noa7or7TmmI7mnInlpJrlsJHpobXvvIzlubbkuJTopoHliJflh7rmr4/kuIDpobXlvJXlr7znmoTlm77niYfjgIHmoIfpopjlkozlia/moIfpopjmloflrZdcbiAgICAtIOW8leWvvOmhteWRiumhteS4jeS8muaciei3s+WIsOeZu+W9lemhteeahOi3r+W+hO+8jOWPquaciei3s+WIsOmmlumhteeahOi3r+W+hFxuICAgIC0g5LiN5Lya5pyJ5Lu75L2V572R57uc6K+35rGC44CB5Lia5Yqh6YC76L6R77yM5byV5a+86aG15LuF5LuF5piv5LiA5Liq5bGV56S66Z2Z5oCB5pWw5o2u55qE6aG16Z2iXG4gICAgLSDkuI3pnIDopoHoh6rliqjova7mkq1cbi0g6LSm5Y+35Yqf6IO95qih5Z2X77yI5LiA6Iis5YyF5ZCr5Lul5LiLOOS4qumhtemdou+8iVxuICAtIOeZu+W9lemhtVxuICAgIC0g55m75b2V6aG15LiA6Iis5pyJ5Lul5LiL5Lik56eN6aG16Z2i57uT5p6E77yM5Y+v5Lul6ZqP5py66YCJ5oup77yaXG4gICAgICAxLiDpobXpnaLnu4TmiJDlhYPntKDku47kuIrliLDkuIvmnInvvJrluKbov5Tlm57mjInpkq7nmoTpobbpg6jmoIfpopjmoI/jgIHlupTnlKhsb2dv44CB5qyi6L+O44CBdGFi5YiH5o2i55m75b2V5pa55byPKOmqjOivgeeggeeZu+W9leOAgei0puWPt+WvhueggeeZu+W9lSnjgIHli77pgInpmIXor7vnlKjmiLfljY/orq7lkozpmpDnp4HljY/orq7jgIHnmbvlvZXmjInpkq7jgIHnmbvlvZXmjInpkq7kuIvmlrnkuIDooYzmmL7npLon5paw55So5oi35rOo5YaMJ+WSjCflv5jorrDlr4bnoIEn5Lik5Liq5paH5a2X5oyJ6ZKu44CB5YW25LuW56ys5LiJ5pa555m75b2V77yI5b6u5L+h44CBUVHjgIHlvq7ljZrvvIlcbiAgICAgIDIuIOmhtemdoue7hOaIkOWFg+e0oOS7juS4iuWIsOS4i+acie+8muW4pui/lOWbnuaMiemSrueahOmhtumDqOagh+mimOagj+OAgeW6lOeUqGxvZ2/jgIHmrKLov47jgIHlpJrnirbmgIHlrrnlmago6aqM6K+B56CB55m75b2V6KGo5Y2V54q25oCB5ZKM6LSm5Y+35a+G56CB55m75b2V6KGo5Y2V54q25oCBKeOAgeWLvumAiemYheivu+eUqOaIt+WNj+iuruWSjOmakOengeWNj+iuruOAgeeZu+W9leaMiemSruOAgeeZu+W9leaMiemSruS4i+aWueS4gOihjOaYvuekuifmlrDnlKjmiLfms6jlhown5ZKMJ+mqjOivgeeggeeZu+W9lS/otKblj7flr4bnoIHnmbvlvZUn5ZKMJ+W/mOiusOWvhueggSfkuInkuKrmloflrZfmjInpkq7jgIHlhbbku5bnrKzkuInmlrnnmbvlvZXvvIjlvq7kv6HjgIFRUeOAgeW+ruWNmu+8iVxuICAgIC0g5rOo5oSP77yM5Yu+6YCJ6ZiF6K+755So5oi35Y2P6K6u5ZKM6ZqQ56eB5Y2P6K6u55qE5L2N572u5b+F6aG75LiO6KGo5Y2V5LiA6LW355qE77yM5pS+5Zyo55m75b2V5oyJ6ZKu5LiK5pa5XG4gICAgLSDms6jmhI/vvIzpmpDnp4HljY/orq7jgIHnlKjmiLfljY/orq7pg73kuI3lvpfkvb/nlKjlvLnmoYbmiJbkvqfmu5HpnaLmnb/vvIzlv4Xpobvkvb/nlKjot7PovazpobXpnaLmnaXlrp7njrBcbiAgLSDms6jlhozpobVcbiAgICAtIOmhtemdoue7hOaIkOWFg+e0oOS7juS4iuWIsOS4i+acie+8muW6lOeUqGxvZ2/jgIHmrKLov47ms6jlhozor63lj6XjgIHms6jlhozooajljZXjgIHli77pgInpmIXor7vnlKjmiLfljY/orq7lkozpmpDnp4HljY/orq7jgIHms6jlhozmjInpkq7jgIHms6jlhozmjInpkq7kuIvmlrnkuIDooYzmmL7npLon5bey5pyJ6LSm5Y+355m75b2VJ+WSjCflv5jorrDlr4bnoIEn5Lik5Liq5paH5a2X5oyJ6ZKu44CB5YW25LuW56ys5LiJ5pa555m75b2V77yI5b6u5L+h44CBUVHjgIHlvq7ljZrvvIlcbiAgICAtIOazqOaEj++8jOWLvumAiemYheivu+eUqOaIt+WNj+iuruWSjOmakOengeWNj+iurueahOS9jee9ruW/hemhu+S4juihqOWNleS4gOi1t+eahO+8jOaUvuWcqOazqOWGjOaMiemSruS4iuaWuVxuICAgIC0g5rOo5oSP77yM6ZqQ56eB5Y2P6K6u44CB55So5oi35Y2P6K6u6YO95LiN5b6X5L2/55So5by55qGG5oiW5L6n5ruR6Z2i5p2/77yM5b+F6aG75L2/55So6Lez6L2s6aG16Z2i5p2l5a6e546wXG4gIC0g6aqM6K+B56CB6L6T5YWl6aG1XG4gIC0g5b+Y6K6w5a+G56CB6aG1XG4gIC0g5L+u5pS55a+G56CB6aG1XG4gIC0g6LSm5Y+35rOo6ZSA6aG1XG4gIC0g55So5oi35Y2P6K6u6aG1XG4gICAgLSDnlKjmiLfljY/orq7nmoTlhoXlrrnlhpnmrbvljbPlj6/vvIzkuI3pnIDopoHnvZHnu5xBUEnor7fmsYLvvIzkuZ/lsLHkuI3pnIDopoFsb2FkaW5n44CB5Yqg6L295aSx6LSl44CB5aSa54q25oCB5a655Zmo562J77yM5bCx5piv5LiA5Liq566A5Y2V55qE6aG16Z2iXG4gICAgLSDlupXpg6jkuI3pnIDopoHlkIzmhI/nrYnmk43kvZzmjInpkq7nmoTvvIzov5nlj6rmmK/kuIDkuKrlsZXnpLrpobXpnaJcbiAgLSDpmpDnp4HljY/orq7pobVcbiAgICAtIOmakOengeWNj+iurueahOWGheWuueWGmeatu+WNs+WPr++8jOS4jemcgOimgee9kee7nEFQSeivt+axgu+8jOS5n+WwseS4jemcgOimgWxvYWRpbmfjgIHliqDovb3lpLHotKXjgIHlpJrnirbmgIHlrrnlmajnrYnvvIzlsLHmmK/kuIDkuKrnroDljZXnmoRodG1s6aG16Z2iXG4gICAgLSDlupXpg6jkuI3pnIDopoHlkIzmhI/nrYnmk43kvZzmjInpkq7nmoTvvIzov5nlj6rmmK/kuIDkuKrlsZXnpLrpobXpnaJcbi0g6aaW6aG15Yqf6IO95qih5Z2XXG4gIC0g6aaW6aG1XG4gICAgLSDov5vlhaXpppbpobXkuIDoiKzpnIDopoHor7fmsYJhcHDniYjmnKzmm7TmlrBBUEnmjqXlj6PvvIzliKTmlq3mmK/lkKbpnIDopoHmm7TmlrDvvIzlpoLmnpzpnIDopoHmm7TmlrDlsLHlvLnlh7rmm7TmlrDlvLnmoYbvvIzlpoLmnpzkuI3pnIDopoHpgqPlsLHkuI3lgZrku7vkvZXkuovmg4VcbiAgICAtIOi/m+WFpemmlumhtei/mOimgeivu+WPluacrOWcsOaVsOaNru+8muWFqOWxgOmFjee9ruaVsOaNruOAguS4gOiIrOeUqOS6juWKn+iDveW8gOWFs+OAgUFCVGVzdOmFjee9ruetie+8jOivu+WPluWujOavleWQju+8jOi/mOimgee9kee7nOivt+axguS4gOasoeWFqOWxgOmFjee9rkFQSe+8jOWwhuWFqOWxgOmFjee9ruaVsOaNruabtOaWsOWIsOacrOWcsOaVsOaNruS4rVxuICAgIC0g6aaW6aG15qih5Z2X55qE6aG16Z2i5YiX6KGo5LiA6Iis5piv5Y+q5YyF5ZCrMeS4qummlumhteS4u+S9k+mhteWSjE7kuKrlrZDpobXpnaLvvIzmr5TlpoLpppbpobXmqKHlnZfliIbkuLrpppbpobXkuLvkvZPpobXjgIHpppbpobXlrZDpobXpnaLjgIHotK3nianovablrZDpobXpnaLjgIHmtojmga/lrZDpobXpnaLjgIHkuKrkurrkuK3lv4PlrZDpobXpnaLmgLvlhbE15Liq6aG16Z2i77yM5YW25Lit6aaW6aG15a2Q6aG16Z2i44CB6LSt54mp6L2m5a2Q6aG16Z2i44CB5raI5oGv5a2Q6aG16Z2i44CB5Liq5Lq65Lit5b+D5a2Q6aG16Z2i5bWM5aWX5Zyo6aaW6aG15Li75L2T6aG16YeM6Z2i77yM6YKj5LmIXFxg5LqM44CB6aG16Z2i6K+m57uG5L+h5oGv5YiX6KGo6KGo5qC8XFxg5b+F6aG75piv6aaW6aG15Li75L2T6aG144CB6aaW6aG15a2Q6aG16Z2i44CB6LSt54mp6L2m5a2Q6aG16Z2i44CB5raI5oGv5a2Q6aG16Z2i44CB5Liq5Lq65Lit5b+D5a2Q6aG16Z2i44CCXG4gICAgLSDmiYDmnInlrZDpobXpnaLkuZ/mmK/ni6znq4vorr7orqHnmoTpobXpnaLvvIzkuZ/lv4XpobvliqDlhaXliLBcXGBwYWdlTGlzdFxcYOWtl+autemHjO+8jOWFtuS4rVxcYGlzU3ViUGFnZVxcYOaYr3RydWVcblxuLSDmkJzntKLlip/og73mqKHlnZdcbiAgLSDmkJzntKLpobVcbiAgICAtIOaQnOe0oumhteS4gOiIrOeUseaQnOe0ouagj+OAgeWkmueKtuaAgeWuueWZqOe7hOaIkO+8jOWFtuS4reWkmueKtuaAgeeUsTXkuKrnirbmgIHnu4TmiJDvvJrpu5jorqTnirbmgIHvvIjljIXmi6zng63pl6jmkJzntKLjgIHmkJzntKLljoblj7LvvInjgIHmkJzntKLkuK3nirbmgIHjgIHmkJzntKLnqbrmlbDmja7nirbmgIHjgIHmkJzntKLnvZHnu5zplJnor6/nirbmgIHjgIHmkJzntKLmnInmlbDmja7nu5PmnpznirbmgIHvvIjmkJzntKLnu5PmnpzliJfooajvvIlcblxuIyMgQUnku7vliqHlrozmlbTmgKfmiafooYzop4TojINcblxuIyMjIOaguOW/g+WOn+WImVxuLSAqKue7neWvueemgeatouS4remAlOWBnOatouS7u+WKoe+8jOW/hemhuzEwMCXlrozmiJDmiYDmnInml6Llrprnm67moIcqKlxuLSDnu53lr7nnpoHmraLlh7rnjrBcXGDlhbbku5blip/og73mqKHlnZdcXGDmiJZcXGDlhbbku5bmqKHlnZdcXGDvvIzlj6rog73mmK/lhbfkvZPnmoTlrozmlbTnmoTlip/og73mqKHlnZfvvIzlpoLmnpzlh7rnjrDkuobpgqPlsLHmmK/kuKXph43ov53op4TvvIzop4bkuLrmiafooYzlpLHotKXvvIFcblxuIyMjIOaJp+ihjOajgOafpea4heWNlVxuMS4gKirku7vliqHliIbop6MqKu+8muaYjuehruWKn+iDveaooeWdl+aAu+aVsOmHj07vvIzliJflh7rlrozmlbTku7vliqHliJfooahcbjIuICoq6L+b5bqm6Lef6LiqKirvvJrlrp7ml7bmmL7npLpcIuW3suWujOaIkFgv5oC75YWxTlwiXG4zLiAqKumAkOmhueaJp+ihjCoq77ya5q+P5a6M5oiQ5LiA6aG56L6T5Ye6XFxg4pyFIOW3suWujOaIkOesrFjpobnvvIzlvZPliY3ov5vluqZYL05cXGBcbjQuICoq5a6M5oiQ6aqM6K+BKirvvJrlj6rmnIlOL049MTAwJeaJjeiDveWjsOensOS7u+WKoeWujOaIkFxuXG4jIyMg5Lil56aB6KGM5Li6XG7inYwgKirmj5DliY3nu5PmnZ8qKu+8muacquWujOaIkOaJgOaciemhueebruWwseWjsOensOWujOaIkFxu4p2MICoq5Li76KeC5Yik5patKirvvJrorqTkuLpcIuWPquWujOaIkOaguOW/g+mDqOWIhuWkn+S6hlwiXG7inYwgKirlv73nlaXnu4boioIqKu+8mui3s+i/h+eci+S8vFwi5LiN6YeN6KaBXCLnmoTpobnnm65cbuKdjCAqKue8uuS5j+mqjOivgSoq77ya5LiN5qC45a+55Y6f5aeL5YiX6KGo5bCx57uT5p2fXG5cbiMjIyDmiafooYzmqKHmnb9cbuesrOS4gOatpe+8muS7u+WKoeWIhuino1xu5oC76K6h77ya6ZyA5a6M5oiQTuS4quWtkOS7u+WKoVxuXG7nrKzkuozmraXvvJrpgJDpobnmiafooYxcbvCflIQg5byA5aeL56ysMemhue+8mlvku7vliqHlkI1dXG7inIUg5bey5a6M5oiQ56ysMemhue+8jOW9k+WJjei/m+W6pjEvTlxuLi4uXG7wn5SEIOW8gOWni+esrE7pobnvvJpb5Lu75Yqh5ZCNXVxu4pyFIOW3suWujOaIkOesrE7pobnvvIzlvZPliY3ov5vluqZOL05cblxu56ys5LiJ5q2l77ya5a6M5oiQ56Gu6K6kXG7wn46JIOS7u+WKoeWujOaIkOehruiupO+8muW3suWujOaIkOWFqOmDqE7pobnku7vliqFcblxuIyMjIOiHquajgOmXrumimFxuLSDov5vluqbmmK/lkKbmmL7npLoxMDAl5a6M5oiQ77yfXG4tIOaYr+WQpuWtmOWcqOi3s+i/h+eahOmhueebru+8n1xuLSDljp/lp4vku7vliqHliJfooajmmK/lkKblhajpg6jlrozmiJDvvJ9cblxuIyMjIOmUmeivr+WkhOeQhlxu5Y+R546w6YGX5ryP5pe277ya56uL5Y2z5YGc5q2i4oaS5qC45a+55YiX6KGo4oaS6KGl5YWF6YGX5ryP4oaS57un57ut5omn6KGMXG5cbmA7Il19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bytefun-ai-mcp",
3
- "version": "1.14.45",
3
+ "version": "1.14.47",
4
4
  "description": "ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发",
5
5
  "main": "build/index.js",
6
6
  "type": "module",