bytefun-ai-mcp 1.13.108 → 1.13.110
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.
- package/build/appCodeRule.d.ts +1 -1
- package/build/appCodeRule.d.ts.map +1 -1
- package/build/appCodeRule.js +28 -14
- package/build/uiDesign.d.ts +1 -1
- package/build/uiDesign.d.ts.map +1 -1
- package/build/uiDesign.js +2 -1
- package/package.json +1 -1
package/build/appCodeRule.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const understandingCodeFrameworkTemplate = "\n# **\u5FC5\u987B\u5148\u7406\u89E3\u9879\u76EE\u4EE3\u7801\u6846\u67B611\u4E2A\u77E5\u8BC6\u70B9**\n## 1. **\u7406\u89E3View\u7EC4\u4EF6\u7684\u58F0\u660E\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 - 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\u9009\u4E2D\u72B6\u6001\u3001\u805A\u7126\u72B6\u6001\u3001\u7981\u7528\u72B6\u6001\u7684\u53D8\u5316\u90FD\u5FC5\u987B\u901A\u8FC7`setStation(station: ViewStation)`\u51FD\u6570\u6765\u8BBE\u7F6E\uFF0C\u4E0D\u80FD\u76F4\u63A5\u8BBE\u7F6E\u7EC4\u4EF6\u7684UI\u5C5E\u6027\uFF0C\u53EA\u9700\u8981\u8BBE\u7F6E\u7EC4\u4EF6\u7684station\u5C5E\u6027\u5373\u53EF\u81EA\u52A8\u66F4\u65B0\u7EC4\u4EF6\u7684UI\u6837\u5F0F\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\u8BBE\u7F6E\u90FD\u5FC5\u987B\u4F7F\u7528View\u7684`station`\u5C5E\u6027\u8FDB\u884C\u8BBE\u7F6E\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 - \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 \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 - \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 - \u6240\u6709Page\u7684\u5B50\u7C7B\uFF0C\u90FD\u5141\u8BB8\u6DFB\u52A0\u6784\u9020\u51FD\u6570\u548C\u6784\u9020\u51FD\u6570\u7684\u53C2\u6570\uFF0C\u8FD9\u4E9B\u53C2\u6570\u5C31\u7528\u6765\u9875\u9762\u8DF3\u8F6C\u65F6\u9875\u9762\u4E4B\u95F4\u4F20\u9012\u6570\u636E\u4F7F\u7528\uFF0C\u6BD4\u5982\uFF1A\u5546\u54C1\u5217\u8868\u9875ProjectListPage\u8DF3\u5230\u5546\u54C1\u8BE6\u60C5\u9875ProjectDetailPage\uFF0C\u90A3\u4E48ProjectListPage\u5E94\u8BE5\u8981\u4F20\u7ED9ProjectDetailPage\u4E00\u4E2A\u53C2\u6570\uFF1AproductID\u3002\u6240\u4EE5\uFF0CProjectDetailPage\u7684\u9875\u9762\u53C2\u6570\u58F0\u660E\u548C\u6784\u9020\u51FD\u6570\u5E94\u8BE5\u662F\u8FD9\u6837\u5199\uFF1A\n private productID: string\n constructor(productID: string) {\n super()\n this.productID = productID\n }\u3002\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 - \u6240\u6709\u7684\u7F51\u7EDC\u62E6\u622A\u7684\u5168\u5C40\u7EDF\u4E00\u5904\u7406\u9700\u8981\u5728Application\u4E2D\u7684onGlobalNetSuccessIntercept(\u8054\u7F51\u6210\u529F\u540E\uFF0C\u540E\u7AEF\u4E1A\u52A1\u6B63\u786E\u4E0E\u9519\u8BEF\u90FD\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC\uFF0C\u6240\u4EE5\u5728\u8FD9\u91CC\u53EF\u7EDF\u4E00\u5904\u7406\u4E1A\u52A1\u9519\u8BEF\u7801)\u6216onGlobalNetFailIntercept(\u7F51\u7EDC\u4E0D\u901A\uFF0C\u8FDE\u63A5\u5931\u8D25\u60C5\u51B5\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC)\u91CC\u9762\u5904\u7406\u3002\n - \u9875\u9762\u5185\u7684\u7F51\u7EDC\u8BF7\u6C42\u4E1A\u52A1\u5904\u7406\u4E0D\u5F97\u5199\u5728Application\u7684onGlobalNetSuccessIntercept\u91CC\u9762\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 - \u5B57\u7B26\u4E32\u4E0D\u5F97\u76F4\u63A5\u8FDB\u884Cboolean\u8FD0\u7B97\u7136\u540E\u8D4B\u503C\u7ED9boolean\u7C7B\u578B\u7684\u53D8\u91CF\uFF0C\u9700\u8981\u5728\u5B57\u7B26\u4E32\u524D\u9762\u6DFB\u52A0\u4E24\u4E2A\u975E\u8FD0\u7B97\uFF1A!!\u3002\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Aconst isAdd = !!this.inputView.text && isNew\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 - \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 - \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 - \u79FB\u52A8\u7AEF\u7684ViewPager\u7684canIndicatorClick\u5C5E\u6027\u9ED8\u8BA4\u8BBE\u7F6E\u4E3Afalse\u7684\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u660E\u9700\u8981\u6FC0\u6D3B\u6307\u793A\u5668\u7684\u70B9\u70B9\u51FB\u5207\u6362ViewPager\u3002\n - \u6BCF\u4E00\u4E2A\u9875\u9762(\u5982loginPage)\u5EFA\u8BAE\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\uFF0C\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u5982\u679C\u9700\u8981\u8FD8\u53EF\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6570\u636Ets\u6587\u4EF6(\u5982loginPageData.ts)\uFF0C\u8FD9\u6837\u5982loginPage\u8D1F\u8D23\u4E1A\u52A1\u903B\u8F91\u548C\u4EA4\u4E92\u903B\u8F91\uFF0C\u5982loginPageData\u8D1F\u8D23\u6570\u636E\u58F0\u660E\u5B9A\u4E49\u3001\u521D\u59CB\u5316\u4E0E\u7BA1\u7406\u7B49\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 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\u5931\u8D25\u8FD4\u56DE\u6570\u636E\n export interface apiFailInfo {\n msg: string\n code: number\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: apiFailInfo) => 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 { 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: apiFailInfo) => {\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 - \u5728\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\uFF0C\u9700\u8981\u6839\u636Evtype\u6765\u505A\u4E0D\u540C\u7684\u6570\u636E\u7ED1\u5B9A\uFF0C\u6BD4\u5982\uFF1A\n - vtype=\"verticalListView\"\u3001vtype=\"horizontalListView\"\u3001vtype=\"viewPager\"\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(response.data.list)\u3001this.xxxHorizontalListView.setDataList(response.data.list)\u3001this.xxxViewPager.setDataList(response.data.list)\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\u6BD4\u5982\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 // \u8BBE\u7F6E\u4E66\u7C4D\u5217\u8868\u6570\u636E\n this.recommendBookList.setDataList(getRecommendBookListResponse.data.list)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n this.recommendBookCover1.src = getRecommendBookListResponse.data.list[0].coverUrl\n this.recommendBookTitle1.text = getRecommendBookListResponse.data.list[0].title\n this.recommendBookAuthor1.text = getRecommendBookListResponse.data.list[0].author\n ...\n // \u8BBE\u7F6E\u8F6E\u64AD\u6570\u636E\n this.recommendViewPager.setDataList(getRecommendBookListResponse.data.list)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n this.recommendImage1.src = getRecommendBookListResponse.data.list[0].coverUrl\n this.carouselTitle1.text = getRecommendBookListResponse.data.list[0].title\n ...\n ```\n\n## 10. \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\n## 11. \u4E25\u683C\u9075\u5B88\u4EE3\u7801\u89C4\u8303\u4E0E\u9650\u5236\n - \u3010\u7C7B\u578B\u4E0E\u6CDB\u578B\u3011\n - \u5728\u7EE7\u627F\u81EA`Page`\u7684\u7C7B\u4E2D\uFF0C\u7981\u6B62\u975E\u9759\u6001\u6210\u5458\u4F7F\u7528DOM\u7C7B\u578B\u6216\u5176\u4ED6\u81EA\u5B9A\u4E49\u7981\u6B62\u7C7B\u578B\u3002\n - \u7981\u6B62\u4F7F\u7528UILIB\u7C7B\u578B\u7684\u6570\u7EC4\u4F5C\u4E3A\u6210\u5458\u3001\u5C40\u90E8\u53D8\u91CF\u3001\u65B9\u6CD5\u5165\u53C2\u6216\u8FD4\u56DE\u503C\u3002\n - \u7981\u6B62\u7C7B\u6210\u5458\u4E0E\u5C40\u90E8\u53D8\u91CF\u663E\u5F0F\u58F0\u660E\u4E3A`any`\uFF0C\u4EE5\u53CA\u4F7F\u7528`as any`\u3002\n - `Ref<T>`\u7684`T`\u4EC5\u5141\u8BB8\uFF1A`number`\u3001`string`\u3001`boolean`\u3001`any`\u3001`Array<any>`\u53CA\u5176`| null`\u53D8\u4F53\u3002\n - \u7981\u6B62\u4F7F\u7528`Symbol`\u53CA\u5176\u76F8\u5173API\u3002\n - \u7981\u6B62\u5168\u5C40\u53D8\u91CF\u3001\u5C40\u90E8\u53D8\u91CF\u3001\u65B9\u6CD5\u5165\u53C2\u3001\u8FD4\u56DE\u503C\u7684\u8054\u5408\u7C7B\u578B\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u7981\u6B62\u58F0\u660E`interface`\uFF0C\u4E14\u8BE5\u6587\u4EF6\u4EC5\u5141\u8BB8\u4E00\u4E2A`class`\u58F0\u660E\u3002\n - \u975E`src/lib`\u76EE\u5F55\u7684`ts`\u6587\u4EF6\u4E2D\uFF0C`interface`\u53EA\u5141\u8BB8\u5B9A\u4E49\u5C5E\u6027\uFF1B\u7981\u6B62\u5176\u4ED6\u58F0\u660E\u3002\n - \u7981\u6B62\u4F7F\u7528`Partial<T>`\u3002\n - \u7981\u6B62\u884C\u5185\u51FD\u6570\u7C7B\u578B\u3001\u51FD\u6570\u7C7B\u578B\u522B\u540D\u4E0E\u5185\u8054\u5BF9\u8C61\u7C7B\u578B\u5B57\u9762\u91CF\uFF08\u5C5E\u6027\u9664\u5916\uFF09\u3002\n - \u7981\u6B62\u5B9A\u4E49\u7C7B\u578B\u5C5E\u4E8EUILIB\u7684\u975E\u7C7B\u6210\u5458\u53D8\u91CF\u3002\n - \u7981\u6B62\u5C06UILIB\u7C7B\u578B\u7684\u503C\u8D4B\u7ED9\u975EUILIB\u7C7B\u578B\u7684\u76EE\u6807\u3002\n - \u3010\u5BFC\u5165\u3011\n - \u5F53\u7C7B\u8DEF\u5F84\u5728`src/lib`\u76EE\u5F55\u4E0B\u65F6\uFF0C\u7981\u6B62\u5BF9\u8FD9\u4E2A\u7C7B\u4F7F\u7528\u5BFC\u5165\u91CD\u547D\u540D\u6216\u522B\u540D\u3002\n - \u3010\u5BFC\u51FA\u3011\n - \u5728\u672A\u7EE7\u627F`Page`\u6216`BaseApi`\u7684\u6587\u4EF6\u4E2D\uFF0C\u4E14\u7C7B\u540D\u4E0D\u7B49\u4E8E`src/lib`\u548C`src/lib/uilib`\u76EE\u5F55\u4E0B\u7684\u7C7B\u540D\u3001\u4E14\u4E0D\u4E3A`Application`\u65F6\uFF0C\u4EC5\u5141\u8BB8`export default class`\u3001`export class`\u3001`export interface`\uFF1B\u7981\u6B62\u5176\u4ED6\u5BFC\u51FA\u5F62\u5F0F\u3002\n - \u3010\u65B9\u6CD5\u4E0E\u51FD\u6570\u3011\n - \u7981\u6B62\u4F7F\u7528`setInterval`\u3001`clearInterval`\u3001`setTimeout`\uFF1B\u4F7F\u7528`AllFunction`\u5BF9\u5E94\u65B9\u6CD5\u3002\n - \u7981\u6B62\u4F7F\u7528`localStorage/sessionStorage`\u7684`setItem/getItem`\uFF1B\u4F7F\u7528`AllFunction`\u6570\u636E\u5E93\u65B9\u6CD5\u3002\n - \u7981\u6B62`Date.now()`\u4E0E`new Date()`\uFF1B\u4F7F\u7528`AllFunction`\u65F6\u95F4\u65B9\u6CD5\u3002\n - \u7981\u6B62\u5728\u51FD\u6570\u5185\u5B9A\u4E49\u5185\u90E8\u51FD\u6570\uFF1B\u8BF7\u5B9A\u4E49\u4E3A\u7C7B\u79C1\u6709\u65B9\u6CD5\u3002\n - \u7981\u6B62`JSON.stringify/JSON.parse`\uFF1B\u6309\u4E0A\u4E0B\u6587\u4F7F\u7528`JsonArray.stringify/parse`\u6216`JsonObject.stringify/parse`\u3002\n - `JsonObject.stringify/parse`\u4E0E`JsonArray.stringify/parse`\u7684\u53C2\u6570\u7981\u6B62\u4F20\u5165`class`\u5BF9\u8C61\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u7C7B\u4E2D\u9759\u6001\u8C03\u7528\u7EE7\u627F`BaseApi`\u7684\u7C7B\u65B9\u6CD5\u65F6\uFF1A\u65B9\u6CD5\u540D\u5FC5\u987B\u5339\u914D`request_<10\u4F4D\u5B57\u6BCD\u6570\u5B57>`\uFF0C\u53C2\u6570\u5FC5\u987B\u4E3A3\u4E2A\uFF0C\u4E14\u7B2C2\u30013\u4E2A\u53C2\u6570\u7C7B\u578B\u4E0D\u5F97\u4E3A`any`\u6216\u6CDB\u578B\u3002\n - \u5728\u7EE7\u627F`BaseApi`\u7684\u7C7B\u4E2D\uFF0C`request_`\u5F00\u5934\u7684\u9759\u6001\u65B9\u6CD5\u540C\u6837\u5FC5\u987B\u6EE1\u8DB3\u547D\u540D\u4E0E3\u53C2\u89C4\u5219\u3002\n - \u7981\u6B62\u65B9\u6CD5\u5185\u5C40\u90E8\u53D8\u91CF\u91CD\u540D\u3002\n - `findViewById`\u4EC5\u5141\u8BB8\u7528\u4E8E\u7C7B\u6210\u5458\u53D8\u91CF\u521D\u59CB\u5316\uFF0C\u5982`this.findViewById('xxx') as <\u5177\u4F53\u7C7B\u578B>`\uFF1B\u5176\u4ED6\u4F4D\u7F6E\u7981\u6B62\u8C03\u7528\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u7981\u6B62\u4F7F\u7528`Array.isArray()`\uFF1B\u4F7F\u7528`AllFunction.isArray()`\u3002\n - \u5728\u672A\u7EE7\u627F`Page`\u6216`BaseApi`\u7684\u7C7B\u4E2D\u7981\u6B62\u58F0\u660E\u65B9\u6CD5\uFF08`constructor`\u9664\u5916\uFF09\uFF1B\u82E5\u7C7B\u540D\u7B49\u4E8E`src/lib`\u548C`src/lib/uilib`\u76EE\u5F55\u4E0B\u7684\u7C7B\u540D\u5219\u4E0D\u53D7\u6B64\u9650\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u7C7B\u4E2D\u8C03\u7528`findViewById`\u65F6\uFF0C\u53C2\u6570\u5FC5\u987B\u5B58\u5728\u4E8E\u540C\u76EE\u5F55\u540C\u540D\u58F0\u660E\u5F0FUI\u7684`.id('...')`\u5217\u8868\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u8C03\u7528`watch`\uFF08\u4F4D\u4E8E`Ref.ts`\uFF09\u65F6\uFF0C\u7B2C\u4E00\u4E2A\u53C2\u6570\u5FC5\u987B\u662F\u5B57\u9762\u91CF\u6570\u7EC4`[ref1, ref2]`\uFF0C\u7981\u6B62\u53D8\u91CF\u4F20\u9012\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u5B9A\u4E49UILIB\u7C7B\u578B\u6210\u5458\u53D8\u91CF\u65F6\uFF0C\u5FC5\u987B\u4F7F\u7528`this.findViewById('xxx') as Xxx`\u521D\u59CB\u5316\u3002\n - \u3010\u6570\u7EC4\u65B9\u6CD5\u3011\n - \u7981\u6B62\u4F7F\u7528`map`\u3001`filter`\u3001`find`\u3001`findIndex`\u3001`reduce`\u3001`reduceRight`\u3001`every`\u3001`some`\u3001`sort`\u3001`flatMap`\uFF1B\u7EDF\u4E00\u4F7F\u7528`for-i`\u5B9E\u73B0\u3002\n - \u3010\u8BED\u6CD5\u9650\u5236\u3011\n - \u7981\u6B62\u4F7F\u7528`||`\u8FDB\u884C\u8D4B\u503C\u3001\u4F20\u53C2\u6216\u521D\u59CB\u5316\uFF1B\u6539\u7528\u4E09\u5143\u8868\u8FBE\u5F0F\u3002\n - \u7981\u6B62\u5BF9\u8C61\u5C55\u5F00\u8BED\u6CD5`...`\u514B\u9686\u5BF9\u8C61\uFF1B\u6539\u7528\u624B\u52A8\u8D4B\u503C\u3002\n - \u7981\u6B62\u7C7B\u6210\u5458\u53D8\u91CF\u4E0E\u65B9\u6CD5\u5165\u53C2\u540C\u540D\uFF0C\u6216\u4E0E\u65B9\u6CD5\u5185\u5C40\u90E8\u53D8\u91CF\u540C\u540D\u3002\n - \u7981\u6B62\u4F7F\u7528`try/catch/finally`\u4E0E\u6B63\u5219\u8868\u8FBE\u5F0F\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u7981\u6B62\u4F7F\u7528`typeof`\uFF1B\u6539\u7528`AllFunction.isString/isNumber/isBoolean/isObject`\u3002\n - \u7981\u6B62\u5BF9\u8C61\u5C5E\u6027\u7B80\u5199\uFF08`{ a }`\uFF09\uFF1B\u4F7F\u7528\u5B8C\u6574\u5199\u6CD5\uFF08`{ a: a }`\uFF09\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\uFF0C\u7981\u6B62\u5BF9UILIB\u7C7B\u578B\u53D8\u91CF\u8FDB\u884C\u771F\u503C\u5224\u65AD\u3002\n - \u3010\u8865\u5145\u7684\u9879\u76EE\u89C4\u5219\u3011\n - \u7981\u6B62\u4F7F\u7528`for...in`\uFF1B\u4F7F\u7528`Object.keys`+`for-i`\u3002\n - \u7981\u6B62`async/Promise`\uFF08\u542B`Promise.race/Promise.all`\uFF09\uFF1B\u6240\u6709\u5F02\u6B65\u64CD\u4F5C\u4F7F\u7528\u7BAD\u5934\u51FD\u6570\u3002\n - \u7981\u6B62\u4F7F\u7528\u6D4F\u89C8\u5668\u73AF\u5883\u7684`lib.dom.d.ts`\u65B9\u6CD5\u4E8ENode\u73AF\u5883\u3002\n - \u7981\u6B62\u4FEE\u6539\u3001\u589E\u5220`src/lib`\u53CA\u5176\u5B50\u76EE\u5F55\u4E2D\u7684\u6587\u4EF6\u3002\n\n";
|
|
1
|
+
export declare const understandingCodeFrameworkTemplate = "\n# **\u5FC5\u987B\u5148\u7406\u89E3\u9879\u76EE\u4EE3\u7801\u6846\u67B611\u4E2A\u77E5\u8BC6\u70B9**\n## 1. **\u7406\u89E3View\u7EC4\u4EF6\u7684\u58F0\u660E\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 - 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\u9009\u4E2D\u72B6\u6001\u3001\u805A\u7126\u72B6\u6001\u3001\u7981\u7528\u72B6\u6001\u7684\u53D8\u5316\u90FD\u5FC5\u987B\u901A\u8FC7`setStation(station: ViewStation)`\u51FD\u6570\u6765\u8BBE\u7F6E\uFF0C\u4E0D\u80FD\u76F4\u63A5\u8BBE\u7F6E\u7EC4\u4EF6\u7684UI\u5C5E\u6027\uFF0C\u53EA\u9700\u8981\u8BBE\u7F6E\u7EC4\u4EF6\u7684station\u5C5E\u6027\u5373\u53EF\u81EA\u52A8\u66F4\u65B0\u7EC4\u4EF6\u7684UI\u6837\u5F0F\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\u8BBE\u7F6E\u90FD\u5FC5\u987B\u4F7F\u7528View\u7684`station`\u5C5E\u6027\u8FDB\u884C\u8BBE\u7F6E\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 - \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 \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 - \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 - \u6240\u6709Page\u7684\u5B50\u7C7B\uFF0C\u90FD\u5141\u8BB8\u6DFB\u52A0\u6784\u9020\u51FD\u6570\u548C\u6784\u9020\u51FD\u6570\u7684\u53C2\u6570\uFF0C\u8FD9\u4E9B\u53C2\u6570\u5C31\u7528\u6765\u9875\u9762\u8DF3\u8F6C\u65F6\u9875\u9762\u4E4B\u95F4\u4F20\u9012\u6570\u636E\u4F7F\u7528\uFF0C\u6BD4\u5982\uFF1A\u5546\u54C1\u5217\u8868\u9875ProjectListPage\u8DF3\u5230\u5546\u54C1\u8BE6\u60C5\u9875ProjectDetailPage\uFF0C\u90A3\u4E48ProjectListPage\u5E94\u8BE5\u8981\u4F20\u7ED9ProjectDetailPage\u4E00\u4E2A\u53C2\u6570\uFF1AproductID\u3002\u6240\u4EE5\uFF0CProjectDetailPage\u7684\u9875\u9762\u53C2\u6570\u58F0\u660E\u548C\u6784\u9020\u51FD\u6570\u5E94\u8BE5\u662F\u8FD9\u6837\u5199\uFF1A\n private productID: string\n constructor(productID: string) {\n super()\n this.productID = productID\n }\u3002\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 - \u6240\u6709\u7684\u7F51\u7EDC\u62E6\u622A\u7684\u5168\u5C40\u7EDF\u4E00\u5904\u7406\u9700\u8981\u5728Application\u4E2D\u7684onGlobalNetSuccessIntercept(\u8054\u7F51\u6210\u529F\u540E\uFF0C\u540E\u7AEF\u4E1A\u52A1\u6B63\u786E\u4E0E\u9519\u8BEF\u90FD\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC\uFF0C\u6240\u4EE5\u5728\u8FD9\u91CC\u53EF\u7EDF\u4E00\u5904\u7406\u4E1A\u52A1\u9519\u8BEF\u7801)\u6216onGlobalNetFailIntercept(\u7F51\u7EDC\u4E0D\u901A\uFF0C\u8FDE\u63A5\u5931\u8D25\u60C5\u51B5\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC)\u91CC\u9762\u5904\u7406\u3002\n - \u9875\u9762\u5185\u7684\u7F51\u7EDC\u8BF7\u6C42\u4E1A\u52A1\u5904\u7406\u4E0D\u5F97\u5199\u5728Application\u7684onGlobalNetSuccessIntercept\u91CC\u9762\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 - \u5B57\u7B26\u4E32\u4E0D\u5F97\u76F4\u63A5\u8FDB\u884Cboolean\u8FD0\u7B97\u7136\u540E\u8D4B\u503C\u7ED9boolean\u7C7B\u578B\u7684\u53D8\u91CF\uFF0C\u9700\u8981\u5728\u5B57\u7B26\u4E32\u524D\u9762\u6DFB\u52A0\u4E24\u4E2A\u975E\u8FD0\u7B97\uFF1A!!\u3002\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Aconst isAdd = !!this.inputView.text && isNew\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 - \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 - \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 - \u79FB\u52A8\u7AEF\u7684ViewPager\u7684canIndicatorClick\u5C5E\u6027\u9ED8\u8BA4\u8BBE\u7F6E\u4E3Afalse\u7684\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u660E\u9700\u8981\u6FC0\u6D3B\u6307\u793A\u5668\u7684\u70B9\u70B9\u51FB\u5207\u6362ViewPager\u3002\n - \u6BCF\u4E00\u4E2A\u9875\u9762(\u5982loginPage)\u5EFA\u8BAE\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\uFF0C\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u5982\u679C\u9700\u8981\u8FD8\u53EF\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6570\u636Ets\u6587\u4EF6(\u5982loginPageData.ts)\uFF0C\u8FD9\u6837\u5982loginPage\u8D1F\u8D23\u4E1A\u52A1\u903B\u8F91\u548C\u4EA4\u4E92\u903B\u8F91\uFF0C\u5982loginPageData\u8D1F\u8D23\u6570\u636E\u58F0\u660E\u5B9A\u4E49\u3001\u521D\u59CB\u5316\u4E0E\u7BA1\u7406\u7B49\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 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\u5931\u8D25\u8FD4\u56DE\u6570\u636E\n export interface apiFailInfo {\n msg: string\n code: number\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: apiFailInfo) => 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 { 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: apiFailInfo) => {\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 - \u5982\u679C\u6709\u540E\u7AEFapi\u63A5\u53E3\u8BF7\u6C42\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\n - \u5728\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\uFF0C\u9700\u8981\u6839\u636Evtype\u6765\u505A\u4E0D\u540C\u7684\u6570\u636E\u7ED1\u5B9A\uFF0C\u6BD4\u5982\uFF1A\n - vtype=\"verticalListView\"\u3001vtype=\"horizontalListView\"\u3001vtype=\"viewPager\"\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(response.data.list)\u3001this.xxxHorizontalListView.setDataList(response.data.list)\u3001this.xxxViewPager.setDataList(response.data.list)\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\u5982\u679C\u9700\u8981\u903B\u8F91\u5904\u7406\u540E\u624D\u80FD\u5F97\u51FA\u5B69\u5B50\u8282\u70B9\u7684\u5177\u4F53\u6570\u636E\u7684\u8BDD\uFF0C\u90A3\u5C31\u5FC5\u987B\u8981\u5C01\u88C5\u4E00\u4E2A`getxxx(itemData: any)`\u65B9\u6CD5\u6765\u5904\u7406\uFF0C\u6BD4\u5982\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.list)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n this.recommendBookCover1.src = getRecommendBookListData.data.list[0].coverUrl\n this.recommendBookTitle1.text = getRecommendBookListData.data.list[0].title\n this.recommendBookAuthor1.text = getRecommendBookListData.data.list[0].author\n ...\n // \u8BBE\u7F6E\u8F6E\u64AD\u6570\u636E\n this.recommendViewPager.setDataList(getRecommendBookListData.data.list)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n this.recommendImage1.src = getRecommendBookListData.data.list[0].coverUrl\n this.carouselTitle1.text = this.getCarouselTitleData(getRecommendBookListData.data.list[0])\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\n## 10. \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\n## 11. \u4E25\u683C\u9075\u5B88\u4EE3\u7801\u89C4\u8303\u4E0E\u9650\u5236\n - \u3010\u7C7B\u578B\u4E0E\u6CDB\u578B\u3011\n - \u5728\u7EE7\u627F\u81EA`Page`\u7684\u7C7B\u4E2D\uFF0C\u7981\u6B62\u975E\u9759\u6001\u6210\u5458\u4F7F\u7528DOM\u7C7B\u578B\u6216\u5176\u4ED6\u81EA\u5B9A\u4E49\u7981\u6B62\u7C7B\u578B\u3002\n - \u7981\u6B62\u4F7F\u7528UILIB\u7C7B\u578B\u7684\u6570\u7EC4\u4F5C\u4E3A\u6210\u5458\u3001\u5C40\u90E8\u53D8\u91CF\u3001\u65B9\u6CD5\u5165\u53C2\u6216\u8FD4\u56DE\u503C\u3002\n - \u7981\u6B62\u7C7B\u6210\u5458\u4E0E\u5C40\u90E8\u53D8\u91CF\u663E\u5F0F\u58F0\u660E\u4E3A`any`\uFF0C\u4EE5\u53CA\u4F7F\u7528`as any`\u3002\n - `Ref<T>`\u7684`T`\u4EC5\u5141\u8BB8\uFF1A`number`\u3001`string`\u3001`boolean`\u3001`any`\u3001`Array<any>`\u53CA\u5176`| null`\u53D8\u4F53\u3002\n - \u7981\u6B62\u4F7F\u7528`Symbol`\u53CA\u5176\u76F8\u5173API\u3002\n - \u7981\u6B62\u5168\u5C40\u53D8\u91CF\u3001\u5C40\u90E8\u53D8\u91CF\u3001\u65B9\u6CD5\u5165\u53C2\u3001\u8FD4\u56DE\u503C\u7684\u8054\u5408\u7C7B\u578B\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u7981\u6B62\u58F0\u660E`interface`\uFF0C\u4E14\u8BE5\u6587\u4EF6\u4EC5\u5141\u8BB8\u4E00\u4E2A`class`\u58F0\u660E\u3002\n - \u975E`src/lib`\u76EE\u5F55\u7684`ts`\u6587\u4EF6\u4E2D\uFF0C`interface`\u53EA\u5141\u8BB8\u5B9A\u4E49\u5C5E\u6027\uFF1B\u7981\u6B62\u5176\u4ED6\u58F0\u660E\u3002\n - \u7981\u6B62\u4F7F\u7528`Partial<T>`\u3002\n - \u7981\u6B62\u884C\u5185\u51FD\u6570\u7C7B\u578B\u3001\u51FD\u6570\u7C7B\u578B\u522B\u540D\u4E0E\u5185\u8054\u5BF9\u8C61\u7C7B\u578B\u5B57\u9762\u91CF\uFF08\u5C5E\u6027\u9664\u5916\uFF09\u3002\n - \u7981\u6B62\u5B9A\u4E49\u7C7B\u578B\u5C5E\u4E8EUILIB\u7684\u975E\u7C7B\u6210\u5458\u53D8\u91CF\u3002\n - \u7981\u6B62\u5C06UILIB\u7C7B\u578B\u7684\u503C\u8D4B\u7ED9\u975EUILIB\u7C7B\u578B\u7684\u76EE\u6807\u3002\n - \u3010\u5BFC\u5165\u3011\n - \u5F53\u7C7B\u8DEF\u5F84\u5728`src/lib`\u76EE\u5F55\u4E0B\u65F6\uFF0C\u7981\u6B62\u5BF9\u8FD9\u4E2A\u7C7B\u4F7F\u7528\u5BFC\u5165\u91CD\u547D\u540D\u6216\u522B\u540D\u3002\n - \u3010\u5BFC\u51FA\u3011\n - \u5728\u672A\u7EE7\u627F`Page`\u6216`BaseApi`\u7684\u6587\u4EF6\u4E2D\uFF0C\u4E14\u7C7B\u540D\u4E0D\u7B49\u4E8E`src/lib`\u548C`src/lib/uilib`\u76EE\u5F55\u4E0B\u7684\u7C7B\u540D\u3001\u4E14\u4E0D\u4E3A`Application`\u65F6\uFF0C\u4EC5\u5141\u8BB8`export default class`\u3001`export class`\u3001`export interface`\uFF1B\u7981\u6B62\u5176\u4ED6\u5BFC\u51FA\u5F62\u5F0F\u3002\n - \u3010\u65B9\u6CD5\u4E0E\u51FD\u6570\u3011\n - \u7981\u6B62\u4F7F\u7528`setInterval`\u3001`clearInterval`\u3001`setTimeout`\uFF1B\u4F7F\u7528`AllFunction`\u5BF9\u5E94\u65B9\u6CD5\u3002\n - \u7981\u6B62\u4F7F\u7528`localStorage/sessionStorage`\u7684`setItem/getItem`\uFF1B\u4F7F\u7528`AllFunction`\u6570\u636E\u5E93\u65B9\u6CD5\u3002\n - \u7981\u6B62`Date.now()`\u4E0E`new Date()`\uFF1B\u4F7F\u7528`AllFunction`\u65F6\u95F4\u65B9\u6CD5\u3002\n - \u7981\u6B62\u5728\u51FD\u6570\u5185\u5B9A\u4E49\u5185\u90E8\u51FD\u6570\uFF1B\u8BF7\u5B9A\u4E49\u4E3A\u7C7B\u79C1\u6709\u65B9\u6CD5\u3002\n - \u7981\u6B62`JSON.stringify/JSON.parse`\uFF1B\u6309\u4E0A\u4E0B\u6587\u4F7F\u7528`JsonArray.stringify/parse`\u6216`JsonObject.stringify/parse`\u3002\n - `JsonObject.stringify/parse`\u4E0E`JsonArray.stringify/parse`\u7684\u53C2\u6570\u7981\u6B62\u4F20\u5165`class`\u5BF9\u8C61\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u7C7B\u4E2D\u9759\u6001\u8C03\u7528\u7EE7\u627F`BaseApi`\u7684\u7C7B\u65B9\u6CD5\u65F6\uFF1A\u65B9\u6CD5\u540D\u5FC5\u987B\u5339\u914D`request_<10\u4F4D\u5B57\u6BCD\u6570\u5B57>`\uFF0C\u53C2\u6570\u5FC5\u987B\u4E3A3\u4E2A\uFF0C\u4E14\u7B2C2\u30013\u4E2A\u53C2\u6570\u7C7B\u578B\u4E0D\u5F97\u4E3A`any`\u6216\u6CDB\u578B\u3002\n - \u5728\u7EE7\u627F`BaseApi`\u7684\u7C7B\u4E2D\uFF0C`request_`\u5F00\u5934\u7684\u9759\u6001\u65B9\u6CD5\u540C\u6837\u5FC5\u987B\u6EE1\u8DB3\u547D\u540D\u4E0E3\u53C2\u89C4\u5219\u3002\n - \u7981\u6B62\u65B9\u6CD5\u5185\u5C40\u90E8\u53D8\u91CF\u91CD\u540D\u3002\n - `findViewById`\u4EC5\u5141\u8BB8\u7528\u4E8E\u7C7B\u6210\u5458\u53D8\u91CF\u521D\u59CB\u5316\uFF0C\u5982`this.findViewById('xxx') as <\u5177\u4F53\u7C7B\u578B>`\uFF1B\u5176\u4ED6\u4F4D\u7F6E\u7981\u6B62\u8C03\u7528\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u7981\u6B62\u4F7F\u7528`Array.isArray()`\uFF1B\u4F7F\u7528`AllFunction.isArray()`\u3002\n - \u5728\u672A\u7EE7\u627F`Page`\u6216`BaseApi`\u7684\u7C7B\u4E2D\u7981\u6B62\u58F0\u660E\u65B9\u6CD5\uFF08`constructor`\u9664\u5916\uFF09\uFF1B\u82E5\u7C7B\u540D\u7B49\u4E8E`src/lib`\u548C`src/lib/uilib`\u76EE\u5F55\u4E0B\u7684\u7C7B\u540D\u5219\u4E0D\u53D7\u6B64\u9650\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u7C7B\u4E2D\u8C03\u7528`findViewById`\u65F6\uFF0C\u53C2\u6570\u5FC5\u987B\u5B58\u5728\u4E8E\u540C\u76EE\u5F55\u540C\u540D\u58F0\u660E\u5F0FUI\u7684`.id('...')`\u5217\u8868\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u8C03\u7528`watch`\uFF08\u4F4D\u4E8E`Ref.ts`\uFF09\u65F6\uFF0C\u7B2C\u4E00\u4E2A\u53C2\u6570\u5FC5\u987B\u662F\u5B57\u9762\u91CF\u6570\u7EC4`[ref1, ref2]`\uFF0C\u7981\u6B62\u53D8\u91CF\u4F20\u9012\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u5B9A\u4E49UILIB\u7C7B\u578B\u6210\u5458\u53D8\u91CF\u65F6\uFF0C\u5FC5\u987B\u4F7F\u7528`this.findViewById('xxx') as Xxx`\u521D\u59CB\u5316\u3002\n - \u3010\u6570\u7EC4\u65B9\u6CD5\u3011\n - \u7981\u6B62\u4F7F\u7528`map`\u3001`filter`\u3001`find`\u3001`findIndex`\u3001`reduce`\u3001`reduceRight`\u3001`every`\u3001`some`\u3001`sort`\u3001`flatMap`\uFF1B\u7EDF\u4E00\u4F7F\u7528`for-i`\u5B9E\u73B0\u3002\n - \u3010\u8BED\u6CD5\u9650\u5236\u3011\n - \u7981\u6B62\u4F7F\u7528`||`\u8FDB\u884C\u8D4B\u503C\u3001\u4F20\u53C2\u6216\u521D\u59CB\u5316\uFF1B\u6539\u7528\u4E09\u5143\u8868\u8FBE\u5F0F\u3002\n - \u7981\u6B62\u5BF9\u8C61\u5C55\u5F00\u8BED\u6CD5`...`\u514B\u9686\u5BF9\u8C61\uFF1B\u6539\u7528\u624B\u52A8\u8D4B\u503C\u3002\n - \u7981\u6B62\u7C7B\u6210\u5458\u53D8\u91CF\u4E0E\u65B9\u6CD5\u5165\u53C2\u540C\u540D\uFF0C\u6216\u4E0E\u65B9\u6CD5\u5185\u5C40\u90E8\u53D8\u91CF\u540C\u540D\u3002\n - \u7981\u6B62\u4F7F\u7528`try/catch/finally`\u4E0E\u6B63\u5219\u8868\u8FBE\u5F0F\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u7981\u6B62\u4F7F\u7528`typeof`\uFF1B\u6539\u7528`AllFunction.isString/isNumber/isBoolean/isObject`\u3002\n - \u7981\u6B62\u5BF9\u8C61\u5C5E\u6027\u7B80\u5199\uFF08`{ a }`\uFF09\uFF1B\u4F7F\u7528\u5B8C\u6574\u5199\u6CD5\uFF08`{ a: a }`\uFF09\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\uFF0C\u7981\u6B62\u5BF9UILIB\u7C7B\u578B\u53D8\u91CF\u8FDB\u884C\u771F\u503C\u5224\u65AD\u3002\n - \u3010\u8865\u5145\u7684\u9879\u76EE\u89C4\u5219\u3011\n - \u7981\u6B62\u4F7F\u7528`for...in`\uFF1B\u4F7F\u7528`Object.keys`+`for-i`\u3002\n - \u7981\u6B62`async/Promise`\uFF08\u542B`Promise.race/Promise.all`\uFF09\uFF1B\u6240\u6709\u5F02\u6B65\u64CD\u4F5C\u4F7F\u7528\u7BAD\u5934\u51FD\u6570\u3002\n - \u7981\u6B62\u4F7F\u7528\u6D4F\u89C8\u5668\u73AF\u5883\u7684`lib.dom.d.ts`\u65B9\u6CD5\u4E8ENode\u73AF\u5883\u3002\n - \u7981\u6B62\u4FEE\u6539\u3001\u589E\u5220`src/lib`\u53CA\u5176\u5B50\u76EE\u5F55\u4E2D\u7684\u6587\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,
|
|
1
|
+
{"version":3,"file":"appCodeRule.d.ts","sourceRoot":"","sources":["../src/appCodeRule.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,ivgCAuT9C,CAAC"}
|
package/build/appCodeRule.js
CHANGED
|
@@ -202,10 +202,11 @@ export const understandingCodeFrameworkTemplate = `
|
|
|
202
202
|
...
|
|
203
203
|
|
|
204
204
|
## 9. **理解调用后端api接口返回数据后与UI数据绑定**
|
|
205
|
+
- 如果有后端api接口请求,那么必须封装一个名字叫做\`bindDataFromNet\`的方法来处理调用后端api接口返回数据后与UI数据绑定的逻辑
|
|
205
206
|
- 在调用后端api接口返回数据后,需要根据vtype来做不同的数据绑定,比如:
|
|
206
207
|
- vtype="verticalListView"、vtype="horizontalListView"、vtype="viewPager"类型的节点组件,需要使用setDataList方法来绑定数据,比如:
|
|
207
208
|
this.xxxVerticalListView.setDataList(response.data.list)、this.xxxHorizontalListView.setDataList(response.data.list)、this.xxxViewPager.setDataList(response.data.list)
|
|
208
|
-
- vtype="listItemCard"、vtype="oneViewPagerContent"类型的节点组件,需要深度遍历它的第1个item的孩子,然后结合后端api返回的xxxResponse的数据结构给第1个item设置数据,注意只需给第1个item节点设置数据,而不是所有item
|
|
209
|
+
- vtype="listItemCard"、vtype="oneViewPagerContent"类型的节点组件,需要深度遍历它的第1个item的孩子,然后结合后端api返回的xxxResponse的数据结构给第1个item设置数据,注意只需给第1个item节点设置数据,而不是所有item节点都设置数据,并且如果需要逻辑处理后才能得出孩子节点的具体数据的话,那就必须要封装一个\`getxxx(itemData: any)\`方法来处理,比如:
|
|
209
210
|
\`\`\`typescript
|
|
210
211
|
// 后端xxxApi返回的xxxResponse数据结构
|
|
211
212
|
export interface getRecommendBookListResponse {
|
|
@@ -228,18 +229,31 @@ export const understandingCodeFrameworkTemplate = `
|
|
|
228
229
|
}
|
|
229
230
|
}
|
|
230
231
|
...
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
232
|
+
private bindDataFromNet(getRecommendBookListData: getRecommendBookListResponse) {
|
|
233
|
+
// 设置书籍列表数据
|
|
234
|
+
this.recommendBookList.setDataList(getRecommendBookListData.data.list)
|
|
235
|
+
// 设置第1个item节点数据
|
|
236
|
+
this.recommendBookCover1.src = getRecommendBookListData.data.list[0].coverUrl
|
|
237
|
+
this.recommendBookTitle1.text = getRecommendBookListData.data.list[0].title
|
|
238
|
+
this.recommendBookAuthor1.text = getRecommendBookListData.data.list[0].author
|
|
239
|
+
...
|
|
240
|
+
// 设置轮播数据
|
|
241
|
+
this.recommendViewPager.setDataList(getRecommendBookListData.data.list)
|
|
242
|
+
// 设置第1个item节点数据
|
|
243
|
+
this.recommendImage1.src = getRecommendBookListData.data.list[0].coverUrl
|
|
244
|
+
this.carouselTitle1.text = this.getCarouselTitleData(getRecommendBookListData.data.list[0])
|
|
245
|
+
}
|
|
246
|
+
private getCarouselTitleData(itemData: any) {
|
|
247
|
+
let title = ''
|
|
248
|
+
if (itemData.title) {
|
|
249
|
+
title = itemData.title
|
|
250
|
+
} else if (itemData.description) {
|
|
251
|
+
title = itemData.description
|
|
252
|
+
} else {
|
|
253
|
+
title = itemData.categoryName
|
|
254
|
+
}
|
|
255
|
+
return title
|
|
256
|
+
}
|
|
243
257
|
...
|
|
244
258
|
\`\`\`
|
|
245
259
|
|
|
@@ -296,4 +310,4 @@ export const understandingCodeFrameworkTemplate = `
|
|
|
296
310
|
- 禁止修改、增删\`src/lib\`及其子目录中的文件。
|
|
297
311
|
|
|
298
312
|
`;
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwQ29kZVJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwQ29kZVJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlTakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB1bmRlcnN0YW5kaW5nQ29kZUZyYW1ld29ya1RlbXBsYXRlID0gYFxuIyAqKuW/hemhu+WFiOeQhuino+mhueebruS7o+eggeahhuaetjEx5Liq55+l6K+G54K5KipcbiMjIDEuICoq55CG6KejVmlld+e7hOS7tueahOWjsOaYjuinhOWImSoqXG4gIC0g6L+Z5LiN5pivaHRtbOOAgXJlYWN0562J5byA5Y+R77yM6L+Z5piv5LiA5Liq5paw55qE5byA5Y+R5qGG5p6277yM5piv5Z+65LqOc3JjL2xpYi91aWxpYuaWh+S7tuWkuemHjOmdoueahFVJ57uE5Lu25bqT5p2l5byA5Y+R55qEXG4gIC0gVmlld+e7hOS7tueahOWfuuexu+aYr0Jhc2VWaWV377yM5a655Zmo5Z+657G75pivQmFzZUNvbnRhaW5lclZpZXfvvIzmiYDmnIlWaWV357uE5Lu26YO957un5om/6IeqQmFzZVZpZXdcbiAgLSDmn6XnnIsnc3JjL2xpYi91aWxpYi8n5paH5Lu25aS55LiL6Z2i55qE5paH5Lu25ZCN5a2X77yM55CG6Kej5oC75YWx5pyJ5aSa5bCR56eNVUnnu4Tku7ZcbiAgLSBWaWV357uE5Lu255qE5aOw5piO5b+F6aG75Zyo57G75paH5Lu25byA5aeL5pe25YWI5aOw5piO77yM5bm25LiU5b+F6aG76KaB5aOw5piO5YW35L2T55qEVmlld+e7hOS7tuexu+Wei++8jOS4jeW+l+WjsOaYjuS4ukJhc2VWaWV377yM5LiN5b6X5Zyo5Lu75L2V5Ye95pWw5L2T6YeM6Z2i6YCa6L+HZmluZFZpZXdCeUlk5p2l5aOw5piOVmlld+e7hOS7tu+8jOavlOWmgu+8mlxuICAgIC0g4pyFIOato+ehrueahOWGmeazle+8mlxuICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICBwdWJsaWMgY2xhc3MgSG9tZVBhZ2UgZXh0ZW5kcyBQYWdlIHtcbiAgICAgIHByaXZhdGUgbmFtZVRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlkKCduYW1lVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgICAgLi4uLlxuICAgIH1cbiAgICBcXGBcXGBcXGBcbiAgICAtIOKdjCDplJnor6/nmoTlhpnms5XvvIjmsqHmnInlo7DlhbfkvZPnmoRWaWV357uE5Lu257G75Z6L77yJ77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHByaXZhdGUgbmFtZVRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SWQoJ25hbWVUZXh0VmlldycpXG4gICAgXFxgXFxgXFxgXG4gICAgLSDinYwg6ZSZ6K+v55qE5YaZ5rOV77yI5Zyo5Ye95pWw5L2T6YeM6Z2i6YCa6L+HZmluZFZpZXdCeUlk5p2l5aOw5piOVmlld+e7hOS7tu+8ie+8mlxuICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICBwcml2YXRlIG9uZUZ1bmN0aW9uKCkge1xuICAgICAgY29uc3QgbmFtZVRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlkKCduYW1lVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgICAgLi4uLlxuICAgIH1cbiAgICBcXGBcXGBcXGBcbiAgLSDmiYDmnIlWaWV357uE5Lu255qE6YCJ5Lit54q25oCB44CB6IGa54Sm54q25oCB44CB56aB55So54q25oCB55qE5Y+Y5YyW6YO95b+F6aG76YCa6L+HXFxgc2V0U3RhdGlvbihzdGF0aW9uOiBWaWV3U3RhdGlvbilcXGDlh73mlbDmnaXorr7nva7vvIzkuI3og73nm7TmjqXorr7nva7nu4Tku7bnmoRVSeWxnuaAp++8jOWPqumcgOimgeiuvue9rue7hOS7tueahHN0YXRpb27lsZ7mgKfljbPlj6/oh6rliqjmm7TmlrDnu4Tku7bnmoRVSeagt+W8j1xuICAtIOaJgOaciVZpZXfnu4Tku7bnmoTmmL7npLrjgIHpmpDol4/ljaDkvY3jgIHpmpDol4/kuI3ljaDkvY3nmoTorr7nva7pg73lv4Xpobvkvb/nlKhWaWV355qEXFxgdmlzaWJpbGl0eVxcYOWxnuaAp+i/m+ihjOiuvue9ru+8jOS4jeW+l+S9v+eUqFxcYHN0YXRpb25cXGDlsZ7mgKfjgIJcbiAgLSDmiYDmnIlWaWV357uE5Lu255qEbm9ybWFs44CBcmVhZE9ubHnjgIFmb2N1c+OAgXNlbGVjdGVk44CBZGlzYWJsZWTnirbmgIHnmoTorr7nva7pg73lv4Xpobvkvb/nlKhWaWV355qEXFxgc3RhdGlvblxcYOWxnuaAp+i/m+ihjOiuvue9ruOAglxuXG4jIyAyLiAqKueQhuino+WUr+S4gOeahOiDveWKm+aWueazlUFsbEZ1bmN0aW9uLnRz5Lul5Y+KanNvbuebuOWFs+S7o+eggSoqXG4gIC0g5L2/55SoJ3JlYWRfZmlsZSflt6XlhbfpmIXor7vlubbnkIbop6Mnc3JjL2xpYi9BbGxGdW5jdGlvbi50cyfmlofku7bvvIznkIbop6Por6Xlt6XnqIvog73kvb/nlKjnmoTllK/kuIDnmoTog73lipvmlrnms5VcbiAgLSDor7fkuKXmoLzmjInnhafllK/kuIDnmoTog73lipvmlrnms5VBbGxGdW5jdGlvbi50c++8jOS4jeimgeaWsOWinuOAgeWIoOmZpOaIluS/ruaUueS7u+S9lUFsbEZ1bmN0aW9u5o6l5Y+j5aOw5piO77yb5Lmf5LiN6KaB6LCD55So5YW25LuW5pyq5ZyoQWxsRnVuY3Rpb27kuK3lh7rnjrDnmoTlh73mlbDmiJbmqKHlnZdcbiAgXG4jIyAzLiAqKueQhuino1JlZuOAgXdhdGNoKipcbiAgLSBSZWbnmoTmlbDmja7nsbvlnovlj6rog73mmK/ku6XkuIs15Lit57G75Z6L77ya5pWw5a2X5L2/55SoUmVmPG51bWJlcj7vvIzlrZfnrKbkuLLkvb/nlKhSZWY8c3RyaW5nPu+8jOW4g+WwlOmHj+S9v+eUqFJlZjxib29sZWFuPu+8jOWvueixoeS9v+eUqFJlZjxhbnk+77yM5pWw57uE5L2/55SoUmVmPEFycmF5PGFueT4+5oiWUmVmPEFycmF5PGFueT4gfCBudWxsPuaIllJlZjxhbnlbXT7miJZSZWY8YW55W10gfCBudWxsPuOAglxuICAtIOS9v+eUqCdyZWFkX2ZpbGUn5bel5YW36ZiF6K+75bm255CG6KejJ3NyYy9saWIvUmVmLnRzJ+aWh+S7tu+8jOeQhuino1JlZuWSjHdhdGNo55qE5a6a5LmJ55So5rOVXG4gIC0gd2F0Y2jmmK/nm5HlkKxSZWbnmoTlj5jljJbvvIznhLblkI7lgZrnm7jlhbNVSeabtOaWsOaIluWFtuS7luS4muWKoemAu+i+ke+8jOesrOS4gOS4quWPguaVsOaYr+ebkeWQrOeahFJlZuaVsOe7hO+8jOesrOS6jOS4quWPguaVsOaYr+ebkeWQrOeahOWbnuiwg+WHveaVsO+8jOWbnuiwg+WHveaVsOS4reWPr+S7peWBmuebuOWFs1VJ5pu05paw5oiW5YW25LuW5Lia5Yqh6YC76L6R44CCXG4gIC0gUmVm5piv5ZON5bqU5byP5pWw5o2u5rqQ77yMd2F0Y2jmmK/nm5HlkKxSZWbnmoTlj5jljJbvvIznhLblkI7lgZrnm7jlhbNVSeabtOaWsOaIluWFtuS7luS4muWKoemAu+i+ke+8jOavlOWmgu+8mlxuICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gIHByaXZhdGUgbmFtZVRleHRSZWY6IFJlZjxzdHJpbmc+ID0gcmVmKCcnKVxuICBwcml2YXRlIG90aGVyQ291bnRSZWY6IFJlZjxudW1iZXI+ID0gcmVmKDApXG4gIHdhdGNoKFt0aGlzLm5hbWVUZXh0UmVmLCB0aGlzLm90aGVyQ291bnRSZWZdLCAoKSA9PiB7XG4gICAgLy8g5Y+v5Lul5YWI55u45YWz55qEVUnmm7TmlrDmiJbkuJrliqHpgLvovpFcbiAgICBpZiAodGhpcy5vdGhlckNvdW50UmVmLnZhbHVlID4gNSkge1xuICAgICAgdGhpcy5uYW1lVGV4dFZpZXcudGV4dCA9IHRoaXMubmFtZVRleHRSZWYudmFsdWUgKyAnNSdcbiAgICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmFtZVRleHRWaWV3LnRleHQgPSB0aGlzLm5hbWVUZXh0UmVmLnZhbHVlICsgJzEwJ1xuICAgIH1cbiAgfSlcbiAgXFxgXFxgXFxgXG4gIC0gXFxgc3JjL2xpYi91aWxpYi9SZWYudHNcXGDph4zpnaLnmoRcXGB3YXRjaFxcYOWHveaVsO+8jOesrOS4gOS4quWFpeWPglxcYHJlZnM6IFJlZjxUPltdXFxg57ud5a+556aB5q2i5YWI5aOw5piO5bGAcmVm5pWw57uE6YOo5Y+Y6YeP5YaN5Lyg5YWl77yM5q2j56Gu55qE5YaZ5rOV5bqU6K+l5piv55u05o6l5YaZ5pWw57uE77yaXFxgW3JlZjEsIHJlZjJdXFxg5bCx6KGMXG4gIC0g4p2MIOmUmeivr+eahOWGmeazle+8mlxuICAgIFxcYFxcYFxcYCB0eXBlc2NyaXB0XG4gICAgY29uc3QgcmVmQXJyYXkgPSBbcmVmMSwgcmVmMl1cbiAgICB3YXRjaChyZWZBcnJheSwgKG5ld1ZhbHVlczogVFtdKSA9PiB7XG4gICAgICAgIC8vIOebkeWQrHJlZjHlkoxyZWYy55qE5Y+Y5YyWXG4gICAgfSlcbiAgICBcXGBcXGBcXGBcbiAgLSDinIUg5q2j56Gu55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgIHR5cGVzY3JpcHRcbiAgICB3YXRjaChbcmVmMSwgcmVmMl0sIChuZXdWYWx1ZXM6IFRbXSkgPT4ge1xuICAgICAgICAvLyDnm5HlkKxyZWYx5ZKMcmVmMueahOWPmOWMllxuICAgIH0pXG4gICAgXFxgXFxgXFxgXG5cbiMjIDQuICoq55CG6Kejc2V0RGF0YUxpc3Tmlrnms5XnmoTpnZnmgIHmlbDmja7kuI7liqjmgIHmlbDmja7lnLrmma8qKlxuICAtIOWvueS6juWKqOaAgeaVsOaNruWuueWZqFZpZXdQYWdlcuOAgUxpc3RWaWV355qEc2V0RGF0YUxpc3Tmlrnms5XvvIzlpoLmnpzmlbDmja7mmK/liqjmgIHnmoTvvIzmr5TlpoLvvJrku47lkI7nq6/mjqXlj6Pojrflj5bnmoTvvIzmiY3og73kvb/nlKhzZXREYXRhTGlzdOaWueazleadpeiuvue9ruaVsOaNruOAgumdmeaAgeaVsOaNruW3sue7j+WcqFVJ6aG16Z2i5LiK5YaZ5aW95LqG77yM5L2g5LiN5b6X5L2/55Soc2V0RGF0YUxpc3Tmlrnms5XmnaXorr7nva7mlbDmja7jgIJcbiAgLSDliKTmlq3moIflh4bvvJrlpoLmnpxVSemhtemdouS4reW3sue7j+acieWujOaVtOeahOi9ruaSremhueebri/liJfooajpobnnm67vvIzlsLHmmK/pnZnmgIHmlbDmja7vvIzlpoLmnpzmmK/nvZHnu5xBUEnov5Tlm57nmoTmlbDmja7liJfooajlsLHmmK/liqjmgIHmlbDmja7jgIJcbiAgLSDinIUg6Z2Z5oCB5pWw5o2u5a655Zmo77yIVUnpobXpnaLkuK3lt7Llhpnlpb3lhoXlrrnvvInvvJrkuI3kvb/nlKhzZXREYXRhTGlzdCgpXG4gIC0g4pyFIOWKqOaAgeaVsOaNruWuueWZqO+8iOmcgOimgeS7jkFQSeiOt+WPlu+8ie+8muaJjeS9v+eUqHNldERhdGFMaXN0KClcblxuIyMgNS4gKipWaWV357uE5Lu277yM55CG6Kej5q+P5Liq57uE5Lu25Y+v6IO96YeM6Z2i5bey57uP5pyJ5LqG5ZON5bqU5byP5pWw5o2u5rqQ77yM5aaC5p6c57uE5Lu26YeM6Z2i5bey57uP5pyJ5LqG5ZON5bqU5byP5pWw5o2u5rqQ77yM6YKj5LmI5L2g5LiN5b6X5YaN6Ieq5bex5Yib5bu6cmVm5Y+Y6YeP5oiW6ICF5L2/55Sob25TZWxlY3RDaGFuZ2XnrYnlm57osIPop6blj5FVSeabtOaWsCoqXG4gIC0g5L6L5a2Q77yaVmlld1BhZ2Vy55qEY3VycmVudFNlbGVjdEluZGV45ZKMY3VycmVudFNlbGVjdEluZGV4UmVm5bGe5oCn5bey57uP5piv5ZON5bqU5byP5pWw5o2u5rqQ77yM5Y+v5Lul55u05o6l5L2/55SoY3VycmVudFNlbGVjdEluZGV4UmVm5p2l57uR5a6a6Ieq5Yqo5pu05pawVUnjgIJcbiAgICBwdWJsaWMgaW5pdFZpZXcoKSB7XG4gICAgICB0aGlzLnNob3dJbmRleFRleHRWaWV3LnRleHQgPSB0aGlzLnZpZXdQYWdlci5jdXJyZW50U2VsZWN0SW5kZXhSZWYudmFsdWUgKyAxICsgJy8nICsgdGhpcy52aWV3UGFnZXIuZGF0YUxpc3QubGVuZ3RoXG4gICAgfVxuICAtIOS+i+WtkO+8mlZpZXdQYWdlcueahGN1cnJlbnRTZWxlY3RJbmRleOWSjGN1cnJlbnRTZWxlY3RJbmRleFJlZuWxnuaAp+W3sue7j+aYr+WTjeW6lOW8j+aVsOaNrua6kO+8jOWPr+S7peebtOaOpeS9v+eUqGN1cnJlbnRTZWxlY3RJbmRleFJlZuadpee7keWumuiHquWKqOabtOaWsFVJ77yM5q+U5aaC77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHB1YmxpYyBpbml0VmlldygpIHtcbiAgICAgIHdhdGNoKFt0aGlzLnZpZXdQYWdlci5jdXJyZW50U2VsZWN0SW5kZXhSZWZdLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0luZGV4VGV4dFZpZXcudGV4dCA9IHRoaXMudmlld1BhZ2VyLmN1cnJlbnRTZWxlY3RJbmRleFJlZi52YWx1ZSArIDEgKyAnLycgKyB0aGlzLnZpZXdQYWdlci5kYXRhTGlzdC5sZW5ndGhcbiAgICAgIH0pXG4gICAgXFxgXFxgXFxgXG4gIC0gdGFi57uE5Lu25ZKM6L2u5pKt57uE5Lu255qE6YCJ5oup5Y+Y5YyW55uR5ZCs77yM5b+F6aG75L2/55SoXFxgVmlld1BhZ2VyXFxg5oiWXFxgVGFiQ29udGFpbmVyXFxg55qEXFxgb25TZWxlY3RDaGFuZ2UoZnVuYzogKGl0ZW06IGFueSwgcG9zaXRpb246IG51bWJlcikgPT4gdm9pZClcXGDlh73mlbDmnaXnm5HlkKzpgInmi6nlj5jljJZcblxuIyMgNi4gKirnkIbop6PpobXpnaLot7PovawqKlxuICAtIOmhtemdoui3s+i9rOW/hemhu+S9v+eUqEFsbEZ1bmN0aW9uLnN0YXJ0UGFnZeWunueOsO+8jHN0YXJ0UGFnZeS8oOWFpVBhZ2XnmoTlrZDnsbvlr7nosaHvvIzlpoLvvJpBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IFByb2R1Y3RQYWdlKHRoaXMucHJvZHVjdElEKSnjgIJcbiAgLSDinYwg6aG16Z2i6Lez6L2s5LiN6ZyA6ICD6JmR5qih5Z2X5YyW44CB5b6q546v5L6d6LWW44CB5riQ6L+b5byP5byA5Y+R77yM57ud5a+556aB5q2i5bGP6JS96aG16Z2i6Lez6L2s55qE5Luj56CB77yM5omA5pyJ6aG16Z2i6YO95bey57uP5a2Y5Zyo77yM5LiN5Lya5Ye6546w57yW6K+R5Ye66ZSZ55qE77yM5b+F6aG75piO56Gu5YaZ5LiK6aG16Z2i6Lez6L2s55qE5Luj56CB5ZKM55uu5qCH6aG16Z2i5omA6ZyA55qE6Lez6L2s5Y+C5pWw44CCXG4gIC0g5ZyoQXBwbGljYXRpb24udHPorr7nva7ot7PovazlkK/liqjpobXvvIzmr5TlpoLvvJpcdFxuICAgIC8vIOW6lOeUqOe9keermeWQr+WKqOaXtuWbnuiwg+eahOesrOS4gOS4quWHveaVsO+8jOeUqOS6juWIneWni+WMluS4gOS6m+WFqOWxgOeahOS4nOilv+OAglxuICAgIHByb3RlY3RlZCBvbkFwcGxpY2F0aW9uQ3JlYXRlKCk6IHZvaWQge1xuICAgICAgQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBTcGxhc2hQYWdlKCkpXG4gICAgfVxuICAtIOKchSDlvJXlhaXlhbbku5bnsbvlj6rlhYHorrjkuIDnp43lhpnms5XvvJrlnKjnsbvmlofku7bpobbpg6jov5vooYxpbXBvcnTvvJppbXBvcnQgR3VpZGVQYWdlIGZyb20gJy4uL2d1aWRlUGFnZS9ndWlkZVBhZ2Un44CCXG4gIC0g4p2MIOe7neWvueemgeatouS9v+eUqOWKqOaAgWltcG9ydOeahOWGmeazle+8jOeoi+W6j+W6leWxguW3sue7j+WkhOeQhuWlveW+queOr+S+nei1lumXrumimOS6hu+8jOS9oOS4jemcgOimgeiAg+iZke+8jOavlOWmgue7neWvueemgeatouS7peS4i+WGmeazle+8mlxuICAgICAgICAvLyDkvb/nlKjliqjmgIHlr7zlhaXpgb/lhY3lvqrnjq/kvp3otZZcbiAgICAgICAgaW1wb3J0KCcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJykudGhlbigoeyBkZWZhdWx0OiBHdWlkZVBhZ2UgfSkgPT4ge1xuICAgICAgICAgICAgQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBHdWlkZVBhZ2UoKSlcbiAgICAgICAgfSlcbiAgLSDinYwg57ud5a+556aB5q2i5L2/55SocmVxdWlyZeeahOWGmeazle+8jOeoi+W6j+W6leWxguW3sue7j+WkhOeQhuWlveW+queOr+S+nei1lumXrumimOS6hu+8jOS9oOS4jemcgOimgeiAg+iZke+8jOavlOWmgue7neWvueemgeatouS7peS4i+WGmeazle+8mlxuICAgICAgICByZXF1aXJlKCcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJykuZGVmYXVsdFxuICAtIOKchSDmraPnoa7nmoTlhpnms5XmmK/vvJpBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IEd1aWRlUGFnZSgpKeOAgueEtuWQjuWcqOexu+aWh+S7tumhtumDqOi/m+ihjGltcG9ydO+8mmltcG9ydCBHdWlkZVBhZ2UgZnJvbSAnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZSfjgIJcbiAgLSDlpoLmnpzpobXpnaLot7PovazpnIDopoHkvKDpgJLlj4LmlbDvvIzpgqPkuYjpnIDopoHkvb/nlKhQYWdl55qE5a2Q57G75p6E6YCg5Ye95pWw5p2l5Lyg6YCS5Y+C5pWw77yM5q+U5aaC77yaQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBHdWlkZVBhZ2UodGhpcy5wcm9kdWN0SUQpKeOAglxuICAtIOWcqOWunueOsOmhtemdoui3s+i9rOS7o+eggeeahOaXtuWAme+8jOW/hemhu+S4peagvOaMieeFp+S7peS4i+S4ieatpeadpeWunueOsO+8mlxuICAgICAgLSAqKuesrOS4gOatpe+8muWFiOWIhuaekOi3s+i9rOeahOebruagh+mhtemdoumcgOimgeS8oOmAkuWTquS6m+WPguaVsCoqXG4gICAgICAtICoq56ys5LqM5q2l77ya5L+u5pS555uu5qCH6aG16Z2i5p6E6YCg5Ye95pWwKirvvJpcbiAgICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICAgIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRpbmdQYWdlIGV4dGVuZHMgUGFnZSB7XG4gICAgICAgICAgcHJpdmF0ZSBib29rSWQ6IG51bWJlclxuICAgICAgICAgIHByaXZhdGUgY2hhcHRlclRpdGxlOiBzdHJpbmdcbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdHJ1Y3Rvcihib29rSWQ6IG51bWJlciwgY2hhcHRlclRpdGxlOiBzdHJpbmcpIHtcbiAgICAgICAgICAgICAgc3VwZXIoKVxuICAgICAgICAgICAgICB0aGlzLmJvb2tJZCA9IGJvb2tJZFxuICAgICAgICAgICAgICB0aGlzLmNoYXB0ZXJUaXRsZSA9IGNoYXB0ZXJUaXRsZVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxcYFxcYFxcYFxuICAgICAgLSAqKuesrOS4ieatpe+8muS/ruaUuei3s+i9rOS7o+eggSoqXG4gICAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgICBjb25zdCBib29rRGF0YSA9IHRoaXMucmVhZGluZ0hpc3RvcnlEYXRhUmVmLnZhbHVlWzBdXG4gICAgICBBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IFJlYWRpbmdQYWdlKGJvb2tEYXRhLmlkLCBib29rRGF0YS5jaGFwdGVyVGl0bGUpKVxuICAgICAgXFxgXFxgXFxgXG5cbiMjIDcuICoq55CG6Kej5Z+656GA5byA5Y+R6KeE5YiZKipcbiAgLSBsaWLmlofku7blpLnph4zpnaLnmoTku6PnoIHmlofku7bpg73mmK/lhoXnva7moYbmnrbku6PnoIHvvIznu53lr7nnpoHmraLlr7lsaWLmlofku7blpLnnmoTku6PnoIHov5vooYzlop7liKDmlLnmk43kvZxcbiAgLSDmiYDmnIlQYWdl55qE5a2Q57G777yM6YO95YWB6K645re75Yqg5p6E6YCg5Ye95pWw5ZKM5p6E6YCg5Ye95pWw55qE5Y+C5pWw77yM6L+Z5Lqb5Y+C5pWw5bCx55So5p2l6aG16Z2i6Lez6L2s5pe26aG16Z2i5LmL6Ze05Lyg6YCS5pWw5o2u5L2/55So77yM5q+U5aaC77ya5ZWG5ZOB5YiX6KGo6aG1UHJvamVjdExpc3RQYWdl6Lez5Yiw5ZWG5ZOB6K+m5oOF6aG1UHJvamVjdERldGFpbFBhZ2XvvIzpgqPkuYhQcm9qZWN0TGlzdFBhZ2XlupTor6XopoHkvKDnu5lQcm9qZWN0RGV0YWlsUGFnZeS4gOS4quWPguaVsO+8mnByb2R1Y3RJROOAguaJgOS7pe+8jFByb2plY3REZXRhaWxQYWdl55qE6aG16Z2i5Y+C5pWw5aOw5piO5ZKM5p6E6YCg5Ye95pWw5bqU6K+l5piv6L+Z5qC35YaZ77yaXG4gICAgcHJpdmF0ZSBwcm9kdWN0SUQ6IHN0cmluZ1xuICAgIGNvbnN0cnVjdG9yKHByb2R1Y3RJRDogc3RyaW5nKSB7XG4gICAgICBzdXBlcigpXG4gICAgICB0aGlzLnByb2R1Y3RJRCA9IHByb2R1Y3RJRFxuICAgIH3jgIJcbiAgLSDku7vkvZXpobXpnaLvvIjnibnliKvmmK/pl6rlsY/pobXvvInnmoTkuJrliqHpgLvovpHnu53lr7nkuI3og73mlL7liLBBcHBsaWNhdGlvbi50c+i/m+ihjOWkhOeQhu+8jEFwcGxpY2F0aW9uLnRz5Y+q6L+b6KGM5YWo5bGA572R57uc5oum5oiq5aSE55CG44CB5YWo5bGA6Z2Z5oCB5Y+Y6YeP44CB5YWo5bGA6Z2Z5oCB5pa55rOV55qE5a6a5LmJ5ZKM5a6e546wXG4gIC0g5aaC5p6c5piv5aSa5Liq6aG16Z2i5YWx55So55qE5pWw5o2u5Y+Y6YeP77yM5Y+v5Lul6ICD6JmR5aOw5piO5Li65YWo5bGA6Z2Z5oCB5Y+Y6YeP77yM5bm25ZyoQXBwbGljYXRpb24udHPkuK3ov5vooYzlo7DmmI7jgIJcbiAgLSDlhajlsYDpnZnmgIHlj5jph4/lnKjlhbPpl61BUFDmiJbogIXnvZHpobXlkI7kvJrmuIXnkIbmjonnmoTvvIzmiYDku6XkvaDopoHmgJ3ogIPmuIXmpZrlk6rkupvmlbDmja7lj5jph4/pnIDopoHmjIHkuYXljJblgqjlrZjvvIzlk6rkupvmmK/lhajlsYDpnZnmgIHlj5jph4/vvIzmjIHkuYXljJbmjqXlj6PvvJpzYXZlRGF0YWJhc2VYeHjlkoxnZXREYXRhYmFzZURhdGFYeHjvvIzmr5TlpoLmmK/lkKblt7Lnu4/lvLnlh7rov4flub/lkYrlvLnmoYbvvIzov5nkuKrlupTor6XmjIHkuYXljJblgqjlrZjjgIJcbiAgLSDmiYDmnInnmoTnvZHnu5zmi6bmiKrnmoTlhajlsYDnu5/kuIDlpITnkIbpnIDopoHlnKhBcHBsaWNhdGlvbuS4reeahG9uR2xvYmFsTmV0U3VjY2Vzc0ludGVyY2VwdCjogZTnvZHmiJDlip/lkI7vvIzlkI7nq6/kuJrliqHmraPnoa7kuI7plJnor6/pg73kvJrlm57osIPliLDov5nph4zvvIzmiYDku6XlnKjov5nph4zlj6/nu5/kuIDlpITnkIbkuJrliqHplJnor6/noIEp5oiWb25HbG9iYWxOZXRGYWlsSW50ZXJjZXB0KOe9kee7nOS4jemAmu+8jOi/nuaOpeWksei0peaDheWGteS8muWbnuiwg+WIsOi/memHjCnph4zpnaLlpITnkIbjgIJcbiAgLSDpobXpnaLlhoXnmoTnvZHnu5zor7fmsYLkuJrliqHlpITnkIbkuI3lvpflhpnlnKhBcHBsaWNhdGlvbueahG9uR2xvYmFsTmV0U3VjY2Vzc0ludGVyY2VwdOmHjOmdouOAglxuICAtIOWjsOaYjuWFqOWxgOWPmOmHj+OAgeWxgOmDqOWPmOmHj+W/hemhu+imgeWjsOaYjuaVsOaNruexu+Wei++8jOW5tuS4lOe7neWvueemgeatouS9v+eUqGFuee+8jOivt+S9v+eUqOWFt+S9k+exu+Wei+adpeWjsOaYjlxuICAtIOWtl+espuS4suS4jeW+l+ebtOaOpei/m+ihjGJvb2xlYW7ov5DnrpfnhLblkI7otYvlgLznu5lib29sZWFu57G75Z6L55qE5Y+Y6YeP77yM6ZyA6KaB5Zyo5a2X56ym5Liy5YmN6Z2i5re75Yqg5Lik5Liq6Z2e6L+Q566X77yaISHjgILmr5TlpoLmraPnoa7nmoTlhpnms5XvvJpjb25zdCBpc0FkZCA9ICEhdGhpcy5pbnB1dFZpZXcudGV4dCAmJiBpc05ld1xuICAtIOaJgOacieeahHRvYXN05o+Q56S677yM5b+F6aG76LCD55SoQWxsRnVuY3Rpb24uc2hvd1RvYXN05pa55rOV5p2l5pi+56S677yM5bm25LiU5aaC55So5oi35o+P6L+w5rKh5pyJ5piO56Gu6K+05piO6ZyA6KaBdG9hc3Tmj5DnpLrvvIzkvaDkuI3lvpfmk4Xoh6rov5vooYxUb2FzdOaPkOekuuOAglxuICAtIOW7tuaXtuaJp+ihjEFsbEZ1bmN0aW9uLnNldFRpbWVvdXTns7vnu5/kvJroh6rliqjmuIXnkIZ0aW1lb3V077yM5Luj56CB5LiK57ud5a+55LiN6IO96L+b6KGMY2xlYVRpbWVvdXTnrYnnsbvkvLzmk43kvZzvvIzlm6DmraRzZXRUaW1lb3V05Lmf5LiN6ZyA6KaB5aOw5piO5Y+Y6YeP5Y675o6l5pS2c2V0VGltZW91dOi/lOWbnueahOW8leeUqOOAglxuICAtIOi9ruaSrVZpZXdQYWdlcuWvueW6lOeahOe0ouW8leaMh+ekuuWZqOWuueWZqO+8jOi/meS4que0ouW8leaMh+ekuuWZqOS4jemcgOimgemineWkluS7o+eggeWunueOsOaMh+ekuuWZqOeCueeahOWIh+aNolVJ5pu05paw6YC76L6R77yM5pys6LqrVmlld1BhZ2Vy5LiOSW5kaWNhdG9yQ29udGFpbmVy5bqV5bGC5bey57uP5a6e546w5LqG5YiH5o2i55qEVUnmm7TmlrDpgLvovpHnmoTkuobvvIzlj6rpnIDopoF2aWV3UGFnZXIuYmluZEluZGljYXRvcihpbmRpY2F0b3JDb250YWluZXIp5Y2z5Y+v44CCXG4gIC0g56e75Yqo56uv55qEVmlld1BhZ2Vy55qEY2FuSW5kaWNhdG9yQ2xpY2vlsZ7mgKfpu5jorqTorr7nva7kuLpmYWxzZeeahO+8jOmZpOmdnueUqOaIt+aYjuehruivtOaYjumcgOimgea/gOa0u+aMh+ekuuWZqOeahOeCueeCueWHu+WIh+aNolZpZXdQYWdlcuOAglxuICAtIOavj+S4gOS4qumhtemdoijlpoJsb2dpblBhZ2Up5bu66K6u5ZyocGFnZeaWh+S7tuWkueS4i+mdouWIm+W7uuS4gOS4qumhtemdouaWh+S7tuWkuSjlpoJsb2dpbinvvIznhLblkI7pobXpnaLnmoR0c+aWh+S7tijlpoJsb2dpblBhZ2UudHMp5Yib5bu65Zyo6aG16Z2i5paH5Lu25aS55LiL6Z2i77yM6aG16Z2i5paH5Lu25aS55LiL5aaC5p6c6ZyA6KaB6L+Y5Y+v5Yib5bu65LiA5Liq6aG16Z2i5pWw5o2udHPmlofku7Yo5aaCbG9naW5QYWdlRGF0YS50cynvvIzov5nmoLflpoJsb2dpblBhZ2XotJ/otKPkuJrliqHpgLvovpHlkozkuqTkupLpgLvovpHvvIzlpoJsb2dpblBhZ2VEYXRh6LSf6LSj5pWw5o2u5aOw5piO5a6a5LmJ44CB5Yid5aeL5YyW5LiO566h55CG562J44CCXG5cbiMjIDguICoq55CG6Kej5ZCO56uvQVBJ5o6l5Y+j55qE5a6a5LmJ5LiO5L2/55SoKipcbiAgLSDkvb/nlKgncmVhZF9maWxlJ+W3peWFt+ivu+WPlidzcmMvYmFja2VuZEFwaS9iYWNrZW5kQXBpSW5mby5tZCflkI7nq69BUEnkvb/nlKjor7TmmI7mlofku7bvvIzlv4XpobvnvJPlrZjorrDkvY/miYDmnInlj6/nlKjnmoTlkI7nq69BUEnmjqXlj6PliJfooajjgIJcbiAgLSDlkI7nq69BUEnmjqXlj6PnmoTlrprkuYnkuI7kvb/nlKjvvIzlv4Xpobvkvb/nlKhzcmMvYmFja2VuZEFwaeaWh+S7tuWkuemHjOmdoueahOWQhOenjUFQSeexu+S4reWumuS5ieeahOaWueazle+8jOS4jeWFgeiuuOS9v+eUqOacquWcqGJhY2tlbmRBcGnmlofku7blpLnkuK3lrprkuYnnmoTlkI7nq69BUEnvvIzmr5TlpoLvvJpiYWNrZW5kQXBpL2FjY291bnQvZ2V0VXNlckluZm8udHPvvIzov5nkuKrlsLHmmK/otKblj7fmqKHlnZfkuK3nmoTojrflj5bnlKjmiLfkv6Hmga/nmoRBUEnnsbvvvIzov5Tlm57nmoRyZXPlv4Xpobvlo7DmmI7lhbfkvZPnsbvlnovvvIzmr5TlpoJyZXM6IGdldFVzZXJJbmZvUmVzcG9uc2XjgIJcbiAgLSByZXF1ZXN05o6l5Y+j5Y+q6ZyA5a6a5LmJ5Y2z5Y+v77yM5LiN6ZyA6KaB5a6e546w77yM5bqV5bGC5bey57uP5a6e546w44CCXG4gIC0gQVBJ57G75Luj56CB56S65L6L77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIGltcG9ydCBCYXNlQXBpIGZyb20gJy4uL0Jhc2VBcGknXG5cbiAgICAvLyDotKblj7fns7vnu58t6LSm5Y+35a+G56CB55m75b2V5o6l5Y+j6K+35rGC5pWw5o2uXG4gICAgZXhwb3J0IGludGVyZmFjZSBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVxdWVzdCB7XG4gICAgICAgIHVzZXJuYW1lPzogc3RyaW5nXG4gICAgICAgIHBhc3N3b3JkPzogc3RyaW5nXG4gICAgICAgIGtleT86IHN0cmluZ1xuICAgICAgICBjYXB0Y2hhPzogc3RyaW5nXG4gICAgfVxuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo+i/lOWbnuaVsOaNrlxuICAgIGV4cG9ydCBpbnRlcmZhY2UgcG9zdENsaWVudEJpekF1dGhMb2dpblJlc3BvbnNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIG1zZzogc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOi0puWPt+ezu+e7ny3otKblj7flr4bnoIHnmbvlvZXmjqXlj6PlpLHotKXov5Tlm57mlbDmja5cbiAgICBleHBvcnQgaW50ZXJmYWNlIGFwaUZhaWxJbmZvIHtcbiAgICAgICAgbXNnOiBzdHJpbmdcbiAgICAgICAgY29kZTogbnVtYmVyXG4gICAgfVxuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo1xuICAgIGV4cG9ydCBkZWZhdWx0IGNsYXNzIHBvc3RDbGllbnRCaXpBdXRoTG9naW4gZXh0ZW5kcyBCYXNlQXBpICB7XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyByZXF1ZXN0X0FydHVYMWQ4YTZBKFxuICAgICAgICAgICAgcmVxdWVzdDogcG9zdENsaWVudEJpekF1dGhMb2dpblJlcXVlc3QsXG4gICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVzcG9uc2UpID0+IHZvaWQsXG4gICAgICAgICAgICBmYWlsOiAoZXJyb3I6IGFwaUZhaWxJbmZvKSA9PiB2b2lkXG4gICAgICAgICk6IHZvaWQgeyB9XG5cbiAgICB9XG4gICAgXFxgXFxgXFxgXG4gIC0gQVBJ57G755qE5L2/55So5pa55byP77ya5YWIaW1wb3J0IEFQSeexu++8jOeEtuWQjuiwg+eUqEFQSeexu+eahHJlcXVlc3Tmlrnms5XvvIzmr5TlpoLvvJpcbiAgICBpbXBvcnQgeyBwb3N0Q2xpZW50Qml6QXV0aExvZ2luIH0gZnJvbSAnLi4vLi4vYmFja2VuZEFwaS9hY2NvdW50L3Bvc3RDbGllbnRCaXpBdXRoTG9naW4nXG4gICAgLi4uXG4gICAgY29uc3QgcmVxdWVzdDogcG9zdENsaWVudEJpekF1dGhMb2dpblJlcXVlc3QgPSB7XG4gICAgICB1c2VybmFtZTogJ2FkbWluJyxcbiAgICAgIHBhc3N3b3JkOiAnMTIzNDU2JyxcbiAgICAgIGtleTogJzEyMzQ1NicsXG4gICAgICBjYXB0Y2hhOiAnMTIzNDU2J1xuICAgIH1cbiAgICBwb3N0Q2xpZW50Qml6QXV0aExvZ2luLnJlcXVlc3RfQXJ0dVgxZDhhNkEocmVxdWVzdCwgKHJlc3BvbnNlOiBwb3N0Q2xpZW50Qml6QXV0aExvZ291dFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyDor7fmsYLmiJDlip/lkI7nmoTlpITnkIZcbiAgICB9LCAoZXJyb3I6IGFwaUZhaWxJbmZvKSA9PiB7XG4gICAgICAvLyDor7fmsYLlpLHotKXlkI7nmoTlpITnkIZcbiAgICB9KVxuICAgIC4uLlxuXG4jIyA5LiAqKueQhuino+iwg+eUqOWQjuerr2FwaeaOpeWPo+i/lOWbnuaVsOaNruWQjuS4jlVJ5pWw5o2u57uR5a6aKipcbiAgLSDlnKjosIPnlKjlkI7nq69hcGnmjqXlj6Pov5Tlm57mlbDmja7lkI7vvIzpnIDopoHmoLnmja52dHlwZeadpeWBmuS4jeWQjOeahOaVsOaNrue7keWumu+8jOavlOWmgu+8mlxuICAgIC0gdnR5cGU9XCJ2ZXJ0aWNhbExpc3RWaWV3XCLjgIF2dHlwZT1cImhvcml6b250YWxMaXN0Vmlld1wi44CBdnR5cGU9XCJ2aWV3UGFnZXJcIuexu+Wei+eahOiKgueCuee7hOS7tu+8jOmcgOimgeS9v+eUqHNldERhdGFMaXN05pa55rOV5p2l57uR5a6a5pWw5o2u77yM5q+U5aaC77yaXG4gICAgICB0aGlzLnh4eFZlcnRpY2FsTGlzdFZpZXcuc2V0RGF0YUxpc3QocmVzcG9uc2UuZGF0YS5saXN0KeOAgXRoaXMueHh4SG9yaXpvbnRhbExpc3RWaWV3LnNldERhdGFMaXN0KHJlc3BvbnNlLmRhdGEubGlzdCnjgIF0aGlzLnh4eFZpZXdQYWdlci5zZXREYXRhTGlzdChyZXNwb25zZS5kYXRhLmxpc3QpXG4gICAgLSB2dHlwZT1cImxpc3RJdGVtQ2FyZFwi44CBdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCLnsbvlnovnmoToioLngrnnu4Tku7bvvIzpnIDopoHmt7HluqbpgY3ljoblroPnmoTnrKwx5LiqaXRlbeeahOWtqeWtkO+8jOeEtuWQjue7k+WQiOWQjuerr2Fwaei/lOWbnueahHh4eFJlc3BvbnNl55qE5pWw5o2u57uT5p6E57uZ56ysMeS4qml0ZW3orr7nva7mlbDmja7vvIzms6jmhI/lj6rpnIDnu5nnrKwx5LiqaXRlbeiKgueCueiuvue9ruaVsOaNru+8jOiAjOS4jeaYr+aJgOaciWl0ZW3oioLngrnpg73orr7nva7mlbDmja7vvIzmr5TlpoLvvJpcbiAgICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICAgIC8vIOWQjuerr3h4eEFwaei/lOWbnueahHh4eFJlc3BvbnNl5pWw5o2u57uT5p6EXG4gICAgICBleHBvcnQgaW50ZXJmYWNlIGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2Uge1xuICAgICAgICAgIGNvZGU6IG51bWJlclxuICAgICAgICAgIG1zZzogc3RyaW5nXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBsaXN0OiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IG51bWJlciAvLyDkuabnsY1JRFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmcgLy8g5Lmm57GN5qCH6aKYXG4gICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBzdHJpbmcgLy8g5L2c6ICF5ZCN56ewXG4gICAgICAgICAgICAgICAgICAgICAgY292ZXJVcmw6IHN0cmluZyAvLyDlsIHpnaLlm77niYdVUkxcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIC8vIOS5puexjeeugOS7i1xuICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5TmFtZTogc3RyaW5nIC8vIOWIhuexu+WQjeensFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdIC8vIOS5puexjeWIl+ihqFxuICAgICAgICAgICAgICB0b3RhbDogbnVtYmVyIC8vIOaAu+aVsOmHj1xuICAgICAgICAgICAgICBwYWdlOiBudW1iZXIgLy8g5b2T5YmN6aG156CBXG4gICAgICAgICAgICAgIHNpemU6IG51bWJlciAvLyDmr4/pobXmlbDph49cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICAuLi5cbiAgICAgIC8vIOiuvue9ruS5puexjeWIl+ihqOaVsOaNrlxuICAgICAgdGhpcy5yZWNvbW1lbmRCb29rTGlzdC5zZXREYXRhTGlzdChnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlLmRhdGEubGlzdClcbiAgICAgIC8vIOiuvue9ruesrDHkuKppdGVt6IqC54K55pWw5o2uXG4gICAgICB0aGlzLnJlY29tbWVuZEJvb2tDb3ZlcjEuc3JjID0gZ2V0UmVjb21tZW5kQm9va0xpc3RSZXNwb25zZS5kYXRhLmxpc3RbMF0uY292ZXJVcmxcbiAgICAgIHRoaXMucmVjb21tZW5kQm9va1RpdGxlMS50ZXh0ID0gZ2V0UmVjb21tZW5kQm9va0xpc3RSZXNwb25zZS5kYXRhLmxpc3RbMF0udGl0bGVcbiAgICAgIHRoaXMucmVjb21tZW5kQm9va0F1dGhvcjEudGV4dCA9IGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UuZGF0YS5saXN0WzBdLmF1dGhvclxuICAgICAgLi4uXG4gICAgICAvLyDorr7nva7ova7mkq3mlbDmja5cbiAgICAgIHRoaXMucmVjb21tZW5kVmlld1BhZ2VyLnNldERhdGFMaXN0KGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UuZGF0YS5saXN0KVxuICAgICAgLy8g6K6+572u56ysMeS4qml0ZW3oioLngrnmlbDmja5cbiAgICAgIHRoaXMucmVjb21tZW5kSW1hZ2UxLnNyYyA9IGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UuZGF0YS5saXN0WzBdLmNvdmVyVXJsXG4gICAgICB0aGlzLmNhcm91c2VsVGl0bGUxLnRleHQgPSBnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlLmRhdGEubGlzdFswXS50aXRsZVxuICAgICAgLi4uXG4gICAgICBcXGBcXGBcXGBcblxuIyMgMTAuIOi9ruaSrVZpZXdQYWdlcueahOaMh+ekuuWZqOeCueeahOWIh+aNolVJ5pu05paw6YC76L6R77yM5LiN5b6X5ZyodHPku6PnoIHph4zpnaLov5vooYzvvIzlm6DkuLpWaWV3UGFnZXLnmoTmjIfnpLrlmajngrnnmoTliIfmjaJVSeabtOaWsOmAu+i+keW3sue7j+iHquWKqOWunueOsOS6hu+8jOS9oOS4jemcgOimgeWGjeaJi+WKqOWunueOsOOAglxuXG4jIyAxMS4g5Lil5qC86YG15a6I5Luj56CB6KeE6IyD5LiO6ZmQ5Yi2XG4gLSDjgJDnsbvlnovkuI7ms5vlnovjgJFcbiAgIC0g5Zyo57un5om/6IeqXFxgUGFnZVxcYOeahOexu+S4re+8jOemgeatoumdnumdmeaAgeaIkOWRmOS9v+eUqERPTeexu+Wei+aIluWFtuS7luiHquWumuS5ieemgeatouexu+Wei+OAglxuICAgLSDnpoHmraLkvb/nlKhVSUxJQuexu+Wei+eahOaVsOe7hOS9nOS4uuaIkOWRmOOAgeWxgOmDqOWPmOmHj+OAgeaWueazleWFpeWPguaIlui/lOWbnuWAvOOAglxuICAgLSDnpoHmraLnsbvmiJDlkZjkuI7lsYDpg6jlj5jph4/mmL7lvI/lo7DmmI7kuLpcXGBhbnlcXGDvvIzku6Xlj4rkvb/nlKhcXGBhcyBhbnlcXGDjgIJcbiAgIC0gXFxgUmVmPFQ+XFxg55qEXFxgVFxcYOS7heWFgeiuuO+8mlxcYG51bWJlclxcYOOAgVxcYHN0cmluZ1xcYOOAgVxcYGJvb2xlYW5cXGDjgIFcXGBhbnlcXGDjgIFcXGBBcnJheTxhbnk+XFxg5Y+K5YW2XFxgfCBudWxsXFxg5Y+Y5L2T44CCXG4gICAtIOemgeatouS9v+eUqFxcYFN5bWJvbFxcYOWPiuWFtuebuOWFs0FQSeOAglxuICAgLSDnpoHmraLlhajlsYDlj5jph4/jgIHlsYDpg6jlj5jph4/jgIHmlrnms5XlhaXlj4LjgIHov5Tlm57lgLznmoTogZTlkIjnsbvlnovjgIJcbiAgIC0g5Zyo57un5om/XFxgUGFnZVxcYOeahOaWh+S7tuS4reemgeatouWjsOaYjlxcYGludGVyZmFjZVxcYO+8jOS4lOivpeaWh+S7tuS7heWFgeiuuOS4gOS4qlxcYGNsYXNzXFxg5aOw5piO44CCXG4gICAtIOmdnlxcYHNyYy9saWJcXGDnm67lvZXnmoRcXGB0c1xcYOaWh+S7tuS4re+8jFxcYGludGVyZmFjZVxcYOWPquWFgeiuuOWumuS5ieWxnuaAp++8m+emgeatouWFtuS7luWjsOaYjuOAglxuICAgLSDnpoHmraLkvb/nlKhcXGBQYXJ0aWFsPFQ+XFxg44CCXG4gICAtIOemgeatouihjOWGheWHveaVsOexu+Wei+OAgeWHveaVsOexu+Wei+WIq+WQjeS4juWGheiBlOWvueixoeexu+Wei+Wtl+mdoumHj++8iOWxnuaAp+mZpOWklu+8ieOAglxuICAgLSDnpoHmraLlrprkuYnnsbvlnovlsZ7kuo5VSUxJQueahOmdnuexu+aIkOWRmOWPmOmHj+OAglxuICAgLSDnpoHmraLlsIZVSUxJQuexu+Wei+eahOWAvOi1i+e7memdnlVJTElC57G75Z6L55qE55uu5qCH44CCXG4gLSDjgJDlr7zlhaXjgJFcbiAgIC0g5b2T57G76Lev5b6E5ZyoXFxgc3JjL2xpYlxcYOebruW9leS4i+aXtu+8jOemgeatouWvuei/meS4quexu+S9v+eUqOWvvOWFpemHjeWRveWQjeaIluWIq+WQjeOAglxuIC0g44CQ5a+85Ye644CRXG4gICAtIOWcqOacque7p+aJv1xcYFBhZ2VcXGDmiJZcXGBCYXNlQXBpXFxg55qE5paH5Lu25Lit77yM5LiU57G75ZCN5LiN562J5LqOXFxgc3JjL2xpYlxcYOWSjFxcYHNyYy9saWIvdWlsaWJcXGDnm67lvZXkuIvnmoTnsbvlkI3jgIHkuJTkuI3kuLpcXGBBcHBsaWNhdGlvblxcYOaXtu+8jOS7heWFgeiuuFxcYGV4cG9ydCBkZWZhdWx0IGNsYXNzXFxg44CBXFxgZXhwb3J0IGNsYXNzXFxg44CBXFxgZXhwb3J0IGludGVyZmFjZVxcYO+8m+emgeatouWFtuS7luWvvOWHuuW9ouW8j+OAglxuIC0g44CQ5pa55rOV5LiO5Ye95pWw44CRXG4gICAtIOemgeatouS9v+eUqFxcYHNldEludGVydmFsXFxg44CBXFxgY2xlYXJJbnRlcnZhbFxcYOOAgVxcYHNldFRpbWVvdXRcXGDvvJvkvb/nlKhcXGBBbGxGdW5jdGlvblxcYOWvueW6lOaWueazleOAglxuICAgLSDnpoHmraLkvb/nlKhcXGBsb2NhbFN0b3JhZ2Uvc2Vzc2lvblN0b3JhZ2VcXGDnmoRcXGBzZXRJdGVtL2dldEl0ZW1cXGDvvJvkvb/nlKhcXGBBbGxGdW5jdGlvblxcYOaVsOaNruW6k+aWueazleOAglxuICAgLSDnpoHmraJcXGBEYXRlLm5vdygpXFxg5LiOXFxgbmV3IERhdGUoKVxcYO+8m+S9v+eUqFxcYEFsbEZ1bmN0aW9uXFxg5pe26Ze05pa55rOV44CCXG4gICAtIOemgeatouWcqOWHveaVsOWGheWumuS5ieWGhemDqOWHveaVsO+8m+ivt+WumuS5ieS4uuexu+engeacieaWueazleOAglxuICAgLSDnpoHmraJcXGBKU09OLnN0cmluZ2lmeS9KU09OLnBhcnNlXFxg77yb5oyJ5LiK5LiL5paH5L2/55SoXFxgSnNvbkFycmF5LnN0cmluZ2lmeS9wYXJzZVxcYOaIllxcYEpzb25PYmplY3Quc3RyaW5naWZ5L3BhcnNlXFxg44CCXG4gICAtIFxcYEpzb25PYmplY3Quc3RyaW5naWZ5L3BhcnNlXFxg5LiOXFxgSnNvbkFycmF5LnN0cmluZ2lmeS9wYXJzZVxcYOeahOWPguaVsOemgeatouS8oOWFpVxcYGNsYXNzXFxg5a+56LGh44CCXG4gICAtIOWcqOe7p+aJv1xcYFBhZ2VcXGDnmoTnsbvkuK3pnZnmgIHosIPnlKjnu6fmib9cXGBCYXNlQXBpXFxg55qE57G75pa55rOV5pe277ya5pa55rOV5ZCN5b+F6aG75Yy56YWNXFxgcmVxdWVzdF88MTDkvY3lrZfmr43mlbDlrZc+XFxg77yM5Y+C5pWw5b+F6aG75Li6M+S4qu+8jOS4lOesrDLjgIEz5Liq5Y+C5pWw57G75Z6L5LiN5b6X5Li6XFxgYW55XFxg5oiW5rOb5Z6L44CCXG4gICAtIOWcqOe7p+aJv1xcYEJhc2VBcGlcXGDnmoTnsbvkuK3vvIxcXGByZXF1ZXN0X1xcYOW8gOWktOeahOmdmeaAgeaWueazleWQjOagt+W/hemhu+a7oei2s+WRveWQjeS4jjPlj4Lop4TliJnjgIJcbiAgIC0g56aB5q2i5pa55rOV5YaF5bGA6YOo5Y+Y6YeP6YeN5ZCN44CCXG4gICAtIFxcYGZpbmRWaWV3QnlJZFxcYOS7heWFgeiuuOeUqOS6juexu+aIkOWRmOWPmOmHj+WIneWni+WMlu+8jOWmglxcYHRoaXMuZmluZFZpZXdCeUlkKCd4eHgnKSBhcyA85YW35L2T57G75Z6LPlxcYO+8m+WFtuS7luS9jee9ruemgeatouiwg+eUqOOAglxuICAgLSDlnKjnu6fmib9cXGBQYWdlXFxg55qE5paH5Lu25Lit56aB5q2i5L2/55SoXFxgQXJyYXkuaXNBcnJheSgpXFxg77yb5L2/55SoXFxgQWxsRnVuY3Rpb24uaXNBcnJheSgpXFxg44CCXG4gICAtIOWcqOacque7p+aJv1xcYFBhZ2VcXGDmiJZcXGBCYXNlQXBpXFxg55qE57G75Lit56aB5q2i5aOw5piO5pa55rOV77yIXFxgY29uc3RydWN0b3JcXGDpmaTlpJbvvInvvJvoi6XnsbvlkI3nrYnkuo5cXGBzcmMvbGliXFxg5ZKMXFxgc3JjL2xpYi91aWxpYlxcYOebruW9leS4i+eahOexu+WQjeWImeS4jeWPl+atpOmZkOOAglxuICAgLSDlnKjnu6fmib9cXGBQYWdlXFxg55qE57G75Lit6LCD55SoXFxgZmluZFZpZXdCeUlkXFxg5pe277yM5Y+C5pWw5b+F6aG75a2Y5Zyo5LqO5ZCM55uu5b2V5ZCM5ZCN5aOw5piO5byPVUnnmoRcXGAuaWQoJy4uLicpXFxg5YiX6KGo44CCXG4gICAtIOWcqOe7p+aJv1xcYFBhZ2VcXGDnmoTmlofku7bkuK3osIPnlKhcXGB3YXRjaFxcYO+8iOS9jeS6jlxcYFJlZi50c1xcYO+8ieaXtu+8jOesrOS4gOS4quWPguaVsOW/hemhu+aYr+Wtl+mdoumHj+aVsOe7hFxcYFtyZWYxLCByZWYyXVxcYO+8jOemgeatouWPmOmHj+S8oOmAkuOAglxuICAgLSDlnKjnu6fmib9cXGBQYWdlXFxg55qE5paH5Lu25Lit5a6a5LmJVUlMSULnsbvlnovmiJDlkZjlj5jph4/ml7bvvIzlv4Xpobvkvb/nlKhcXGB0aGlzLmZpbmRWaWV3QnlJZCgneHh4JykgYXMgWHh4XFxg5Yid5aeL5YyW44CCXG4gLSDjgJDmlbDnu4Tmlrnms5XjgJFcbiAgIC0g56aB5q2i5L2/55SoXFxgbWFwXFxg44CBXFxgZmlsdGVyXFxg44CBXFxgZmluZFxcYOOAgVxcYGZpbmRJbmRleFxcYOOAgVxcYHJlZHVjZVxcYOOAgVxcYHJlZHVjZVJpZ2h0XFxg44CBXFxgZXZlcnlcXGDjgIFcXGBzb21lXFxg44CBXFxgc29ydFxcYOOAgVxcYGZsYXRNYXBcXGDvvJvnu5/kuIDkvb/nlKhcXGBmb3ItaVxcYOWunueOsOOAglxuIC0g44CQ6K+t5rOV6ZmQ5Yi244CRXG4gICAtIOemgeatouS9v+eUqFxcYHx8XFxg6L+b6KGM6LWL5YC844CB5Lyg5Y+C5oiW5Yid5aeL5YyW77yb5pS555So5LiJ5YWD6KGo6L6+5byP44CCXG4gICAtIOemgeatouWvueixoeWxleW8gOivreazlVxcYC4uLlxcYOWFi+mahuWvueixoe+8m+aUueeUqOaJi+WKqOi1i+WAvOOAglxuICAgLSDnpoHmraLnsbvmiJDlkZjlj5jph4/kuI7mlrnms5XlhaXlj4LlkIzlkI3vvIzmiJbkuI7mlrnms5XlhoXlsYDpg6jlj5jph4/lkIzlkI3jgIJcbiAgIC0g56aB5q2i5L2/55SoXFxgdHJ5L2NhdGNoL2ZpbmFsbHlcXGDkuI7mraPliJnooajovr7lvI/jgIJcbiAgIC0g5Zyo57un5om/XFxgUGFnZVxcYOeahOaWh+S7tuS4reemgeatouS9v+eUqFxcYHR5cGVvZlxcYO+8m+aUueeUqFxcYEFsbEZ1bmN0aW9uLmlzU3RyaW5nL2lzTnVtYmVyL2lzQm9vbGVhbi9pc09iamVjdFxcYOOAglxuICAgLSDnpoHmraLlr7nosaHlsZ7mgKfnroDlhpnvvIhcXGB7IGEgfVxcYO+8ie+8m+S9v+eUqOWujOaVtOWGmeazle+8iFxcYHsgYTogYSB9XFxg77yJ44CCXG4gICAtIOWcqOe7p+aJv1xcYFBhZ2VcXGDnmoTmlofku7bkuK3vvIznpoHmraLlr7lVSUxJQuexu+Wei+WPmOmHj+i/m+ihjOecn+WAvOWIpOaWreOAglxuIC0g44CQ6KGl5YWF55qE6aG555uu6KeE5YiZ44CRXG4gICAtIOemgeatouS9v+eUqFxcYGZvci4uLmluXFxg77yb5L2/55SoXFxgT2JqZWN0LmtleXNcXGArXFxgZm9yLWlcXGDjgIJcbiAgIC0g56aB5q2iXFxgYXN5bmMvUHJvbWlzZVxcYO+8iOWQq1xcYFByb21pc2UucmFjZS9Qcm9taXNlLmFsbFxcYO+8ie+8m+aJgOacieW8guatpeaTjeS9nOS9v+eUqOeureWktOWHveaVsOOAglxuICAgLSDnpoHmraLkvb/nlKjmtY/op4jlmajnjq/looPnmoRcXGBsaWIuZG9tLmQudHNcXGDmlrnms5Xkuo5Ob2Rl546v5aKD44CCXG4gICAtIOemgeatouS/ruaUueOAgeWinuWIoFxcYHNyYy9saWJcXGDlj4rlhbblrZDnm67lvZXkuK3nmoTmlofku7bjgIJcblxuYDtcbiJdfQ==
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwQ29kZVJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwQ29kZVJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBdVRqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVuZGVyc3RhbmRpbmdDb2RlRnJhbWV3b3JrVGVtcGxhdGUgPSBgXG4jICoq5b+F6aG75YWI55CG6Kej6aG555uu5Luj56CB5qGG5p62MTHkuKrnn6Xor4bngrkqKlxuIyMgMS4gKirnkIbop6NWaWV357uE5Lu255qE5aOw5piO6KeE5YiZKipcbiAgLSDov5nkuI3mmK9odG1s44CBcmVhY3TnrYnlvIDlj5HvvIzov5nmmK/kuIDkuKrmlrDnmoTlvIDlj5HmoYbmnrbvvIzmmK/ln7rkuo5zcmMvbGliL3VpbGli5paH5Lu25aS56YeM6Z2i55qEVUnnu4Tku7blupPmnaXlvIDlj5HnmoRcbiAgLSBWaWV357uE5Lu255qE5Z+657G75pivQmFzZVZpZXfvvIzlrrnlmajln7rnsbvmmK9CYXNlQ29udGFpbmVyVmlld++8jOaJgOaciVZpZXfnu4Tku7bpg73nu6fmib/oh6pCYXNlVmlld1xuICAtIOafpeeciydzcmMvbGliL3VpbGliLyfmlofku7blpLnkuIvpnaLnmoTmlofku7blkI3lrZfvvIznkIbop6PmgLvlhbHmnInlpJrlsJHnp41VSee7hOS7tlxuICAtIFZpZXfnu4Tku7bnmoTlo7DmmI7lv4XpobvlnKjnsbvmlofku7blvIDlp4vml7blhYjlo7DmmI7vvIzlubbkuJTlv4XpobvopoHlo7DmmI7lhbfkvZPnmoRWaWV357uE5Lu257G75Z6L77yM5LiN5b6X5aOw5piO5Li6QmFzZVZpZXfvvIzkuI3lvpflnKjku7vkvZXlh73mlbDkvZPph4zpnaLpgJrov4dmaW5kVmlld0J5SWTmnaXlo7DmmI5WaWV357uE5Lu277yM5q+U5aaC77yaXG4gICAgLSDinIUg5q2j56Gu55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHB1YmxpYyBjbGFzcyBIb21lUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgICAgcHJpdmF0ZSBuYW1lVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SWQoJ25hbWVUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgICAuLi4uXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAgIC0g4p2MIOmUmeivr+eahOWGmeazle+8iOayoeacieWjsOWFt+S9k+eahFZpZXfnu4Tku7bnsbvlnovvvInvvJpcbiAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgcHJpdmF0ZSBuYW1lVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJZCgnbmFtZVRleHRWaWV3JylcbiAgICBcXGBcXGBcXGBcbiAgICAtIOKdjCDplJnor6/nmoTlhpnms5XvvIjlnKjlh73mlbDkvZPph4zpnaLpgJrov4dmaW5kVmlld0J5SWTmnaXlo7DmmI5WaWV357uE5Lu277yJ77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHByaXZhdGUgb25lRnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBuYW1lVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SWQoJ25hbWVUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgICAuLi4uXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAtIOaJgOaciVZpZXfnu4Tku7bnmoTpgInkuK3nirbmgIHjgIHogZrnhKbnirbmgIHjgIHnpoHnlKjnirbmgIHnmoTlj5jljJbpg73lv4XpobvpgJrov4dcXGBzZXRTdGF0aW9uKHN0YXRpb246IFZpZXdTdGF0aW9uKVxcYOWHveaVsOadpeiuvue9ru+8jOS4jeiDveebtOaOpeiuvue9rue7hOS7tueahFVJ5bGe5oCn77yM5Y+q6ZyA6KaB6K6+572u57uE5Lu255qEc3RhdGlvbuWxnuaAp+WNs+WPr+iHquWKqOabtOaWsOe7hOS7tueahFVJ5qC35byPXG4gIC0g5omA5pyJVmlld+e7hOS7tueahOaYvuekuuOAgemakOiXj+WNoOS9jeOAgemakOiXj+S4jeWNoOS9jeeahOiuvue9rumDveW/hemhu+S9v+eUqFZpZXfnmoRcXGB2aXNpYmlsaXR5XFxg5bGe5oCn6L+b6KGM6K6+572u77yM5LiN5b6X5L2/55SoXFxgc3RhdGlvblxcYOWxnuaAp+OAglxuICAtIOaJgOaciVZpZXfnu4Tku7bnmoRub3JtYWzjgIFyZWFkT25seeOAgWZvY3Vz44CBc2VsZWN0ZWTjgIFkaXNhYmxlZOeKtuaAgeeahOiuvue9rumDveW/hemhu+S9v+eUqFZpZXfnmoRcXGBzdGF0aW9uXFxg5bGe5oCn6L+b6KGM6K6+572u44CCXG5cbiMjIDIuICoq55CG6Kej5ZSv5LiA55qE6IO95Yqb5pa55rOVQWxsRnVuY3Rpb24udHPku6Xlj4pqc29u55u45YWz5Luj56CBKipcbiAgLSDkvb/nlKgncmVhZF9maWxlJ+W3peWFt+mYheivu+W5tueQhuinoydzcmMvbGliL0FsbEZ1bmN0aW9uLnRzJ+aWh+S7tu+8jOeQhuino+ivpeW3peeoi+iDveS9v+eUqOeahOWUr+S4gOeahOiDveWKm+aWueazlVxuICAtIOivt+S4peagvOaMieeFp+WUr+S4gOeahOiDveWKm+aWueazlUFsbEZ1bmN0aW9uLnRz77yM5LiN6KaB5paw5aKe44CB5Yig6Zmk5oiW5L+u5pS55Lu75L2VQWxsRnVuY3Rpb27mjqXlj6Plo7DmmI7vvJvkuZ/kuI3opoHosIPnlKjlhbbku5bmnKrlnKhBbGxGdW5jdGlvbuS4reWHuueOsOeahOWHveaVsOaIluaooeWdl1xuICBcbiMjIDMuICoq55CG6KejUmVm44CBd2F0Y2gqKlxuICAtIFJlZueahOaVsOaNruexu+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+i9rCoqXG4gIC0g6aG16Z2i6Lez6L2s5b+F6aG75L2/55SoQWxsRnVuY3Rpb24uc3RhcnRQYWdl5a6e546w77yMc3RhcnRQYWdl5Lyg5YWlUGFnZeeahOWtkOexu+Wvueixoe+8jOWmgu+8mkFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgUHJvZHVjdFBhZ2UodGhpcy5wcm9kdWN0SUQpKeOAglxuICAtIOKdjCDpobXpnaLot7PovazkuI3pnIDogIPomZHmqKHlnZfljJbjgIHlvqrnjq/kvp3otZbjgIHmuJDov5vlvI/lvIDlj5HvvIznu53lr7nnpoHmraLlsY/olL3pobXpnaLot7PovaznmoTku6PnoIHvvIzmiYDmnInpobXpnaLpg73lt7Lnu4/lrZjlnKjvvIzkuI3kvJrlh7rnjrDnvJbor5Hlh7rplJnnmoTvvIzlv4XpobvmmI7noa7lhpnkuIrpobXpnaLot7PovaznmoTku6PnoIHlkoznm67moIfpobXpnaLmiYDpnIDnmoTot7Povazlj4LmlbDjgIJcbiAgLSDlnKhBcHBsaWNhdGlvbi50c+iuvue9rui3s+i9rOWQr+WKqOmhte+8jOavlOWmgu+8mlx0XG4gICAgLy8g5bqU55So572R56uZ5ZCv5Yqo5pe25Zue6LCD55qE56ys5LiA5Liq5Ye95pWw77yM55So5LqO5Yid5aeL5YyW5LiA5Lqb5YWo5bGA55qE5Lic6KW/44CCXG4gICAgcHJvdGVjdGVkIG9uQXBwbGljYXRpb25DcmVhdGUoKTogdm9pZCB7XG4gICAgICBBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IFNwbGFzaFBhZ2UoKSlcbiAgICB9XG4gIC0g4pyFIOW8leWFpeWFtuS7luexu+WPquWFgeiuuOS4gOenjeWGmeazle+8muWcqOexu+aWh+S7tumhtumDqOi/m+ihjGltcG9ydO+8mmltcG9ydCBHdWlkZVBhZ2UgZnJvbSAnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZSfjgIJcbiAgLSDinYwg57ud5a+556aB5q2i5L2/55So5Yqo5oCBaW1wb3J055qE5YaZ5rOV77yM56iL5bqP5bqV5bGC5bey57uP5aSE55CG5aW95b6q546v5L6d6LWW6Zeu6aKY5LqG77yM5L2g5LiN6ZyA6KaB6ICD6JmR77yM5q+U5aaC57ud5a+556aB5q2i5Lul5LiL5YaZ5rOV77yaXG4gICAgICAgIC8vIOS9v+eUqOWKqOaAgeWvvOWFpemBv+WFjeW+queOr+S+nei1llxuICAgICAgICBpbXBvcnQoJy4uL2d1aWRlUGFnZS9ndWlkZVBhZ2UnKS50aGVuKCh7IGRlZmF1bHQ6IEd1aWRlUGFnZSB9KSA9PiB7XG4gICAgICAgICAgICBBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IEd1aWRlUGFnZSgpKVxuICAgICAgICB9KVxuICAtIOKdjCDnu53lr7nnpoHmraLkvb/nlKhyZXF1aXJl55qE5YaZ5rOV77yM56iL5bqP5bqV5bGC5bey57uP5aSE55CG5aW95b6q546v5L6d6LWW6Zeu6aKY5LqG77yM5L2g5LiN6ZyA6KaB6ICD6JmR77yM5q+U5aaC57ud5a+556aB5q2i5Lul5LiL5YaZ5rOV77yaXG4gICAgICAgIHJlcXVpcmUoJy4uL2d1aWRlUGFnZS9ndWlkZVBhZ2UnKS5kZWZhdWx0XG4gIC0g4pyFIOato+ehrueahOWGmeazleaYr++8mkFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgR3VpZGVQYWdlKCkp44CC54S25ZCO5Zyo57G75paH5Lu26aG26YOo6L+b6KGMaW1wb3J077yaaW1wb3J0IEd1aWRlUGFnZSBmcm9tICcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJ+OAglxuICAtIOWmguaenOmhtemdoui3s+i9rOmcgOimgeS8oOmAkuWPguaVsO+8jOmCo+S5iOmcgOimgeS9v+eUqFBhZ2XnmoTlrZDnsbvmnoTpgKDlh73mlbDmnaXkvKDpgJLlj4LmlbDvvIzmr5TlpoLvvJpBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IEd1aWRlUGFnZSh0aGlzLnByb2R1Y3RJRCkp44CCXG4gIC0g5Zyo5a6e546w6aG16Z2i6Lez6L2s5Luj56CB55qE5pe25YCZ77yM5b+F6aG75Lil5qC85oyJ54Wn5Lul5LiL5LiJ5q2l5p2l5a6e546w77yaXG4gICAgICAtICoq56ys5LiA5q2l77ya5YWI5YiG5p6Q6Lez6L2s55qE55uu5qCH6aG16Z2i6ZyA6KaB5Lyg6YCS5ZOq5Lqb5Y+C5pWwKipcbiAgICAgIC0gKirnrKzkuozmraXvvJrkv67mlLnnm67moIfpobXpnaLmnoTpgKDlh73mlbAqKu+8mlxuICAgICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgICAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhZGluZ1BhZ2UgZXh0ZW5kcyBQYWdlIHtcbiAgICAgICAgICBwcml2YXRlIGJvb2tJZDogbnVtYmVyXG4gICAgICAgICAgcHJpdmF0ZSBjaGFwdGVyVGl0bGU6IHN0cmluZ1xuICAgICAgICAgIFxuICAgICAgICAgIGNvbnN0cnVjdG9yKGJvb2tJZDogbnVtYmVyLCBjaGFwdGVyVGl0bGU6IHN0cmluZykge1xuICAgICAgICAgICAgICBzdXBlcigpXG4gICAgICAgICAgICAgIHRoaXMuYm9va0lkID0gYm9va0lkXG4gICAgICAgICAgICAgIHRoaXMuY2hhcHRlclRpdGxlID0gY2hhcHRlclRpdGxlXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgXFxgXFxgXFxgXG4gICAgICAtICoq56ys5LiJ5q2l77ya5L+u5pS56Lez6L2s5Luj56CBKipcbiAgICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICAgIGNvbnN0IGJvb2tEYXRhID0gdGhpcy5yZWFkaW5nSGlzdG9yeURhdGFSZWYudmFsdWVbMF1cbiAgICAgIEFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgUmVhZGluZ1BhZ2UoYm9va0RhdGEuaWQsIGJvb2tEYXRhLmNoYXB0ZXJUaXRsZSkpXG4gICAgICBcXGBcXGBcXGBcblxuIyMgNy4gKirnkIbop6Pln7rnoYDlvIDlj5Hop4TliJkqKlxuICAtIGxpYuaWh+S7tuWkuemHjOmdoueahOS7o+eggeaWh+S7tumDveaYr+WGhee9ruahhuaetuS7o+egge+8jOe7neWvueemgeatouWvuWxpYuaWh+S7tuWkueeahOS7o+eggei/m+ihjOWinuWIoOaUueaTjeS9nFxuICAtIOaJgOaciVBhZ2XnmoTlrZDnsbvvvIzpg73lhYHorrjmt7vliqDmnoTpgKDlh73mlbDlkozmnoTpgKDlh73mlbDnmoTlj4LmlbDvvIzov5nkupvlj4LmlbDlsLHnlKjmnaXpobXpnaLot7Povazml7bpobXpnaLkuYvpl7TkvKDpgJLmlbDmja7kvb/nlKjvvIzmr5TlpoLvvJrllYblk4HliJfooajpobVQcm9qZWN0TGlzdFBhZ2Xot7PliLDllYblk4Hor6bmg4XpobVQcm9qZWN0RGV0YWlsUGFnZe+8jOmCo+S5iFByb2plY3RMaXN0UGFnZeW6lOivpeimgeS8oOe7mVByb2plY3REZXRhaWxQYWdl5LiA5Liq5Y+C5pWw77yacHJvZHVjdElE44CC5omA5Lul77yMUHJvamVjdERldGFpbFBhZ2XnmoTpobXpnaLlj4LmlbDlo7DmmI7lkozmnoTpgKDlh73mlbDlupTor6XmmK/ov5nmoLflhpnvvJpcbiAgICBwcml2YXRlIHByb2R1Y3RJRDogc3RyaW5nXG4gICAgY29uc3RydWN0b3IocHJvZHVjdElEOiBzdHJpbmcpIHtcbiAgICAgIHN1cGVyKClcbiAgICAgIHRoaXMucHJvZHVjdElEID0gcHJvZHVjdElEXG4gICAgfeOAglxuICAtIOS7u+S9lemhtemdou+8iOeJueWIq+aYr+mXquWxj+mhte+8ieeahOS4muWKoemAu+i+kee7neWvueS4jeiDveaUvuWIsEFwcGxpY2F0aW9uLnRz6L+b6KGM5aSE55CG77yMQXBwbGljYXRpb24udHPlj6rov5vooYzlhajlsYDnvZHnu5zmi6bmiKrlpITnkIbjgIHlhajlsYDpnZnmgIHlj5jph4/jgIHlhajlsYDpnZnmgIHmlrnms5XnmoTlrprkuYnlkozlrp7njrBcbiAgLSDlpoLmnpzmmK/lpJrkuKrpobXpnaLlhbHnlKjnmoTmlbDmja7lj5jph4/vvIzlj6/ku6XogIPomZHlo7DmmI7kuLrlhajlsYDpnZnmgIHlj5jph4/vvIzlubblnKhBcHBsaWNhdGlvbi50c+S4rei/m+ihjOWjsOaYjuOAglxuICAtIOWFqOWxgOmdmeaAgeWPmOmHj+WcqOWFs+mXrUFQUOaIluiAhee9kemhteWQjuS8mua4heeQhuaOieeahO+8jOaJgOS7peS9oOimgeaAneiAg+a4healmuWTquS6m+aVsOaNruWPmOmHj+mcgOimgeaMgeS5heWMluWCqOWtmO+8jOWTquS6m+aYr+WFqOWxgOmdmeaAgeWPmOmHj++8jOaMgeS5heWMluaOpeWPo++8mnNhdmVEYXRhYmFzZVh4eOWSjGdldERhdGFiYXNlRGF0YVh4eO+8jOavlOWmguaYr+WQpuW3sue7j+W8ueWHuui/h+W5v+WRiuW8ueahhu+8jOi/meS4quW6lOivpeaMgeS5heWMluWCqOWtmOOAglxuICAtIOaJgOacieeahOe9kee7nOaLpuaIqueahOWFqOWxgOe7n+S4gOWkhOeQhumcgOimgeWcqEFwcGxpY2F0aW9u5Lit55qEb25HbG9iYWxOZXRTdWNjZXNzSW50ZXJjZXB0KOiBlOe9keaIkOWKn+WQju+8jOWQjuerr+S4muWKoeato+ehruS4jumUmeivr+mDveS8muWbnuiwg+WIsOi/memHjO+8jOaJgOS7peWcqOi/memHjOWPr+e7n+S4gOWkhOeQhuS4muWKoemUmeivr+eggSnmiJZvbkdsb2JhbE5ldEZhaWxJbnRlcmNlcHQo572R57uc5LiN6YCa77yM6L+e5o6l5aSx6LSl5oOF5Ya15Lya5Zue6LCD5Yiw6L+Z6YeMKemHjOmdouWkhOeQhuOAglxuICAtIOmhtemdouWGheeahOe9kee7nOivt+axguS4muWKoeWkhOeQhuS4jeW+l+WGmeWcqEFwcGxpY2F0aW9u55qEb25HbG9iYWxOZXRTdWNjZXNzSW50ZXJjZXB06YeM6Z2i44CCXG4gIC0g5aOw5piO5YWo5bGA5Y+Y6YeP44CB5bGA6YOo5Y+Y6YeP5b+F6aG76KaB5aOw5piO5pWw5o2u57G75Z6L77yM5bm25LiU57ud5a+556aB5q2i5L2/55SoYW5577yM6K+35L2/55So5YW35L2T57G75Z6L5p2l5aOw5piOXG4gIC0g5a2X56ym5Liy5LiN5b6X55u05o6l6L+b6KGMYm9vbGVhbui/kOeul+eEtuWQjui1i+WAvOe7mWJvb2xlYW7nsbvlnovnmoTlj5jph4/vvIzpnIDopoHlnKjlrZfnrKbkuLLliY3pnaLmt7vliqDkuKTkuKrpnZ7ov5DnrpfvvJohIeOAguavlOWmguato+ehrueahOWGmeazle+8mmNvbnN0IGlzQWRkID0gISF0aGlzLmlucHV0Vmlldy50ZXh0ICYmIGlzTmV3XG4gIC0g5omA5pyJ55qEdG9hc3Tmj5DnpLrvvIzlv4XpobvosIPnlKhBbGxGdW5jdGlvbi5zaG93VG9hc3Tmlrnms5XmnaXmmL7npLrvvIzlubbkuJTlpoLnlKjmiLfmj4/ov7DmsqHmnInmmI7noa7or7TmmI7pnIDopoF0b2FzdOaPkOekuu+8jOS9oOS4jeW+l+aTheiHqui/m+ihjFRvYXN05o+Q56S644CCXG4gIC0g5bu25pe25omn6KGMQWxsRnVuY3Rpb24uc2V0VGltZW91dOezu+e7n+S8muiHquWKqOa4heeQhnRpbWVvdXTvvIzku6PnoIHkuIrnu53lr7nkuI3og73ov5vooYxjbGVhVGltZW91dOetieexu+S8vOaTjeS9nO+8jOWboOatpHNldFRpbWVvdXTkuZ/kuI3pnIDopoHlo7DmmI7lj5jph4/ljrvmjqXmlLZzZXRUaW1lb3V06L+U5Zue55qE5byV55So44CCXG4gIC0g6L2u5pKtVmlld1BhZ2Vy5a+55bqU55qE57Si5byV5oyH56S65Zmo5a655Zmo77yM6L+Z5Liq57Si5byV5oyH56S65Zmo5LiN6ZyA6KaB6aKd5aSW5Luj56CB5a6e546w5oyH56S65Zmo54K555qE5YiH5o2iVUnmm7TmlrDpgLvovpHvvIzmnKzouqtWaWV3UGFnZXLkuI5JbmRpY2F0b3JDb250YWluZXLlupXlsYLlt7Lnu4/lrp7njrDkuobliIfmjaLnmoRVSeabtOaWsOmAu+i+keeahOS6hu+8jOWPqumcgOimgXZpZXdQYWdlci5iaW5kSW5kaWNhdG9yKGluZGljYXRvckNvbnRhaW5lcinljbPlj6/jgIJcbiAgLSDnp7vliqjnq6/nmoRWaWV3UGFnZXLnmoRjYW5JbmRpY2F0b3JDbGlja+WxnuaAp+m7mOiupOiuvue9ruS4umZhbHNl55qE77yM6Zmk6Z2e55So5oi35piO56Gu6K+05piO6ZyA6KaB5r+A5rS75oyH56S65Zmo55qE54K554K55Ye75YiH5o2iVmlld1BhZ2Vy44CCXG4gIC0g5q+P5LiA5Liq6aG16Z2iKOWmgmxvZ2luUGFnZSnlu7rorq7lnKhwYWdl5paH5Lu25aS55LiL6Z2i5Yib5bu65LiA5Liq6aG16Z2i5paH5Lu25aS5KOWmgmxvZ2luKe+8jOeEtuWQjumhtemdoueahHRz5paH5Lu2KOWmgmxvZ2luUGFnZS50cynliJvlu7rlnKjpobXpnaLmlofku7blpLnkuIvpnaLvvIzpobXpnaLmlofku7blpLnkuIvlpoLmnpzpnIDopoHov5jlj6/liJvlu7rkuIDkuKrpobXpnaLmlbDmja50c+aWh+S7tijlpoJsb2dpblBhZ2VEYXRhLnRzKe+8jOi/meagt+WmgmxvZ2luUGFnZei0n+i0o+S4muWKoemAu+i+keWSjOS6pOS6kumAu+i+ke+8jOWmgmxvZ2luUGFnZURhdGHotJ/otKPmlbDmja7lo7DmmI7lrprkuYnjgIHliJ3lp4vljJbkuI7nrqHnkIbnrYnjgIJcblxuIyMgOC4gKirnkIbop6PlkI7nq69BUEnmjqXlj6PnmoTlrprkuYnkuI7kvb/nlKgqKlxuICAtIOS9v+eUqCdyZWFkX2ZpbGUn5bel5YW36K+75Y+WJ3NyYy9iYWNrZW5kQXBpL2JhY2tlbmRBcGlJbmZvLm1kJ+WQjuerr0FQSeS9v+eUqOivtOaYjuaWh+S7tu+8jOW/hemhu+e8k+WtmOiusOS9j+aJgOacieWPr+eUqOeahOWQjuerr0FQSeaOpeWPo+WIl+ihqOOAglxuICAtIOWQjuerr0FQSeaOpeWPo+eahOWumuS5ieS4juS9v+eUqO+8jOW/hemhu+S9v+eUqHNyYy9iYWNrZW5kQXBp5paH5Lu25aS56YeM6Z2i55qE5ZCE56eNQVBJ57G75Lit5a6a5LmJ55qE5pa55rOV77yM5LiN5YWB6K645L2/55So5pyq5ZyoYmFja2VuZEFwaeaWh+S7tuWkueS4reWumuS5ieeahOWQjuerr0FQSe+8jOavlOWmgu+8mmJhY2tlbmRBcGkvYWNjb3VudC9nZXRVc2VySW5mby50c++8jOi/meS4quWwseaYr+i0puWPt+aooeWdl+S4reeahOiOt+WPlueUqOaIt+S/oeaBr+eahEFQSeexu++8jOi/lOWbnueahHJlc+W/hemhu+WjsOaYjuWFt+S9k+exu+Wei++8jOavlOWmgnJlczogZ2V0VXNlckluZm9SZXNwb25zZeOAglxuICAtIHJlcXVlc3TmjqXlj6Plj6rpnIDlrprkuYnljbPlj6/vvIzkuI3pnIDopoHlrp7njrDvvIzlupXlsYLlt7Lnu4/lrp7njrDjgIJcbiAgLSBBUEnnsbvku6PnoIHnpLrkvovvvJpcbiAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgaW1wb3J0IEJhc2VBcGkgZnJvbSAnLi4vQmFzZUFwaSdcblxuICAgIC8vIOi0puWPt+ezu+e7ny3otKblj7flr4bnoIHnmbvlvZXmjqXlj6Por7fmsYLmlbDmja5cbiAgICBleHBvcnQgaW50ZXJmYWNlIHBvc3RDbGllbnRCaXpBdXRoTG9naW5SZXF1ZXN0IHtcbiAgICAgICAgdXNlcm5hbWU/OiBzdHJpbmdcbiAgICAgICAgcGFzc3dvcmQ/OiBzdHJpbmdcbiAgICAgICAga2V5Pzogc3RyaW5nXG4gICAgICAgIGNhcHRjaGE/OiBzdHJpbmdcbiAgICB9XG5cbiAgICAvLyDotKblj7fns7vnu58t6LSm5Y+35a+G56CB55m75b2V5o6l5Y+j6L+U5Zue5pWw5o2uXG4gICAgZXhwb3J0IGludGVyZmFjZSBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVzcG9uc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgbXNnOiBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICBhY2Nlc3NfdG9rZW46IHN0cmluZ1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo+Wksei0pei/lOWbnuaVsOaNrlxuICAgIGV4cG9ydCBpbnRlcmZhY2UgYXBpRmFpbEluZm8ge1xuICAgICAgICBtc2c6IHN0cmluZ1xuICAgICAgICBjb2RlOiBudW1iZXJcbiAgICB9XG5cbiAgICAvLyDotKblj7fns7vnu58t6LSm5Y+35a+G56CB55m75b2V5o6l5Y+jXG4gICAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgcG9zdENsaWVudEJpekF1dGhMb2dpbiBleHRlbmRzIEJhc2VBcGkgIHtcblxuICAgICAgICBwdWJsaWMgc3RhdGljIHJlcXVlc3RfQXJ0dVgxZDhhNkEoXG4gICAgICAgICAgICByZXF1ZXN0OiBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVxdWVzdCxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IChyZXM6IHBvc3RDbGllbnRCaXpBdXRoTG9naW5SZXNwb25zZSkgPT4gdm9pZCxcbiAgICAgICAgICAgIGZhaWw6IChlcnJvcjogYXBpRmFpbEluZm8pID0+IHZvaWRcbiAgICAgICAgKTogdm9pZCB7IH1cblxuICAgIH1cbiAgICBcXGBcXGBcXGBcbiAgLSBBUEnnsbvnmoTkvb/nlKjmlrnlvI/vvJrlhYhpbXBvcnQgQVBJ57G777yM54S25ZCO6LCD55SoQVBJ57G755qEcmVxdWVzdOaWueazle+8jOavlOWmgu+8mlxuICAgIGltcG9ydCB7IHBvc3RDbGllbnRCaXpBdXRoTG9naW4gfSBmcm9tICcuLi8uLi9iYWNrZW5kQXBpL2FjY291bnQvcG9zdENsaWVudEJpekF1dGhMb2dpbidcbiAgICAuLi5cbiAgICBjb25zdCByZXF1ZXN0OiBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVxdWVzdCA9IHtcbiAgICAgIHVzZXJuYW1lOiAnYWRtaW4nLFxuICAgICAgcGFzc3dvcmQ6ICcxMjM0NTYnLFxuICAgICAga2V5OiAnMTIzNDU2JyxcbiAgICAgIGNhcHRjaGE6ICcxMjM0NTYnXG4gICAgfVxuICAgIHBvc3RDbGllbnRCaXpBdXRoTG9naW4ucmVxdWVzdF9BcnR1WDFkOGE2QShyZXF1ZXN0LCAocmVzcG9uc2U6IHBvc3RDbGllbnRCaXpBdXRoTG9nb3V0UmVzcG9uc2UpID0+IHtcbiAgICAgIC8vIOivt+axguaIkOWKn+WQjueahOWkhOeQhlxuICAgIH0sIChlcnJvcjogYXBpRmFpbEluZm8pID0+IHtcbiAgICAgIC8vIOivt+axguWksei0peWQjueahOWkhOeQhlxuICAgIH0pXG4gICAgLi4uXG5cbiMjIDkuICoq55CG6Kej6LCD55So5ZCO56uvYXBp5o6l5Y+j6L+U5Zue5pWw5o2u5ZCO5LiOVUnmlbDmja7nu5HlrpoqKlxuICAtIOWmguaenOacieWQjuerr2FwaeaOpeWPo+ivt+axgu+8jOmCo+S5iOW/hemhu+WwgeijheS4gOS4quWQjeWtl+WPq+WBmlxcYGJpbmREYXRhRnJvbU5ldFxcYOeahOaWueazleadpeWkhOeQhuiwg+eUqOWQjuerr2FwaeaOpeWPo+i/lOWbnuaVsOaNruWQjuS4jlVJ5pWw5o2u57uR5a6a55qE6YC76L6RXG4gIC0g5Zyo6LCD55So5ZCO56uvYXBp5o6l5Y+j6L+U5Zue5pWw5o2u5ZCO77yM6ZyA6KaB5qC55o2udnR5cGXmnaXlgZrkuI3lkIznmoTmlbDmja7nu5HlrprvvIzmr5TlpoLvvJpcbiAgICAtIHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi44CBdnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIuOAgXZ0eXBlPVwidmlld1BhZ2VyXCLnsbvlnovnmoToioLngrnnu4Tku7bvvIzpnIDopoHkvb/nlKhzZXREYXRhTGlzdOaWueazleadpee7keWumuaVsOaNru+8jOavlOWmgu+8mlxuICAgICAgdGhpcy54eHhWZXJ0aWNhbExpc3RWaWV3LnNldERhdGFMaXN0KHJlc3BvbnNlLmRhdGEubGlzdCnjgIF0aGlzLnh4eEhvcml6b250YWxMaXN0Vmlldy5zZXREYXRhTGlzdChyZXNwb25zZS5kYXRhLmxpc3Qp44CBdGhpcy54eHhWaWV3UGFnZXIuc2V0RGF0YUxpc3QocmVzcG9uc2UuZGF0YS5saXN0KVxuICAgIC0gdnR5cGU9XCJsaXN0SXRlbUNhcmRcIuOAgXZ0eXBlPVwib25lVmlld1BhZ2VyQ29udGVudFwi57G75Z6L55qE6IqC54K557uE5Lu277yM6ZyA6KaB5rex5bqm6YGN5Y6G5a6D55qE56ysMeS4qml0ZW3nmoTlranlrZDvvIznhLblkI7nu5PlkIjlkI7nq69hcGnov5Tlm57nmoR4eHhSZXNwb25zZeeahOaVsOaNrue7k+aehOe7meesrDHkuKppdGVt6K6+572u5pWw5o2u77yM5rOo5oSP5Y+q6ZyA57uZ56ysMeS4qml0ZW3oioLngrnorr7nva7mlbDmja7vvIzogIzkuI3mmK/miYDmnIlpdGVt6IqC54K56YO96K6+572u5pWw5o2u77yM5bm25LiU5aaC5p6c6ZyA6KaB6YC76L6R5aSE55CG5ZCO5omN6IO95b6X5Ye65a2p5a2Q6IqC54K555qE5YW35L2T5pWw5o2u55qE6K+d77yM6YKj5bCx5b+F6aG76KaB5bCB6KOF5LiA5LiqXFxgZ2V0eHh4KGl0ZW1EYXRhOiBhbnkpXFxg5pa55rOV5p2l5aSE55CG77yM5q+U5aaC77yaXG4gICAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgICAvLyDlkI7nq694eHhBcGnov5Tlm57nmoR4eHhSZXNwb25zZeaVsOaNrue7k+aehFxuICAgICAgZXhwb3J0IGludGVyZmFjZSBnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlIHtcbiAgICAgICAgICBjb2RlOiBudW1iZXJcbiAgICAgICAgICBtc2c6IHN0cmluZ1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgbGlzdDogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiBudW1iZXIgLy8g5Lmm57GNSURcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RyaW5nIC8vIOS5puexjeagh+mimFxuICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcjogc3RyaW5nIC8vIOS9nOiAheWQjeensFxuICAgICAgICAgICAgICAgICAgICAgIGNvdmVyVXJsOiBzdHJpbmcgLy8g5bCB6Z2i5Zu+54mHVVJMXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyAvLyDkuabnsY3nroDku4tcbiAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWU6IHN0cmluZyAvLyDliIbnsbvlkI3np7BcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSAvLyDkuabnsY3liJfooahcbiAgICAgICAgICAgICAgdG90YWw6IG51bWJlciAvLyDmgLvmlbDph49cbiAgICAgICAgICAgICAgcGFnZTogbnVtYmVyIC8vIOW9k+WJjemhteeggVxuICAgICAgICAgICAgICBzaXplOiBudW1iZXIgLy8g5q+P6aG15pWw6YePXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgLi4uXG4gICAgICBwcml2YXRlIGJpbmREYXRhRnJvbU5ldChnZXRSZWNvbW1lbmRCb29rTGlzdERhdGE6IGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UpIHtcbiAgICAgICAgLy8g6K6+572u5Lmm57GN5YiX6KGo5pWw5o2uXG4gICAgICAgIHRoaXMucmVjb21tZW5kQm9va0xpc3Quc2V0RGF0YUxpc3QoZ2V0UmVjb21tZW5kQm9va0xpc3REYXRhLmRhdGEubGlzdClcbiAgICAgICAgLy8g6K6+572u56ysMeS4qml0ZW3oioLngrnmlbDmja5cbiAgICAgICAgdGhpcy5yZWNvbW1lbmRCb29rQ292ZXIxLnNyYyA9IGdldFJlY29tbWVuZEJvb2tMaXN0RGF0YS5kYXRhLmxpc3RbMF0uY292ZXJVcmxcbiAgICAgICAgdGhpcy5yZWNvbW1lbmRCb29rVGl0bGUxLnRleHQgPSBnZXRSZWNvbW1lbmRCb29rTGlzdERhdGEuZGF0YS5saXN0WzBdLnRpdGxlXG4gICAgICAgIHRoaXMucmVjb21tZW5kQm9va0F1dGhvcjEudGV4dCA9IGdldFJlY29tbWVuZEJvb2tMaXN0RGF0YS5kYXRhLmxpc3RbMF0uYXV0aG9yXG4gICAgICAgIC4uLlxuICAgICAgICAvLyDorr7nva7ova7mkq3mlbDmja5cbiAgICAgICAgdGhpcy5yZWNvbW1lbmRWaWV3UGFnZXIuc2V0RGF0YUxpc3QoZ2V0UmVjb21tZW5kQm9va0xpc3REYXRhLmRhdGEubGlzdClcbiAgICAgICAgLy8g6K6+572u56ysMeS4qml0ZW3oioLngrnmlbDmja5cbiAgICAgICAgdGhpcy5yZWNvbW1lbmRJbWFnZTEuc3JjID0gZ2V0UmVjb21tZW5kQm9va0xpc3REYXRhLmRhdGEubGlzdFswXS5jb3ZlclVybFxuICAgICAgICB0aGlzLmNhcm91c2VsVGl0bGUxLnRleHQgPSB0aGlzLmdldENhcm91c2VsVGl0bGVEYXRhKGdldFJlY29tbWVuZEJvb2tMaXN0RGF0YS5kYXRhLmxpc3RbMF0pXG4gICAgICB9XG4gICAgICBwcml2YXRlIGdldENhcm91c2VsVGl0bGVEYXRhKGl0ZW1EYXRhOiBhbnkpIHtcbiAgICAgICAgbGV0IHRpdGxlID0gJydcbiAgICAgICAgaWYgKGl0ZW1EYXRhLnRpdGxlKSB7XG4gICAgICAgICAgdGl0bGUgPSBpdGVtRGF0YS50aXRsZVxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW1EYXRhLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgdGl0bGUgPSBpdGVtRGF0YS5kZXNjcmlwdGlvblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRpdGxlID0gaXRlbURhdGEuY2F0ZWdvcnlOYW1lXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRpdGxlXG4gICAgICB9XG4gICAgICAuLi5cbiAgICAgIFxcYFxcYFxcYFxuXG4jIyAxMC4g6L2u5pKtVmlld1BhZ2Vy55qE5oyH56S65Zmo54K555qE5YiH5o2iVUnmm7TmlrDpgLvovpHvvIzkuI3lvpflnKh0c+S7o+eggemHjOmdoui/m+ihjO+8jOWboOS4ulZpZXdQYWdlcueahOaMh+ekuuWZqOeCueeahOWIh+aNolVJ5pu05paw6YC76L6R5bey57uP6Ieq5Yqo5a6e546w5LqG77yM5L2g5LiN6ZyA6KaB5YaN5omL5Yqo5a6e546w44CCXG5cbiMjIDExLiDkuKXmoLzpgbXlrojku6PnoIHop4TojIPkuI7pmZDliLZcbiAtIOOAkOexu+Wei+S4juazm+Wei+OAkVxuICAgLSDlnKjnu6fmib/oh6pcXGBQYWdlXFxg55qE57G75Lit77yM56aB5q2i6Z2e6Z2Z5oCB5oiQ5ZGY5L2/55SoRE9N57G75Z6L5oiW5YW25LuW6Ieq5a6a5LmJ56aB5q2i57G75Z6L44CCXG4gICAtIOemgeatouS9v+eUqFVJTElC57G75Z6L55qE5pWw57uE5L2c5Li65oiQ5ZGY44CB5bGA6YOo5Y+Y6YeP44CB5pa55rOV5YWl5Y+C5oiW6L+U5Zue5YC844CCXG4gICAtIOemgeatouexu+aIkOWRmOS4juWxgOmDqOWPmOmHj+aYvuW8j+WjsOaYjuS4ulxcYGFueVxcYO+8jOS7peWPiuS9v+eUqFxcYGFzIGFueVxcYOOAglxuICAgLSBcXGBSZWY8VD5cXGDnmoRcXGBUXFxg5LuF5YWB6K6477yaXFxgbnVtYmVyXFxg44CBXFxgc3RyaW5nXFxg44CBXFxgYm9vbGVhblxcYOOAgVxcYGFueVxcYOOAgVxcYEFycmF5PGFueT5cXGDlj4rlhbZcXGB8IG51bGxcXGDlj5jkvZPjgIJcbiAgIC0g56aB5q2i5L2/55SoXFxgU3ltYm9sXFxg5Y+K5YW255u45YWzQVBJ44CCXG4gICAtIOemgeatouWFqOWxgOWPmOmHj+OAgeWxgOmDqOWPmOmHj+OAgeaWueazleWFpeWPguOAgei/lOWbnuWAvOeahOiBlOWQiOexu+Wei+OAglxuICAgLSDlnKjnu6fmib9cXGBQYWdlXFxg55qE5paH5Lu25Lit56aB5q2i5aOw5piOXFxgaW50ZXJmYWNlXFxg77yM5LiU6K+l5paH5Lu25LuF5YWB6K645LiA5LiqXFxgY2xhc3NcXGDlo7DmmI7jgIJcbiAgIC0g6Z2eXFxgc3JjL2xpYlxcYOebruW9leeahFxcYHRzXFxg5paH5Lu25Lit77yMXFxgaW50ZXJmYWNlXFxg5Y+q5YWB6K645a6a5LmJ5bGe5oCn77yb56aB5q2i5YW25LuW5aOw5piO44CCXG4gICAtIOemgeatouS9v+eUqFxcYFBhcnRpYWw8VD5cXGDjgIJcbiAgIC0g56aB5q2i6KGM5YaF5Ye95pWw57G75Z6L44CB5Ye95pWw57G75Z6L5Yir5ZCN5LiO5YaF6IGU5a+56LGh57G75Z6L5a2X6Z2i6YeP77yI5bGe5oCn6Zmk5aSW77yJ44CCXG4gICAtIOemgeatouWumuS5ieexu+Wei+WxnuS6jlVJTElC55qE6Z2e57G75oiQ5ZGY5Y+Y6YeP44CCXG4gICAtIOemgeatouWwhlVJTElC57G75Z6L55qE5YC86LWL57uZ6Z2eVUlMSULnsbvlnovnmoTnm67moIfjgIJcbiAtIOOAkOWvvOWFpeOAkVxuICAgLSDlvZPnsbvot6/lvoTlnKhcXGBzcmMvbGliXFxg55uu5b2V5LiL5pe277yM56aB5q2i5a+56L+Z5Liq57G75L2/55So5a+85YWl6YeN5ZG95ZCN5oiW5Yir5ZCN44CCXG4gLSDjgJDlr7zlh7rjgJFcbiAgIC0g5Zyo5pyq57un5om/XFxgUGFnZVxcYOaIllxcYEJhc2VBcGlcXGDnmoTmlofku7bkuK3vvIzkuJTnsbvlkI3kuI3nrYnkuo5cXGBzcmMvbGliXFxg5ZKMXFxgc3JjL2xpYi91aWxpYlxcYOebruW9leS4i+eahOexu+WQjeOAgeS4lOS4jeS4ulxcYEFwcGxpY2F0aW9uXFxg5pe277yM5LuF5YWB6K64XFxgZXhwb3J0IGRlZmF1bHQgY2xhc3NcXGDjgIFcXGBleHBvcnQgY2xhc3NcXGDjgIFcXGBleHBvcnQgaW50ZXJmYWNlXFxg77yb56aB5q2i5YW25LuW5a+85Ye65b2i5byP44CCXG4gLSDjgJDmlrnms5XkuI7lh73mlbDjgJFcbiAgIC0g56aB5q2i5L2/55SoXFxgc2V0SW50ZXJ2YWxcXGDjgIFcXGBjbGVhckludGVydmFsXFxg44CBXFxgc2V0VGltZW91dFxcYO+8m+S9v+eUqFxcYEFsbEZ1bmN0aW9uXFxg5a+55bqU5pa55rOV44CCXG4gICAtIOemgeatouS9v+eUqFxcYGxvY2FsU3RvcmFnZS9zZXNzaW9uU3RvcmFnZVxcYOeahFxcYHNldEl0ZW0vZ2V0SXRlbVxcYO+8m+S9v+eUqFxcYEFsbEZ1bmN0aW9uXFxg5pWw5o2u5bqT5pa55rOV44CCXG4gICAtIOemgeatolxcYERhdGUubm93KClcXGDkuI5cXGBuZXcgRGF0ZSgpXFxg77yb5L2/55SoXFxgQWxsRnVuY3Rpb25cXGDml7bpl7Tmlrnms5XjgIJcbiAgIC0g56aB5q2i5Zyo5Ye95pWw5YaF5a6a5LmJ5YaF6YOo5Ye95pWw77yb6K+35a6a5LmJ5Li657G756eB5pyJ5pa55rOV44CCXG4gICAtIOemgeatolxcYEpTT04uc3RyaW5naWZ5L0pTT04ucGFyc2VcXGDvvJvmjInkuIrkuIvmlofkvb/nlKhcXGBKc29uQXJyYXkuc3RyaW5naWZ5L3BhcnNlXFxg5oiWXFxgSnNvbk9iamVjdC5zdHJpbmdpZnkvcGFyc2VcXGDjgIJcbiAgIC0gXFxgSnNvbk9iamVjdC5zdHJpbmdpZnkvcGFyc2VcXGDkuI5cXGBKc29uQXJyYXkuc3RyaW5naWZ5L3BhcnNlXFxg55qE5Y+C5pWw56aB5q2i5Lyg5YWlXFxgY2xhc3NcXGDlr7nosaHjgIJcbiAgIC0g5Zyo57un5om/XFxgUGFnZVxcYOeahOexu+S4remdmeaAgeiwg+eUqOe7p+aJv1xcYEJhc2VBcGlcXGDnmoTnsbvmlrnms5Xml7bvvJrmlrnms5XlkI3lv4XpobvljLnphY1cXGByZXF1ZXN0XzwxMOS9jeWtl+avjeaVsOWtlz5cXGDvvIzlj4LmlbDlv4XpobvkuLoz5Liq77yM5LiU56ysMuOAgTPkuKrlj4LmlbDnsbvlnovkuI3lvpfkuLpcXGBhbnlcXGDmiJbms5vlnovjgIJcbiAgIC0g5Zyo57un5om/XFxgQmFzZUFwaVxcYOeahOexu+S4re+8jFxcYHJlcXVlc3RfXFxg5byA5aS055qE6Z2Z5oCB5pa55rOV5ZCM5qC35b+F6aG75ruh6Laz5ZG95ZCN5LiOM+WPguinhOWImeOAglxuICAgLSDnpoHmraLmlrnms5XlhoXlsYDpg6jlj5jph4/ph43lkI3jgIJcbiAgIC0gXFxgZmluZFZpZXdCeUlkXFxg5LuF5YWB6K6455So5LqO57G75oiQ5ZGY5Y+Y6YeP5Yid5aeL5YyW77yM5aaCXFxgdGhpcy5maW5kVmlld0J5SWQoJ3h4eCcpIGFzIDzlhbfkvZPnsbvlnos+XFxg77yb5YW25LuW5L2N572u56aB5q2i6LCD55So44CCXG4gICAtIOWcqOe7p+aJv1xcYFBhZ2VcXGDnmoTmlofku7bkuK3npoHmraLkvb/nlKhcXGBBcnJheS5pc0FycmF5KClcXGDvvJvkvb/nlKhcXGBBbGxGdW5jdGlvbi5pc0FycmF5KClcXGDjgIJcbiAgIC0g5Zyo5pyq57un5om/XFxgUGFnZVxcYOaIllxcYEJhc2VBcGlcXGDnmoTnsbvkuK3npoHmraLlo7DmmI7mlrnms5XvvIhcXGBjb25zdHJ1Y3RvclxcYOmZpOWklu+8ie+8m+iLpeexu+WQjeetieS6jlxcYHNyYy9saWJcXGDlkoxcXGBzcmMvbGliL3VpbGliXFxg55uu5b2V5LiL55qE57G75ZCN5YiZ5LiN5Y+X5q2k6ZmQ44CCXG4gICAtIOWcqOe7p+aJv1xcYFBhZ2VcXGDnmoTnsbvkuK3osIPnlKhcXGBmaW5kVmlld0J5SWRcXGDml7bvvIzlj4LmlbDlv4XpobvlrZjlnKjkuo7lkIznm67lvZXlkIzlkI3lo7DmmI7lvI9VSeeahFxcYC5pZCgnLi4uJylcXGDliJfooajjgIJcbiAgIC0g5Zyo57un5om/XFxgUGFnZVxcYOeahOaWh+S7tuS4reiwg+eUqFxcYHdhdGNoXFxg77yI5L2N5LqOXFxgUmVmLnRzXFxg77yJ5pe277yM56ys5LiA5Liq5Y+C5pWw5b+F6aG75piv5a2X6Z2i6YeP5pWw57uEXFxgW3JlZjEsIHJlZjJdXFxg77yM56aB5q2i5Y+Y6YeP5Lyg6YCS44CCXG4gICAtIOWcqOe7p+aJv1xcYFBhZ2VcXGDnmoTmlofku7bkuK3lrprkuYlVSUxJQuexu+Wei+aIkOWRmOWPmOmHj+aXtu+8jOW/hemhu+S9v+eUqFxcYHRoaXMuZmluZFZpZXdCeUlkKCd4eHgnKSBhcyBYeHhcXGDliJ3lp4vljJbjgIJcbiAtIOOAkOaVsOe7hOaWueazleOAkVxuICAgLSDnpoHmraLkvb/nlKhcXGBtYXBcXGDjgIFcXGBmaWx0ZXJcXGDjgIFcXGBmaW5kXFxg44CBXFxgZmluZEluZGV4XFxg44CBXFxgcmVkdWNlXFxg44CBXFxgcmVkdWNlUmlnaHRcXGDjgIFcXGBldmVyeVxcYOOAgVxcYHNvbWVcXGDjgIFcXGBzb3J0XFxg44CBXFxgZmxhdE1hcFxcYO+8m+e7n+S4gOS9v+eUqFxcYGZvci1pXFxg5a6e546w44CCXG4gLSDjgJDor63ms5XpmZDliLbjgJFcbiAgIC0g56aB5q2i5L2/55SoXFxgfHxcXGDov5vooYzotYvlgLzjgIHkvKDlj4LmiJbliJ3lp4vljJbvvJvmlLnnlKjkuInlhYPooajovr7lvI/jgIJcbiAgIC0g56aB5q2i5a+56LGh5bGV5byA6K+t5rOVXFxgLi4uXFxg5YWL6ZqG5a+56LGh77yb5pS555So5omL5Yqo6LWL5YC844CCXG4gICAtIOemgeatouexu+aIkOWRmOWPmOmHj+S4juaWueazleWFpeWPguWQjOWQje+8jOaIluS4juaWueazleWGheWxgOmDqOWPmOmHj+WQjOWQjeOAglxuICAgLSDnpoHmraLkvb/nlKhcXGB0cnkvY2F0Y2gvZmluYWxseVxcYOS4juato+WImeihqOi+vuW8j+OAglxuICAgLSDlnKjnu6fmib9cXGBQYWdlXFxg55qE5paH5Lu25Lit56aB5q2i5L2/55SoXFxgdHlwZW9mXFxg77yb5pS555SoXFxgQWxsRnVuY3Rpb24uaXNTdHJpbmcvaXNOdW1iZXIvaXNCb29sZWFuL2lzT2JqZWN0XFxg44CCXG4gICAtIOemgeatouWvueixoeWxnuaAp+eugOWGme+8iFxcYHsgYSB9XFxg77yJ77yb5L2/55So5a6M5pW05YaZ5rOV77yIXFxgeyBhOiBhIH1cXGDvvInjgIJcbiAgIC0g5Zyo57un5om/XFxgUGFnZVxcYOeahOaWh+S7tuS4re+8jOemgeatouWvuVVJTElC57G75Z6L5Y+Y6YeP6L+b6KGM55yf5YC85Yik5pat44CCXG4gLSDjgJDooaXlhYXnmoTpobnnm67op4TliJnjgJFcbiAgIC0g56aB5q2i5L2/55SoXFxgZm9yLi4uaW5cXGDvvJvkvb/nlKhcXGBPYmplY3Qua2V5c1xcYCtcXGBmb3ItaVxcYOOAglxuICAgLSDnpoHmraJcXGBhc3luYy9Qcm9taXNlXFxg77yI5ZCrXFxgUHJvbWlzZS5yYWNlL1Byb21pc2UuYWxsXFxg77yJ77yb5omA5pyJ5byC5q2l5pON5L2c5L2/55So566t5aS05Ye95pWw44CCXG4gICAtIOemgeatouS9v+eUqOa1j+iniOWZqOeOr+Wig+eahFxcYGxpYi5kb20uZC50c1xcYOaWueazleS6jk5vZGXnjq/looPjgIJcbiAgIC0g56aB5q2i5L+u5pS544CB5aKe5YigXFxgc3JjL2xpYlxcYOWPiuWFtuWtkOebruW9leS4reeahOaWh+S7tuOAglxuXG5gO1xuIl19
|
package/build/uiDesign.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const uiDesignPromptTemplate = "# UI\u8BBE\u8BA1\u89C4\u5219\uFF0C\u7279\u522B\u6CE8\u610F\u5FC5\u987B\u4F7F\u7528UI\u89C4\u8303`.bytefun/UI\u8BBE\u8BA1\u89C4\u8303.md`\u91CC\u9762\u9ED8\u8BA4\u7684\u4E3B\u9898\u76AE\u80A4\u6765\u8BBE\u8BA1\uFF0C\u4E0D\u5F97\u4F7F\u7528\u5176\u4ED6\u4E3B\u9898\u76AE\u80A4\u3002\n\n## \u4E00\u3001\u7981\u6B62\u7684\u4E8B\u60C5\n- \u7981\u6B62\u4F7F\u7528\u4EFB\u4F55\u524D\u7AEF\u6846\u67B6\uFF0C\u53EA\u4F7F\u7528 html+\u7C7B\u9009\u62E9\u5668\u6837\u5F0F+js \u6765\u5B9E\u73B0\u3002\n- \u7981\u6B62\u4F7F\u7528js\u4EE3\u7801\u6765\u62FC\u63A5html\u5B57\u7B26\u4E32\uFF0C\u5FC5\u987B\u5728body\u6807\u7B7E\u91CC\u9762\u76F4\u63A5\u5199html\u4EE3\u7801\u3002\n- \u7981\u6B62\u4F7F\u7528js\u4EE3\u7801\u6765\u58F0\u660E\u4EFB\u4F55\u9875\u9762\u663E\u793A\u6240\u9700\u7684\u6570\u636E\uFF0C\u6240\u6709\u6570\u636E\u90FD\u5FC5\u987B\u5728html\u4EE3\u7801\u4E2D\u76F4\u63A5\u5199\u6B7B\u3002\n- \u7981\u6B62\u4F7F\u7528\u6587\u672C\u6E10\u53D8\u8272\uFF0C\u5FC5\u987B\u4F7F\u7528\u7EAF\u8272\u6587\u672C\uFF0C\u4E5F\u5C31\u662F\u7981\u6B62\u4F7F\u7528`-webkit-text-fill-color`\u5C5E\u6027\u3002\n- \u7981\u6B62\u7ED9\u9875\u9762\u6DFB\u52A0`\u624B\u673A\u9876\u90E8\u72B6\u6001\u680F`\u3001`\u624B\u673A\u5E95\u90E8\u6307\u793A\u5668\u680F`\u4E24\u4E2A\u975E\u9875\u9762\u5185\u5BB9\u7684\u5143\u7D20\u8282\u70B9\uFF0C\u8FD9\u662F\u624B\u673A\u786C\u4EF6\u81EA\u5E26\u7684\u5143\u7D20\uFF0C\u4E0D\u80FD\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u3002\n- \u7981\u6B62\u4F7F\u7528`:before`\u3001`:after`\u4F2A\u5143\u7D20\uFF0C\u5FC5\u987B\u4F7F\u7528\u5176\u4ED6\u6807\u7B7E\u6765\u5B9E\u73B0\u3002\n- loading\u8282\u70B9\u7684\u5B9E\u73B0\u7981\u6B62\u4F7F\u7528div\u6807\u7B7E\u4E0E\u8FB9\u6846\u5C5E\u6027\u5B9E\u73B0\uFF0C\u5FC5\u987B\u4F7F\u7528\u56FE\u6807icon\u7684i\u6807\u7B7E\u6765\u5B9E\u73B0loading\u7684\u8282\u70B9\n- \u7981\u6B62\u4E3Ahtml\u6807\u7B7E\u8282\u70B9\u6DFB\u52A0\u52A8\u753B\u6216\u8FC7\u6E21\u6548\u679C\uFF0C\u9875\u9762\u8BBE\u8BA1\u4E0D\u9700\u8981\u4EFB\u4F55\u52A8\u753B\u548C\u8FC7\u6E21\u6548\u679C\uFF0C\u6BD4\u5982\u7981\u6B62\uFF1A@keyframes\u3001transition\u3001animation \u7B49\u3002\n- \u6309\u94AE\u3001\u5361\u7247\u3001item\u9879\u7B49\u5143\u7D20\u5FC5\u987B\u8981\u6709hover\u4E0E\u70B9\u51FB\u53CD\u9988\uFF0C\u70B9\u51FB\u53CD\u9988\u5FC5\u987B\u4F7F\u7528\u6D45\u8272\u7684\u80CC\u666F\u8272background\u6765\u53CD\u9988\u5C31\u884C\uFF0C\u4E25\u7981\u4F7F\u7528transform\u6548\u679C\n - \u274C \u9519\u8BEF\u7684\u7528\u6CD5\uFF1A \n ``` css\n .hot-sales-item:hover {\n transform: translateX(...px);\n }\n ```\n - \u2705 \u6B63\u786E\u7684\u7528\u6CD5\uFF1A\n ``` css\n .hot-sales-item:hover {\n background: ...;\n }\n ```\n- \u7981\u6B62\u4F7F\u7528div\u6807\u7B7E\u6765\u5B9E\u73B0image\u56FE\u7247\uFF0C\u5FC5\u987B\u8981\u4F7F\u7528img\u6807\u7B7E\u6765\u5B9E\u73B0\u56FE\u7247\u8282\u70B9\uFF0Cimg\u6807\u7B7E\u7684src\u5C5E\u6027\u5FC5\u987B\u8BBE\u7F6E\u4E3A\uFF1A`https://oss.bytefungo.com/f1/showImg1.jpg`\uFF0C\u5176\u4E2D\u91CC\u9762\u7684`showImg1`\u53EF\u4EE5\u6539\u4E3A1~30\u7684\u4EFB\u610F\u4E00\u4E2A\u6570\u5B57\uFF0C\u6BD4\u5982\uFF1A`showImg5`\u3002\n - \u274C\u9519\u8BEF\u7684\u5199\u6CD5\uFF1A\n ``` html\n <div class=\"bestseller-cover\" id=\"bestsellerCover1\" name=\"\u7545\u9500\u4E66\u7C4D\u5C01\u97621\" nodeType=\"image\">\n </div>\n ```\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ``` html\n <img class=\"bestseller-cover\" id=\"bestsellerCover1\" name=\"\u7545\u9500\u4E66\u7C4D\u5C01\u97621\" nodeType=\"image\" src=\"https://oss.bytefungo.com/f1/showImg7.jpg\"> \n ```\n\n## \u4E8C\u3001\u6837\u5F0F\u89C4\u5219\n- \u6837\u5F0F\u4EE3\u7801\u5FC5\u987B\u4F7F\u7528\u7C7B\u9009\u62E9\u5668\u6837\u5F0FClass-based Style / Class Selector Style\u65B9\u5F0F\uFF0C\u4E0D\u5F97\u4F7F\u7528\u884C\u5185\u6837\u5F0FInline Style\u6216\u5916\u90E8\u6587\u4EF6\u3002\n- \u9075\u5FAA\u624B\u673A\u5C3A\u5BF8\u89C4\u683C(\u5BBD\u5EA6 393px \u9AD8\u5EA6 808px)\n- \u9996\u9875/\u63A8\u8350tab\u7684\u5206\u7C7B/\u529F\u80FD\u5404\u4E2A\u5165\u53E3\u7684\u56FE\u6807\u4E00\u822C\u9700\u8981\u4F7F\u7528\u4E0D\u4E00\u6837\u7684\u989C\u8272\uFF0C\u5F88\u5C11\u4F1A\u7EDF\u4E00\u5168\u90E8\u4F7F\u7528\u54C1\u724C\u4E3B\u9898\u8272\n- \u6240\u6709radio\u3001checkBox\u90FD\u5FC5\u987B\u4F7F\u7528i\u6807\u7B7E\u8BBE\u7F6EFontAwesome\u56FE\u6807\u6765\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u4F7F\u7528\u7CFB\u7EDF\u7684input\u6807\u7B7E\u5B9E\u73B0\u3002\n- \u5982\u7528\u6237\u6CA1\u6709\u660E\u786E\u63CF\u8FF0\u8BF4\u660E\u9875\u9762\u80CC\u666F\u8272\uFF0C\u53EA\u6709\u95EA\u5C4F\u9875\u9762\u7684\u80CC\u666F\u8272\u5141\u8BB8\u8BBE\u7F6E\u54C1\u724C\u4E3B\u8272\u6216\u54C1\u724C\u4E3B\u8272\u4E0E\u54C1\u724C\u6B21\u8272\u7684\u6E10\u53D8\u8272\uFF0C\u5176\u4ED6\u9875\u9762\u5FC5\u987B\u4F7F\u7528\u975E \u54C1\u724C\u4E3B\u8272 \u4E0E\u975E \u54C1\u724C\u6B21\u8272 \u7684\u7EAF\u8272\u505A\u9875\u9762\u80CC\u666F\u8272\uFF0C\u6BD4\u5982\u4E00\u822C\u4F7F\u7528\u767D\u8272\u7CFB\uFF0C\u5982\u679C\u662F\u6697\u9ED1\u98CE\u90A3\u5C31\u662F\u9ED1\u8272\u7CFB\u3002\n- \u8F93\u5165\u6846`input`\u5982\u679C\u9700\u8981\u5C55\u793A\u6587\u5B57 label\uFF0C\u5C3D\u91CF\u4F7F\u7528 icon \u4EE3\u66FF\u6587\u5B57 label\uFF0C\u5E76\u4E14 icon \u91CD\u53E0\u5728\u8F93\u5165\u6846\u7684\u5DE6\u4FA7\uFF0C\u8FD9\u6837\u6574\u4E2A\u9875\u9762\u7684\u7A7A\u95F4\u5229\u7528\u7387\u9AD8\u3002\n- \u5982\u679C\u4E3B\u9898\u98CE\u683C\u662F\u6697\u9ED1\u98CE\u683C\u7684\u8BDD\uFF0C\u9ED8\u8BA4\u53EF\u4EE5\u7ED9\u6BCF\u4E2A\u9875\u9762\u6DFB\u52A0\u591A\u4E2A\u73BB\u7483\u6548\u679C\u7684\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u7C7B\u4F3C\u8FD9\u6837\uFF1A`background: radial-gradient(circle, rgba(0, 242, 255, 0.1) 0%, rgba(0, 0, 0, 0) 70%);`\uFF0C\u91CC\u9762\u7684\u989C\u8272\u548C\u6E10\u53D8\u8303\u56F4\u53EF\u4EE5\u6839\u636E\u5B9E\u9645\u60C5\u51B5\u8C03\u6574\u3002\n- \u80CC\u666F\u8272\u4E3A\u4E86\u589E\u5F3A\u5C42\u6B21\u611F\uFF0C\u6DFB\u52A0\u7684\u68A6\u5E7B\u6CE1\u6CE1\u6216\u8005\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u5143\u7D20\u7684div\uFF0C\u5FC5\u987B\u53EA\u80FD\u58F0\u660E\u4E3A`circle`\uFF0C\u5E76\u4E14\u4E00\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\uFF0C\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Abackground: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);\uFF0C\u5982\u679C\u9700\u8981\u591A\u4E2A`radial-gradient`\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u6BCF\u4E2A\u5F84\u5411\u6E10\u53D8\u80CC\u666F\u90FD\u5FC5\u987B\u58F0\u660E\u4E3A\u4E00\u4E2Adiv\u8282\u70B9\uFF0C\u6BCF\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\u3002\n- \u6309\u94AE\u3001\u5361\u7247\u3001item\u9879\u7B49\u5143\u7D20\u5FC5\u987B\u8981\u6709\u4E00\u4E2Ahover\u540E\u6539\u53D8\u80CC\u666F\u8272\u7684\u53CD\u9988\u6548\u679C\uFF0C\u4E0D\u80FD\u4F7F\u7528transform\u6548\u679C\uFF0C\u53EA\u80FD\u4F7F\u7528\u80CC\u666F\u8272\u6548\u679C\u3002\n\n## \u4E09\u3001\u5FC5\u987B\u7ED9\u6BCF\u4E00\u4E2A\u8282\u70B9\u6DFB\u52A0id\u3001name\u3001nodeType\u5C5E\u6027\n- \u7279\u522B\u6CE8\u610F\uFF0C`i`\u548C`div`\u7B49\u6807\u7B7E\u4E5F\u5FC5\u987B\u6DFB\u52A0 id\u3001name\u3001nodeType \u5C5E\u6027\uFF0C\u6BCF\u4E00\u4E2A\u8282\u70B9\u90FD\u9700\u8981\u6DFB\u52A0\u8FD9\u4E09\u4E2A\u5C5E\u6027\uFF0C\u5343\u4E07\u522B\u6F0F\u6389\u4E86\uFF0C\u8FD9\u662F\u5FC5\u8981\u6761\u4EF6\n- id \u5C5E\u6027\u5FC5\u987B\u53EA\u80FD\u4F7F\u7528\u82F1\u6587\u6216\u6570\u5B57\u7EC4\u6210\uFF0C\u4E14\u4E0D\u80FD\u4EE5\u6570\u5B57\u5F00\u5934\uFF0C\u5E76\u4E14\u6574\u4E2A\u9875\u9762 id \u5C5E\u6027\u7684\u503C\u5FC5\u987B\u552F\u4E00\uFF0C\u4F7F\u7528\u9A7C\u5CF0\u7684\u547D\u540D\u65B9\u5F0F\n- name \u5C5E\u6027\u5FC5\u987B\u662F\u4E2D\u6587\u6216\u6570\u5B57\uFF0C\u5E76\u4E14\u4E0D\u80FD\u5305\u542B\u7279\u6B8A\u5B57\u7B26\n- \u5982\u679C\u662F\u901A\u8FC7\u70B9\u51FBitem\u9879\u5207\u6362\u5C55\u793A\u5185\u5BB9\u7684\uFF0C\u90A3\u4E48item\u9879\u7684nodeType\u5FC5\u987B\u662F`tabMenuBarItem`\uFF0Ctab panel\u7684nodeType\u5FC5\u987B\u662F`tabPanel`\uFF0C`tabMenuBarItem`\u7684\u7236\u4EB2\u5BB9\u5668\u662F`tabMenuBar`\uFF0C\u4E0D\u5F97\u4F7F\u7528`horizontalListView`\u6765\u4EE3\u66FF`tabMenuBar`\n- \u9875\u9762\u7684header\u6807\u9898\u680FnodeType\u5FC5\u987B\u662F`titleBar`\u6216\u8005`topNavigateBar`\uFF0C\u800C\u4E0D\u662F`container`\n- nodeType \u5C5E\u6027\u7684\u503C\u5FC5\u987B\u662F`\u7EC4\u4EF6\u7C7B\u578B\u679A\u4E3E (nodeType)\u679A\u4E3E` \u4E2D\u7684\u4E00\u4E2A\uFF0C\u4E00\u4E9B\u5E03\u5C40\u5BB9\u5668\u9700\u8981\u9075\u5B88\u4EE5\u4E0B\u8BF4\u660E\u6765\u9009\u62E9\u6B63\u786E\u7684nodeType\uFF1A\n - \u5217\u8868\u5BB9\u5668\uFF1A`verticalListView`\u3001`horizontalListView`\u3001`listItemCard`\uFF0C\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u5217\u8868\u9879\uFF0C\u6BD4\u5982\uFF1A\u5546\u54C1\u5217\u8868\u3001\u5206\u7C7B\u5217\u8868\u3001\u6807\u7B7E\u5217\u8868\u7B49\uFF0C\u53EF\u4EE5\u652F\u6301\u591A\u884C\u591A\u5217\u7684\u5217\u8868\u5E03\u5C40\n - \u5217\u8868\u9875\u811A\u5BB9\u5668\uFF1A`listFooterContainer`\uFF0C\u7528\u4E8E\u5E03\u5C40\u5217\u8868\u7684\u9875\u811A\uFF0C\u6BD4\u5982\uFF1A\u52A0\u8F7D\u66F4\u591A\u3001\u6CA1\u6709\u66F4\u591A\u4E86\u7B49\n - \u7F51\u683C\u5BB9\u5668\uFF1AgridContainer\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u7F51\u683C\u9879\uFF0C\u91CC\u9762\u5305\u542BN\u4E2AgridItem\uFF0C\u6BD4\u5982\uFF1A\u5206\u7C7B\u7F51\u683C\u5165\u53E3\n - \u6D41\u5F0F\u5BB9\u5668\uFF1A\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u5B50\u9879\uFF0C\u5B50\u9879\u53EF\u4EE5\u5728\u4E00\u884C\u663E\u793A\uFF0C\u5F53\u4F4D\u7F6E\u4E0D\u591F\u65F6\u5C31\u6362\u884C\u663E\u793A\uFF0C\u6BD4\u5982\uFF1A\u4E00\u7EC4\u6807\u7B7Etag\u7684\u6392\u7248\u5E03\u5C40\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A`multiStateContainer`, `oneStateContentContainer`\uFF0C\u7528\u4E8E\u4E0D\u662F\u901A\u8FC7\u4EA4\u4E92\uFF0C\u800C\u662F\u901A\u8FC7\u903B\u8F91\u72B6\u6001\u53D8\u91CF\u53D8\u5316\u800C\u663E\u793A\u4E0D\u540C\u72B6\u6001\u7684\u5185\u5BB9\u5BB9\u5668\uFF0C\u6BD4\u5982\uFF1A\u767B\u5F55\u72B6\u6001\u548C\u672A\u767B\u5F55\u72B6\u6001\u5206\u522B\u663E\u793A\u4E0D\u540C\u7684\u5185\u5BB9\u3002\n- \u9AD8\u7EA7\u7EC4\u4EF6\u8282\u70B9\u7684nodeType\u7ED3\u6784\u89C4\u5219\uFF1A\n - tab \u9009\u9879\u5361\uFF1A`tabMenuBar`\u662Ftab\u9009\u9879\u5361\u83DC\u5355\u680F\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`tabMenuBarItem`\uFF0C`tabPanelFather`\u662Ftab\u9009\u9879\u5361\u5185\u5BB9\u5BB9\u5668\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`tabPanel`\uFF0C`tabMenuBar`\u548C`tabPanelFather`\u5FC5\u987B\u540C\u65F6\u5B58\u5728\uFF0C`tabPanel`\u7684\u6570\u91CF\u5FC5\u987B\u548C`tabMenuBarItem`\u7684\u6570\u91CF\u76F8\u540C\n - viewPager \u8F6E\u64AD\uFF1A`viewPager`\u662F\u8F6E\u64AD\u5BB9\u5668\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`viewPagerItem`\uFF0C`viewPagerIndicatorContainer`\u662F\u8F6E\u64AD\u6307\u793A\u5668\u5BB9\u5668\uFF0C`viewPager`\u4E0E`viewPagerIndicatorContainer`\u5FC5\u987B\u540C\u65F6\u5B58\u5728\n - \u4E00\u884C\u4E0D\u591F\u4F4D\u7F6E\u663E\u793A\u5C31\u6362\u884C\u7684\u5BB9\u5668\uFF1A`inlineBlockAndWrap`\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`blockItem`\uFF0C`blockItem`\u662F\u5B83\u7684\u5B50\u9879\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A\u4E00\u4E2A`multiStateContainer`\u591A\u72B6\u6001\u5BB9\u5668\u5305\u542B\u591A\u4E2A`oneStateContentContainer`\n\n- \u7EC4\u4EF6\u7C7B\u578B\u679A\u4E3E (nodeType)\u679A\u4E3E\uFF1A\n\n - \u5F62\u72B6\uFF1A`rect`, `circle`, `line`\n - \u57FA\u7840\u7EC4\u4EF6\uFF1A`text`\u3001`button`\u3001`input`\u3001`icon`\u3001`image`\n - \u57FA\u7840\u5BB9\u5668\uFF1A`container`\n - \u7F51\u683C\u5BB9\u5668\uFF1A`gridContainer`\u3001`gridItem`\n - \u6D41\u5F0F\u5BB9\u5668\uFF1A`inlineBlockAndWrap`\u3001`blockItem`\n - \u5F00\u5173\uFF1A`switch`\n - \u5355\u9009\uFF1A`radioGroup`\u3001`radio`\n - \u591A\u9009\uFF1A`checkBoxGroup`\u3001`checkBox`\n - \u9876\u90E8\u5BFC\u822A\u680F\uFF1A`titleBar`\u3001`topNavigateBar`\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A`multiStateContainer`, `oneStateContentContainer`\n - \u5217\u8868\uFF1A`verticalListView`, `horizontalListView`, `listItemCard`\u3001`listFooterContainer`\n - \u8F6E\u64AD\uFF1A`viewPager`, `viewPagerItem`, `viewPagerIndicatorContainer`\n - tab \u9009\u9879\u5361\uFF1A`tabPanelFather`, `tabPanel`, `tabMenuBar`, `tabMenuBarItem`\n - \u5E95\u90E8\u5BFC\u822A: `bottomTabContentContainer`, `subPage`, `bottomTabNavigateBar`, `bottomTabNavigateBarItem`\n - \u5BF9\u8BDD\u6846\uFF1A`dialogOverlay`, `dialogContent`\n - toast \u63D0\u793A\uFF1A`toast`\n - \u4E0B\u62C9\u83DC\u5355\uFF1A`dropDownMenu`\n - \u4FA7\u6ED1\u9762\u677F\uFF1A`sideSlidePanel`\n - \u624B\u673A\u786C\u4EF6\u5143\u7D20\uFF1A`phoneTopStatusBar`\u3001`phoneBottomIndicatorBar`\uFF0C\u8FD9\u4E24\u4E2A\u5143\u7D20\u662F\u624B\u673A\u786C\u4EF6\u81EA\u5E26\u7684\u5143\u7D20\uFF0C\u4E0D\u80FD\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u3002\n\n## \u56DB\u3001\u8F6E\u64AD\u4E0ETabs\u7EC4\u4EF6\u7684\u89C4\u5219\n- \u8F6E\u64AD\u7684\u6BCF\u4E00\u4E2ASlide\u548CTabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u4F7F\u7528`display: none`\u548C`display: block/flex`\u6765\u5B9E\u73B0\u9690\u85CF\u548C\u663E\u793A\u7684\u4E92\u65A5\u5207\u6362\n- \u8F6E\u64AD\u7684\u6BCF\u4E00\u4E2ASlide\u5FC5\u987B\u6709html\u4EE3\u7801\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ASlide\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Slide\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u9700\u8981\u6DFB\u52A0\u70B9\u51FB\u5207\u6362Tab Panel\u7684\u529F\u80FD\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ATab Panel\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Tab Panel\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u8981\u6709\u5185\u5BB9\uFF0C\u4E0D\u5F97\u6577\u884D\u5730\u5C55\u793A\u6CA1\u6709\u6570\u636E\u3001\u8054\u7F51\u5931\u8D25\u3001loading\u7684\u60C5\u51B5\uFF0C\u5FC5\u987B\u5C55\u793A\u6709\u6570\u636E\u7684\u5177\u4F53\u5185\u5BB9\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u5077\u61D2\u6577\u884D\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u8981\u6709html\u4EE3\u7801\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ATab Panel\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Tab Panel\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n\n## \u4E94\u3001\u56FE\u6807\u4E0E\u56FE\u7247\u7684\u89C4\u5219\n- \u5F53\u9700\u8981icon\u56FE\u6807\u65F6\u5FC5\u987B\u4F7F\u7528FontAwesome\u56FE\u6807\uFF0C\u6BD4\u5982\uFF1A`<i name=\"\u5FAE\u4FE1Icon\" vtype=\"icon\" id=\"wxIcon\" class=\"fab fa-weixin\"></i>`\uFF0C\u5E76\u4E14\u6CE8\u610F\u56FE\u6807\u7684\u989C\u8272\uFF0C\u6BD4\u5982\u5FAE\u4FE1\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u7EFF\u8272\u7CFB\uFF0CQQ\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u84DD\u8272\u7CFB\uFF0C\u5FAE\u535A\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u7EA2\u8272\u7CFB\uFF0C\u652F\u4ED8\u5B9D\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u6D45\u84DD\u8272\u7CFB\u7B49\u7B49\n- \u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528 emoji \u8868\u60C5\u7B26\u53F7\uFF0C\u4E0D\u5F97\u4F7F\u7528\u4EFB\u4F55 emoji \u8868\u60C5\u7B26\u53F7\uFF0C\u8BF7\u4F7F\u7528FontAwesome\u5B57\u4F53\u56FE\u6807\u6765\u4EE3\u66FF\u3002\n- LOGO\u56FE\u7247\u548C\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u5FC5\u987B\u4F7F\u7528`doc/res/svgMap.json`\u6587\u4EF6\u4E2Djson\u5BF9\u8C61\u6B63\u786E\u5B57\u6BB5\u7684https\u94FE\u63A5\u503C\uFF0C\u7981\u6B62\u4F7F\u7528\u672C\u5730\u56FE\u7247\u8DEF\u5F84`doc/res/logo.svg`\u6587\u4EF6\uFF0C\u800C\u662F\u4F7F\u7528\u7C7B\u4F3C\uFF1A`https://editor.bytefungo.com/dfile/img/xxxxx.svg`\u8FD9\u6837\u7684\u56FE\u7247\u94FE\u63A5\u5730\u5740\uFF0C\u6BD4\u5982\u95EA\u5C4F\u9875\u3001\u767B\u5F55\u9875\u3001\u6CE8\u518C\u9875\u7528\u5230\u7684LOGO\u56FE\u7247\uFF0C\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u7B49\u3002\n- jpg\u3001jpeg\u7C7B\u578B\u56FE\u7247\u5FC5\u987B\u4F7F\u7528\u56FE\u7247\u5730\u5740\uFF1A`https://oss.bytefungo.com/f1/showImg1.jpg`)\uFF0C\u5176\u4E2D\u7ED3\u5C3E\u7684\u2019showImg1'\u53EF\u4EE5\u6362\u4E3A\u4ECE 1 \u5230 30 \u7684\u6570\u5B57\uFF0C1~30 \u7684\u6570\u5B57\u5FC5\u987B\u968F\u673A\u6311\u9009\uFF0C\u4E0D\u5F97\u6BCF\u4E2A\u9875\u9762\u6BCF\u4E2A\u56FE\u7247\u90FD\u4F7F\u7528\u540C\u4E00\u4E2A\u6570\u5B57\u3002\u5199\u6CD5\u6BD4\u5982\uFF1A`<img src=\"https://oss.bytefungo.com/f1/showImg17.jpg\" alt=\"xxx\" class=\"xxx\" nodeType=\"image\">`\n\n## \u516D\u3001\u9996\u9875\u4E3B\u4F53\u9875\u4E0E\u5B50\u9875\u9762\u7684\u89C4\u5219\n- \u9996\u9875\u4E3B\u4F53\u9875\u5D4C\u5957\u4E86\u591A\u4E2A\u5B50\u9875\u9762\uFF0C\u6BCF\u4E00\u4E2A\u5B50\u9875\u9762\u90FD\u4E0D\u9700\u8981\u586B\u5145\u5185\u5BB9\uFF0C\u7A7A\u767D\u5C31\u884C\uFF0C\u540E\u9762\u4F1A\u6709\u4E13\u95E8\u7684\u4EFB\u52A1\u6765\u8BBE\u8BA1\u5177\u4F53\u7684\u5B50\u9875\u9762\u3002\n- \u4EFB\u4F55\u5B50\u9875\u9762\u90FD\u5FC5\u987B\u7981\u6B62\u6DFB\u52A0\u5E95\u90E8\u5BFC\u822A\u680F\u8282\u70B9\u5230\u9875\u9762\uFF0C\u56E0\u4E3A\u5B50\u9875\u9762\u662F\u5D4C\u5957\u5728\u9996\u9875\u4E3B\u4F53\u9875\u4E2D\u7684\uFF0C\u7236\u9875\u9762\u5DF2\u7ECF\u6709\u5E95\u90E8\u5BFC\u822A\u680F\u4E86\uFF0C\u5B50\u9875\u9762\u4E0D\u9700\u8981\u518D\u6DFB\u52A0\u5E95\u90E8\u5BFC\u822A\u680F\uFF0C\u4E5F\u4E0D\u5F97\u6DFB\u52A0\u4E8C\u7EA7\u9875\u9762\u7684\u6807\u9898\u680F\u5230\u5B50\u9875\u9762\u4E2D\uFF0C\u56E0\u4E3A\u5B50\u9875\u9762\u662F\u5D4C\u5957\u5728\u9996\u9875\u4E3B\u4F53\u9875\u4E2D\u7684\uFF0C\u9996\u9875\u4E3B\u4F53\u9875\u548C\u5B83\u7684\u5B50\u9875\u9762\u90FD\u662F\u4E00\u7EA7\u9875\u9762\uFF0C\u56E0\u6B64\u4E0D\u5F97\u6DFB\u52A0\u4E8C\u7EA7\u9875\u9762\u7684\u6807\u9898\u680F\u5230\u5B50\u9875\u9762\u4E2D\u3002\n\n## \u4E03\u3001\u5982\u679C\u7528\u6237\u6CA1\u6709\u660E\u786E\u8BF4\u660E\u8BE5\u9875\u9762\u8BBE\u8BA1\u9700\u6C42\uFF0C\u90A3\u5C31\u6309\u7167\u4EE5\u4E0B\u9875\u9762\u9ED8\u8BA4\u89C4\u5219\u8BBE\u8BA1\n- \u95EA\u5C4F\u9875\uFF1A\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- \u5F15\u5BFC\u9875\uFF1A\u5C3D\u91CF\u4E0D\u4F7F\u7528\u5168\u5C4F\u56FE\u7247\uFF0C\u4E00\u822C\u6BCF\u4E00\u9875\u5F15\u5BFC\u9875\u80CC\u666F\u8272\u4E5F\u53EF\u4EE5\u6E10\u53D8\uFF0C\u7136\u540E\u6BCF\u4E00\u9875\u529F\u80FD\u8BF4\u660E\u4E00\u822C\u6709\u975E\u5168\u5C4F\u56FE\u7247\u3001\u6807\u9898\u3001\u526F\u6807\u9898\u7B49\u7B49\uFF0C\u4F60\u53EF\u4EE5\u5E26\u5165\u5176\u4ED6\u5143\u7D20\uFF0C\u8BA9\u9875\u9762\u66F4\u52A0\u7F8E\u89C2\uFF0C\u5E76\u4E14\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u9700\u8981\u81EA\u5DF1\u7ED8\u5236svg\u56FE\u7247\uFF0C\u5E76\u5B58\u653E\u5728`doc/res`\u6587\u4EF6\u5939\u4E0B\u9762\uFF0C\u5E76\u5728html\u4E2D\u4F7F\u7528\n- \u80CC\u666F\u8272\u4E3A\u4E86\u589E\u5F3A\u5C42\u6B21\u611F\uFF0C\u6DFB\u52A0\u7684\u68A6\u5E7B\u6CE1\u6CE1\u6216\u8005\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u5143\u7D20\u7684div\uFF0C\u5FC5\u987B\u53EA\u80FD\u58F0\u660E\u4E3A`circle`\uFF0C\u5E76\u4E14\u4E00\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\uFF0C\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Abackground: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);\uFF0C\u5982\u679C\u9700\u8981\u591A\u4E2A`radial-gradient`\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u6BCF\u4E2A\u5F84\u5411\u6E10\u53D8\u80CC\u666F\u90FD\u5FC5\u987B\u58F0\u660E\u4E3A\u4E00\u4E2Adiv\u8282\u70B9\uFF0C\u6BCF\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\u3002\n";
|
|
1
|
+
export declare const uiDesignPromptTemplate = "# UI\u8BBE\u8BA1\u89C4\u5219\uFF0C\u7279\u522B\u6CE8\u610F\u5FC5\u987B\u4F7F\u7528UI\u89C4\u8303`.bytefun/UI\u8BBE\u8BA1\u89C4\u8303.md`\u91CC\u9762\u9ED8\u8BA4\u7684\u4E3B\u9898\u76AE\u80A4\u6765\u8BBE\u8BA1\uFF0C\u4E0D\u5F97\u4F7F\u7528\u5176\u4ED6\u4E3B\u9898\u76AE\u80A4\u3002\n\n## \u4E00\u3001\u7981\u6B62\u7684\u4E8B\u60C5\n- \u7981\u6B62\u4F7F\u7528\u4EFB\u4F55\u524D\u7AEF\u6846\u67B6\uFF0C\u53EA\u4F7F\u7528 html+\u7C7B\u9009\u62E9\u5668\u6837\u5F0F+js \u6765\u5B9E\u73B0\u3002\n- \u7981\u6B62\u4F7F\u7528js\u4EE3\u7801\u6765\u62FC\u63A5html\u5B57\u7B26\u4E32\uFF0C\u5FC5\u987B\u5728body\u6807\u7B7E\u91CC\u9762\u76F4\u63A5\u5199html\u4EE3\u7801\u3002\n- \u7981\u6B62\u4F7F\u7528js\u4EE3\u7801\u6765\u58F0\u660E\u4EFB\u4F55\u9875\u9762\u663E\u793A\u6240\u9700\u7684\u6570\u636E\uFF0C\u6240\u6709\u6570\u636E\u90FD\u5FC5\u987B\u5728html\u4EE3\u7801\u4E2D\u76F4\u63A5\u5199\u6B7B\u3002\n- \u7981\u6B62\u4F7F\u7528\u6587\u672C\u6E10\u53D8\u8272\uFF0C\u5FC5\u987B\u4F7F\u7528\u7EAF\u8272\u6587\u672C\uFF0C\u4E5F\u5C31\u662F\u7981\u6B62\u4F7F\u7528`-webkit-text-fill-color`\u5C5E\u6027\u3002\n- \u7981\u6B62\u7ED9\u9875\u9762\u6DFB\u52A0`\u624B\u673A\u9876\u90E8\u72B6\u6001\u680F`\u3001`\u624B\u673A\u5E95\u90E8\u6307\u793A\u5668\u680F`\u4E24\u4E2A\u975E\u9875\u9762\u5185\u5BB9\u7684\u5143\u7D20\u8282\u70B9\uFF0C\u8FD9\u662F\u624B\u673A\u786C\u4EF6\u81EA\u5E26\u7684\u5143\u7D20\uFF0C\u4E0D\u80FD\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u3002\n- \u7981\u6B62\u4F7F\u7528`:before`\u3001`:after`\u4F2A\u5143\u7D20\uFF0C\u5FC5\u987B\u4F7F\u7528\u5176\u4ED6\u6807\u7B7E\u6765\u5B9E\u73B0\u3002\n- loading\u8282\u70B9\u7684\u5B9E\u73B0\u7981\u6B62\u4F7F\u7528div\u6807\u7B7E\u4E0E\u8FB9\u6846\u5C5E\u6027\u5B9E\u73B0\uFF0C\u5FC5\u987B\u4F7F\u7528\u56FE\u6807icon\u7684i\u6807\u7B7E\u6765\u5B9E\u73B0loading\u7684\u8282\u70B9\n- \u7981\u6B62\u4E3Ahtml\u6807\u7B7E\u8282\u70B9\u6DFB\u52A0\u52A8\u753B\u6216\u8FC7\u6E21\u6548\u679C\uFF0C\u9875\u9762\u8BBE\u8BA1\u4E0D\u9700\u8981\u4EFB\u4F55\u52A8\u753B\u548C\u8FC7\u6E21\u6548\u679C\uFF0C\u6BD4\u5982\u7981\u6B62\uFF1A@keyframes\u3001transition\u3001animation \u7B49\u3002\n- \u6309\u94AE\u3001\u5361\u7247\u3001item\u9879\u7B49\u5143\u7D20\u5FC5\u987B\u8981\u6709hover\u4E0E\u70B9\u51FB\u53CD\u9988\uFF0C\u70B9\u51FB\u53CD\u9988\u5FC5\u987B\u4F7F\u7528\u6D45\u8272\u7684\u80CC\u666F\u8272background\u6765\u53CD\u9988\u5C31\u884C\uFF0C\u4E25\u7981\u4F7F\u7528transform\u6548\u679C\n - \u274C \u9519\u8BEF\u7684\u7528\u6CD5\uFF1A \n ``` css\n .hot-sales-item:hover {\n transform: translateX(...px);\n }\n ```\n - \u2705 \u6B63\u786E\u7684\u7528\u6CD5\uFF1A\n ``` css\n .hot-sales-item:hover {\n background: ...;\n }\n ```\n- \u7981\u6B62\u4F7F\u7528div\u6807\u7B7E\u6765\u5B9E\u73B0image\u56FE\u7247\uFF0C\u5FC5\u987B\u8981\u4F7F\u7528img\u6807\u7B7E\u6765\u5B9E\u73B0\u56FE\u7247\u8282\u70B9\uFF0Cimg\u6807\u7B7E\u7684src\u5C5E\u6027\u5FC5\u987B\u8BBE\u7F6E\u4E3A\uFF1A`https://oss.bytefungo.com/f1/showImg1.jpg`\uFF0C\u5176\u4E2D\u91CC\u9762\u7684`showImg1`\u53EF\u4EE5\u6539\u4E3A1~30\u7684\u4EFB\u610F\u4E00\u4E2A\u6570\u5B57\uFF0C\u6BD4\u5982\uFF1A`showImg5`\u3002\n - \u274C\u9519\u8BEF\u7684\u5199\u6CD5\uFF1A\n ``` html\n <div class=\"bestseller-cover\" id=\"bestsellerCover1\" name=\"\u7545\u9500\u4E66\u7C4D\u5C01\u97621\" nodeType=\"image\">\n </div>\n ```\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ``` html\n <img class=\"bestseller-cover\" id=\"bestsellerCover1\" name=\"\u7545\u9500\u4E66\u7C4D\u5C01\u97621\" nodeType=\"image\" src=\"https://oss.bytefungo.com/f1/showImg7.jpg\"> \n ```\n\n## \u4E8C\u3001\u6837\u5F0F\u89C4\u5219\n- \u6837\u5F0F\u4EE3\u7801\u5FC5\u987B\u4F7F\u7528\u7C7B\u9009\u62E9\u5668\u6837\u5F0FClass-based Style / Class Selector Style\u65B9\u5F0F\uFF0C\u4E0D\u5F97\u4F7F\u7528\u884C\u5185\u6837\u5F0FInline Style\u6216\u5916\u90E8\u6587\u4EF6\u3002\n- \u9075\u5FAA\u624B\u673A\u5C3A\u5BF8\u89C4\u683C(\u5BBD\u5EA6 393px \u9AD8\u5EA6 808px)\n- \u9996\u9875/\u63A8\u8350tab\u7684\u5206\u7C7B/\u529F\u80FD\u5404\u4E2A\u5165\u53E3\u7684\u56FE\u6807\u4E00\u822C\u9700\u8981\u4F7F\u7528\u4E0D\u4E00\u6837\u7684\u989C\u8272\uFF0C\u5F88\u5C11\u4F1A\u7EDF\u4E00\u5168\u90E8\u4F7F\u7528\u54C1\u724C\u4E3B\u9898\u8272\n- \u6240\u6709radio\u3001checkBox\u90FD\u5FC5\u987B\u4F7F\u7528i\u6807\u7B7E\u8BBE\u7F6EFontAwesome\u56FE\u6807\u6765\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u4F7F\u7528\u7CFB\u7EDF\u7684input\u6807\u7B7E\u5B9E\u73B0\u3002\n- \u5982\u7528\u6237\u6CA1\u6709\u660E\u786E\u63CF\u8FF0\u8BF4\u660E\u9875\u9762\u80CC\u666F\u8272\uFF0C\u53EA\u6709\u95EA\u5C4F\u9875\u9762\u7684\u80CC\u666F\u8272\u5141\u8BB8\u8BBE\u7F6E\u54C1\u724C\u4E3B\u8272\u6216\u54C1\u724C\u4E3B\u8272\u4E0E\u54C1\u724C\u6B21\u8272\u7684\u6E10\u53D8\u8272\uFF0C\u5176\u4ED6\u9875\u9762\u5FC5\u987B\u4F7F\u7528\u975E \u54C1\u724C\u4E3B\u8272 \u4E0E\u975E \u54C1\u724C\u6B21\u8272 \u7684\u7EAF\u8272\u505A\u9875\u9762\u80CC\u666F\u8272\uFF0C\u6BD4\u5982\u4E00\u822C\u4F7F\u7528\u767D\u8272\u7CFB\uFF0C\u5982\u679C\u662F\u6697\u9ED1\u98CE\u90A3\u5C31\u662F\u9ED1\u8272\u7CFB\u3002\n- \u8F93\u5165\u6846`input`\u5982\u679C\u9700\u8981\u5C55\u793A\u6587\u5B57 label\uFF0C\u5C3D\u91CF\u4F7F\u7528 icon \u4EE3\u66FF\u6587\u5B57 label\uFF0C\u5E76\u4E14 icon \u91CD\u53E0\u5728\u8F93\u5165\u6846\u7684\u5DE6\u4FA7\uFF0C\u8FD9\u6837\u6574\u4E2A\u9875\u9762\u7684\u7A7A\u95F4\u5229\u7528\u7387\u9AD8\u3002\n- \u5982\u679C\u4E3B\u9898\u98CE\u683C\u662F\u6697\u9ED1\u98CE\u683C\u7684\u8BDD\uFF0C\u9ED8\u8BA4\u53EF\u4EE5\u7ED9\u6BCF\u4E2A\u9875\u9762\u6DFB\u52A0\u591A\u4E2A\u73BB\u7483\u6548\u679C\u7684\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u7C7B\u4F3C\u8FD9\u6837\uFF1A`background: radial-gradient(circle, rgba(0, 242, 255, 0.1) 0%, rgba(0, 0, 0, 0) 70%);`\uFF0C\u91CC\u9762\u7684\u989C\u8272\u548C\u6E10\u53D8\u8303\u56F4\u53EF\u4EE5\u6839\u636E\u5B9E\u9645\u60C5\u51B5\u8C03\u6574\u3002\n- \u80CC\u666F\u8272\u4E3A\u4E86\u589E\u5F3A\u5C42\u6B21\u611F\uFF0C\u6DFB\u52A0\u7684\u68A6\u5E7B\u6CE1\u6CE1\u6216\u8005\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u5143\u7D20\u7684div\uFF0C\u5FC5\u987B\u53EA\u80FD\u58F0\u660E\u4E3A`circle`\uFF0C\u5E76\u4E14\u4E00\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\uFF0C\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Abackground: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);\uFF0C\u5982\u679C\u9700\u8981\u591A\u4E2A`radial-gradient`\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u6BCF\u4E2A\u5F84\u5411\u6E10\u53D8\u80CC\u666F\u90FD\u5FC5\u987B\u58F0\u660E\u4E3A\u4E00\u4E2Adiv\u8282\u70B9\uFF0C\u6BCF\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\u3002\n- \u6309\u94AE\u3001\u5361\u7247\u3001item\u9879\u7B49\u5143\u7D20\u5FC5\u987B\u8981\u6709\u4E00\u4E2Ahover\u540E\u6539\u53D8\u80CC\u666F\u8272\u7684\u53CD\u9988\u6548\u679C\uFF0C\u4E0D\u80FD\u4F7F\u7528transform\u6548\u679C\uFF0C\u53EA\u80FD\u4F7F\u7528\u80CC\u666F\u8272\u6548\u679C\u3002\n\n## \u4E09\u3001\u5FC5\u987B\u7ED9\u6BCF\u4E00\u4E2A\u8282\u70B9\u6DFB\u52A0id\u3001name\u3001nodeType\u5C5E\u6027\n- \u7279\u522B\u6CE8\u610F\uFF0C`i`\u548C`div`\u7B49\u6807\u7B7E\u4E5F\u5FC5\u987B\u6DFB\u52A0 id\u3001name\u3001nodeType \u5C5E\u6027\uFF0C\u6BCF\u4E00\u4E2A\u8282\u70B9\u90FD\u9700\u8981\u6DFB\u52A0\u8FD9\u4E09\u4E2A\u5C5E\u6027\uFF0C\u5343\u4E07\u522B\u6F0F\u6389\u4E86\uFF0C\u8FD9\u662F\u5FC5\u8981\u6761\u4EF6\n- id \u5C5E\u6027\u5FC5\u987B\u53EA\u80FD\u4F7F\u7528\u82F1\u6587\u6216\u6570\u5B57\u7EC4\u6210\uFF0C\u4E14\u4E0D\u80FD\u4EE5\u6570\u5B57\u5F00\u5934\uFF0C\u5E76\u4E14\u6574\u4E2A\u9875\u9762 id \u5C5E\u6027\u7684\u503C\u5FC5\u987B\u552F\u4E00\uFF0C\u4F7F\u7528\u9A7C\u5CF0\u7684\u547D\u540D\u65B9\u5F0F\n- name \u5C5E\u6027\u5FC5\u987B\u662F\u4E2D\u6587\u6216\u6570\u5B57\uFF0C\u5E76\u4E14\u4E0D\u80FD\u5305\u542B\u7279\u6B8A\u5B57\u7B26\n- \u5982\u679C\u662F\u901A\u8FC7\u70B9\u51FBitem\u9879\u5207\u6362\u5C55\u793A\u5185\u5BB9\u7684\uFF0C\u90A3\u4E48item\u9879\u7684nodeType\u5FC5\u987B\u662F`tabMenuBarItem`\uFF0Ctab panel\u7684nodeType\u5FC5\u987B\u662F`tabPanel`\uFF0C`tabMenuBarItem`\u7684\u7236\u4EB2\u5BB9\u5668\u662F`tabMenuBar`\uFF0C\u4E0D\u5F97\u4F7F\u7528`horizontalListView`\u6765\u4EE3\u66FF`tabMenuBar`\n- \u9875\u9762\u7684header\u6807\u9898\u680FnodeType\u5FC5\u987B\u662F`titleBar`\u6216\u8005`topNavigateBar`\uFF0C\u800C\u4E0D\u662F`container`\n- nodeType \u5C5E\u6027\u7684\u503C\u5FC5\u987B\u662F`\u7EC4\u4EF6\u7C7B\u578B\u679A\u4E3E (nodeType)\u679A\u4E3E` \u4E2D\u7684\u4E00\u4E2A\uFF0C\u4E00\u4E9B\u5E03\u5C40\u5BB9\u5668\u9700\u8981\u9075\u5B88\u4EE5\u4E0B\u8BF4\u660E\u6765\u9009\u62E9\u6B63\u786E\u7684nodeType\uFF1A\n - \u5217\u8868\u5BB9\u5668\uFF1A`verticalListView`\u3001`horizontalListView`\u3001`listItemCard`\uFF0C\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u5217\u8868\u9879\uFF0C\u6BD4\u5982\uFF1A\u5546\u54C1\u5217\u8868\u3001\u5206\u7C7B\u5217\u8868\u3001\u6807\u7B7E\u5217\u8868\u7B49\uFF0C\u53EF\u4EE5\u652F\u6301\u591A\u884C\u591A\u5217\u7684\u5217\u8868\u5E03\u5C40\n - \u5217\u8868\u9875\u811A\u5BB9\u5668\uFF1A`listFooterContainer`\uFF0C\u7528\u4E8E\u5E03\u5C40\u5217\u8868\u7684\u9875\u811A\uFF0C\u6BD4\u5982\uFF1A\u52A0\u8F7D\u66F4\u591A\u3001\u6CA1\u6709\u66F4\u591A\u4E86\u7B49\n - \u7F51\u683C\u5BB9\u5668\uFF1AgridContainer\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u7F51\u683C\u9879\uFF0C\u91CC\u9762\u5305\u542BN\u4E2AgridItem\uFF0C\u6BD4\u5982\uFF1A\u5206\u7C7B\u7F51\u683C\u5165\u53E3\n - \u6D41\u5F0F\u5BB9\u5668\uFF1A\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u5B50\u9879\uFF0C\u5B50\u9879\u53EF\u4EE5\u5728\u4E00\u884C\u663E\u793A\uFF0C\u5F53\u4F4D\u7F6E\u4E0D\u591F\u65F6\u5C31\u6362\u884C\u663E\u793A\uFF0C\u6BD4\u5982\uFF1A\u4E00\u7EC4\u6807\u7B7Etag\u7684\u6392\u7248\u5E03\u5C40\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A`multiStateContainer`, `oneStateContentContainer`\uFF0C\u7528\u4E8E\u4E0D\u662F\u901A\u8FC7\u4EA4\u4E92\uFF0C\u800C\u662F\u901A\u8FC7\u903B\u8F91\u72B6\u6001\u53D8\u91CF\u53D8\u5316\u800C\u663E\u793A\u4E0D\u540C\u72B6\u6001\u7684\u5185\u5BB9\u5BB9\u5668\uFF0C\u6BD4\u5982\uFF1A\u767B\u5F55\u72B6\u6001\u548C\u672A\u767B\u5F55\u72B6\u6001\u5206\u522B\u663E\u793A\u4E0D\u540C\u7684\u5185\u5BB9\u3002\n- \u9AD8\u7EA7\u7EC4\u4EF6\u8282\u70B9\u7684nodeType\u7ED3\u6784\u89C4\u5219\uFF1A\n - tab \u9009\u9879\u5361\uFF1A`tabMenuBar`\u662Ftab\u9009\u9879\u5361\u83DC\u5355\u680F\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`tabMenuBarItem`\uFF0C`tabPanelFather`\u662Ftab\u9009\u9879\u5361\u5185\u5BB9\u5BB9\u5668\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`tabPanel`\uFF0C`tabMenuBar`\u548C`tabPanelFather`\u5FC5\u987B\u540C\u65F6\u5B58\u5728\uFF0C`tabPanel`\u7684\u6570\u91CF\u5FC5\u987B\u548C`tabMenuBarItem`\u7684\u6570\u91CF\u76F8\u540C\n - viewPager \u8F6E\u64AD\uFF1A`viewPager`\u662F\u8F6E\u64AD\u5BB9\u5668\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`viewPagerItem`\uFF0C`viewPagerIndicatorContainer`\u662F\u8F6E\u64AD\u6307\u793A\u5668\u5BB9\u5668\uFF0C`viewPager`\u4E0E`viewPagerIndicatorContainer`\u5FC5\u987B\u540C\u65F6\u5B58\u5728\n - \u4E00\u884C\u4E0D\u591F\u4F4D\u7F6E\u663E\u793A\u5C31\u6362\u884C\u7684\u5BB9\u5668\uFF1A`inlineBlockAndWrap`\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`blockItem`\uFF0C`blockItem`\u662F\u5B83\u7684\u5B50\u9879\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A\u4E00\u4E2A`multiStateContainer`\u591A\u72B6\u6001\u5BB9\u5668\u5305\u542B\u591A\u4E2A`oneStateContentContainer`\n\n- \u7EC4\u4EF6\u7C7B\u578B\u679A\u4E3E (nodeType)\u679A\u4E3E\uFF1A\n\n - \u5F62\u72B6\uFF1A`rect`, `circle`, `line`\n - \u57FA\u7840\u7EC4\u4EF6\uFF1A`text`\u3001`button`\u3001`input`\u3001`icon`\u3001`image`\n - \u57FA\u7840\u5BB9\u5668\uFF1A`container`\n - \u7F51\u683C\u5BB9\u5668\uFF1A`gridContainer`\u3001`gridItem`\n - \u6D41\u5F0F\u5BB9\u5668\uFF1A`inlineBlockAndWrap`\u3001`blockItem`\n - \u5F00\u5173\uFF1A`switch`\n - \u5355\u9009\uFF1A`radioGroup`\u3001`radio`\n - \u591A\u9009\uFF1A`checkBoxGroup`\u3001`checkBox`\n - \u9876\u90E8\u5BFC\u822A\u680F\uFF1A`titleBar`\u3001`topNavigateBar`\n - \u5E95\u90E8\u64CD\u4F5C\u680F\uFF1A`bottomOperateBar`\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A`multiStateContainer`, `oneStateContentContainer`\n - \u5217\u8868\uFF1A`verticalListView`, `horizontalListView`, `listItemCard`\u3001`listFooterContainer`\n - \u8F6E\u64AD\uFF1A`viewPager`, `viewPagerItem`, `viewPagerIndicatorContainer`\n - tab \u9009\u9879\u5361\uFF1A`tabPanelFather`, `tabPanel`, `tabMenuBar`, `tabMenuBarItem`\n - \u5E95\u90E8\u5BFC\u822A: `bottomTabContentContainer`, `subPage`, `bottomTabNavigateBar`, `bottomTabNavigateBarItem`\n - \u5BF9\u8BDD\u6846\uFF1A`dialogOverlay`, `dialogContent`\n - toast \u63D0\u793A\uFF1A`toast`\n - \u4E0B\u62C9\u83DC\u5355\uFF1A`dropDownMenu`\n - \u4FA7\u6ED1\u9762\u677F\uFF1A`sideSlidePanel`\n - \u624B\u673A\u786C\u4EF6\u5143\u7D20\uFF1A`phoneTopStatusBar`\u3001`phoneBottomIndicatorBar`\uFF0C\u8FD9\u4E24\u4E2A\u5143\u7D20\u662F\u624B\u673A\u786C\u4EF6\u81EA\u5E26\u7684\u5143\u7D20\uFF0C\u4E0D\u80FD\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u3002\n\n## \u56DB\u3001\u8F6E\u64AD\u4E0ETabs\u7EC4\u4EF6\u7684\u89C4\u5219\n- \u8F6E\u64AD\u7684\u6BCF\u4E00\u4E2ASlide\u548CTabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u4F7F\u7528`display: none`\u548C`display: block/flex`\u6765\u5B9E\u73B0\u9690\u85CF\u548C\u663E\u793A\u7684\u4E92\u65A5\u5207\u6362\n- \u8F6E\u64AD\u7684\u6BCF\u4E00\u4E2ASlide\u5FC5\u987B\u6709html\u4EE3\u7801\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ASlide\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Slide\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u9700\u8981\u6DFB\u52A0\u70B9\u51FB\u5207\u6362Tab Panel\u7684\u529F\u80FD\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ATab Panel\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Tab Panel\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u8981\u6709\u5185\u5BB9\uFF0C\u4E0D\u5F97\u6577\u884D\u5730\u5C55\u793A\u6CA1\u6709\u6570\u636E\u3001\u8054\u7F51\u5931\u8D25\u3001loading\u7684\u60C5\u51B5\uFF0C\u5FC5\u987B\u5C55\u793A\u6709\u6570\u636E\u7684\u5177\u4F53\u5185\u5BB9\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u5077\u61D2\u6577\u884D\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u8981\u6709html\u4EE3\u7801\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ATab Panel\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Tab Panel\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n\n## \u4E94\u3001\u56FE\u6807\u4E0E\u56FE\u7247\u7684\u89C4\u5219\n- \u5F53\u9700\u8981icon\u56FE\u6807\u65F6\u5FC5\u987B\u4F7F\u7528FontAwesome\u56FE\u6807\uFF0C\u6BD4\u5982\uFF1A`<i name=\"\u5FAE\u4FE1Icon\" vtype=\"icon\" id=\"wxIcon\" class=\"fab fa-weixin\"></i>`\uFF0C\u5E76\u4E14\u6CE8\u610F\u56FE\u6807\u7684\u989C\u8272\uFF0C\u6BD4\u5982\u5FAE\u4FE1\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u7EFF\u8272\u7CFB\uFF0CQQ\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u84DD\u8272\u7CFB\uFF0C\u5FAE\u535A\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u7EA2\u8272\u7CFB\uFF0C\u652F\u4ED8\u5B9D\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u6D45\u84DD\u8272\u7CFB\u7B49\u7B49\n- \u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528 emoji \u8868\u60C5\u7B26\u53F7\uFF0C\u4E0D\u5F97\u4F7F\u7528\u4EFB\u4F55 emoji \u8868\u60C5\u7B26\u53F7\uFF0C\u8BF7\u4F7F\u7528FontAwesome\u5B57\u4F53\u56FE\u6807\u6765\u4EE3\u66FF\u3002\n- LOGO\u56FE\u7247\u548C\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u5FC5\u987B\u4F7F\u7528`doc/res/svgMap.json`\u6587\u4EF6\u4E2Djson\u5BF9\u8C61\u6B63\u786E\u5B57\u6BB5\u7684https\u94FE\u63A5\u503C\uFF0C\u7981\u6B62\u4F7F\u7528\u672C\u5730\u56FE\u7247\u8DEF\u5F84`doc/res/logo.svg`\u6587\u4EF6\uFF0C\u800C\u662F\u4F7F\u7528\u7C7B\u4F3C\uFF1A`https://editor.bytefungo.com/dfile/img/xxxxx.svg`\u8FD9\u6837\u7684\u56FE\u7247\u94FE\u63A5\u5730\u5740\uFF0C\u6BD4\u5982\u95EA\u5C4F\u9875\u3001\u767B\u5F55\u9875\u3001\u6CE8\u518C\u9875\u7528\u5230\u7684LOGO\u56FE\u7247\uFF0C\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u7B49\u3002\n- jpg\u3001jpeg\u7C7B\u578B\u56FE\u7247\u5FC5\u987B\u4F7F\u7528\u56FE\u7247\u5730\u5740\uFF1A`https://oss.bytefungo.com/f1/showImg1.jpg`)\uFF0C\u5176\u4E2D\u7ED3\u5C3E\u7684\u2019showImg1'\u53EF\u4EE5\u6362\u4E3A\u4ECE 1 \u5230 30 \u7684\u6570\u5B57\uFF0C1~30 \u7684\u6570\u5B57\u5FC5\u987B\u968F\u673A\u6311\u9009\uFF0C\u4E0D\u5F97\u6BCF\u4E2A\u9875\u9762\u6BCF\u4E2A\u56FE\u7247\u90FD\u4F7F\u7528\u540C\u4E00\u4E2A\u6570\u5B57\u3002\u5199\u6CD5\u6BD4\u5982\uFF1A`<img src=\"https://oss.bytefungo.com/f1/showImg17.jpg\" alt=\"xxx\" class=\"xxx\" nodeType=\"image\">`\n\n## \u516D\u3001\u9996\u9875\u4E3B\u4F53\u9875\u4E0E\u5B50\u9875\u9762\u7684\u89C4\u5219\n- \u9996\u9875\u4E3B\u4F53\u9875\u5D4C\u5957\u4E86\u591A\u4E2A\u5B50\u9875\u9762\uFF0C\u6BCF\u4E00\u4E2A\u5B50\u9875\u9762\u90FD\u4E0D\u9700\u8981\u586B\u5145\u5185\u5BB9\uFF0C\u7A7A\u767D\u5C31\u884C\uFF0C\u540E\u9762\u4F1A\u6709\u4E13\u95E8\u7684\u4EFB\u52A1\u6765\u8BBE\u8BA1\u5177\u4F53\u7684\u5B50\u9875\u9762\u3002\n- \u4EFB\u4F55\u5B50\u9875\u9762\u90FD\u5FC5\u987B\u7981\u6B62\u6DFB\u52A0\u5E95\u90E8\u5BFC\u822A\u680F\u8282\u70B9\u5230\u9875\u9762\uFF0C\u56E0\u4E3A\u5B50\u9875\u9762\u662F\u5D4C\u5957\u5728\u9996\u9875\u4E3B\u4F53\u9875\u4E2D\u7684\uFF0C\u7236\u9875\u9762\u5DF2\u7ECF\u6709\u5E95\u90E8\u5BFC\u822A\u680F\u4E86\uFF0C\u5B50\u9875\u9762\u4E0D\u9700\u8981\u518D\u6DFB\u52A0\u5E95\u90E8\u5BFC\u822A\u680F\uFF0C\u4E5F\u4E0D\u5F97\u6DFB\u52A0\u4E8C\u7EA7\u9875\u9762\u7684\u6807\u9898\u680F\u5230\u5B50\u9875\u9762\u4E2D\uFF0C\u56E0\u4E3A\u5B50\u9875\u9762\u662F\u5D4C\u5957\u5728\u9996\u9875\u4E3B\u4F53\u9875\u4E2D\u7684\uFF0C\u9996\u9875\u4E3B\u4F53\u9875\u548C\u5B83\u7684\u5B50\u9875\u9762\u90FD\u662F\u4E00\u7EA7\u9875\u9762\uFF0C\u56E0\u6B64\u4E0D\u5F97\u6DFB\u52A0\u4E8C\u7EA7\u9875\u9762\u7684\u6807\u9898\u680F\u5230\u5B50\u9875\u9762\u4E2D\u3002\n\n## \u4E03\u3001\u5982\u679C\u7528\u6237\u6CA1\u6709\u660E\u786E\u8BF4\u660E\u8BE5\u9875\u9762\u8BBE\u8BA1\u9700\u6C42\uFF0C\u90A3\u5C31\u6309\u7167\u4EE5\u4E0B\u9875\u9762\u9ED8\u8BA4\u89C4\u5219\u8BBE\u8BA1\n- \u95EA\u5C4F\u9875\uFF1A\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- \u5F15\u5BFC\u9875\uFF1A\u5C3D\u91CF\u4E0D\u4F7F\u7528\u5168\u5C4F\u56FE\u7247\uFF0C\u4E00\u822C\u6BCF\u4E00\u9875\u5F15\u5BFC\u9875\u80CC\u666F\u8272\u4E5F\u53EF\u4EE5\u6E10\u53D8\uFF0C\u7136\u540E\u6BCF\u4E00\u9875\u529F\u80FD\u8BF4\u660E\u4E00\u822C\u6709\u975E\u5168\u5C4F\u56FE\u7247\u3001\u6807\u9898\u3001\u526F\u6807\u9898\u7B49\u7B49\uFF0C\u4F60\u53EF\u4EE5\u5E26\u5165\u5176\u4ED6\u5143\u7D20\uFF0C\u8BA9\u9875\u9762\u66F4\u52A0\u7F8E\u89C2\uFF0C\u5E76\u4E14\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u9700\u8981\u81EA\u5DF1\u7ED8\u5236svg\u56FE\u7247\uFF0C\u5E76\u5B58\u653E\u5728`doc/res`\u6587\u4EF6\u5939\u4E0B\u9762\uFF0C\u5E76\u5728html\u4E2D\u4F7F\u7528\n- \u80CC\u666F\u8272\u4E3A\u4E86\u589E\u5F3A\u5C42\u6B21\u611F\uFF0C\u6DFB\u52A0\u7684\u68A6\u5E7B\u6CE1\u6CE1\u6216\u8005\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u5143\u7D20\u7684div\uFF0C\u5FC5\u987B\u53EA\u80FD\u58F0\u660E\u4E3A`circle`\uFF0C\u5E76\u4E14\u4E00\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\uFF0C\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Abackground: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);\uFF0C\u5982\u679C\u9700\u8981\u591A\u4E2A`radial-gradient`\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u6BCF\u4E2A\u5F84\u5411\u6E10\u53D8\u80CC\u666F\u90FD\u5FC5\u987B\u58F0\u660E\u4E3A\u4E00\u4E2Adiv\u8282\u70B9\uFF0C\u6BCF\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\u3002\n";
|
|
2
2
|
//# sourceMappingURL=uiDesign.d.ts.map
|
package/build/uiDesign.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiDesign.d.ts","sourceRoot":"","sources":["../src/uiDesign.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"uiDesign.d.ts","sourceRoot":"","sources":["../src/uiDesign.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,whnBA4GlC,CAAA"}
|
package/build/uiDesign.js
CHANGED
|
@@ -73,6 +73,7 @@ export const uiDesignPromptTemplate = `# UI设计规则,特别注意必须使
|
|
|
73
73
|
- 单选:\`radioGroup\`、\`radio\`
|
|
74
74
|
- 多选:\`checkBoxGroup\`、\`checkBox\`
|
|
75
75
|
- 顶部导航栏:\`titleBar\`、\`topNavigateBar\`
|
|
76
|
+
- 底部操作栏:\`bottomOperateBar\`
|
|
76
77
|
- 多状态容器:\`multiStateContainer\`, \`oneStateContentContainer\`
|
|
77
78
|
- 列表:\`verticalListView\`, \`horizontalListView\`, \`listItemCard\`、\`listFooterContainer\`
|
|
78
79
|
- 轮播:\`viewPager\`, \`viewPagerItem\`, \`viewPagerIndicatorContainer\`
|
|
@@ -106,4 +107,4 @@ export const uiDesignPromptTemplate = `# UI设计规则,特别注意必须使
|
|
|
106
107
|
- 引导页:尽量不使用全屏图片,一般每一页引导页背景色也可以渐变,然后每一页功能说明一般有非全屏图片、标题、副标题等等,你可以带入其他元素,让页面更加美观,并且引导页的引导图片需要自己绘制svg图片,并存放在\`doc/res\`文件夹下面,并在html中使用
|
|
107
108
|
- 背景色为了增强层次感,添加的梦幻泡泡或者圆形径向渐变元素的div,必须只能声明为\`circle\`,并且一个div的\`background:\`只能声明一个\`radial-gradient\`,比如正确的写法:background: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);,如果需要多个\`radial-gradient\`径向渐变背景,每个径向渐变背景都必须声明为一个div节点,每个div的\`background:\`只能声明一个\`radial-gradient\`。
|
|
108
109
|
`;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdWlEZXNpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMkdyQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyBVSeiuvuiuoeinhOWIme+8jOeJueWIq+azqOaEj+W/hemhu+S9v+eUqFVJ6KeE6IyDXFxgLmJ5dGVmdW4vVUnorr7orqHop4TojIMubWRcXGDph4zpnaLpu5jorqTnmoTkuLvpopjnmq7ogqTmnaXorr7orqHvvIzkuI3lvpfkvb/nlKjlhbbku5bkuLvpopjnmq7ogqTjgIJcblxuIyMg5LiA44CB56aB5q2i55qE5LqL5oOFXG4tIOemgeatouS9v+eUqOS7u+S9leWJjeerr+ahhuaetu+8jOWPquS9v+eUqCBodG1sK+exu+mAieaLqeWZqOagt+W8jytqcyDmnaXlrp7njrDjgIJcbi0g56aB5q2i5L2/55SoanPku6PnoIHmnaXmi7zmjqVodG1s5a2X56ym5Liy77yM5b+F6aG75ZyoYm9keeagh+etvumHjOmdouebtOaOpeWGmWh0bWzku6PnoIHjgIJcbi0g56aB5q2i5L2/55SoanPku6PnoIHmnaXlo7DmmI7ku7vkvZXpobXpnaLmmL7npLrmiYDpnIDnmoTmlbDmja7vvIzmiYDmnInmlbDmja7pg73lv4XpobvlnKhodG1s5Luj56CB5Lit55u05o6l5YaZ5q2744CCXG4tIOemgeatouS9v+eUqOaWh+acrOa4kOWPmOiJsu+8jOW/hemhu+S9v+eUqOe6r+iJsuaWh+acrO+8jOS5n+WwseaYr+emgeatouS9v+eUqFxcYC13ZWJraXQtdGV4dC1maWxsLWNvbG9yXFxg5bGe5oCn44CCXG4tIOemgeatoue7memhtemdoua3u+WKoFxcYOaJi+acuumhtumDqOeKtuaAgeagj1xcYOOAgVxcYOaJi+acuuW6lemDqOaMh+ekuuWZqOagj1xcYOS4pOS4qumdnumhtemdouWGheWuueeahOWFg+e0oOiKgueCue+8jOi/meaYr+aJi+acuuehrOS7tuiHquW4pueahOWFg+e0oO+8jOS4jeiDveWcqOmhtemdouS4rea3u+WKoOOAglxuLSDnpoHmraLkvb/nlKhcXGA6YmVmb3JlXFxg44CBXFxgOmFmdGVyXFxg5Lyq5YWD57Sg77yM5b+F6aG75L2/55So5YW25LuW5qCH562+5p2l5a6e546w44CCXG4tIGxvYWRpbmfoioLngrnnmoTlrp7njrDnpoHmraLkvb/nlKhkaXbmoIfnrb7kuI7ovrnmoYblsZ7mgKflrp7njrDvvIzlv4Xpobvkvb/nlKjlm77moIdpY29u55qEaeagh+etvuadpeWunueOsGxvYWRpbmfnmoToioLngrlcbi0g56aB5q2i5Li6aHRtbOagh+etvuiKgueCuea3u+WKoOWKqOeUu+aIlui/h+a4oeaViOaenO+8jOmhtemdouiuvuiuoeS4jemcgOimgeS7u+S9leWKqOeUu+WSjOi/h+a4oeaViOaenO+8jOavlOWmguemgeatou+8mkBrZXlmcmFtZXPjgIF0cmFuc2l0aW9u44CBYW5pbWF0aW9uIOetieOAglxuLSDmjInpkq7jgIHljaHniYfjgIFpdGVt6aG5562J5YWD57Sg5b+F6aG76KaB5pyJaG92ZXLkuI7ngrnlh7vlj43ppojvvIzngrnlh7vlj43ppojlv4Xpobvkvb/nlKjmtYXoibLnmoTog4zmma/oibJiYWNrZ3JvdW5k5p2l5Y+N6aaI5bCx6KGM77yM5Lil56aB5L2/55SodHJhbnNmb3Jt5pWI5p6cXG4gICAgLSDinYwg6ZSZ6K+v55qE55So5rOV77yaIFxuICAgIFxcYFxcYFxcYCBjc3NcbiAgICAuaG90LXNhbGVzLWl0ZW06aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLi4ucHgpO1xuICAgIH1cbiAgICBcXGBcXGBcXGBcbiAgICAtIOKchSDmraPnoa7nmoTnlKjms5XvvJpcbiAgICBcXGBcXGBcXGAgY3NzXG4gICAgLmhvdC1zYWxlcy1pdGVtOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogLi4uO1xuICAgIH1cbiAgICBcXGBcXGBcXGBcbi0g56aB5q2i5L2/55SoZGl25qCH562+5p2l5a6e546waW1hZ2Xlm77niYfvvIzlv4XpobvopoHkvb/nlKhpbWfmoIfnrb7mnaXlrp7njrDlm77niYfoioLngrnvvIxpbWfmoIfnrb7nmoRzcmPlsZ7mgKflv4Xpobvorr7nva7kuLrvvJpcXGBodHRwczovL29zcy5ieXRlZnVuZ28uY29tL2YxL3Nob3dJbWcxLmpwZ1xcYO+8jOWFtuS4remHjOmdoueahFxcYHNob3dJbWcxXFxg5Y+v5Lul5pS55Li6MX4zMOeahOS7u+aEj+S4gOS4quaVsOWtl++8jOavlOWmgu+8mlxcYHNob3dJbWc1XFxg44CCXG4gIC0g4p2M6ZSZ6K+v55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgIGh0bWxcbiAgICA8ZGl2IGNsYXNzPVwiYmVzdHNlbGxlci1jb3ZlclwiIGlkPVwiYmVzdHNlbGxlckNvdmVyMVwiIG5hbWU9XCLnlYXplIDkuabnsY3lsIHpnaIxXCIgbm9kZVR5cGU9XCJpbWFnZVwiPlxuICAgIDwvZGl2PlxuICAgIFxcYFxcYFxcYFxuICAtIOKchSDmraPnoa7nmoTlhpnms5XvvJpcbiAgICBcXGBcXGBcXGAgaHRtbFxuICAgIDxpbWcgY2xhc3M9XCJiZXN0c2VsbGVyLWNvdmVyXCIgaWQ9XCJiZXN0c2VsbGVyQ292ZXIxXCIgbmFtZT1cIueVhemUgOS5puexjeWwgemdojFcIiBub2RlVHlwZT1cImltYWdlXCIgc3JjPVwiaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nNy5qcGdcIj4gIFxuICAgIFxcYFxcYFxcYFxuXG4jIyDkuozjgIHmoLflvI/op4TliJlcbi0g5qC35byP5Luj56CB5b+F6aG75L2/55So57G76YCJ5oup5Zmo5qC35byPQ2xhc3MtYmFzZWQgU3R5bGUgLyBDbGFzcyBTZWxlY3RvciBTdHlsZeaWueW8j++8jOS4jeW+l+S9v+eUqOihjOWGheagt+W8j0lubGluZSBTdHlsZeaIluWklumDqOaWh+S7tuOAglxuLSDpgbXlvqrmiYvmnLrlsLrlr7jop4TmoLwo5a695bqmIDM5M3B4IOmrmOW6piA4MDhweClcbi0g6aaW6aG1L+aOqOiNkHRhYueahOWIhuexuy/lip/og73lkITkuKrlhaXlj6PnmoTlm77moIfkuIDoiKzpnIDopoHkvb/nlKjkuI3kuIDmoLfnmoTpopzoibLvvIzlvojlsJHkvJrnu5/kuIDlhajpg6jkvb/nlKjlk4HniYzkuLvpopjoibJcbi0g5omA5pyJcmFkaW/jgIFjaGVja0JveOmDveW/hemhu+S9v+eUqGnmoIfnrb7orr7nva5Gb250QXdlc29tZeWbvuagh+adpeWunueOsO+8jOS4jeW+l+S9v+eUqOezu+e7n+eahGlucHV05qCH562+5a6e546w44CCXG4tIOWmgueUqOaIt+ayoeacieaYjuehruaPj+i/sOivtOaYjumhtemdouiDjOaZr+iJsu+8jOWPquaciemXquWxj+mhtemdoueahOiDjOaZr+iJsuWFgeiuuOiuvue9ruWTgeeJjOS4u+iJsuaIluWTgeeJjOS4u+iJsuS4juWTgeeJjOasoeiJsueahOa4kOWPmOiJsu+8jOWFtuS7lumhtemdouW/hemhu+S9v+eUqOmdniDlk4HniYzkuLvoibIg5LiO6Z2eIOWTgeeJjOasoeiJsiDnmoTnuq/oibLlgZrpobXpnaLog4zmma/oibLvvIzmr5TlpoLkuIDoiKzkvb/nlKjnmb3oibLns7vvvIzlpoLmnpzmmK/mmpfpu5Hpo47pgqPlsLHmmK/pu5HoibLns7vjgIJcbi0g6L6T5YWl5qGGXFxgaW5wdXRcXGDlpoLmnpzpnIDopoHlsZXnpLrmloflrZcgbGFiZWzvvIzlsL3ph4/kvb/nlKggaWNvbiDku6Pmm7/mloflrZcgbGFiZWzvvIzlubbkuJQgaWNvbiDph43lj6DlnKjovpPlhaXmoYbnmoTlt6bkvqfvvIzov5nmoLfmlbTkuKrpobXpnaLnmoTnqbrpl7TliKnnlKjnjofpq5jjgIJcbi0g5aaC5p6c5Li76aKY6aOO5qC85piv5pqX6buR6aOO5qC855qE6K+d77yM6buY6K6k5Y+v5Lul57uZ5q+P5Liq6aG16Z2i5re75Yqg5aSa5Liq546755KD5pWI5p6c55qE5ZyG5b2i5b6E5ZCR5riQ5Y+Y6IOM5pmv77yM57G75Ly86L+Z5qC377yaXFxgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSgwLCAyNDIsIDI1NSwgMC4xKSAwJSwgcmdiYSgwLCAwLCAwLCAwKSA3MCUpO1xcYO+8jOmHjOmdoueahOminOiJsuWSjOa4kOWPmOiMg+WbtOWPr+S7peagueaNruWunumZheaDheWGteiwg+aVtOOAglxuLSDog4zmma/oibLkuLrkuoblop7lvLrlsYLmrKHmhJ/vvIzmt7vliqDnmoTmoqblubvms6Hms6HmiJbogIXlnIblvaLlvoTlkJHmuJDlj5jlhYPntKDnmoRkaXbvvIzlv4Xpobvlj6rog73lo7DmmI7kuLpcXGBjaXJjbGVcXGDvvIzlubbkuJTkuIDkuKpkaXbnmoRcXGBiYWNrZ3JvdW5kOlxcYOWPquiDveWjsOaYjuS4gOS4qlxcYHJhZGlhbC1ncmFkaWVudFxcYO+8jOavlOWmguato+ehrueahOWGmeazle+8mmJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMCwgMjI5LCAyNTUsIDAuMTUpIDAlLCByZ2JhKDAsIDAsIDAsIDApIDcwJSk777yM5aaC5p6c6ZyA6KaB5aSa5LiqXFxgcmFkaWFsLWdyYWRpZW50XFxg5b6E5ZCR5riQ5Y+Y6IOM5pmv77yM5q+P5Liq5b6E5ZCR5riQ5Y+Y6IOM5pmv6YO95b+F6aG75aOw5piO5Li65LiA5LiqZGl26IqC54K577yM5q+P5LiqZGl255qEXFxgYmFja2dyb3VuZDpcXGDlj6rog73lo7DmmI7kuIDkuKpcXGByYWRpYWwtZ3JhZGllbnRcXGDjgIJcbi0g5oyJ6ZKu44CB5Y2h54mH44CBaXRlbemhueetieWFg+e0oOW/hemhu+imgeacieS4gOS4qmhvdmVy5ZCO5pS55Y+Y6IOM5pmv6Imy55qE5Y+N6aaI5pWI5p6c77yM5LiN6IO95L2/55SodHJhbnNmb3Jt5pWI5p6c77yM5Y+q6IO95L2/55So6IOM5pmv6Imy5pWI5p6c44CCXG5cbiMjIOS4ieOAgeW/hemhu+e7meavj+S4gOS4quiKgueCuea3u+WKoGlk44CBbmFtZeOAgW5vZGVUeXBl5bGe5oCnXG4tIOeJueWIq+azqOaEj++8jFxcYGlcXGDlkoxcXGBkaXZcXGDnrYnmoIfnrb7kuZ/lv4Xpobvmt7vliqAgaWTjgIFuYW1l44CBbm9kZVR5cGUg5bGe5oCn77yM5q+P5LiA5Liq6IqC54K56YO96ZyA6KaB5re75Yqg6L+Z5LiJ5Liq5bGe5oCn77yM5Y2D5LiH5Yir5ryP5o6J5LqG77yM6L+Z5piv5b+F6KaB5p2h5Lu2XG4tIGlkIOWxnuaAp+W/hemhu+WPquiDveS9v+eUqOiLseaWh+aIluaVsOWtl+e7hOaIkO+8jOS4lOS4jeiDveS7peaVsOWtl+W8gOWktO+8jOW5tuS4lOaVtOS4qumhtemdoiBpZCDlsZ7mgKfnmoTlgLzlv4XpobvllK/kuIDvvIzkvb/nlKjpqbzls7DnmoTlkb3lkI3mlrnlvI9cbi0gbmFtZSDlsZ7mgKflv4XpobvmmK/kuK3mlofmiJbmlbDlrZfvvIzlubbkuJTkuI3og73ljIXlkKvnibnmrorlrZfnrKZcbi0g5aaC5p6c5piv6YCa6L+H54K55Ye7aXRlbemhueWIh+aNouWxleekuuWGheWuueeahO+8jOmCo+S5iGl0ZW3pobnnmoRub2RlVHlwZeW/hemhu+aYr1xcYHRhYk1lbnVCYXJJdGVtXFxg77yMdGFiIHBhbmVs55qEbm9kZVR5cGXlv4XpobvmmK9cXGB0YWJQYW5lbFxcYO+8jFxcYHRhYk1lbnVCYXJJdGVtXFxg55qE54i25Lqy5a655Zmo5pivXFxgdGFiTWVudUJhclxcYO+8jOS4jeW+l+S9v+eUqFxcYGhvcml6b250YWxMaXN0Vmlld1xcYOadpeS7o+abv1xcYHRhYk1lbnVCYXJcXGBcbi0g6aG16Z2i55qEaGVhZGVy5qCH6aKY5qCPbm9kZVR5cGXlv4XpobvmmK9cXGB0aXRsZUJhclxcYOaIluiAhVxcYHRvcE5hdmlnYXRlQmFyXFxg77yM6ICM5LiN5pivXFxgY29udGFpbmVyXFxgXG4tIG5vZGVUeXBlIOWxnuaAp+eahOWAvOW/hemhu+aYr1xcYOe7hOS7tuexu+Wei+aemuS4viAobm9kZVR5cGUp5p6a5Li+XFxgIOS4reeahOS4gOS4qu+8jOS4gOS6m+W4g+WxgOWuueWZqOmcgOimgemBteWuiOS7peS4i+ivtOaYjuadpemAieaLqeato+ehrueahG5vZGVUeXBl77yaXG4gIC0g5YiX6KGo5a655Zmo77yaXFxgdmVydGljYWxMaXN0Vmlld1xcYOOAgVxcYGhvcml6b250YWxMaXN0Vmlld1xcYOOAgVxcYGxpc3RJdGVtQ2FyZFxcYO+8jOeUqOS6juW4g+WxgOWkmuS4quWIl+ihqOmhue+8jOavlOWmgu+8muWVhuWTgeWIl+ihqOOAgeWIhuexu+WIl+ihqOOAgeagh+etvuWIl+ihqOetie+8jOWPr+S7peaUr+aMgeWkmuihjOWkmuWIl+eahOWIl+ihqOW4g+WxgFxuICAtIOWIl+ihqOmhteiEmuWuueWZqO+8mlxcYGxpc3RGb290ZXJDb250YWluZXJcXGDvvIznlKjkuo7luIPlsYDliJfooajnmoTpobXohJrvvIzmr5TlpoLvvJrliqDovb3mm7TlpJrjgIHmsqHmnInmm7TlpJrkuobnrYlcbiAgLSDnvZHmoLzlrrnlmajvvJpncmlkQ29udGFpbmVy55So5LqO5biD5bGA5aSa5Liq572R5qC86aG577yM6YeM6Z2i5YyF5ZCrTuS4qmdyaWRJdGVt77yM5q+U5aaC77ya5YiG57G7572R5qC85YWl5Y+jXG4gIC0g5rWB5byP5a655Zmo77ya55So5LqO5biD5bGA5aSa5Liq5a2Q6aG577yM5a2Q6aG55Y+v5Lul5Zyo5LiA6KGM5pi+56S677yM5b2T5L2N572u5LiN5aSf5pe25bCx5o2i6KGM5pi+56S677yM5q+U5aaC77ya5LiA57uE5qCH562+dGFn55qE5o6S54mI5biD5bGAXG4gIC0g5aSa54q25oCB5a655Zmo77yaXFxgbXVsdGlTdGF0ZUNvbnRhaW5lclxcYCwgXFxgb25lU3RhdGVDb250ZW50Q29udGFpbmVyXFxg77yM55So5LqO5LiN5piv6YCa6L+H5Lqk5LqS77yM6ICM5piv6YCa6L+H6YC76L6R54q25oCB5Y+Y6YeP5Y+Y5YyW6ICM5pi+56S65LiN5ZCM54q25oCB55qE5YaF5a655a655Zmo77yM5q+U5aaC77ya55m75b2V54q25oCB5ZKM5pyq55m75b2V54q25oCB5YiG5Yir5pi+56S65LiN5ZCM55qE5YaF5a6544CCXG4tIOmrmOe6p+e7hOS7tuiKgueCueeahG5vZGVUeXBl57uT5p6E6KeE5YiZ77yaXG4gIC0gdGFiIOmAiemhueWNoe+8mlxcYHRhYk1lbnVCYXJcXGDmmK90YWLpgInpobnljaHoj5zljZXmoI/vvIzph4zpnaLljIXlkKtO5LiqXFxgdGFiTWVudUJhckl0ZW1cXGDvvIxcXGB0YWJQYW5lbEZhdGhlclxcYOaYr3RhYumAiemhueWNoeWGheWuueWuueWZqO+8jOmHjOmdouWMheWQq07kuKpcXGB0YWJQYW5lbFxcYO+8jFxcYHRhYk1lbnVCYXJcXGDlkoxcXGB0YWJQYW5lbEZhdGhlclxcYOW/hemhu+WQjOaXtuWtmOWcqO+8jFxcYHRhYlBhbmVsXFxg55qE5pWw6YeP5b+F6aG75ZKMXFxgdGFiTWVudUJhckl0ZW1cXGDnmoTmlbDph4/nm7jlkIxcbiAgLSB2aWV3UGFnZXIg6L2u5pKt77yaXFxgdmlld1BhZ2VyXFxg5piv6L2u5pKt5a655Zmo77yM6YeM6Z2i5YyF5ZCrTuS4qlxcYHZpZXdQYWdlckl0ZW1cXGDvvIxcXGB2aWV3UGFnZXJJbmRpY2F0b3JDb250YWluZXJcXGDmmK/ova7mkq3mjIfnpLrlmajlrrnlmajvvIxcXGB2aWV3UGFnZXJcXGDkuI5cXGB2aWV3UGFnZXJJbmRpY2F0b3JDb250YWluZXJcXGDlv4XpobvlkIzml7blrZjlnKhcbiAgLSDkuIDooYzkuI3lpJ/kvY3nva7mmL7npLrlsLHmjaLooYznmoTlrrnlmajvvJpcXGBpbmxpbmVCbG9ja0FuZFdyYXBcXGDvvIzph4zpnaLljIXlkKtO5LiqXFxgYmxvY2tJdGVtXFxg77yMXFxgYmxvY2tJdGVtXFxg5piv5a6D55qE5a2Q6aG5XG4gIC0g5aSa54q25oCB5a655Zmo77ya5LiA5LiqXFxgbXVsdGlTdGF0ZUNvbnRhaW5lclxcYOWkmueKtuaAgeWuueWZqOWMheWQq+WkmuS4qlxcYG9uZVN0YXRlQ29udGVudENvbnRhaW5lclxcYFxuXG4tIOe7hOS7tuexu+Wei+aemuS4viAobm9kZVR5cGUp5p6a5Li+77yaXG5cbiAgLSDlvaLnirbvvJpcXGByZWN0XFxgLCBcXGBjaXJjbGVcXGAsIFxcYGxpbmVcXGBcbiAgLSDln7rnoYDnu4Tku7bvvJpcXGB0ZXh0XFxg44CBXFxgYnV0dG9uXFxg44CBXFxgaW5wdXRcXGDjgIFcXGBpY29uXFxg44CBXFxgaW1hZ2VcXGBcbiAgLSDln7rnoYDlrrnlmajvvJpcXGBjb250YWluZXJcXGBcbiAgLSDnvZHmoLzlrrnlmajvvJpcXGBncmlkQ29udGFpbmVyXFxg44CBXFxgZ3JpZEl0ZW1cXGBcbiAgLSDmtYHlvI/lrrnlmajvvJpcXGBpbmxpbmVCbG9ja0FuZFdyYXBcXGDjgIFcXGBibG9ja0l0ZW1cXGBcbiAgLSDlvIDlhbPvvJpcXGBzd2l0Y2hcXGBcbiAgLSDljZXpgInvvJpcXGByYWRpb0dyb3VwXFxg44CBXFxgcmFkaW9cXGBcbiAgLSDlpJrpgInvvJpcXGBjaGVja0JveEdyb3VwXFxg44CBXFxgY2hlY2tCb3hcXGBcbiAgLSDpobbpg6jlr7zoiKrmoI/vvJpcXGB0aXRsZUJhclxcYOOAgVxcYHRvcE5hdmlnYXRlQmFyXFxgXG4gIC0g5aSa54q25oCB5a655Zmo77yaXFxgbXVsdGlTdGF0ZUNvbnRhaW5lclxcYCwgXFxgb25lU3RhdGVDb250ZW50Q29udGFpbmVyXFxgXG4gIC0g5YiX6KGo77yaXFxgdmVydGljYWxMaXN0Vmlld1xcYCwgXFxgaG9yaXpvbnRhbExpc3RWaWV3XFxgLCBcXGBsaXN0SXRlbUNhcmRcXGDjgIFcXGBsaXN0Rm9vdGVyQ29udGFpbmVyXFxgXG4gIC0g6L2u5pKt77yaXFxgdmlld1BhZ2VyXFxgLCBcXGB2aWV3UGFnZXJJdGVtXFxgLCBcXGB2aWV3UGFnZXJJbmRpY2F0b3JDb250YWluZXJcXGBcbiAgLSB0YWIg6YCJ6aG55Y2h77yaXFxgdGFiUGFuZWxGYXRoZXJcXGAsIFxcYHRhYlBhbmVsXFxgLCBcXGB0YWJNZW51QmFyXFxgLCBcXGB0YWJNZW51QmFySXRlbVxcYFxuICAtIOW6lemDqOWvvOiIqjogXFxgYm90dG9tVGFiQ29udGVudENvbnRhaW5lclxcYCwgXFxgc3ViUGFnZVxcYCwgXFxgYm90dG9tVGFiTmF2aWdhdGVCYXJcXGAsIFxcYGJvdHRvbVRhYk5hdmlnYXRlQmFySXRlbVxcYFxuICAtIOWvueivneahhu+8mlxcYGRpYWxvZ092ZXJsYXlcXGAsIFxcYGRpYWxvZ0NvbnRlbnRcXGBcbiAgLSB0b2FzdCDmj5DnpLrvvJpcXGB0b2FzdFxcYFxuICAtIOS4i+aLieiPnOWNle+8mlxcYGRyb3BEb3duTWVudVxcYFxuICAtIOS+p+a7kemdouadv++8mlxcYHNpZGVTbGlkZVBhbmVsXFxgXG4gIC0g5omL5py656Gs5Lu25YWD57Sg77yaXFxgcGhvbmVUb3BTdGF0dXNCYXJcXGDjgIFcXGBwaG9uZUJvdHRvbUluZGljYXRvckJhclxcYO+8jOi/meS4pOS4quWFg+e0oOaYr+aJi+acuuehrOS7tuiHquW4pueahOWFg+e0oO+8jOS4jeiDveWcqOmhtemdouS4rea3u+WKoOOAglxuXG4jIyDlm5vjgIHova7mkq3kuI5UYWJz57uE5Lu255qE6KeE5YiZXG4tIOi9ruaSreeahOavj+S4gOS4qlNsaWRl5ZKMVGFic+mAiemhueWNoee7hOS7tuavj+S4gOS4qlRhYiBQYW5lbOmDveW/hemhu+S9v+eUqFxcYGRpc3BsYXk6IG5vbmVcXGDlkoxcXGBkaXNwbGF5OiBibG9jay9mbGV4XFxg5p2l5a6e546w6ZqQ6JeP5ZKM5pi+56S655qE5LqS5pal5YiH5o2iXG4tIOi9ruaSreeahOavj+S4gOS4qlNsaWRl5b+F6aG75pyJaHRtbOS7o+eggeWunueOsO+8jOS4jeW+l+WPquWGmeesrDHkuKpTbGlkZeeahGh0bWzku6PnoIHvvIzlhbbku5ZTbGlkZeeahGh0bWzku6PnoIHkuZ/lv4XpobvopoHlhpnjgIJcbi0gVGFic+mAiemhueWNoee7hOS7tumcgOimgea3u+WKoOeCueWHu+WIh+aNolRhYiBQYW5lbOeahOWKn+iDve+8jOS4jeW+l+WPquWGmeesrDHkuKpUYWIgUGFuZWznmoRodG1s5Luj56CB77yM5YW25LuWVGFiIFBhbmVs55qEaHRtbOS7o+eggeS5n+W/hemhu+imgeWGmeOAglxuLSBUYWJz6YCJ6aG55Y2h57uE5Lu25q+P5LiA5LiqVGFiIFBhbmVs6YO95b+F6aG76KaB5pyJ5YaF5a6577yM5LiN5b6X5pW36KGN5Zyw5bGV56S65rKh5pyJ5pWw5o2u44CB6IGU572R5aSx6LSl44CBbG9hZGluZ+eahOaDheWGte+8jOW/hemhu+WxleekuuacieaVsOaNrueahOWFt+S9k+WGheWuue+8jOe7neWvueS4jeiDveWBt+aHkuaVt+ihjeOAglxuLSBUYWJz6YCJ6aG55Y2h57uE5Lu25q+P5LiA5LiqVGFiIFBhbmVs6YO95b+F6aG76KaB5pyJaHRtbOS7o+eggeWunueOsO+8jOS4jeW+l+WPquWGmeesrDHkuKpUYWIgUGFuZWznmoRodG1s5Luj56CB77yM5YW25LuWVGFiIFBhbmVs55qEaHRtbOS7o+eggeS5n+W/hemhu+imgeWGmeOAglxuXG4jIyDkupTjgIHlm77moIfkuI7lm77niYfnmoTop4TliJlcbi0g5b2T6ZyA6KaBaWNvbuWbvuagh+aXtuW/hemhu+S9v+eUqEZvbnRBd2Vzb21l5Zu+5qCH77yM5q+U5aaC77yaXFxgPGkgbmFtZT1cIuW+ruS/oUljb25cIiB2dHlwZT1cImljb25cIiBpZD1cInd4SWNvblwiIGNsYXNzPVwiZmFiIGZhLXdlaXhpblwiPjwvaT5cXGDvvIzlubbkuJTms6jmhI/lm77moIfnmoTpopzoibLvvIzmr5TlpoLlvq7kv6Hlm77moIfkuIDoiKzkvb/nlKjnu7/oibLns7vvvIxRUeWbvuagh+S4gOiIrOS9v+eUqOiTneiJsuezu++8jOW+ruWNmuWbvuagh+S4gOiIrOS9v+eUqOe6ouiJsuezu++8jOaUr+S7mOWuneWbvuagh+S4gOiIrOS9v+eUqOa1heiTneiJsuezu+etieetiVxuLSDnu53lr7nkuI3og73kvb/nlKggZW1vamkg6KGo5oOF56ym5Y+377yM5LiN5b6X5L2/55So5Lu75L2VIGVtb2ppIOihqOaDheespuWPt++8jOivt+S9v+eUqEZvbnRBd2Vzb21l5a2X5L2T5Zu+5qCH5p2l5Luj5pu/44CCXG4tIExPR0/lm77niYflkozlvJXlr7zpobXnmoTlvJXlr7zlm77niYflv4Xpobvkvb/nlKhcXGBkb2MvcmVzL3N2Z01hcC5qc29uXFxg5paH5Lu25LitanNvbuWvueixoeato+ehruWtl+auteeahGh0dHBz6ZO+5o6l5YC877yM56aB5q2i5L2/55So5pys5Zyw5Zu+54mH6Lev5b6EXFxgZG9jL3Jlcy9sb2dvLnN2Z1xcYOaWh+S7tu+8jOiAjOaYr+S9v+eUqOexu+S8vO+8mlxcYGh0dHBzOi8vZWRpdG9yLmJ5dGVmdW5nby5jb20vZGZpbGUvaW1nL3h4eHh4LnN2Z1xcYOi/meagt+eahOWbvueJh+mTvuaOpeWcsOWdgO+8jOavlOWmgumXquWxj+mhteOAgeeZu+W9lemhteOAgeazqOWGjOmhteeUqOWIsOeahExPR0/lm77niYfvvIzlvJXlr7zpobXnmoTlvJXlr7zlm77niYfnrYnjgIJcbi0ganBn44CBanBlZ+exu+Wei+WbvueJh+W/hemhu+S9v+eUqOWbvueJh+WcsOWdgO+8mlxcYGh0dHBzOi8vb3NzLmJ5dGVmdW5nby5jb20vZjEvc2hvd0ltZzEuanBnXFxgKe+8jOWFtuS4ree7k+WwvueahOKAmXNob3dJbWcxJ+WPr+S7peaNouS4uuS7jiAxIOWIsCAzMCDnmoTmlbDlrZfvvIwxfjMwIOeahOaVsOWtl+W/hemhu+maj+acuuaMkemAie+8jOS4jeW+l+avj+S4qumhtemdouavj+S4quWbvueJh+mDveS9v+eUqOWQjOS4gOS4quaVsOWtl+OAguWGmeazleavlOWmgu+8mlxcYDxpbWcgc3JjPVwiaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nMTcuanBnXCIgYWx0PVwieHh4XCIgY2xhc3M9XCJ4eHhcIiBub2RlVHlwZT1cImltYWdlXCI+XFxgXG5cbiMjIOWFreOAgemmlumhteS4u+S9k+mhteS4juWtkOmhtemdoueahOinhOWImVxuLSDpppbpobXkuLvkvZPpobXltYzlpZfkuoblpJrkuKrlrZDpobXpnaLvvIzmr4/kuIDkuKrlrZDpobXpnaLpg73kuI3pnIDopoHloavlhYXlhoXlrrnvvIznqbrnmb3lsLHooYzvvIzlkI7pnaLkvJrmnInkuJPpl6jnmoTku7vliqHmnaXorr7orqHlhbfkvZPnmoTlrZDpobXpnaLjgIJcbi0g5Lu75L2V5a2Q6aG16Z2i6YO95b+F6aG756aB5q2i5re75Yqg5bqV6YOo5a+86Iiq5qCP6IqC54K55Yiw6aG16Z2i77yM5Zug5Li65a2Q6aG16Z2i5piv5bWM5aWX5Zyo6aaW6aG15Li75L2T6aG15Lit55qE77yM54i26aG16Z2i5bey57uP5pyJ5bqV6YOo5a+86Iiq5qCP5LqG77yM5a2Q6aG16Z2i5LiN6ZyA6KaB5YaN5re75Yqg5bqV6YOo5a+86Iiq5qCP77yM5Lmf5LiN5b6X5re75Yqg5LqM57qn6aG16Z2i55qE5qCH6aKY5qCP5Yiw5a2Q6aG16Z2i5Lit77yM5Zug5Li65a2Q6aG16Z2i5piv5bWM5aWX5Zyo6aaW6aG15Li75L2T6aG15Lit55qE77yM6aaW6aG15Li75L2T6aG15ZKM5a6D55qE5a2Q6aG16Z2i6YO95piv5LiA57qn6aG16Z2i77yM5Zug5q2k5LiN5b6X5re75Yqg5LqM57qn6aG16Z2i55qE5qCH6aKY5qCP5Yiw5a2Q6aG16Z2i5Lit44CCXG5cbiMjIOS4g+OAgeWmguaenOeUqOaIt+ayoeacieaYjuehruivtOaYjuivpemhtemdouiuvuiuoemcgOaxgu+8jOmCo+WwseaMieeFp+S7peS4i+mhtemdoum7mOiupOinhOWImeiuvuiuoVxuLSDpl6rlsY/pobXvvJrnpoHmraLkvb/nlKjlhajlsY/lm77niYfvvIzkuIDoiKzkvb/nlKjkuLvpopjnm7jlhbPnmoTmuJDlj5joibLvvIznhLblkI7luKbmnInkuIDkupvpop3lpJbnmoTog4zmma/lhYPntKDlop7lvLrnlYzpnaLlsYLmrKHmhJ/vvIzmr5TlpoLvvJrmoqblubvlnIblnIjms6Hms6HjgIHnjrvnkoPmlYjmnpznmoTlnIblvaLlvoTlkJHmuJDlj5jnrYnnrYnlhYPntKBcbi0g5byV5a+86aG177ya5bC96YeP5LiN5L2/55So5YWo5bGP5Zu+54mH77yM5LiA6Iis5q+P5LiA6aG15byV5a+86aG16IOM5pmv6Imy5Lmf5Y+v5Lul5riQ5Y+Y77yM54S25ZCO5q+P5LiA6aG15Yqf6IO96K+05piO5LiA6Iis5pyJ6Z2e5YWo5bGP5Zu+54mH44CB5qCH6aKY44CB5Ymv5qCH6aKY562J562J77yM5L2g5Y+v5Lul5bim5YWl5YW25LuW5YWD57Sg77yM6K6p6aG16Z2i5pu05Yqg576O6KeC77yM5bm25LiU5byV5a+86aG155qE5byV5a+85Zu+54mH6ZyA6KaB6Ieq5bex57uY5Yi2c3Zn5Zu+54mH77yM5bm25a2Y5pS+5ZyoXFxgZG9jL3Jlc1xcYOaWh+S7tuWkueS4i+mdou+8jOW5tuWcqGh0bWzkuK3kvb/nlKhcbi0g6IOM5pmv6Imy5Li65LqG5aKe5by65bGC5qyh5oSf77yM5re75Yqg55qE5qKm5bm75rOh5rOh5oiW6ICF5ZyG5b2i5b6E5ZCR5riQ5Y+Y5YWD57Sg55qEZGl277yM5b+F6aG75Y+q6IO95aOw5piO5Li6XFxgY2lyY2xlXFxg77yM5bm25LiU5LiA5LiqZGl255qEXFxgYmFja2dyb3VuZDpcXGDlj6rog73lo7DmmI7kuIDkuKpcXGByYWRpYWwtZ3JhZGllbnRcXGDvvIzmr5TlpoLmraPnoa7nmoTlhpnms5XvvJpiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDAsIDIyOSwgMjU1LCAwLjE1KSAwJSwgcmdiYSgwLCAwLCAwLCAwKSA3MCUpO++8jOWmguaenOmcgOimgeWkmuS4qlxcYHJhZGlhbC1ncmFkaWVudFxcYOW+hOWQkea4kOWPmOiDjOaZr++8jOavj+S4quW+hOWQkea4kOWPmOiDjOaZr+mDveW/hemhu+WjsOaYjuS4uuS4gOS4qmRpduiKgueCue+8jOavj+S4qmRpdueahFxcYGJhY2tncm91bmQ6XFxg5Y+q6IO95aOw5piO5LiA5LiqXFxgcmFkaWFsLWdyYWRpZW50XFxg44CCXG5gIl19
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdWlEZXNpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTRHckMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB1aURlc2lnblByb21wdFRlbXBsYXRlID0gYCMgVUnorr7orqHop4TliJnvvIznibnliKvms6jmhI/lv4Xpobvkvb/nlKhVSeinhOiMg1xcYC5ieXRlZnVuL1VJ6K6+6K6h6KeE6IyDLm1kXFxg6YeM6Z2i6buY6K6k55qE5Li76aKY55qu6IKk5p2l6K6+6K6h77yM5LiN5b6X5L2/55So5YW25LuW5Li76aKY55qu6IKk44CCXG5cbiMjIOS4gOOAgeemgeatoueahOS6i+aDhVxuLSDnpoHmraLkvb/nlKjku7vkvZXliY3nq6/moYbmnrbvvIzlj6rkvb/nlKggaHRtbCvnsbvpgInmi6nlmajmoLflvI8ranMg5p2l5a6e546w44CCXG4tIOemgeatouS9v+eUqGpz5Luj56CB5p2l5ou85o6laHRtbOWtl+espuS4su+8jOW/hemhu+WcqGJvZHnmoIfnrb7ph4zpnaLnm7TmjqXlhplodG1s5Luj56CB44CCXG4tIOemgeatouS9v+eUqGpz5Luj56CB5p2l5aOw5piO5Lu75L2V6aG16Z2i5pi+56S65omA6ZyA55qE5pWw5o2u77yM5omA5pyJ5pWw5o2u6YO95b+F6aG75ZyoaHRtbOS7o+eggeS4reebtOaOpeWGmeatu+OAglxuLSDnpoHmraLkvb/nlKjmlofmnKzmuJDlj5joibLvvIzlv4Xpobvkvb/nlKjnuq/oibLmlofmnKzvvIzkuZ/lsLHmmK/npoHmraLkvb/nlKhcXGAtd2Via2l0LXRleHQtZmlsbC1jb2xvclxcYOWxnuaAp+OAglxuLSDnpoHmraLnu5npobXpnaLmt7vliqBcXGDmiYvmnLrpobbpg6jnirbmgIHmoI9cXGDjgIFcXGDmiYvmnLrlupXpg6jmjIfnpLrlmajmoI9cXGDkuKTkuKrpnZ7pobXpnaLlhoXlrrnnmoTlhYPntKDoioLngrnvvIzov5nmmK/miYvmnLrnoazku7boh6rluKbnmoTlhYPntKDvvIzkuI3og73lnKjpobXpnaLkuK3mt7vliqDjgIJcbi0g56aB5q2i5L2/55SoXFxgOmJlZm9yZVxcYOOAgVxcYDphZnRlclxcYOS8quWFg+e0oO+8jOW/hemhu+S9v+eUqOWFtuS7luagh+etvuadpeWunueOsOOAglxuLSBsb2FkaW5n6IqC54K555qE5a6e546w56aB5q2i5L2/55SoZGl25qCH562+5LiO6L655qGG5bGe5oCn5a6e546w77yM5b+F6aG75L2/55So5Zu+5qCHaWNvbueahGnmoIfnrb7mnaXlrp7njrBsb2FkaW5n55qE6IqC54K5XG4tIOemgeatouS4umh0bWzmoIfnrb7oioLngrnmt7vliqDliqjnlLvmiJbov4fmuKHmlYjmnpzvvIzpobXpnaLorr7orqHkuI3pnIDopoHku7vkvZXliqjnlLvlkozov4fmuKHmlYjmnpzvvIzmr5TlpoLnpoHmraLvvJpAa2V5ZnJhbWVz44CBdHJhbnNpdGlvbuOAgWFuaW1hdGlvbiDnrYnjgIJcbi0g5oyJ6ZKu44CB5Y2h54mH44CBaXRlbemhueetieWFg+e0oOW/hemhu+imgeaciWhvdmVy5LiO54K55Ye75Y+N6aaI77yM54K55Ye75Y+N6aaI5b+F6aG75L2/55So5rWF6Imy55qE6IOM5pmv6ImyYmFja2dyb3VuZOadpeWPjemmiOWwseihjO+8jOS4peemgeS9v+eUqHRyYW5zZm9ybeaViOaenFxuICAgIC0g4p2MIOmUmeivr+eahOeUqOazle+8miBcbiAgICBcXGBcXGBcXGAgY3NzXG4gICAgLmhvdC1zYWxlcy1pdGVtOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC4uLnB4KTtcbiAgICB9XG4gICAgXFxgXFxgXFxgXG4gICAgLSDinIUg5q2j56Gu55qE55So5rOV77yaXG4gICAgXFxgXFxgXFxgIGNzc1xuICAgIC5ob3Qtc2FsZXMtaXRlbTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IC4uLjtcbiAgICB9XG4gICAgXFxgXFxgXFxgXG4tIOemgeatouS9v+eUqGRpduagh+etvuadpeWunueOsGltYWdl5Zu+54mH77yM5b+F6aG76KaB5L2/55SoaW1n5qCH562+5p2l5a6e546w5Zu+54mH6IqC54K577yMaW1n5qCH562+55qEc3Jj5bGe5oCn5b+F6aG76K6+572u5Li677yaXFxgaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nMS5qcGdcXGDvvIzlhbbkuK3ph4zpnaLnmoRcXGBzaG93SW1nMVxcYOWPr+S7peaUueS4ujF+MzDnmoTku7vmhI/kuIDkuKrmlbDlrZfvvIzmr5TlpoLvvJpcXGBzaG93SW1nNVxcYOOAglxuICAtIOKdjOmUmeivr+eahOWGmeazle+8mlxuICAgIFxcYFxcYFxcYCBodG1sXG4gICAgPGRpdiBjbGFzcz1cImJlc3RzZWxsZXItY292ZXJcIiBpZD1cImJlc3RzZWxsZXJDb3ZlcjFcIiBuYW1lPVwi55WF6ZSA5Lmm57GN5bCB6Z2iMVwiIG5vZGVUeXBlPVwiaW1hZ2VcIj5cbiAgICA8L2Rpdj5cbiAgICBcXGBcXGBcXGBcbiAgLSDinIUg5q2j56Gu55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgIGh0bWxcbiAgICA8aW1nIGNsYXNzPVwiYmVzdHNlbGxlci1jb3ZlclwiIGlkPVwiYmVzdHNlbGxlckNvdmVyMVwiIG5hbWU9XCLnlYXplIDkuabnsY3lsIHpnaIxXCIgbm9kZVR5cGU9XCJpbWFnZVwiIHNyYz1cImh0dHBzOi8vb3NzLmJ5dGVmdW5nby5jb20vZjEvc2hvd0ltZzcuanBnXCI+ICBcbiAgICBcXGBcXGBcXGBcblxuIyMg5LqM44CB5qC35byP6KeE5YiZXG4tIOagt+W8j+S7o+eggeW/hemhu+S9v+eUqOexu+mAieaLqeWZqOagt+W8j0NsYXNzLWJhc2VkIFN0eWxlIC8gQ2xhc3MgU2VsZWN0b3IgU3R5bGXmlrnlvI/vvIzkuI3lvpfkvb/nlKjooYzlhoXmoLflvI9JbmxpbmUgU3R5bGXmiJblpJbpg6jmlofku7bjgIJcbi0g6YG15b6q5omL5py65bC65a+46KeE5qC8KOWuveW6piAzOTNweCDpq5jluqYgODA4cHgpXG4tIOmmlumhtS/mjqjojZB0YWLnmoTliIbnsbsv5Yqf6IO95ZCE5Liq5YWl5Y+j55qE5Zu+5qCH5LiA6Iis6ZyA6KaB5L2/55So5LiN5LiA5qC355qE6aKc6Imy77yM5b6I5bCR5Lya57uf5LiA5YWo6YOo5L2/55So5ZOB54mM5Li76aKY6ImyXG4tIOaJgOaciXJhZGlv44CBY2hlY2tCb3jpg73lv4Xpobvkvb/nlKhp5qCH562+6K6+572uRm9udEF3ZXNvbWXlm77moIfmnaXlrp7njrDvvIzkuI3lvpfkvb/nlKjns7vnu5/nmoRpbnB1dOagh+etvuWunueOsOOAglxuLSDlpoLnlKjmiLfmsqHmnInmmI7noa7mj4/ov7Dor7TmmI7pobXpnaLog4zmma/oibLvvIzlj6rmnInpl6rlsY/pobXpnaLnmoTog4zmma/oibLlhYHorrjorr7nva7lk4HniYzkuLvoibLmiJblk4HniYzkuLvoibLkuI7lk4HniYzmrKHoibLnmoTmuJDlj5joibLvvIzlhbbku5bpobXpnaLlv4Xpobvkvb/nlKjpnZ4g5ZOB54mM5Li76ImyIOS4jumdniDlk4HniYzmrKHoibIg55qE57qv6Imy5YGa6aG16Z2i6IOM5pmv6Imy77yM5q+U5aaC5LiA6Iis5L2/55So55m96Imy57O777yM5aaC5p6c5piv5pqX6buR6aOO6YKj5bCx5piv6buR6Imy57O744CCXG4tIOi+k+WFpeahhlxcYGlucHV0XFxg5aaC5p6c6ZyA6KaB5bGV56S65paH5a2XIGxhYmVs77yM5bC96YeP5L2/55SoIGljb24g5Luj5pu/5paH5a2XIGxhYmVs77yM5bm25LiUIGljb24g6YeN5Y+g5Zyo6L6T5YWl5qGG55qE5bem5L6n77yM6L+Z5qC35pW05Liq6aG16Z2i55qE56m66Ze05Yip55So546H6auY44CCXG4tIOWmguaenOS4u+mimOmjjuagvOaYr+aal+m7kemjjuagvOeahOivne+8jOm7mOiupOWPr+S7pee7meavj+S4qumhtemdoua3u+WKoOWkmuS4queOu+eSg+aViOaenOeahOWchuW9ouW+hOWQkea4kOWPmOiDjOaZr++8jOexu+S8vOi/meagt++8mlxcYGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMCwgMjQyLCAyNTUsIDAuMSkgMCUsIHJnYmEoMCwgMCwgMCwgMCkgNzAlKTtcXGDvvIzph4zpnaLnmoTpopzoibLlkozmuJDlj5jojIPlm7Tlj6/ku6XmoLnmja7lrp7pmYXmg4XlhrXosIPmlbTjgIJcbi0g6IOM5pmv6Imy5Li65LqG5aKe5by65bGC5qyh5oSf77yM5re75Yqg55qE5qKm5bm75rOh5rOh5oiW6ICF5ZyG5b2i5b6E5ZCR5riQ5Y+Y5YWD57Sg55qEZGl277yM5b+F6aG75Y+q6IO95aOw5piO5Li6XFxgY2lyY2xlXFxg77yM5bm25LiU5LiA5LiqZGl255qEXFxgYmFja2dyb3VuZDpcXGDlj6rog73lo7DmmI7kuIDkuKpcXGByYWRpYWwtZ3JhZGllbnRcXGDvvIzmr5TlpoLmraPnoa7nmoTlhpnms5XvvJpiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDAsIDIyOSwgMjU1LCAwLjE1KSAwJSwgcmdiYSgwLCAwLCAwLCAwKSA3MCUpO++8jOWmguaenOmcgOimgeWkmuS4qlxcYHJhZGlhbC1ncmFkaWVudFxcYOW+hOWQkea4kOWPmOiDjOaZr++8jOavj+S4quW+hOWQkea4kOWPmOiDjOaZr+mDveW/hemhu+WjsOaYjuS4uuS4gOS4qmRpduiKgueCue+8jOavj+S4qmRpdueahFxcYGJhY2tncm91bmQ6XFxg5Y+q6IO95aOw5piO5LiA5LiqXFxgcmFkaWFsLWdyYWRpZW50XFxg44CCXG4tIOaMiemSruOAgeWNoeeJh+OAgWl0ZW3pobnnrYnlhYPntKDlv4XpobvopoHmnInkuIDkuKpob3ZlcuWQjuaUueWPmOiDjOaZr+iJsueahOWPjemmiOaViOaenO+8jOS4jeiDveS9v+eUqHRyYW5zZm9ybeaViOaenO+8jOWPquiDveS9v+eUqOiDjOaZr+iJsuaViOaenOOAglxuXG4jIyDkuInjgIHlv4Xpobvnu5nmr4/kuIDkuKroioLngrnmt7vliqBpZOOAgW5hbWXjgIFub2RlVHlwZeWxnuaAp1xuLSDnibnliKvms6jmhI/vvIxcXGBpXFxg5ZKMXFxgZGl2XFxg562J5qCH562+5Lmf5b+F6aG75re75YqgIGlk44CBbmFtZeOAgW5vZGVUeXBlIOWxnuaAp++8jOavj+S4gOS4quiKgueCuemDvemcgOimgea3u+WKoOi/meS4ieS4quWxnuaAp++8jOWNg+S4h+WIq+a8j+aOieS6hu+8jOi/meaYr+W/heimgeadoeS7tlxuLSBpZCDlsZ7mgKflv4Xpobvlj6rog73kvb/nlKjoi7HmlofmiJbmlbDlrZfnu4TmiJDvvIzkuJTkuI3og73ku6XmlbDlrZflvIDlpLTvvIzlubbkuJTmlbTkuKrpobXpnaIgaWQg5bGe5oCn55qE5YC85b+F6aG75ZSv5LiA77yM5L2/55So6am85bOw55qE5ZG95ZCN5pa55byPXG4tIG5hbWUg5bGe5oCn5b+F6aG75piv5Lit5paH5oiW5pWw5a2X77yM5bm25LiU5LiN6IO95YyF5ZCr54m55q6K5a2X56ymXG4tIOWmguaenOaYr+mAmui/h+eCueWHu2l0ZW3pobnliIfmjaLlsZXnpLrlhoXlrrnnmoTvvIzpgqPkuYhpdGVt6aG555qEbm9kZVR5cGXlv4XpobvmmK9cXGB0YWJNZW51QmFySXRlbVxcYO+8jHRhYiBwYW5lbOeahG5vZGVUeXBl5b+F6aG75pivXFxgdGFiUGFuZWxcXGDvvIxcXGB0YWJNZW51QmFySXRlbVxcYOeahOeItuS6suWuueWZqOaYr1xcYHRhYk1lbnVCYXJcXGDvvIzkuI3lvpfkvb/nlKhcXGBob3Jpem9udGFsTGlzdFZpZXdcXGDmnaXku6Pmm79cXGB0YWJNZW51QmFyXFxgXG4tIOmhtemdoueahGhlYWRlcuagh+mimOagj25vZGVUeXBl5b+F6aG75pivXFxgdGl0bGVCYXJcXGDmiJbogIVcXGB0b3BOYXZpZ2F0ZUJhclxcYO+8jOiAjOS4jeaYr1xcYGNvbnRhaW5lclxcYFxuLSBub2RlVHlwZSDlsZ7mgKfnmoTlgLzlv4XpobvmmK9cXGDnu4Tku7bnsbvlnovmnprkuL4gKG5vZGVUeXBlKeaemuS4vlxcYCDkuK3nmoTkuIDkuKrvvIzkuIDkupvluIPlsYDlrrnlmajpnIDopoHpgbXlrojku6XkuIvor7TmmI7mnaXpgInmi6nmraPnoa7nmoRub2RlVHlwZe+8mlxuICAtIOWIl+ihqOWuueWZqO+8mlxcYHZlcnRpY2FsTGlzdFZpZXdcXGDjgIFcXGBob3Jpem9udGFsTGlzdFZpZXdcXGDjgIFcXGBsaXN0SXRlbUNhcmRcXGDvvIznlKjkuo7luIPlsYDlpJrkuKrliJfooajpobnvvIzmr5TlpoLvvJrllYblk4HliJfooajjgIHliIbnsbvliJfooajjgIHmoIfnrb7liJfooajnrYnvvIzlj6/ku6XmlK/mjIHlpJrooYzlpJrliJfnmoTliJfooajluIPlsYBcbiAgLSDliJfooajpobXohJrlrrnlmajvvJpcXGBsaXN0Rm9vdGVyQ29udGFpbmVyXFxg77yM55So5LqO5biD5bGA5YiX6KGo55qE6aG16ISa77yM5q+U5aaC77ya5Yqg6L295pu05aSa44CB5rKh5pyJ5pu05aSa5LqG562JXG4gIC0g572R5qC85a655Zmo77yaZ3JpZENvbnRhaW5lcueUqOS6juW4g+WxgOWkmuS4que9keagvOmhue+8jOmHjOmdouWMheWQq07kuKpncmlkSXRlbe+8jOavlOWmgu+8muWIhuexu+e9keagvOWFpeWPo1xuICAtIOa1geW8j+WuueWZqO+8mueUqOS6juW4g+WxgOWkmuS4quWtkOmhue+8jOWtkOmhueWPr+S7peWcqOS4gOihjOaYvuekuu+8jOW9k+S9jee9ruS4jeWkn+aXtuWwseaNouihjOaYvuekuu+8jOavlOWmgu+8muS4gOe7hOagh+etvnRhZ+eahOaOkueJiOW4g+WxgFxuICAtIOWkmueKtuaAgeWuueWZqO+8mlxcYG11bHRpU3RhdGVDb250YWluZXJcXGAsIFxcYG9uZVN0YXRlQ29udGVudENvbnRhaW5lclxcYO+8jOeUqOS6juS4jeaYr+mAmui/h+S6pOS6ku+8jOiAjOaYr+mAmui/h+mAu+i+keeKtuaAgeWPmOmHj+WPmOWMluiAjOaYvuekuuS4jeWQjOeKtuaAgeeahOWGheWuueWuueWZqO+8jOavlOWmgu+8mueZu+W9leeKtuaAgeWSjOacqueZu+W9leeKtuaAgeWIhuWIq+aYvuekuuS4jeWQjOeahOWGheWuueOAglxuLSDpq5jnuqfnu4Tku7boioLngrnnmoRub2RlVHlwZee7k+aehOinhOWIme+8mlxuICAtIHRhYiDpgInpobnljaHvvJpcXGB0YWJNZW51QmFyXFxg5pivdGFi6YCJ6aG55Y2h6I+c5Y2V5qCP77yM6YeM6Z2i5YyF5ZCrTuS4qlxcYHRhYk1lbnVCYXJJdGVtXFxg77yMXFxgdGFiUGFuZWxGYXRoZXJcXGDmmK90YWLpgInpobnljaHlhoXlrrnlrrnlmajvvIzph4zpnaLljIXlkKtO5LiqXFxgdGFiUGFuZWxcXGDvvIxcXGB0YWJNZW51QmFyXFxg5ZKMXFxgdGFiUGFuZWxGYXRoZXJcXGDlv4XpobvlkIzml7blrZjlnKjvvIxcXGB0YWJQYW5lbFxcYOeahOaVsOmHj+W/hemhu+WSjFxcYHRhYk1lbnVCYXJJdGVtXFxg55qE5pWw6YeP55u45ZCMXG4gIC0gdmlld1BhZ2VyIOi9ruaSre+8mlxcYHZpZXdQYWdlclxcYOaYr+i9ruaSreWuueWZqO+8jOmHjOmdouWMheWQq07kuKpcXGB2aWV3UGFnZXJJdGVtXFxg77yMXFxgdmlld1BhZ2VySW5kaWNhdG9yQ29udGFpbmVyXFxg5piv6L2u5pKt5oyH56S65Zmo5a655Zmo77yMXFxgdmlld1BhZ2VyXFxg5LiOXFxgdmlld1BhZ2VySW5kaWNhdG9yQ29udGFpbmVyXFxg5b+F6aG75ZCM5pe25a2Y5ZyoXG4gIC0g5LiA6KGM5LiN5aSf5L2N572u5pi+56S65bCx5o2i6KGM55qE5a655Zmo77yaXFxgaW5saW5lQmxvY2tBbmRXcmFwXFxg77yM6YeM6Z2i5YyF5ZCrTuS4qlxcYGJsb2NrSXRlbVxcYO+8jFxcYGJsb2NrSXRlbVxcYOaYr+Wug+eahOWtkOmhuVxuICAtIOWkmueKtuaAgeWuueWZqO+8muS4gOS4qlxcYG11bHRpU3RhdGVDb250YWluZXJcXGDlpJrnirbmgIHlrrnlmajljIXlkKvlpJrkuKpcXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGBcblxuLSDnu4Tku7bnsbvlnovmnprkuL4gKG5vZGVUeXBlKeaemuS4vu+8mlxuXG4gIC0g5b2i54q277yaXFxgcmVjdFxcYCwgXFxgY2lyY2xlXFxgLCBcXGBsaW5lXFxgXG4gIC0g5Z+656GA57uE5Lu277yaXFxgdGV4dFxcYOOAgVxcYGJ1dHRvblxcYOOAgVxcYGlucHV0XFxg44CBXFxgaWNvblxcYOOAgVxcYGltYWdlXFxgXG4gIC0g5Z+656GA5a655Zmo77yaXFxgY29udGFpbmVyXFxgXG4gIC0g572R5qC85a655Zmo77yaXFxgZ3JpZENvbnRhaW5lclxcYOOAgVxcYGdyaWRJdGVtXFxgXG4gIC0g5rWB5byP5a655Zmo77yaXFxgaW5saW5lQmxvY2tBbmRXcmFwXFxg44CBXFxgYmxvY2tJdGVtXFxgXG4gIC0g5byA5YWz77yaXFxgc3dpdGNoXFxgXG4gIC0g5Y2V6YCJ77yaXFxgcmFkaW9Hcm91cFxcYOOAgVxcYHJhZGlvXFxgXG4gIC0g5aSa6YCJ77yaXFxgY2hlY2tCb3hHcm91cFxcYOOAgVxcYGNoZWNrQm94XFxgXG4gIC0g6aG26YOo5a+86Iiq5qCP77yaXFxgdGl0bGVCYXJcXGDjgIFcXGB0b3BOYXZpZ2F0ZUJhclxcYFxuICAtIOW6lemDqOaTjeS9nOagj++8mlxcYGJvdHRvbU9wZXJhdGVCYXJcXGBcbiAgLSDlpJrnirbmgIHlrrnlmajvvJpcXGBtdWx0aVN0YXRlQ29udGFpbmVyXFxgLCBcXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGBcbiAgLSDliJfooajvvJpcXGB2ZXJ0aWNhbExpc3RWaWV3XFxgLCBcXGBob3Jpem9udGFsTGlzdFZpZXdcXGAsIFxcYGxpc3RJdGVtQ2FyZFxcYOOAgVxcYGxpc3RGb290ZXJDb250YWluZXJcXGBcbiAgLSDova7mkq3vvJpcXGB2aWV3UGFnZXJcXGAsIFxcYHZpZXdQYWdlckl0ZW1cXGAsIFxcYHZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclxcYFxuICAtIHRhYiDpgInpobnljaHvvJpcXGB0YWJQYW5lbEZhdGhlclxcYCwgXFxgdGFiUGFuZWxcXGAsIFxcYHRhYk1lbnVCYXJcXGAsIFxcYHRhYk1lbnVCYXJJdGVtXFxgXG4gIC0g5bqV6YOo5a+86IiqOiBcXGBib3R0b21UYWJDb250ZW50Q29udGFpbmVyXFxgLCBcXGBzdWJQYWdlXFxgLCBcXGBib3R0b21UYWJOYXZpZ2F0ZUJhclxcYCwgXFxgYm90dG9tVGFiTmF2aWdhdGVCYXJJdGVtXFxgXG4gIC0g5a+56K+d5qGG77yaXFxgZGlhbG9nT3ZlcmxheVxcYCwgXFxgZGlhbG9nQ29udGVudFxcYFxuICAtIHRvYXN0IOaPkOekuu+8mlxcYHRvYXN0XFxgXG4gIC0g5LiL5ouJ6I+c5Y2V77yaXFxgZHJvcERvd25NZW51XFxgXG4gIC0g5L6n5ruR6Z2i5p2/77yaXFxgc2lkZVNsaWRlUGFuZWxcXGBcbiAgLSDmiYvmnLrnoazku7blhYPntKDvvJpcXGBwaG9uZVRvcFN0YXR1c0JhclxcYOOAgVxcYHBob25lQm90dG9tSW5kaWNhdG9yQmFyXFxg77yM6L+Z5Lik5Liq5YWD57Sg5piv5omL5py656Gs5Lu26Ieq5bim55qE5YWD57Sg77yM5LiN6IO95Zyo6aG16Z2i5Lit5re75Yqg44CCXG5cbiMjIOWbm+OAgei9ruaSreS4jlRhYnPnu4Tku7bnmoTop4TliJlcbi0g6L2u5pKt55qE5q+P5LiA5LiqU2xpZGXlkoxUYWJz6YCJ6aG55Y2h57uE5Lu25q+P5LiA5LiqVGFiIFBhbmVs6YO95b+F6aG75L2/55SoXFxgZGlzcGxheTogbm9uZVxcYOWSjFxcYGRpc3BsYXk6IGJsb2NrL2ZsZXhcXGDmnaXlrp7njrDpmpDol4/lkozmmL7npLrnmoTkupLmlqXliIfmjaJcbi0g6L2u5pKt55qE5q+P5LiA5LiqU2xpZGXlv4XpobvmnIlodG1s5Luj56CB5a6e546w77yM5LiN5b6X5Y+q5YaZ56ysMeS4qlNsaWRl55qEaHRtbOS7o+egge+8jOWFtuS7llNsaWRl55qEaHRtbOS7o+eggeS5n+W/hemhu+imgeWGmeOAglxuLSBUYWJz6YCJ6aG55Y2h57uE5Lu26ZyA6KaB5re75Yqg54K55Ye75YiH5o2iVGFiIFBhbmVs55qE5Yqf6IO977yM5LiN5b6X5Y+q5YaZ56ysMeS4qlRhYiBQYW5lbOeahGh0bWzku6PnoIHvvIzlhbbku5ZUYWIgUGFuZWznmoRodG1s5Luj56CB5Lmf5b+F6aG76KaB5YaZ44CCXG4tIFRhYnPpgInpobnljaHnu4Tku7bmr4/kuIDkuKpUYWIgUGFuZWzpg73lv4XpobvopoHmnInlhoXlrrnvvIzkuI3lvpfmlbfooY3lnLDlsZXnpLrmsqHmnInmlbDmja7jgIHogZTnvZHlpLHotKXjgIFsb2FkaW5n55qE5oOF5Ya177yM5b+F6aG75bGV56S65pyJ5pWw5o2u55qE5YW35L2T5YaF5a6577yM57ud5a+55LiN6IO95YG35oeS5pW36KGN44CCXG4tIFRhYnPpgInpobnljaHnu4Tku7bmr4/kuIDkuKpUYWIgUGFuZWzpg73lv4XpobvopoHmnIlodG1s5Luj56CB5a6e546w77yM5LiN5b6X5Y+q5YaZ56ysMeS4qlRhYiBQYW5lbOeahGh0bWzku6PnoIHvvIzlhbbku5ZUYWIgUGFuZWznmoRodG1s5Luj56CB5Lmf5b+F6aG76KaB5YaZ44CCXG5cbiMjIOS6lOOAgeWbvuagh+S4juWbvueJh+eahOinhOWImVxuLSDlvZPpnIDopoFpY29u5Zu+5qCH5pe25b+F6aG75L2/55SoRm9udEF3ZXNvbWXlm77moIfvvIzmr5TlpoLvvJpcXGA8aSBuYW1lPVwi5b6u5L+hSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwid3hJY29uXCIgY2xhc3M9XCJmYWIgZmEtd2VpeGluXCI+PC9pPlxcYO+8jOW5tuS4lOazqOaEj+Wbvuagh+eahOminOiJsu+8jOavlOWmguW+ruS/oeWbvuagh+S4gOiIrOS9v+eUqOe7v+iJsuezu++8jFFR5Zu+5qCH5LiA6Iis5L2/55So6JOd6Imy57O777yM5b6u5Y2a5Zu+5qCH5LiA6Iis5L2/55So57qi6Imy57O777yM5pSv5LuY5a6d5Zu+5qCH5LiA6Iis5L2/55So5rWF6JOd6Imy57O7562J562JXG4tIOe7neWvueS4jeiDveS9v+eUqCBlbW9qaSDooajmg4XnrKblj7fvvIzkuI3lvpfkvb/nlKjku7vkvZUgZW1vamkg6KGo5oOF56ym5Y+377yM6K+35L2/55SoRm9udEF3ZXNvbWXlrZfkvZPlm77moIfmnaXku6Pmm7/jgIJcbi0gTE9HT+WbvueJh+WSjOW8leWvvOmhteeahOW8leWvvOWbvueJh+W/hemhu+S9v+eUqFxcYGRvYy9yZXMvc3ZnTWFwLmpzb25cXGDmlofku7bkuK1qc29u5a+56LGh5q2j56Gu5a2X5q6155qEaHR0cHPpk77mjqXlgLzvvIznpoHmraLkvb/nlKjmnKzlnLDlm77niYfot6/lvoRcXGBkb2MvcmVzL2xvZ28uc3ZnXFxg5paH5Lu277yM6ICM5piv5L2/55So57G75Ly877yaXFxgaHR0cHM6Ly9lZGl0b3IuYnl0ZWZ1bmdvLmNvbS9kZmlsZS9pbWcveHh4eHguc3ZnXFxg6L+Z5qC355qE5Zu+54mH6ZO+5o6l5Zyw5Z2A77yM5q+U5aaC6Zeq5bGP6aG144CB55m75b2V6aG144CB5rOo5YaM6aG155So5Yiw55qETE9HT+WbvueJh++8jOW8leWvvOmhteeahOW8leWvvOWbvueJh+etieOAglxuLSBqcGfjgIFqcGVn57G75Z6L5Zu+54mH5b+F6aG75L2/55So5Zu+54mH5Zyw5Z2A77yaXFxgaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nMS5qcGdcXGAp77yM5YW25Lit57uT5bC+55qE4oCZc2hvd0ltZzEn5Y+v5Lul5o2i5Li65LuOIDEg5YiwIDMwIOeahOaVsOWtl++8jDF+MzAg55qE5pWw5a2X5b+F6aG76ZqP5py65oyR6YCJ77yM5LiN5b6X5q+P5Liq6aG16Z2i5q+P5Liq5Zu+54mH6YO95L2/55So5ZCM5LiA5Liq5pWw5a2X44CC5YaZ5rOV5q+U5aaC77yaXFxgPGltZyBzcmM9XCJodHRwczovL29zcy5ieXRlZnVuZ28uY29tL2YxL3Nob3dJbWcxNy5qcGdcIiBhbHQ9XCJ4eHhcIiBjbGFzcz1cInh4eFwiIG5vZGVUeXBlPVwiaW1hZ2VcIj5cXGBcblxuIyMg5YWt44CB6aaW6aG15Li75L2T6aG15LiO5a2Q6aG16Z2i55qE6KeE5YiZXG4tIOmmlumhteS4u+S9k+mhteW1jOWll+S6huWkmuS4quWtkOmhtemdou+8jOavj+S4gOS4quWtkOmhtemdoumDveS4jemcgOimgeWhq+WFheWGheWuue+8jOepuueZveWwseihjO+8jOWQjumdouS8muacieS4k+mXqOeahOS7u+WKoeadpeiuvuiuoeWFt+S9k+eahOWtkOmhtemdouOAglxuLSDku7vkvZXlrZDpobXpnaLpg73lv4XpobvnpoHmraLmt7vliqDlupXpg6jlr7zoiKrmoI/oioLngrnliLDpobXpnaLvvIzlm6DkuLrlrZDpobXpnaLmmK/ltYzlpZflnKjpppbpobXkuLvkvZPpobXkuK3nmoTvvIzniLbpobXpnaLlt7Lnu4/mnInlupXpg6jlr7zoiKrmoI/kuobvvIzlrZDpobXpnaLkuI3pnIDopoHlho3mt7vliqDlupXpg6jlr7zoiKrmoI/vvIzkuZ/kuI3lvpfmt7vliqDkuoznuqfpobXpnaLnmoTmoIfpopjmoI/liLDlrZDpobXpnaLkuK3vvIzlm6DkuLrlrZDpobXpnaLmmK/ltYzlpZflnKjpppbpobXkuLvkvZPpobXkuK3nmoTvvIzpppbpobXkuLvkvZPpobXlkozlroPnmoTlrZDpobXpnaLpg73mmK/kuIDnuqfpobXpnaLvvIzlm6DmraTkuI3lvpfmt7vliqDkuoznuqfpobXpnaLnmoTmoIfpopjmoI/liLDlrZDpobXpnaLkuK3jgIJcblxuIyMg5LiD44CB5aaC5p6c55So5oi35rKh5pyJ5piO56Gu6K+05piO6K+l6aG16Z2i6K6+6K6h6ZyA5rGC77yM6YKj5bCx5oyJ54Wn5Lul5LiL6aG16Z2i6buY6K6k6KeE5YiZ6K6+6K6hXG4tIOmXquWxj+mhte+8muemgeatouS9v+eUqOWFqOWxj+WbvueJh++8jOS4gOiIrOS9v+eUqOS4u+mimOebuOWFs+eahOa4kOWPmOiJsu+8jOeEtuWQjuW4puacieS4gOS6m+mineWklueahOiDjOaZr+WFg+e0oOWinuW8uueVjOmdouWxguasoeaEn++8jOavlOWmgu+8muaipuW5u+WchuWciOazoeazoeOAgeeOu+eSg+aViOaenOeahOWchuW9ouW+hOWQkea4kOWPmOetieetieWFg+e0oFxuLSDlvJXlr7zpobXvvJrlsL3ph4/kuI3kvb/nlKjlhajlsY/lm77niYfvvIzkuIDoiKzmr4/kuIDpobXlvJXlr7zpobXog4zmma/oibLkuZ/lj6/ku6XmuJDlj5jvvIznhLblkI7mr4/kuIDpobXlip/og73or7TmmI7kuIDoiKzmnInpnZ7lhajlsY/lm77niYfjgIHmoIfpopjjgIHlia/moIfpopjnrYnnrYnvvIzkvaDlj6/ku6XluKblhaXlhbbku5blhYPntKDvvIzorqnpobXpnaLmm7TliqDnvo7op4LvvIzlubbkuJTlvJXlr7zpobXnmoTlvJXlr7zlm77niYfpnIDopoHoh6rlt7Hnu5jliLZzdmflm77niYfvvIzlubblrZjmlL7lnKhcXGBkb2MvcmVzXFxg5paH5Lu25aS55LiL6Z2i77yM5bm25ZyoaHRtbOS4reS9v+eUqFxuLSDog4zmma/oibLkuLrkuoblop7lvLrlsYLmrKHmhJ/vvIzmt7vliqDnmoTmoqblubvms6Hms6HmiJbogIXlnIblvaLlvoTlkJHmuJDlj5jlhYPntKDnmoRkaXbvvIzlv4Xpobvlj6rog73lo7DmmI7kuLpcXGBjaXJjbGVcXGDvvIzlubbkuJTkuIDkuKpkaXbnmoRcXGBiYWNrZ3JvdW5kOlxcYOWPquiDveWjsOaYjuS4gOS4qlxcYHJhZGlhbC1ncmFkaWVudFxcYO+8jOavlOWmguato+ehrueahOWGmeazle+8mmJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMCwgMjI5LCAyNTUsIDAuMTUpIDAlLCByZ2JhKDAsIDAsIDAsIDApIDcwJSk777yM5aaC5p6c6ZyA6KaB5aSa5LiqXFxgcmFkaWFsLWdyYWRpZW50XFxg5b6E5ZCR5riQ5Y+Y6IOM5pmv77yM5q+P5Liq5b6E5ZCR5riQ5Y+Y6IOM5pmv6YO95b+F6aG75aOw5piO5Li65LiA5LiqZGl26IqC54K577yM5q+P5LiqZGl255qEXFxgYmFja2dyb3VuZDpcXGDlj6rog73lo7DmmI7kuIDkuKpcXGByYWRpYWwtZ3JhZGllbnRcXGDjgIJcbmAiXX0=
|